.. | ||
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セキュリティ保護
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
Gatekeeper
Gatekeeperは通常、Quarantine + Gatekeeper + XProtectの組み合わせを指すことが多く、これらの3つのmacOSセキュリティモジュールは、ユーザーが潜在的に悪意のあるソフトウェアを実行するのを防ぐために使用されます。
詳細は次の場所で確認できます:
{% 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(透明性、同意、および制御)は、macOSの機構であり、一般的にはプライバシーの観点からアプリケーションの特定の機能へのアクセスを制限および制御します。これには、位置情報サービス、連絡先、写真、マイクロフォン、カメラ、アクセシビリティ、フルディスクアクセスなどが含まれる場合があります。
{% 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
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 DiscordグループまたはTelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するために、PRをhacktricksリポジトリとhacktricks-cloudリポジトリに提出してください。