図面 (/)

技術 解析装置、解析方法、および、解析プログラム

出願人 日本電信電話株式会社
発明者 高田雄太秋山満昭八木毅
出願日 2016年10月17日 (2年9ヶ月経過) 出願番号 2017-548698
公開日 2018年3月8日 (1年4ヶ月経過) 公開番号 WO2017-077847
状態 特許登録済
技術分野 ストアードプログラムにおける機密保護
主要キーワード グラフ構築 解析情報データベース スクリプト実行処理 シグネチャ生成 HTTP要求ヘッダ 改ざん前 挙動解析 実行元
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2018年3月8日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題・解決手段

ブラウザエミュレータマネージャ(23)は、ブラウザエミュレータ(25)よりウェブサイトアクセスさせる。そして、ブラウザエミュレータ(25)は、ウェブサイトにアクセスすることにより発生した、ブラウザ上のコンテンツ解釈スクリプト実行を追跡し、転送を検知した場合に、その転送方法転送元URLおよび転送先URLを転送情報に記録し、また、スクリプト実行を検知した場合に、その実行方法実行元スクリプトを転送情報に記録する。そして、グラフ構築部(274)は、転送情報に基づき有向グラフ構築する。その後、グラフ解析部(275)は、有向グラフを辿ることで、当該転送の原因となったコンテンツやスクリプトの箇所を特定する。

概要

背景

ドライブバイダウンロード攻撃(Drive-by Download攻撃)は、攻撃の起点となるウェブサイト(以下、入口URLと呼ぶ。)にアクセスしたクライアントを、主にHTML(HyperText Markup Language)タグやJavaScript(登録商標)等のコードを用いて複数のウェブサイト(以下、踏台URLと呼ぶ。)へ転送した後、攻撃コードを実行する悪性なウェブサイト(以下、攻撃URLと呼ぶ。)へ転送する。クライアントが攻撃URLにアクセスすると、ブラウザやブラウザのプラグイン(以下、プラグインと呼ぶ。)の脆弱性悪用する攻撃コードが実行され、クライアントは特定のウェブサイト(以下、マルウェア配布URLと呼ぶ。)からコンピュータウィルスなどの悪性プログラム(マルウェア)をダウンロード、インストールしてしまう。

特定のURLへ転送する方法は、HTMLタグで指定したURLへ転送する方法やJavaScript等のコードを用いて指定したURLへ転送する方法、HTTP(HyperText Transfer Protocol)の300番台ステータスコードを用いて転送する方法等、様々である。また、JavaScript等のコードでHTMLタグを動的に生成し、ブラウザに読み込んだHTMLに挿入することで、挿入したHTMLタグに指定されたURLへ転送することもできる(以下、転送コードと呼ぶ。)。ドライブバイダウンロード攻撃では、様々な転送コードを組み合わせて、入口URLにアクセスしてきたクライアントをマルウェア配布URLへ転送する。

入口URLに使用されるウェブサイトは、スパムメールやSNS(Social Network Service)のメッセージングサービスに含まれるURLのウェブサイトや攻撃者によって不正に改ざんされた一般のウェブサイトであることが多い。中でも、ウェブサイト改ざんにより一般ウェブサイトが入口URLとなり、ドライブバイダウンロード攻撃に加担させられる事例は影響力が大きく、多くのマルウェア感染被害を引き起こす要因となっている。このようなウェブサイト改ざんは後を絶たず、改ざんされたことをいち早く検知し、改ざんされたウェブサイトのコンテンツ(例えば、改ざんにより挿入された転送コード)を特定、修正することで、ドライブバイダウンロード攻撃による感染拡大を防ぐ必要がある。

ドライブバイダウンロード攻撃を検知する手法は、マルウェア配布URLからマルウェアをダウンロードすることにより生じるファイルシステムの変化を検知する手法(非特許文献1参照)やJavaScriptをブラウザのエミュレータ(以下、ブラウザエミュレータと呼ぶ。)で実行し、実行結果を解析することで悪性なJavaScriptを検知する手法(非特許文献2参照)等が知られている。

そのほか、入口URLからマルウェア配布URLまでのリンク構造を特定し、マルウェア配布URLから逆順にリンク構造を辿ることで、当該悪性ウェブサイトの近傍に存在する悪性ウェブサイトを効率的に探索する手法(非特許文献3参照)や複数のウェブサイト巡回により収集したリンク構造を用いて、各リンク構造に共通するURLを特定することで、ドライブバイダウンロード攻撃を仕掛ける攻撃URLやマルウェア配布URLといった悪性URLへのアクセスを効率良く検知、遮断するURLシグネチャ生成手法(非特許文献4参照)等が知られている。

しかし、上述した手法はいずれも、悪性URLを検知する手法であり、検知した悪性URLのウェブサイトにおいて、攻撃に関与しているコンテンツやスクリプトまでは特定できない。すなわち、入口URLが改ざんされたウェブサイトであった場合に、ウェブサイトのコンテンツのどの箇所が改ざんされた箇所なのかまでは特定できない。

ウェブサイト改ざんを検知する手法は、改ざんされる前のコンテンツ(オリジナルコンテンツ)と改ざんされたコンテンツと比較する手法が知られている。例えば、HTMLをオリジナルコンテンツとして比較検知する手法(非特許文献5参照)やJavaScriptの著名なライブラリフレームワークをオリジナルコンテンツとして比較検知する手法(非特許文献6参照)等が知られている。

そのほか、あらかじめ管理するウェブサーバ上に保存してあるファイル監視し、ファイルの内容変更や削除といった操作を検出した場合に、ウェブサーバ管理者へメール通知するTripWire(非特許文献7参照)というツールもある。

概要

ブラウザエミュレータマネージャ(23)は、ブラウザエミュレータ(25)よりウェブサイトへアクセスさせる。そして、ブラウザエミュレータ(25)は、ウェブサイトにアクセスすることにより発生した、ブラウザ上のコンテンツ解釈スクリプト実行を追跡し、転送を検知した場合に、その転送方法転送元URLおよび転送先URLを転送情報に記録し、また、スクリプト実行を検知した場合に、その実行方法実行元スクリプトを転送情報に記録する。そして、グラフ構築部(274)は、転送情報に基づき有向グラフ構築する。その後、グラフ解析部(275)は、有向グラフを辿ることで、当該転送の原因となったコンテンツやスクリプトの箇所を特定する。

目的

本発明は、前記した問題を解決し、ドライブバイダウンロード攻撃において、転送の原因となったコンテンツの箇所やスクリプトの箇所、転送に関連したURLを特定することを課題とする

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

ウェブサイトコンテンツおよびスクリプト解析する解析装置であって、ブラウザを用いて前記ウェブサイトにアクセスするアクセス部と、前記ウェブサイトのスクリプトの実行により、他のウェブサイトへ転送されるとき、転送元URLとして前記ウェブサイトのURL、転送先URLとして前記他のウェブサイトのURL、前記転送先URLへの転送方法として前記転送に用いられた前記スクリプトの関数名またはプロパティ名、実行元スクリプトとして前記スクリプトの識別情報転送情報に記録し、また、前記ウェブサイトのスクリプトが、新たなスクリプトを生成するとき、前記ウェブサイトにおける実行元スクリプトとして前記新たなスクリプトの生成元スクリプトの識別情報、生成されたスクリプトとして前記新たなスクリプトの識別情報、および、スクリプト実行方法として前記生成に用いられた前記生成元スクリプトの関数名またはプロパティ名を転送情報に記録するスクリプト解析部と、前記転送情報に記録された転送元URLおよび転送先URLをノードとし、また、前記転送元URLにおける実行元スクリプトおよび生成されたスクリプトを前記転送元URLのノードに内包されるノードとし、前記転送情報に記録された転送方法およびスクリプトの実行方法エッジとし、前記ブラウザがアクセスした一連のウェブサイトのURL、前記URLへの転送方法、転送に用いられたスクリプト、および、前記スクリプトの実行方法を示した有向グラフ構築するグラフ構築部とを備えることを特徴とする解析装置。

請求項2

前記ウェブサイトへのアクセス時におけるHTTP応答が、転送を通知するHTTP応答である場合、転送元URLとして前記ウェブサイトのURL、転送先URLとして前記ウェブサイトからのHTTP応答ヘッダに含まれる転送先URL、前記転送先URLへの転送方法として前記HTTP応答ヘッダに含まれるHTTPステータスコード番号を転送情報に記録するHTTPヘッダ解析部と、前記ウェブサイトへのアクセス時におけるHTTP応答が、転送を通知するHTTP応答ではない場合において、前記ウェブサイトのコンテンツのHTMLタグ解釈により、他のウェブサイトへ転送されるとき、転送元URLとして前記ウェブサイトのURL、転送先URLとして前記他のウェブサイトのURL、前記転送先URLへの転送方法として前記HTMLタグを転送情報に記録するコンテンツ解析部とをさらに備えることを特徴とする請求項1に記載の解析装置。

請求項3

前記スクリプト解析部は、前記スクリプトの実行により、前記ウェブサイトのコンテンツに、他のウェブサイトへの転送を指示するHTMLタグが挿入されるとき、転送元URLとして前記ウェブサイトのURL、転送先URLとして前記他のウェブサイトのURL、前記転送先URLへの転送方法として前記HTMLタグと前記HTMLタグを挿入したスクリプトの関数名またはプロパティ名、実行元スクリプトとして前記スクリプトの識別情報を転送情報に記録することを特徴とする請求項1に記載の解析装置。

請求項4

前記スクリプト解析部は、前記ウェブサイトのコンテンツの解釈により、他のウェブサイトから読み込んだスクリプトを実行し、異なるウェブサイトへ転送されるとき、転送元URLとして前記他のウェブサイトのURL、転送先URLとして前記異なるウェブサイトのURL、転送方法として前記転送に用いられたスクリプトの関数名またはプロパティ名、実行元スクリプトとして前記スクリプトの識別情報を転送情報に記録することを特徴とする請求項1に記載の解析装置。

請求項5

前記有向グラフを構成するいずれかのノードを起点として、前記有向グラフのルートとなるノードまで逆順に辿ることで、前記有向グラフのルートとなるノードから前記起点としたノードに至るまでの転送過程、スクリプトの実行過程、および、前記起点としたノードへの転送を発生させる原因となったコンテンツの箇所またはスクリプトの箇所を解析する解析部をさらに備えることを特徴とする請求項1に記載の解析装置。

請求項6

ウェブサイトのコンテンツおよびスクリプトを解析する解析方法であって、ブラウザを用いて前記ウェブサイトにアクセスするステップと、前記ウェブサイトのスクリプトの実行により、他のウェブサイトへ転送されるとき、転送元URLとして前記ウェブサイトのURL、転送先URLとして前記他のウェブサイトのURL、前記転送先URLへの転送方法として前記転送に用いられた前記スクリプトの関数名またはプロパティ名、実行元スクリプトとして前記スクリプトの識別情報を転送情報に記録し、また、前記ウェブサイトのスクリプトが、新たなスクリプトを生成するとき、前記ウェブサイトにおける実行元スクリプトとして前記新たなスクリプトの生成元スクリプトの識別情報、生成されたスクリプトとして前記新たなスクリプトの識別情報、および、スクリプト実行方法として前記生成に用いられた前記生成元スクリプトの関数名またはプロパティ名を転送情報に記録するステップと、前記転送情報に記録された転送元URLおよび転送先URLをノードとし、また、前記転送元URLにおける実行元スクリプトおよび生成されたスクリプトを前記転送元URLのノードに内包されるノードとし、前記転送情報に記録された転送方法およびスクリプトの実行方法をエッジとし、前記ブラウザがアクセスした一連のウェブサイトのURL、前記URLへの転送方法、転送に用いられたスクリプト、および、前記スクリプトの実行方法を示した有向グラフを構築するステップとを含んだことを特徴とする解析方法。

請求項7

ウェブサイトのコンテンツおよびスクリプトを解析するための解析プログラムであって、ブラウザを用いて前記ウェブサイトにアクセスするステップと、前記ウェブサイトのスクリプトの実行により、他のウェブサイトへ転送されるとき、転送元URLとして前記ウェブサイトのURL、転送先URLとして前記他のウェブサイトのURL、前記転送先URLへの転送方法として前記転送に用いられた前記スクリプトの関数名またはプロパティ名、実行元スクリプトとして前記スクリプトの識別情報を転送情報に記録し、また、前記ウェブサイトのスクリプトが、新たなスクリプトを生成するとき、前記ウェブサイトにおける実行元スクリプトとして前記新たなスクリプトの生成元スクリプトの識別情報、生成されたスクリプトとして前記新たなスクリプトの識別情報、および、スクリプト実行方法として前記生成に用いられた前記生成元スクリプトの関数名またはプロパティ名を転送情報に記録するステップと、前記転送情報に記録された転送元URLおよび転送先URLをノードとし、また、前記転送元URLにおける実行元スクリプトおよび生成されたスクリプトを前記転送元URLのノードに内包されるノードとし、前記転送情報に記録された転送方法およびスクリプトの実行方法をエッジとし、前記ブラウザがアクセスした一連のウェブサイトのURL、前記URLへの転送方法、転送に用いられたスクリプト、および、前記スクリプトの実行方法を示した有向グラフを構築するステップとをコンピュータに実行させることを特徴とする解析プログラム。

技術分野

0001

本発明は、解析装置解析方法、および、解析プログラムに関する。

背景技術

0002

ドライブバイダウンロード攻撃(Drive-by Download攻撃)は、攻撃の起点となるウェブサイト(以下、入口URLと呼ぶ。)にアクセスしたクライアントを、主にHTML(HyperText Markup Language)タグやJavaScript(登録商標)等のコードを用いて複数のウェブサイト(以下、踏台URLと呼ぶ。)へ転送した後、攻撃コードを実行する悪性なウェブサイト(以下、攻撃URLと呼ぶ。)へ転送する。クライアントが攻撃URLにアクセスすると、ブラウザやブラウザのプラグイン(以下、プラグインと呼ぶ。)の脆弱性悪用する攻撃コードが実行され、クライアントは特定のウェブサイト(以下、マルウェア配布URLと呼ぶ。)からコンピュータウィルスなどの悪性プログラム(マルウェア)をダウンロード、インストールしてしまう。

0003

特定のURLへ転送する方法は、HTMLタグで指定したURLへ転送する方法やJavaScript等のコードを用いて指定したURLへ転送する方法、HTTP(HyperText Transfer Protocol)の300番台ステータスコードを用いて転送する方法等、様々である。また、JavaScript等のコードでHTMLタグを動的に生成し、ブラウザに読み込んだHTMLに挿入することで、挿入したHTMLタグに指定されたURLへ転送することもできる(以下、転送コードと呼ぶ。)。ドライブバイダウンロード攻撃では、様々な転送コードを組み合わせて、入口URLにアクセスしてきたクライアントをマルウェア配布URLへ転送する。

0004

入口URLに使用されるウェブサイトは、スパムメールやSNS(Social Network Service)のメッセージングサービスに含まれるURLのウェブサイトや攻撃者によって不正に改ざんされた一般のウェブサイトであることが多い。中でも、ウェブサイト改ざんにより一般ウェブサイトが入口URLとなり、ドライブバイダウンロード攻撃に加担させられる事例は影響力が大きく、多くのマルウェア感染被害を引き起こす要因となっている。このようなウェブサイト改ざんは後を絶たず、改ざんされたことをいち早く検知し、改ざんされたウェブサイトのコンテンツ(例えば、改ざんにより挿入された転送コード)を特定、修正することで、ドライブバイダウンロード攻撃による感染拡大を防ぐ必要がある。

0005

ドライブバイダウンロード攻撃を検知する手法は、マルウェア配布URLからマルウェアをダウンロードすることにより生じるファイルシステムの変化を検知する手法(非特許文献1参照)やJavaScriptをブラウザのエミュレータ(以下、ブラウザエミュレータと呼ぶ。)で実行し、実行結果を解析することで悪性なJavaScriptを検知する手法(非特許文献2参照)等が知られている。

0006

そのほか、入口URLからマルウェア配布URLまでのリンク構造を特定し、マルウェア配布URLから逆順にリンク構造を辿ることで、当該悪性ウェブサイトの近傍に存在する悪性ウェブサイトを効率的に探索する手法(非特許文献3参照)や複数のウェブサイト巡回により収集したリンク構造を用いて、各リンク構造に共通するURLを特定することで、ドライブバイダウンロード攻撃を仕掛ける攻撃URLやマルウェア配布URLといった悪性URLへのアクセスを効率良く検知、遮断するURLシグネチャ生成手法(非特許文献4参照)等が知られている。

0007

しかし、上述した手法はいずれも、悪性URLを検知する手法であり、検知した悪性URLのウェブサイトにおいて、攻撃に関与しているコンテンツやスクリプトまでは特定できない。すなわち、入口URLが改ざんされたウェブサイトであった場合に、ウェブサイトのコンテンツのどの箇所が改ざんされた箇所なのかまでは特定できない。

0008

ウェブサイト改ざんを検知する手法は、改ざんされる前のコンテンツ(オリジナルコンテンツ)と改ざんされたコンテンツと比較する手法が知られている。例えば、HTMLをオリジナルコンテンツとして比較検知する手法(非特許文献5参照)やJavaScriptの著名なライブラリフレームワークをオリジナルコンテンツとして比較検知する手法(非特許文献6参照)等が知られている。

0009

そのほか、あらかじめ管理するウェブサーバ上に保存してあるファイル監視し、ファイルの内容変更や削除といった操作を検出した場合に、ウェブサーバ管理者へメール通知するTripWire(非特許文献7参照)というツールもある。

先行技術

0010

L. Lu, V. Yegneswaran, P. Porras, and W. Lee, “BLADE : An Attack-Agnostic Approach for Preventing Drive-By Malware Infections”, in Proceedings of theACMConference on Computer and Communications Security (CCS), 2010.,[平成27年7月24日検索],インターネット<URL:http://www.csl.sri.com/users/vinod/papers/blade.pdf>
M. Cova, C. Kruegel, and G. Vigna, “Detection and Analysis of Drive-by-Download Attacks and Malicious JavaScript Code”, in Proceedings of the World Wide Web Conference (WWW), 2010.,[平成27年7月24日検索],インターネット<URL:http://www.cs.ucsb.edu/~vigna/publications/2010_cova_kruegel_vigna_Wepawet.pdf>
J. W. Stokes, R. Andersen, C. Seifert, and K. Chellapilla, “WebCop : Locating Neighborhoodsof Malware on the Web”, in Proceedings of 3rd USENIX conference on Large-scale exploits and emergent threats (LEET), 2010.,[平成27年7月24日検索],インターネット<URL:https://www.usenix.org/legacy/event/leet10/tech/full_papers/Stokes.pdf>
J. Zhang, C. Seifert, J. W. Stokes, and W. Lee, “ARROW: Generating Signatures to Detect Drive-by Downloads”, in Proceedings of the World Wide Web Conference (WWW), 2011.,[平成27年7月24日検索],インターネット<URL:http://research.microsoft.com:8082/pubs/150143/zhangArrow.pdf>
K. Borgolte, C. Kruegel, and G. Vigna,“Delta : Automatic Identification of Unknown Web-based Infection Campaigns”, in Proceedings of the ACM Conference on Computer and Communications Security (CCS), 2013.,[平成27年7月24日検索],インターネット<https://www.cs.ucsb.edu/~chris/research/doc/ccs13_delta.pdf>
Z. Li, S. Alrwais, X. Wang, and E. Alowaisheq,“Hunting the Red Fox Online: Understanding and Detection of Mass Redirect-Script Injections”, in Proceedings of theIEEE Symposium on Security and Privacy (S&P), 2014.,[平成27年7月24日検索],インターネット<http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6956553>
TripWire Inc.,“TripWire”,[平成27年7月24日検索],インターネット<http://www.tripwire.org/>

発明が解決しようとする課題

0011

しかし、前記したウェブサイト改ざん検知手法は、改ざん前のコンテンツが必要であったり、自身が管理するウェブサーバ上のウェブサイトしか対応していなかったり、制限が存在する。このため、ドライブバイダウンロード攻撃において、転送の原因となったコンテンツの箇所やスクリプトの箇所、転送に関連したURLを特定することが困難な場合があった。そこで、本発明は、前記した問題を解決し、ドライブバイダウンロード攻撃において、転送の原因となったコンテンツの箇所やスクリプトの箇所、転送に関連したURLを特定することを課題とする。

課題を解決するための手段

0012

前記した課題を解決するため、本発明は、ウェブサイトのコンテンツおよびスクリプトを解析する解析装置であって、ブラウザを用いて前記ウェブサイトにアクセスするアクセス部と、前記ウェブサイトのスクリプトの実行により、他のウェブサイトへ転送されるとき、転送元URLとして前記ウェブサイトのURL、転送先URLとして前記他のウェブサイトのURL、前記転送先URLへの転送方法として前記転送に用いられた前記スクリプトの関数名またはプロパティ名、実行元スクリプトとして前記スクリプトの識別情報転送情報に記録し、また、前記ウェブサイトのスクリプトが、新たなスクリプトを生成するとき、前記ウェブサイトにおける実行元スクリプトとして前記新たなスクリプトの生成元スクリプトの識別情報、生成されたスクリプトとして前記新たなスクリプトの識別情報、および、スクリプト実行方法として前記生成に用いられた前記生成元スクリプトの関数名またはプロパティ名を転送情報に記録するスクリプト解析部と、前記転送情報に記録された転送元URLおよび転送先URLをノードとし、また、前記転送元URLにおける実行元スクリプトおよび生成されたスクリプトを前記転送元URLのノードに内包されるノードとし、前記転送情報に記録された転送方法およびスクリプトの実行方法エッジとし、前記ブラウザがアクセスした一連のウェブサイトのURL、前記URLへの転送方法、転送に用いられたスクリプト、および、前記スクリプトの実行方法を示した有向グラフ構築するグラフ構築部とを備えることを特徴とする。

発明の効果

0013

本発明によれば、ドライブバイダウンロード攻撃において、転送の原因となったコンテンツの箇所やスクリプトの箇所、転送に関連したURLを特定することができる。

図面の簡単な説明

0014

図1は、本実施形態のシステム構成例を示す図である。
図2は、ブラウザエミュレータマネージャの構成例を示す図である。
図3Aは、HTTP要求ヘッダの例を示す図である。
図3Bは、HTTP応答ヘッダの例を示す図である。
図4は、URLを参照するHTMLタグの例を示す図である。
図5Aは、JavaScriptによる転送に使用される関数およびプロパティの例を示す図である。
図5Bは、HTMLタグや属性を操作するJavaScriptの関数およびプロパティの例を示す図である。
図6は、内部参照のJavaScriptによる転送の例を示す図である。
図7は、外部参照のJavaScriptによる転送の例を示す図である。
図8は、転送の有向グラフの構築例を示す図である。
図9は、スクリプト実行の有向グラフを内包するよう拡張した転送の有向グラフの例を示す図である。
図10Aは、既存手法で構築される転送の有向グラフの例を示す図である。
図10Bは、本実施形態のグラフ構築部で構築される転送の有向グラフの例を示す図である。
図11Aは、解析情報データベース蓄積されるアクセスログの例を示す図である。
図11Bは、解析情報データベースに蓄積される転送情報の例を示す図である。
図12は、システム処理手順の例を示すフローチャートである。
図13は、ウェブサイト挙動解析の例を示すフローチャートである。
図14は、スクリプトの動的解析の例を示すフローチャートである。
図15は、解析プログラムを実行するコンピュータを示す図である。

実施例

0015

以下、図面を参照しながら、本発明を実施するための形態(実施形態)について説明する。なお、本発明は本実施形態に限定されない。

0016

まず、図1を用いて本実施形態のシステム構成例を説明する。システムは、例えば、図1に示すようにネットワーク1とネットワーク2とを備える。ネットワーク1とネットワーク2とはパケット転送装置3により接続される。

0017

ネットワーク1は、解析対象ウェブサイト12を備える。ネットワーク1は、インターネットのように広域なネットワークであってもよいし、法人ネットワークのように中小規模なネットワークである場合やクラウド環境ホスティング環境のネットワークであってもよい。

0018

解析対象ウェブサイト12は、ブラウザエミュレータマネージャ(解析装置)23による解析対象ウェブサイトである。この解析対象ウェブサイト12は、例えば、公開されている悪性ウェブサイトのブラックリスト掲載されているウェブサイトや検索エンジンから収集できるウェブサイト等である。

0019

また、ネットワーク2は、ブラウザエミュレータマネージャ23と、解析情報データベース24と、グラフ記憶部28とを備える。ネットワーク2は、ローカルエリアネットワークのように小規模なネットワークであってもよいし、法人ネットワークのように中小規模なネットワークである場合やクラウド環境やホスティング環境のネットワークであってもよい。

0020

ブラウザエミュレータマネージャ23は、1以上のブラウザエミュレータ25を管理し、このブラウザエミュレータ25に所定のウェブサイト(解析対象ウェブサイト12)へアクセスさせる。そして、ブラウザエミュレータマネージャ23は、ブラウザエミュレータ25がアクセスしたウェブサイトのURLや、当該ウェブサイトから取得したコンテンツやスクリプトの解析により得られた情報を解析情報データベース24へ蓄積する。

0021

ブラウザエミュレータ25は、ブラウザの動作を模擬する装置である。このブラウザエミュレータ25は、例えば、ハニーネットプロジェクトが提供しているブラウザエミュレータや、オープンソースとして開発されたHtmlUnitやPhantom JSが適用できるが、これらに限るものではない。このブラウザエミュレータ25の詳細は後記する。なお、図1においてブラウザエミュレータ25は、ブラウザエミュレータマネージャ23内に構築されるように描かれているが、ブラウザエミュレータマネージャ23外に構築されてももちろんよい。

0022

解析情報データベース24は、ブラウザエミュレータ25がアクセスしたウェブサイトのURLや、当該ウェブサイトから取得したコンテンツの解釈により発生した転送に関する情報等を蓄積する。この解析情報データベース24における情報の保存は、RDBMS(Relational DataBase Management System)を用いてもよいし、テキスト形式で保存してもよい。この解析情報データベース24の詳細は後記する。

0023

グラフ記憶部28は、ブラウザエミュレータマネージャ23により構築されたURL間の転送を示す有向グラフ(図9図10A図10B参照)を記憶する。この有向グラフの詳細は後記する。

0024

なお、本実施形態では、ブラウザエミュレータマネージャ23、ブラウザエミュレータ25および解析情報データベース24を同じネットワークに配置しているが、それぞれ別のネットワークに配置してもよい。また、各構成をセキュアに接続するため、既存の暗号技術を適用して通信情報を暗号化したり、各機能が配置されたネットワーク間または各機能間をVPN(Virtual Private Network)で接続したりしてもよい。

0025

次に、図2を用いてブラウザエミュレータマネージャ23およびブラウザエミュレータ25を詳細に説明する。ブラウザエミュレータマネージャ23はブラウザエミュレータ25、制御部27を備える。制御部27は、ブラウザエミュレータマネージャ23の備えるホストシステム26上でブラウザエミュレータ25を動作させる。このホストシステム26は、例えば、ブラウザエミュレータマネージャ23が備えるOSを用いる。制御部27の詳細は後記する。

0026

(ブラウザエミュレータ)
次に、ブラウザエミュレータ25を説明する。ブラウザエミュレータ25は、クライアント環境模擬部251と、アクセス部252と、HTTPヘッダパーサ部253と、コンテンツパーサ部254と、スクリプトインタプリタ部255とを備える。HTTPヘッダパーサ部253は、HTTPヘッダ解析部256を備え、コンテンツパーサ部254はコンテンツ解析部257を備え、スクリプトインタプリタ部255はスクリプト解析部258を備える。このHTTPヘッダ解析部256、コンテンツ解析部257、スクリプト解析部258は、ブラウザエミュレータ25が解析対象ウェブサイト12から取得したコンテンツを解析し、異なるウェブサイトへの転送を検知した場合に、転送元URL、転送先URL、転送方法等を記録する。HTTPヘッダ解析部256、コンテンツ解析部257、スクリプト解析部258の詳細は後記する。

0027

クライアント環境模擬部251は、ブラウザエミュレータ25で模擬するクライアント環境(例えば、OS、ブラウザ、プラグイン等)の情報を設定する。

0028

アクセス部252は、ウェブサイト(例えば、図1の解析対象ウェブサイト12)と、HTTPまたはHTTPS(HyperText Transfer Protocol Secure)による通信を行い、当該HTTP通信時にHTTPヘッダ情報およびHTTPボディ情報(コンテンツ)を取得する。このアクセス部252には、例えば、フリーソフトウェアとして開発されたcURLを用いる。

0029

また、アクセス部252は、ウェブサイトのアクセス結果ログとして記録する。例えば、アクセス部252は、アクセスしたウェブサイトのURLや、アクセスした日時、アクセス時のブラウザの環境情報をログとして記録する。また、ログには当該ウェブサイトへのアクセスにより、異なるウェブサイトへの転送が発生した場合に、HTTPヘッダ解析部256、コンテンツ解析部257、スクリプト解析部258により特定した転送先URL、転送元URL、転送方法等も記録される。つまり、ログには、アクセス部252がアクセスしたウェブサイトのURL、当該URLへアクセスした日時、当該URLへのアクセス時におけるブラウザの環境情報等の情報(アクセスログ)と、転送が発生した場合の転送先URL、転送元URL、転送方法等の情報(転送情報)との2種類の情報がある。このログは後記する登録処理部273により解析情報データベース24に登録される。

0030

HTTPヘッダパーサ部253は、アクセス部252で取得したHTTPヘッダ情報を解釈する。HTTPヘッダ情報を解釈した結果は、HTTPヘッダ解析部256を用いて解析する。

0031

HTTPヘッダ解析部256は、HTTPによる転送コードを特定するため、HTTPヘッダパーサ部253でHTTPヘッダ情報を解釈した結果を解析する。具体的には、HTTPヘッダ解析部256は、HTTP応答ヘッダのHTTPステータスコードの番号が300番台(転送を通知するHTTPステータスコード)であった場合に、転送先URLはHTTP応答ヘッダのLocationフィールドのURL、転送元URLは当該HTTP応答に対するHTTP要求ヘッダの要求URLを記録し、転送方法はHTTPステータスコードの番号を記録する。

0032

図3AはHTTP要求ヘッダの例を示し、図3B図3Aに示すHTTP要求ヘッダに対するHTTP応答ヘッダの例を示す。例えば、図3Bに示すHTTP応答ヘッダの内容により、HTTP応答が「HTTP/1.1 301 Moved Permanently」による転送コードであることが分かる。また、図3Bに示すHTTP応答ヘッダのLocationフィールドの情報から転送先URLは「http://redirect.example/」であることが分かる。また、図3Aに示すHTTP要求ヘッダのHostフィールドの情報から転送元URLは「http://landing.example/」であることが分かる。したがって、HTTPヘッダ解析部256は、転送先URLとして「http://redirect.example/」、転送元URLとして「http://landing.example/」、転送方法として「HTTP/1.1 301 Moved Permanently」を記録する。

0033

コンテンツパーサ部254は、アクセス部252で取得したコンテンツを解釈する。コンテンツを解釈した結果は、コンテンツ解析部257を用いて解析する。また、当該コンテンツにスクリプトが含まれている場合、スクリプトインタプリタ部255を用いて当該スクリプトを解釈する。例えば、コンテンツがHTMLやXML(Extensible Markup Language)であった場合、コンテンツパーサ部254は、オープンソースとして開発されたNekoHTMLやBeautifulSoup等のHTML/XMLパーサを用いて、コンテンツを解釈する。

0034

コンテンツ解析部257は、コンテンツ中からURLを参照するHTMLタグを特定するため、コンテンツパーサ部254でコンテンツを解釈した結果を解析する。具体的には、コンテンツ解析部257は、コンテンツがHTMLで記述され、かつ、コンテンツにURLが指定された属性を持つHTMLタグが含まれていた場合、転送先URLは当該指定されたURL、転送元URLは当該コンテンツのURLを記録し、転送方法はHTMLタグ名を記録する。

0035

URLを参照するHTMLタグの例を図4に示す。図4一行目に示すHTMLタグ(iframeタグ)の場合、転送元URLは当該HTMLタグが含まれるコンテンツのURL、転送先URLは「http://tag.example/」となり、転送方法は「iframe」となる。したがって、コンテンツ解析部257は、転送先URLとして「http://tag.example/」、当該iframeタグが含まれるコンテンツのURL、転送方法として「iframe」を記録する。なお、図4に示したHTMLタグは、指定されたURLを参照するHTMLタグを網羅的に列挙しているわけではないが、いずれもブラウザが読み込んだ時点で、指定されたURLを自動的に参照するHTMLタグを列挙している。もちろん図4に示したHTMLタグ以外のURLを参照するHTMLタグを解析対象に加えてもよいし、加えなくてもよい。

0036

スクリプトインタプリタ部255は、コンテンツパーサ部254で取得されたスクリプトを解釈する。例えば、スクリプトがJavaScriptにより記述されている場合、スクリプトインタプリタ部255は、オープンソースとして開発されたSpiderMonkeyやV8 JavaScript Engine、Rhino等のJavaScriptインタプリタを用いて、スクリプトを解釈する。

0037

スクリプト解析部258は、異なるURLへ転送するスクリプトを特定するため、スクリプトインタプリタ部255でスクリプトを解釈した結果を解析する。例えば、スクリプト解析部258は、コンテンツパーサ部254で取得されたスクリプトがJavaScriptであり、かつ、当該JavaScriptにより指定されたURLへ転送する関数の呼び出しまたはプロパティ代入が実行された場合を考える。この場合、スクリプト解析部258は、転送先URLとして当該JavaScriptにより指定されたURLを記録し、転送元URLとして当該JavaScriptを含むコンテンツのURLを記録し、転送方法として当該JavaScriptにより呼び出された関数名またはプロパティ名を記録する。また、スクリプト解析部258は、当該JavaScriptのハッシュ値等を実行元スクリプトとして記録する。指定されたURLへ転送する関数呼び出しおよびプロパティ代入のスクリプトの例を図5Aに示す。図5Aの一行目に示すプロパティ代入のスクリプトの場合、転送元URLは当該スクリプトを含むコンテンツのURL、転送先URLは「http://js.example/」となり、転送方法は「location.href」となる。なお、以下の説明においてスクリプトの識別情報として、当該スクリプトのハッシュ値を用いることとしたがこれ以外の識別情報を用いてももちろんよい。

0038

また、スクリプトの中には、HTMLタグを生成し、生成したHTMLタグを、当該スクリプトを読み込んだコンテンツに挿入したり、属性を操作したりするスクリプトもある。このようなスクリプト(JavaScript)の例を、図5Bに示す。

0039

例えば、JavaScriptによりコンテンツに挿入されたHTMLタグが、図4に示すいずれかのHTMLタグであった場合、生成したHTMLタグに指定されたURLへの転送が発生する。例えば、図5Bの一行目に示すJavaScriptの場合、転送元URLは当該JavaScriptが含まれるコンテンツのURL、転送先URLはscriptタグに指定されたURLとなり、転送方法は「script」となる。このとき、単純なHTMLタグによる転送とJavaScriptにより挿入されたHTMLタグによる転送とを区別するため、挿入されたHTMLタグに識別子(例えば、HTMLタグが指定するURL)を設定し、「document.write」という転送方法とともに一意に特定できるようにする。つまり、スクリプト解析部258は、図5Bの一行目に示すJavaScriptによりscriptタグが挿入される場合、転送方法は「script」ではなく「document.writeおよびscript」を記録する。これにより、後記するグラフ解析部275は、転送先URLへの転送が単純なHTMLタグによる転送ではなく、スクリプトにより挿入されたHTMLタグによる転送であることを特定できる。

0040

なお、スクリプト解析部258の解析対象は、図5Aおよび図5Bに示したJavaScriptの関数やプロパティ以外の関数やプロパティであってももちろんよい。

0041

また、上記のようなスクリプトによるHTMLタグの生成と挿入は、同一コンテンツ内のHTMLおよびスクリプトであれば、転送元URLと転送先URLを正しく特定できる。例えば、図6に示すように、アクセス部252がアクセスしたURLがURL1であり、このURL1のコンテンツ内のJavaScriptの実行によりiframeタグを生成し((1))、このiframeタグによりURL2が参照される((2))場合を考える。この場合、転送元URL(URL1)と転送先URL(URL2)は、従来技術においても正しく特定できる。しかし、スクリプトによるHTMLタグの生成と挿入が、外部のウェブサイトのコンテンツのHTMLおよびスクリプトを参照したものである場合、従来技術では、転送元URLの情報が欠落する場合がある。

0042

このことを、図7を用いて説明する。図7においてアクセス部252が最初にアクセスしたURLをURL1とし、URL1のscriptタグの参照先URLをURL2とし、URL2のJavaScriptの実行により生成されるiframeタグの参照先URLをURL3とする。このような場合、アクセス部252がURL1にアクセスすると、このURL1のコンテンツ内のscriptタグにより、URL2を参照し((1))、URL2のJavaScriptの実行によりiframeタグを生成し((2))、生成したiframeタグによりURL3が参照される((3))。

0043

このときコンテンツ解析部257によるHTMLタグの解析により、転送元URLはURL1、転送先URLはURL3と特定できる。また、通常のブラウザの実装においても、参照元URLが記録されるHTTP要求ヘッダのリファラ(Referer)フィールドに、URL2への要求ではURL1が設定され、URL3への要求でもURL1が設定される。つまり、実際は、URL2のJavaScriptの実行が原因でURL3への要求が発生しているため、転送元URLはURL2、転送先URLはURL3というURL2からURL3への転送情報が必要である。しかし、従来技術におけるHTMLタグによる特定やリファラ情報による特定では、当該転送情報は欠落してしまう。

0044

そこで、スクリプト解析部258は、外部のウェブサイトのスクリプトを実行する際に、当該スクリプトを含むウェブサイトのURL(例えば、上記のURL2)を別途記録し、当該URLを転送元URLに設定する。そして、スクリプト解析部258は、当該スクリプトの実行により別のURL(例えば、URL3)への要求が発生したことを捉えると、転送元URLを上記の外部のウェブサイト(例えば、URL2)、転送先URLを当該スクリプトの実行による要求先のURL(例えば、URL3)とした転送情報を記録する。つまり、スクリプト解析部258は、上記のURL2からURL3への転送情報を記録する。

0045

また、JavaScript等のスクリプトの中には、新たなスクリプトを生成するものもある。このようなスクリプトの動的生成は、コードの難読化や所定時間間隔を置いたコード実行等に用いられ、eval、setInterval、setTimeout等の関数が用いられる。

0046

スクリプト解析部258は、上記のように動的に生成されるスクリプトによる転送を特定するため、当該スクリプトの実行において呼び出される関数を監視し、実行処理を追跡する。例えば、スクリプト解析部258は、当該スクリプトの実行において上記のeval、setInterval、setTimeout等の関数が用いられたことを捉えると、新たに生成されたスクリプトの生成元のスクリプトのハッシュ値、新たに生成されたスクリプトのハッシュ値、生成元のスクリプトの実行方法(例えば、生成元スクリプトにより呼び出された関数名またはプロパティ名)を記録する。なお、スクリプト解析部258がスクリプトの実行を追跡する際に、スクリプトのハッシュ値ではなくスクリプトそのものを記録してももちろんよい。

0047

(制御部)
次に、制御部27を説明する。制御部27は、URLリスト作成部271と、アクセス指示部272と、登録処理部273と、グラフ構築部274と、グラフ解析部275とを備える。

0048

URLリスト作成部271は、各ブラウザエミュレータ25が巡回するウェブサイト(解析対象ウェブサイト12)のURLリストである巡回対象URLリストを作成する。例えば、URLリスト作成部271は、公開されている悪性ウェブサイトのブラックリストに掲載されているウェブサイトのURLをもとに巡回対象URLリストを作成する。

0049

アクセス指示部272は、各ブラウザエミュレータ25のアクセス部252へ巡回対象URLリスト(URLリスト)に示されるURLへのアクセスを指示する。

0050

登録処理部273は、各ブラウザエミュレータ25のログを取得し、解析情報データベース24に登録する。

0051

グラフ構築部274は、解析情報データベース24の転送情報を結合し、解析対象ウェブサイト12へのアクセスに起因して発生した転送を示す有向グラフを構築する。そして、グラフ構築部274は、構築した有向グラフをグラフ記憶部28に出力する。この有向グラフは、転送情報に示される転送元URLや転送元URLをノードとし、転送方法をエッジとした有向グラフであり、例えば、図8に示す有向グラフである。

0052

図8に示す有向グラフは、「http://a.example/」のiframタグにより「http://b.example/red1」に転送され、この「http://b.example/red1」のスクリプトのlocation.hrefという関数により「http://b.example/red2」に転送され、この「http://b.example/red2」のスクリプトのlocation.replaceという関数により、「http://b.example/exploit」に転送されることを示す。

0053

また、グラフ構築部274は、上記のような有向グラフに、スクリプト実行処理追跡結果を反映した有向グラフを内包するよう加える。例えば、グラフ構築部274は、図8に示す有向グラフをベースとし、当該有向グラフに、スクリプト実行処理の追跡結果を反映した有向グラフを内包するよう加え、図9に示す有向グラフを構築する。つまり、グラフ構築部274は、解析情報データベース24の転送情報を参照して、「http://b.example/red1」に含まれるスクリプト「JavaScript A」のノードをノード「http://b.example/red1」内に加える。また、グラフ構築部274は、「http://b.example/red2」に含まれるスクリプト「JavaScript B」のノードを、ノード「http://b.example/red2」内に加え、また、スクリプト「JavaScript B」により生成されたスクリプト「JavaScript C」もノード「http://b.example/red2」内に加える。また、グラフ構築部274はスクリプト「JavaScript B」のノードとスクリプト「JavaScript C」とをスクリプト「JavaScript C」の実行に用いられた関数(eval)を示すエッジで接続する。また、グラフ構築部274は、「http://b.example/exploit」に含まれるスクリプト「JavaScript D」のノードを「http://b.example/exploit」のノード内に加える。

0054

このように、グラフ構築部274は、解析情報データベース24の転送情報に基づき、HTMLタグによる転送は、転送元URLのコンテンツ内において、転送先URLを指定した転送方法のHTMLタグを探し出し、このHTMLタグを転送元URLのノードから転送先URLのノードへのエッジとする。また、グラフ構築部274は、スクリプトによる転送については、転送元URLのコンテンツ内において、転送先URLを指定した転送コードの実行元スクリプトを探し出す。そして、グラフ構築部274は、当該実行元スクリプトで用いられた関数を、転送元URLの実行元スクリプトのノードから転送先URLのノードへのエッジとする。なお、スクリプトが動的生成されている場合、グラフ構築部274は、最終的に生成されたスクリプトから生成元スクリプトを辿り、生成元スクリプトから生成されたスクリプトをエッジで接続する。

0055

グラフ解析部275は、グラフ記憶部28に記憶される有向グラフを解析し、解析結果を出力する。例えば、図9に示す有向グラフのノード「http://b.example/exploit」において、攻撃コードを含むJavaScript Dを検知した場合に、グラフ解析部275は、このJavaScript Dを出発点として有向グラフを逆順に辿り、図9のノード「http://b.example/red2」において生成された「JavaScript C」やその生成元である「JavaScript B」、ノード「http://b.example/red1」に含まれる「JavaScript A」、ノード「http://a.example/」に含まれるiframeタグが攻撃に関与していることを特定できる。そして、この結果を解析結果として出力する。

0056

すなわち、グラフ解析部275は、「http://a.example/」を入口URL、「http://b.example/red1」および「http://b.example/red2」を踏台URL、「http://b.example/exploit」を攻撃URLと特定し、また、「http://a.example/」に含まれるiframeタグが攻撃に関与していることを特定できる。これにより、例えば、a.exampleドメインのウェブサイトが一般のウェブサイトであった場合に、システムは、当該ウェブサイトの管理者に対して、上記で特定したiframeタグ(すなわち、改ざんされたと思われる箇所)を通知し、当該タグの削除の推奨等を行うことができる。

0057

なお、グラフ構築部274は、外部のウェブサイトのコンテンツを参照した転送が行われる場合(図7参照)は、以下のようにして有向グラフを構築する。ここでは、比較のため、既存手法により構築される転送の有向グラフの例を図10Aに示す。また、本実施形態のグラフ構築部274により構築される転送の有向グラフの例を図10Bに示す。

0058

ここでは、「http://c.example/c.js」に含まれる「JavaScript E」のdocument.writeという関数の実行により、「http://d.example/red3」へ転送するiframeタグが「http://c.example/test.html」に挿入され、当該iframeタグにより「http://d.example/red3」に転送された後、「http://d.example/red3」から、HTTP301により「http://d.example/exploit」に転送される場合を例に説明する。

0059

このような場合、図10Aに例示する既存手法では、実際に転送が発生するiframeタグがノード「http://c.example/test.html」に挿入されるため、ノード「http://c.example/test.html」を起点にノード「http://c.example/c.js」およびノード「http://d.example/red3」へのエッジを持つ有向グラフが生成される。一方、本実施形態のグラフ構築部274によれば、転送情報に、「JavaScript E」のdocument.writeという関数によりiframeタグが挿入されたことが記載されているので、図10Bに例示する、ノード「http://d.example/red3」への転送が、ノード「http://c.example/c.js」に含まれる「JavaScript Eのdocument.write+iframeタグ(document.write/iframe)」による転送であることを特定できる。これにより、グラフ構築部274は、ノード「http://c.example/test.html」を起点に、ノード「http://c.example/c.js」を経由して、ノード「http://d.example/red3」へのエッジを持つ有向グラフを構築できる。

0060

このようにグラフ構築部274が外部のウェブサイトのコンテンツを参照した転送についても、これを表現した有向グラフを構築することで、以下のような効果が得られる。例えば、図10Bに示す有向グラフにおけるノード「http://d.example/exploit」に攻撃コードを含むJavaScript Fを検知した場合に、グラフ解析部275は、図10Bに示す有向グラフを逆順にたどることで、ノード「http://d.example/red3」、ノード「http://c.example/c.js」、このノード「http://c.example/c.js」に含まれるJavaScript E、このJavaScript Eにより挿入されるiframeタグ、ノード「http://c.example/test.html」に含まれるscriptタグ等が攻撃に関与していることを特定できる。

0061

そして、仮に、c.exampleドメインのウェブサイトが一般のウェブサイトであった場合に、システムは、当該ウェブサイト管理者に対して、上記で特定したscriptタグ(すなわち、改ざんされたと思われる箇所)を通知し、当該タグの削除の推奨等を行うことができる。なお、改ざんされたと思われる箇所は、有向グラフを逆順にたどる過程で、ドメインに変更が生じるような転送が発生した箇所(例えば、JavaScript E のdocument.write)や、特定の方法による転送(例えば、document.writeによる転送)が発生した箇所であってもよい。

0062

(解析情報データベース)
次に、解析情報データベース24を説明する。解析情報データベース24は、解析情報として、アクセスログと、転送情報とを記憶する。アクセスログは、例えば、図11Aに示すとおり、アクセスログの識別情報である「ID」、ブラウザエミュレータ25が解析対象ウェブサイト12のURLにアクセスした際にアクセスしたURLである「アクセスURL」、当該URLにアクセスした日時を表す「タイムスタンプ」、当該URLにアクセスした際にブラウザエミュレータ25が模擬したクライアント環境情報を表す「環境情報」等を対応付けた情報である。また、転送情報は、例えば、図11Bに示すとおり、どのIDのアクセスログに示されるアクセスURLを入口URLとした転送情報かを示す「ID」、転送またはスクリプトの実行がされた日時を表す「タイムスタンプ」、転送元URLを表す「転送元URL」、転送先URLを表す「転送先URL」、転送方法や実行方法を表す「方法」、転送コードが実行されたスクリプトの識別情報(例えば、ハッシュ値)を記録する「実行スクリプト」、スクリプト実行により動的生成されたスクリプトの識別情報(例えば、ハッシュ値)を記録する「生成されたスクリプト」等を対応付けた情報である。なお、アクセスログおよび転送情報は、上記以外の情報を含んでいてももちろんよい。

0063

ここで、図11Aに示すアクセスログおよび図11Bに示す転送情報を用いた、グラフ構築部274によるグラフ構築方法の例を説明する。

0064

例えば、図11AのID=1に対応する「http://a.example/」へのアクセスは、図11BのID=1に対応する情報から、「http://a.example/」のiframeタグにより、「http://a.example/」から「http://b.example/red1」へ転送されることがわかる。続いて、「http://b.example/red1」では、スクリプト「0123456789abcdef」が実行され、location.hrefにより「http://b.example/red2」へ転送されることが分かる。次に、「http://b.example/red2」では、スクリプト「abcdef9876543210」はevalによりスクリプト「012345678901234」を生成することが分かる。そして、スクリプト「012345678901234」が実行され、location.replaceにより「http://b.example/exploit/」へ転送されることが分かる。

0065

グラフ構築部274は、このように解析情報データベース24の転送情報を辿ることで、入口URL「http://a.example/」から「http://b.example/exploit/」までの有向グラフを構築する(図9参照)。

0066

また、図11AのID=51に対応する「http://c.example/test.html」へのアクセスは、図11BのID=51に対応する情報から、「http://c.example/test.html」のscriptタグにより、「http://c.example/test.html」から「http://c.example/c.js」へ転送されることが分かる。続いて、「http://c.example/c.js」では、スクリプト「fedcbaaaaaabcdef」が実行され、document.writeにより「http://d.example/red3」へ転送するiframeタグが「http://c.example/test.html」に挿入されることが分かる。そして、転送先である「http://d.example/red3」へアクセスすると、HTTP301の自動転送により「http://d.example/exploit」へ転送されることが分かる。

0067

グラフ構築部274は、このように解析情報データベース24の転送情報を辿ることで、入口URL「http://c.example/test.html」から「http://d.example/exploit」までの有向グラフを構築する(図10B参照)。

0068

以上説明したシステムによれば、ウェブサイトへのアクセスにより、異なるウェブサイトへ自動的に転送された場合に、ウェブサイトのコンテンツ解釈処理やコンテンツに含まれるスクリプト実行処理を追跡し、転送情報を記録し、蓄積する。そして、最終的に、ドライブバイダウンロード攻撃を仕掛ける悪性ウェブサイトへ転送された場合に、蓄積された転送情報をもとに有向グラフを構築し、この有向グラフを逆順に辿ることで、転送の原因となったコンテンツの箇所やスクリプトの箇所および転送に関与したウェブサイトのURLを特定できる。

0069

処理手順
次に、図12を用いて、システムの処理手順の例を説明する。

0070

まず、URLリスト作成部271は、巡回対象URLリストを作成する(S1)。例えば、URLリスト作成部271は、公開されている悪性ウェブサイトのブラックリストや検索エンジンで収集できるウェブサイト等をもとに巡回対象URLリストを作成する。

0071

そして、アクセス指示部272は、ブラウザエミュレータ25に巡回対象URLリストのURLを入力し(S2)、ブラウザエミュレータ25はアクセス部252で、S2で入力されたURLにアクセスする(S3)。

0072

アクセス部252は、アクセスしたウェブサイトのコンテンツをHTTPヘッダパーサ部253、コンテンツパーサ部254、スクリプトインタプリタ部255で解釈し、解釈した結果に基づき、HTTPヘッダ解析部256、コンテンツ解析部257、スクリプト解析部258で、それぞれ解析する(S4:ウェブサイト挙動解析)。また、巡回対象URLへのアクセスにより転送されたウェブサイトについても、同様にコンテンツを取得し、解析を実施する。このS4の処理の詳細は後記する。

0073

なお、S2においてアクセス指示部272は、1つのブラウザエミュレータ25に複数URLへアクセスさせてもよいし、複数のブラウザエミュレータ25にそれぞれ異なるURLへアクセスさせるようにしてもよい。

0074

S4の後、アクセス部252はアクセスログを出力する(S5)。つまり、アクセス部252は、アクセス指示部272により入力されたURLへのアクセス結果をアクセスログとして出力する。そして、登録処理部273は、S5で出力されたアクセスログおよびS4での解析結果(転送情報)を整形し、解析情報データベース24(図11Aおよび図11B参照)へ蓄積する(S6)。

0075

S6の後、巡回対象URLリストに次の巡回URLが存在すれば(S7でYes)、S2へ戻る。一方、巡回対象URLリストに次の巡回URLが存在しなければ(S7でNo)、処理を終了する。

0076

上記のようにして、解析情報データベース24にアクセスログおよび転送情報が蓄積されると、グラフ構築部274は、解析情報データベース24に蓄積されたアクセスログおよび転送情報からURL間の転送を示す有向グラフを構築し、グラフ記憶部28に記憶する。そして、グラフ解析部275は、グラフ記憶部28の有向グラフを参照して、例えば、転送の原因となっているコンテンツ箇所やスクリプト箇所や攻撃に関与しているURLを特定する。

0077

次に、図13を用いて、図12のS4のウェブサイト挙動解析の処理を詳細に説明する。

0078

まず、アクセス部252は、巡回対象URLにアクセスした際に発生したHTTP通信から、HTTPヘッダをHTTPヘッダパーサ部253に解釈させ、解釈した結果をHTTPヘッダ解析部256に解析させる。つまり、HTTPヘッダ解析部256は巡回対象URLへのHTTP通信から取得したHTTPヘッダ情報を解析する(S8)。

0079

ここで、HTTPヘッダ解析部256による解析の結果、HTTP応答ヘッダのHTTPステータスコードが300番台(リダイレクト(転送)を表す番号)であった場合に(S9でYes)、転送元URLはHTTP要求ヘッダの要求URL、転送先URLはHTTP応答ヘッダのLocationフィールドのURL、転送方法は当該HTTPステータスコードとした転送情報を記録し(S10:HTTPヘッダ情報に基づく転送情報の記録)、処理を終了する。一方、HTTP応答ヘッダのステータスコードが300番台ではない場合に(S9でNo)、S11へ進む。

0080

S11において、アクセス部252は、巡回対象URLにアクセスした際に発生したHTTP通信から、HTTPボディをコンテンツパーサ部254に解釈させ、解釈した結果をコンテンツ解析部257に解析させる。つまり、コンテンツ解析部257は上記のHTTP通信により取得したHTTPボディ情報(コンテンツ)を解析する(S11)。ここで、コンテンツ解析部257による解析の結果、HTTPボディ情報にHTMLが含まれている場合に(S12でYes)、S13へ進む。一方、HTTPボディ情報にHTMLが含まれない場合は(S12でNo)、S17へ進む。

0081

S13において、当該HTMLにURLを指定した属性を持つHTMLタグが含まれる場合(S13でYes)、S14へ進む。一方、HTMLにURLを指定した属性を持つHTMLタグが含まれない場合(S13でNo)、S17へ進む。

0082

S14において、当該HTMLタグがスクリプトによって挿入されたHTMLタグである場合(S14でYes)、スクリプト解析部258は、転送元URLは当該コンテンツ(つまり当該スクリプトの属するコンテンツ)のURL、転送先URLは当該HTMLタグにより指定されたURL、転送方法はスクリプトの関数名またはプロパティ名(つまり、当該HTMLの挿入に用いられた関数の関数名または代入されたプロパティ名)+当該HTMLタグ名とした転送情報を記録する(S15:転送方法をスクリプトの関数名またはプロパティ名+HTMLタグ名としたHTMLタグに基づく転送情報の記録)。

0083

一方、当該HTMLタグがスクリプトによって挿入されたHTMLタグではない場合(S14でNo)、スクリプト解析部258は、転送元URLは当該コンテンツ(つまり当該HTMLタグの属するコンテンツ)のURL、転送先URLは当該HTMLタグにより指定されたURL、転送方法は当該HTMLタグ名とした転送情報を記録する(S16:転送方法をHTMLタグ名としたHTMLタグに基づく転送情報の記録)。その後、S17へ進む。

0084

S17において、コンテンツ解析部257によるHTTPボディ情報の解析の結果、HTTPボディ情報にスクリプトが含まれると判断した場合(S17でYes)、当該スクリプトをスクリプトインタプリタ部255に解釈させ、解釈の過程でスクリプト解析部258によるスクリプトの動的解析を実行する(S18)。一方、HTTPボディ情報にスクリプトが含まれない場合は(S17でNo)、処理を終了する。S18におけるスクリプトの動的解析の処理の詳細は後記する。なお、ブラウザエミュレータ25は、上記のウェブサイト挙動解析処理が終了した際に、異なるURLへの転送が発生した場合には、当該URLのウェブサイトを前記と同様に解析する。

0085

続いて、図14を用いて、図13のS18のスクリプトの動的解析の処理を詳細に説明する。

0086

まず、スクリプト解析部258は、HTTPボディ情報(コンテンツ)から取得したスクリプトの動的解析を実行し(S19)、当該スクリプトが外部のウェブサイトのファイルに含まれるスクリプトか否かを判定する。つまり、スクリプト解析部258は、当該スクリプトが外部参照したスクリプトか否かを判定する(S20)。ここでスクリプト解析部258が、当該スクリプトが外部参照したスクリプトであると判定した場合(S20のYes)、外部参照先URL(つまり、当該スクリプトの属するウェブサイトのURL)を別途保持し(S21)、S22へ進む。一方、スクリプト解析部258が、当該スクリプトが外部参照したスクリプトではないと判定した場合(S20でNo)、S22へ進む。

0087

S22において、スクリプト解析部258が、当該スクリプトの実行中に、指定されたURLへ転送する関数の呼び出しまたはプロパティ代入を検知した場合に(S22でYes)、S23へ進む。一方、スクリプト解析部258が、指定されたURLへ転送する関数の呼び出しもプロパティ代入も検知しなかった場合(S22でNo)、S26へ進む。S26については後記する。

0088

S23において、外部参照先URLが保持されている場合(S23でYes)、スクリプト解析部258は、転送元URLは外部参照先URL、転送先URLは外部参照されたスクリプトにより指定されたURL、転送方法は外部参照されたスクリプトの関数名またはプロパティ名(つまり、当該スクリプトにより呼び出された関数の関数名または代入されたプロパティ名)とした転送情報を記録する。また、スクリプト解析部258は、転送情報に実行元スクリプト(外部参照されたスクリプト)を記録する(S24:外部参照したスクリプトの実行に基づく転送情報の記録)。その後、S26へ進む。

0089

一方、S23において、外部参照先URLが保持されていない場合(S23でNo)、スクリプト解析部258は、転送元URLは当該コンテンツ(つまり当該スクリプトの属するコンテンツ)のURL、転送先URLは当該スクリプトにより指定されたURL、転送方法は当該スクリプトの関数名またはプロパティ名(つまり、当該スクリプトにより呼び出された関数の関数名または代入されたプロパティ名)とした転送情報を記録する。また、スクリプト解析部258は、転送情報に実行元スクリプト(当該スクリプト)を記録する(S25:コンテンツから取得したスクリプトの実行に基づく転送情報の記録)。その後、S26へ進む。

0090

なお、これ以降、スクリプト解析部258は、上記同様、外部参照先URLが保持されていれば、外部参照先URLを優先して記録し、保持されていなければ、実行中のスクリプトの属するコンテンツのURLを転送情報に記録する。

0091

S26において、スクリプト解析部258は、スクリプトの実行中に、当該コンテンツ(つまり当該スクリプトの属するコンテンツ)の内容を変更する関数の呼び出しまたはプロパティ代入を検知した場合に(S26でYes)、変更対象コンテンツに識別子を設定する(S27)。つまり、スクリプト解析部258は、どのコンテンツに対し変更が加えられたかを記録しておく。その後、S28へ進む。一方、スクリプト解析部258は、当該コンテンツの内容を変更する関数の呼び出しもプロパティ代入も検知しなかった場合に(S26でNo)、S28へ進む。

0092

なお、上記のコンテンツの内容の変更とは、例えば、コンテンツ内に新たなHTMLタグを挿入することである。新たなHTMLタグが挿入された場合は、挿入されたHTMLタグにおいても同様に、S13からS18までの処理を実行する。また、S27で変更対象コンテンツに設定する識別子には、例えば、当該コンテンツの内容を変更する原因となったスクリプトのハッシュ値やURLを用いる方法等が考えられるが、これ以外の方法であってももちろんよい。

0093

S28において、スクリプト解析部258は、当該スクリプトの実行中に、新たに生成されたスクリプトを実行する関数の呼び出しを検知した場合(S28でYes)、生成元スクリプト、生成されたスクリプト、実行方法(生成元スクリプトの実行方法)を転送情報に記録する(S29)。つまり、スクリプト解析部258は、スクリプトの実行により新たなスクリプトが生成されたことを検知すると、転送元URLは生成元スクリプトの属するコンテンツのURLとし、実行方法は生成元スクリプトの実行方法とし、生成されたスクリプトは生成元スクリプトにより生成されたスクリプトとし、実行スクリプトは生成元スクリプトとした転送情報を記録する。

0094

一方、S28において、スクリプト解析部258は、スクリプトの実行中に、新たに生成されたスクリプトを実行する関数の呼び出しを検知しなかった場合(S28でNo)、処理を終了する。

0095

なお、上記のS22、S26、S28において、スクリプト解析部258がスクリプト実行中に監視する関数の呼び出しやプロパティ代入等の各処理は、図14に示した手順で実行してもよいし、順序入れ替えてももちろんよい。

0096

以上説明したシステムによれば、ウェブサイトへのアクセスにより、異なるウェブサイトへ自動的に転送された場合に、ウェブサイトのコンテンツ解釈処理やコンテンツに含まれるスクリプト実行処理を追跡し、転送情報を記録し、蓄積する。そして、最終的に、ドライブバイダウンロード攻撃を仕掛ける悪性ウェブサイトへ転送された場合に、蓄積された転送情報をもとに有向グラフを構築し、この有向グラフを逆順に辿ることで、転送の原因となったコンテンツの箇所やスクリプトの箇所および転送に関与したウェブサイトのURLを特定できる。

0097

また、上記の実施形態で述べたブラウザエミュレータマネージャ23は、上記の処理を実行するブラウザエミュレータマネージャ23を所望の情報処理装置(コンピュータ)にインストールすることによって実装できる。例えば、パッケージソフトウェアオンラインソフトウェアとして提供される上記のブラウザエミュレータマネージャ23を情報処理装置に実行させることにより、情報処理装置をブラウザエミュレータマネージャ23として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型パーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistants)等のスレート端末等がその範疇に含まれる。また、ブラウザエミュレータマネージャ23を、Webサーバクラウドとして実装してもよい。

0098

プログラム
図15は、解析プログラムを実行するコンピュータを示す図である。図15に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU(Central Processing Unit)1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。

0099

メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスク光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。

0100

ここで、図15に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各情報、データは、例えばハードディスクドライブ1090やメモリ1010に記憶される。

0101

また、解析プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明したブラウザエミュレータマネージャ23が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。

0102

また、解析プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。

0103

なお、解析プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、解析プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。

0104

1,2ネットワーク
3パケット転送装置
12解析対象ウェブサイト
23ブラウザエミュレータマネージャ
24解析情報データベース
25 ブラウザエミュレータ
26ホストシステム
27 制御部
28グラフ記憶部
251クライアント環境模擬部
252アクセス部
253HTTPヘッダパーサ部
254コンテンツパーサ部
255スクリプトインタプリタ部
256 HTTPヘッダ解析部
257コンテンツ解析部
258 スクリプト解析部
271URLリスト作成部
272アクセス指示部
273登録処理部
274グラフ構築部
275グラフ解析部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ