Advisory
本物の Binance リンクを使う「認証コード」SMS 詐欺
あるユーザーから、まったく身に覚えのない Binance の認証コードと、正真正銘の Binance ドメイン上のリンクを含む SMS が 2 通届いたとの報告を受けました。リンクは本物、短縮 URL は Binance 自身のもの、そして最終的に開くページはあなたに何ひとつ入力を求めません。この連鎖を最後まで解読し、なぜ偽の認証コードこそが最も巧妙な部分なのかを解説します。
- 初回公開
- 2026-08-20 00:00 UTC
- 最終更新
- 2026-09-29 13:27 UTC
s.binance.com の短縮リンク3本はすべて 404 を返します——本稿の執筆時点では生きていたものです。ただし、ドメインに何が起きたかについて私たちは間違っていました。停止された、消えたと書きましたが、削除されてはいません。レジストリはこれらを clientHold に加えて4つの禁止状態で保持しており、これは停止であって、登録自体は 2027年8月の期限まで続きます。そしてすべてを貫く一点:送金先アドレスが空であることは、依然として誰も被害に遭わなかったことを意味しません。私たちが間違っていた点を参照してください。30日後の再確認 — 生の記録
2026-09-29に検証。これらのドメインに対する2つのWHOISサーバーは同じことを言っておらず、その差異が上記の訂正そのものです。
レジストラのWHOISは単語ひとつを返すだけで、記録がまったくありません。以下が whois.ownregistrar.com が3つそれぞれに返す応答本文の全体です。
Terminated
フィールドもステータスコードもなく、RFCの形をまったくしていません。「Terminated」はOwnRegistrar社内の製品用語であり、レジストリの状態ではありません——EPPにそのようなステータスは存在しません。私たちはこれをレジストリの状態を述べたものとして引用しましたが、そうではありませんでした。
レジストリのWHOISが本当の記録を返します。whois.verisign-grs.com より、3つとも同じ形です。
Domain Name: COM73184.COM
Registrar: OwnRegistrar, Inc. Registrar IANA ID: 1250
Registrar Abuse Contact: abuse@ownregistrar.com +1.2124016235
Creation Date: 2026-08-21T21:45:28Z
Updated Date: 2026-08-26T09:10:06Z
Registry Expiry: 2027-08-21T21:45:28Z
Domain Status: clientDeleteProhibited
Domain Status: clientHold
Domain Status: clientRenewProhibited
Domain Status: clientTransferProhibited
Domain Status: clientUpdateProhibited
Name Server: A.DNSPOD.COM
Name Server: C.DNSPOD.COM
DNSSEC: unsigned
cdn378129.com 登録 2026-08-20T13:31:11Z 期限 2027-08-20T13:31:11Z 更新 2026-08-26T09:10:06Z
bnbshort.com 登録 2026-08-22T08:14:03Z 期限 2027-08-22T08:14:03Z 更新 2026-08-26T09:10:05Z
com73184.com 登録 2026-08-21T21:45:28Z 期限 2027-08-21T21:45:28Z 更新 2026-08-26T09:10:06Z
この記録から、「停止」が覆い隠していた3点が導かれます。
DNSがない理由はclientHoldです。委任は無傷で、DNSPodのネームサーバー2台はいまも記録に載っています。レジストラは登録を削除したのではなく、ゾーンからドメインを外しました。したがって解決は失敗しますが、登録自体は続いています。再び解決するまでステータス変更ひとつの距離です。運用者にその変更はできません。clientUpdateProhibited と clientTransferProhibited が、自分のドメインから彼らを締め出しています。
この停止の形は、キャンペーンより長く持つよう意図的に設計されています。clientRenewProhibited と clientDeleteProhibited は、更新も早期の解放もできないことを意味します。期限まで凍結され、その後ドロップします。削除はむしろ弱い措置でした。削除されたドメインは約75日で再取得可能なプールに戻るからです。期限まで保持されたこの3つは、2027年8月20〜22日まで市場に出ません。これを決めた者は強い側を選びました。
措置は私たちの検証より4日前に行われていました。3つの Updated Date はすべて1秒以内に収まります——2026-08-26 UTC の 09:10:05 と 09:10:06 です。私たちは結果を8月30日として記録し、それが発生時点であるかのように書きました。実際にはスクリプト化され、3つ同時に適用され、私たちが見た時点ですでに4日が経っていました。
未解決のまま残るもの
ミニプログラムの appId xoqXxUSMRccLCrZNRebmzj——すべてのドメインより長く生き延びた構成要素であり、この記事が3つのアドレスではなく仕組みについて書かれている理由です。侵害指標で名指しした2つの mp-cms ページは、認証のないリクエストにはいずれも HTTP 202 を返します。これはページではなくボット対策です。稼働の有無はサインイン済みのBinanceアプリ内部からしか観測できないため、この経路が閉じられたかどうかを私たちはどちらとも述べられません。30日を経てなお未解決の問いであり、そして本当に重要なのはこれです。
あるユーザーから、数時間の間隔を置いて届いた二通のテキストメッセージが転送されてきました。どちらも Binance のセキュリティ通知に見えました。どちらにも、本当に、検証可能な形で Binance 自身が所有するドメインのリンクが記載されていました。
私たちはチェーンを分解しました。その終端にあるのは偽のログインページではありません。Binance アプリ内でサインイン済みのときに到達すると、貯蓄を償還し、保有するすべての残高を Bitcoin に変換し、攻撃者がハードコードしたアドレスへの出金を申請するスクリプトです。パスワード、コード、シードフレーズのいずれも求めません。どれも必要ないからです。
この記事ではチェーン全体を記録します。よくある助言である「ドメインを確認する」では、ここでは身を守れないからです。ドメインは本物です。
メッセージ
これらが最初の二通です。以下のすべてを書き終えた後、三十六時間たってから、同じ Binance Mini Program からさらに二通届きました — それらは 再び現れ、何も変わっていなかった に掲載しています。
この時点ですでに注目すべき点が二つあります。
コードは異なります — 780641 と 366812 — が、リンクは同一です。本物のワンタイムコードは、本物のリクエストに結び付いています。これらは飾りであり、以前受け取ったことのあるメッセージに見えるよう、送信ごとに生成されています。
二通目のメッセージは、標準的な書き言葉の中国語ではなく、口語の広東語 で書かれています。誰かが 香港 の読者向けに意図的にローカライズしました。これについては後で触れます。payload 自体もローカライズされており、キャンペーンの標的が誰かを示しているためです。
「ドメインを確認する」が通用しない理由
この件を報告した人は DNS とドメインインフラストラクチャに詳しく、それでも危うくクリックするところでした。ここを深刻に受け止める必要があります。その人は正しい確認を行い、そのすべてに問題がなかったからです:
- ホストは
s.binance.comです。これは、本物の登録可能ドメインbinance.comのサブドメインです。 - これは国際化ドメインの同形異字ではありません。すべての文字は通常の ASCII です。一文字ずつ比較しても、本物の文字列です。
binance.comの WHOIS には Binance 自身の登録情報が返されます。紛らわしいレジストラも、最近の作成日も、異常な点もありません。- TLS は有効な証明書で終端しています。南京錠は本物です。
そのすべてが事実ですが、何の助けにもなりません。なぜなら、攻撃者は Binance のドメインを制御する必要がまったくなかった からです。s.binance.com は Binance 自身のリンク短縮サービスです。攻撃者は payload を別の場所に置き、Binance のインフラストラクチャを使ってそこを指しました。
見抜ける版との比較
同じ口実の一般的な形がこれです。私たちに報告された別のメッセージであり、今も大半のキャンペーンが取る形です:
こちらは見抜けます。文字列 binance.com がリンク内にそのままありますが、アットマークの前 に置かれています。URL では、スキームと @ の間にあるものはすべてホスト名ではなく認証情報です。ブラウザーは、ユーザー名 "binance.com" を提示してホスト 0691[.]app に接続するものと解釈します。本当の宛先は四桁の使い捨てドメインです。ブランド名はユーザー名欄に置かれたおとりです。
この規則を知っていれば、一秒で見抜けます。現在では多くのメッセージングクライアントやメールクライアントが、このパターンを明示的に警告したり書き換えたりします。これは 難読化 であり、難読化なら教え、検出し、フィルターできます。また、両方を報告したまさにその人には通用しません。
s.binance.com のメッセージは別種の問題であり、別物として扱うべきです。何も偽装されていません:
- アットマークの細工はありません。ホストがそのままホストです。
- 同形異字も、punycode も、キリル文字の類似字もありません。
- 表示される文字列にはスペルミスが一つもありません。
- 不審なレジストラも、若いドメインも、自己署名証明書もありません。
- リンクフィルターが手掛かりにできるものはありません。正規の Binance ユーザーが実際に送ってくる可能性のあるリンクだからです。
Binance の信用を 模倣している のではありません。本物を借りています — ドメイン、証明書、アプリへの引き渡し、そして「アカウントを保護」という文言を表示するインターフェースです。欺きが始まるのは、すでにアプリ内に入った後です。その時点では、確認できるアドレスバーはもうありません。
そのため、こちらは記事にする価値があり、最初のものにはありません。アットマークのメッセージは知識で防げます。こちらは防げません。知っている確認方法をすべて実行しても「本物」と返るからです — そして、信頼されたアプリが、その朝登録されたドメインにリクエストチャネルを渡す瞬間までは、本当に本物です。
チェーンのデコード
短縮リンクは通常の HTTP リダイレクトで応答します:
HTTP/2 302
location: https://app.binance.com/en/mp-cms/app/3cb3235
?_dp=<base64>
&description=Protect+Your+Account
&title=Binance
&utm_campaign=app_mini_program_share_link
&utm_source=mini_program
まだ Binance です。まだ本物です。注目すべき部分はキャンペーンタグの app_mini_program_share_link と mini_program です。これは Binance Mini Program の共有リンク — Binance アプリ内からミニアプリを共有したときに得られるものです。ハッキングされたものはありません。攻撃者はミニプログラムを公開または悪用し、共有機能を設計どおりに使いました。
description=Protect Your Account にも注目してください。ソーシャルエンジニアリングの文言は URL 内を移動するため、安心させる言葉を表示するのは Binance 自身のインターフェースです。
パラメーター _dp は base64 です。デコードすると:
bnc://app.binance.com/mp/app
?appId=xoqXxUSMRccLCrZNRebmzj
&startPagePath=L3BhZ2VzL2Jyb3dzZXIvaW5kZXg
&startPageQuery=<base64>
&sceneValue=1300
bnc:// は Binance アプリのカスタム URL スキームです。アプリがインストールされた電話では、ブラウザータブを開く代わりにアプリへ引き渡します。
startPagePath も base64 であり、デコードすると /pages/browser/index になります。これはミニプログラムの アプリ内ブラウザーページ です。つまりディープリンクは Binance アプリに、このミニプログラムを開き、そのブラウザー画面へ移動するよう指示しています。読み込むアドレスは startPageQuery 内で三度目の base64 になっています:
url=https%3A%2F%2Faccounts.authenticated.binancc.cdn378129.com%2Fauth8%2F
そこにあります。ホストを注意深く読んでください:
accounts . authenticated . binancc . cdn378129 . com
└──────────── decoration ────────────┘ └── real ──┘
登録可能ドメインは cdn378129[.]com です。その左側にあるものはすべて、攻撃者が自由に選んだテキストです。そこには binancc、つまり c が二つある文字列 も含まれます。ブランド名の単なる入力ミスというより、一目では見過ごすよう意図された紛らわしい表記です。電話の webview では、いずれにせよ文字列の大部分が画面外にあります。
したがって、悪意のあるドメインがメッセージに表示されることはありません。base64 のクエリパラメーターが別の base64 payload に入り、それが本物の Binance URL 内に入り、本物の Binance 短縮サービスの背後にあります。
インフラストラクチャが作られたのは数時間前
執筆中に確認した公開記録:
cdn378129[.]comは 13:31 UTC(20日、2026年八月)に登録されました。レジストラは OwnRegistrar, Inc.、DNS の委任先は DNSPod です。- Let's Encrypt 証明書の
notBeforeは同日の 12:35 UTC です。Let's Encrypt はこのフィールドを約一時間さかのぼらせるため、発行はおよそ 登録の四分後 でした。証明書が対象とするのは、その一つのホスト名だけです。 - ホストは 107.189.17.50 に解決されます。これは FranTech Solutions 内の RouterHosting LLC に割り当てられた範囲です。
- ドメインは署名されておらず、DNSSEC はありません。
登録から一日未満の登録可能ドメイン、その数分後に発行された証明書、そして単一用途のホスト名。このどれも SMS からは見えず、s.binance.com からも見えません — まさにそれが、短縮サービスを経由させる理由です。
ページが実際に行うこと
私たちは隔離されたサンドボックスで、実行せずに endpoint を取得しました。最初に驚いたのは、そこに ない ものです:
- フォームはありません。
<form>要素は一つもありません。 - 入力フィールドはありません。
<input>は一つもありません。 - パスワード、ワンタイムコード、シードフレーズの入力要求も、ウォレット接続ボタンもありません。
人々が頼るよう教えられてきた直感 — 見知らぬページにパスワードを入力しない、シードフレーズは絶対に入力しない、何に署名しているか確認する — はすべて、ここでは役に立ちません。ページが何も要求しないからです。
代わりに含まれているのは、設定が冒頭にそのまま置かれた難読化スクリプトです:
var WITHDRAW_COIN = "BTC";
var ATTACKER_ADDRESS = "bc1qnwhg6za5m0adlny6t4xx6qa2heyrntsvk8pw4f";
var WITHDRAW_NETWORK = "BTC";
var FEE_RESERVE = 0.00007;
var MIN_COIN_AMOUNT = 0.01;
そして、難読化ツールが隠し損ねたエラー文字列には、その仕組みが明記されています:
"bridge interface not found (window.bn.miniProgram missing)"
"bridge did not appear within "
"bridge request timed out after 10s"
window.bn.miniProgram は、Binance アプリがミニプログラムの webview に注入する JavaScript ブリッジ です。スクリプトはそれが現れるのを待ち、そこを通じてリクエストを発行します。仕掛けはそれだけです。認証情報は必要なく、同一生成元ポリシーを破る必要もありません。アプリが、ミニプログラムブラウザーに表示されているページへ信頼されたリクエストチャネルを渡すからです。そして、そのブラウザーには攻撃者のページを表示するよう指示されていました。
出金処理の流れ
文字列テーブルを復元すると、payload が呼び出す Binance の非公開 endpoint が、ロジックで使われる順に分かります:
/bapi/accounts/v1/private/account/get-user-base-info— 被害者を特定します。ページは名前で挨拶します:「おかえりなさい、…」。/bapi/kyc/v2/private/certificate/user-kyc/get-current-kyc-status-lite— 出金はこの状態に依存するため、検証状態を確認します。/bapi/asset/v3/private/asset-service/asset/get-wallet-asset— アカウント内のすべての残高を列挙します。/bapi/earn/v1/private/lending/daily/redeem— フレキシブル貯蓄を償還し、利回りを得ている資金を使用可能にします。/bapi/margin/v1/private/new-otc/get-quoteと…/execute-quote— ほかのすべての資産を Bitcoin に変換し、最低額未満の残高を除外し、手数料用に少額を残します。/bapi/capital/v4/private/capital/withdraw/apply— 出金を申請します。送金先はハードコードされたアドレスです。
その処理中、画面にはページ自身のマークアップから取られた、安心させる短い状態表示が順に現れます:
アカウントを読み込んでいます · 詳細を安全に収集しています · おかえりなさい、… · 認可を確認しています… · Binance に再ログインしています
「Binance に再ログインしています」という文言は多くの役割を果たします。待ち時間の理由とアプリが処理中である理由を説明し、認証手順が来ると予期させます。
巧妙なのは偽のコード
理解するまで少し時間がかかった点があります。SMS の偽の認証コードがおとりなのではありません。おとりはリンクです。コードは 予防接種 です。
本物の取引所アカウントからの出金には通常、本物の確認が必要です。メールリンク、認証コード、push 承認などです。その確認は、被害者と損失の間に残る最後の防壁であり、本来は警戒させるものです。
しかし被害者は、すでにリクエストしていない Binance コードを受け取り、リクエストしていないコードとはこういうものだとメッセージ自体から教えられています。今は、名前で挨拶した画面上の 「認可を確認しています」 というフロー内にいます。本物の確認が届いても、警報とは受け取りません。自分が実行していると思っているセキュリティ確認の次の手順だと受け取ります。
誰を狙っているか
payload には、英語以外で正確に二つのロケールを持つ翻訳テーブルが含まれます:zh と ko です。これは navigator.language を読み取って自身をローカライズします。香港 の広東語で書かれた誘導文と合わせると、これは中国語話者と韓国語話者を狙って構築されたキャンペーンであり、たまたまその一人に届いた英語の一斉送信ではありません。
宛先アドレスには、取引がまったくありませんでした。二つの独立したブロックエクスプローラーで確認した時点で、確定済みのものも、mempool で待機中のものもありませんでした。チェーンで確認できる限り、このアドレスはまだ一人分の被害資金も受け取っていません。
私たちは当初、それを希望の持てる兆候だと読みました。それは誤った読み方であり、実際に被害に遭った人からそう指摘されました。 空の送金先アドレスは、誰も被害に遭わなかったことを意味しません。資金が最後の段階に到達しなかったという意味です。それ以前のすべては実行されていた可能性があり、資金のある少なくとも一つのアカウントでは実際に実行されました。以下の 空のアドレスが実際に隠しているもの を参照してください。
確かに言えるのは時間があるということです。それが、慎重にではなく迅速に公開する理由です。
実際に身を守るもの
ドメインを調べても、この攻撃には通用しません。次の対策は有効です:
- 取引所でアンチフィッシングコードを設定し、記載されているか確認してください。 Binance では、SMS を含む本物のメッセージに表示される識別子を設定できます。上のメッセージにはありません。この欠如が手掛かりであり、一般の人が利用できる中で最も信頼できる唯一のものです。
- 「自分の操作でなければ、ここをタップ」を対処法ではなく攻撃として扱ってください。 正規のセキュリティ通知は、自分でアプリを開くよう伝えます。緊急性とリンクこそが payload です。
- メッセージから取引所へ移動しないでください。 ホーム画面からアプリを開いてください。クリックしなければチェーン内の何も成立しないため、この一つの習慣でチェーン全体を防げます。
- 出金先アドレスのホワイトリストを設定してください。 ホワイトリストを有効にし、新規アドレスに待機期間を設ければ、新しいアドレスへの出金を申請するスクリプトは送金先を失います。
- 確認内容を実際に読んでください。 本物の出金確認には、通貨、金額、宛先アドレスが記載されます。画面に「再ログインしています」と表示されたなら、その文言が示しているのは出金です。
- アプリを開くリンクを疑ってください。 アプリへ直接移動するリンクはブラウザーを迂回しており、それとともにアドレスバーや、本来表示されたはずの安全な閲覧に関する警告も迂回しています。
タップしてしまった場合
- 取引所アプリを直接開き、まず 出金履歴 と 保留中の出金 を確認してください。自分が開始していないものは取り消します。
- フレキシブル貯蓄のポジションが償還されていないか、残高が Bitcoin に変換されていないか確認してください。どちらも出金より先に起きるため、より早い警告になります。
- ログイン履歴を信用しないでください — 正常に見えます。 payload はすでに開いているセッション内で動くため、新しいサインインイベントを作りません。この方法で資金を失ったアカウントでも、発生時のサインイン活動には異常が現れません。
- 取引履歴ではなく、変換履歴を明示的に確認してください。 Convert は現物注文に表示されません。説明のつかない取引を探す人は空の一覧を見つけ、何も起きなかったと結論付けます。
- 有効なセッションとデバイスを取り消し、パスワードを変更して二要素認証を更新してください。
- 出金先アドレスのホワイトリストを有効にしてください。
- 報告してください。Binance はサポートセンターで詐欺報告を受け付けています。短縮リンク、ミニプログラム識別子、宛先アドレスを含む報告は、スクリーンショットよりはるかに対処しやすいものです。
指標
防御側がブロックし、相関できるよう無害化して公開しています — 誰かがアクセスするためではありません。
WAVE 2 (2026-08-22)
Shorteners hxxps://s.binance[.]com/DwOKKciE
hxxps://s.binance[.]com/hOD42AgF
Mini program appId xoqXxUSMRccLCrZNRebmzj (mp-cms e3efa5b, scene 1300)
Final host accounts.authentication.binance.com73184[.]com /auth-1334/
Registrable com73184[.]com registered 2026-08-21 21:45:28 UTC
SOL address H2RMUS1nhiqtwToUfLzCdUB94rmHrFDzyrnJaNKiMGr2
WAVE 1 (2026-08-20)
Shortener hxxps://s.binance[.]com/speZiskQ
Mini program appId xoqXxUSMRccLCrZNRebmzj (sceneValue 1300)
Deep link bnc://app.binance.com/mp/app?...startPagePath=/pages/browser/index
Final host accounts.authenticated.binancc[.]cdn378129[.]com
Path /auth8/
Registrable cdn378129[.]com registered 2026-08-20 13:31 UTC
Registrar OwnRegistrar, Inc. DNS: DNSPod
IP 107.189.17.50 (RouterHosting LLC / FranTech Solutions)
TLS Let's Encrypt, single-SAN, issued same day
BTC address bc1qnwhg6za5m0adlny6t4xx6qa2heyrntsvk8pw4f
証拠は失効し、誰も捉えなかった
ドメイン登録からおよそ一日後、チェーン内のすべてのリンクを再確認しました。現在はいずれも 404s です。短縮リンクも、終端の payload も同じです。
安堵したくなります。しかし、その直感は誤りです。理由を理解することが、この記事で最も有用な点です。
何もテイクダウンされていない
今も残っているものを見てください:
Domain status ok (not clientHold, not serverHold)
WHOIS updated unchanged since the moment of registration
DNS still resolves to 107.189.17.50
Web server nginx still running, still answering
Certificate still valid, unrevoked, good until November
Payload gone
BTC address still zero transactions, mempool included
レジストラによる停止なら、ドメインの状態が変わり、名前解決が止まります。ホストの停止なら、サーバーの応答が止まります。どちらも起きていません。今見ているのは、今も稼働するサーバー、今も解決される名前、誰かが今も費用を払っている証明書であり、ファイルだけが手作業で削除されています。
これはテイクダウンではありません。運営者が後片付けをしたのです。同時に配信リンクが停止したのは、プラットフォームが取り消したためか、同じ運営者が終了させたためかもしれません。外部からは区別できず、そのこと自体が問題です。
どの当事者も何一つ認めていない
ケース番号はありません。勧告もありません。ミニプログラムが無効化されたという公表文も、レジストラの措置も、ブロックリストへの登録も、誰かの声明もありません。これが起きたこと自体について、いずれの当事者からも公の認知は見つかっていません。
したがって、キャンペーンは 阻止された のではありません。終了した のです。それを実行した人物が、自分の日程で、インフラストラクチャを無傷に保ち、世界中のすべてのレジストラとホストに対する評判にも傷を一つ付けずに終えました。
これが報告をほぼ不可能にする理由
一般の人が利用できるすべての報告窓口は、コンテンツが稼働中であることを前提としています:
- ブロックリストの分類器は、判断するために URL を取得します。標準の nginx 404 を見つけると、掲載を見送ります。
- 「このドメインはフィッシングを配信していた」という報告を、現在は何も返さない URL について受け取ったレジストラの不正利用窓口は、コンテンツ削除済み、措置不要としてチケットを閉じます。
- ホスティング事業者の不正利用窓口も同じ対応をします。
対処可能だった時間帯は、分析を書いているうちに終わりました。これは不正利用窓口への批判ではありません。稼働中の攻撃なら検証可能ですが、終わったものを裁定するのは現実的ではありません。これは構造的な空白の説明です:報告システムは、捕捉すべき攻撃より遅く動きます。
証拠は揮発性であり、それこそが仕掛けのすべて
ここは立ち止まって考える価値があります。二十四時間だけ稼働するフィッシング作戦が生む証拠の保存期間は二十四時間です。攻撃者は何かを破壊したり、痕跡を隠したり、誰かの裏をかいたりする必要はありません。必要なのは、報告の遅延より長く存続すること だけです。十ドルのドメインなら、登録の四分後に武器化しても、余裕でそれを実現します。
その後は、誰にとっても対称的で役に立たない状況になります。私たちは不正利用窓口に証明できません。窓口の検証手順が取得だからです。窓口は検証できません。取得するものがないからです。受信者は報告できません。メッセージ内のリンクが今はどこにもつながらず、間違いに見えるからです。そして運営者は翌週、新しいドメインと新しいミニプログラム識別子を使い、代償を払わず記録も残さず、すべてを繰り返せます。
そのため、重要なのは手法であり、ドメインではありません。仕組みは何一つ変わっていません。ミニプログラムのブラウザーページは今も宛先をパラメーターとして受け付けます。そのページが読み込むものは今もブリッジに到達できます。共有機能は今も、有効な証明書を持つ本物のドメイン上にリンクを生成します。新しい識別子と誰も聞いたことのないホスト名があれば、この一記事のすべてを午後のうちに再現できます。
このようなものが届いた場合
実務上の結論は、最初に記録し、次に報告することです。 最初の一時間に存在するものだけが、今後も存在する唯一のものです。
- 何より先に、送信者を含めてメッセージのスクリーンショットを撮ってください。
- 可能なら、リンクをたどらずにリダイレクトチェーンを記録してください。アプリがインストールされていないマシンから、ヘッダーだけをリクエストします。最初のホップの
locationヘッダーは、チェーン全体で最も価値のある証拠であり、最初に消えるものです。 - アプリがインストールされたデバイスでは開かないでください。それはテストではなく、攻撃です。
- 時刻を記録してください。ドメイン登録から最初のメッセージまでの間隔は、それ自体が証拠であり、コンテンツが消えた後も残ります。
私たちが取得したものをすべてこの記事に掲載したのは、まさにそのためです。リクエストチェーン、デコードしたディープリンク、payload が呼び出した endpoint、送金先となるはずだったアドレスです。どれも、もう取得できません。今ではこの記事が記録であり、より整った確認を得るためにもう一日待っていたら、何も記載できなかったでしょう。
空のアドレスが実際に隠しているもの
第一波の影響を受けたアカウントについて、その後私たちに説明がありました。その記録は、この payload の変換段階が実際に実行されたことを示しています。本人は匿名を希望し、特定につながり得る数値 — 残高、保有資産、アドレス、注文番号 — は以下から意図的にすべて省いています。どれも必要ありません。証拠は、規模ではなく、起きたことの形にあります。
以下は本人の説明を、私たちがすでに独立して行っていた測定と照合したものです。本人が誰か、どこにいるか、何を保有していたかは説明しませんし、今後も説明しません。
私たちが誤った部分
送金先アドレスに取引がなく、キャンペーンは成功していないと私たちは報告しました。その推論は成り立ちません。このアカウントでは、payload の 変換段階が完了していました。二つの別々のウォレットにまたがる全残高が、アカウント保有者が実行しておらず記憶にもない一回の操作で、単一の資産へ変換されました。失敗したのは出金です — 資金はアカウント内に残りました。
したがって、空の送金先アドレスは誰も被害に遭わなかったことを意味しません。取引所の出金制御が、そこまでのすべてがすでに実行された後、最後の段階で機能したという意味です。両者は大きく異なる事実であり、私たちはより安心できる方を公表していました。
payload と正確に一致する三つの詳細
私たちは、このアカウントが被害を受けた二日後、静的解析によって難読化スクリプトから MIN_COIN_AMOUNT = 0.01 を取り出しました。このアカウントでは:
- 二つ目のウォレットにあった 正確に 0.01 の残高が変換されました — まさにしきい値です。
- ほかの二つの保有資産はいずれも 0.01 未満 であり、手付かずでした。
- 両方のウォレットが同じ操作で空になっています。メインのものだけでなく、すべての残高を読み取る列挙段階と一致します。
コードから復元した定数と、その両側に正確に位置する残高を持つ実在のアカウント。これが、この記事を書いた時点で欠けていた確認です。
手作業では不可能な理由
二つのウォレット分は、約一秒の間隔で、同一の固定レート により変換されました。固定レートは一つの瞬間に対して提示されるため、両方が同一のレートなら、同時に一つのバッチで提示されたことになります。
手作業で行うには、ペアを選び、プレビューし、カウントダウンタイマー内に 確定する必要があります — ウォレットごとに別々です。異なる二つのウォレットで、同じ提示レートを使う二回の完全な手動変換を一秒差で行うことは、物理的に不可能です。この時間関係は機械による実行を示し、アカウント自身の記録で確認できます。
助言を変える発見
これは覚えておくべき点であり、私たちを含む誰もが日常的に示す助言を無効にします。
この攻撃はサインインイベントを残しません。 変換が実行された瞬間のログインはありません。その数分前に、アカウント保有者自身のデバイスと自身のアドレスから、まったく通常のサインインがあります。それは実際に本人のサインインだったからです。その後、payload は すでに認証済みのそのセッション内で、アプリのブリッジを通じて実行されました。
したがって、標準的な指示である ログイン履歴で見覚えのないセッションを確認する を実行しても、この被害を受けたアカウントでは正常な結果が返ります。見覚えのないものはありません。そのセッションは本人のものでした。
二つ目の落とし穴は、被害者が次に見る場所です。変換は 取引履歴 に表示されません。Convert はオーダーブック上の取引ではないからです。アカウントを空にした取引を現物注文から探しても空の一覧しかなく、勘違いだったと合理的に結論付けてしまいます。記録はされていますが、変換履歴という別の画面だけであり、そこを開こうとは誰も考えません。
この二つが重なると、アカウントは大きな干渉を受けていても、注意深い人が確認する場所はすべて正常に見えます。これは被害者の注意不足ではありません。アカウントが本人に伝えられる内容の欠落です。そして、この記事の冒頭と同じ欠落でもあります。どのミニプログラムが注文を発生させたかという、決着を付けるプラットフォーム側の記録は存在しますが、アカウント保有者には見えません。
上で変更した内容
この記事の前半にある復旧手順は、取引履歴ではなく変換履歴を確認するよう改め、サインイン活動が正常に見えることも明記しました。どちらも、誰かを安心させて立ち去らせてしまう形で誤っていました。
再び現れ、何も変わっていなかった
上記はすべて、キャンペーンが終わったという前提で書かれていました。およそ三十六時間後、さらに二通のメッセージが届きました。同じ口実、同じ短縮サービス、異なるコードです:
最初の一時間以内に、チェーン全体をもう一度取得しました。そのうち一文は、この記事のほかのすべてより重要です:
Wave 1 2026-08-20 appId xoqXxUSMRccLCrZNRebmzj
Wave 2 2026-08-22 appId xoqXxUSMRccLCrZNRebmzj <-- identical
Mini Program は一度も無効化されていません。 第一波の短縮リンクは名前解決しなくなりましたが、プラットフォーム側で変わったのはそれだけです。その背後の識別子はまだ有効で、到達可能で、ブラウザーページを開き、渡されたどの URL にもブリッジを引き渡せる状態でした。運営者はそれに対して新しい短縮リンクを二つ作り、新しい場所を指定しました。
残りのフィンガープリントも変わっていないため、模倣者ではないと分かります。同じミニプログラムページ(/pages/browser/index)、同じ sceneValue、同じ description=Protect Your Account、107.189.17.50 の同じサーバー、同じレジストラ、同じ DNS プロバイダーです。動いたのは三つだけで — 短縮リンク、ドメイン、通貨です。
これは、前の節で推測することしかできなかった問いへの答えです。配信リンクを切っても運営者は止まりません。配信リンクは運営者が持つ最も安い構成要素だからです。ミニプログラムを切れば止まりますが、誰もそうしませんでした。
夜に登録され、朝には送信
21:45:28Z domain registered
21:49:06Z TLS certificate issued +3m 38s
23:34:00Z first message +1h 48m
00:22:00Z second message +2h 36m
00:43:52Z captured, payload live +2h 58m
登録から有効な証明書まで四分未満、実際の電話にメッセージが届くまで二時間未満。分単位まで第一波と同じ形です。誰もこれを手作業では行っていません。
新しいドメインは、より巧妙な偽装
accounts . authentication . binance . com73184 . com
└─────────────── decoration ──────────────┘ └─ real ─┘
登録可能ドメインは com73184[.]com です。文字列全体を速く読むと、…binance.com73184.com と見えます — 視線は binance.com で止まり、数字をキャッシュノードやシャードとして扱います。これは、少なくともスペルミスに見えた第一波の binancc から明らかに改良されています。
その間に payload は改修されていた
サイズは 24,640 バイトから 34,335 バイトに増えました。七つの非公開 endpoint は同一で — 同じ列挙、同じ貯蓄償還、同じ変換、同じ出金ですが —、四つの要素が追加されました:
- 出金資産が Bitcoin から Solana に変わりました。 より速く、より安く、巻き戻しがより困難です。
- 資産ごとの変換上限。個々の変換を、注意を引くしきい値より低く保つ意図と整合します。
- レート制限の回避。 残っていた文字列の一つには
Retried just under limit:とあります — プラットフォームのスロットリングに対して意図的に調整し、測定しています。 - ポルトガル語。すでにあった中国語と韓国語に追加されました。
そして今では承認画面も偽造する
ここは立ち止まって考えるべき変更です。ページは四つの言語で、Binance のセキュリティプロンプトの偽物を表示します:
新しいログインを検出 · これはあなたですか? · デバイス · 場所 · IP アドレス · [承認] [拒否] · 15s 後に自動ブロック
この記事の前半で、push 承認を信頼できるものにする条件を説明した際、プロンプトにはアプリケーション、location、IP アドレス を表示する必要があり、文脈のないプロンプトについて正しい判断はできないと書きました。ここには、まさにそのフィールドが再現されています。攻撃者は、本物のセキュリティプロンプトを安全にする設計を取り込み、舞台装置として作り直しました。
これは SMS が始めた循環も完成させます。メッセージには 自分の操作でなければ、このリンクにアクセスしてください とあります。訪問者は不安を抱えて到着し、不安な人が見つけたいと望む画面そのものを目にします。見覚えのないログイン、並べられた詳細、拒否と書かれたボタンです。拒否をタップすると、主導権を取り戻したように感じます。どちらのボタンも攻撃者のものであり、十五秒のカウントダウンは、誰かが十六秒間考えるのを止めるためにあります。
今回行ったこと
すべてを最初の一時間以内に取得し、チェックサムとともに保存しました。両方の payload を並べて保持したため、波の差分は記憶ではなく実証できます。サイトがまだ応答している間に、Binance が公開しているセキュリティ窓口、レジストラ、ホスティング事業者、二つのフィッシング対策情報センターへ報告しました。
レジストラはチケットを開きました。執筆時点で、二つの宛先アドレス — 第一波の Bitcoin アドレスと第二波の Solana アドレス — は、どちらも一度も取引を受け取っていません。
不都合なのは、前節の推論が一つも誤っていなかったことです。第一波の証拠は確かに失効し、どの当事者も認めず、手法は無傷で生き残りました。私たちが予想していなかったのは、それがどれほど早く実証されるかでした。
第三波:Binance をまったく必要としなくなった
最初のメッセージから二日後、三通目が届きました。同じ口実、異なる仕組みです:
そのホストをもう一度読んでください。Binance のドメインではありません。 s.binance.com も、app.binance.com を経由するリダイレクトも、bnc:// ディープリンクも、チェーン内のどこにも Mini Program 識別子もありません。運営者は自分のドメインを登録し、Binance の短縮リンクサービスと間違えるよう命名し、そこから直接 payload を配信しています。
同じ人物
運営者を特定する要素は、以前の波からすべて変わっていません。同じサーバー、同じレジストラ、同じ DNS プロバイダー、同じウェブサーバービルドです。新しいのは配信経路だけです。
registered 08:14:03 UTC
certificate ~08:21 UTC +7 minutes
first message ~08:48 UTC +34 minutes
captured 08:57 UTC +43 minutes
登録から有効な証明書まで七分未満、実際の電話にメッセージが届くまで三十五分未満 — 分単位まで以前の二つの波と同じ形です。
完全に使える Binance リンクを手放した理由
第二波と第三波の間で、プラットフォーム側で変わったのは正確に一つだけです:第二波の二つの短縮リンクのうち、一つが名前解決しなくなりました。 もう一つは引き続き機能し、その両方の背後にある Mini Program も有効なままでした。
これは小さく部分的な介入であり、それに対する反応は、二日以内に代替配信チャネルを一から構築することでした。その意味をじっくり考える価値があります。運営者は Binance 上の経路を使い捨てとは考えていませんでした。信頼できなくなった瞬間に再構築するほど価値があると考えたのです。これは、その経路の価値について私たちがどんな議論をするより明確な表明です。
防御側が懸念すべき部分
第三波のページも、ほかと同じ方法で取得しました。返ってきたのは 94 KB の難読化スクリプトで、以前の payload のほぼ三倍のサイズです。フォームも入力要素も、ネットワーク呼び出しも一切含まれません。数秒間隔の二つのリクエストは異なるバイト列を返しました。ページがリクエストごとに新しい鍵で生成されるためです。
難読化ツールが隠し損ねた、名前付きの確認も三つ含まれます:
isWebDriverPresent
isPhantomOverflow
isPhantomETSL
これらはブラウザー自動化を検出します。まさにセキュリティスキャナーが使うツールです。私たちが取得したのは攻撃ではありません。人間かどうかを判断するゲートです。
ファイルに含まれていないものから、さらに正確なことが言えます。端から端まで調べても、その 94 KB には いかなる種類の URL もありません — http も、:// も、dot-com は一つもなく、それを配信するサイトの名前すらありません。ネットワーク呼び出しもありません。fetch も、XMLHttpRequest も、WebSocket もありません。あるのは cookie を書き込むルーチンと、リクエストごとに再生成される鍵です。
したがって手順はこうです。ページはブラウザーを測定し、結論を cookie に書き込み、再読み込みします。次に何を送るかはサーバーが決めます。 攻撃はファイル内に隠されているのではありません。ファイルにはまったく存在せず、存在することもできません。そのページをダウンロードしてどれほど注意深く分解しても、調べているのは部屋ではなく門番です。
これは通常の難読化と区別する価値があります。第一波と第二波は、一回のコマンドライン取得に payload 全体を明け渡しました。endpoint、送金先アドレス、変換ロジックのすべてが、求める者への応答に入っていました。第三波は何も渡しません。逆アセンブラーをどれだけ辛抱強く使っても変わりません。探しているものは最初から送信されていないからです。
それが実務上何を意味するかは、私たち自身に起きたため説明できます。このキャンペーンを自動解析サービスに提出したところ、稼働して配信中のサイトについて 脅威は見つかりませんでした という結果が返りました。その一部は私たち自身の誤りであり、上で説明しました。しかし、隠蔽されたページは正当に、設計どおりにスキャナーを破ります。スキャナーは見せられたものを正確に報告します。
したがって、ここから導くべき助言は不都合ですが、明確に述べる価値があります。自動チェッカーが出したクリーンな結果は、リンクが安全である証拠にはなりません。 それは、チェッカーに配信されたものが安全に見えたという証拠です。誰も欺こうとしていない場合に限り、この二つの文は同じ意味になります。
変わったものと、変わらなかったもの
配信は Binance のインフラストラクチャから離れました。ブランドは離れていません。ドメインは同社のものと間違えさせる目的だけで存在し、メッセージは今もアカウント通知を装っています。誘導文、運営者、サーバー、タイミングはすべて同一です。
そして、第一波と第二波を運んだ Mini Program 識別子は、執筆時点でもまだ有効です。すでに三つのキャンペーンより長く存続しています。
この記事にリンクがない理由
上記の敵対的なアドレスはすべて無害化して記載し、いずれもハイパーリンクにしていません。これは意図的です。稼働中のフィッシングリンクを機能するアンカーとして公開すれば、記事自体がリダイレクトになり、私たちの評判の一部をキャンペーンに貸し、検索エンジンに両者を関連付けるよう求めることになります。攻撃の説明によって、その到達範囲を広げるべきではありません。
私たちは Binance と提携していません。この記事を公開するのは、この手法が一般化できるからです。公式短縮サービス、信頼されたアプリへのディープリンク、任意の URL にサイトレベルの信頼を渡す webview ブリッジという組み合わせは、どの大規模消費者向けアプリにも生じ得ます。製品がリンク短縮サービス、カスタム URL スキーム、または宛先をパラメーターとして受け取るアプリ内ブラウザーを備えているなら、これが自分で確認すべきチェーンです。