
正当なWFPコールアウトドライバーを活用して、EDRエージェントがテレメトリーを送信するのを防ぐ
共著者: @oops4git(https://github.com/oops4git)
EDRPrison は、正規の WFP コールアウトドライバである WinDivert を活用して、EDR システムを効果的に沈黙させます。Shutter、FireBlock、EDRSilencer などのツールから着想を得ており、このプロジェクトはネットワークベースの回避技術に焦点を当てています。先行ツールとは異なり、EDRPrison は組み込みの WFP のみに依存するのではなく、外部の正規 WFP コールアウトドライバをインストールして読み込みます。さらに、EDR プロセスやその実行ファイルと直接やり取りすることなく、ランタイムフィルタを動的に追加して、EDR プロセスからの送信トラフィックをブロックします。
要約すると、EDRPrison には以下の主要な特徴と機能があります。
詳細な技術情報については、以下の記事を参照してください: https://winslow1984.com/books/malware/page/edrprison-borrow-a-legitimate-driver-to-mute-edr-agent
EDRPrison を正常に実行するには、昇格された特権が必要です。EDRPrison は以下の 3 つのコンポーネントで構成されています。
EDRPrison は、先行ツールに対していくつかの拡張と改善を提供し、ネットワークベースの EDR 回避のための、より堅牢でステルス性の高いツールとなっています。
利用可能なリソースの制約から、これまで物理サーバ上で Elastic Endpoint と Microsoft Defender for Endpoint (MDE) に対して EDRPrison をテストしました。
Elastic Endpoint と MDE に関連するプロセスは、ソースコードにハードコードされています。テスト中、メインプログラムも WinDivert もセキュリティシステムに検出されませんでした。
Mimikatz などの一般的なマルウェアサンプルをいくつかテストしました。インターネット接続がない場合でも、EDR システムはハッシュベースのシグネチャなどの基本的な検出機能を保持しているため、これらのサンプルは依然として検出される可能性があります。マルウェア実行後、パケット数が増加し、それらにアラートデータが含まれていることを示していました。

一部の検出はローカルで発生しますが、EDR パネルには表示されません。インターネット接続がない場合、EDR システムは機械学習やクラウドコンピューティングなどの高度な機能を活用して、より巧妙なマルウェア攻撃を防ぐことができません。


以下のコードスニペットを変更して、さらに多くの EDR プロセスをハードコードします。
static void initData()
{
processDictionary.TryAdd("MsMpEng.exe", 1);
processDictionary.TryAdd("MsSense.exe", 1);
processDictionary.TryAdd("SenseIR.exe", 1);
processDictionary.TryAdd("SenseNdr.exe", 1);
processDictionary.TryAdd("SenseCncProxy.exe", 1);
processDictionary.TryAdd("SenseSampleUploader.exe", 1);
processDictionary.TryAdd("elastic-endpoint.exe", 1);
processDictionary.TryAdd("elastic-agent.exe", 1);
}
以下の方法を使用して、EDRPrison の使用を検出または緩和できます。ただし、環境によっては、これらの検出の一部が誤検知(FP)を引き起こす可能性があります。
WinDivert ドライバがシステムにまだインストールされていない場合、EDRPrison は初回実行時にコールアウトドライバをインストールします。OS とテレメトリデータの両方がこのイベントを記録します。
EDRPrison および WinDivert に依存する他のプログラムは、ディスク上に WinDivert64.sys と WinDivert.dll が存在する必要があります。これらのファイルを監視することで、そのようなプログラムの検出に役立ちます。
WinDivertTool などのツールは、現在 Windows フィルタリングプラットフォーム (WFP) を利用しているプロセスを検出できます。

Elastic には、セキュリティソフトウェアのプロセスに対するパケット破棄またはブロックアクションを識別できる検出 ルール があり、これは EDRPrison の存在を示す可能性があります。
WFPExplorer ツールは、管理者がアクティブな WFP セッション、登録済みコールアウト、およびフィルタを確認するのに役立ちます。




将来の機能として、ドライバインストールに対する追加の保護を追加し、WinDivert などのドライバの不正使用に対するセキュリティをさらに強化する可能性があります。
レッドチームの観点から、環境のセキュリティ設定に応じて、前述の検出を回避するためにいくつかの戦略を採用できます。
環境内で WinDivert が悪意のあるものと見なされている場合、代替の署名付きオープンソースドライバを使用できます。これらの代替ドライバは、悪意のある使用の記録が少なく、パケットの傍受、再注入、その他の操作技術を引き続きサポートしている必要があります。
外部ドライバが承認なしでは許可されていない環境では、インストール済みまたは組み込みの WFP コールアウトドライバをリバースエンジニアリングすることは困難ですが、実行可能です。そのコールアウト関数を再利用することで、レッドチームは既存のドライバを活用できます。多くのセキュリティソフトウェアソリューションには、転用できる独自の WFP コールアウトドライバが含まれています。
傍受したパケットをブロックまたは破棄する代わりに、レッドチームはそれらをリダイレクトまたはプロキシ経由で転送できます。この方法は、パケットの破棄やブロックアクションに焦点を当てた検出ルールを回避しつつ、EDR プロセスに対する望ましい干渉を実現できます。
以下のリソースは、私の研究において大いに刺激と助けを与えてくれました。すべての著者に感謝します: