SOC Prime Bias: 中程度

05 12月 2025 17:36

CoinMiner マルウェアが USB ドライブを介して拡散し続ける

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
CoinMiner マルウェアが USB ドライブを介して拡散し続ける
shield icon

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

攻撃フロー

シミュレーション実行

前提条件: テレメトリーとベースラインのプレフライトチェックが合格している必要があります。

理由: このセクションは、検出ルールをトリガーするために設計された敵の手法(TTP)の正確な実行を詳述しています。コマンドと説明は、識別されたTTPを直接反映し、検出ロジックに期待される正確なテレメトリーを生成することを目的とする必要があります。抽象的または無関係な例は誤診につながります。

  • 攻撃の詳細とコマンド:

    1. 段階1 – 悪意のあるDLLをドロップします: 攻撃者は作成されたprintui.dllprintui.exeと同じディレクトリにコピーします(USBデバイスを介して配信されたドライバペイロードを模倣)。
    2. 段階2 – 実行printui.exe: 呼び出すことでprintui.exe/mlスイッチ(悪意のあるロード)で、悪意のあるDLLがロードされ、ルールの選択 (Image endswith printui.exe)に一致するプロセス作成イベントを生成し、またフィルター条件を満たします(Image contains printui.dllImage contains printui.dll)。ルールはこのケースを除外しているので、攻撃者はそれを回避するためにもう一つのステップを追加します。
    3. 段階3 – 実行svcinsty64.exe: 攻撃者は、USBドライブに保存されたペイロードバイナリ(payload.exe)を指す新しいサービスを登録します。このアクションはsvcinsty64.exeに関するプロセス作成イベントを作成し、フィルターをトリガーせずにルールの選択を満たし、アラートを生成します。
  • 回帰テストスクリプト:以下のスクリプトは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