macOS Security Protections

Support HackTricks

Gatekeeper

Gatekeeperは通常、Quarantine + Gatekeeper + XProtectの組み合わせを指し、これはユーザーが潜在的に悪意のあるソフトウェアを実行するのを防ぐために試みる3つのmacOSセキュリティモジュールです。

詳細情報は以下を参照してください:

macOS Gatekeeper / Quarantine / XProtect

Processes Limitants

SIP - System Integrity Protection

macOS SIP

Sandbox

MacOS Sandboxは、サンドボックス内で実行されるアプリケーションの許可されたアクションをサンドボックスプロファイルで指定することにより、アプリケーションを制限します。これにより、アプリケーションが期待されるリソースのみをアクセスすることが保証されます

macOS Sandbox

TCC (Transparency, Consent, and Control)はセキュリティフレームワークです。これは、アプリケーションの権限を管理するために設計されており、特に機密機能へのアクセスを規制します。これには、位置情報サービス、連絡先、写真、マイク、カメラ、アクセシビリティ、フルディスクアクセスなどの要素が含まれます。TCCは、アプリが明示的なユーザーの同意を得た後にのみこれらの機能にアクセスできるようにし、プライバシーと個人データに対する制御を強化します。

macOS TCC

Launch/Environment Constraints & Trust Cache

macOSの起動制約は、プロセスの開始を規制するセキュリティ機能であり、誰がプロセスを起動できるか、どのように、どこから起動するかを定義します。macOS Venturaで導入され、システムバイナリを信頼キャッシュ内の制約カテゴリに分類します。すべての実行可能バイナリには、自己、親、責任の制約を含む起動のためのルールが設定されています。macOS Sonomaでは、これらの機能が環境制約としてサードパーティアプリに拡張され、プロセスの起動条件を管理することにより、潜在的なシステムの悪用を軽減します。

macOS Launch/Environment Constraints & Trust Cache

MRT - Malware Removal Tool

マルウェア除去ツール(MRT)は、macOSのセキュリティインフラストラクチャの一部です。名前が示すように、MRTの主な機能は感染したシステムから既知のマルウェアを削除することです。

マルウェアがMac上で検出されると(XProtectまたは他の手段によって)、MRTを使用して自動的にマルウェアを削除できます。MRTはバックグラウンドで静かに動作し、通常はシステムが更新されるときや新しいマルウェア定義がダウンロードされるときに実行されます(MRTがマルウェアを検出するためのルールはバイナリ内にあるようです)。

XProtectとMRTはどちらもmacOSのセキュリティ対策の一部ですが、異なる機能を果たします:

  • XProtectは予防的なツールです。ファイルがダウンロードされると(特定のアプリケーションを介して)、既知のマルウェアのタイプが検出されると、ファイルのオープンを防ぎ、その結果、マルウェアが最初からシステムに感染するのを防ぎます。

  • MRTは、逆に反応的なツールです。システム上でマルウェアが検出された後に動作し、問題のあるソフトウェアを削除してシステムをクリーンにすることを目的としています。

MRTアプリケーションは**/Library/Apple/System/Library/CoreServices/MRT.app**にあります。

Background Tasks Management

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"
}
[...]

Enumeration

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に関する詳細情報:

HackTricksをサポートする

Last updated