SOC Prime Bias: 中程度

14 Apr 2026 15:48 UTC

攻撃の核となる難読化されたJavaScript

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon フォローする
攻撃の核となる難読化されたJavaScript
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

フィッシングメールがRARアーカイブ内の悪意のあるJavaScriptファイルを配信し、Formbookマルウェアの実行で終わる感染チェーンが始まります。起動後、このスクリプトは複数のファイルを共用フォルダに書き込み、スケジュールされたタスクを通じて持続性を確立し、AES暗号化されたコンテンツを復号化して悪意のある.NET DLLを読み込みます。そのDLLは MSBuild.exe プロセスに注入され、その後の実行を続け最終マルウェアステージを展開します。このキャンペーンにはETWとAMSIの修正を含む検出回避の手法も組み込まれています。

調査

分析中、研究者たちはJavaScriptドロッパー cbmjlzan.JSを特定し、15分ごとにコピーされたスクリプトを実行するように構成されたスケジュールされたタスクを発見しました。また、画像ファイル内に隠されたbase64エンコードされたデータをデコードするPowerShellコマンドを追跡しました。復号化されたコンテンツは、Formbookを配信するために注入された.NET DLLを明らかにしました。さらに、調査と検出開発のためにファイルパスやタスク名、暗号素材を含む追加の指標が抽出されました。 MSBuild.exe and used to deliver Formbook. Additional indicators, including file paths, task names, and cryptographic material, were extracted to support deeper investigation and detection development.

緩和策

組織は信頼されていないJavaScriptファイルや、ユーザーがアクセス可能なディレクトリから起動されるPowerShellスクリプトの実行をブロックし、異常またはランダムに見える名前で作成されたスケジュールされたタスクを注意深く監視するべきです。実行制御はマルウェアの連鎖を防ぐために適用されるべきです。また、セキュリティツールはDLLインジェクションの挙動や、ETWとAMSIの改ざん、既知のFormbook関連の署名を検出する必要があります。ユーザーの意識を向上させるためのトレーニングもフィッシング添付ファイルによるリスクを減らすために重要です。 MSBuild.exe to prevent abuse in malware chains. Security tooling should also detect DLL injection behavior, ETW and AMSI tampering, and known Formbook-related signatures. User awareness training remains important to reduce the risk posed by phishing attachments.

対応

防御者は特定されたJavaScriptファイルまたは関連するスケジュールされたタスクが現れたときにアラートを生成し、影響を受けたエンドポイントを隔離して、解析のための揮発性証拠を収集するべきです。悪意のあるファイルは削除され、スケジュールされたタスクは削除され、完全な実行フローを理解するために注入されたDLLを完全に調査されるべきです。侵害されたシステムコンポーネントは、整合性を確保するために再構築または復元されるべきです。また、関連するIOCは、より広範なセキュリティコミュニティと共有され、他者が同様の活動を検出するのに役立つようにすべきです。

攻撃フロー

シミュレーション実行

前提条件: テレメトリー&ベースラインプレフライトチェックが合格していること。

推論:このセクションは、検出ルールをトリガーするために設計された敵の手法(TTP)の正確な実行を詳述します。コマンドとナarratorは識別されたTTPsを直接反映し、検出ロジックが期待する正確なテレメトリーを生成することを目的としています。

  • 攻撃の説明&コマンド:
    低特権アカウントを侵害した攻撃者は、悪意のあるペイロードをダウンロードすることを望み、それがBase64文字列として妥協されたスクリプトリポジトリに保存されています。検出を避けるために、攻撃者は1つのPowerShellワンライナーを作成し、(1) Base64文字列をデコードし、(2) それを通して呼び出し、 iexおよび(3) さらに埋め込まれたデータを復号化するためにAESオブジェクトを作成します。正確なコマンドラインはルールのリテラルに合うように書かれています。

    powershell
    C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -Noexit -nop -c iex([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(('REPLACED_STRING'.Replace('VFHDVXDJCF',''))))) ; $aes_var = [System.Security.Cryptography.Aes]::Create()
    
    • 攻撃者は正当なBase64ペイロードで REPLACED_STRING を取って代わり、既知のマーカーを取り除いた後(VFHDVXDJCF).
    • The -Noexit -nop -c スイッチはプロンプトと実行ポリシーのバイパスを抑制し、検出条件と一致します。
    • The $aes_var 変数名は、第二の選択肢に合うようにリテラルとして保持されています。
  • リグレッションテストスクリプト: 以下のPowerShellスクリプトは、制御された方法で正確なコマンドラインを再現し、SIEMが同一のテレメトリーを受信することを保証します。

    # リグレッションテストスクリプト – 検出をトリガー
    $payload = "U2FtcGxlIEJhc2U2NCBTdHJpbmc="   # "Sample Base64 String"
    $marker  = "VFHDVXDJCF"
    $obfuscated = $payload.Replace($marker, "")   # 検出で使用される.Replaceをシミュレート
    $command = @"
    C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -Noexit -nop -c iex([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(('${obfuscated}'.Replace('VFHDVXDJCF',''))))) ; $aes_var = [System.Security.Cryptography.Aes]::Create()
    "@
    
    # 作成されたコマンドラインを実行
    Invoke-Expression $command
  • クリーンアップコマンド: 残っているAESオブジェクトを削除し、生成されたPowerShellセッションを停止します。

    # クリーンアップ – もしまだ実行中なら子PowerShellプロセスを終了
    Get-Process -Name powershell -ErrorAction SilentlyContinue | Where-Object { $_.Path -like "*WindowsPowerShellv1.0powershell.exe" } | Stop-Process -Force
    
    # 任意で一時変数をクリア
    Remove-Variable -Name payload, marker, obfuscated, command -ErrorAction SilentlyContinue