Punycodeでマルバタイジング

ほぼこもセキュリティニュース By Terilogy Worx

Punycodeというものがあります。
Punycodeは、国際化ドメイン名で使われる文字符号化方式です。
Punycodeを使うことで、Unicodeで書かれた文字列をDNSで使用できるようになります。
自組織のホームページのURLを日本語で構成することなどが実現できます。

実際には、ドメイン名がマルチバイトのままで処理されているわけではありません。
日本語などの非アスキーの文字についてはPunycodeに変換され、結果としてドメイン名で使用可能なアスキー文字のみの状態となって処理されます。
しかし、DNSシステムやWebブラウザなどの、Webシステムを構成する必要な各要素がPunycodeに対応しているため、利用者はPunycodeの存在を意識することなく、そのまま利用できます。
通常、これは便利です。

世界には、いろいろな言語があります。
ドイツ語のウムラウトは、アスキー文字のaやoやuなどの文字の上に、ドットが2つ付いたような文字です。
これはダイアクリティカル・マークと呼ばれるもので、ラテン文字等において、発音を区別すべき文字に付される補助記号です。
いろいろなものがあります。
アキュートアクセント(Acute Accent)、上ドット(Dot Above)、上フック(Hook Above)、上リング(Ring Aboce)、オゴネク(Ogonek)、キャロン(Caron)、グレーブアクセント(Grave Accent)、サーカムフレックスアクセント(Circumflex Accent)、下コンマ(Comma Below)、下ドット(Dot Below)、ストローク(Stroke)、セディラ(Cedilla)、ダイエレシス(Diaeresis)、ダブルアキュートアクセント(Double Acute Accent)、チルド(Tilde)、ブリーブ(Breve)、ホーン(Horn)、マクロン(Macron)、リガチャ(Ligature)、といったものがあります。
このうちのいくつをご存じでしょうか。
ウムラウトは、ダイエレシス(Diaeresis)の1つです。

これらはUnicodeで表現できます。
つまり、ドメイン名に使うことができます。

これを悪用したマルバタイジングが、また確認されています。
今回残念ながら選ばれてしまったのは、KeePassでした。
KeePassは、フリーでオープンソースのパスワードマネージャーです。
利用者が多いパスワードマネージャーの一つです。
これの正規のサイトのドメイン名は「keepass.info」です。
そしてマルバタイジングで使われたドメイン名は、この先頭の「k」に下コンマ(Comma Below)が付いた文字が使用されました。

そして検索の広告で、正規のサイトよりも上にマルバタイジングサイトが表示される状態になっていました。
検索結果では、Webページのコンテンツのタイトルなどが読み取られて表示される関係で、タイトルに使用する文字列にダイアクリティカル・マークを使用しない状態にすれば、完全に区別がつかない仕上がりにできます。

こうして誘い込みの準備は整いました。
偽サイトに訪問したユーザは、偽サイトに用意されたMSIファイルをダウンロードします。
MSIファイルはkeepassのインストーラーとして提供されているものです。
正規のサイトではこれはkeepassのインストーラーです。
偽サイトのMSIはマルウェアを届けます。

Punycodeそのものは、新しいものではありません。
しかし、ここにWeb検索の広告の機構とうまく組み合わせることで、本物と区別することができそうにない仕上がりでマルバタイジングを実現することができてしまいます。

あなたが今日ダウンロードしたそのファイルは、正規のサイトからのものでしたか?

参考記事(外部リンク):Clever malvertising attack uses Punycode to look like
KeePass’s official website

www.malwarebytes.com/blog/threat-intelligence/2023/10/clever-malvertising-attack-uses-punycode-to-look-like-legitimate-website