Phantom 3.5 – 偽のAdobeインストーラーを介して配信される資格情報窃取マルウェア
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Phantom 3.5は、偽のAdobeインストーラーを介して配布される資格情報を盗むマルウェアです。実行されると、インストーラーはPowerShellスクリプトをドロップし、難読化された.NET DLL(BLACKHAWK.dll)をプルダウンし、最終的なペイロードをAspnet_compiler.exeに注入して信頼されているプロセスコンテキストで実行します。
調査
研究者たちはサンドボックスで偽のインストーラーを起動し、ダウンローダーの場所(positivepay-messages.com/file/floor.ps1)を特定しました。Base64/RC4で保護されたスクリプトをデコードし、取得された.NET DLLを特定し、hollows_hunterやProcDumpなどのツールを使用してAspnet_compiler.exeへの注入を確認しました。分析によれば、DLLにはアンチ分析対策、Heaven’s Gate技術、SMTP、FTP、Telegram、Discordを含む複数のデータ流出チャネルが含まれています。
緩和策
署名されていないPowerShellスクリプトの実行を制限またはブロックし、信頼できないDLLのロードを防ぎ、異常なAspnet_compiler.exeプロセスの作成を監視します。悪意のあるドメインとそのパスへのアクセスをブロックするためにURLフィルタリングを適用してください。エンドポイント制御がプロセス注入パターンと一般的な資格情報盗取者の行動を検出できるようにしてください。
応答
positivepay-messages.comへのアウトバウンド接続、BLACKHAWK.dllに関連するメモリまたはモジュールの痕跡、およびAspnet_compiler.exeへのコード注入の証拠にアラートをトリガーします。影響を受けたホストを隔離し、メモリイメージを取得し、完全なフォレンジックトリアージを実施して、悪意のあるDLLと関連するペイロードを排除します。
アタックフロー
検出
疑わしいPowershell文字列(powershell経由)
表示
遅延実行のためのタイムアウト使用の可能性(cmdline経由)
表示
異常なコードページ変更実行(cmdline経由)
表示
可能な永続化点[ASEPs – Software/NTUSER Hive](registry_event経由)
表示
検出するためのIOCs(HashMd5):Phantom 3.5:初期ベクトル分析とフォレンジック
表示
Phantom 3.5プロセス注入 via Aspnet_compiler.exe [Windowsプロセスの作成]
表示
PowerShellスクリプト実行(隠し属性付き)およびBase64エンコードされた文字列 [Windows Powershell]
表示
シミュレーションの実行
前提条件:Telemetry & Baseline Pre‑flight Checkが通過している必要があります。
説明:このセクションでは、検出ルールをトリガーするために設計された敵の技法(TTP)の正確な実行を詳細に説明します。コマンドとナラティブは、特定されたTTPを直接反映し、検出ロジックに期待される正確なテレメトリを生成することを目的としています。
-
攻撃の流れとコマンド:
敵はPhantom 3.5ペイロードを取得し、それをメモリ上で実行してディスクベースの防御を回避しようとします。彼らはAspnet_compiler.exe、信頼できるWindowsバイナリであり、Invoke-ManagedAssembly引数を使用して悪意のある管理対象アセンブリをロードします。これにより、コンパイラープロセスが生成され、ペイロードを現在のプロセス空間に注入し、同じコマンドを繰り返し実行するスケジュールされたタスクを作成することで持続性を維持します。-
悪意のある管理対象アセンブリをステージします (
phantom_payload.dll)を対象ホストに配置します。 -
注入を実行します を使用して
Aspnet_compiler.exe:$maliciousDll = "C:Tempphantom_payload.dll" $cmd = "`"$env:WINDIRMicrosoft.NETFramework64v4.0.30319Aspnet_compiler.exe`" -p `"$maliciousDll`" -c `Invoke-ManagedAssembly`" Start-Process -FilePath $cmd -WindowStyle Hidden -
持続性を作成します (オプション)毎時同じコマンドを再実行するようにスケジュールされたタスクを登録することによって。
-
-
レグレッションテストスクリプト: 以下のスクリプトは、上記の手順を自己完結型で再現可能な方法で再現します。
<# .SYNOPSIS Aspnet_compiler.exeを使用したPhantom 3.5プロセス注入をシミュレートします。 .DESCRIPTION ダミーの悪意のあるDLLを既知の位置にコピーし、検出ルールが監視する正確なプロセス作成イベントを生成するために`Invoke-ManagedAssembly`フラグを使用してAspnet_compiler.exeを起動します。 #> # --- 準備 ----------------------------------------------------------- $dllPath = "$env:TEMPphantom_payload.dll" # 実際のペイロードのプレースホルダーとなる小さなダミーDLLを作成します Set-Content -Path $dllPath -Value ([byte[]](0x4D,0x5A,0x90,0x00,0x03,0x00,0x00,0x00)) -Encoding Byte # --- 実行 ------------------------------------------------------------- $aspnetPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319Aspnet_compiler.exe" if (-Not (Test-Path $aspnetPath)) { Write-Error "Aspnet_compiler.exeが期待される場所に見つかりません。" exit 1 } $arguments = "-p `"$dllPath`" -c `Invoke-ManagedAssembly`" Write-Host "悪意のある引数でAspnet_compiler.exeを起動しています..." Start-Process -FilePath $aspnetPath -ArgumentList $arguments -WindowStyle Hidden -PassThru # --- 任意の持続性 ---------------------------------------------------- # 毎時注入を繰り返すスケジュールされたタスクを登録します $taskName = "PhantomInject" $action = New-ScheduledTaskAction -Execute $aspnetPath -Argument $arguments $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(5) -RepetitionInterval (New-TimeSpan -Hours 1) -RepetitionDuration ([TimeSpan]::MaxValue) Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -RunLevel Highest -Force Write-Host "シミュレーション完了。生成されたアラートをSIEMで確認してください。" -
クリーンアップコマンド: ダミーDLL、スケジュールされたタスク、および残留プロセスを削除します。
# ダミーDLLを削除します Remove-Item -Path "$env:TEMPphantom_payload.dll" -Force -ErrorAction SilentlyContinue # スケジュールされたタスクを登録解除します Unregister-ScheduledTask -TaskName "PhantomInject" -Confirm:$false -ErrorAction SilentlyContinue # テストで開始された残りのAspnet_compiler.exeプロセスを終了します Get-Process -Name "Aspnet_compiler" -ErrorAction SilentlyContinue | Stop-Process -Force