概要:EDR回避の新たな概念実証ツール「Obex」
セキュリティ研究者dis0rder0x00氏によって新たに公開された概念実証ユーティリティ「Obex」は、Windowsプロセスへの不要なセキュリティおよび監視モジュールのロードを阻止する、シンプルかつ効果的なユーザーモードの手法を示しています。このツールは、デバッガー制御下でターゲットプロセスを起動し、設定可能なDLLブロックリストを適用することで、指定されたライブラリの起動時およびランタイム時のロードの両方を阻止します。デモンストレーションでは、ObexがPowerShellを起動しながらamsi.dllがマッピングされないようにすることで、インプロセス検査に対する実用的なバイパスの可能性を強調しています。
Obexの動作原理
Obexは起動時に、コマンドライン引数を解析してターゲット実行可能ファイルと、オプションでブロックするDLL名のコンマ区切りリストを特定します。リストが提供されない場合、デフォルトでアンチマルウェアスキャンインターフェースライブラリ(amsi.dll)が新しいプロセスにロードされるのを阻止します。その後、Obexは子プロセスをデバッグ状態で作成し、プロセス初期化中にモジュールロード通知を即座に傍受できるようにします。
デバッグAPIが、起動時の依存関係であろうと動的なLoadLibrary呼び出しであろうと、差し迫ったモジュールロードを報告するたびに、ObexはDLL名を大文字と小文字を区別せずにブロックリストと比較します。一致があった場合、Obexはロード要求を抑制し、モジュールがプロセスのメモリー空間に存在しないようにします。子プロセスはブロックされたライブラリなしで実行を継続し、Obexはオペレーターの可視性のためにブロックされたイベントをログに記録または報告します。
Obexの主な機能
- プロセスデバッグ制御:引数を持つ任意のプロセスをデバッグ制御下で起動し、モジュールロードの早期傍受を可能にします。
- 設定可能なDLLブロック:名前でカスタマイズ可能なDLLリストをブロックし、特定のセキュリティモジュールのターゲットを絞った阻止を可能にします。
- 二段階保護:プロセス初期化中にロードされる起動時DLLと、LoadLibrary関数を介して動的にロードされるDLLの両方に対応します。
- ゼロ依存性:外部依存性なしのプレーンC言語で記述されており、最小限のフットプリントと容易なデプロイメントを保証します。
- 大文字と小文字を区別しないマッチング:DLL名は大文字と小文字を区別せずにマッチングされ、異なる命名規則間での信頼性が向上します。
- デフォルトブロックリスト:カスタムDLLリストが提供されない場合、自動的にamsi.dllをブロックし、EDRバイパス機能の即時デモンストレーションを行います。
- リアルタイムブロック:プロセス実行中にモジュールロードをリアルタイムで傍受し、阻止します。
- 検証サポート:プロセスモジュール列挙を通じて、ブロックされたモジュールの明確な証拠を提供します。
防御側への影響とEDRベンダーへの提言
Obexは、ユーザーモードフックや強制的なインプロセス検査のみに依存する防御側が、攻撃者がプロセス起動パラメータを制御する際に選択的に盲目になる可能性があることを明らかにしています。指定されたDLLのロードを阻止することで、攻撃者はテレメトリーを回避し、これらのモジュールに依存する検出ルールを無効にすることができます。
カーネルモード保護、例えばより低いレベルでのライブラリロードの整合性強制やAMSII統合の強化は、より回復力のある防御を提供します。EDRベンダーは、コアコンポーネントが欠落している場合の動作を検証し、整合性アラートを適切にエスカレートする必要があります。Obexは、防御の多層化がユーザーモードの計測を超えて、可視性と制御を確実に維持する必要があることをタイムリーに思い出させるものです。
元記事: https://gbhackers.com/new-obex-tools-blocks-edr-dynamic-libraries/