.. | ||
macos-fs-tricks | ||
macos-sandbox | ||
macos-tcc | ||
macos-dangerous-entitlements.md | ||
macos-fs-tricks.md | ||
macos-gatekeeper.md | ||
macos-launch-environment-constraints.md | ||
macos-sip.md | ||
README.md |
macOSセキュリティ保護
htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksグッズを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見る
- 💬 Discordグループに参加するか、telegramグループに参加するか、Twitterで私をフォローする 🐦 @carlospolopm.
- ハッキングトリックを共有するために、HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出する
Gatekeeper
Gatekeeperは通常、Quarantine + Gatekeeper + XProtectの組み合わせを指すために使用され、これらはmacOSの3つのセキュリティモジュールであり、ユーザーが潜在的に悪意のあるソフトウェアを実行するのを防ごうとします。
詳細は次のとおりです:
{% content-ref url="macos-gatekeeper.md" %} macos-gatekeeper.md {% endcontent-ref %}
プロセス制限
SIP - システム整合性保護
{% content-ref url="macos-sip.md" %} macos-sip.md {% endcontent-ref %}
サンドボックス
MacOSサンドボックスは、サンドボックス内で実行されるアプリケーションをサンドボックスプロファイルで指定された許可されたアクションに制限します。これにより、アプリケーションが予期されるリソースにのみアクセスすることが保証されます。
{% content-ref url="macos-sandbox/" %} macos-sandbox {% endcontent-ref %}
TCC - 透明性、同意、および制御
TCC(透明性、同意、お制御)はセキュリティフレームワークです。これは、アプリケーションの権限を管理するために設計されており、特に、アプリケーションが機密機能へのアクセスを規制します。これには、位置情報サービス、連絡先、写真、マイク、カメラ、アクセシビリティ、およびフルディスクアクセスなどの要素が含まれます。TCCは、アプリがこれらの機能にアクセスできるのは、明示的なユーザーの同意を得た後であることを確認し、プライバシーと個人データの制御を強化します。
{% content-ref url="macos-tcc/" %} macos-tcc {% endcontent-ref %}
起動/環境制約と信頼キャッシュ
macOSの起動制約は、プロセスの開始を規制するセキュリティ機能であり、プロセスの誰が、どのように、どこから起動できるかを定義します。macOS Venturaで導入された信頼キャッシュ内の制約カテゴリにシステムバイナリを分類します。各実行可能バイナリには、自己、親、および責任者の制約を含む、その起動のためのルールが設定されています。macOS Sonomaでは、サードパーティアプリケーションに拡張された環境制約として、これらの機能はプロセスの起動条件を規制することで、潜在的なシステムの悪用を緩和します。
{% content-ref url="macos-launch-environment-constraints.md" %} macos-launch-environment-constraints.md {% endcontent-ref %}
MRT - マルウェア除去ツール
マルウェア除去ツール(MRT)は、macOSのセキュリティインフラの一部です。その名前が示すように、MRTの主な機能は、感染したシステムから既知のマルウェアを除去することです。
Macでマルウェアが検出されると(XProtectによるものまたは他の手段によるもの)、MRTを使用してマルウェアを自動的に除去できます。MRTはバックグラウンドで静かに動作し、通常、システムが更新されるときや新しいマルウェア定義がダウンロードされるときに実行されます(マルウェアを検出するMRTのルールはバイナリ内にあるようです)。
XProtectとMRTは、macOSのセキュリティ対策の一部ですが、異なる機能を果たします:
- XProtectは予防ツールです。ファイルをダウンロードする際に(特定のアプリケーションを介して)、ファイルに既知のマルウェアが検出されると、ファイルの開封を防止して、最初にシステムにマルウェアが感染するのを防ぎます。
- 一方、MRTは反応的なツールです。システムでマルウェアが検出された後に動作し、問題のあるソフトウェアを除去してシステムをクリーンアップすることを目指します。
MRTアプリケーションは、**/Library/Apple/System/Library/CoreServices/MRT.app
**にあります。
バックグラウンドタスクの管理
macOSは今や、ツールがコード実行を維持するためのよく知られた手法を使用するたびにアラートを表示するため、ユーザーはどのソフトウェアが維持されているかをよりよく把握できます。
これは、/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd
にあるデーモンと、/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app
にあるエージェントで実行されます。
backgroundtaskmanagementd
が永続フォルダに何かがインストールされていることを知る方法は、FSEventsを取得してそれらのためのいくつかのハンドラを作成することです。
さらに、Appleが管理しているよく知られたアプリケーションを含むplistファイルがあり、次の場所にあります:/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist
[...]
"us.zoom.ZoomDaemon" => {
"AssociatedBundleIdentifiers" => [
0 => "us.zoom.xos"
]
"Attribution" => "Zoom"
"Program" => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
"ProgramArguments" => [
0 => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
]
"TeamIdentifier" => "BJ4HAAB9B3"
}
[...]
列挙
AppleのCLIツールを使用して、設定されたすべてのバックグラウンドアイテムを列挙することが可能です:
# The tool will always ask for the users password
sfltool dumpbtm
さらに、この情報をDumpBTMでリストアップすることも可能です。
# You need to grant the Terminal Full Disk Access for this to work
chmod +x dumpBTM
xattr -rc dumpBTM # Remove quarantine attr
./dumpBTM
この情報は**/private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm
**に保存されており、TerminalにFDAが必要です。
BTMをいじる
新しい永続性が見つかると、ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD
タイプのイベントが発生します。したがって、このイベントが送信されるのを防止する方法やエージェントがユーザーに警告するのを防ぐ方法は、攻撃者がBTMを_バイパス_するのに役立ちます。
- データベースをリセットする:次のコマンドを実行すると、データベースがリセットされます(基盤から再構築する必要があります)。ただし、何らかの理由で、これを実行した後、システムが再起動されるまで新しい永続性が警告されなくなります。
- rootが必要です。
# Reset the database
sfltool resettbtm
- エージェントの停止: エージェントに停止シグナルを送信して、新しい検出が見つかった際にユーザーにアラートを表示させないようにすることが可能です。
# Get PID
pgrep BackgroundTaskManagementAgent
1011
# Stop it
kill -SIGSTOP 1011
# Check it's stopped (a T means it's stopped)
ps -o state 1011
T
- バグ: もし永続性を作成したプロセスがすぐに存在しなくなると、デーモンはそれに関する情報を取得しようとして失敗し、新しいものが永続化されていることを示すイベントを送信できなくなります。
BTMに関する参考文献や詳細:
- https://youtu.be/9hjUmT031tc?t=26481
- https://www.patreon.com/posts/new-developer-77420730?l=fr
- https://support.apple.com/en-gb/guide/deployment/depdca572563/web
AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- 💬 Discordグループやtelegramグループに参加するか、Twitter 🐦 @carlospolopmをフォローしてください。
- HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。