Serious Security: BitB (Browser-in-the-Browser) 攻撃の解説

** 本記事は、Serious Security: Browser-in-the-browser attacks – watch out for windows that aren’t! の翻訳です。最新の情報は英語記事をご覧ください。**

脅威インテリジェンス企業 Group-IB の研究者が、BitB (Browser-in-the-Browser: ブラウザ内ブラウザ) 攻撃と呼ばれる、驚くほど単純でありながら効果的なフィッシング攻撃の手口について、興味深い実話を紹介しています。

BitB 攻撃以外にも、X-in-the-Y 攻撃と呼ばれる攻撃はいくつか存在します。特に MitM (Manipulator-in-the-Middle) 攻撃と MitB (Manipulator-in-the-Browser) 攻撃が有名です。

MitM 攻撃では、被害者のコンピューターとアクセス先のサーバーの間の「中間地点」のどこかに攻撃者が位置取ります。

(地理的にもホップ数的にも、文字通りの「中間地点」ではないかもしれませんが、MitM の攻撃者は両端ではなく、コンピューターからサーバーまでの経路内のどこかに潜んでいます。)

MitM 攻撃の本質は、被害者のコンピューターやアクセス先のサーバーに直接侵入することではありません。攻撃の根幹となるのは、被害者が攻撃者に接続するように誘導することで (あるいは、一度パケットがルーターから出てしまうと簡単には制御できないネットワークパスを故意に改ざんして)、本来の接続相手のふりをする、悪意のあるプロキシです。

攻撃者はパケットを本来の接続先に渡しますが、その途中でパケットを盗み見たり改ざんしたりします。その後正式な返信を受け取ると、そのパケットも盗み見たり改ざんしたりした上で、あたかも通常のエンドツーエンド接続が行われたかのように装ってパケットを返します。

HTTPS など、エンドツーエンドの暗号化を使用してトラフィックの機密性 (盗み見防止のため) と完全性 (改ざん防止のため) の両方を保護していない場合、たとえ何者かがデジタルデータを転送中に一度盗み見してから再度暗号化していたとしても、そのことに気づくのは非常に困難です。

MitB 攻撃

MitB 攻撃も似たような仕組みを持ちますが、MitM 攻撃の妨げとなる、HTTPS を利用した防御を回避しようとします。

MitM 攻撃では、攻撃者は HTTPS で暗号化されたトラフィックには容易に侵入できません。データを保護するために各端末が使用する暗号化キーを所持していないため、データを盗み見できません。また、各端末の暗号検証によって警告が出されるため、暗号化されたデータを改ざんできません。さらに、接続先のサーバーが身元証明のために所持している、暗号化された秘密鍵を所持していないため、そのサーバーになりすますこともできません。

したがって、MitB 攻撃を行うには、まず標的のコンピューターにマルウェアを侵入させる必要があります。

一般的に、マルウェアを侵入させるのはネットワークのいずれかの地点に単に侵入するよりも大変ですが、一度侵入に成功すれば、攻撃がかなり容易になります。

なぜなら、攻撃者がブラウザの中に侵入できるということは、ブラウザが実際に送信するネットワークトラフィックを、暗号化される前後に盗み見たり改ざんしたりできることを意味するからです。そのため、送信時や、ブラウザによる復号化後の HTTPS 保護が無効化され、サーバーが返信を保護するために適用される暗号化も無意味になります。

BitB 攻撃

では、BitB 攻撃とはどのような攻撃なのでしょうか。

BitB 攻撃という表現には少し語弊があり、MitM 攻撃や MitB 攻撃ほど強力な攻撃ではありません。しかし、その手順は驚くほど単純で、特にユーザーが急いでいるときには簡単に引っかかってしまいかねません。

BitB 攻撃の本質は、一見ブラウザ自体によって安全に生成されたポップアップブラウザウィンドウのように見えるが、実際には既存のブラウザウィンドウにレンダリングされた Web ページを生成する、というものです。

しかし、仮に X という Web サイトのコンテンツを Y という Web サイトのものに見せかけようとしても、ブラウザ上では X という Web サイトの URL が表示されるため、このような仕掛けは上手くいかないようにも思えます。

アドレスバーに一瞬でも目をやれば、現在表示されているのが虚偽の情報であり、アクセス先がフィッシングサイトであることは一目瞭然です。

たとえば、以下のスクリーンショットは Mac 上で動作する Firefox で、example.com という Web サイトにアクセスした時のものです。

本物のブラウザウィンドウ「example.com」の Web サイトにアクセスした時の Mac 版 Firefox

偽サイトが元サイトのコンテンツを忠実にコピーしていた場合、その見た目に引っかかってしまうかもしれませんが、アドレスバーを見れば本物の Web サイトでないことは一目瞭然です。

したがって、BitB 攻撃の攻撃者は、ユーザーがアクセスしようとしている Web サイトやコンテンツのように見える Web ページを作成し、ウィンドウの外見やアドレスバーも含めて、できるだけリアルに再現することに焦点を当てています。

ある意味で、BitB 攻撃は科学というよりは芸術です。ネットワークのハッキングというよりは、Web デザインと標的の心理予測がその本質なのです。

たとえば、以下の 2 枚のようなスクリーンショットを作成し…

…以下のような簡単な HTML コードを用意することで…

<html>
   <body>
      <div>
         <div><img src='./fake-top.png'></div>
         <p>
         <div><img src='./fake-bot.png'></div>
      </div>
   </body>
</html>

…既存のブラウザウィンドウの中に、ブラウザウィンドウのようなものを作成します。

一見して Firefox のブラウザウィンドウのように見える Web ページ

上記の例は極めて簡略化したものであるため、左上の 3 つの macOS ボタン (閉じる、最小化、最大化) をクリックしても何も起こりません。これらは実際のシステムウィンドウのボタンではなく、ボタンの写真に過ぎないからです。また、「Firefox ウィンドウ」のアドレスバーに見える部分もただのスクリーンショットに過ぎないため、クリックしたり編集したりすることはできません。

しかし、上述の HTML に、今度は IFRAME を追加し、example.com とは全く関係のない Web サイトから偽のコンテンツを取り込むと、以下のような「ウィンドウ」が表示されます。

<html>
   <body>
      <div>
         <div><img src='./fake-top.png' /></div>   
         <div>https:/dodgy.test/phish.html</div>
         <div><img src='./fake-bot.png' /></div>
      </div>
   </body>
</html>

実際にはブラウザウィンドウの中に表示される Web ページであるにもかかわらず、表示される画面は、見た目上は独立したブラウザウィンドウそのものです。

スクリーンショット内のテキストとクリック可能なリンクは、上記の HTML ファイル内の dodgy.test という HTTPS リンクからダウンロードされたもので、以下の HTML コードで確認できます。

<html>
   <body style='font-family:sans-serif'>
      <div style='width:530px;margin:2em;padding:0em 1em 1em 1em;'>
         <h1>Example Domain</h1>

         <p>This window is a simulacrum of the real website,
         but it did not come from the URL shown above.
         It looks as though it might have, though, doesn't it?

         <p><a href='https://dodgy.test/phish.click'>Bogus information...</a>
      </div>
   </body>
</html>

最上部のアドレスバーのスクリーンショットと、HTML テキスト先頭と末尾のページデザインで、その HTML が本当に example.com のものであるかのように偽装しています。

上: ウィンドウコントロールとアドレスバーの画像
中央: IFRAME で取り込んだ偽コンテンツ
下: 偽ウィンドウの下端の画像

Linux など、別の OS でこの偽ウィンドウを表示すると、Linux 版の Firefox ウィンドウの中に Mac 風の「ウィンドウ」が表示されるため、明らかに違和感があります。

偽の「ウィンドウ風画像」が、浮かび上がってくるのです。

偽ウィンドウが Web ページとしてはっきり表示される様子
最上部が実際のウィンドウコントロールとアドレスバーです。

思わぬ落とし穴

アプリのスクリーンショットを撮影し、後にフォトビューワーでそのスクリーンショットを開いた際に、うっかりそのアプリの画像を実行中のアプリだと思って操作しようとしてしまったことはないでしょうか。

少なくとも一度は、アプリの中のアプリの画像をクリック/タップして、アプリが動かないことに首をかしげたことがあるのではないでしょうか。(そうでない方もいらっしゃるかもしれませんが、私たちは何度もその経験があります。)

もちろん、フォトビューワーでアプリのスクリーンショットをクリック/タップしたとしても、想定通りに動作するわけではないため、ほとんど危険はありません。せいぜい画像が編集されたり、線が引かれたりする程度でしょう。

しかし、BinB の「アートワーク攻撃」では、偽ウィンドウの内部を誤ってクリックしたりタップするのは危険です。なぜなら、操作を行った箇所は JavaScript が実行されているアクティブなブラウザウィンドウであり、リンクも機能しているからです。

想定と異なるブラウザウィンドウを操作しているだけでなく、想定と異なる Web サイトにアクセスしているのです。

さらに悪いことに、アクティブなブラウザウィンドウで実行されている JavaScript (偽サイトに由来するもの) は、ドラッグやサイズ変更など、本物のブラウザポップアップウィンドウで行える動作をシミュレートすることで実物に似せています。

冒頭で述べたように、急いでいる時に予期していたものと似たようなポップアップウィンドウが表示され、リアルなブラウザのボタンに加え、予期していたものと同じアドレスが「アドレスバー」に表示されていたとしたら、
偽ウィンドウを本物と見間違えてしまうこともあり得るでしょう。

狙われる Steam ユーザー

上述の Group-IB の調査で実際に遭遇した BinB 攻撃では、ゲーム販売プラットフォーム Steam がおとりとして使用されていました。

たとえば、聞いたことはなくとも、一見して正規の Web サイトが、これから開催されるゲーム大会への出場権を餌にユーザーを誘き寄せます。

その Web サイトは Steam のログインページをポップアップさせるフリをしつつ、実際にはブラウザ内に偽のブラウザのウィンドウを表示します。

上述の研究では、攻撃者が BitB の仕掛けを使ってユーザー名とパスワードを窃取しようとしただけでなく、Steam Guard の偽ポップアップウィンドウを表示して 2 要素認証コードも要求したことが報告されています。

幸いなことに、Group-IB が提示したスクリーンショットによると、今回観測された攻撃者は、偽サイトの意匠やデザインにそれほど注意を払っていなかったため、ほとんどのユーザーは偽サイトを見破ったと思われます。

しかし、十分な知識を持っていても、急いでいたり、友人宅などで慣れないブラウザや OS を使っていた場合、違和感に気づかないかもしれません。

また、すべての詐欺メールにスペルミスがあるわけでは無いように、より几帳面な犯人が、よりリアルな偽コンテンツを作成し、より多くの人からアクセス認証を窃取しようとする可能性があります。

対策

ここでは、3 つのアドバイスを紹介します。

  • BinB 攻撃で表示されるブラウザは、本物のブラウザではありません。ボタンやアイコンが本物そっくりに作られているため、OS のシステムウィンドウのように見えるかもしれませんが、OS のウィンドウのようには動作しません。本来の通り、Web ページと同様に動作します。怪しいと思ったら、そのウィンドウを、後ろのメインブラウザウィンドウの外にドラッグしてみてください。本物のブラウザウィンドウは独立して動作するので、元のブラウザウィンドウの外側や奥に移動させることができます。偽のブラウザウィンドウは、いかに攻撃者が JavaScript を駆使して、可能な限り本物同様に動作させようとしても、表示されている本物のウィンドウの中に「閉じ込められ」ます。この操作で、ウィンドウが本物ではなく、Web ページの一部であることをすぐに判別できます。
  • 疑わしいウィンドウは注意深く調べましょう。Web ページ内で OS システムウィンドウの見た目と操作感を正確に再現するのは、かなり大変です。数秒間かけて、怪しい箇所や違和感のある箇所を探してみてください。
  • 少しでも疑わしいと感じた時は、操作をやめましょう。聞いたこともない、信頼する理由もない Web サイトが突然、第三者のサイト経由でログインを求めてきたら、疑ってかかることです。

決して焦らず、ゆっくり時間をかけることで、思い込みによる誤認を回避できる可能性が高くなります。

キーワードは以下の 3 つです。立ち止まる。考える。確認する。