PR

 「インターネットやWebサイトにアクセスする際には、まずは立ち止まって考えよう」と呼びかけるセキュリティ普及啓発サイトが、何者かに改ざんされるという事件が起こりました。今回は、この事件について解説しましょう。

共通するソフトウエアに着目

 筆者が今回の改ざん事件を知ったのは、Webサイトの改ざん情報を発信するTwitterのbot「JPドメイン Web改竄速報bot(@def_jp)」がきっかけでした。このbotは、「Zone-H」というセキュリティサイトの内容を発信しています。このWebサイトについては、以前本連載でも紹介しました。

 改ざんされたのは、フィッシング対策協議会が公開していた「STOP. THINK. CONNECT.」のWebサイトです(図1)。画面が改ざんされただけで、悪意のあるプログラムは仕掛けられていませんでした。攻撃されたのは2017年1月15日頃とみられています。フィッシング対策協議会は同日、Webサイトが改ざんされたことを公表。同キャンペーンサイトの公開を一時的に中止しました。そして1月26日には、中間報告を発表しました。

図1●フィッシング対策協議会のキャンペーンサイトが改ざん
図1●フィッシング対策協議会のキャンペーンサイトが改ざん
2017年1月15日、フィッシング対策協議会は「STOP. THINK. CONNECT.」のWebサイトが改ざんされたと発表した。画面を書き換えられただけで、悪意のあるプログラムは仕込まれていなかった。
[画像のクリックで拡大表示]

 攻撃者と思われる人物も、Twitterで改ざんしたことを報告していました。「Shin0bi H4x0r」というハンドルネームの攻撃者です。改ざんされたWebサイトには、「腕試しにやった」といった理由が書かれていました。さらに、Webサイトの別の箇所には「Kuroi'SH」という見覚えのあるハンドルネームが記載されていました。Kuroi'SHは、過去にこの連載で取り上げた事件に関わっていた攻撃者です(図2)。ただし、Shin0bi H4x0rとKuroi'SHは別人だと考えられます。

図2●過去の攻撃で見たことのあるハンドルネームを発見
図2●過去の攻撃で見たことのあるハンドルネームを発見
改ざんされたWebサイトの画面には、攻撃者のメッセージとして、「Kuroi’SH」というハンドルネームが記載されていた。この名前は別のサイト改ざんでも見たことがあり、過去にこの連載で取り上げたことがある。その際、筆者はこの攻撃者とTwitterでやり取りした。
[画像のクリックで拡大表示]

 Shin0bi H4x0rは、日本の「STOP. THINK. CONNECT.」キャンペーンサイトだけでなく、海外の同キャンペーンサイトなど複数のWebサイトを改ざんしていました(図3)。しかも、短時間のうちに立て続けに改ざんしたようです。

図3●他のセキュリティ普及啓発サイトも改ざんされた
図3●他のセキュリティ普及啓発サイトも改ざんされた
フィッシング対策の業界団体Anti-Phishing Working Group(APWG)が運営するWebサイトなどが複数改ざんされた。
[画像のクリックで拡大表示]

 このことから筆者は、改ざんされたWebサイトに共通の脆弱性があり、攻撃者はその脆弱性を利用して短時間で複数の攻撃を成功させたのではないかと推測しました。

不審なスクリプトが挿入された

 Webサイトで利用されているOSやミドルウエアを調べるには、Google Chromeの拡張機能「Wappalyzer」を使うと便利です。拡張機能をWebブラウザーに追加し、メニューバーのアイコンをクリックすると、そのWebサイトを構成するソフトウエアの名前が表示されます(図4)。

図4●改ざんされたWebサイトで使われていたソフトウエアを調査
図4●改ざんされたWebサイトで使われていたソフトウエアを調査
Google Chromeの拡張機能「Wappalyzer」を使って、改ざんされたWebサイトの共通点を調べた。すると、多くのWebサイトで、同じOSやミドルウエアを使っていることがわかった。
[画像のクリックで拡大表示]

 改ざんされた複数のWebサイトにアクセスしてWappalyzerで調べたところ、多くのWebサイトでOSやWebサーバーソフトなどが共通していました。また、キャンペーンサイトの多くは似たデザインなので、コンテンツの管理に使うCMSも同じである可能性が高いと考えられます。

 次に、改ざんされたWebサイトのソースコードを調べました。改ざん後は全く別の画面に置き換わっていましたが、ソースコードはほとんど書き換えられていませんでした。一体どこが改ざんされたのかと注意深く見ていくと、不審なスクリプトが数行追加されていました(図5)。

図5●ソースコード内にスクリプトが挿入されていた
図5●ソースコード内にスクリプトが挿入されていた
改ざんされたWebサイトのソースコードを見ると、全体が書き換えられているわけではなく、不審なスクリプトが挿入されていることがわかった。スクリプトを実行すると外部サイトのファイルを読み込むようになっていた。
[画像のクリックで拡大表示]

 そのスクリプトは、外部のテキスト共有サイトにあるファイルを読み込むように記述されていました。参照先のファイルの中身は、HTMLを数字に置き換えたものでした。これを読み込んでHTMLに変換すると、改ざん後のWebサイトのソースコードになります。

 もし、攻撃者がWebシステムの管理者権限を奪えていれば、バックドアを設置することなどが可能です。しかし今回は、管理者権限を奪えなかったために、Webサイトの改ざんだけにとどまったと考えられます。

Stored XSSを悪用した攻撃か

 改ざんされたWebサイトに共通する脆弱性とは、一体何なのでしょうか。筆者はWebアプリケーションの脆弱性を利用したと考え、まずはCMS関連の脆弱性から調べることにしました。

 筆者がまず思いついたのは、「FancyBox」と呼ばれるソフトウエアで見つかったクロスサイトスクリプティング(XSS)の脆弱性です(図6)。このソフトウエアは、Webページに貼られた画像の拡大表示などを可能にするプラグインです。FancyBoxには様々な種類があります。XSSの脆弱性が見つかったのは、代表的なCMSである「WordPress」用のFancyBoxでした。

図6●FancyBoxの脆弱性が狙われたと推測
図6●FancyBoxの脆弱性が狙われたと推測
FancyBoxは画像の拡大表示などを可能にするプラグイン。WordPress用のFancyBoxプラグイン(バージョン3.0.3未満)には、クロスサイトスクリプティングの脆弱性がある。厳密には「Stored XSS」(蓄積型クロスサイトスクリプティング)と呼ばれるタイプの脆弱性である。
[画像のクリックで拡大表示]

 思いついた理由は、過去にこのプラグインの脆弱性を利用したWebサイトの改ざんが、国内サイトで多発したためです。そのとき筆者は、複数の改ざんサイトを調査しました。

 クロスサイトスクリプティングにはいくつか種類があります。FancyBoxの脆弱性はStored XSSと呼ばれるものです。これは、蓄積型または持続型と呼ばれるタイプのクロスサイトスクリプティングです。Webサーバーやデータベースサーバーなどに悪意のあるスクリプトを仕込み、ユーザーがWebサイトを閲覧するたびに、Webサーバー内のファイル(ソースコード)に挿入されたスクリプトが実行されるようにします。

 Stored XSSを使ったと仮定すると、今回の攻撃は次のようになります(図7)。

図7●クロスサイトスクリプティングによる攻撃の可能性
図7●クロスサイトスクリプティングによる攻撃の可能性
利用しているソフトウエアにクロスサイトスクリプティング(XSS)の脆弱性がある場合、図のような攻撃が可能になる。XSSにはいくつか種類があるが、今回利用されたのはStored XSSだと考えられる。ユーザーが改ざんされたWebサイトにアクセスすると、ソースコード内のスクリプトが実行され、テキスト共有サイト上のファイルが読み込まれる。そのファイルには攻撃者が用意したHTMLが記述されていた。
[画像のクリックで拡大表示]

 攻撃者は、何らかの方法でスクリプトをWebサイトのソースコードに挿入します。ユーザーがWebブラウザーでWebサイトにアクセスするとスクリプトが実行されて、テキスト共有サイト上にあるファイルを勝手に読み込みます。すると、ユーザーのWebブラウザーには、ファイルに記述されたHTMLの画面が表示されます。

攻撃者に質問したら回答が来た

 筆者は公開情報だけを手掛かりにこのように推測したのですが、正しいかどうかは確認できていません(2017年2月9日時点)。実際の手口は攻撃者に聞くのが一番確実です。そこで、今回の改ざんを報告した攻撃者(Shin0bi H4x0r)に、Twitterでメッセージを送ってみました。すると返事がありました。

 まず、「今回攻撃されたWebサイトは、共通のCMSを使っていたのではないか」と質問しました。攻撃者の回答は「そうだ」でした。攻撃者によると、攻撃したWebサイトは同じCMSを使っていたとのこと。しかし「バックドアを仕掛けることができなかったので、画面を改ざんした」といいます。

 次に、「FancyBoxのStored XSSを利用する攻撃コードを実行したのか」と尋ねました。すると攻撃者は、「SQLインジェクションでデータベースをハックした。それからシステムに入り込み、クロスサイトスクリプティングの脆弱性を利用した」と答えました。Stored XSSなのかどうかについては明確な回答を得られませんでしたが、クロスサイトスクリプティングを利用したというコメントを得られました。

 セキュリティ事件を調査する際には、今回のように攻撃者に直接質問すると、思わぬ成果が得られる場合があります。ただし、嘘をつかれている可能性はあります。

 このほかにも技術的な質問をしていますが、回答はありません。今後、興味深い回答が得られたら、この連載で紹介したいと思います。

▼Zone-H
URLは、http://www.zone-h.org/。
▼「STOP. THINK. CONNECT.」
米Anti-Phishing Working Group(APWG)と米National Cyber Security Alliance(NCSA)が実施する、インターネットの安全な利用を啓発するキャンペーン。フィッシング対策協議会も賛同し、キャンペーンサイトを公開している。同協議会によると、インターネットやWebサイトにアクセスする前に立ち止まって、何が起こるか考える意識を持つよう呼びかけるのが主旨。
▼中間報告を発表
本記事執筆後の2月16日、フィッシング対策協議会は最終的な調査結果(最終報告書)を発表するとともに、キャンペーンサイトを再開した。(編集部)
▼取り上げた事件
2016年3月号で取り上げた、山口県岩国市の病院のWebサイトが改ざんされた事件。このとき筆者はKuroi'SHとTwitterでやり取りした。
▼Google Chromeの拡張機能
Webブラウザーに機能を追加するための簡易プログラム。エクステンションとも呼ばれる。
▼CMS
Content Management Systemの略。テキストや画像、デザインなどを管理するためのソフトウエア。
▼バックドア
攻撃対象の機器に攻撃者がひそかに設置する侵入経路。
▼FancyBox
Webページに埋め込んだ画像の拡大表示機能などを提供するプラグイン。
▼クロスサイトスクリプティング(XSS)
Webアプリケーションの脆弱性を狙った攻撃手法。攻撃者が作った悪意あるスクリプトを標的のWebサイトのWebアプリケーションに送り込み、意図しない処理をクライアントに実行させる。サーバーを乗っ取らなくても、標的のサイトが利用する個人情報などを奪えるようになる。
▼確認できていません
2月16日にフィッシング対策協議会が発表した最終報告書では、「犯人は、管理者権限を与えられた関係者のID、パスワード情報の特定を行い、本人になりすましてログインしたものと考えられます」としている。手口の技術的な詳細については書かれていない。(編集部)
▼SQLインジェクション
Webページに対する入力パラメーターなどに不正なSQL文を挿し込み、開発者が意図していないSQL文をバックエンドのデータベースに対して実行するような不正行為。入力データをきちんとチェックしないWebアプリケーションの場合、入力された不正なSQL文がそのまま実行されてしまうので、データベース上のデータを消す、情報を取り出す、ウイルスをダウンロードさせる仕組みを埋め込む─などの攻撃が可能になる。
辻 伸弘(つじ のぶひろ)
ソフトバンク・テクノロジーでシニアセキュリティリサーチャー兼シニアセキュリティエバンジェリストを務める。企業から依頼を受けて、外部から実際にシステムを攻撃してセキュリティ上の弱点を発見するペネトレーションテストを担当。テレビや雑誌などのメディアに登場し、また様々な講演に多数登壇している。