macOS セキュリティ保護
Reading time: 9 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を提出してハッキングトリックを共有してください。
Gatekeeper
Gatekeeperは通常、Quarantine + Gatekeeper + XProtectの組み合わせを指し、これはユーザーが潜在的に悪意のあるソフトウェアを実行するのを防ぐために試みる3つのmacOSセキュリティモジュールです。
詳細情報は以下にあります:
macOS Gatekeeper / Quarantine / XProtect
プロセス制限
MACF
SIP - システム整合性保護
サンドボックス
MacOSサンドボックスは、サンドボックス内で実行されるアプリケーションを、アプリが実行されているサンドボックスプロファイルで指定された許可されたアクションに制限します。これにより、アプリケーションが期待されるリソースのみをアクセスすることが保証されます。
TCC - 透明性、同意、制御
TCC (透明性、同意、制御)はセキュリティフレームワークです。これは、アプリケーションの権限を管理するために設計されており、特に機密機能へのアクセスを規制します。これには、位置情報サービス、連絡先、写真、マイク、カメラ、アクセシビリティ、フルディスクアクセスなどの要素が含まれます。TCCは、アプリが明示的なユーザーの同意を得た後にのみこれらの機能にアクセスできることを保証し、プライバシーと個人データに対する制御を強化します。
起動/環境制約と信頼キャッシュ
macOSの起動制約は、プロセスの開始を規制するためのセキュリティ機能であり、誰がプロセスを起動できるか、どのように、どこから起動するかを定義します。macOS Venturaで導入され、システムバイナリを信頼キャッシュ内の制約カテゴリに分類します。すべての実行可能バイナリには、自己、親、責任の制約を含む起動のためのルールが設定されています。macOS Sonomaでは、これらの機能が環境制約としてサードパーティアプリに拡張され、プロセスの起動条件を管理することで潜在的なシステムの悪用を軽減します。
macOS Launch/Environment Constraints & Trust Cache
MRT - マルウェア除去ツール
マルウェア除去ツール(MRT)は、macOSのセキュリティインフラストラクチャの一部です。名前が示すように、MRTの主な機能は感染したシステムから既知のマルウェアを除去することです。
マルウェアがMac上で検出されると(XProtectまたは他の手段によって)、MRTを使用して自動的にマルウェアを除去できます。MRTはバックグラウンドで静かに動作し、通常はシステムが更新されるときや新しいマルウェア定義がダウンロードされるときに実行されます(MRTがマルウェアを検出するためのルールはバイナリ内にあるようです)。
XProtectとMRTはどちらもmacOSのセキュリティ対策の一部ですが、異なる機能を果たします:
- XProtectは予防ツールです。これは、ファイルがダウンロードされる際にチェックし、既知のマルウェアのタイプが検出されると、ファイルのオープンを防ぎ、その結果、マルウェアがシステムに感染するのを防ぎます。
- MRTは、逆に、反応ツールです。これは、システム上でマルウェアが検出された後に動作し、問題のあるソフトウェアを除去してシステムをクリーンにすることを目的としています。
MRTアプリケーションは**/Library/Apple/System/Library/CoreServices/MRT.app
**にあります。
バックグラウンドタスク管理
macOSは、ツールが**コード実行を持続させるためのよく知られた技術を
[...]
"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
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を提出してハッキングトリックを共有してください。