Punycodeとホモグラフ:本物そっくりの偽ドメイン
次の2つのアドレスを見てください。paypal.com と pаypal.com。同じでしょうか? 私たちの目には同じです。でもコンピューターにとってはまったく違います。2つ目のアドレスの2番目の「а」はキリル文字で、ラテン文字の「a」ではありません。別々のドメインで、別々の人が持つことができます。これがホモグラフ攻撃の原理です。理解するために、インターネットが名前をどう書いているのか、少し寄り道してみましょう。
Unicode、ASCII、Punycode:3つの言葉、ひとつのシンプルな考え
もともとドメイン名に使えたのは、ASCIIと呼ばれるごく小さなアルファベットだけでした。アクセント記号のないaからzの文字、数字、ハイフンです。「é」も「ü」も使えず、アラビア文字や漢字、キリル文字などもってのほかでした。
しかし世界では何十もの文字体系が使われています。Unicodeは、あらゆる文字体系のあらゆる文字に番号をふった巨大なカタログです。ラテン文字の「a」はU+0061、キリル文字の「а」はU+0430。形は同じでも、番号が違います。
ネットワーク全体を作り変えずに、あらゆる言語でドメイン名を使えるようにするため、通訳が考え出されました。それがPunycodeです。Unicodeで書かれた名前をASCII文字だけの名前に変換し、先頭に xn-- という目印を付けます。ブラウザはきれいなほうを表示し、ネットワークには変換後のものだけが見えています。
「xn--」ドメインの仕組み
まったく正当な例を見てみましょう。フランスのドメイン société.fr(「会社」の意味)です。ネットワークは「é」を読めません。Punycodeは特殊な文字をいったん脇に置き、普通の文字を残して、最後にアクセント付きの文字をどこへ戻すかを示す短いコードを付け足します。
société.fr → xn--socit-esab.fr
「socit」(普通の文字)と、どの文字をどこに挿入するかを示すコード「esab」が見えます。xn-- という接頭辞は、「この名前は変換されています」と知らせているだけです。ドイツ語、アラビア語、中国語、ロシア語、日本語も含め、何百万もの正当な名前がこの仕組みで動いています。ですから xn-- はそれ自体が怪しいわけではありません。怪しくなるのは、有名ブランドをまねているときです。
ホモグリフ攻撃:偽の双子
ホモグリフとは、ほかの文字と見分けがつかないほどよく似た文字のことです。Unicodeにはそうした文字がたくさんあります。キリル文字の「а」「е」「о」「р」「с」は、ラテン文字のa、e、o、p、cの完璧なそっくりさんです。ギリシャ文字の「ο」は「o」になりすまします。
詐欺師は、1文字または複数の文字をそっくりさんに置き換えたドメインを購入します。2017年、ある研究者がこれを鮮やかに実証しました。すべてキリル文字で аррӏе.com と書かれる xn--80ak6aa92e.com を登録したところ、当時の主要ブラウザのいくつかが、アドレスバーにただ「apple.com」と表示したのです。その後、ブラウザはこのケースを修正しました。
アドレスが正当に見えてしまう理由
最近のブラウザは慎重なルールを適用しています。名前が怪しい形で複数の文字体系を混ぜていたり、有名なドメインに似すぎていたりすると、きれいな表記ではなく xn-- の形を表示するのです。よい防御ですが、限界もあります。
- アドレスバーの外では、このルールが常に働くとは限りません。メール本文、SMS、PDF、メッセージアプリでは、「変装した」表記がそのまま表示されます。
- ルールはブラウザ、バージョン、アプリによって異なります。
- 小さな画面でさっと見ただけでは、同じ形の2文字は区別できません。しかもUnicodeが要るとは限りません。
rnはmに、1はlになりすまします。ガイドフィッシング:詐欺師はどうやってメールを届けているのかで説明しているとおりです。
そして、どんなわなのドメインでもそうですが、有効なHTTPS証明書や鍵マークがあることもあります。それが証明するのは通信が暗号化されていることであって、サイトが誠実であることではありません。
ドメインを確実に確かめるには
迷ったら、見た目を信じずに、本当の名前に語らせます。
- クリックしない。リンクをコピーします(右クリック →「リンクのアドレスをコピー」)。
- Punycode変換ツールに貼り付ける(無料のオンラインツールが多数あります)。ごく普通のはずの名前に
xn--の形が出てきたら、それはわなです。 - ドメインを取り出す:最初の「/」の直前の部分です。読み方の詳細はガイドクイッシング:QRコードの裏に隠れたフィッシングで説明しています。
- 安全な道を通る:自分で登録したブックマークか公式アプリを使います。パスワードマネージャーも役立ちます。そっくりさんにはだまされず、偽のドメインでは何も入力しません。
Baitback は、この作業の一部を自動で行います。メールを貼り付けると、Punycode(xn--形式)のリンクや、ホモグリフによるものも含めて既知のブランドのそっくりドメインを指摘し、リダイレクト後の最終的な行き先も確認します。
レジストラとホスティング事業者を特定する
ドメインを消すには、誰が売り、誰がホストしているのかを探します。調査ツールでは常にxn-- の形を使いましょう。それが登録機関の知っている、本当の名前です。
- ドメインをRDAPやWHOISで調べると、レジストラ、その通報窓口(「abuse」)、ドメインの登録日が分かります。先週登録されたブランドのそっくりドメインなら、疑いの余地はほとんどありません。
- サイトのIPアドレスからホスティング事業者や、その前に置かれたCDNが分かります。CDNも通報を受け付け、転送してくれます。
ここで最も頼りになるのはレジストラです。ホモグリフでブランドをまねたドメインは、非常に明白な悪用の事例です。ドメインが停止されれば、サイトもメールも関連するページもすべて一度に止まります。
ドメインを通報する
よい通報は数行で足ります。ドメインのUnicode形式と xn-- 形式、まねされたブランド、ページの完全なURL、スクリーンショット、日時です。これをレジストラと、ホスティング事業者またはCDNに送り、まねされたブランドにも知らせます。
ドメインがメールで届いたなら、まず Baitback から始めましょう。メッセージのソース全体を貼り付ければ、ツールが送信元サーバーとそのホスティング事業者を見つけ、怪しいリンクを指摘し、通報文を用意します。ブラウザ各社のサービス(Google Safe Browsing、Microsoft、Netcraftなど)も案内してくれます。これらは数時間のうちに、すべての訪問者に赤い警告を表示できます。
- 目には同じ2つの文字が、コンピューターにとっては別の文字であることがあります。それがホモグリフです。
- PunycodeはUnicodeの名前を、
xn--で始まるASCIIの形に変換します。 xn--はそれ自体では怪しくありませんが、普通のはずの名前やブランドをまねた名前にあれば怪しいサインです。- ドメインは見た目ではなく、リンクをコピーして確かめ、ブックマークや公式アプリから開きます。
- 名前の両方の形を添えてレジストラに通報します。停止されれば、すべてが一度に止まります。