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のみを使用
運用上の影響
ネットワーク隔離の影響
- EDRがクラウド更新を受信できない
- テレメトリのアップロードが遮断される
- リモート管理が無効化される
- リアルタイム脅威インテリジェンスが遮断される
サービス妨害の影響
- 自動再起動を防止
- スケジュールスキャンを無効化
- バックグラウンド監視を停止
- 更新メカニズムを停止
検知ベクター
- WFPフィルター作成イベント
- サービス停止/無効化イベント
- プロセスハンドルアクセスのパターン
- 永続的な痕跡なし(ただし
-pフラグ使用時を除く)
利用シナリオ
- 事前エンゲージメントテスト: 作戦前にEDRバイパスを検証
- 制御環境: マルウェア解析のためにEDRを隔離
- レッドチーム運用: 初期足場の確立
- セキュリティ研究: 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