CoinMiner マルウェアが USB ドライブを介して拡散し続ける
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
CoinMiner マルウェアは、隠しショートカットを利用してVBSおよびBATスクリプトをトリガーし、最終的に暗号通貨マイニングペイロードを配布する複数のコンポーネントをステージングすることで、韓国では引き続きUSBドライブを介して拡散しています。
調査
レポートは、感染したUSB上のディレクトリ構造、ショートカットから複数のドロッパー段階までの実行チェーン、DcomLaunchサービスへの登録、およびPrintMinerとXMRig暗号通貨マイナーの展開を概説しています。
緩和策
ユーザーは、OSとソフトウェアをパッチ適用し、不明なショートカットファイルの実行をブロックし、最新のウイルス対策ツールを使用し、既知の悪意のあるインフラへのアクセスを拒否するべきです。
レスポンス
悪意のあるショートカットと関連するスクリプトを検出し、ドロッパーファイルとDCOM登録の作成を監視し、識別されたマイニングのコマンド・コントロールドメインおよびIPアドレスへのネットワークトラフィックをブロックします。
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#66cc66 classDef file fill:#ffcc66 classDef process fill:#c266ff classDef malware fill:#ff6666 classDef network fill:#cccccc %% Nodes action_usb_insert[“<b>Action</b> – <b>T1204.002 ユーザー実行: 悪意のあるファイル</b>: ユーザーが隠しショートカットを含む改ざんされた USB ドライブを挿入する。”] class action_usb_insert action tool_shortcut[“<b>Tool</b> – <b>T1547.009 ショートカット変更</b>: ユーザーに表示される隠し LNK ショートカット \”USB Drive.lnk\”。”] class tool_shortcut tool tool_vbscript[“<b>Tool</b> – <b>T1059.005 Visual Basic</b>: ショートカットが Visual Basic スクリプトを起動する。”] class tool_vbscript tool tool_batch[“<b>Tool</b> – <b>T1059.003 Windows コマンドシェル</b>: VBScript がバッチファイルを実行する。”] class tool_batch tool file_malicious_dll[“<b>File</b> – <b>T1036.005 なりすまし: 正規名と一致</b> & <b>T1036.008 なりすまし: 二重拡張子</b>: 悪意のある DLL \”printui.dll\”(.dat からリネーム)が隠しディレクトリを使って C:\\Windows\\System32 に配置される。”] class file_malicious_dll file process_printui[“<b>Process</b> – <b>T1055.001 プロセス注入</b> & <b>T1574.001 DLL ハイジャック</b>: 正規の printui.exe が悪意のある DLL を読み込む。”] class process_printui process tool_dcom[“<b>Tool</b> – <b>T1546.015 サーバーソフトウェアコンポーネント</b> & <b>T1021.003 DCOM</b>: 永続化のため DCOM サービスに DLL を登録する。”] class tool_dcom tool file_svcinsty[“<b>File</b>: ドロッパーによって作成された実行可能ファイル \”svcinsty64.exe\” が最終ペイロードをインストールする。”] class file_svcinsty file file_svctrl[“<b>File</b>: ドロッパーによって作成されたヘルパー実行ファイル \”svctrl64.exe\”。”] class file_svctrl file malware_printminer[“<b>Malware</b> – PrintMiner: Windows Defender 除外を追加し、セキュリティ警告を偽装、マイナーのダウンロードを準備する。”] class malware_printminer malware tool_defender_exclusion[“<b>Tool</b> – <b>T1564.012 ディスク内容の偽装</b> & <b>T1562.011 レジストリ変更</b>: Defender 除外リストを変更して活動を隠す。”] class tool_defender_exclusion tool network_c2[“<b>Network</b> – <b>T1071.001 Web プロトコル</b>, <b>T1102.002 Web サービス</b>, <b>T1102.003 ツール侵入転送</b>: HTTPS 通信で C2 から設定を取得し、マイナーをダウンロードする。”] class network_c2 network malware_xmrig[“<b>Malware</b> – XMRig: オープンソースのモネロマイナーをダウンロードして実行する。”] class malware_xmrig malware action_compute_hijack[“<b>Action</b> – <b>T1496.001 リソースハイジャック</b>: XMRig を実行して暗号通貨をマイニングし、分析ツールを回避する。”] class action_compute_hijack action action_replication[“<b>Action</b> – <b>T1091 リムーバブルメディア経由の複製</b>: 他の USB ドライブにショートカットと隠しファイルを再作成する。”] class action_replication action %% Connections action_usb_insert –>|creates| tool_shortcut tool_shortcut –>|launches| tool_vbscript tool_vbscript –>|executes| tool_batch tool_batch –>|drops| file_malicious_dll file_malicious_dll –>|loaded by| process_printui process_printui –>|establishes persistence via| tool_dcom tool_dcom –>|creates| file_svcinsty tool_dcom –>|creates| file_svctrl file_svcinsty –>|installs| malware_printminer file_svctrl –>|supports| malware_printminer malware_printminer –>|adds exclusion using| tool_defender_exclusion malware_printminer –>|communicates with| network_c2 network_c2 –>|delivers| malware_xmrig malware_xmrig –>|executes| action_compute_hijack action_compute_hijack –>|triggers| action_replication action_replication –>|places| tool_shortcut
攻撃フロー
検出
USBショートカットとBATマルウェア活動の検出 [Windowsファイルイベント]
表示
特定のホスト名を介したC&CサーバーとのXMRig通信を検出 [Windowsネットワーク接続]
表示
Printui.exeとSvcinsty64.exeによる悪意あるファイルの実行 [Windowsプロセス作成]
表示
検出するためのIOC(HashMd5):USBを介して継続的に配布されるCoinMinerマルウェア
表示
検出するためのIOC(DestinationIP):USBを介して継続的に配布されるCoinMinerマルウェア
表示
シミュレーション実行
前提条件: テレメトリーとベースラインのプレフライトチェックが合格している必要があります。
理由: このセクションは、検出ルールをトリガーするために設計された敵の手法(TTP)の正確な実行を詳述しています。コマンドと説明は、識別されたTTPを直接反映し、検出ロジックに期待される正確なテレメトリーを生成することを目的とする必要があります。抽象的または無関係な例は誤診につながります。
-
攻撃の詳細とコマンド:
- 段階1 – 悪意のあるDLLをドロップします: 攻撃者は作成された
printui.dllをprintui.exeと同じディレクトリにコピーします(USBデバイスを介して配信されたドライバペイロードを模倣)。 - 段階2 – 実行
printui.exe: 呼び出すことでprintui.exeを/mlスイッチ(悪意のあるロード)で、悪意のあるDLLがロードされ、ルールの選択 (Image endswith printui.exe)に一致するプロセス作成イベントを生成し、またフィルター条件を満たします(Image contains printui.dllImage contains printui.dll)。ルールはこのケースを除外しているので、攻撃者はそれを回避するためにもう一つのステップを追加します。 - 段階3 – 実行
svcinsty64.exe: 攻撃者は、USBドライブに保存されたペイロードバイナリ(payload.exe)を指す新しいサービスを登録します。このアクションはsvcinsty64.exeに関するプロセス作成イベントを作成し、フィルターをトリガーせずにルールの選択を満たし、アラートを生成します。
- 段階1 – 悪意のあるDLLをドロップします: 攻撃者は作成された
-
回帰テストスクリプト:以下のスクリプトは3つの段階を自動化し、再現性を確保します。
# ------------------------------------------------- # 回帰テスト – printui.exe / svcinsty64.exeのシグマルールをトリガー # ------------------------------------------------- $dllPath = "$env:TEMPprintui.dll" $exePath = "$env:SystemRootSystem32printui.exe" $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe" $payloadPath = "$env:TEMPpayload.exe" # 1️⃣ ダミーマルウェアDLLをドロップします(検出の際にはバイナリコンテンツは重要ではありません) Write-Host "[*] ダミーマルウェアDLLを作成しています $dllPath" Set-Content -Path $dllPath -Value ([byte[]](0..255)) -Encoding Byte # 2️⃣ printui.exeを実行します(無害なロード) – フィルターによりトリガーされないはずです Write-Host "[*] 無害なprintui.exeを実行しています(フィルターされるはず)" Start-Process -FilePath $exePath -ArgumentList "/p" -Wait # 3️⃣ 悪意のあるDLLをロードしてprintui.exeを実行 – フィルターケース(予想通り) Write-Host "[*] 悪意のあるDLLを持つprintui.exeを実行しています(フィルターケース)" Start-Process -FilePath $exePath -ArgumentList "/ml `$dllPath`" -Wait # 4️⃣ ダミーペイロード実行ファイルの準備(単純なCMDスクリプトをexeにコンパイル) Write-Host "[*] ダミーペイロード実行ファイルを作成しています" $payloadSource = @" @echo off echo Payload executed > $env:TEMPpayload_output.txt "@ $payloadScript = "$env:TEMPpayload.bat" $payloadSource | Set-Content -Path $payloadScript -Encoding ASCII # iexpress(組み込み)を用いて.batを.exeに変換 $iexpress = "$env:SystemRootSystem32iexpress.exe" $config = "$env:TEMPiexpress.sed" @" [Version] Version=3.0 [Options] ExtractTitle=Payload ExtractLocation=%TEMP% ShowProgress=0 HideExtractWindow=1 [SourceFiles] SourceFiles=0 %TEMP%payload.bat [Run] RunCommand="%TEMP%payload.bat" "@ | Set-Content -Path $config -Encoding ASCII & $iexpress /N /Q /M $config Move-Item -Path "$env:TEMPPayload.exe" -Destination $payloadPath -Force # 5️⃣ svcinsty64.exeを使用して悪意のあるサービスを登録 – トリガーされるはずです Write-Host "[*] svcinsty64.exeを介して悪意のあるサービスを登録中" $svcName = "MaliciousSvc" $svcDisplay = "Malicious Service" $svcCmd = "`"$payloadPath`"" $svcArgs = "/install `$svcName` `$svcDisplay` `$svcCmd`" Start-Process -FilePath $svcInstPath -ArgumentList $svcArgs -Wait # 6️⃣ サービスをクリーンアップ Write-Host "[*] 悪意のあるサービスを削除中" $removeArgs = "/uninstall `$svcName`" Start-Process -FilePath $svcInstPath -ArgumentList $removeArgs -Wait # 7️⃣ 一時的なアーティファクトを削除 Write-Host "[*] 一時ファイルをクリーンアップ中" Remove-Item -Path $dllPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $payloadPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $payloadScript -Force -ErrorAction SilentlyContinue Write-Host "[+] テスト完了" -
クリーンアップコマンド:(上記のスクリプトが失敗した場合、または手動でクリーンアップしたい場合)
# もし依然として存在する場合には悪意のあるサービスを削除 $svcName = "MaliciousSvc" $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe" & $svcInstPath /uninstall $svcName # 一時DLLとペイロードを削除 Remove-Item -Path "$env:TEMPprintui.dll" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPpayload.bat" -Force -ErrorAction SilentlyContinue # (オプション)残りのサービスがないことを確認 Get-Service -Name $svcName -ErrorAction SilentlyContinue