SOC Prime Bias: 中程度

18 12月 2025 21:42

Phantom 3.5 – 偽のAdobeインストーラーを介して配信される資格情報窃取マルウェア

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Follow
Phantom 3.5 – 偽のAdobeインストーラーを介して配信される資格情報窃取マルウェア
shield icon

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と関連するペイロードを排除します。

“graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef process fill:#c2f0c2 classDef malware fill:#f9d5e5 %% Nodes u2013 初期アクセスと実行 action_user_execution[“<b>アクション</b> – <b>T1204.002 ユーザー実行</b>: 被害者は正規のように見える偽のu201cAdobe 11.7.7 インストーラu201dを実行します。”] class action_user_execution action tech_masquerade[“<b>技法</b> – <b>T1036.008 偽装</b>: インストーラファイルは名前が変更され、Adobeインストーラのように見せかけられています。”] class tech_masquerade technique tool_powershell[“<b>ツール</b> – <b>名前</b>: PowerShell<br/><b>説明</b>: ウィンドウを隠して実行ポリシーをバイパスして悪意のあるスクリプトをダウンロードおよび実行するために使用されます。”] class tool_powershell tool %% Nodes u2013 難読化とデコード tech_deobfuscate[“<b>技法</b> – <b>T1140 デオブスクエート/デコード ファイル</b>: Base64u2011RC4 ペイロードは、実行前にデコードおよび復号化されます。”] class tech_deobfuscate technique tech_obfuscate[“<b>技法</b> – <b>T1027 難読化されたファイル</b>: マルウェアスクリプトは、静的解析を回避するために非常に難読化されます。”] class tech_obfuscate technique %% Nodes u2013 プロセスインジェクションと反射的ロード tech_process_injection[“<b>技法</b> – <b>T1055 プロセス インジェクション</b>: BLACKHAWK.dll が Aspnet_compiler.exe にインジェクトされ、ペイロードを実行します。”] class tech_process_injection technique process_aspnet_compiler[“<b>プロセス</b> – <b>名前</b>: Aspnet_compiler.exe”] class process_aspnet_compiler process tech_reflective_load[“<b>技法</b> – <b>T1620 反射的コードロード</b>: .NET アセンブリが System.Reflection.Assembly::Load を使用してメモリ内にロードされます。”] class tech_reflective_load technique %% Nodes u2013 防御回避 tech_sandbox_evasion[“<b>技法</b> – <b>T1497.002 仮想化サンドボックス回避</b>: ユーザー名と環境変数をチェックして解析マシンを検出します。”] class tech_sandbox_evasion technique %% Nodes u2013 永続化 tech_active_setup[“<b>技法</b> – <b>T1547.014 アクティブ セットアップ 永続化</b>: アクティブ セットアップを介してログオン時に自動実行するための Run レジストリキーを作成します。”] class tech_active_setup technique %% Nodes u2013 資格情報へのアクセスと収集 tech_keylogging[“<b>技法</b> – <b>T1056.001 キーロギング</b>: ユーザーのキー操作をキャプチャします。”] class tech_keylogging technique tech_browser_cred[“<b>技法</b> – <b>T1555.003 ブラウザ資格情報アクセス</b>: ウェブブラウザからマスターキー、パスワード、クッキー、財布データを盗み出します。”] class tech_browser_cred technique tech_clipboard[“<b>技法</b> – <b>T1115 クリップボードデータ</b>: システムのクリップボードからデータを収集します。”] class tech_clipboard technique tech_screen_capture[“<b>技法</b> – <b>T1113 スクリーンキャプチャ</b>: 1秒間隔でスクリーンショットを撮ります。”] class tech_screen_capture technique tech_video_capture[“<b>技法</b> – <b>T1125 ビデオキャプチャ</b>: ユーザーのデスクトップの動画を記録します。”] class tech_video_capture technique %% Nodes u2013 データ流出 tech_smtp_ftp[“<b>技法</b> – <b>T1048 代替プロトコルによるデータ流出</b>: 盗まれたデータをSMTPメールおよびFTP転送で送信します。”] class tech_smtp_ftp technique tech_telegram_discord[“<b>技法</b> – <b>T1567 ウェブサービスを介したデータ流出</b>: テレグラムおよびディスコードAPIを介してデータを転送します。”] class tech_telegram_discord technique %% Nodes u2013 コマンドアンドコントロール tech_web_service[“<b>技法</b> – <b>T1102.002 ウェブサービス双方向C2</b>: テレグラムとディスコードをコマンドアンドコントロールの双方向通信チャネルとして使用します。”] class tech_web_service technique %% Connections u2013 攻撃の流れ action_user_execution u002du002d>|導く| tech_masquerade tech_masquerade u002du002d>|導く| tool_powershell tool_powershell u002du002d>|実行する| tech_deobfuscate tech_deobfuscate u002du002d>|支援する| tech_obfuscate tech_obfuscate u002du002d>|実行する| tech_process_injection tech_process_injection u002du002d>|ターゲットにする| process_aspnet_compiler process_aspnet_compiler u002du002d>|ロードする| tech_reflective_load tech_reflective_load u002du002d>|促進する| tech_sandbox_evasion tech_sandbox_evasion u002du002d>|許可する| tech_active_setup tech_active_setup u002du002d>|実行する| tech_keylogging tech_keylogging u002du002d>|収集する| tech_browser_cred tech_browser_cred u002du002d>|追加する| tech_clipboard tech_clipboard u002du002d>|追加する| tech_screen_capture tech_screen_capture u002du002d>|追加する| tech_video_capture tech_video_capture u002du002d>|供給する| tech_smtp_ftp tech_video_capture u002du002d>|供給する| tech_telegram_discord tech_smtp_ftp u002du002d>|流出する| tech_web_service tech_telegram_discord u002du002d>|流出する| tech_web_service %% スタイリング class action_user_execution action class tech_masquerade,tech_deobfuscate,tech_obfuscate,tech_process_injection,tech_reflective_load,tech_sandbox_evasion,tech_active_setup,tech_keylogging,tech_browser_cred,tech_clipboard,tech_screen_capture,tech_video_capture,tech_smtp_ftp,tech_telegram_discord,tech_web_service technique class tool_powershell tool class process_aspnet_compiler process “

アタックフロー

シミュレーションの実行

前提条件:Telemetry & Baseline Pre‑flight Checkが通過している必要があります。

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

  • 攻撃の流れとコマンド:
    敵はPhantom 3.5ペイロードを取得し、それをメモリ上で実行してディスクベースの防御を回避しようとします。彼らは Aspnet_compiler.exe、信頼できるWindowsバイナリであり、 Invoke-ManagedAssembly 引数を使用して悪意のある管理対象アセンブリをロードします。これにより、コンパイラープロセスが生成され、ペイロードを現在のプロセス空間に注入し、同じコマンドを繰り返し実行するスケジュールされたタスクを作成することで持続性を維持します。

    1. 悪意のある管理対象アセンブリをステージします (phantom_payload.dll)を対象ホストに配置します。

    2. 注入を実行します を使用して 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
    3. 持続性を作成します (オプション)毎時同じコマンドを再実行するようにスケジュールされたタスクを登録することによって。

  • レグレッションテストスクリプト: 以下のスクリプトは、上記の手順を自己完結型で再現可能な方法で再現します。

    <#
    .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