macOS Dangerous Entitlements & TCC perms

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

**com.apple**で始まる権限はサードパーティには利用できず、Appleのみがそれらを付与できます。

com.apple.rootless.install.heritable

権限**com.apple.rootless.install.heritableSIPをバイパス**することを可能にします。詳細はこちらを参照してください。

com.apple.rootless.install

権限**com.apple.rootless.installSIPをバイパス**することを可能にします。詳細はこちらを参照してください。

com.apple.system-task-ports(以前はtask_for_pid-allowと呼ばれていました)

この権限は、カーネルを除く任意のプロセスのタスクポートを取得することを可能にします。詳細はこちらを参照してください。

com.apple.security.get-task-allow

この権限は、他のプロセスが**com.apple.security.cs.debugger権限を持つプロセスのタスクポートを取得し、この権限を持つバイナリによって実行されるプロセスにコードをインジェクト**することを可能にします。詳細はこちらを参照してください。

com.apple.security.cs.debugger

デバッグツール権限を持つアプリケーションは、Get Task Allow権限がtrueに設定された未署名およびサードパーティアプリケーションの有効なタスクポートを取得するためにtask_for_pid()を呼び出すことができます。ただし、デバッガーはデバッグツール権限を持っていても、Get Task Allow権限を持たないプロセスのタスクポートを取得できず、したがってシステム整合性保護によって保護されているプロセスのタスクポートを取得できません。詳細はこちらを参照してください。

com.apple.security.cs.disable-library-validation

この権限は、Appleによって署名されていないか、メインの実行可能ファイルと同じTeam IDで署名されていないフレームワーク、プラグイン、またはライブラリをロードすることを可能にします。したがって、攻撃者は任意のライブラリのロードを悪用してコードをインジェクトすることができます。詳細はこちらを参照してください。

com.apple.private.security.clear-library-validation

この権限は**com.apple.security.cs.disable-library-validationと非常に似ており、ライブラリの検証を直接無効にする代わりに、プロセスがcsopsシステムコールを呼び出して無効にする**ことを可能にします。 詳細はこちらを参照してください。

com.apple.security.cs.allow-dyld-environment-variables

この権限は、ライブラリやコードをインジェクトするために使用できるDYLD環境変数の使用を可能にします。詳細はこちらを参照してください。

com.apple.private.tcc.managerまたはcom.apple.rootless.storage.TCC

このブログによると および このブログによると、これらの権限はTCCデータベースを変更することを可能にします。

system.install.apple-softwareおよびsystem.install.apple-software.standar-user

これらの権限は、ユーザーに許可を求めることなくソフトウェアをインストールすることを可能にします。これは特権昇格に役立ちます。

com.apple.private.security.kext-management

カーネルにカーネル拡張機能をロードするように要求するための権限が必要です。

com.apple.private.icloud-account-access

権限**com.apple.private.icloud-account-accessを使用すると、com.apple.iCloudHelper** XPCサービスと通信し、iCloudトークンを提供できます。

iMovieGaragebandにはこの権限がありました。

この権限からiCloudトークンを取得するためのエクスプロイトについての詳細については、次のトークを参照してください:#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula

com.apple.private.tcc.manager.check-by-audit-token

TODO: これが何を許可するかわかりません

com.apple.private.apfs.revert-to-snapshot

TODO: このレポート によると、これは再起動後にSSVで保護されたコンテンツを更新するために使用できる可能性があります。方法を知っている場合は、PRを送信してください!

com.apple.private.apfs.create-sealed-snapshot

TODO: このレポート によると、これは再起動後にSSVで保護されたコンテンツを更新するために使用できる可能性があります。方法を知っている場合は、PRを送信してください!

keychain-access-groups

この権限リストには、アプリケーションがアクセスできるキーチェーングループが含まれています:

<key>keychain-access-groups</key>
<array>
<string>ichat</string>
<string>apple</string>
<string>appleaccount</string>
<string>InternetAccounts</string>
<string>IMCore</string>
</array>

kTCCServiceSystemPolicyAllFiles

フルディスクアクセス権限を与え、持っているできるTCCの最高権限の1つです。

kTCCServiceAppleEvents

アプリケーションがタスクの自動化に一般的に使用される他のアプリケーションにイベントを送信することを許可します。他のアプリを制御することで、これらの他のアプリに付与された権限を悪用することができます。

ユーザにパスワードを求めさせるようにすることもできます:

osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'

またはそれらを任意のアクションを実行させることができます。

kTCCServiceEndpointSecurityClient

他の権限の中で、ユーザーのTCCデータベースを書き込むことができます。

kTCCServiceSystemPolicySysAdminFiles

ユーザーのホームフォルダーパスを変更するユーザーの**NFSHomeDirectory属性を変更することができ、それによりTCCをバイパス**することができます。

kTCCServiceSystemPolicyAppBundles

デフォルトでは許可されていないアプリのバンドル内のファイル(app.app内)を変更できます。

このアクセス権を持っているユーザーを確認することができます。システム設定 > プライバシーとセキュリティ > アプリの管理.

kTCCServiceAccessibility

プロセスはmacOSのアクセシビリティ機能を悪用することができます。つまり、例えばキーストロークを押すことができます。そのため、Finderのようなアプリを制御するアクセスをリクエストし、この権限でダイアログを承認することができます。

Medium

com.apple.security.cs.allow-jit

この権限により、mmap()システム関数にMAP_JITフラグを渡すことで、書き込み可能かつ実行可能なメモリを作成することができます。詳細はこちらを参照してください。

com.apple.security.cs.allow-unsigned-executable-memory

この権限により、Cコードをオーバーライドまたはパッチすることができ、長期間非推奨の**NSCreateObjectFileImageFromMemory**(基本的に安全ではない)を使用したり、DVDPlaybackフレームワークを使用したりすることができます。詳細はこちらを参照してください。

この権限を含めると、アプリがメモリの安全でないコード言語に一般的な脆弱性にさらされる可能性があります。この例外がアプリに必要かどうかを慎重に検討してください。

com.apple.security.cs.disable-executable-page-protection

この権限により、ディスク上の自身の実行可能ファイルのセクションを強制的に終了することができます。詳細はこちらを参照してください。

実行可能メモリ保護を無効にする権限は、アプリから基本的なセキュリティ保護を削除し、攻撃者がアプリの実行可能コードを検出されずに書き換えることが可能になります。可能であれば、より狭い権限を選択してください。

com.apple.security.cs.allow-relative-library-loads

TODO

com.apple.private.nullfs_allow

この権限により、デフォルトでは禁止されているnullfsファイルシステムをマウントすることができます。ツール: mount_nullfs.

kTCCServiceAll

このブログ投稿によると、このTCC権限は通常、以下の形式で見つかります:

[Key] com.apple.private.tcc.allow-prompting
[Value]
[Array]
[String] kTCCServiceAll

プロセスがすべてのTCC権限を要求することを許可します。

kTCCServicePostEvent

htARTE(HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

Last updated