VOID#GEIST マルウェア
サイバーセキュリティ研究者らは、バッチスクリプトを用いて暗号化されたリモートアクセス型トロイの木馬(RAT)ペイロードを拡散する、高度な多段階マルウェア攻撃キャンペーンを発見しました。VOID#GEISTと名付けられたこのキャンペーンは、XWorm、AsyncRAT、Xeno RATを含む複数のRATファミリーを展開します。
この攻撃チェーンは、難読化されたバッチスクリプトを利用して、検出を回避するための一連のアクションを開始します。これらのアクションには、追加のバッチスクリプトの起動、正規の組み込みPythonランタイム環境のステージング、暗号化されたシェルコードペイロードの復号が含まれます。シェルコードは、Early Bird Asynchronous Procedure Call (APC) インジェクションと呼ばれる手法を使用して、Windowsプロセス explorer.exe の個別のインスタンスに挿入された後、メモリ内で直接実行されます。
目次
スクリプト駆動型マルウェア配信:現代の脅威モデル
現代の脅威アクターは、従来のスタンドアロン実行形式マルウェアを放棄し、正規のユーザー行動を模倣する階層化されたスクリプトベースの配信フレームワークを採用する傾向が強まっています。攻撃者は、従来のポータブル実行形式(PE)バイナリを展開するのではなく、複数の正規技術とスクリプト環境を組み合わせたマルチコンポーネントパイプラインを構築します。
これらのフレームワーク内で使用される一般的なコンポーネントは次のとおりです。
- 感染シーケンスを調整するために使用されるバッチ スクリプト。
- ステルスペイロードのステージングを容易にする PowerShell コマンド。
- システム間での移植性を保証する組み込みの正規ランタイム。
- 永続性と制御を維持するためにメモリ内で直接実行される生のシェルコード。
このファイルレス実行アプローチは、ディスクベースの検出機会を大幅に削減します。各段階は個別に調査すると比較的無害に見え、多くの場合、日常的な管理アクティビティに類似しているため、脅威アクターは侵害された環境内で即座にセキュリティアラートを発生させることなく活動することができます。
フィッシングとCloudflareインフラストラクチャを介した初期アクセス
攻撃の入り口は、フィッシングメールを通じて配信される悪意のあるバッチスクリプトから始まります。このスクリプトは、TryCloudflareドメインでホストされているインフラストラクチャから取得されます。実行されると、スクリプトは権限昇格の試みを意図的に回避し、現在ログインしているユーザーの権限範囲内でのみ動作します。
この戦略により、マルウェアは日常的なユーザーレベルの操作に溶け込みながら、最初の足掛かりを築くことができます。昇格された権限を必要とする操作を回避することで、攻撃はセキュリティ警告や管理者プロンプトが表示される可能性を低減します。
視覚的注意散漫とステルス実行テクニック
マルウェアの実行後、第一段階では、ユーザーの注意をそらすためのおとり文書を起動します。Google Chromeが全画面モードで開き、PDF形式の金融文書または請求書が表示されます。ユーザーが文書に集中している間、悪意のあるアクティビティはバックグラウンドで継続されます。
同時に、PowerShellコマンドが実行され、実行パラメータを非表示にした元のバッチスクリプトが再起動されます。-WindowStyle Hiddenパラメータを使用することで、コンソールウィンドウが表示されなくなり、悪意のあるアクティビティがユーザーから隠蔽されます。
ユーザーレベルの起動実行による永続性
システムの再起動後もマルウェアの持続性を維持するため、このマルウェアはWindowsユーザーのスタートアップディレクトリに補助的なバッチスクリプトを配置します。これにより、被害者がシステムにログインするたびに、スクリプトが自動的に実行されるようになります。
この永続化メカニズムは意図的に巧妙に設計されています。システムレジストリキーの変更、タスクのスケジュール作成、サービスのインストールといった、より侵入的な手法を用いる代わりに、マルウェアは標準的なユーザーレベルの起動動作のみに依存します。このアプローチは完全に現在のユーザーの権限の範囲内で動作するため、権限昇格のプロンプトがトリガーされることがなく、レジストリ監視ツールによる検出の可能性も低減します。
ペイロード取得および復号フレームワーク
感染チェーンの次の段階では、マルウェアはTryCloudflareドメインにアクセスし、ZIPアーカイブにパッケージ化された追加のペイロードコンポーネントを取得します。これらのアーカイブには、最終的なマルウェアペイロードを復号して実行するために必要なモジュールが含まれています。
ダウンロードしたアーカイブには通常、次のコンポーネントが含まれます。
- runn.py – 暗号化されたシェルコードモジュールを復号し、メモリに注入するPythonベースのローダー
- new.bin – XWormに関連する暗号化されたシェルコードペイロード
- xn.bin – Xeno RATに対応する暗号化されたシェルコードペイロード
- pul.bin – AsyncRATに対応する暗号化されたシェルコードペイロード
- a.json、n.json、p.json – Pythonローダーが実行時にシェルコードペイロードを動的に復号化するために使用するキーファイル
このモジュール設計により、攻撃者はさまざまなペイロードを個別にステージングし、必要な場合にのみアクティブ化することができます。
移植性とステルス性を実現する組み込み Python ランタイム
アーカイブが解凍されると、マルウェアはpython.orgから直接取得した正規の埋め込みPythonランタイムを展開します。正規のインタープリタを埋め込むことで、侵害されたシステムに既に存在する可能性のあるPythonインストールへの依存を排除します。
攻撃者の観点から見ると、このステップはいくつかの戦略的利点をもたらします。マルウェアは、外部依存を必要とせずにペイロードを復号および挿入できる自己完結型の実行環境となります。これにより、異なるシステム間での移植性が向上し、信頼性が高まり、正規のソフトウェアコンポーネントを使用することで運用上のステルス性も向上します。
複数のRATペイロードのメモリ内実行
埋め込まれたPythonランタイムは、runn.pyローダースクリプトを実行するために使用されます。ローダーはXWormに関連付けられたシェルコードを復号し、Early Bird APCインジェクションを使用してexplorer.exeの実行インスタンスに挿入します。
Xeno RATを展開するために、マルウェアはAppInstallerPythonRedirector.exeと呼ばれる正規のMicrosoftバイナリを利用します。これはPythonを起動して必要なコンポーネントを実行するために使用されます。その後、同じインジェクション手法がAsyncRATの展開にも再利用され、従来の実行可能アーティファクトをディスク上に残すことなく、すべてのペイロードが完全にメモリ内で実行されるようにします。
コマンドアンドコントロールビーコンとモジュラーアーキテクチャ
攻撃の最終段階では、TryCloudflareにホストされている、攻撃者が管理するコマンドアンドコントロール(C2)インフラストラクチャに最小限のHTTPビーコンを送信します。このビーコンは、システムへの侵入に成功し、さらなる指示を受信できる状態であることを確認します。
キャンペーンの具体的な標的は不明ですが、感染チェーンは高度にモジュール化されたアーキテクチャを示しています。攻撃者は、単一の大規模なマルウェアペイロードを展開するのではなく、複数の段階にわたってコンポーネントを段階的に導入します。この設計により、運用の柔軟性と回復力が向上します。
検出の観点から見ると、キャンペーン全体を通して注目すべき行動指標が1つ現れています。それは、explorer.exeへの短い間隔でのプロセスインジェクションの繰り返しです。このパターンは、攻撃ライフサイクルのさまざまな段階における不審なアクティビティの相関関係を検証しようとする防御側にとって、強力なシグナルとなり得ます。