セキュリティの重要課題: リンクの代わりに自前の Web ページを利用するフィッシングメール

この数日間で、私たちは 2 例のフィッシングメールを受け取りました。1 つは読者から報告されたもので、もう 1 つは Sophos へ直接送られてきたスパムメールですが、いずれも紹介するに値する有益なサンプルです。

私たちが知る限り、これらのフィッシング詐欺は、2 つの異なる犯罪組織が行っているもので、いずれも知っておくべき共通の手口を使っています。

フィッシング詐欺の 3 ステップ

皆さんも日々数百、数千と受け取っているであろうほとんどのフィッシングメール詐欺は、3 段階のプロセスを踏みます。

  • ステップ 1: メールの文中の URL

フィッシングメールには、未払いの電気代、宅配便の不在通知、銀行のオンラインアカウントへの不審なログイン、期間限定セール、またそのほか多岐にわたる詐欺の文言が盛り込まれています。

ある時は、詐欺師は実際にあなたの名前、電話番号や、住所さえ知っていることがあります。

あるいは、そういった情報を一切知らず、「お客様」、「拝啓」、「こんにちは」といった書き出しのこともあります。

またある時は、あなたが利用している電気会社や銀行の名前を知っていたり、それらを知らなくても、運よく的中させたり、あるいは汎用的な文章で誤魔化して被害者の注意を引くこともあります。

効果的なフィッシングメールは、長々としたテキストを含んでいる必要はありません。必要なことは、絶妙なタイミングで標的の注意を引いてリンクをクリックさせることだけです。

フィッシングメールのリンクを開いた後に何をするかが問題となるので、リンクをクリックすること自体には危険性はありません。しかし、それによって問題へと一歩近づくことには間違いないでしょう。

  • ステップ 2: ログインが要求される Web ページ

通常、リンクをクリックした先にはパスワードを入力するログインページが表示されます。このページは多くの場合どこかの Web ページに瓜二つなクローンサイトで、本物のページの HTML や画像、フォント、スタイルシートや JavaScript などを盗んで別の場所に設置したものです。

また、サイバー犯罪者は標的を騙すため、正当な Web サイトをハッキングし、そこに偽物の Web ページを設置することがあります。

パッチが適用されていないブログサイトは、サイバー攻撃者の格好の標的です。なぜなら、こういったサイトのディレクトリ構造の深部には、一見して完全に無害で、かつ検知されにくい場所が見つけやすいからです。このようなサイトでいくつかの画像や HTML ファイルが追加されたとしても、管理者に察知されることは稀です。

あるいは、偽物の Web ページは一時的な Web サイトのホスティングアカウントを利用している場合もあります。「無料トライアル」としてほんの数日前に作成され、すぐに閉鎖される予定だった Web サイトをサイバー犯罪者が乗っ取り、そのまま運営するというパターンです。

  • ステップ 3: ログインフォームに入力したデータが集約される Web サイト

盗まれたデータが集められる「ドロップサイト」として、ステップ 2 で使用されたサイトと同じサイトが使われることもあれば、複数の異なるフィッシング詐欺から同時にデータを収集することが可能な第三のサイトを使用することもあります。

技術的な話をすると、ステップ 2 のサイトへのクリック可能なリンクは、ステップ 1 のメール内にハイパーリンクと呼ばれるものとして表示され、以下のように <A ...> と書かれたアンカータグを使用して HTML にエンコードされます。

<A></A> の間のテキストは通常、ブラウザに青色で表示され、これはリンクをクリックすることで指定の場所へジャンプできます。

ただし、このクリック可能なテキスト自体は、ジャンプする先の場所ではありません。

リンクの移動先、多くの場合 Web サイトの URL は、<A> と合わせて現れる HREF=... に続く値により指定されます。

(適切な用語を解説すると、<A> の部分は「タグ」、</A> の部分はそれに対応する「クロージングタグ」として知られています。HREF=... の部分は、タグの属性/em>と呼ばれます。)

「パスワードスティーラ」は何か

通常、フィッシング詐欺におけるパスワード詐取の役目を果たす偽のログインフォームは、ステップ 2 の偽の Web ページのどこかに表示されます。

また先ほど説明した通り、ステップ 2 の Web サイトはステップ 1 のフィッシングメール内で HREF=... によって参照されます。

ログインフォームには、以下のように <FORM> と呼ばれる HTML タグが利用されています。リンクの移動先を指定する HREF=... タグと異なり、FORM タグは ACTION=... と呼ばれる属性により、ブラウザが入力した値をどこにアップロードするかを指定します。

データの入力を完了し、同時に入力したデータのアップロードを確認する役割のボタンは、上記の例のように TYPE="submit" という属性を持つ <INPUT> タグで示されます。

ハイパーリンクにカーソルを合わせたときと同じように、フォームの送信ボタンにポインタを合わせればデータの行き先がポップアップで表示されるのでは、と思われたかもしれません。しかし残念ながら、このような機能を持つブラウザは存在しません。

ステップ 2 を省略

記事の最初に述べた、Sophos へ直接送られてきたフィッシングと、親切な読者から報告されたフィッシングは、いずれもここまで述べた 3 ステップの原則に従って作成されています。

しかし、一方で 1 つの大きな違いもありました。

それらのフィッシングメールは、ステップ 2 のクローンサイト上の偽のログインページへ標的を誘い出す際に、フィッシングメール内にリンクを貼り付けることはしません。

代わりに、偽の Web ページが HTML の添付ファイルとして以下のように表示されます。

HTML の添付ファイルを開くことに、それほど危険は感じないかもしれません。それはマクロが仕組まれているようなドキュメントではありませんし、即座に被害を引き起こす PowerShell ファイルや実行可能プログラムでもないからです。

理論上は、HTML の添付ファイルをクリックすると、リンクをクリックしたときと同じように、比較的安全なブラウザのサンドボックス上でファイル内の Web ページを開くことになります。

以下がその結果です。

HTML の添付ファイルを上のように開くことと、従来のリンクをクリックして開くことの間には、2 点の大きな違いがあります。

  • メールの中にはリンクがないため、ドメインネームが偽造や疑わしいものであることをあらかじめ確認することはできません。
  • アドレスバーの URL は一見して無害なローカルファイル名であり、Web サイト名や HTTPS 証明書を確認して詐欺の兆候を察知することもできません。

HTML の添付ファイルを開くべきではない理由はほかにもあります。JavaScript です。安全性向上のため、現在普及しているメールソフトではメッセージ表示の際に HTML メール内のスクリプトコードは削除またはブロックされるようになっています。これは、何十年も前に Kakworm といった自己拡散型のスクリプトウイルスが大流行したことためにメールソフトが導入した予防策です。Kakworm のスクリプトコードは標的が何かをクリックすることは必要とせず、メールが表示されただけでアクティブになり、ウイルスの拡散が始まります。しかし、HTML の添付ファイルを一度開いてしまえば、上記のようなメールクライアントの厳格な対策は機能せず、HTML ファイル内の JavaScript はブラウザによってデフォルトで実行可能な状態となります。

以下はもう 1 つの例です。このフィッシングメールは、国際的な送金サービスとして有名な SWIFT による送金の受取通知を装っています。

当然、Microsoft も SWIFT もこのメールにはまったく関わっておらず、実際には送金などされていません。

このメッセージはただ標的を騙して添付ファイルを開かせるための口実であり、添付ファイルから開かれたログインページからパスワードをフィッシングします。

一見して無害なアドレスバー

クリックできるリンクは存在しないため、添付ファイルを開いたあとにブラウザのアドレスバーを確認するしか、開いた Web ページの安全性を確認する手段はありません。

しかし、上の画像から分かるように HTML ファイルがローカルで開かれているため、アドレスバーにあるのは file:// から始まるローカル URL であり、http://https:// で始まるようなアドレスは表示されません。

ローカルの一時ファイルを開いているだけなので、暗号化や TLS 証明書の有無を確認することもできません。

ISophos へ送られてきたフィッシングメールはわかりやすいファイル名だったので、上記の画像では編集を行わずそのままのファイル名を表示しています。

file:///tmp/mozilla/Proforma Invoice.html
file:///tmp/mozilla/Payment 66603635.html

上記の URL は Linux のメールクライアントと Firefox ブラウザを使ったテストで表示されたものですが、ほかのプラットフォームでも表示内容は同様です。

Windows 上では、以下のような表示となります。

FORM データを追跡

ここまで説明したように、上記の偽の HTML ページのフォームに認証情報を入力すると、サイバー犯罪者が管理する Web サイトにパスワードが送信されます。

言うまでもなく、多くの人々は所有するアカウントのほとんどでパスワードリセットのためにメールアカウントを使用しているため、メールアカウントのパスワードはサイバー犯罪者にとって最も価値のある認証情報の 1 つです。

すなわち、あなたのメールアカウントを乗っ取ったサイバー犯罪者は、おそらくほかの多くのアカウントも乗っ取ることが可能になります。ほかのアカウントのパスワードリセットのメールが、すべてサイバー犯罪者の手の中に送信されるからです。気づいた時には、被害者の「デジタルライフ」そのものが乗っ取られることになります。

では、Web ページのフォームのデータの送信先を確認するにはどうすればよいでしょうか。

残念ながら、そういったことが可能なブラウザのビルトインの機能はありません。しかし、ブラウザの開発者ツールを使うという方法があります。

たとえば、Edge では、F12 キーを押して「要素」タブを選択すると、Web ページの HTML 構造が視覚的に表示されます。

ACTION というテキストを検索すると (検索では大文字か小文字かは関係ありません)、次のように、ページ上のフォームに関連付けられている URL が表示されます。

上記の画像内では URL を編集していますが、明らかに Microsoft の製品やサービスと関係なく、すぐに不正なログインフォームと分かるようなものでした。

Firefox でもやり方は似ています。Ctrl-Shift-I で、Mozilla の Inspector という開発ツールが表示されます。

Inspector」タブを選び、ACTION というテキストを検索します。こうすることで、ページ内のどのような形式のフォームであってもデータのアップロード先に利用されている URL を割り出すことが可能です。

Mac の Safari では、Option-Command-IInspector ツールを呼び出すことが可能です。Firefox などと同様に、ページ上の HTML の ACTION を検索することができます。

対策

幸いなことに、この手のフィッシング詐欺への対策については、一から予防策を習得する必要はありません。

必要なのは、以下の 5 点です。

  • HTM または HTML の添付ファイルはすべて、既知の送信元からのメールか、そういったものが来ることが分かっている場合を除いて、開くことを避けてください。実際、フィッシングメール以外でメール内に仕組まれた Web ページは見たことがありません。
  • メールのリンクをクリックするか、添付ファイルを開くなどしてアクセスした Web ページでは、ログインをしないでください。メール、ネットバンキング、ブログページ、SNS アカウントなど、すでに使用方法が分かっているサービスの場合は、メールを経由せずログインページに直接アクセスしましょう。ログインページを自分で開く方法が分かっていれば、偽物に惑わされることもありません。
  • 可能な限り、二要素認証を有効にしてください。二要素認証では、一般的に登録された携帯電話へのテキストメッセージか、専用のアプリによって生成される 1 回限りのログインコードが必要となります。二要素認証は、サイバー犯罪者の侵入防止を完全に保証するものではありませんが、万が一パスワードがフィッシングされたとしても、そのパスワードだけでは侵入はできなくなります。
  • フィッシング詐欺に巻き込まれたと思われる場合は、ただちにパスワードを変更してください。疑わしいサイトにパスワードを入力した後に、パスワードを変更するのが早ければ早いほど、サイバー犯罪者が入手したパスワードを悪用できる時間は短くなります。同様に、クレジットカードのデータを入力する「支払いページ」に到達し、それが詐欺であることに気付いた場合は、銀行の不正報告の窓口にすぐに電話してください (クレジットカードの裏面をよく確認して、正しい電話番号にかけましょう)。
  • Web フィルターの使用を推奨します。優れたウイルス対策ソフト (Sophos Home は Windows と Mac で無料で利用可能です) は、受信したコンテンツをスキャンしてマルウェアなどの侵入を阻止するだけでなく、外部への Web リクエストをフィルタリングしてパスワードなどの流出を阻止します。今回のような「クリックレス」攻撃の場合でも、パスワードの漏えいは外部への Web 接続に依存しており、これらは Web フィルターによってブロックすることができます。