macOS Security Protections
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Gatekeeperは通常、Quarantine + Gatekeeper + XProtectの組み合わせを指し、これはmacOSの3つのセキュリティモジュールで、ユーザーがダウンロードした潜在的に悪意のあるソフトウェアを実行するのを防ごうとします。
More information in:
macOS Gatekeeper / Quarantine / XProtectMacOS Sandboxは、サンドボックス内で実行されるアプリケーションの許可されたアクションをサンドボックスプロファイルで指定されたものに制限します。これにより、アプリケーションが予期されるリソースのみをアクセスすることが保証されます。
macOS SandboxTCC (Transparency, Consent, and Control)はセキュリティフレームワークです。これは、アプリケーションの権限を管理するために設計されており、特に機密機能へのアクセスを規制します。これには、位置情報サービス、連絡先、写真、マイク、カメラ、アクセシビリティ、フルディスクアクセスなどの要素が含まれます。TCCは、アプリが明示的なユーザーの同意を得た後にのみこれらの機能にアクセスできるようにし、プライバシーと個人データの制御を強化します。
macOS TCCmacOSの起動制約は、プロセスの開始を規制するためのセキュリティ機能で、誰がプロセスを起動できるか、どのように、どこから起動するかを定義します。macOS Venturaで導入され、システムバイナリを制約カテゴリに分類し、信頼キャッシュ内に格納します。すべての実行可能バイナリには、自己、親、および責任制約を含む起動のためのルールが設定されています。macOS Sonomaでは、これらの機能が環境制約としてサードパーティアプリに拡張され、プロセスの起動条件を管理することで潜在的なシステムの悪用を軽減します。
macOS Launch/Environment Constraints & Trust Cacheマルウェア除去ツール(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
にあります。
AppleのCLIツールを使用して、構成されたすべてのバックグラウンドアイテムを列挙することができます:
さらに、この情報をDumpBTMを使ってリストすることも可能です。
この情報は**/private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm
**に保存されており、TerminalはFDAを必要とします。
新しい永続性が見つかると、ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD
というタイプのイベントが発生します。したがって、このイベントが送信されるのを防ぐ方法や、エージェントがユーザーに警告するのを防ぐ方法は、攻撃者がBTMを_回避_するのに役立ちます。
データベースのリセット: 次のコマンドを実行すると、データベースがリセットされます(最初から再構築する必要があります)。ただし、何らかの理由で、これを実行した後は、システムが再起動されるまで新しい永続性は警告されません。
rootが必要です。
エージェントを停止する: 新しい検出が見つかったときにユーザーに警告しないように、エージェントに停止信号を送ることが可能です。
バグ: 持続性を作成したプロセスがそれのすぐ後に存在する場合、デーモンはそれについて情報を取得しようとし、失敗し、新しいものが持続していることを示すイベントを送信できなくなります。
参照およびBTMに関する詳細情報:
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する: HackTricks Training GCP Red Team Expert (GRTE)