サイバー犯罪
新たな攻撃グループ「Water Labbu」による暗号資産窃取の手口:不正な分散型アプリ(DApp)を侵害して利用
トレンドマイクロでは、暗号資産を窃取する新たな攻撃グループ「Water Labbu」の存在を確認しました。当該グループは、他の暗号資産詐欺グループが運営するWebサイトを侵害して利用する点で特徴的です。
トレンドマイクロでは、暗号資産を窃取する新たな攻撃グループ「Water Labbu」の存在を確認しました。当該グループは、他の暗号資産詐欺グループが運営するWebサイトを侵害して利用する点で特徴的です。通常の暗号資産詐欺では、まず攻撃者が被害者に接触を試み、言葉巧みに相手を信用させる「ソーシャルエンジニアリング」を駆使することで、暗号資産の送金許可を引き出します。今回のWater Labbuも、暗号資産ウォレットへのアクセス権やトークン利用の承認を被害者から引き出した上で、これまで同様の手法によって暗号資産を窃取します。しかし、警戒心の低いユーザを信頼させる際に必要なソーシャルエンジニアリングについては、Water Labbu自身では実施せず、代わりに他の暗号資産詐欺グループが実施した成果を盗用する手口が用いられています。
Water Labbuの戦略は、他の暗号資産詐欺グループが展開する不正な分散型アプリ(DApp)のWebサイトに寄生することであり、当該Webサイトに自身で用意した攻撃用のJavaScriptをインジェクトします。寄生先となった元の暗号資産詐欺グループが用いる手口については、法執行機関からの注意喚起で解説されています。
こうしたWebサイトに登録された暗号資産ウォレットに多額の残高が含まれている場合、インジェクトされたJavaScriptのペイロードによって、送金許可のリクエストが被害者側に提示されます。このリクエストは当該Webサイトが本来発行するものに偽装され、被害者のウォレットからテザー(USDT)をほぼ無制限で送金する許可(トークン利用の承認)を要求する内容となっています。なお、USDTは米ドルと1:1で連動するステーブルコインの1つとして知られています。
上述の偽装手段により、被害者はリクエストが確かにDAppから発行されたものと信じ込み、送金許可の詳細情報を十分に精査しない可能性があります。しかし、このリクエストによって送金許可を得るのは、被害者が想定する大元の暗号資産詐欺グループ(不正なDApp用Webサイトの運用者)ではなく、Water Labbuです。承認を得たWater Labbuは、被害者のウォレットからUSDTの全額を盗み出すことが可能になります。
本稿執筆時点で、Water Labbuの侵害を受けた不正な暗号資産関連のDApp用Webサイトは、計45件が確認されています。また、これらのWebサイトでは、「Lossless Mining Liquidity Pledge Free」の詐欺に使用されたサイトと類似するスタイルやテーマが用いられていました。
イーサリアムのブロックチェーン上でWater Labbuのアドレスに紐付く取引履歴を解析した結果、当該グループは少なくとも9件の被害者から計316,728 USDT以上の暗号資産を窃取したことが判明しました。
以降、不正なDApp用Webサイトの暗号資産情報を乗っ取るためにWater LabbuがインジェクトしたJavaScriptコードの仕組みについて解説した上で、Water Labbuが同サイトを侵害した方法を示す手がかりについても取り上げます。
暗号資産を盗む手口の分析
冒頭でも述べた通り、Water Labbuが用いた手口は、不正なDApp用Webサイトの侵害と、JavaScriptコードのインジェクションを伴います。対象とされたDApp用Webサイトはカスタム式のテンプレートによって生成されるようであり、図3に示すアナウンスメッセージ欄は、あるURLへのHTTPリクエストに対して返却されるJSONオブジェクトの内容が埋めこまれるようです。図4のJSONオブジェクトでは、Webサイトへの埋め込み用データが、キー「helper」に対応する値として格納されています。そのうちの1件目は明らかにWater Labbuがインジェクトしたデータであり、Base64でエンコードしたスクリプトを実行させる内容となっています。
今回の例では、IMGタグがWater Labbuによってインジェクトされ、そのタグの中では、JavaScriptのイベント「onError」を契機に起動するペイロードがBase64でエンコードされていました。この手口は、クロスサイトスクリプティング(XSS:Cross Site Scripting)の検知を回避する技術として知られています。インジェクトされたペイロードは別のスクリプトを内部的に生成します。この生成されたスクリプトは配布用サーバであるtmpmeta[.]comに接続し、さらに別のスクリプトをダウンロードします。この際、配布用サーバ側では、接続元のIPアドレスやブラウザのヘッダー情報「User-Agent(被害者の環境を推定するために使用)」に応じて被害者の環境を判別し、結果に応じて異なったスクリプトを返却します。
配布用サーバによるスクリプトの返却について、下記の挙動が確認されました。
- 被害者の端末がAndroidまたはiOSの場合、配布用サーバは、暗号資産の窃取に必要な第一段目のスクリプトを返却する
- 被害者の端末がWindowsデスクトップ環境の場合、配布用サーバは、被害者に不正な実行ファイルをダウンロードするように求める偽のFlashアップデート案内文を表示するスクリプトを返却する
特筆事項として、この配布用サーバは多重アクセス回避の仕組みを備え、同じIPアドレスからのスクリプト要求が短時間で立て続けに発生した場合は、別のスクリプトを返却します。具体的に、同一IPアドレスからのアクセスが過去2、3時間の間にすでにあった場合や、被害者の端末種別がその他特定の条件に適合した場合には、簡単な情報窃取用スクリプトを返却します。このスクリプトは、標的端末上でクッキー情報やWebブラウザのローカルストレージ情報を窃取し、配布用サーバ側に送信します。
暗号資産窃取用スクリプト:第一段目
はじめに、イーサリアム用ライブラリ「web3.js」が読み込まれます。本ライブラリには、被害者が保有するウォレットへの接続に必要な第一段目のコードが含まれています。ただし、実際に接続が行われるのは、侵害されたDApp用Webサイトに被害者のウォレットが登録されている場合に限られます。ウォレットに接続することで、被害者が持つイーサリアムのアドレスや残高情報を取得できるようになります。本スクリプトは、さらにテザー(USDT)のスマートコントラクトともやり取りを行い、被害者が持つUSDTの残高情報を取得します。ウォレットに含まれる残高が0.001 ETH以上、または1 USDT以上である場合、情報収集用サーバのlinkstometa[.]comに残高情報とアドレス情報をHTTPプロトコルで送信します。
ウォレットの残高情報を送信する際のアドレスを下記に示します。
hxxps[:]//linkstometa[.]com/data/?get&s=[%22{ETHの残高}%22,%22{USDTの残高}%22]&j={イーサリアム用アドレス}
暗号資産窃取用スクリプト:第二段目
情報収集用サーバに送信した残高情報が0.005 ETH以上かつ22,000 USDT以上の場合は、第二段目のスクリプトが被害者側に返却されます。それ以外の場合は空のペイロードが返却され、当該の被害者に対しては何も行われません。二段目のスクリプトは、これで3度目となる残高チェック処理を行った上で、トークン利用の承認を被害者に要求します。
トークン利用の承認とは、被害者側の暗号資産を利用したり取引を確定するための権限を、指定された攻撃者側の暗号資産アドレスに付与することに該当します。今回の不正なスクリプトは、限度額10^32 USDTによるトークン利用の承認を被害者に要求しますが、この額はブロックチェーン上で有効なUSDTトークンの総額をはるかに超過した値です。承認依頼のデータが作成されると、被害者側の端末では暗号資産ウォレット用アプリによってダイアログが表示され、内容を精査した上で承認するように促されます。ここで被害者が十分に注意することなくトークン利用を承認した場合、Water Labbu側では被害者のウォレットに含まれる全USDTを送金することが可能になります。
ブロックチェーンにおける取引履歴の分析
Water Labbuの活動履歴を調査した結果、トークン利用の承認および送金用途として2つの暗号資産アドレスが繰り返し用いられていたことが判明しました。
下記のような第1のアドレスは、被害者からトークン利用の承認を最初に受けたものです。
0xd6ed30a5ecdeaca58f9abf8a0d76e193e1b7818a
当該アドレスは2022年8月の時点で、被害者と予想される別のアドレスから7度に渡ってUSDTの回収に成功しています。取引履歴によると、この際に送金種別「Transfer From」が使用されました。ここで回収されたUSDTの暗号資産は下記のような第2のアドレスに送られます。
0x3e9f1d6e244d773360dce4ca88ab3c054f502d51
そこからさらに以下のような別の2つのアドレスに送金されたことが分かりました。
0x486d08f635b90196e5793725176d9f7ead155fed
0xfc74d6cfdf6da90ae996c999e12002090bc6d5bf
2022年6月以降、Water Labbuのスクリプトからもう1つの新しい下記のアドレスが確認されました。Water Labbuはこのアドレスを用いて2つのアドレスからUSDTを回収し、暗号資産の両替サービス「Uniswap」を用いてUSD Coin(USDC)に、次いでETHに両替した後、暗号資産ミキシングサービス「Tornado Cash」に送金しました。
0xfece995f99549011a88bbb8980bbedd8fada5a35
2022年8月時点で、Water Labbuによって盗まれたUSDTの総額は316,728 USDTであり、被害者数は計9件であることが分かりました。
偽Flashによる感染チェーンの分析
被害者がWindowsデスクトップ端末からDApp用Webサイトにアクセスした場合、配布用サーバのtmpmeta[.]comからは、Webブラウザのクッキーやローカルストレージ情報を窃取するスクリプトが返却されます。さらにwhg7[.]ccやr8s[.]ccといった別の配布用サーバからも追加のスクリプトが送りつけられます。このうち、r8s[.]ccから送られるのは最終段階のスクリプトであり、偽のFlashインストール案内をDApp用Webサイト上にオーバーレイで表示します。この案内には、Flash Playerのサポートが2020年9月14日をもって終了したこと、当該サイトの閲覧には最新バージョンのダウンロードが必要である旨が簡体中国語で記載されます。
上述のオーバーレイ表示されたダウンロードリンクの接続先は、予想されるように、正規のインストーラではなく、GitHubリポジトリ「flashtech9/Flash」に配備された別のファイル「flashupdate_v_3.10.exe」です。ダウンロードされるファイルの内容は、中国の企業「Yangzhou Third Eye Software Technology」が開発した従業者監視用ソフトウェア「Third Eye」のインストーラです。
結論
Water Labbuは、他の暗号資産詐欺グループが運営する不正なWebサイト上に自身の攻撃用スクリプトをインジェクトすることにより、暗号資産を盗み出しました。こうした手口からは、他の攻撃グループによる活動の成果を自身の目的のために流用しようというWater Labbuの姿勢がうかがえます。幸い、Water Labbuによるこうした攻撃を防ぐ上では、従来からのセキュリティ・ベストプラクティストが有効に機能します。
ユーザの方は、信頼性を確認できない投資の誘いに対して常に警戒することを推奨します。また、未知の暗号資産プラットフォーム上で暗号資産の取引を行うことは、そのプラットフォームの正当性や、そこで何がどのように行われるのかを十分に確認できない限り、避けるべきです。さらに、取引の詳細情報(トークン利用の上限額)を十分に精査した上で、内容の正当性や相手の信頼性について確認することを推奨します。
次回のブログエントリでは、Water Labbuが攻撃に用いたテクニックや、オープンソースフレームワーク「Electron JS」で作られたアプリケーションを書き換える手口など、当該グループが展開する感染チェーンに関する新たな発見事項について報告します。
侵入の痕跡(Indicators of Compromise、IoC)
侵入の痕跡(IoC)はこちらで確認してください。
参考記事:
• 「Water Labbu Abuses Malicious DApps to Steal Cryptocurrency」
By: Daniel Lunghi, Jaromir Horejsi
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)