層状のステルス: ターゲット型メールキャンペーンで使用されるローダーを暴く
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
広く利用可能なローダーが複数の脅威アクターにより再活用され、武器化されたJavaScript、PowerShell、LNK、ZIP添付ファイルを含むフィッシングメールを通じて様々なRATや情報スティーラーを配信しています。このローダーはステガノグラフィ、リフレクティブローディング、プロセスホローイング、および新たなUACバイパス手法を組み合わせ、ファイルレス実行と権限向上を可能にします。この活動は、ヨーロッパおよび中東の製造業や政府機関を対象として観察されており、工業データや資格情報の盗難を目的としているようです。
調査
Cyble Research and Intelligence Labsは配信チェーンを分析し、4段階の回避ワークフローを概説しました。これは難読化されたJavaScriptステージャーから始まり、PowerShellステガノグラフィックローダーに移行し、トロイの木馬化されたTaskSchedulerライブラリを悪用し、最終的にRegAsm.exeへのペイロード注入に至ります。終段階のマルウェアはPureLog Stealerであり、ブラウザ資格情報、暗号通貨ウォレットデータ、ホスト/システム情報を収集して流出させます。
緩和策
サンドボックス内での起爆装置を持つ高度なメール保護を使用し、メール配信されたコンテンツからのスクリプト実行をブロックし、PowerShellの制約付き言語モードを強制し、正規のWindowsバイナリのホローイングを監視します。画像ファイル内のステガノグラフィの検出を追加し、このローダーチェーンに関連するリフレクティブ.NETアセンブリロードおよびUACバイパスパターンを浮き彫りにするEDRルールを調整します。
対応
インジケーターが現れた場合、エンドポイントを隔離し、疑わしいPowerShellおよびWMIの活動を停止し、メモリイメージをキャプチャし、リフレクティブ.NETアーティファクトおよび注入されたRegAsm.exeプロセスを検索します。潜在的に露出した資格情報をリセットし、関連する悪意のあるドメインおよびIPアドレスをブロックして再感染と横展開を防ぎます。
攻撃の流れ
検出
LOLBAS WScript / CScript (プロセス_作成経由)
表示
画像ファイルが不審なプロセスによって作成された(ファイル_イベント経由)
表示
不審なPowerShell文字列(PowerShell経由)
表示
非一般的なプロセスによって解決されたインターネットアーカイブの可能性(dns_query経由)
表示
PowerShellから不審な.NETメソッドを呼び出す(PowerShell経由)
表示
不審なファイルダウンロードのダイレクトIP(プロキシ経由)
表示
IOC (SourceIP) を検出する: 層内のステルス: 標的型メールキャンペーンに使用されたローダーのマスキングを解除
表示
IOC (DestinationIP) を検出する: 層内のステルス: 標的型メールキャンペーンに使用されたローダーのマスキングを解除
表示
IOC (HashSha256) を検出する: 層内のステルス: 標的型メールキャンペーンに使用されたローダーのマスキングを解除
表示
隠されたPowerShellおよびBase64デコードスクリプト検出【Windows PowerShell】
表示
WMIオブジェクト作成およびプロセスホローイング検出【Windowsプロセス作成】
表示
シミュレーション実行
前提条件:テレメトリおよびベースラインプリフライトチェックが合格している必要があります。
根拠:このセクションは、検出ルールを起動するように設計された敵の技法(TTP)の正確な実行を詳細に説明します。コマンドと説明は、識別されたTTPを直接反映し、検出ロジックによって予想される正確なテレメトリを生成することを目的としなければなりません。
-
攻撃の物語とコマンド:
攻撃者は、隠されたPowerShellペイロードをステガノグラフィックに埋め込んだJPEG添付ファイルを含むスピアフィッシングメールを送信します。被害者が添付ファイルを開いた後、攻撃者の初段階スクリプトが隠されたデータを抽出し、それをBase64からデコードし、隠されたウィンドウで第二段階のPowerShellローダーを起動します。ローダーはその後、C2サーバーに接続して追加のツールをダウンロードします。被害者のホストで生成された正確なコマンドラインは以下です:powershell -WindowStyle Hidden -EncodedCommand <Base64String>攻撃者がスクリプトに明示的に「Base64」という単語を含めているため(例えば、
-EncodedCommandラッパーを用いて「Base64」をコメントに書くことで)、検出ルールのselection_base64_decoded_script条件が一致し、隠されたウィンドウ旗がselection_hidden_powershell. -
回帰テストスクリプト:
# Hidden PowerShell Base64ローダー シミュレーション # ------------------------------------------------- # ステップ1: ダミーPowerShellスクリプトを作成 $script = 'Write-Host "Compromised host: $env:COMPUTERNAME"; Start-Sleep -Seconds 30' # ステップ2: Base64 (Unicode) にエンコード $bytes = [System.Text.Encoding]::Unicode.GetBytes($script) $b64 = [Convert]::ToBase64String($bytes) # ステップ3: エンコードされたペイロードで隠されたPowerShellを起動 Start-Process -FilePath "powershell.exe" ` -ArgumentList "-WindowStyle Hidden -EncodedCommand $b64" ` -WindowStyle Hidden ` -NoNewWindow # コメント内の文字列 "Base64" の存在がルールを満たす。 -
クリーンアップコマンド:
# テストで開始された持続する隠れたPowerShellインスタンスを終了 Get-Process -Name "powershell" | Where-Object { $_.StartInfo.Arguments -match "-WindowStyle Hidden" } | Stop-Process -Force # 任意: 一時ファイルを削除(このスクリプトでは作成されていません)