ホスピタリティ企業を狙う新たな多段階LNK攻撃、Node.jsバックドアを悪用

ホスピタリティ業界の企業が、予約関連を装った偽メールで多段階のNode.jsバックドアを配信する、現在進行中のフィッシングキャンペーンの標的となっています。

この攻撃チェーンは、Googleの共有リンク、悪意のあるZIPアーカイブ、Windowsショートカットファイル、PowerShell、そしてTONブロックチェーンを悪用することでセキュリティ対策を回避し、耐障害性の高いコマンド&コントロール(C2)通信を維持しています。

セキュリティコンサルティングサービス

最初のメールには予約をテーマにした誘導文とGoogle共有URLが記載されており、正規のホスティングサービスを利用することで、評価ベースのメールフィルタリングを回避する仕組みになっています。

被害者はshare[.]google/YLoRYlokrW3iner8rからrecordstrace[.]info/5bC6vVOeP9PI3B08へリダイレクトされ、直接ダウンロードまたはClickFix型のソーシャルエンジニアリングを通じてZIPアーカイブを入手するよう促されます。

アーカイブ内には、shell32.dllのアイコンを使って画像に見せかけた悪意のある.lnkファイルが含まれています。このショートカットを実行すると、難読化されたPowerShellコマンドが密かに起動します。

このスクリプトは、接続先ドメインを2つの大きな整数値の中に隠しており、一方の値からもう一方を減算した後、ビット演算またはそれに相当するモジュロ・整数除算のロジックを用いて、URLをバイト単位で復元します。

研究者らは、同じコアロジックを使ってrecordstrace[.]infoを復元する複数の亜種を確認しており、攻撃者側は表面的な難読化手法を変更しつつも、全体的な実行チェーンは維持していることがうかがえます。

PowerShellの段階では、システム上にnode.exeが既に存在するかどうかを確認します。存在しない場合、公式のNode.js配布サイトから正規のNode.jsパッケージ(具体的にはNode.js v24.13.0)をダウンロードし、ユーザーのLocalAppDataディレクトリに展開します。

この「信頼されたソフトウェアを悪用する(living-off-trusted-software)」手法により、正規のアプリケーション展開との見分けが一段と難しくなっています。

多段階LNK攻撃

LevelBlueのマネージド脅威リサーチチームが調査したのは、顧客環境で発生したセキュリティアラートで、初期実行に使われるWindowsショートカット(.lnk)ファイルを含む悪意のあるZIPファイルが関与していました。

その後、ローダーはBase64デコードとAES-128-CBC復号を行い、次段階のJavaScriptペイロードと、それに関連するC2情報を取得します。

復元されたペイロードは、インストール済みまたは新たに展開されたNodeランタイムを通じて実行され、正規の開発者向けフレームワークを事実上マルウェアの実行環境へと変貌させます。

このJavaScriptバックドアは、独自の仮想マシン(VM)インタープリタによって厳重に保護されています。悪意のあるJavaScript命令を直接露出させる代わりに、マルウェアはBase64のBLOBをデコードし、実行時にエンコードされたバイトコードを解釈します。

この手法により、静的解析が複雑化し、シグネチャベースの検知が弱体化するとともに、バックドアの中核的な機能が隠蔽されます。

このインプラントは、展開したNode.jsプロセスが既に実行中かどうかを確認し、重複起動を防止します。また、レジストリキーHKCU\Software\Microsoft\Windows\CurrentVersion\Runを通じて永続化を確立し、ユーザーがログインするたびにNode.js実行ファイルとバックドアを起動するよう設定されます。

このプロセスは切り離された状態(detached)で実行され、出力は抑制され、ウィンドウも非表示にされます。

注目すべき特徴の一つが、TONブロックチェーンを通じたEtherHidingの利用です。このバックドアはTONAPIエンドポイントに対してスマートコントラクトアカウントのドメインデータを照会し、ペイロードにハードコードするのではなく、ブロックチェーン上でホストされている情報から有効なC2アドレスを取得します。

これにより、ドメインがブロックまたは差し押さえられた場合でも、攻撃者はスマートコントラクトのトランザクションを通じてC2インフラを更新できます。

これまでに確認されている過去のC2ドメインには、tonajukbhuakpo2[.]shopzloapobikahy23[.]bondhsaertyuoang34[.]sbsamanohuguta[.]cfdなどがあります。

この関数は、JavaScriptのgetterおよびsetterを介して複数の内部変数への参照を含むオブジェクトを作成した後、それをvmn_c51b70関数に渡します。

有効なアドレスを取得した後、マルウェアはwss://<C2>/w?user_id=<guid>に似たURLパターンを使ってWebSocket経由で接続します。

このバックドアは、secp256k1楕円曲線ディフィー・ヘルマン鍵交換、HKDF、AES-256-CBCを用いて暗号化セッションを確立します。追加のPEファイル、PowerShellコマンド、JavaScriptペイロードを取得・実行することも可能です。

ダウンロードしたバイナリを実行する前に、PEヘッダーを検証し、ファイルを一時ディレクトリに書き込み、Microsoft Defenderの除外設定への追加を試みます。

防御担当者は、不審な.png.lnkファイル、ユーザー書き込み可能フォルダ内での予期しないNode.jsのダウンロード、ショートカットからのPowerShellプロセス生成、Runキーによる永続化、TONAPIへのリクエスト、そして外向きのWebSocket接続を監視すべきです。

LevelBlueは、マシンIDwin-5r0dsv23ed0に紐づく関連サンプルを400件以上確認しており、提出日は2026年3月にまで遡ることから、このキャンペーンが持続的かつ現在も継続していることがうかがえます。

2019年当時のSOC(セキュリティオペレーションセンター)向けに書かれたSLAをそのまま受け入れるのはもうやめませんか——2026年版AI SLAベンダーチェックリストはこちら – 無料のAI SOC SLAガイドをダウンロード

翻訳元: https://gbhackers.com/multi-stage-lnk-attack/

ソース: gbhackers.com