料金所: 君のはどうだ、IISは俺のだ

REF3927 は、公開されている ASP.NET マシン キーを悪用して IIS サーバーを侵害し、TOLLBOOTH SEO クローキング モジュールを世界中に展開します。

53分で読めますマルウェア分析
料金所: 君のはどうだ、IISは俺のだ

はじめに

2025 年 9 月、Elastic Security Labs と連携したマネージド検出および対応プロバイダーであるTexas A&M University System (TAMUS) Cybersecurity は、中国語を話す脅威アクターが悪意のある IIS モジュール (TOLLBOOTH と呼んでいます) をインストールした後のエクスプロイト活動を発見しました。この間、私たちは、Godzilla から分岐した Web シェルフレームワーク、リモート監視および管理 (RMM) ツール GotoHTTP の使用、およびアクティビティを隠蔽するために使用される悪意のあるドライバーを観察しました。脅威の攻撃者は、Microsoft のドキュメントや StackOverflow サポート ページなどの公開リソースにある ASP.NET マシン キーを使用する、誤って構成された IIS Web サーバーを悪用しました。

同様の一連の出来事は、今年2月にマイクロソフトによって初めて報告された。私たちのチームは、同様のマルウェアと動作に基づき、これは AhnLab が 4 月に詳細を説明したのと同じ脅威活動の継続であると考えています。このイベントでは、テキサス A&M システム サイバーセキュリティとのパートナーシップを活用して、活動に関する洞察を収集することができました。さらに、 Validinとの協力により、同社のグローバル スキャン インフラストラクチャを活用し、世界中の組織がこのキャンペーンの影響を受けていることが判明しました。次のレポートでは、REF3927 と呼ばれるこのアクティビティ クラスターで使用されるイベントとツールについて詳しく説明します。この活動は世界規模で活発に悪用されているため、防御者や組織の間でこの活動に対する認識を高めることが私たちの願いです。

重要なポイント

  • 脅威アクターは、公開されているマシンキーを使用して、誤って構成されたIISサーバーを悪用しています。
  • 侵害後の行動には、悪意のあるドライバーの使用、リモート監視ツール、資格情報のダンプ、Webシェルの展開、IISマルウェアなどが含まれます。
  • 脅威アクターは、オープンソースの「Hidden」ルートキットプロジェクトを利用して、自らの存在を隠蔽した。
  • 主な目的は、SEOクローキングとWebシェル機能を備えたTOLLBOOTHと呼ばれるIISバックドアをインストールすることであるようだ。
  • このキャンペーンには、地域や業種を超えた大規模な搾取が含まれていました。

キャンペーン概要

攻撃ベクトル

先月、Elastic Security Labs と Texas A&M System Cybersecurity は、誤って構成された Windows IIS サーバーに関連する侵入を調査しました。これは、以前インターネット上で公開されていた ASP.NET マシン キーで構成されたサーバーに直接関係していました。ASP.NET アプリケーションで使用されるマシン キーは、データの暗号化と検証に使用される暗号化キーを指します。これらのキーは、 ValidationKeyDecryptionKeyの 2 つの部分で構成され、 ViewStateや認証 Cookie などの ASP.NET 機能を保護するために使用されます。

ViewState ASP.NET Web アプリケーションが HTTP 要求間でページとそのコントロールの状態を保持するために使用するメカニズムです。HTTP はステートレス プロトコルであるため、 ViewStateページが送信され再度レンダリングされるときにデータを収集できます。このデータは、シリアル化され Base64 でエンコードされたページ上の隠しフィールド ( __VIEWSTATE ) に保存されます。このViewStateフィールドはデシリアライゼーション攻撃の影響を受けやすく、攻撃者がアプリケーションのマシン キーを使用してペイロードを偽造する可能性があります。これは、公開されているマシン キーを使用して Windows Web サーバーをターゲットとする日和見的なキャンペーンの一部であると考えられる理由があります。

以下は、オープンソースの .NET デシリアライゼーション ペイロードジェネレーターを使用して仮想環境で POST リクエストを介して実証された、このタイプのデシリアライゼーション攻撃の例です。__VIEWSTATEフィールドには、URL エンコードおよび Base64 エンコードされたペイロードが含まれており、 whoamiを実行してファイルをディレクトリに書き込みます。エクスプロイト要求が成功すると、サーバーはHTTP/1.1 500 Internal Server Errorで応答します。

侵害後の活動

ViewState インジェクションによる最初のアクセス時に、REF3927 は、永続的なアクセスを容易にするために、Godzilla シェル フレームワークを含む Web シェルを展開していることが確認されました。その後、権限を列挙し、独自のユーザー アカウントを作成しようとしましたが、失敗しました。アカウント作成の試みが失敗すると、攻撃者は GotoHTTP リモート監視および管理 (RMM) ツールをアップロードして実行しました。脅威アクターは管理者アカウントを作成し、Mimikatz を使用して資格情報をダンプしようとしましたが、Elastic Defend によって阻止されました。

侵入の範囲をさらに拡大する試みがブロックされたため、脅威の攻撃者は、アクセスを収益化する手段として、トラフィック ハイジャック IIS モジュール TOLLBOOTH を展開しました。攻撃者はまた、マルウェアを難読化するためにオープンソースの Hidden ルートキットの修正版を展開しようとしました。観測された侵入では、Elastic Defend により TOLLBOOTH とルートキットの両方の実行が阻止されました。

ゴジラEKP分析

このグループが使用する主なツールの 1 つは、 ekkoo-zによって作成されたZ-Godzilla_ekpと呼ばれる Godzilla フォーク フレームワークです。このツールは、AMSI バイパス プラグインなどの新機能を追加し、ネットワーク トラフィックを偽装してより正当なものに見えるようにすることで、以前の Godzillaプロジェクトに便乗しています。このツールキットを使用すると、オペレーターは ASP.NET、Java、C#、および PHP ペイロードを生成し、ターゲットに接続し、ネットワーク トラフィックを隠すためのさまざまな暗号化オプションを提供できます。このフレームワークは、次のような多くの機能を備えた GUI によって駆動されるプラグイン システムを使用します。

  • 検出/列挙機能
  • 権限昇格のテクニック
  • コマンド実行/ファイル実行
  • シェルコードローダー、メータープリター、メモリ内PE実行
  • ファイル管理、圧縮ユーティリティ
  • 認証情報窃取プラグイン ( lemon ) - FileZilla、Navicat、WinSCP、Xmanager の認証情報を取得します
  • ブラウザのパスワードスクレイピング
  • ポートスキャン、HTTPプロキシ設定、メモ作成

以下は、 Z-Godzilla_ekpを使用した Web シェル ( error.aspx ) へのオペレータ トラフィックを示すネットワーク トラフィックの例です。Web シェルは、HTTP POST 要求から Base64 でエンコードされた AES で暗号化されたデータを取得し、メモリ内で .NET アセンブリを実行します。これらのリクエストは、通常のネットワーク トラフィックに紛れ込むように、暗号化されたデータを HTTP POST パラメータに埋め込むことで偽装されます。

ルートキット分析

攻撃者はカーネル ルートキットを展開することで、感染したマシン上での存在を隠しました。このルートキットは、インターフェース文字列が中国語で書かれた HijackDriverManager というユーザーランド アプリケーションと連携して、ドライバーと対話します。この分析では、悪意のあるルートキットと、それが派生した元のオープンソース プロジェクト「Hidden」のコード両方を調査しました。内部的には、ルートキットをHIDDENDRIVER 、ユーザーランドアプリケーションをHIDDENCLIと呼び出しています。

この悪意のあるソフトウェアは、GitHub で何年も前から入手可能であったオープンソースのルートキットHiddenの改変版です。マルウェア作成者はコンパイル前に若干の変更を加えました。たとえば、ルートキットは Direct Kernel Object Manipulation (DKOM) を使用してその存在を隠し、侵害されたシステム上での永続性を維持します。コンパイルされたドライバのコンパイル パス文字列内にはまだ「hidden」が含まれており、「Hidden」ルートキット プロジェクトが使用されたことを示しています。

カーネルへの初期ロード時に、ドライバーは一連の重要な初期化手順を優先します。まず、次の 7 つの初期化関数を呼び出します。

  • InitializeConfigs
  • InitializeKernelAnalyzer
  • InitializePsMonitor
  • InitializeFSMiniFilter
  • InitializeRegistryFilter
  • InitializeDevice
  • InitializeStealthMode

ドライバー オブジェクトと関連フィールド (主要機能など) を設定する前に、内部コンポーネントを準備します。

次のセクションでは、これら 7 つの重要な初期化関数のそれぞれについて、その目的を詳しく説明します。

構成の初期化

ルートキットの最初のアクションは、 InitializeConfigs関数を実行することです。この関数の唯一の目的は、ユーザーランド アプリケーションによって設定される Windows レジストリ内のドライバーのサービス キーからルートキットの構成を読み取ることです。これらの値は抽出され、後でルートキットによって使用されるグローバル構成変数に格納されます。

次の表は、ルートキットがレジストリから抽出する構成パラメータをまとめたものです。

レジストリ名説明タイプ
Kbj_WinkbjFsDirs非表示にするディレクトリパスのリスト
Kbj_WinkbjFsFiles非表示にするファイルパスのリスト
Kbj_WinkbjRegKeys非表示にするレジストリキーのリスト
Kbj_WinkbjRegValues非表示にするレジストリ値のリスト
Kbj_FangxingImagesホワイトリストに登録するプロセスイメージのリスト
Kbj_BaohuImages保護するプロセスイメージのリスト
Kbj_WinkbjImages非表示にするプロセスイメージのリスト
Kbj_Zhuangtaiユーザーランドから設定されるグローバルキルスイッチブール
Kbj_YinshenModeこのフラグは、ルートキットがそのアーティファクトを隠す必要があることを示します。ブール

カーネルアナライザーの初期化

その目的は、カーネル メモリを動的にスキャンして、必要なPspCidTableActiveProcessLinksのアドレスを見つけることです。

PspCidTableプロセス ID とスレッド ID のテーブルとして機能するカーネルの構造体であり、 _EPROCESS構造体の下のActiveProcessLinks現在実行中のすべてのプロセスを接続する二重リンク リストとして機能します。これにより、システムはすべてのアクティブなプロセスを追跡および走査できるようになります。このリストからエントリを削除すると、 Process Explorerなどの列挙ツールからプロセスを非表示にすることができます。

PspCidテーブルの検索

ライブラリ PsLookupProcessByProcessIdZydis を使用して関数PspCidTable 逆アセンブルし、解析して アドレスを検索します。

アクティブプロセスリンクの検索

この関数は、 _EPROCESS構造体内のActiveProcessLinksフィールドのオフセットを決定します。さまざまな Windows バージョンに固有のハードコードされたオフセット値を使用します。ハードコードされた値を使用してActiveProcessLinksフィールドを検索する高速スキャン プロセスがあり、このフィールドは別の関数によって検証されます。ハードコードされた値で見つけられない場合は、ハードコードされた相対オフセットから開始して最大可能なオフセットまで総当たり方式を採用します。

PsMonitorの初期化

InitializePsMonitor ルートキットのプロセス監視および操作エンジンを設定します。これがプロセスを隠す能力の核心です。

まず、プロセスを除外、保護、および非表示にするための情報 (ルール) を保持する 3 つのAVL ツリー構造を初期化します。高速検索にはRtlInitializeGenericTableAvl使用し、構成からのデータを入力します。次に、一連のルールを使用してシステムを監視するために、さまざまなカーネル コールバックを設定します。

(ObRegisterCallbacks) を使用してオブジェクト マネージャー コールバックを登録します。

このフックはProcessPreCallback関数とThreadPreCallback関数を登録します。カーネルのオブジェクト マネージャーは、プロセスまたはスレッドへのハンドルを作成または複製する要求を完了する前に、このコードを実行します。

プロセスが別のプロセスのハンドルを取得しようとすると、コールバック関数ProcessPreCallbackが呼び出されます。まず、宛先プロセスが保護されたプロセス (リスト内) であるかどうかを確認します。その場合、アクセスを許可しない代わりに、アクセスがSYNCHRONIZE | PROCESS_QUERY_LIMITED_INFORMATIONに設定された保護されたプロセスに対する権限をダウングレードするだけです。

これにより、プロセスが保護されたプロセスと対話したり、検査したり、強制終了したりすることができなくなります。

同じメカニズムがスレッドにも適用されます。

プロセス作成コールバック(PsSetCreateProcessNotifyRoutineEx)

ルートキットは、プロセスの作成時にPsSetCreateProcessNotifyRoutineEx API を使用してコールバックを登録します。新しいプロセスが起動されると、このコールバックは、プロセスのイメージを構成されたイメージ パスのリストと照合する関数CheckProcessFlagsを実行します。次に、内部追跡テーブルにこの新しいプロセスのエントリを作成し、それに応じてexcludedprotected 、およびhiddenフラグを設定します。

フラグに基づく動作:

  • 除外
    • ルートキットはプロセスを無視し、期待どおりに実行させます。
  • 保護された
    • ルートキットは、 ProcessPreCallbackの場合と同様に、他のプロセスが特権ハンドルを取得することを許可しません。
  • 隠れた
    • ルートキットは、Direct Kernel Object Manipulation (DKOM) によってプロセスを隠します。プロセスの作成直後にプロセスのカーネル構造を直接操作すると、不安定になる可能性があります。プロセス作成コールバックでは、プロセスを非表示にする必要がある場合、ActiveProcessLinks リストからリンクが解除されます。ただし、以下で説明するpostponeHidingフラグが設定されます。

画像読み込みコールバック (PsSetLoadImageNotifyRoutine)

これは、実行可能イメージ( .exeまたは.dll )がプロセスのメモリにロードされるたびにカーネルが呼び出すPsSetLoadImageNotifyRoutineを使用してLoadProcessImageNotifyCallbackを登録します。

イメージがロードされると、コールバックはpostponeHidingフラグをチェックします。設定されている場合、 UnlinkProcessFromCidTable呼び出して、マスター プロセス ID テーブル ( PspCidTable ) からそれを削除します。

FSミニフィルターの初期化

この関数はFilterRegistration structure(FLT_REGISTRATION)でその機能を定義します。この構造は、どのタイプのファイル システム操作に対してどの関数を呼び出すかをオペレーティング システムに指示します。次のリクエストのコールバックを登録します。

  • IRP_MJ_CREATE: ファイルまたはディレクトリを開いたり作成したりするすべての試みをインターセプトします。
  • IRP_MJ_DIRECTORY_CONTROL: ディレクトリの内容を一覧表示する試みをすべて阻止します。

FltCreatePreOperation(IRP_MJ_CREATE)

これは操作前のコールバックであり、プロセスがファイルを作成/開こうとすると、この関数がトリガーされます。非表示にするファイルのリストと照らし合わせてパスをチェックします。一致が見つかった場合、IRP 要求の操作結果がSTATUS_NO_SUCH_FILEに変更され、プロセスが除外リストに含まれている場合を除き、要求元のプロセスにファイルが存在しないことが示されます。

FltDirCtrlPostOperation(IRP_MJ_DIRECTORY_CONTROL)

これは操作後のコールバックです。実装されたフックは基本的に、システムによって生成されたディレクトリ リスニングをインターセプトし、隠しファイルとしてリストされているファイルを削除して変更します。

レジストリフィルターの初期化

プロセスとファイルを隠した後、ルートキットの次のステップは、Windows レジストリからエントリを消去することです。InitializeRegistryFilter関数は、レジストリ操作をインターセプトして変更するためのレジストリ フィルタリング コールバックをインストールすることでこれを実現します。

ファイルの場合と同じ原理を使用して、 CmRegisterCallbackEx API を使用してコールバックを登録します。レジストリ キーまたは値が非表示のレジストリ リスト内にある場合、コールバック関数はステータスSTATUS_NOT_FOUNDを返します。

デバイスの初期化

InitializeDevice関数は必要なドライバの初期化を行い、ユーザーランドアプリケーションが直接通信できるようにIOCTL communicationを設定します。

以下は、ドライバーによって処理される各 IOCTL コマンドを説明する表です。

IOCTLコマンド説明
HID_IOCTL_SET_DRIVER_STATEマスターのオン/オフ スイッチとして機能するグローバル状態フラグを設定することにより、ルートキット機能をソフトに有効化/無効化します。
HID_IOCTL_GET_DRIVER_STATEルートキットの現在の状態 (有効/無効) を取得します。
HID_IOCTL_ADD_HIDDEN_OBJECT特定のファイル、ディレクトリ、レジストリ キー、または値を非表示にする新しいルールを追加します。
HID_IOCTL_REMOVE_HIDDEN_OBJECT一意の ID によって単一の非表示ルールを削除します。
HID_IOCTL_REMOVE_ALL_HIDDEN_OBJECTS特定のオブジェクト タイプ (レジストリ キー/値、ファイル、ディレクトリ) のすべての隠しオブジェクトを削除します。
HID_IOCTL_ADD_OBJECTイメージ パスに基づいてプロセスを自動的に非表示、保護、または除外するための新しいルールを追加します。
HID_IOCTL_GET_OBJECT_STATE特定の実行中のプロセスの現在の状態 (非表示、保護、または除外) を PID で照会します。
HID_IOCTL_SET_OBJECT_STATEこのコマンドは、PID によって識別される特定の実行中のプロセスの状態 (非表示、保護、または除外) を変更します。
HID_IOCTL_REMOVE_OBJECT一意の ID によって単一のプロセス ルール (非表示、保護、または除外) を削除します。
HID_IOCTL_REMOVE_ALL_OBJECTSこのコマンドは、特定のタイプのすべてのプロセス状態とイメージ ルールをクリアします。

ステルスモードの初期化

構成、プロセス コールバック、およびファイル システム フィルターを正常に設定した後、ルートキットは最終初期化ルーチンを実行します: InitializeStealthMode 。構成フラグKbj_YinshenModeが有効になっている場合、上記と同じ手法を使用して、レジストリ キー、 .sysファイル、その他の関連コンポーネントなど、ルートキットに関連付けられたすべてのアーティファクトが非表示になります。

コードのバリエーション

このマルウェアはHIDDENDRIVERソースコードをベースにしていますが、私たちの分析によりいくつかの小さな変更が確認されました。次のセクションでは、観察された注目すべきコードの違いについて詳しく説明します。

IsProcessExcluded関数の元のコードは、システム プロセス (PID 4) をルートキットの操作から一貫して除外します。ただし、提供されたスクリーンショットに示されているように、悪意のあるルートキットには追加のプロセス名の除外リストがあります。

システム情報 (ファイル、ディレクトリ、レジストリを含む) をフィルタリングするための元のコードのコールバックでは、 IsDriverEnabled関数を使用して、ドライバー機能が有効になっているかどうかを確認していました。ただし、観察されたルートキットは、ユーザーランド アプリケーションに対応するイメージ名 hijack を持つプロセスに対して追加の自動ホワイトリスト チェックを導入しました。

RMMの使用

GotoHTTP ツールは、侵害された IIS サーバーへのアクセスを容易に維持するために脅威の攻撃者によって導入された、正当なリモート監視および管理 (RMM) アプリケーションです。「ブラウザからクライアントへ」のアーキテクチャにより、攻撃者はすべてのトラフィックを GotoHTTP 独自のプラットフォーム経由でルーティングし、攻撃者自身のインフラストラクチャへの直接のネットワーク接続を防止することで、一般的な Web ポート ( 80 / 443 ) を介して任意の標準 Web ブラウザからサーバーを制御できます。

RMM は、サイバー キル チェーンの複数のポイントで使用され、さまざまな脅威アクターによって人気が高まり続けています。ほとんどのマルウェア対策ベンダーは、マルウェアを単独で悪意のあるものとは見なさないため、完全にブロックすることはありません。RMM C2 も、正当な RMM プロバイダーの Web サイトにのみ送信されるため、ネットワークベースの保護と監視に対して同様のダイナミクスを備えています。

現在アクティブな RMM の大量をブロックし、企業が推奨する RMM のみを許可することが、最適な保護メカニズムになります。ただし、このパラダイムを利用できるのは、適切な技術的知識、防御ツール、成熟した組織ポリシー、部門間の調整を備えた企業のみです。

IISモジュール分析

脅威の攻撃者は、悪意のある IIS モジュールである TOLLBOOTH の 32 ビット バージョンと 64 ビット バージョンの両方を展開していることが確認されました。TOLLBOOTH については、以前Ahnlabとセキュリティ研究者の@Azakaによって議論されました。このマルウェアの主な機能には、SEO クローキング、管理チャネル、公開アクセス可能な Web シェルなどがあります。ネイティブ バージョンと .NET マネージド バージョンの両方が実際に展開されていることが分かりました。

マルウェアの設定構造

TOLLBOOTH はhxxps://c[.]cseo99[.]com/config/<victim_HTTP_host_value>.json,から動的に設定を取得し、各被害者の JSON 設定ファイルの作成は脅威アクターのインフラストラクチャによって処理されます。ただし、 hxxps://c[.]cseo99[.]com/config/127.0.0.1.json応答し、分析対策チェックが不足していることを示しました。これにより、分析用に構成ファイルのコピーを取得できるようになりました。これはGitHub Gistで確認でき、必要に応じていくつかのフィールドの使用方法を参照します。

ネイティブ モジュールの場合、構成およびその他の一時キャッシュ ファイルは Gzip 圧縮され、ハードコードされたパスC:\\Windows\\Temp\\_FAB234CD3-09434-8898D-BFFC-4E23123DF2C\\にローカルに保存されます。管理対象モジュールの場合、これらはキーYourSecretKey123と IV 0123456789ABCDEFを使用して AES 暗号化され、Gzip 圧縮されてC:\\Windows\\Temp\\AcpLogs\\に保存されます。

ウェブシェル

TOLLBOOTH は/mywebdllパスで Web シェルを公開し、ファイルのアップロードとコマンドの実行にhack123456!のパスワードを要求します。フォームを送信すると、 POSTリクエストが/scjgエンドポイントに送信されます。

パスワードはバイナリにハードコードされており、この Web シェル機能は TOLLBOOTH のネイティブ バージョンのv1.6.0v1.6.1の両方に存在します。

ファイルアップロード機能には、 multipart/form-dataフィールドの順次的な順序依存の解析から生じるバグが含まれています。標準 HTML フォームは、ファイル入力フィールドがディレクトリ入力フィールドの前に表示されるように構成されています。リクエスト部分を処理するサーバーは、宛先ディレクトリの前にファイル データを処理しようとするため、依存関係の競合が発生し、標準のアップロードが失敗します。multipart/form-data個の部分を手動で並べ替えると、ファイルのアップロードを正常に実行できるようになります。

管理チャネル

TOLLBOOTH は、C2 オペレーターの管理/デバッグの目的で、いくつかの追加エンドポイントを公開します。これらにアクセスするには、ユーザー エージェントを次のいずれかに設定します (ただし、構成可能です)。

Hijackbot
gooqlebot
Googlebot/2.;
Googlébot
Googlêbot
Googlebót;
Googlebôt;
Googlebõt;
Googlèbot;
Googlëbot;
Binqbot
bingbot/2.;
Bíngbot
Bìngbot
Bîngbot
Bïngbot
Bingbót;
Bingbôt;
Bingbõt;

/healthエンドポイントは、モジュールの健全性を簡単に評価する方法を提供し、 c[.]cseo99[.]comに保存されている構成にアクセスするためのファイル名、ディスク容量情報、モジュールのインストール パス、および TOLLBOOTH のバージョンを返します。

/debugエンドポイントは、構成の概要、キャッシュ ディレクトリ、HTTP 要求情報など、より詳細な情報を提供します。

解析された構成は/confでアクセスできます。

/cleanエンドポイントを使用すると、オペレーターは、ローカルに保存されている構成ファイル ( clean?type=conf ) を削除して現在の構成をクリアし、被害者のサーバー上で構成を更新したり、マルウェアが使用するその他の一時キャッシュ ( clean?type=conf ) をクリアしたり、またはその両方 ( C:\\Windows\\Temp\\_FAB234CD3-09434-8898D-BFFC-4E23123DF2C\\パス内のすべて ( clean?type=all )) をクリアしたりできます。

SEOクローキング

TOLLBOOTH の主な目的はSEO クローキングです。SEO クローキングとは、キーワードに最適化されたコンテンツを検索エンジンのクローラーに提示しながら、一般ユーザーの閲覧からは隠し、ページの検索ランキングを高めるプロセスです。人間の訪問者がブーストされた検索結果のリンクをクリックすると、マルウェアは悪意のあるページまたは詐欺的なページにリダイレクトします。この戦術は、直接的なフィッシングなどの代替手段と比較して、悪意のあるページへのトラフィックを増やすのに効果的な方法です。なぜなら、ユーザーは迷惑メールよりも検索エンジンの結果を信頼するからです。

TOLLBOOTH は、構成で定義された値の User Agent ヘッダーと Referer ヘッダーをチェックすることで、ボットと訪問者を区別します。

ネイティブ モジュールとマネージ モジュールはどちらもほぼ同じように実装されています。唯一の違いは、ネイティブ モジュールv1.6.0v1.6.1ユーザー エージェントとリファラーの両方をseoGroupRefererMatchRulesリストに対してチェックしますが、.NET モジュールv1.6.1はユーザー エージェントをseoGroupUaMatchRulesリストに対してチェックし、リファラーをseoGroupRefererMatchRulesリストに対してチェックすることです。

現在の構成に基づくと、 seoGroupUaMatchRulesseoGroupRefererMatchRulesの値はそれぞれgooglebotgoogleになります。GoogleBot クローラーでは、ユーザー エージェントは一致しますが、リファラーは一致しません。一方、人間の訪問者では、リファラーは一致しますが、ユーザー エージェントは一致しません。bingyahoo両方を含むフォールバック リストを見ると、これらの検索エンジンも過去にターゲットにされていたことがわかります。

以下のコード スニペットは、検索エンジンのクローラーが認識する、キーワードを詰め込んだリンクで満たされたページを構築する役割を果たします。

モジュールは 2 つのフェーズでリンク ファームを構築します。まず、内部リンク密度を構築するために、 affLinkMainWordSeoResArr構成フィールドで定義されたリソース URI からランダムなキーワードのリストを取得します。各キーワードごとに、侵害された同じ Web サイト上の別の SEO ページを指す「ローカル リンク」が生成されます。次に、 affLinkSeoResArrフィールドから「アフィリエイト リンク リソース」を取得して外部ネットワークを構築します。これらのリソースは、TOLLBOOTH に感染している他の外部ドメイン上の SEO ページを指す URI のリストです。構成内の URI はhxxps://f[.]fseo99[.]com/<date>/<md5_file_hash><.txt/.html>のようになります。次に、モジュールは現在のサイトから他の被害者へのハイパーリンクを作成します。リンク ファーミングと呼ばれるこの手法は、侵害されたサイトのネットワーク全体で検索エンジンのランキングを人為的に高めるように設計されています。

以下は、TOLLBOOTH に感染した Web サーバーのランディング ページにアクセスしたときにクローラー ボットが表示する内容の例です。

SEO ページへの URL パス プレフィックスには、 seoGroupUrlMatchRules構成フィールドの単語またはフレーズが含まれています。これは、訪問者をターゲットとするサイト リダイレクト ロジックでも参照されます。現在、これらは次のとおりです。

  • stock
  • invest
  • summary
  • datamining
  • market-outlook
  • bullish-on
  • news-overview
  • news-volatility
  • video/
  • app/
  • blank/

SEO ページのテンプレートとコンテンツも、構成内のhxxps://f[.]fseo99[.]com/<date>/<md5_file_hash><.txt/.html>のような URI から外部的に取得されます。SEO ページの例を次に示します。

ユーザー リダイレクト ロジックでは、モジュールは最初に訪問者の IP アドレス、ユーザー エージェント、リファラー、SEO ページのターゲット キーワードなどのフィンガープリントを収集します。次に、この情報を POST リクエストを介してhxxps://api[.]aseo99[.]com/client/landpageに送信します。リクエストが成功した場合、サーバーはリダイレクトの宛先となる特定のlandpageUrlを含む JSON オブジェクトで応答します。

何らかの理由で通信が失敗した場合、TOLLBOOTH は同じ C2 エンドポイントを指す新しい URL の構築にフォールバックしますが、代わりに訪問者の情報を GET パラメータとして URL に直接エンコードします。最後に、選択された URL (成功した C2 応答またはフォールバックのいずれか) が JavaScript スニペット ( window.location.href ) に埋め込まれ、被害者のブラウザに送信され、即時リダイレクトが強制されます。

ページハイジャッカー

ネイティブ モジュールの場合、URI パスにxlbが含まれていると、TOLLBOOTH はスクリプト タグを含むカスタム ローダー ページで応答します。このスクリプトの src 属性は、難読化された次の段階の JavaScript ペイロードを取得するために使用される、動的に生成された URL mlxya[.]oss-accelerate[.]aliyuncs[.]com/<12_random_alphanumeric_characters>を指します。

難読化解除されたペイロードは、URL にある特定のトリガー キーワード (例: xlbhmxlb ) に基づいて実行されるページ置換ツールのようです。トリガーされると、 asf-sikkeiyjga[.]cn-shenzhen[.]fcapp[.]run/index/index?href=またはask-bdtj-selohjszlw[.]cn-shenzhen[.]fcapp[.]run/index/index?key=にある攻撃者が制御するエンドポイントの 1 つに接続し、現在のページの URL を Base64 でエンコードされたパラメータとして追加して、侵害されたサイトを識別します。次に、スクリプトはdocument.write()を使用して現在のページの DOM を完全に消去し、サーバーの応答に置き換えます。執筆時点では最終的なペイロードを取得できませんでしたが、この手法は、攻撃者が制御するコンテンツ (最も一般的なのは悪意のある HTML ページまたは別の悪意のあるサイトへの JS リダイレクト) を挿入するように設計されています。

キャンペーンのターゲティング

TOLLBOOTH とそれに関連する Web シェルの分析中に、アクティブおよびセミパッシブな収集方法を通じて追加の被害者を特定するための複数のメカニズムを特定しました。

その後、私たちは Validin @SreekarMad と提携し、彼の専門知識とスキャンインフラストラクチャを活用して、より包括的な被害者リストを作成する取り組みを行いました。

公開時点では、 571 の IIS サーバー被害者がアクティブな TOLLBOOTH 感染にかかっていることが確認されました。

これらのサーバーは世界中に分散されており (以下に説明する 1 つの大きな例外を除く)、特定の業界に明確に分類されることはありません。これらの理由と、攻撃活動の規模の大きさから、攻撃対象は限定されておらず、公開されているマシン キーを再利用している IIS サーバーを特定するために自動スキャンが活用されていると考えられます。

Validin および Texas A&M System Cybersecurity との協力により、追加の TOLLBOOTH 感染被害者に関する大量のメタデータが得られました。

自動化されたエクスプロイトも使用される可能性があるが、TAMUS Cybersecurity は、エクスプロイト後のアクティビティは対話型であるように見えると指摘した。

Validin は、SEO ファーミング リンク構成を通じてリンクされた、感染の可能性がある他のドメインを発見しましたが、Web シェル インターフェイスをチェックしたところ、一部ではアクセスできないことがわかりました。これらのサーバーに対して手動でさらに詳細な調査を実施した結果、実際には TOLLBOOTH に感染していたものの、所有者が問題を解決したか、攻撃者が撤退したことが判明しました。

その後のスキャンで、同じサーバーの多くが再感染していることが判明しました。これは、修復が不完全であったことを示していると解釈しました。1 つのもっともらしい説明は、脅威を除去するだけでは、マシン キーの再利用によって残された脆弱性が解消されないということです。したがって、この最後のステップを省略した被害者は、同じメカニズムによって再感染する可能性が高くなります。詳細については、以下の「REF3927 の修復」セクションを参照してください。

地理

被害者の地理的分布を見ると、中国国内のサーバーが除外されていることが分かります。香港で 1 台のサーバーが特定されましたが、 .co.ukドメインをホストしていました。このジオフェンシングは、自国のシステムを標的にしないためのメカニズムを実装する他の犯罪脅威の行動パターンと一致していると考えられます。これらの国の政府は、外国人を標的とした犯罪行為を全面的に支持しないまでも、見て見ぬふりをする傾向があるため、これによって訴追のリスクが軽減される。

ダイヤモンドモデル

Elastic Security Labs は、ダイヤモンド モデルを使用して、敵、機能、インフラストラクチャ、侵入の被害者間の高レベルの関係を記述します。ダイヤモンドモデルは単一の侵入で最も一般的に使用され、アクティビティスレッド(セクション8)を活用してインシデント間の関係を作成しますが、敵対者中心(セクション7.1.4)このアプローチでは、単一のダイヤモンドが許可されます。

REF3927の修復

感染自体の修復は、クリーンな状態に戻したり、マルウェアや永続化メカニズムに対処したりするなど、業界のベスト プラクティスを通じて完了できます。しかし、潜在的な自動スキャンと悪用に直面して、再利用されたマシン キーの脆弱性は、サーバーを乗っ取ろうとする悪意のある人物にとって依然として残ります。

したがって、修復には、マシン キーを適切に生成された新しいキーにローテーションすることが含まれる必要があります。

まとめ

REF3927 キャンペーンは、公開されているマシン キーの使用などの単純な構成エラーが、重大な侵害につながる可能性があることを浮き彫りにしています。この事件では、テキサス A&M 大学システムのサイバーセキュリティと影響を受けた顧客が迅速に行動してサーバーを修復しましたが、当社の調査によると、同じ手法で標的にされた被害者は他にもいるようです。

脅威アクターによるオープンソース ツール、RMM ソフトウェア、悪意のあるドライバーの統合は、彼らの活動において成功が実証されている手法の効果的な組み合わせです。公開されている IIS 環境の管理者は、マシン キーの構成を監査し、堅牢なセキュリティ ログを確保し、潜在的なインシデント発生時にElastic Defendなどのエンドポイント検出ソリューションを活用する必要があります。

検知のロジック

検出ルール

予防ルール

YARA署名

Elastic Security は、REF3927 で観察されたマルウェアを防ぐために、次の YARA ルールを作成しました。

MITRE ATT&CK 経由の REF3927

Elasticは、 MITRE ATT&CK フレームワークを使用して、脅威がエンタープライズネットワークに対して使用する一般的な戦術、手法、手順を文書化します。

戦術(Tactics)

戦術は、テクニックまたはサブテクニックの理由を表します。 それは敵の戦術的な目標であり、行動を実行する理由です。

手法

手法は、敵対者がアクションを実行することによって戦術的な目標を達成する方法を表します。

観測

この研究では以下の観察可能な事柄について議論されました。

すぐれた監視性タイプ名前参考
913431f1d36ee843886bb052bfc89c0e5db903c673b5e6894c49aabc19f1e2fcSHA-256のWingtbCLI.exe隠しクリ
f9dd0b57a5c133ca0c4cab3cca1ac8debdc4a798b452167a1e5af78653af00c1SHA-256のWinkbj.sys隠しドライバー
c1ca053e3c346513bac332b5740848ed9c496895201abc734f2de131ec1b9fb2SHA-256のcaches.dll料金所
c348996e27fc14e3dce8a2a476d22e52c6b97bf24dd9ed165890caf88154edd2SHA-256のscripts.dll料金所
82b7f077021df9dc2cf1db802ed48e0dec8f6fa39a34e3f2ade2f0b63a1b5788SHA-256のscripts.dll料金所
bd2de6ca6c561cec1c1c525e7853f6f73bf6f2406198cd104ecb2ad00859f7d3SHA-256のcaches.dll料金所
915441b7d7ddb7d885ecfe75b11eed512079b49875fc288cd65b023ce1e05964SHA-256のCustomIISModule.dll料金所
c[.]cseo99[.]comドメイン名TOLLBOOTH 設定サーバー
f[.]fseo99[.]comドメイン名TOLLBOOTH SEOファーミング設定サーバー
api[.]aseo99[.]comドメイン名TOLLBOOTH クローラーレポートとページリダイレクター API
mlxya[.]oss-accelerate.aliyuncs[.]comドメイン名TOLLBOOTH ページハイジャッカー ペイロード ホスティング サーバー
asf-sikkeiyjga[.]cn-shenzhen[.]fcapp.runドメイン名TOLLBOOTH ページハイジャッカー コンテンツ取得サーバー
ask-bdtj-selohjszlw[.]cn-shenzhen[.]fcapp[.]runドメイン名TOLLBOOTH ページハイジャッカー コンテンツ取得サーバー
bae5a7722814948fbba197e9b0f8ec5a6fe8328c7078c3adcca0022a533a84feSHA-256の1.aspxGodzilla フォーク Webshell (VirusTotal からの類似サンプル)
230b84398e873938bbcc7e4a1a358bde4345385d58eb45c1726cee22028026e9SHA-256のGotoHTTP.exeHTTPへ移動
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101213 Opera/9.80 (Windows NT 6.1; U; zh-tw) Presto/2.7.62 Version/11.01 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36ユーザーエージェントIIS ViewStateインジェクションによる攻撃中に観察されたユーザーエージェント

参照資料

上記の研究を通じて、以下のことが参照されました。

補遺

HarfangLab はこの記事が公開されたのと同じ日に、この脅威に関する調査草稿を掲載しました。そこには、さらに補足的な洞察が含まれています。

この記事を共有する