macOS Dangerous Entitlements & TCC perms
Reading time: 12 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
warning
com.apple
で始まる権限は第三者には利用できず、Appleのみが付与できます。
High
com.apple.rootless.install.heritable
権限 com.apple.rootless.install.heritable
は SIPをバイパス することを許可します。詳細は こちらを確認してください。
com.apple.rootless.install
権限 com.apple.rootless.install
は SIPをバイパス することを許可します。詳細は こちらを確認してください。
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
デバッグツール権限を持つアプリは、task_for_pid()
を呼び出して、Get Task Allow
権限が true
に設定された署名されていないおよび第三者のアプリの有効なタスクポートを取得できます。しかし、デバッグツール権限があっても、デバッガは Get Task Allow
権限を持たない プロセスのタスクポートを取得できず、それらはシステム整合性保護によって保護されています。詳細は こちらを確認してください。
com.apple.security.cs.disable-library-validation
この権限は、Appleによって署名されていないか、メイン実行可能ファイルと同じチーム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トークンを提供 します。
iMovie と Garageband はこの権限を持っていました。
この権限から 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の中で最も高い権限の一つです。
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"'
Or making them perform 任意のアクション。
kTCCServiceEndpointSecurityClient
ユーザーのTCCデータベースを書き込むことを含む、他の権限を許可します。
kTCCServiceSystemPolicySysAdminFiles
ユーザーの**NFSHomeDirectory
属性を変更**することを許可し、これによりホームフォルダのパスを変更し、TCCをバイパスすることができます。
kTCCServiceSystemPolicyAppBundles
アプリバンドル内のファイルを変更することを許可します(app.app内)、これはデフォルトでは禁止されています。
.png)
このアクセス権を持つユーザーを確認するには、システム設定 > プライバシーとセキュリティ > _アプリ管理_を確認してください。
kTCCServiceAccessibility
プロセスはmacOSのアクセシビリティ機能を悪用することができ、例えばキーストロークを押すことができるようになります。したがって、Finderのようなアプリを制御するためのアクセスを要求し、この権限でダイアログを承認することができます。
中程度
com.apple.security.cs.allow-jit
この権限は、mmap()
システム関数にMAP_JIT
フラグを渡すことで、書き込み可能かつ実行可能なメモリを作成することを許可します。詳細についてはこちらを確認してください。
com.apple.security.cs.allow-unsigned-executable-memory
この権限は、Cコードをオーバーライドまたはパッチすることを許可し、長い間非推奨の**NSCreateObjectFileImageFromMemory
**(根本的に安全でない)を使用するか、DVDPlaybackフレームワークを使用することを許可します。詳細についてはこちらを確認してください。
caution
この権限を含めると、アプリがメモリ安全でないコード言語の一般的な脆弱性にさらされます。この例外がアプリに必要かどうかを慎重に検討してください。
com.apple.security.cs.disable-executable-page-protection
この権限は、ディスク上の自分の実行可能ファイルのセクションを変更することを許可し、強制的に終了させることができます。詳細についてはこちらを確認してください。
caution
Disable Executable Memory Protection Entitlementは、アプリから基本的なセキュリティ保護を取り除く極端な権限であり、攻撃者が検出されることなくアプリの実行可能コードを書き換えることを可能にします。可能であれば、より狭い権限を優先してください。
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
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。