11 KiB
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 に提出してください。
システム拡張/エンドポイントセキュリティフレームワーク
カーネル拡張とは異なり、システム拡張はカーネルスペースではなくユーザースペースで実行されるため、拡張機能の不具合によるシステムクラッシュのリスクが低減されます。
システム拡張には、DriverKit拡張、Network拡張、およびEndpoint Security拡張の3つのタイプがあります。
DriverKit拡張
DriverKitは、ハードウェアサポートを提供するカーネル拡張の代替です。これにより、デバイスドライバ(USB、シリアル、NIC、HIDドライバなど)がカーネルスペースではなくユーザースペースで実行されるようになります。DriverKitフレームワークには、特定のI/O Kitクラスのユーザースペースバージョンが含まれており、カーネルは通常のI/O Kitイベントをユーザースペースに転送することで、これらのドライバが実行される安全な環境を提供します。
Network拡張
Network拡張は、ネットワークの動作をカスタマイズする機能を提供します。いくつかのタイプのNetwork拡張があります。
- App Proxy: これは、接続(またはフロー)単位ではなく個々のパケットに基づいてネットワークトラフィックを処理する、フロー指向のカスタムVPNプロトコルを実装するVPNクライアントの作成に使用されます。
- Packet Tunnel: これは、個々のパケットに基づいてネットワークトラフィックを処理するパケット指向のカスタムVPNプロトコルを実装するVPNクライアントの作成に使用されます。
- Filter Data: これは、ネットワークデータをフローレベルで監視または変更するために使用されます。
- Filter Packet: これは、個々のネットワークパケットをフィルタリングするために使用されます。ネットワークデータをパケットレベルで監視または変更することができます。
- DNS Proxy: これは、カスタムDNSプロバイダを作成するために使用されます。DNSリクエストとレスポンスを監視または変更するために使用できます。
エンドポイントセキュリティフレームワーク
エンドポイントセキュリティは、AppleがmacOSで提供するフレームワークで、システムセキュリティのための一連のAPIを提供します。これは、悪意のある活動を特定し、防御するために、セキュリティベンダーや開発者がシステムの活動を監視および制御するための製品を構築するために使用されます。
このフレームワークは、プロセスの実行、ファイルシステムイベント、ネットワークおよびカーネルイベントなど、システムの活動を監視および制御するためのAPIのコレクションを提供します。
このフレームワークのコアは、カーネル内に実装されたカーネル拡張(KEXT)である**/System/Library/Extensions/EndpointSecurity.kext
**によって実現されています。このKEXTは、いくつかの主要なコンポーネントで構成されています。
- EndpointSecurityDriver: これはカーネル拡張の「エントリーポイント」として機能します。これはOSとEndpoint Securityフレームワークの間の主な相互作用ポイントです。
- EndpointSecurityEventManager: このコンポーネントはカーネルフックの実装を担当します。カーネルフックにより、フレームワークはシステムコールを傍受することでシステムイベントを監視できます。
- EndpointSecurityClientManager: これはユーザースペースクライアントとの通信を管理し、接続してイベント通知を受け取る必要があるクライアントを追跡します。
- EndpointSecurityMessageManager: これはユーザースペースクライアントにメッセージとイベント通知を送信します。
Endpoint Securityフレームワークが監視できるイベントは、次のカテゴリに分類されます。
- ファイルイベント
- プロセスイベント
- ソケットイベント
- カーネルイベント(カーネル拡張の読み込み/アンロードやI/O Kitデバイスのオープンなど)
エンドポイントセキュリティフレームワークのアーキテクチャ
エンドポイントセキュリティフレームワークとのユーザースペース間の通信は、IOUserClientクラスを介して行われます。呼び出し元のタイプに応じて、2つの異なるサブクラスが使用されます。
- EndpointSecurityDriverClient: これには
com.apple.private.endpoint-security.manager
の権限が必要で、これはシステムプロセスendpointsecurityd
のみが保持しています。 - EndpointSecurityExternalClient: これには
com.apple.developer.endpoint-security.client
の権限が必要です。これは通常、Endpoint Securityフレームワークと対話する必要があるサードパーティのセキュリティソフトウェアによって使用されます。
エンドポイントセキュリティ拡張機能で使用される**libEndpointSecurity.dylib
**は、システム拡張機能がカーネルと通信するために使用する
ESFのバイパス
ESFは、レッドチームメンバーを検出しようとするセキュリティツールによって使用されるため、これを回避する方法に関する情報は興味深いです。
CVE-2021-30965
問題は、セキュリティアプリケーションがフルディスクアクセス権限を持っている必要があることです。したがって、攻撃者がそれを削除できれば、ソフトウェアの実行を防ぐことができます。
tccutil reset All
詳細情報については、トーク#OBTS v5.0: "The Achilles Heel of EndpointSecurity" - Fitzl Csabaを参照してください。
最終的には、新しい権限**kTCCServiceEndpointSecurityClient
をtccd
**が管理するセキュリティアプリに与えることで、tccutil
がアプリの権限をクリアすることを防ぎ、実行を妨げるように修正されました。
参考文献
- OBTS v3.0: "Endpoint Security & Insecurity" - Scott Knight
- https://knight.sc/reverse%20engineering/2019/08/24/system-extension-internals.html
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンやHackTricksのPDFをダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、hacktricks repo および hacktricks-cloud repo にPRを提出してください。