IIStealer:ECサイトの決済情報を標的にした攻撃とサーバー側の脅威
ESETは、IIS Webサーバーの脅威に関するブログを連載します。第1回目は、Webサーバーのトランザクションを傍受してクレジットカード情報を盗む悪意のあるIIS拡張機能について解説します。
ESETは、IIS Webサーバーの脅威に関するブログを連載します。第1回目は、Webサーバーのトランザクションを傍受してクレジットカード情報を盗む悪意のあるIIS拡張機能について解説します。
ESETの研究者は、ECサイトで顧客の決済情報を盗むことを目的にしている、これまで検出・文書化されていなかったトロイの木馬を検出・分析しました。ESETは、このトロイの木馬をIIStealerと命名しました。ESETのセキュリティソリューションではWin64/BadIISとして検出されます。
IIStealerは、マイクロソフト社のWebサーバーソフトウェアであるIIS(Internet Information Services)に悪意のある拡張機能として実装されます。IIStealerはサーバーの一部として組み込まれ、サーバーを通過するすべてのネットワーク通信にアクセスし、攻撃者にとって価値の高いデータ(今回のケースではECサイトの決済情報)を盗み出します。
図 1に示すように、IIStealerは、特定のURIパスに対するHTTP POSTリクエストを標的として、セキュリティが侵害されたサーバーとそのクライアント(販売側と購入側)間の通常のトラフィックを傍受します。IIStealerは、/checkout/checkout.aspxまたは/checkout/Payment.aspxのURIのパスを標的にします。
正規のユーザーがWebサイトにアクセスし、これらのチェックアウトページ(1)にリクエストを行うと、IIStealerはHTTPリクエストのボディをログファイル(2)に記録します。この時、正規のWebサイトのコンポーネント(3)により生成されるHTTP応答には一切影響を与えません。
攻撃者は、セキュリティが侵害されているIISサーバーに特殊なHTTPリクエストを行うことで、収集したデータを取得します。IIStealerは、X-IIS-Dataヘッダーに攻撃者のパスワードが含まれている特定のURI(/privacy.aspx)へのリクエストを検出すると(4)、そのリクエストに対するHTTP応答に収集したデータを埋め込みます(5、6)。
IIStealerはこれらの機能を使用して、サードパーティのペイメントゲートウェイを使用していないECサイトに送信されたクレジットカード情報を盗み出します。通信チャネルでSSL/TLSが使用されていても、また、暗号化されていても、IIStealerの攻撃を受けると、これらのトランザクションの安全性は確保されません。このマルウェアはサーバーが処理するすべてのデータにアクセスできます。これは、クレジットカード情報は暗号化されない状態のままサーバーで処理されるためです。
ESETが分析したこのマルウェアの検体では、チェックアウトページのURIがハードコードされていることから、特定のECサイトを攻撃するように設計されていると考えられます。ESETのテレメトリ(監視データ)によると、2020年9月から2021年1月までの間に、米国にある数台のIISサーバーが攻撃対象となっていましたが、これはESETが監視しているIISサーバーが限定されていることが影響している可能性があります。これらのIISサーバーでは、管理者がセキュリティソフトウェアを使用しないケースが依然として一般的です。
IIStealerは、悪意のあるネイティブIISモジュールとして実装されます。C++ DLLは、侵害されたIISサーバーの%windir%system32\inetsrv\フォルダにドロップされ、%windir%system32\inetsrv\config\ApplicationHost.configファイルで設定されます。IIStealerはdir.dllという名前で展開され、図 2に示すように、偽造されたVERSIONINFOリソースを使用して、dirlist.dllという正規のWindows IISモジュールになりすます場合もあります。
これはIISモジュールであるため、IIS Webサーバーへのリクエストを処理するIISワーカープロセス(w3wp.exe) によってIIStealerが自動的にロードされます。これがIIStealerが常駐化し、受信したリクエストを処理できる仕組みです。
このマルウェアの拡散方法については不明点が多くありますが、IISのネイティブモジュールとしてインストールするためには管理者権限が必要であることから、最初のセキュリティ侵害となっている可能性があると考えられます。これはWebアプリケーションまたはサーバー自体の構成上の弱点や脆弱性が原因となっている可能性があります。
技術的な特徴としては、IIStealerはCHttpModule(モジュールクラス)から継承したコアクラスを実装し、CHttpModule::OnPostBeginRequestメソッドを悪意のあるコードでオーバーライドします。他のIISネイティブモジュールと同様に、IIStealerはRegisterModuleという名前の関数をエクスポートします(図 3を参照)。ここでモジュールクラスをインスタンス化し、メソッドをサーバーイベントに登録します。具体的には、サーバーが受信したHTTPリクエストの処理を開始するときに毎回生成されるRQ_BEGIN_REQUESTイベント後通知に登録します。これにより、新しいリクエストが発生すると毎回OnPostBeginRequestメソッドが呼び出され、IIStealerがリクエストの処理に関与するようになります。
IIStealerは、OnPostBeginRequestハンドラでリクエストのURIによって受信したHTTPリクエストをフィルタリングします。checkout/checkout.aspxまたはcheckout/Payment.aspxに送信されたすべてのPOSTリクエストは、そのHTTPボディと一緒にC:WindowsTemp\cache.txtファイルに記録されます。これらのリクエストは、セキュリティが侵害されたECサイトにアクセスした正規のユーザーが実行したものであり、個人情報やクレジットカード番号などの機密情報が含まれている可能性があります。
収集したデータは、攻撃者が特別に細工したHTTPリクエストを介して外部に送信される場合があります。このリクエストのX-IIS-Data HTTPヘッダーにはハードコードされた32バイトの英数字のパスワード(ここでは公開しません)が設定され、マルウェアの検体で指定される以下のURLパスに送信されます。
o /privacy.aspx
o /checkout/Payment.asp
この悪意のあるモジュールが、このようなリクエストを検出すると、IHttpResponse::Clearメソッドを使用して、IISサーバーが用意したHTTPレスポンスを削除し、図 4に示したように、IHttpResponse::WriteEntityChunks API関数を使用して、暗号化されていないログファイルのコンテンツをHTTPレスポンスのボディにコピーします。
これにより、IIStealerのオペレーターは、侵害されたIISサーバーに特別なリクエストを送信するだけで、収集したデータにアクセスし、データを入手できます。このマルウェアは別のC&Cチャネルを追加したり、C&Cサーバーのドメインを構成に組み込んだりする必要はありません。
IIStealerはサーバー側の脅威であり、セキュリティが侵害されたECサイトと顧客との間の通信を傍受し、機密性の高い決済情報を窃取します。この悪意のあるIISモジュールは、認証情報なども標的にします。SSL/TLSは、クライアントとサーバー間のデータ転送を保護するために不可欠ですが、IIStealerはサーバーの一部として組み込まれており、この攻撃シナリオを防ぐことはできません。Webポータルを管理している組織にとって、認証情報や決済情報などアクセスしたユーザーのデータを保護しなければならないため、これは気がかりな問題です。
IIStealerなどの脅威に対してIISサーバーを強固にするには、以下の方法があります。
Web開発者側の対策WebサービスがホストされているIISサーバーを管理できなくても、特にセキュリティ侵害が発生した場合にWebサービスのユーザーへの影響を軽減する対策を講じることができます。
ユーザー側の対策:ECサイトにアクセスするユーザーは、IISサーバーのセキュリティが侵害されているかどうかを知ることはできませんが、以下のヒントを参照してリスクを軽減してください。
今回説明したマルウェア、セキュリティ侵害の痕跡、YARAルールに関する技術的な詳細については、ESETのホワイトペーパーや GitHubを参照してください。この問題に関するお問い合わせや検体の提供については、threatintel@eset.comまでご連絡ください。
このブログ連載では、ESETの研究者がIIS Webサーバーで検出した一連の脅威について特集します。今回は連載の第一弾です。第2弾は、サイバースパイやSEO詐欺に使用されている悪意のあるIIS拡張機能について説明します。
IISマルウェアの検出、分析、削除の方法については、詳細を解説したホワイトペーパー「ネイティブIISマルウェアの解析」(英語のみ)を参照してください。
ESETの検出名
Win64/BadIIS.F
Win64/BadIIS.O
SHA-1
706EAB59C20FCC9FBC82C41BF955B5C49C644B38
7A2FA07A7DC05D50FE8E201A750A3DC7F22D6549
A1C5E7424E7C4C4C9902A5A1D97F708C6BB2F53A
ファイル名とパス
dir.dll
isapicache___.dll
isapicache_.dll_の
C:\Windows\Temp\cache.txt
ネットワークの侵害の痕跡
対象のURI
/checkout/checkout.aspx
/checkout/Payment.aspx
/privacy.aspx
HTTPヘッダー
X-IIS-Data
注:この表は、MITRE ATT&CKフレームワークのバージョン9を使用して作成されています。
手法 | ID | 名前 | 説明 |
---|---|---|---|
リソース開発 | T1587.001 | 能力の開発マルウェア | IIStealerは、独自に作成されたマルウェアファミリーです。 |
実行 | T1569.002 | システムサービス:サービスの実行 | 拡張機能のIIStealerによって、IISサーバーは、Windowsサービスとして常駐します。 |
常駐化 | T1546 | イベントトリガーによる実行 | IIStealerは、IISサーバーがHTTPリクエストを受信したときに、IISワーカープロセス(w3wp.exe)によってロードされます。 |
防衛の回避 | T1036.005 | なりすまし:正規のモジュールの名前や場所を模倣する | IIStealerは、 dirlist.dllという正規のMicrosoft IISモジュールになりすますために、dir.dllという名前で展開されます。 |
T1027 | ファイルや情報の難読化 | IIStealerは、文字列による検出を回避するために、文字列を積み重ねる手法を使用しています。 | |
認証情報へのアクセス | T1056 | 入力情報の取得 | IIStealerは、IISサーバーとそのクライアント間のネットワークトラフィックを傍受し、クレジットカードの詳細などの機密情報を収集します。 |
収集 | T1119 | 自動収集 | IIStealerは、受信したHTTPリクエストから、クレジットカード情報などの情報を自動的に収集します。 |
T1074.001 | データの保存:ローカルデータの保存 | IIStealerは、収集した情報を保存するためにローカルファイルを使用します。 | |
C&C(コマンド&コントロール) | T1071.001 | アプリケーションレイヤープロトコル:Webプロトコル | 攻撃者は、IIStealerを管理するために、セキュリティを侵害したIISサーバーにHTTPリクエストを送信します。 |
外部への送信 | T1041 | C2チャネルからの送信 | IIStealerは、C&Cチャネルを使用して、収集したデータを外部に送信します。攻撃者は、セキュリティを侵害したIISサーバーにHTTPリクエストを送信します。 |