SOC Prime Bias: 中程度

05 Dec 2025 14:36 UTC

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

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

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

CoinMiner マルウェアは、隠しショートカットを利用してVBSおよびBATスクリプトをトリガーし、最終的に暗号通貨マイニングペイロードを配布する複数のコンポーネントをステージングすることで、韓国では引き続きUSBドライブを介して拡散しています。

調査

レポートは、感染したUSB上のディレクトリ構造、ショートカットから複数のドロッパー段階までの実行チェーン、DcomLaunchサービスへの登録、およびPrintMinerとXMRig暗号通貨マイナーの展開を概説しています。

緩和策

ユーザーは、OSとソフトウェアをパッチ適用し、不明なショートカットファイルの実行をブロックし、最新のウイルス対策ツールを使用し、既知の悪意のあるインフラへのアクセスを拒否するべきです。

レスポンス

悪意のあるショートカットと関連するスクリプトを検出し、ドロッパーファイルとDCOM登録の作成を監視し、識別されたマイニングのコマンド・コントロールドメインおよびIPアドレスへのネットワークトラフィックをブロックします。

攻撃フロー

シミュレーション実行

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

理由: このセクションは、検出ルールをトリガーするために設計された敵の手法(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