キヤノンMJ/サイバーセキュリティ情報局

検索エンジンの結果ページを操作するトロイの木馬「IISerpent」を解説

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はキヤノンマーケティングジャパンが提供する「サイバーセキュリティ情報局」に掲載された「検索エンジン最適化(SEO)を悪用し、サードパーティのウェブサイトを上位表示させるトロイの木馬「IISerpent」」を再編集したものです。

 ESETの研究者は、サーバーサイドのトロイの木馬を新たに発見し分析しました。このトロイの木馬は、セキュリティを侵害したウェブサイトのレピュテーションをハイジャックして、検索エンジンの結果を操作します。このトロイの木馬は、IIS(Internet Information Services)ウェブサーバーの悪意のある拡張機能として実装され、検索エンジンの結果ページ(SERP)を操作するいかがわしい手法を使用するという2つの特徴から、IISerpentと命名されました。IISerpentのオペレータは、検索エンジン最適化(SEO)に関するさまざまな手法を使用して、サードパーティのウェブサイトページの検索ランキングを上位に表示させます。これらのウェブサイトを管理しているサードパーティは、この犯罪組織に報酬を支払っている可能性があります。

攻撃の概要

 IISerpentは、マイクロソフト社のウェブサーバーソフトウェアであるIISに悪意のある拡張機能として実装および構成されます。このため、このマルウェアはセキュリティが侵害されたサーバーがホストしているウェブサイトへのすべてのHTTPリクエストを傍受できるだけでなく、サーバーのHTTPレスポンスを改変することも可能です。これまでに連載したブログでは、ECサイトの顧客からクレジットカード情報を窃取するIIStealerや、侵害されたIISサーバー上でバックドアコマンドを実行するIISpyなどのIISマルウェアファミリーについて説明しました。

 これらのIISマルウェアファミリーとは異なり、IISerpentは感染したサーバーにもサーバーのユーザーにも直接影響を与えません。実際、このマルウェアは、侵害したウェブサイトの正規ユーザーのすべてのリクエストは完全に無視します。IISerpentは、侵害したサーバーに送信されたすべてのHTTPリクエストを傍受および解析して、特定の検索エンジンのクローラーから発信されたリクエストだけを検索します。図 1に示すように、IISerpentはこれらのリクエストをC&Cサーバーにリレーして(またはローカルの構成を使用して)、これらのクローラーに提供されるコンテンツを改変します。

図1:IISerpentの仕組み

SEO詐欺

 この仕組みの目的とは?検索エンジンは、定期的にインターネットをクロールし、ネット上のすべてのコンテンツのインデックス(レコード)を作成し、検索ワードとコンテンツの関連性を構築し、さまざまなアルゴリズムによって特定の検索ワードに対する検索結果順位を算出します。

 検索エンジンの結果ページでページの表示ランキングを上位にするためには、広告を購入したり、 検索エンジン最適化 (SEO)戦略を取り入れたりなど、さまざまな合法的な方法を用いることができますが、すべてのデジタルマーケティングの担当者がルールを遵守しているわけではありません。非倫理的なSEO (過去にはブラックハットSEOと呼ばれていました)とは、無関係なキーワードでページをロードしたり、ウェブサイトの評価を高めるために被リンクを購入したりするようなSEOブースト手法を指しますが、これらの手法は、ウェブマスターのガイドラインに違反します。

 IISerpentの攻撃パターンは、これらの非倫理的なSEO手法が採用されています。ウェブマスターの同意なしにサードパーティの利益のために、侵害されたIISサーバー上でSEO詐欺の手法を実行しているため、「サービスとしてのSEO詐欺」と表現できます。IISerpentのオペレータは、このマルウェアを使用して侵害されたウェブサイトのランキングに寄生し、サードパーティのウェブサイトのページ検索順位を高めるために、以下の手法を利用します。

・検索エンジンを攻撃者が選択する特定のウェブサイトにリダイレクトして、侵害されたウェブサイトを事実上のドアウェイページにする。

・被リンクのリスト(あらかじめ構成したリスト、またはC&Cサーバーからその都度取得するリスト)を検索エンジンのクローラー用のHTTPレスポンスに注入し、IISerpentによって侵害されたサーバーをリンクファームにする。

 図2に示したシナリオの例では、攻撃者がIISerpentを使用して多数のIISサーバーを侵害し、そのマルウェアの機能を使用してこれらのサーバーがホストしているすべてのウェブサイトに被リンクを挿入します。1~Nまでのウェブサイトは評価の高い正規のサイトです。検索エンジンのクローラーから見ると、これらのウェブサイトはすべて、攻撃者が選択したウェブサイト(この場合は詐欺サイト)にリンクしています。そのため、この詐欺サイトは、評価の高いウェブサイトとリンクしているため、人気があるように見え、ページの検索順位が上昇する可能性があります。

図2:SEO詐欺の仕組みの例

 なお、セキュリティが侵害されたサーバーへアクセスした正規ユーザーには、要求したコンテンツが提供されるため、ユーザーやウェブマスターは、サーバーで問題が発生していることに気づかない恐れがあります。この点が、侵害されたサイトに人為的に被リンクを挿入するほかのマルウェアファミリーとIISerpentが異なる点です。IISerpentは、サーバーの拡張機能として動作することで、通常のユーザーに提供されるコンテンツに干渉せずに、検索エンジンのクローラーに変更した情報を提供できます(すべてのユーザーに表示される形で、不正な被リンクを追加して、侵害したウェブサイトを恒久的に修正するマルウェアとは対照的です)。

 もちろん、侵害されたIISサーバーでホストされ悪用されたウェブサイトは、このスキームから全く利益を得ることができません。それどころか、通常のユーザーに表示されるサイトとは異なるウェブサイトを表示して検索エンジンのクローラーを欺くことは、ウェブマスターガイドラインに違反しており、これらのウェブサイトは検索エンジンによるペナルティを受け、SEOの統計値が下がってしまう可能性もあります。

技術的な分析

 IISerpentは、IISのネイティブモジュールであり、C++ DLLとして実装され、 %windir%system32\inetsrv\config\ApplicationHost.configファイルで構成されます。これにより、IISerpentは常駐化とコマンド実行が可能となります。すべてのIISモジュールは、IISワーカープロセス(w3wp.exe)によってロードされ、受信したHTTPリクエストを処理するために使用されます。

 IISerpentマルウェアのオペレータが、IISサーバーに最初に侵入する方法については不明ですが、IISのネイティブモジュールとして構成するためには 管理者権限が必要であることから、可能性があるシナリオを絞り込むことができます。ウェブアプリケーションまたはサーバーの構成上の弱点や脆弱性が原因となっている可能性があります。

 ほかのIISネイティブモジュールと同じように、IISerpentはRegisterModuleという関数をエクスポートします(図3を参照)。この関数は、モジュールを初期化します。悪意のあるコア機能は、イベントハンドラ に隠されており、特定のサーバーイベントで呼び出されるモジュールクラス(CHttpModuleから継承)のメソッドになっています。具体的には、IISerpentのコードクラスは、OnBeginRequestメソッドとOnSendResponseメソッドをオーバーライドしており、IISサーバーが受信したHTTPリクエストの処理を新たに開始するときに、また、レスポンスバッファを送信するときに、必ずこのマルウェアのハンドラが呼び出されます。

図3:IISerpentによるDLLエクスポート

 IISerpentは、受信したリクエストを解析し、複雑な構成データを使用して、検索エンジンのクローラーに提供されるコンテンツを操作します。表1に詳細を掲載していますが、この構成にはリダイレクトURLや挿入する被リンクのリストなどのフィールドが含まれています。攻撃者は、侵害したIISサーバーにHTTPリクエストを送信するときに、リクエストURIにクエリパラメータとして?DisplayModuleConfig=1または?ReloadModuleConfig=1をそれぞれ指定することで、マルウェアの構成を表示または更新できます。

 IISerpentは、更新リクエストを受信すると、このURLにHTTP GETリクエストを送信して、C&Cサーバーから構成を取得します。

・http://sb.qrfy[.]net/mconfig/<host>.xml

 の値は、攻撃者の元のリクエストから取得されており、おそらく被害者のIDとして使用されています。libcurlライブラリがネットワーク通信に使用されています。

構成フィールド コメント
banip IPアドレスのリスト。このマルウェアは、このリストにあるIPアドレスのHTTPリクエストを無視します。
redirectreferer バイナリフラグ - Refererヘッダーにspider、bot、baidu.com/の文字列が含まれるリクエストを処理する場合に設定します。
onlymobilespider バイナリフラグ - RefererヘッダーにAndroidまたはAppleWebKitという文字列が含まれるクローラーリクエストのみを処理する場合に設定します。
redirect これらの値が設定されている場合、すべてのクローラーのリクエストを、HTTP 301レスポンスを介して構成済みのURLにリダイレクトします。
redirecturl
proxy これらの値が設定されている場合、検索エンジンのクローラーのリクエストをC&Cサーバーに転送し、クローラーを悪意のあるURLに直接リダイレクトするのではなく、HTTPレスポンスを取得したデータと置換します。
proxyurl
proxymode
folderlink これらの値が設定されている場合、User-Agentヘッダーにspiderまたはbotという文字列が含まれているHTTPリクエストのレスポンスへの被リンクとしてこれらの値をすべて追加します。
folderlinkcount
folderlinkpath
proxyfolder
locallink
locallinkext
locallinkfolder
locallinkcount

表 1. IISerpentが使用する構成フィールド

 IISerpentは、図 4に示すように、User-Agentヘッダーを解析して特定の部分文字列を検索して、検索エンジンのクローラーのリクエストを認識します。redirecturlフィールドが構成されている場合、マルウェアはHTTPレスポンスでLocationヘッダーを設定して、User-Agentヘッダーにspiderまたはbotという文字列が含まれるすべてのリクエストをこのURLにリダイレクトします。HTTPステータスは301 (“Moved Permanently”)に設定されます。

図4. IISerpentは、User-Agentヘッダーを解析して、検索エンジンのクローラーのリクエストを認識する

 proxymodeが設定されている場合、IISerpentはクローラを悪意のあるURLにリダイレクトするのではなく、クローラのリクエストをC&Cサーバーのproxyurlに転送し、HTTPレスポンスボディを取得したデータと置換します。これは、Refererヘッダーにspider、bot、baidu.com/が含まれるすべてのHTTPリクエストに適用されます。また、RefererヘッダーにAndroidまたはAppleWebKitという文字列が含まれるリクエストにも適用される場合があります。さらに、このマルウェアは以下のように構成できます。

・IISサーバーがレスポンスステータスを404に設定しているHTTPリクエストのみを処理する

・禁止リストにあるIPアドレスのリクエストを無視する

 最後に、IISerpentには、構成済みのリンクリストを設定でき、検索エンジンのクローラーのリクエストのHTTPレスポンスボディにこれらのリンクを追加できます。これらのリンクは、既存のHTTPレスポンスボディにHTMLエンティティとして追加されます。

<a href='/<link><timestamp1>_<timestamp2>_<randomId>.html'></a>

注記するべきそのほかのマルウェア

 IISerpentだけが、SEO詐欺の機能がある悪意のあるIISモジュールではありません。ホワイトペーパー 「ネイティブIISマルウェアの解析」(英語のみ)に記載してある、ESETが分析した14のマルウェアファミリーのうちの6つのマルウェアがSEO詐欺の手法を取り入れていました。これらのマルウェアファミリーでは、SEO詐欺の機能がほかの悪意のある機能(バックドアのサポートや、ウェブサイトへの正規のユーザーに悪意のあるコンテンツを提供するなど)とバンドルされていることが多くあります。

 IISerpentを最初に検出したのは2021年5月ですが、SEO詐欺については、2019年にSecpulseがIISサーバーに影響を与える新しいマルウェアに関するインシデントレポートを中国語で公表した最初の攻撃の事例まで遡って追跡できました。IISerpentマルウェアの分析とSEO詐欺の機能については、ESETホワイトペーパーのグループ9のカテゴリで説明しています。

 ESETでは、さまざまなSEO詐欺マルウェアファミリーを分析してきました。これらのSEO詐欺マルウェアが使用する非倫理的なSEO手法も多様であり、さまざまな検索エンジンクローラーを対象にしています。平文で指定するもの(ホワイトペーパーのグループ12、図5を参照)、暗号化されたリストとして指定するもの(グループ9)、C&Cサーバーのホスト名のDNS TXTレコードを照会してオンザフライで取得する(グループ11)手法があります。これらのファミリーはすべて、ESETのセキュリティソリューションによってWin32/BadIISとして検出されます。

図5:IISマルウェアが検索エンジンクローラーのリクエストを識別するために使用する文字列の例

 これらのIISマルウェアファミリーの詳細については、ESETのホワイトペーパーを参照してください。

結論

 IISerpentは、通常とは標的および目的が異なる悪意のあるIISモジュールであり、サードパーティのウェブサイトの検索順位を上げることを目的に操作を支援するために設計されています。セキュリティが侵害されたサーバーにアクセスした正規のユーザーに影響はありませんが、検索結果を不正に操作されマネタイズの恐れもあるため、注意が必要です。

 IISerpentは、侵害されたウェブサイトの評判をハイジャックするだけではありません。非倫理的なSEO対策の対象となるウェブサイトは、検索エンジンのアルゴリズムによるペナルティが課せられる恐れもあり、デジタルマーケティングの担当者にとっては放置できない問題です。IISerpent(およびそのほかのIISマルウェア)のリスクを防止する最善策は、IISサーバーを最新の状態に保ち、信頼できないソースからはIIS拡張機能をダウンロードしないように注意することです。特に、魔法のように検索結果を向上させるなどとあり得ない約束をするモジュールには注意してください。保護をさらに強化するためには、ウェブアプリケーションファイアウォールや、IISサーバーのセキュリティソリューションの使用を検討してください。

 そのほかのリスクの緩和策やセキュリティ侵害の指標については、ESETのホワイトペーパーGitHubhttps://github.com/eset/malware-ioc/tree/master/badiisを参照してください。

 このブログ連載では、ESETの研究者がIIS ウェブサーバーで検出した一連の脅威について特集します。今回は連載の最終回です。第一弾と第二弾では、サイバー犯罪とサイバースパイ活動に悪用されているIISマルウェアについて説明しました。IISマルウェアの検出、分析、削除の方法については、詳細を解説したホワイトペーパー「ネイティブIISマルウェアの解析」(英語のみ)を参照してください。ホワイトペーパーではIISerpent(グループ13)についても詳しく説明しています。

セキュリティ侵害の痕跡(IoC)

ESETの検出名
 Win32/BadIIS.H

SHA-1
 D0F274EBD2A0636FEF9D9C48A7AC2FAD7B661653

ファイル名
 stati.dll

ネットワークの侵害の痕跡 
 URLのクエリパラメータ
 ?DisplayModuleConfig=1
 ?ReloadModuleConfig=1

C&Cサーバー
 http://sb.qrfy[.]net

MITREのATT&CK手法

注:この表は、MITRE ATT&CKフレームワークのバージョン9を使用して作成されています。

手法 ID 名前 説明
リソース開発 T1587.001 能力の開発マルウェア IISerpentは、独自に作成されたマルウェアファミリーです。
実行 T1569.002 システムサービス:サービスの実行 拡張機能のIISerpentによって、IISサーバーは、Windowsサービスとして常駐します。
常駐化 T1546 イベントトリガーによる実行 IISerpentは、IISサーバーがHTTPリクエストを受信したときに、IISワーカープロセス(w3wp.exe)によってロードされます。
C&C(コマンド&コントロール) T1071.001 アプリケーションレイヤープロトコル:ウェブプロトコル 攻撃者は、IISerpentを管理するために、セキュリティを侵害したIISサーバーに特別なクエリパラメータと一緒にHTTPリクエストを送信します。
影響 T1565.002 データの操作:送信データの操作 IISerpentは、侵害したサーバーから検索エンジンのクローラーに提供されるコンテンツを変更します。