APT&標的型攻撃
Webメールシステムにバックドアを設置して情報を窃取する「Earth Wendigo」の攻撃手法
トレンドマイクロは、台湾の政府機関、研究機関、大学など複数の組織をターゲットとする新しいキャンペーンを確認しました。2019年5月から開始していたこのキャンペーンは、台湾で広く利用されているWebメールのシステムにJavaScriptのバックドアを設置し対象組織のメールを窃取していました。過去に確認されている攻撃グループとの明確な関連性がないことから、トレンドマイクロはこれを実施した攻撃者を 「Earth Wendigo(アース ウェンディゴ)」と名付けました。
トレンドマイクロは、台湾の政府機関、研究機関、大学など複数の組織をターゲットとする新しいキャンペーンを確認しました。2019年5月から開始していたこのキャンペーンは、台湾で広く利用されているWebメールのシステムにJavaScriptのバックドアを設置し対象組織のメールを窃取していました。過去に確認されている攻撃グループとの明確な関連性がないことから、トレンドマイクロはこれを実施した攻撃者を 「Earth Wendigo(アース ウェンディゴ)」と名付けました。標的型攻撃においては、台湾で確認された攻撃手法がその後に日本で確認されることも多く、国内利用者も注視すべき事例と言えます。
■侵入と拡散活動
この攻撃は、難読化されたJavaScriptが添付されたスピアフィッシングメールから始まります。メールの受信者がWebメールのページでメールを開くと、添付されたJavaScriptが攻撃者のサーバから不正なスクリプトを読み込みます。このスクリプトは以下の不正動作を行うように設計されています。
- ブラウザのCookieやWebメールのセッション鍵を窃取し、攻撃者のサーバに送信する
- 不正なスクリプトを電子メールの署名に追加して、受信者の連絡先に感染拡大する
- Webメールシステムのクロスサイトスクリプティング(XSS)脆弱性を悪用して、Webメールのページに不正なJavaScriptを注入する
- クライアントとサーバ間のHTTPSリクエストをJavaScriptで傍受・操作できるWebブラウザの機能である「Service Worker」に不正なJavaScriptコードを登録する。登録されたスクリプトは、攻撃者が上述のXSSの脆弱性を悪用できなかった場合にログイン認証情報を乗っ取り、Webメールのページを変更して不正なスクリプトを追加することを可能にする。(なお、Service Worker を利用した実際の攻撃を確認したのは今回が初となる)
■メールボックスの抽出
XSSインジェクション、あるいはService Workerを利用してシステムに侵入した後、攻撃チェーンの次の段階となるメールボックスの抽出を開始します。
Earth Wendigoは、JavaScriptのバックドアを介して攻撃対象のシステムと攻撃者のサーバの間にWebSocket接続を確立します。攻撃者はブラウザに注入されたバックドアに対して、Webメールサーバから電子メールを読み取った上でその電子メールの内容と添付ファイルを攻撃者のWebSocketサーバに送り返すよう指示します。攻撃チェーンの詳細については、次の段落で解説します。
攻撃対象は、ショッピングサイトからの割引クーポン付き広告を偽装したスピアフィッシングメールを受け取ります。このメールには難読化された不正なJavaScriptが埋め込まれています。このメールによって不正なスクリプトを直接実行するのではなく、Webメールシステムの検索サジェスト機能を利用してWebページで不正なスクリプトが実行されるように仕向けます。これは、静的なセキュリティ検出を回避するために行われます。
メールは、CSS関数の「backgroup-image」を介してWebメールシステムに複数のメール検索要求を生成します。その際、検索キーワードとして不正なコードを使用し、頻繁に検索されるキーワードとしてシステムに登録させます。次に、新たに「embed」というHTML要素を作成し、Webメールサーバ上でキーワード「java」を検索して検索サジェストの結果を読み込みます。
返されたサジェスト結果は最初のステップで検索されたJavaScriptのコードで、今度は間接的に読み込まれ、不正なコードの実行に使用されます。このアプローチにより、攻撃者は不正なコードをCSS要素内に隠蔽し、静的解析を採用したセキュリティソリューションによる検出を回避します。この段階の最後に、コードは別の新しいスクリプト要素を作成し、攻撃者のサーバから他の不正なJavaScriptコードをロードします。
興味深いことに、この他にも攻撃者のサーバから不正なコードを読み込むために不正なJavaScriptコードを下部に注入しているメールが多数見つかりました。しかし、これらのメールはフィッシングメールではなく、同じ組織内の他のユーザから送られた本物のメールのように見えました。
この件について調査を進めると、攻撃者が不正コードの注入によって攻撃対象のメール署名を改変していたことが判明しました。つまり、改変されたメール署名を使って送信したすべてのメールの末尾には不正なコードが付加されることになり、その結果、通常のメールにも不正なコードが注入されていることが判明しました。攻撃者はこの手法を用いて、攻撃対象ユーザの連絡先へとさらなる感染拡大を試みたと考えられます。
ユーザがメール内の不正なスクリプトを実行するとすぐに、Cookieを窃取するスクリプトが配信され、ブラウザ上で起動されます。このスクリプトは、Webメールのセッション鍵が埋め込まれたラッパーページである「/cgi-bin/start」へのリクエストを生成します。その後、スクリプトはページからセッション鍵を抽出すると同時にブラウザのCookieを収集します。
スクリプトは、収集したすべての鍵とCookieをクエリストリングに付加したHTTP GETリクエストをサーバに送信し、収集した情報を転送します。このようなXSS攻撃スクリプトを配信・管理するためのフレームワークは、「XSSER.ME」または 「XSSフレームワーク」と呼ばれています。窃取されたセッション鍵やブラウザのCookieもフレームワークに送信され、データベースに保存されます。
窃取されたセッション鍵により、攻撃者は攻撃対象のWebメールシステムにパスワードなしでログインすることが可能になりますが、これがEarth Wendigoの攻撃の最終目標ではありません。
■メールアカウントへの感染
上述の方法で不正なコードを最初に実行した後、攻撃者は不正なスクリプトが攻撃対象に常に読み込まれ実行されるようにするための細工を実行していました。
攻撃者は2種類の感染方法を用意していました。1つは、WebメールシステムのXSSの脆弱性を利用してWebページに不正なコードを注入する方法です。この脆弱性は、Webメールのフロントページにユーザがリンクを作成することができるWebメールシステムのショートカット機能の中に存在します。
攻撃者は、XSS脆弱性を利用してWebメールシステムからのオリジナルスクリプトの一部を不正なJavaScriptコードに置き換えることで、細工されたペイロードを持つショートカットを追加することができます。これが成功すると、ターゲットは不正なショートカットが追加されたWebメールのページにアクセスするたびに、不正なコードを読み込むことになります。
なお、この感染はシステム上のすべてのユーザに同様の影響を与えるものではなく、感染したメールアカウントを持つユーザにのみ影響を与えます。Webメールシステムを開発した会社に報告したところ、2020年1月以降、この脆弱性は修正されているとの連絡がありました。最新バージョンのWebメールシステムを使用している場合影響はないと考えられます。
■Service Workerスクリプトの悪用
攻撃対象を感染させるためのもう一つの方法は、不正なJavaScriptをService Workerスクリプトに登録することです。Service Workerは、ネットワークに接続されていない間WebサイトやWebアプリケーションが通信を処理するための拡張レイヤーを提供するブラウザ内のプログラム可能なネットワークプロキシです。Service Workerのセキュリティリスクについては、PoCや学術研究の両方で議論され、実証されています。
Earth Wendigoの攻撃で使用される不正スクリプトの1つを調査したところ、改ざんされたService WorkerスクリプトをWebメールサーバが提供するオリジナルのスクリプトに偽装してアップロードしていることがわかりました。そして、アップロードされたスクリプトをユーザのService Workerに登録し、登録後すぐにサーバから削除しています。
登録された Service Worker スクリプトは、傍受されたリクエストの URL パスを確認し、さまざまな応答を行います。
- Webメールのユーザログイン認証用APIでありユーザ名とパスワードが含まれる「/cgi-bin/login」に送られたHTTPS POSTリクエストに対しては、Service Workerスクリプトがユーザ名とパスワードをコピーして攻撃者のサーバに送信する
- Webメールのメインページを表示するためのラッパーページである「/cgi-bin/start」に送られたリクエストに対しては、Service Workerスクリプトは改ざんされたページをターゲットに送信して応答する。この新しいページは、元のラッパーとほぼ同じであるが、Earth Wendigoのサーバから不正なスクリプトを読み込むためのscript要素が注入されている。そのため、ターゲットは、不正なService Workerがバックグラウンドで有効になっているWebメールサーバにアクセスするたびに、置き換えられたラッパーページで不正なスクリプトを読み込むことになる
■電子メールの窃取
Earth Wendigoは攻撃の最後に、攻撃者のサーバへWebSocket接続を作成し、サーバから返されたスクリプトを実行するJavaScriptコードを配信します。返されたスクリプトは、攻撃者のWebSocketサーバから指示を受けるバックドアであることが確認できました。このスクリプトには「get('URL') 」という1つのコマンドしかなく、攻撃対象のブラウザからWebメールサーバへのリクエストを実行し、その応答を攻撃者のWebSocketサーバに返して収集します。今回確認されたバックドアの用途は、メールボックスの抽出です。
以下はメールボックス抽出の典型的フローです。
- WebSocket サーバがユーザのブラウザ上で実行されるバックドアのスクリプトを返す
- バックドアは、Webメールのセッション鍵、ブラウザのCookie、Webページの場所、および ブラウザのユーザエージェント文字列を WebSocket サーバに送り返し、ターゲットの情報を登録する
- WebSocketサーバがコマンド「get('/cgi-bin/folder_tree2?cmd=...')」を送信して、ターゲットのメールアカウント下にある既存のメールボックスのリストを取得する
- WebSocketサーバはコマンド「get('/cgi-bin/msg_list?cmd=...')」を送信して、窃取したいメールボックス内のメールのリストを取得する
- WebSocket サーバは、コマンド「get('/cgi-bin/msg_read?cmd=pring_mail&...')」を送信して、前段階にある応答に記載されている電子メールを読み取る。これによってメールボックスからメールを順次読み取り、WebSocket サーバに返送される
- 窃取した電子メールに添付ファイルがある場合、WebSocketサーバは、「get('att:/cgi-bin/downfile/...')」というコマンドを送信して、Webメールサーバから該当する添付ファイルを取得し、4096バイトの塊に分割してWebSocketサーバに返送する
攻撃対象ユーザのメールボックスの全部を受信するまで、上述の手順が繰り返し実行されます。
■その他の調査結果
Earth Wendigoは、Webメールサーバへの攻撃以外にも複数のマルウェアを使用していました。これらのマルウェアはPythonで書かれWindowsの実行ファイルとしてコンパイルされており、今回の攻撃で使用されたものと同じ不正なドメインと通信します。
これらのマルウェアの多くはシェルコードローダであり、商用ペネトレーションテストツールであるCobalt Strikeの一部と思われる埋め込みシェルコードを読み込みます。その中には、コマンド&コントロール(C&C)サーバと通信して、追加のPythonコードを要求・実行するバックドアもあります。しかし、弊社でマルウェアを検証した際にはすでにサーバがダウンしていたため、どのようなコードが配信されたのかはわかっていません。また、どのようにしてターゲットに配信されたのかも明らかになっていません。
■結論
Earth Wendigoは、典型的なスピアフィッシングの手法を用いて攻撃を開始する一方で、メール署名の操作やServiceWorkerの感染など、珍しい手法も複数用いて標的となる組織に侵入します。別の調査の結果からは、この攻撃者は他にも不正なリンクを挿入したスピアフィッシング(標的型)メールをチベットやウイグル地域および香港における運動を支援する政治家や活動家などに送信していたこともわかりました。これは、今回本ブログで取り上げている台湾での攻撃活動とは別の一連の攻撃です。いずれにせよ、Earth Wendigoは特徴的な攻撃手法を用いてアジアの複数の国で活動を行っている攻撃者と言えます。トレンドマイクロでは引き続きその活動に注視してまいります。
■被害に遭わないためには
スピアフィッシング攻撃による被害は、不審な送信元から送られてきたメールを開かないようにするなど、セキュリティのベストプラクティスに従うことで最小限に抑えることができます。また、脆弱性を悪用する攻撃を防ぐために、サーバを最新のバージョンに更新しておくことも重要です。
本記事で紹介したようなXSS攻撃を防ぐためには、Webサイトにコンテンツポリシー(Content-Security-Policy、CSP)を適用することをお勧めします。
■侵入の痕跡(Indicators of Compromise 、IoCs)
侵入の痕跡(Indicators of Compromise、IoCs)は、こちらを参照してください。
参考記事:
• 「Earth Wendigo Injects JavaScript Backdoor for Mailbox Exfiltration」
By: Trend Micro
翻訳:室賀 美和(Core Technology Marketing, Trend Micro™ Research)