SilentButDeadly: プロセスを終了させずにEDRを無力化する新ツール

SilentButDeadlyは、Windows Filtering Platform(WFP)を使用してクラウド接続を遮断することで、EDR/AVソフトウェアを無力化するために特別に設計されたネットワーク通信ブロッカーです。このバージョンは、プロセスの終了を行わず、ネットワーク隔離のみに焦点を当てています。

主要な技術的詳細

WFPフィルター仕様

  • レイヤー: Application Layer Enforcement(ALE)
  • 重み: 0x7FFF(高優先度)
  • アクションFWP_ACTION_BLOCK
  • 条件FWPM_CONDITION_ALE_APP_ID (プロセス固有)
  • フラグFWPM_FILTER_FLAG_CLEAR_ACTION_RIGHT

対応EDRターゲット

  • SentinelOne(全コンポーネント)
  • Windows Defender
  • Windows Defender ATP(MsSense.exe)
  • g_EDRTargets 配列により容易に拡張可能

コマンドラインオプション

  • -v, --verbose: 詳細な動作ログを有効化
  • -p, --persistent: プログラム終了後もフィルターを有効のまま保持
  • -h, --help: 使用方法情報を表示

エラーハンドリング

  • 各段階で包括的なエラーチェック
  • 部分的な失敗時のグレースフルなフォールバック
  • トラブルシューティング用の詳細なエラーコード

セキュリティ上の考慮事項

  • 管理者権限が必要
  • 既定では非永続フィルター(終了時にクリア)
  • ドライバーの読み込みやカーネル操作は不要
  • 正規のWindows APIのみを使用

運用上の影響

ネットワーク隔離の影響

  1. EDRがクラウド更新を受信できない
  2. テレメトリのアップロードが遮断される
  3. リモート管理が無効化される
  4. リアルタイム脅威インテリジェンスが遮断される

サービス妨害の影響

  1. 自動再起動を防止
  2. スケジュールスキャンを無効化
  3. バックグラウンド監視を停止
  4. 更新メカニズムを停止

検知ベクター

  • WFPフィルター作成イベント
  • サービス停止/無効化イベント
  • プロセスハンドルアクセスのパターン
  • 永続的な痕跡なし(ただし -p フラグ使用時を除く)

利用シナリオ

  1. 事前エンゲージメントテスト: 作戦前にEDRバイパスを検証
  2. 制御環境: マルウェア解析のためにEDRを隔離
  3. レッドチーム運用: 初期足場の確立
  4. セキュリティ研究: EDRの挙動分析

制限事項

  • IPv4のみ(IPv6には追加レイヤーが必要)
  • 稼働中のEDRプロセスが必要(停止している場合は効果なし)
  • 一部のEDRはカーネルレベルのネットワークドライバーを持つ可能性がある
  • WFPが機能するにはWindowsファイアウォールが有効である必要がある

プログラムフロー

1. 初期化フェーズ

[*] 管理者権限を確認しています...
[+] 管理者権限で実行中
[#] EDR列挙を開始するには <Enter> を押してください...
  • CheckTokenMembership() を使用して管理者権限を検証
  • 対話式プロンプトにより制御された実行が可能

2. EDR検出フェーズ

[*] 対象セキュリティプロセスをスキャンしています...
[+] SentinelAgent.exe(SentinelOne)を検出 - PID: 1234
[+] MsMpEng.exe(Windows Defender)を検出 - PID: 5678
[*] 検出された対象プロセス総数: 2
[#] ネットワーク通信をブロックするには <Enter> を押してください...
  • CreateToolhelp32Snapshot() を使用してプロセススナップショットを作成
  • 実行中の全プロセスを列挙
  • 事前定義されたEDRターゲットリストと照合
  • PROCESS_QUERY_INFORMATION アクセスでプロセスハンドルをオープン

3. WFP初期化

[*] Windows Filtering Platform を初期化しています...
[>] COMライブラリを初期化中
[>] WFPプロバイダーGUIDを生成中
[>] WFPエンジンハンドルをオープン中
[+] Windows Filtering Platform の初期化に成功しました
  • GUID生成のためにCOMを初期化
  • 動的WFPセッションを作成(既定では非永続)
  • 高優先度(0x7FFF)でプロバイダーとサブレイヤーを確立

4. ネットワークフィルター実装

[*] EDR通信をブロックするためのネットワークフィルターを設定しています...
[>] SentinelAgent.exe(PID: 1234)向けフィルターを処理中
[>] プロセスパス: C:\Program Files\SentinelOne\Sentinel Agent\SentinelAgent.exe
[>] 送信フィルターの追加に成功
[>] 受信フィルターの追加に成功
[+] SentinelAgent.exe のネットワーク通信をブロックしました
[+] 2プロセスに対する通信ブロックを確立しました

各EDRプロセスについて:

  • QueryFullProcessImageNameW() を使用してプロセスの完全なイメージパスを取得
  • FwpmGetAppIdFromFileName0() を使用してパスをWFP AppID blobに変換
  • プロセスごとに2つのフィルターを作成:
    • 送信フィルターFWPM_LAYER_ALE_AUTH_CONNECT_V4 (外向き接続をブロック)
    • 受信フィルターFWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4 (内向き接続をブロック)

5. サービス妨害フェーズ

[*] EDRサービスの無効化を試みています...
[>] サービスを処理中: SentinelAgent
[>] 現在のサービス状態: 実行中
[>] サービス停止を試行中...
[+] SentinelAgent に停止シグナルを送信しました
[+] サービスの停止に成功しました
[+] サービス SentinelAgent を無効に設定しました
[+] 2つのEDRサービスを無効化しました
  • Service Control Manager をオープン
  • 各EDRサービスについて:
    • サービスのグレースフル停止を試行
    • スタートアップ種別を SERVICE_DISABLED に変更
    • 自動再起動を防止

6. サマリー表示

=================================================================
                         OPERATION SUMMARY                       
=================================================================
  [SentinelOne] SentinelAgent.exe - PID: 1234
  [Windows Defender] MsMpEng.exe - PID: 5678
  Total Processes Found:    2
  Network Blocks Applied:   2
  WFP Status:               Active
=================================================================
[#] フィルターを削除して終了するには <Enter> を押してください...

7. クリーンアップフェーズ

[*] ネットワークブロックルールを削除しています...
[+] ネットワークブロックルールを削除しました
[*] 操作完了
  • WFPプロバイダーを削除(すべてのフィルターに連鎖)
  • WFPエンジンハンドルをクローズ
  • COMリソースを解放
  • すべてのプロセスハンドルをクローズ

ダウンロード

翻訳元: https://meterpreter.org/silentbutdeadly-new-tool-blinds-edr-without-killing-processes/

ソース: meterpreter.org