Googleによるマルウェア論文

2007/5/15

The Ghost In The Browser Analysis of Web-based Malware」というUsenixの論文がありました。 PDFがダウンロード可能なので、興味のある方は読んでみる事をお勧めします。 この論文は、HotBots 07というボットネットに関してのWorkshopで、他に発表されていた論文も面白そうでした(まだ他のは読んでいません)。

NATやファイアウォールの普及によって、最近ではワーム(Worm)の勢いが衰えてきて、マルウェア作者にとってはWebが活動の主体になりつつあるそうです。 この論文は、Google社の社員5人によって書かれています。 Googleのクローラが収集しているWebページリポジトリを利用して解析を行った論文です。

この論文では、ふるいにかけたURLをバーチャルマシン上のInternet Explorerに渡して実行状況をモニタリングする自動マルウェア発見システムを使ってマルウェアを発見し、バイナリを収集していました。 発見方法は3章の「Detecting dangerous web pages」で説明されています。


The Ghost In The Browser Analysis of Web-based Malwareより引用

マルウェアが配布される方法

マルウェアの配布形態が4章で解説されています。 大きく分けて以下の4形態が解説されていました。

  • Webサーバが乗っ取られる
  • ユーザ生成コンテンツに紛れ込む
  • 広告に入っている
  • サードパーティWidget

4.1 Webserver Security

Webサーバが乗っ取られて、コピーライト部分に以下のようなiframeが二つ挿入されてしまうそうです。 このiframeは2006年10月に初めて観測されたそうですが、2006年11月には別のドメインのURLを示すようになり、さらに2006年12月にはまた違うドメインを指すようになったそうです。 毎月iframeのURLが変更されたのはマルウェアサイトの生存期間かも知れないと論文には書いてありました。 このURLで示されるWebページをバーチャルマシン上のIEで表示すると50個以上のマルウェアが勝手にインストールされてしまったそうです。


The Ghost In The Browser Analysis of Web-based Malwareより引用

4.2 User Contributed Content

調査をしていると、以下のようなJavaScriptを大量に発見したそうです。 以下のJavaScriptは難読化されています。


The Ghost In The Browser Analysis of Web-based Malwareより引用

上記を読みやすくすると以下のようになります。


The Ghost In The Browser Analysis of Web-based Malwareより引用

私も似たようなJavaScriptは見たことがあります。 同様のJavaScriptは、ブログのコメントスパムが示しているURLに良く書いてありました。

4.3 Advertising

Webサイトに掲載されている広告経由でマルウェアがインストールされてしまう事もあるそうです。 論文によると、広告の丸投げの連鎖が発生することがあるそうです。 論文には、2006年10月に発見した事例が紹介されていました。

  • あるサイトにアメリカ大手広告代理店のバナー広告が表示されていた
  • その広告は一行のJavaScriptだった
  • そのJavaScriptにより、別の大手インターネット広告代理店の広告へredirectされた
  • そのredirect先は小さな広告代理店の広告を表示した
  • その小規模広告代理店は地域情報を元に広告を出していた
  • 小規模広告代理店が表示したHTMLはロシアの広告代理店が出しているiframeだった
  • LocationヘッダでIPアドレスを含むURLへリダイレクトされた
  • リダイレクト先は脆弱性を攻撃するJavaScriptだった
  • バーチャルマシンのIE経由で複数のマルウェアをインストールされてしまった

4.4 Third-Party Widgets

外部サービスによるアクセスログカウンタがマルウェア配布プログラムに変身してしまったという事例があったそうです。

また、「このiframeをWebに貼り付けたら1万ユニークビュー毎に7ドルあげる」と言ってiframeを表示してくれる人を募るという組織もあったそうです。

5章 Exploitation mechanisms

5章では、良くある攻撃手法が説明されていました。 一般的な方法は、Microsoft Data Access Componentsの脆弱性をつく方法だそうです。

  • iframeでユーザのブラウザに攻撃が行われる
  • iframeは安全ではないActiveXオブジェクトのインスタンスを生成するJavascriptを含む
  • JavaScriptはXMLHTTP requestを使って実行ファイルを取得する
  • Adodb.streamを使って実行ファイルをディスクに書き込む
  • Shell Applicationを使って生成した実行ファイルを実行する

20行ぐらいのJavascriptコードで上記事項が出来てしまうそうです。

WebViewFolderIconの脆弱性をついて行う heap spraying という手法も一般的だそうです。 この手法では、x86命令を含むJavascriptコードをメモリ上に大量に貼り付けます。 そのヒープ上のコードを実行してしまおうとするそうです。

上記2つの手法意外にも、利用者がIEなのかFirefoxなのかを調べたり、Java VMのバージョンを調べたり、攻撃者は色々やっているそうです。

5.2 Tricking the User

乗っ取り可能な脆弱性が発見できなければ、ユーザを騙そうと試みる手法もあるそうです。 ユーザが実行してしまえば、どんな実行ファイルでも実行できてしまいます。 例えば、エロコンテンツに見せかけたサムネイルをクリックした後に以下のようなメッセージを表示させて、攻撃コードを実行させようとする手法があったそうです。


Windows Media Player cannot play video file. Click
here to download missing Video ActiveX Object.

ここで言う「codec」とはマルウェアのことらしいです。

6. Trends and Statistics

6章では、マルウェアのトレンドが紹介されていました。

6.1 Exploit Code Obfuscation

一般的なウィルス解析ツールなどによる攻撃コード解析を難しくするように難読化処理が行われるそうです。 例えば、以下の例では2段階のJavascriptにVBScriptが入るという多段仕込みをしています。


1段目
The Ghost In The Browser Analysis of Web-based Malwareより引用

2段目
The Ghost In The Browser Analysis of Web-based Malwareより引用

結果
The Ghost In The Browser Analysis of Web-based Malwareより引用

6.4 Distribution of Binaries Across Domains

Single Point of Failureになるのを防ぐために、同様の攻撃バイナリを様々なところに配置して、様々なところからそれらのバイナリにアクセスを集中させる手法がとられているようです。

6.5 Malware Evolution

アンチウィルスソフトに検出されるのを防ぐために、バイナリを更新する攻撃コードがあるそうです。 多くの攻撃コードは、さほど頻繁には変更されないそうですが、中には観測中にバイナリが1100回以上も更新された攻撃コードもあったそうです。

6.6 Discussion

  • 大量の攻撃サイトがある
  • 一般的なユーザには身を守る術が無い
  • 多くのユーザは知らないうちにマルウェアにやられている
  • 攻撃ソフトによって大きなボットネットが作られている
  • Webマルウェアはpull baseで、push baseではないので発見しにくい
  • 最近の一般ユーザPCは多くの貴重な情報を含んでいる。例えば、クレジットカード番号や銀行取引

最近のエントリ

過去記事

過去記事一覧

IPv6基礎検定

YouTubeチャンネルやってます!