Jamf ブログ
November 2, 2018 投稿者 Liarna La Porta

What is Punycode? Fake domains that deceive the human eye

Punycodeとは何か

Punycode
名詞
とは、ギリシャ語で「ありがとう」を意味する「ευχαριστώ」のようにASCIIでは書けない単語をドメイン名として使用するために「xn--mxahn5algcq2e」のようにASCIIエンコーディングに変換されたUnicodeです。
それが一体、私たちにどのような影響を及ぼすのか、このブログでご説明します。

数字による記述

コンピュータでは結局のところ、すべては数字に行き着きます。私たちが入力するすべての文字、キャラクター、絵文字には、コンピュータが処理できるようにするために固有の2進数が紐付いています。文字符号化標準の1つであるASCIIは、7ビットで最大127文字を符号化することができ、アルファベットの大文字、小文字、数字の0〜9、さらにいくつかの特殊文字をコード化するには十分です。ASCIIの問題は、ギリシャ語、ヘブライ語、アラビア語などの言語に対応していないことです。そこで登場したのが、32ビットを使って最大21億4,748万3,647文字をコード化可能なUnicodeです。Unicodeにより、すべての言語と、増え続ける絵文字のコレクションを十分にサポートできるようになりました。

Punycodeが必要になる場面

Punycodeは、ASCIIで書けない言葉をUnicodeのASCIIエンコーディングに変換する方法です。これが必要になる理由は何でしょう。インターネットに接続されたあらゆるリソースの命名システムであるグローバルなドメイン名システム(DNS)で使用できるのは、ASCII文字に限定されています。しかしPunycodeを使用して、複雑なエンコーディングプロセスの一部としてUnicodeの「bootstring」エンコーディングを作成すれば、ドメイン名に非ASCII文字を含めることができます。

Punycode攻撃の仕組み

肉眼で同じに見えるUnicode文字が、実際には異なるウェブアドレスを持っていることがあります。現代の言語の大部分で使用されているローマ字の中には、ギリシャ語やキリル文字などのアルファベットと同じ形をしているものがあるため、攻撃者は一部のASCII文字をUnicode文字に置き換えたドメイン名を簡単に立ち上げることができます。例えば、通常のTとギリシャ語のτ(タウ)を入れ替えると、ユーザにはほとんどTと同一に見えても、実際にコンピュータが読み取るPunycodeはxn--5xaです。ブラウザがアドレスバーにこの情報を表示する方法によっては、人間がこのように小さな文字による偽装に気付くことは不可能です。
この手法はホモグラフ攻撃と呼ばれています。URLは正規のものに見え、ページ上のコンテンツも一見同じに見えますが、実際は被害者の機密データを盗んだり、ユーザのデバイスを感染させたりするために立ち上げられた別のWebサイトです。これらの攻撃では、フィッシング、強制ダウンロード、詐欺などのよくある手法が使用されます。

ただブラウザを使うだけでPunycodeが問題を起こす?

多くのウェブブラウザはデフォルトで、ドメインがUnicode文字を表現するためにPunycodeを使用していることをウェブブラウザに知らせるために、ACE(ASCII互換符号化)プレフィックスとして知られる「xn--」プレフィックスを使用します。これは、ホモグラフフィッシング攻撃に対する防御策です。しかし、Punycodeプレフィックスを表示しないブラウザでそのドメインにアクセスしようとしている人は何も分からないままです。
ハッカーは、プレフィックスを使用しないブラウザの脆弱性を利用して、偽のドメイン名を正規サービスのウェブサイトであるかのように表示し、ユーザからログイン情報、クレジットカード番号、その他の機密情報を盗み出すことができます。
この例では、中国のセキュリティ研究者であるXudong Zheng氏が、xn--80ak6aa92e.comというドメイン名を登録して当時Chrome、Firefox、Operaなど脆弱なすべてのウェブブラウザで「apple.com」として表示させて、保護を回避する抜け穴を発見したことが紹介されています。Internet Explorer、Microsoft Edge、Apple Safari、Brave、Vivaldiは脆弱ではありませんでした。
Jamfが実施した最近の調査によって、2大ウェブブラウザであるChromeとSafariにおいて、以下のような挙動が確認されています。

  • Chrome-しばしば未変換のPunycodeがプレフィックス付きで表示されます。怪しいサイトかどうか不明な場合はUnicodeに変換されませんが、サイトへのアクセスは許可します。悪意のあるサイトであることが確認されると「この先は詐欺サイトです(Deceptive site ahead)」という警告を表示します。
  • Safari-ほとんどの場合、PunycodeはUnicode文字に変換されます。悪意のあるサイトであることが確認されると「この先は詐欺サイトです(Deceptive site ahead)」という警告を出しますが、それでもPunycodeはUnicode文字に変換されます。

Punycode攻撃はモバイルアプリでも起こりうる?

各種ブラウザの開発者はプラットフォームに関係なくPunycodeを同じように扱う傾向があるため、Punycode攻撃はデスクトップとモバイルの両方で起こり得ます。つまり、Unicodeがあるデバイスでユーザに表示されるのであれば、他のプラットフォームでも表示されるはずです。現在Punycodeに関する研究のほとんどは、ブラウザがこれらのドメインをどのように扱うかに焦点を当てていますが、私たちの研究はブラウザに限らず、アプリによるPunycodeの扱い方についても同様に重要であることを示しています。従業員によって広く使用されているコミュニケーションツールやコラボレーションツールがPunycodeドメインを疑わしいと判定しないことが私たちの検証で確認されました。iOSおよびAndroidデバイスで次のアプリをテストしました。Gmail、Apple Mail、iMessage、Message+、WhatsApp、Facebook Messenger、Skype、Instagram。Facebook Messenger、Instagram、Skypeだけが、xnプレフィックスの付いたWebページのプレビューを表示して、ユーザにPunycode URLかどうか判別させる機会を提供しました。SkypeではUnicodeを使用するドメインのハイパーリンクを表示しないことで、ユーザがメッセージをクリックして遷移できないようにしています。これらのアプリケーションは最良の防御策を提供しているわけではありませんが、少なくとも疑わしいリンクをより注意深く判定する機会を提供しています。

大半のアプリは悪意のあるUnicodeを表示することにより、悪質なサイトを検出するためのセキュリティを提供するよりも、より優れたユーザ体験を提供することに重きを置いているように見えます。これらのアプリの開発者は、こうした攻撃から効果的に防御するために、何重ものセキュリティを確保する責任があります。

Punycode攻撃がモバイルでより深刻な問題になる理由

モバイルに対するPunycode攻撃を調査したところ、悪意のあるドメインが新たに多数確認されました。また、ユーザを視覚的に欺くドメインでフィッシング攻撃を仕掛けるこれらのサイトは、モバイル向けに最適化されています。つまり、モバイルユーザは悪意のあるURLを見分けることが難しいことにハッカー達は気付いているということです。モバイルユーザをターゲットにした攻撃の方が、より多くのフィッシングキャンペーンを成功させています。
一般的にフィッシング攻撃が様々な理由で発見困難なモバイルでは、次の理由から、Punycodeが紛れ込むと適切に表示させることはほぼ不可能です。

  • 画面サイズが小さいので、Webサイトの正当性を評価するスペースも小さい。
  • OSのデザイン上、ユーザがスクロールダウンしてページの内容を表示するスペースを作ると、ただでさえ小さなアドレスバーが隠されてしまうのが一般的。
  • ユーザは急かされるとページや通知を読み飛ばす傾向がある。
  • マウスオーバーやプレビューの機能がないため、ユーザがクリックする前にリンク先を見たり評価したりできない。
  • 次のドメイン名のどこにUnicode文字があるか分かりますか?

絵文字ドメインの普及とその影響

異なる言語の特殊文字がPunycodeとしてエンコードできるのと同様に、普及が著しい絵文字のライブラリもPunycodeとしてエンコードできます。絵文字ドメインとは、文字通り絵文字を含むドメインです。例:www��.com。Punycodeはこのようなドメイン名に不可欠です。
以下にJamfのインテリジェント機械学習マシンであるMI:RIAMが特定した最近の事例を紹介します。

20の有名ブランドによるPunycodeの実例

2017年からWanderaはゼロデイフィッシング研究でPunycode攻撃を発見し続けています。ここ12ヶ月間でPunycodeドメインの数が250%増加したことが分かっています。

いくつかサンプルを確認したところ、WhatsApp上でリンクを共有する代わりに賞品を提供する抽選を表示し、ユーザが戻るボタンを何度も押すと、他の詐欺ページにリダイレクトしたりするものがありました。ほかには、すぐに他のサイトに移動して、ソフトウェアのアップデートに関するアプリのダウンロード広告を表示するものもありました。

発見し文書で公表するとすぐに、これらのサイトのコンテンツは大部分が削除されました。このことが、ハッカーの動きがいかに速いかの証左といえます。また、我々が確認している他の形式のフィッシング攻撃と一致します。

私たちの調査によると、新しいフィッシングサイトは20秒に1つ作成され、ハッカーがそれを削除して別のドメインを作成するまで、通常4時間ほどしか公開されないことが分かっています。痕跡を隠し、検出されないようにするための巧妙な方法です。

Punycode攻撃を回避するための7つの方法

  1. 何かしらアクションを急かしてくるサイトに気を付けるこれは、ハッカーがカモとなる対象者を急がせ、不審点に気づかせにくくするための古典的戦略です。多くの場合彼らは「期間限定」の条件を提示し、「本当に終了しますか」というポップアップでページから移動し難くしてきます。これらはすべて、サイトに長く滞在させ、あなたの情報を提供させるための戦術です。
  2. 取引が提示されたら、オリジナルの企業サイトに行き、そこにも同じオファーがあるかどうか確認しましょう。存在しなければ、既存のブランドを模倣し、訪問者を騙して個人情報を盗み取ろうとする詐欺である可能性が高いです。
  3. アドレスバーの文字が変だったり、サイトのデザインがいつもと違って見えたりする場合は、アドレスを手入力し直すか、新しいタブからオリジナル企業のURLにアクセスして見比べてください。アドレスバーの文字が変に見えたら、実際には悪意のあるサイトに移動させられているのに、有名ブランドのサイトにアクセスしているかのように騙そうとPunycodeが使われていることを示す重要なサインです。
  4. パスワードマネージャを使用する。怪しいサイトにパスワードを貼り付けるリスクが減ります。
  5. ブラウザにPunycode名を強制表示させる。このオプションはFirefoxで利用可能です。
  6. 南京錠のアイコンをクリックすることでHTTPS証明書を表示して検査できます。
  7. モバイルセキュリティソリューションを利用する。例えばJamfは、MI:RIAMの機械学習と人工知能を利用してすべてのデータトラフィックを監視することで、こうしたフィッシング詐欺のリンクを検出、ブロックします。

Jamfのセキュリティ製品をモバイルフリートに導入することで、デバイス、ユーザ、データを保護して、このような詐欺攻撃から組織内のユーザを守りましょう。

Photo of Liarna La Porta
Liarna La Porta
Jamf
Liarna is a communications pro with seven years of experience in the cybersecurity industry. She works closely with Jamf’s threat researchers and data analysts to unearth the latest security trends.
ブログ購読

マーケットトレンド、Apple の最新情報、Jamf のニュースをメールでお届けします。

当社がお客様の情報をどのように収集、利用、移転、および保存するかに関しては、プライバシーポリシーをご参照ください。