フィッシングのHTMLメール等で、ちゃんとURLを確認しても正しそうに見えるのに、フィッシングサイトに繋がってしまう攻撃手法が紹介されていました。
今日発見したフィッシングメール。リンク部分にカーソル合わせても正規のドメイン・・にみえるけど、実は@以降のURLエンコードされた部分が不正ドメインです。アクセス先のドメインURLエンコードしてもちゃんとブラウザでアクセスできちゃうんですね・・・ pic.twitter.com/yL6oUfFPa4
— Koichi (@x64koichi) 2024年8月29日
この手法を使って、以下のように例を作ってみました。
こんなふうにURLが書いてあると、ソースを確認しても「https ://www.smbc-card.com/…」に繋がりそうに見えますが、実際にはヤフーの天気が表示されてしまいます。
<a href="https://www.smbc-card.com⁄login⁄user=foobar@%77%65%61%74%68%65%72%2E%79%61%68%6F%6F%2E%63%6F%2E%6A%70/%77%65%61%74%68%65%72/">www.smbc-card.com</a>
実際のリンク例
twitterで簡単な説明を書いたのですが、もう少し詳しく説明します。
あーなるほど。ユーザ認証の形式「https ://username:password@example.com」を利用しているのか。
— Kiyoshi SATOH (@stealthinu) 2024年8月29日
「https ://www .smbc.com/foo/bar@%74%72%65%77%62」の「www .smbc.com/foo/bar」部分がユーザ名として扱われるのね。アクセス先の「example .com」はURLエンコードされてて怪しくても気付けない。 https://t.co/sKNbV3xTy8
偽装手法
基本的な手法としてBasic認証のURL記述が利用されています。
Basic認証とは、ウェブサイトへユーザ名とパスワードでアクセス認証するための最も単純な認証方式の一つです。
Basic認証ではユーザ名とパスワードが必要ですが、URLにユーザ名とパスワードを含んだ形での記述が出来ます。
URLの形式は以下のようになっています。
https://username:password@example.com
- 接続するサイト: https://example.com
- ユーザ名: username
- パスワード: password
このときパスワードは省略して
https://username@example.com
と書くことが出来ます。
この形式を悪用し、攻撃者は以下のようなURLを作成しています。
https://www.smbc-card.com@weather.yahoo.co.jp/weather/
- 接続するサイト: https://weather.yahoo.co.jp/weather/
- ユーザ名: www.smbc-card.com
つまり、ぱっと見で接続先サイトに見えるところが実はユーザ名になっているわけです。
攻撃者さらに、下記のようにURLエンコーディングを使用して実際のアクセス先を隠蔽することで、より疑われにくいURLにしています。
https://www.smbc-card.com@%77%65%61%74%68%65%72%2E%79%61%68%6F%6F%2E%63%6F%2E%6A%70/%77%65%61%74%68%65%72/
さらに、一般的なスラッシュ「/」の代わりに分数スラッシュ「⁄」(U+2044)を使用しています。
ユーザ名部分に「/」が使えないのですが、U+2044のスラッシュならば使うことが出来ます。
これにより、ドメインだけでなくより自然にログイン用のURLっぽく偽装することが可能です。
https://www.smbc-card.com⁄login⁄user=foobar@%77%65%61%74%68%65%72%2E%79%61%68%6F%6F%2E%63%6F%2E%6A%70/%77%65%61%74%68%65%72/
ここまでしなくても、ドメイン名を見せかけることができれば十分に思いますが、ドメイン名(本来のユーザ名)の後ろに送付先のユーザID情報を持たせたいとかがあったのかもしれません。
対策方法
単に、真に接続する先のURLを確認してもらうだけでも難しいのに、このような方法があるというのを普通の人に認識してもらってURLの確認してもらうのはまず不可能だと思います。
なので究極的には「利用している会社からであっても、送られてきたメール・SNSメッセージのURLは開かない」に尽きると思います。
名前を騙られて送られてくるメールや、アカウントを乗っ取られて送られてくるメッセージもあるため、知っている相手から送られてきたものでも、タイミング的におかしければ信用しないべきでしょう。