ESETリサーチ:FishMongerの武器強化:Windows用SprySOCKS
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
ESETの研究者は、FishMongerという脅威グループに関連するSprySOCKSバックドアの2つの新しいWindowsバリアント、WIN_DRVとWIN_PLUSを発見しました。WIN_DRVバージョンは、カーネルドライバを使用して強化されたステルス性能を実現しており、ネットワーク接続、プロセス、ファイルを隠すことができます。両方のバリアントは、複数の通信プロトコルをサポートしており、システム制御とデータ窃盗のための幅広いコマンドを提供します。
調査
この調査は、VirusTotalとESETのテレメトリを介して発見されたマルウェアサンプルに基づいており、2023年から2024年にかけての活動を明らかにしました。研究者たちは、DLLサイドローディング、DriverLoaderとRawWNPFによるカーネルドライバのロード、ダブルゲンガーテクニックを使用したプロセスインジェクションを含む完全な実行チェーンを分析しました。また、コマンド・アンド・コントロールの通信パターンや、複数のコンポーネントに共通するハードコードされた暗号化キーも明らかにしました。
緩和策
組織は、初期の侵害をNデイ脆弱性を通じて防ぐために、インターネットに面しているアプリケーションのパッチ適用を優先すべきです。強力なドライバ署名の実施と、許可されていないカーネルドライバのインストールを監視することは不可欠です。防御者はまた、疑わしいスケジュールされたタスク、Image File Execution Optionsの下でのレジストリの変更、および異常なプリントプロセッサの登録を監視する必要があります。
対応策
これらの脅威が検知された場合、影響を受けたシステムは、さらなる横移動やデータ窃盗を防ぐために直ちに隔離されるべきです。調査者は、最初の侵入ベクトルと完全な侵害範囲を特定するために詳細なフォレンジックレビューを実施し、特にカーネルレベルの持続性に注意を払う必要があります。また、既知の指令・制御インフラストラクチャと通信しているかどうかを確認するためにネットワークログをチェックし、新しいサービスや変更されたレジストリキーなどのシステムの変更を監査すべきです。
graph TB %% クラス定義 classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef defense fill:#ffcc99 %% 初期アクセス action_exploit[“<b>アクション</b> – <b>T1190 Exploit Public-Facing Application</b><br/>説明: 公開サーバー上のN-day脆弱性を悪用し、<br/>初期アクセスを取得する。”] class action_exploit action %% 亜種分岐 op_variant((“AND”)) class op_variant tool %% WIN_DRV 亜種パス action_win_drv_persist[“<b>アクション</b> – <b>T1546.012 Event Triggered Execution: IFEO</b><br/>説明: vds.exe 用の悪意あるデバッガーを登録する。<br/>ツール: klelam00007.bat スクリプト”] class action_win_drv_persist action action_win_drv_dll[“<b>アクション</b> – <b>T1574.001 Hijack Execution Flow: DLL</b><br/>説明: 正規署名済み実行ファイルを利用した<br/>DLLサイドローディング。<br/>ツール: ApphostRegistrationVerifier.exe が tpsvcloc.dll をロード”] class action_win_drv_dll action malware_loader[“<b>マルウェア</b>: Loader<br/>説明: Process Doppelgänging を利用して<br/>インジェクションを実行する。”] class malware_loader malware action_reflective[“<b>アクション</b> – <b>T1620 Reflective Code Loading</b><br/>説明: Process Doppelgänging により<br/>SprySOCKSバックドアのシェルコードを注入する。”] class action_reflective action process_svchost[“<b>プロセス</b>: svchost.exe<br/>説明: シェルコード注入対象のプロセス。”] class process_svchost process malware_sprysocks[“<b>マルウェア</b>: SprySOCKS Backdoor<br/>説明: C2通信を維持し、情報収集を実行する。”] class malware_sprysocks malware tool_driver_loader[“<b>ツール</b>: DriverLoader<br/>説明: カーネルレベルドライバーを<br/>展開する。”] class tool_driver_loader tool malware_rootkit[“<b>マルウェア</b>: RawWNPF Kernel Driver<br/>説明: ルートキット(T1014)として機能し、<br/>プロセス、ファイル、レジストリキーを隠蔽する。”] class malware_rootkit malware action_port_knocking[“<b>アクション</b> – <b>T1205.001 Traffic Signaling: Port Knocking</b><br/>説明: Windows Filtering Platform を通じて<br/>特殊なTCPトラフィックを転送する。”] class action_port_knocking action %% WIN_PLUS 亜種パス action_win_plus_persist[“<b>アクション</b> – <b>T1547.012 Boot or Logon Autostart Execution: Print Processors</b><br/>説明: 永続化のため VSPMsg.dll を<br/>Print Processor として登録する。”] class action_win_plus_persist action %% ポストエクスプロイトと収集 action_keylogging[“<b>アクション</b> – <b>T1056.001 Input Capture: Keylogging</b><br/>説明: キーストローク、クリップボード情報、<br/>ウィンドウタイトルを取得する。”] class action_keylogging action action_c2[“<b>アクション</b> – <b>T1132.001 Command and Control: Protocol</b><br/>説明: AES-128暗号化を使用し、TCP、UDP、<br/>WebSocket経由で通信する。”] class action_c2 action action_defense_impair[“<b>アクション</b> – <b>T1562.004 Defense Impairment: Disable or Modify Tools</b><br/>説明: netsh.exe を使用して Windows Firewall<br/>ルールを変更し通信を許可する。”] class action_defense_impair action %% 接続 action_exploit –>|つながる| op_variant %% WIN_DRV フロー op_variant –>|亜種パス| action_win_drv_persist action_win_drv_persist –>|つながる| action_win_drv_dll action_win_drv_dll –>|ロードする| malware_loader malware_loader –>|実行する| action_reflective action_reflective –>|注入する| process_svchost process_svchost –>|実行する| malware_sprysocks malware_sprysocks –>|展開する| tool_driver_loader tool_driver_loader –>|マッピングする| malware_rootkit malware_rootkit –>|実現する| action_port_knocking %% WIN_PLUS フロー op_variant –>|亜種パス| action_win_plus_persist action_win_plus_persist –>|利用する| action_reflective %% 共通ポストエクスプロイト malware_sprysocks –>|実行する| action_keylogging malware_sprysocks –>|通信する| action_c2 malware_sprysocks –>|実行する| action_defense_impair %% 論理接続 action_defense_impair –>|有効化する| action_c2
攻撃フロー
## シミュレーション実行
前提条件: テレメトリとベースラインの事前フライトチェックが完了している必要があります。
説明: このセクションは、検出ルールをトリガーするために設計されたアドバーサリーテクニック(TTP)の正確な実行を詳述しています。コマンドと記述は、特定されたTTPに直接関連し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。抽象的あるいは無関係な例は誤診を引き起こします。
-
攻撃ナラティブとコマンド: 攻撃者は、SprySOCKSバックドアを侵害されたWindowsホストに展開することに成功しました。指令・制御チャネルを確立するために、マルウェアはポート53781でリッスニングソケットを開きます。通信が彼らのカスタムC2サーバーによって認識されるように、マルウェアは初期のハンドシェイクパケットに魔法の16進値
0xACACBCBCを注入します。これは、傍受または転送されたトラフィックを介した信頼性のある通信を可能にするために、FishMongerグループの特定のプロトコル動作を模倣しています。 -
回帰テストスクリプト:
# シミュレーションスクリプト:SprySOCKSネットワークアーティファクトの生成 # このスクリプトはSprySOCKSバックドアのネットワーク動作を模倣します。 $TargetPort = 53781 $MagicValue = [byte[]] @(0xAC, 0xAC, 0xBC, 0xBC) $Listener = [System.Net.Sockets.TcpListener]$TargetPort try { Write-Host "[+] ポート$TargetPortでリスナーを開始しています..." -ForegroundColor Cyan $Listener.Start() $Client = $Listener.AcceptTcpClient() $Stream = $Client.GetStream() Write-Host "[+] 接続が確立されました。魔法の値$MagicValueを送信しています..." -ForegroundColor Yellow # 'selection1'ロジックをトリガーするためにストリームに魔法の値を注入 $Stream.Write($MagicValue, 0, $MagicValue.Length) Start-Sleep -Seconds 5 } catch { Write-Error "[-] シミュレーションに失敗しました: $($_.Exception.Message)" } finally { Write-Host "[+] 接続をクリーンアップしています..." -ForegroundColor Cyan $Stream.Close() $Client.Close() $Listener.Stop() } -
クリーンアップコマンド:
# 不正なリスナーがアクティブのままでないことを確認 Get-NetTCPConnection -LocalPort 53781 -ErrorAction SilentlyContinue | Remove-NetTCPConnection Write-Host "[+] クリーンアップ完了。" -ForegroundColor Green