JP6450022B2 - 解析装置、解析方法、および、解析プログラム - Google Patents

解析装置、解析方法、および、解析プログラム Download PDF

Info

Publication number
JP6450022B2
JP6450022B2 JP2017548698A JP2017548698A JP6450022B2 JP 6450022 B2 JP6450022 B2 JP 6450022B2 JP 2017548698 A JP2017548698 A JP 2017548698A JP 2017548698 A JP2017548698 A JP 2017548698A JP 6450022 B2 JP6450022 B2 JP 6450022B2
Authority
JP
Japan
Prior art keywords
script
transfer
url
website
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017548698A
Other languages
English (en)
Other versions
JPWO2017077847A1 (ja
Inventor
雄太 高田
雄太 高田
満昭 秋山
満昭 秋山
毅 八木
毅 八木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2017077847A1 publication Critical patent/JPWO2017077847A1/ja
Application granted granted Critical
Publication of JP6450022B2 publication Critical patent/JP6450022B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、解析装置、解析方法、および、解析プログラムに関する。
ドライブバイダウンロード攻撃(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参照)というツールもある。
L. Lu, V. Yegneswaran, P. Porras, and W. Lee, "BLADE : An Attack-Agnostic Approach for Preventing Drive-By Malware Infections", in Proceedings of the ACM Conference 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 Neighborhoods of 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 the IEEE 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/>
しかし、前記したウェブサイト改ざん検知手法は、改ざん前のコンテンツが必要であったり、自身が管理するウェブサーバ上のウェブサイトしか対応していなかったり、制限が存在する。このため、ドライブバイダウンロード攻撃において、転送の原因となったコンテンツの箇所やスクリプトの箇所、転送に関連したURLを特定することが困難な場合があった。そこで、本発明は、前記した問題を解決し、ドライブバイダウンロード攻撃において、転送の原因となったコンテンツの箇所やスクリプトの箇所、転送に関連したURLを特定することを課題とする。
前記した課題を解決するため、本発明は、ウェブサイトのコンテンツおよびスクリプトを解析する解析装置であって、ブラウザを用いて前記ウェブサイトにアクセスするアクセス部と、前記ウェブサイトのスクリプトの実行により、他のウェブサイトへ転送されるとき、転送元URLとして前記ウェブサイトのURL、転送先URLとして前記他のウェブサイトのURL、前記転送先URLへの転送方法として前記転送に用いられた前記スクリプトの関数名またはプロパティ名、実行元スクリプトとして前記スクリプトの識別情報を転送情報に記録し、また、前記ウェブサイトのスクリプトが、新たなスクリプトを生成するとき、前記ウェブサイトにおける実行元スクリプトとして前記新たなスクリプトの生成元スクリプトの識別情報、生成されたスクリプトとして前記新たなスクリプトの識別情報、および、スクリプト実行方法として前記生成に用いられた前記生成元スクリプトの関数名またはプロパティ名を転送情報に記録するスクリプト解析部と、前記転送情報に記録された転送元URLおよび転送先URLをノードとし、また、前記転送元URLにおける実行元スクリプトおよび生成されたスクリプトを前記転送元URLのノードに内包されるノードとし、前記転送情報に記録された転送方法およびスクリプトの実行方法をエッジとし、前記ブラウザがアクセスした一連のウェブサイトのURL、前記URLへの転送方法、転送に用いられたスクリプト、および、前記スクリプトの実行方法を示した有向グラフを構築するグラフ構築部とを備えることを特徴とする。
本発明によれば、ドライブバイダウンロード攻撃において、転送の原因となったコンテンツの箇所やスクリプトの箇所、転送に関連したURLを特定することができる。
図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は、解析プログラムを実行するコンピュータを示す図である。
以下、図面を参照しながら、本発明を実施するための形態(実施形態)について説明する。なお、本発明は本実施形態に限定されない。
まず、図1を用いて本実施形態のシステム構成例を説明する。システムは、例えば、図1に示すようにネットワーク1とネットワーク2とを備える。ネットワーク1とネットワーク2とはパケット転送装置3により接続される。
ネットワーク1は、解析対象ウェブサイト12を備える。ネットワーク1は、インターネットのように広域なネットワークであってもよいし、法人ネットワークのように中小規模なネットワークである場合やクラウド環境やホスティング環境のネットワークであってもよい。
解析対象ウェブサイト12は、ブラウザエミュレータマネージャ(解析装置)23による解析対象ウェブサイトである。この解析対象ウェブサイト12は、例えば、公開されている悪性ウェブサイトのブラックリストに掲載されているウェブサイトや検索エンジンから収集できるウェブサイト等である。
また、ネットワーク2は、ブラウザエミュレータマネージャ23と、解析情報データベース24と、グラフ記憶部28とを備える。ネットワーク2は、ローカルエリアネットワークのように小規模なネットワークであってもよいし、法人ネットワークのように中小規模なネットワークである場合やクラウド環境やホスティング環境のネットワークであってもよい。
ブラウザエミュレータマネージャ23は、1以上のブラウザエミュレータ25を管理し、このブラウザエミュレータ25に所定のウェブサイト(解析対象ウェブサイト12)へアクセスさせる。そして、ブラウザエミュレータマネージャ23は、ブラウザエミュレータ25がアクセスしたウェブサイトのURLや、当該ウェブサイトから取得したコンテンツやスクリプトの解析により得られた情報を解析情報データベース24へ蓄積する。
ブラウザエミュレータ25は、ブラウザの動作を模擬する装置である。このブラウザエミュレータ25は、例えば、ハニーネットプロジェクトが提供しているブラウザエミュレータや、オープンソースとして開発されたHtmlUnitやPhantom JSが適用できるが、これらに限るものではない。このブラウザエミュレータ25の詳細は後記する。なお、図1においてブラウザエミュレータ25は、ブラウザエミュレータマネージャ23内に構築されるように描かれているが、ブラウザエミュレータマネージャ23外に構築されてももちろんよい。
解析情報データベース24は、ブラウザエミュレータ25がアクセスしたウェブサイトのURLや、当該ウェブサイトから取得したコンテンツの解釈により発生した転送に関する情報等を蓄積する。この解析情報データベース24における情報の保存は、RDBMS(Relational DataBase Management System)を用いてもよいし、テキスト形式で保存してもよい。この解析情報データベース24の詳細は後記する。
グラフ記憶部28は、ブラウザエミュレータマネージャ23により構築されたURL間の転送を示す有向グラフ(図9、図10A、図10B参照)を記憶する。この有向グラフの詳細は後記する。
なお、本実施形態では、ブラウザエミュレータマネージャ23、ブラウザエミュレータ25および解析情報データベース24を同じネットワークに配置しているが、それぞれ別のネットワークに配置してもよい。また、各構成をセキュアに接続するため、既存の暗号技術を適用して通信情報を暗号化したり、各機能が配置されたネットワーク間または各機能間をVPN(Virtual Private Network)で接続したりしてもよい。
次に、図2を用いてブラウザエミュレータマネージャ23およびブラウザエミュレータ25を詳細に説明する。ブラウザエミュレータマネージャ23はブラウザエミュレータ25、制御部27を備える。制御部27は、ブラウザエミュレータマネージャ23の備えるホストシステム26上でブラウザエミュレータ25を動作させる。このホストシステム26は、例えば、ブラウザエミュレータマネージャ23が備えるOSを用いる。制御部27の詳細は後記する。
(ブラウザエミュレータ)
次に、ブラウザエミュレータ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の詳細は後記する。
クライアント環境模擬部251は、ブラウザエミュレータ25で模擬するクライアント環境(例えば、OS、ブラウザ、プラグイン等)の情報を設定する。
アクセス部252は、ウェブサイト(例えば、図1の解析対象ウェブサイト12)と、HTTPまたはHTTPS(HyperText Transfer Protocol Secure)による通信を行い、当該HTTP通信時にHTTPヘッダ情報およびHTTPボディ情報(コンテンツ)を取得する。このアクセス部252には、例えば、フリーソフトウェアとして開発されたcURLを用いる。
また、アクセス部252は、ウェブサイトのアクセス結果をログとして記録する。例えば、アクセス部252は、アクセスしたウェブサイトのURLや、アクセスした日時、アクセス時のブラウザの環境情報をログとして記録する。また、ログには当該ウェブサイトへのアクセスにより、異なるウェブサイトへの転送が発生した場合に、HTTPヘッダ解析部256、コンテンツ解析部257、スクリプト解析部258により特定した転送先URL、転送元URL、転送方法等も記録される。つまり、ログには、アクセス部252がアクセスしたウェブサイトのURL、当該URLへアクセスした日時、当該URLへのアクセス時におけるブラウザの環境情報等の情報(アクセスログ)と、転送が発生した場合の転送先URL、転送元URL、転送方法等の情報(転送情報)との2種類の情報がある。このログは後記する登録処理部273により解析情報データベース24に登録される。
HTTPヘッダパーサ部253は、アクセス部252で取得したHTTPヘッダ情報を解釈する。HTTPヘッダ情報を解釈した結果は、HTTPヘッダ解析部256を用いて解析する。
HTTPヘッダ解析部256は、HTTPによる転送コードを特定するため、HTTPヘッダパーサ部253でHTTPヘッダ情報を解釈した結果を解析する。具体的には、HTTPヘッダ解析部256は、HTTP応答ヘッダのHTTPステータスコードの番号が300番台(転送を通知するHTTPステータスコード)であった場合に、転送先URLはHTTP応答ヘッダのLocationフィールドのURL、転送元URLは当該HTTP応答に対するHTTP要求ヘッダの要求URLを記録し、転送方法はHTTPステータスコードの番号を記録する。
図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」を記録する。
コンテンツパーサ部254は、アクセス部252で取得したコンテンツを解釈する。コンテンツを解釈した結果は、コンテンツ解析部257を用いて解析する。また、当該コンテンツにスクリプトが含まれている場合、スクリプトインタプリタ部255を用いて当該スクリプトを解釈する。例えば、コンテンツがHTMLやXML(Extensible Markup Language)であった場合、コンテンツパーサ部254は、オープンソースとして開発されたNekoHTMLやBeautifulSoup等のHTML/XMLパーサを用いて、コンテンツを解釈する。
コンテンツ解析部257は、コンテンツ中からURLを参照するHTMLタグを特定するため、コンテンツパーサ部254でコンテンツを解釈した結果を解析する。具体的には、コンテンツ解析部257は、コンテンツがHTMLで記述され、かつ、コンテンツにURLが指定された属性を持つHTMLタグが含まれていた場合、転送先URLは当該指定されたURL、転送元URLは当該コンテンツのURLを記録し、転送方法はHTMLタグ名を記録する。
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タグを解析対象に加えてもよいし、加えなくてもよい。
スクリプトインタプリタ部255は、コンテンツパーサ部254で取得されたスクリプトを解釈する。例えば、スクリプトがJavaScriptにより記述されている場合、スクリプトインタプリタ部255は、オープンソースとして開発されたSpiderMonkeyやV8 JavaScript Engine、Rhino等のJavaScriptインタプリタを用いて、スクリプトを解釈する。
スクリプト解析部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」となる。なお、以下の説明においてスクリプトの識別情報として、当該スクリプトのハッシュ値を用いることとしたがこれ以外の識別情報を用いてももちろんよい。
また、スクリプトの中には、HTMLタグを生成し、生成したHTMLタグを、当該スクリプトを読み込んだコンテンツに挿入したり、属性を操作したりするスクリプトもある。このようなスクリプト(JavaScript)の例を、図5Bに示す。
例えば、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タグによる転送であることを特定できる。
なお、スクリプト解析部258の解析対象は、図5Aおよび図5Bに示したJavaScriptの関数やプロパティ以外の関数やプロパティであってももちろんよい。
また、上記のようなスクリプトによるHTMLタグの生成と挿入は、同一コンテンツ内のHTMLおよびスクリプトであれば、転送元URLと転送先URLを正しく特定できる。例えば、図6に示すように、アクセス部252がアクセスしたURLがURL1であり、このURL1のコンテンツ内のJavaScriptの実行によりiframeタグを生成し((1))、このiframeタグによりURL2が参照される((2))場合を考える。この場合、転送元URL(URL1)と転送先URL(URL2)は、従来技術においても正しく特定できる。しかし、スクリプトによるHTMLタグの生成と挿入が、外部のウェブサイトのコンテンツのHTMLおよびスクリプトを参照したものである場合、従来技術では、転送元URLの情報が欠落する場合がある。
このことを、図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))。
このときコンテンツ解析部257によるHTMLタグの解析により、転送元URLはURL1、転送先URLはURL3と特定できる。また、通常のブラウザの実装においても、参照元URLが記録されるHTTP要求ヘッダのリファラ(Referer)フィールドに、URL2への要求ではURL1が設定され、URL3への要求でもURL1が設定される。つまり、実際は、URL2のJavaScriptの実行が原因でURL3への要求が発生しているため、転送元URLはURL2、転送先URLはURL3というURL2からURL3への転送情報が必要である。しかし、従来技術におけるHTMLタグによる特定やリファラ情報による特定では、当該転送情報は欠落してしまう。
そこで、スクリプト解析部258は、外部のウェブサイトのスクリプトを実行する際に、当該スクリプトを含むウェブサイトのURL(例えば、上記のURL2)を別途記録し、当該URLを転送元URLに設定する。そして、スクリプト解析部258は、当該スクリプトの実行により別のURL(例えば、URL3)への要求が発生したことを捉えると、転送元URLを上記の外部のウェブサイト(例えば、URL2)、転送先URLを当該スクリプトの実行による要求先のURL(例えば、URL3)とした転送情報を記録する。つまり、スクリプト解析部258は、上記のURL2からURL3への転送情報を記録する。
また、JavaScript等のスクリプトの中には、新たなスクリプトを生成するものもある。このようなスクリプトの動的生成は、コードの難読化や所定時間間隔を置いたコード実行等に用いられ、eval、setInterval、setTimeout等の関数が用いられる。
スクリプト解析部258は、上記のように動的に生成されるスクリプトによる転送を特定するため、当該スクリプトの実行において呼び出される関数を監視し、実行処理を追跡する。例えば、スクリプト解析部258は、当該スクリプトの実行において上記のeval、setInterval、setTimeout等の関数が用いられたことを捉えると、新たに生成されたスクリプトの生成元のスクリプトのハッシュ値、新たに生成されたスクリプトのハッシュ値、生成元のスクリプトの実行方法(例えば、生成元スクリプトにより呼び出された関数名またはプロパティ名)を記録する。なお、スクリプト解析部258がスクリプトの実行を追跡する際に、スクリプトのハッシュ値ではなくスクリプトそのものを記録してももちろんよい。
(制御部)
次に、制御部27を説明する。制御部27は、URLリスト作成部271と、アクセス指示部272と、登録処理部273と、グラフ構築部274と、グラフ解析部275とを備える。
URLリスト作成部271は、各ブラウザエミュレータ25が巡回するウェブサイト(解析対象ウェブサイト12)のURLリストである巡回対象URLリストを作成する。例えば、URLリスト作成部271は、公開されている悪性ウェブサイトのブラックリストに掲載されているウェブサイトのURLをもとに巡回対象URLリストを作成する。
アクセス指示部272は、各ブラウザエミュレータ25のアクセス部252へ巡回対象URLリスト(URLリスト)に示されるURLへのアクセスを指示する。
登録処理部273は、各ブラウザエミュレータ25のログを取得し、解析情報データベース24に登録する。
グラフ構築部274は、解析情報データベース24の転送情報を結合し、解析対象ウェブサイト12へのアクセスに起因して発生した転送を示す有向グラフを構築する。そして、グラフ構築部274は、構築した有向グラフをグラフ記憶部28に出力する。この有向グラフは、転送情報に示される転送元URLや転送元URLをノードとし、転送方法をエッジとした有向グラフであり、例えば、図8に示す有向グラフである。
図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」に転送されることを示す。
また、グラフ構築部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」のノード内に加える。
このように、グラフ構築部274は、解析情報データベース24の転送情報に基づき、HTMLタグによる転送は、転送元URLのコンテンツ内において、転送先URLを指定した転送方法のHTMLタグを探し出し、このHTMLタグを転送元URLのノードから転送先URLのノードへのエッジとする。また、グラフ構築部274は、スクリプトによる転送については、転送元URLのコンテンツ内において、転送先URLを指定した転送コードの実行元スクリプトを探し出す。そして、グラフ構築部274は、当該実行元スクリプトで用いられた関数を、転送元URLの実行元スクリプトのノードから転送先URLのノードへのエッジとする。なお、スクリプトが動的生成されている場合、グラフ構築部274は、最終的に生成されたスクリプトから生成元スクリプトを辿り、生成元スクリプトから生成されたスクリプトをエッジで接続する。
グラフ解析部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タグが攻撃に関与していることを特定できる。そして、この結果を解析結果として出力する。
すなわち、グラフ解析部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タグ(すなわち、改ざんされたと思われる箇所)を通知し、当該タグの削除の推奨等を行うことができる。
なお、グラフ構築部274は、外部のウェブサイトのコンテンツを参照した転送が行われる場合(図7参照)は、以下のようにして有向グラフを構築する。ここでは、比較のため、既存手法により構築される転送の有向グラフの例を図10Aに示す。また、本実施形態のグラフ構築部274により構築される転送の有向グラフの例を図10Bに示す。
ここでは、「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」に転送される場合を例に説明する。
このような場合、図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」へのエッジを持つ有向グラフを構築できる。
このようにグラフ構築部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タグ等が攻撃に関与していることを特定できる。
そして、仮に、c.exampleドメインのウェブサイトが一般のウェブサイトであった場合に、システムは、当該ウェブサイト管理者に対して、上記で特定したscriptタグ(すなわち、改ざんされたと思われる箇所)を通知し、当該タグの削除の推奨等を行うことができる。なお、改ざんされたと思われる箇所は、有向グラフを逆順にたどる過程で、ドメインに変更が生じるような転送が発生した箇所(例えば、JavaScript E のdocument.write)や、特定の方法による転送(例えば、document.writeによる転送)が発生した箇所であってもよい。
(解析情報データベース)
次に、解析情報データベース24を説明する。解析情報データベース24は、解析情報として、アクセスログと、転送情報とを記憶する。アクセスログは、例えば、図11Aに示すとおり、アクセスログの識別情報である「ID」、ブラウザエミュレータ25が解析対象ウェブサイト12のURLにアクセスした際にアクセスしたURLである「アクセスURL」、当該URLにアクセスした日時を表す「タイムスタンプ」、当該URLにアクセスした際にブラウザエミュレータ25が模擬したクライアント環境情報を表す「環境情報」等を対応付けた情報である。また、転送情報は、例えば、図11Bに示すとおり、どのIDのアクセスログに示されるアクセスURLを入口URLとした転送情報かを示す「ID」、転送またはスクリプトの実行がされた日時を表す「タイムスタンプ」、転送元URLを表す「転送元URL」、転送先URLを表す「転送先URL」、転送方法や実行方法を表す「方法」、転送コードが実行されたスクリプトの識別情報(例えば、ハッシュ値)を記録する「実行スクリプト」、スクリプト実行により動的生成されたスクリプトの識別情報(例えば、ハッシュ値)を記録する「生成されたスクリプト」等を対応付けた情報である。なお、アクセスログおよび転送情報は、上記以外の情報を含んでいてももちろんよい。
ここで、図11Aに示すアクセスログおよび図11Bに示す転送情報を用いた、グラフ構築部274によるグラフ構築方法の例を説明する。
例えば、図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/」へ転送されることが分かる。
グラフ構築部274は、このように解析情報データベース24の転送情報を辿ることで、入口URL「http://a.example/」から「http://b.example/exploit/」までの有向グラフを構築する(図9参照)。
また、図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」へ転送されることが分かる。
グラフ構築部274は、このように解析情報データベース24の転送情報を辿ることで、入口URL「http://c.example/test.html」から「http://d.example/exploit」までの有向グラフを構築する(図10B参照)。
以上説明したシステムによれば、ウェブサイトへのアクセスにより、異なるウェブサイトへ自動的に転送された場合に、ウェブサイトのコンテンツ解釈処理やコンテンツに含まれるスクリプト実行処理を追跡し、転送情報を記録し、蓄積する。そして、最終的に、ドライブバイダウンロード攻撃を仕掛ける悪性ウェブサイトへ転送された場合に、蓄積された転送情報をもとに有向グラフを構築し、この有向グラフを逆順に辿ることで、転送の原因となったコンテンツの箇所やスクリプトの箇所および転送に関与したウェブサイトのURLを特定できる。
(処理手順)
次に、図12を用いて、システムの処理手順の例を説明する。
まず、URLリスト作成部271は、巡回対象URLリストを作成する(S1)。例えば、URLリスト作成部271は、公開されている悪性ウェブサイトのブラックリストや検索エンジンで収集できるウェブサイト等をもとに巡回対象URLリストを作成する。
そして、アクセス指示部272は、ブラウザエミュレータ25に巡回対象URLリストのURLを入力し(S2)、ブラウザエミュレータ25はアクセス部252で、S2で入力されたURLにアクセスする(S3)。
アクセス部252は、アクセスしたウェブサイトのコンテンツをHTTPヘッダパーサ部253、コンテンツパーサ部254、スクリプトインタプリタ部255で解釈し、解釈した結果に基づき、HTTPヘッダ解析部256、コンテンツ解析部257、スクリプト解析部258で、それぞれ解析する(S4:ウェブサイト挙動解析)。また、巡回対象URLへのアクセスにより転送されたウェブサイトについても、同様にコンテンツを取得し、解析を実施する。このS4の処理の詳細は後記する。
なお、S2においてアクセス指示部272は、1つのブラウザエミュレータ25に複数URLへアクセスさせてもよいし、複数のブラウザエミュレータ25にそれぞれ異なるURLへアクセスさせるようにしてもよい。
S4の後、アクセス部252はアクセスログを出力する(S5)。つまり、アクセス部252は、アクセス指示部272により入力されたURLへのアクセス結果をアクセスログとして出力する。そして、登録処理部273は、S5で出力されたアクセスログおよびS4での解析結果(転送情報)を整形し、解析情報データベース24(図11Aおよび図11B参照)へ蓄積する(S6)。
S6の後、巡回対象URLリストに次の巡回URLが存在すれば(S7でYes)、S2へ戻る。一方、巡回対象URLリストに次の巡回URLが存在しなければ(S7でNo)、処理を終了する。
上記のようにして、解析情報データベース24にアクセスログおよび転送情報が蓄積されると、グラフ構築部274は、解析情報データベース24に蓄積されたアクセスログおよび転送情報からURL間の転送を示す有向グラフを構築し、グラフ記憶部28に記憶する。そして、グラフ解析部275は、グラフ記憶部28の有向グラフを参照して、例えば、転送の原因となっているコンテンツ箇所やスクリプト箇所や攻撃に関与しているURLを特定する。
次に、図13を用いて、図12のS4のウェブサイト挙動解析の処理を詳細に説明する。
まず、アクセス部252は、巡回対象URLにアクセスした際に発生したHTTP通信から、HTTPヘッダをHTTPヘッダパーサ部253に解釈させ、解釈した結果をHTTPヘッダ解析部256に解析させる。つまり、HTTPヘッダ解析部256は巡回対象URLへのHTTP通信から取得したHTTPヘッダ情報を解析する(S8)。
ここで、HTTPヘッダ解析部256による解析の結果、HTTP応答ヘッダのHTTPステータスコードが300番台(リダイレクト(転送)を表す番号)であった場合に(S9でYes)、転送元URLはHTTP要求ヘッダの要求URL、転送先URLはHTTP応答ヘッダのLocationフィールドのURL、転送方法は当該HTTPステータスコードとした転送情報を記録し(S10:HTTPヘッダ情報に基づく転送情報の記録)、処理を終了する。一方、HTTP応答ヘッダのステータスコードが300番台ではない場合に(S9でNo)、S11へ進む。
S11において、アクセス部252は、巡回対象URLにアクセスした際に発生したHTTP通信から、HTTPボディをコンテンツパーサ部254に解釈させ、解釈した結果をコンテンツ解析部257に解析させる。つまり、コンテンツ解析部257は上記のHTTP通信により取得したHTTPボディ情報(コンテンツ)を解析する(S11)。ここで、コンテンツ解析部257による解析の結果、HTTPボディ情報にHTMLが含まれている場合に(S12でYes)、S13へ進む。一方、HTTPボディ情報にHTMLが含まれない場合は(S12でNo)、S17へ進む。
S13において、当該HTMLにURLを指定した属性を持つHTMLタグが含まれる場合(S13でYes)、S14へ進む。一方、HTMLにURLを指定した属性を持つHTMLタグが含まれない場合(S13でNo)、S17へ進む。
S14において、当該HTMLタグがスクリプトによって挿入されたHTMLタグである場合(S14でYes)、スクリプト解析部258は、転送元URLは当該コンテンツ(つまり当該スクリプトの属するコンテンツ)のURL、転送先URLは当該HTMLタグにより指定されたURL、転送方法はスクリプトの関数名またはプロパティ名(つまり、当該HTMLの挿入に用いられた関数の関数名または代入されたプロパティ名)+当該HTMLタグ名とした転送情報を記録する(S15:転送方法をスクリプトの関数名またはプロパティ名+HTMLタグ名としたHTMLタグに基づく転送情報の記録)。
一方、当該HTMLタグがスクリプトによって挿入されたHTMLタグではない場合(S14でNo)、スクリプト解析部258は、転送元URLは当該コンテンツ(つまり当該HTMLタグの属するコンテンツ)のURL、転送先URLは当該HTMLタグにより指定されたURL、転送方法は当該HTMLタグ名とした転送情報を記録する(S16:転送方法をHTMLタグ名としたHTMLタグに基づく転送情報の記録)。その後、S17へ進む。
S17において、コンテンツ解析部257によるHTTPボディ情報の解析の結果、HTTPボディ情報にスクリプトが含まれると判断した場合(S17でYes)、当該スクリプトをスクリプトインタプリタ部255に解釈させ、解釈の過程でスクリプト解析部258によるスクリプトの動的解析を実行する(S18)。一方、HTTPボディ情報にスクリプトが含まれない場合は(S17でNo)、処理を終了する。S18におけるスクリプトの動的解析の処理の詳細は後記する。なお、ブラウザエミュレータ25は、上記のウェブサイト挙動解析処理が終了した際に、異なるURLへの転送が発生した場合には、当該URLのウェブサイトを前記と同様に解析する。
続いて、図14を用いて、図13のS18のスクリプトの動的解析の処理を詳細に説明する。
まず、スクリプト解析部258は、HTTPボディ情報(コンテンツ)から取得したスクリプトの動的解析を実行し(S19)、当該スクリプトが外部のウェブサイトのファイルに含まれるスクリプトか否かを判定する。つまり、スクリプト解析部258は、当該スクリプトが外部参照したスクリプトか否かを判定する(S20)。ここでスクリプト解析部258が、当該スクリプトが外部参照したスクリプトであると判定した場合(S20のYes)、外部参照先URL(つまり、当該スクリプトの属するウェブサイトのURL)を別途保持し(S21)、S22へ進む。一方、スクリプト解析部258が、当該スクリプトが外部参照したスクリプトではないと判定した場合(S20でNo)、S22へ進む。
S22において、スクリプト解析部258が、当該スクリプトの実行中に、指定されたURLへ転送する関数の呼び出しまたはプロパティ代入を検知した場合に(S22でYes)、S23へ進む。一方、スクリプト解析部258が、指定されたURLへ転送する関数の呼び出しもプロパティ代入も検知しなかった場合(S22でNo)、S26へ進む。S26については後記する。
S23において、外部参照先URLが保持されている場合(S23でYes)、スクリプト解析部258は、転送元URLは外部参照先URL、転送先URLは外部参照されたスクリプトにより指定されたURL、転送方法は外部参照されたスクリプトの関数名またはプロパティ名(つまり、当該スクリプトにより呼び出された関数の関数名または代入されたプロパティ名)とした転送情報を記録する。また、スクリプト解析部258は、転送情報に実行元スクリプト(外部参照されたスクリプト)を記録する(S24:外部参照したスクリプトの実行に基づく転送情報の記録)。その後、S26へ進む。
一方、S23において、外部参照先URLが保持されていない場合(S23でNo)、スクリプト解析部258は、転送元URLは当該コンテンツ(つまり当該スクリプトの属するコンテンツ)のURL、転送先URLは当該スクリプトにより指定されたURL、転送方法は当該スクリプトの関数名またはプロパティ名(つまり、当該スクリプトにより呼び出された関数の関数名または代入されたプロパティ名)とした転送情報を記録する。また、スクリプト解析部258は、転送情報に実行元スクリプト(当該スクリプト)を記録する(S25:コンテンツから取得したスクリプトの実行に基づく転送情報の記録)。その後、S26へ進む。
なお、これ以降、スクリプト解析部258は、上記同様、外部参照先URLが保持されていれば、外部参照先URLを優先して記録し、保持されていなければ、実行中のスクリプトの属するコンテンツのURLを転送情報に記録する。
S26において、スクリプト解析部258は、スクリプトの実行中に、当該コンテンツ(つまり当該スクリプトの属するコンテンツ)の内容を変更する関数の呼び出しまたはプロパティ代入を検知した場合に(S26でYes)、変更対象コンテンツに識別子を設定する(S27)。つまり、スクリプト解析部258は、どのコンテンツに対し変更が加えられたかを記録しておく。その後、S28へ進む。一方、スクリプト解析部258は、当該コンテンツの内容を変更する関数の呼び出しもプロパティ代入も検知しなかった場合に(S26でNo)、S28へ進む。
なお、上記のコンテンツの内容の変更とは、例えば、コンテンツ内に新たなHTMLタグを挿入することである。新たなHTMLタグが挿入された場合は、挿入されたHTMLタグにおいても同様に、S13からS18までの処理を実行する。また、S27で変更対象コンテンツに設定する識別子には、例えば、当該コンテンツの内容を変更する原因となったスクリプトのハッシュ値やURLを用いる方法等が考えられるが、これ以外の方法であってももちろんよい。
S28において、スクリプト解析部258は、当該スクリプトの実行中に、新たに生成されたスクリプトを実行する関数の呼び出しを検知した場合(S28でYes)、生成元スクリプト、生成されたスクリプト、実行方法(生成元スクリプトの実行方法)を転送情報に記録する(S29)。つまり、スクリプト解析部258は、スクリプトの実行により新たなスクリプトが生成されたことを検知すると、転送元URLは生成元スクリプトの属するコンテンツのURLとし、実行方法は生成元スクリプトの実行方法とし、生成されたスクリプトは生成元スクリプトにより生成されたスクリプトとし、実行スクリプトは生成元スクリプトとした転送情報を記録する。
一方、S28において、スクリプト解析部258は、スクリプトの実行中に、新たに生成されたスクリプトを実行する関数の呼び出しを検知しなかった場合(S28でNo)、処理を終了する。
なお、上記のS22、S26、S28において、スクリプト解析部258がスクリプト実行中に監視する関数の呼び出しやプロパティ代入等の各処理は、図14に示した手順で実行してもよいし、順序を入れ替えてももちろんよい。
以上説明したシステムによれば、ウェブサイトへのアクセスにより、異なるウェブサイトへ自動的に転送された場合に、ウェブサイトのコンテンツ解釈処理やコンテンツに含まれるスクリプト実行処理を追跡し、転送情報を記録し、蓄積する。そして、最終的に、ドライブバイダウンロード攻撃を仕掛ける悪性ウェブサイトへ転送された場合に、蓄積された転送情報をもとに有向グラフを構築し、この有向グラフを逆順に辿ることで、転送の原因となったコンテンツの箇所やスクリプトの箇所および転送に関与したウェブサイトのURLを特定できる。
また、上記の実施形態で述べたブラウザエミュレータマネージャ23は、上記の処理を実行するブラウザエミュレータマネージャ23を所望の情報処理装置(コンピュータ)にインストールすることによって実装できる。例えば、パッケージソフトウェアやオンラインソフトウェアとして提供される上記のブラウザエミュレータマネージャ23を情報処理装置に実行させることにより、情報処理装置をブラウザエミュレータマネージャ23として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistants)等のスレート端末等がその範疇に含まれる。また、ブラウザエミュレータマネージャ23を、Webサーバやクラウドとして実装してもよい。
(プログラム)
図15は、解析プログラムを実行するコンピュータを示す図である。図15に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU(Central Processing Unit)1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
メモリ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が接続される。
ここで、図15に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各情報、データは、例えばハードディスクドライブ1090やメモリ1010に記憶される。
また、解析プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明したブラウザエミュレータマネージャ23が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。
また、解析プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
なお、解析プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、解析プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
1,2 ネットワーク
3 パケット転送装置
12 解析対象ウェブサイト
23 ブラウザエミュレータマネージャ
24 解析情報データベース
25 ブラウザエミュレータ
26 ホストシステム
27 制御部
28 グラフ記憶部
251 クライアント環境模擬部
252 アクセス部
253 HTTPヘッダパーサ部
254 コンテンツパーサ部
255 スクリプトインタプリタ部
256 HTTPヘッダ解析部
257 コンテンツ解析部
258 スクリプト解析部
271 URLリスト作成部
272 アクセス指示部
273 登録処理部
274 グラフ構築部
275 グラフ解析部

Claims (7)

  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への転送方法、転送に用いられたスクリプト、および、前記スクリプトの実行方法を示した有向グラフを構築するステップと
    をコンピュータに実行させることを特徴とする解析プログラム。
JP2017548698A 2015-11-02 2016-10-17 解析装置、解析方法、および、解析プログラム Active JP6450022B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015215469 2015-11-02
JP2015215469 2015-11-02
PCT/JP2016/080708 WO2017077847A1 (ja) 2015-11-02 2016-10-17 解析装置、解析方法、および、解析プログラム

Publications (2)

Publication Number Publication Date
JPWO2017077847A1 JPWO2017077847A1 (ja) 2018-03-08
JP6450022B2 true JP6450022B2 (ja) 2019-01-09

Family

ID=58661839

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017548698A Active JP6450022B2 (ja) 2015-11-02 2016-10-17 解析装置、解析方法、および、解析プログラム

Country Status (5)

Country Link
US (1) US10701087B2 (ja)
EP (1) EP3340097B1 (ja)
JP (1) JP6450022B2 (ja)
CN (1) CN108351941B (ja)
WO (1) WO2017077847A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729223A (zh) * 2017-08-31 2018-02-23 福建天晴数码有限公司 一种在移动终端上记录用户操作的方法及装置
JP7013297B2 (ja) * 2018-03-22 2022-01-31 株式会社セキュアブレイン 不正検知装置、不正検知ネットワークシステム、及び不正検知方法
US20210026969A1 (en) * 2019-07-23 2021-01-28 Chameleonx Ltd Detection and prevention of malicious script attacks using behavioral analysis of run-time script execution events
CN111814006A (zh) * 2020-07-27 2020-10-23 深圳壹账通智能科技有限公司 图网络结构的分析方法、装置和计算机设备
CN112702331A (zh) * 2020-12-21 2021-04-23 赛尔网络有限公司 基于敏感词的恶意链接识别方法、装置、电子设备及介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6976210B1 (en) * 1999-08-31 2005-12-13 Lucent Technologies Inc. Method and apparatus for web-site-independent personalization from multiple sites having user-determined extraction functionality
TWI285808B (en) * 2002-07-27 2007-08-21 Samsung Electronics Co Ltd Apparatus and method for reproducing content and information storage medium therefor
JP4208081B2 (ja) * 2004-12-27 2009-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のウェブサイトにパーソナライズされた価値を追加するためのシステム、ウェブサーバ、方法およびプログラム
JP4140916B2 (ja) * 2005-12-22 2008-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション Webページにおける状態遷移を解析する方法
CN101409937B (zh) * 2008-01-25 2011-04-20 聂沫平 一种将脚本转换成目标系统支持的数据格式的方法及装置
CN101667230B (zh) * 2008-09-02 2013-10-23 北京瑞星信息技术有限公司 一种监控脚本执行的方法和装置
US8176556B1 (en) * 2008-10-31 2012-05-08 Symantec Corporation Methods and systems for tracing web-based attacks
US8448245B2 (en) * 2009-01-17 2013-05-21 Stopthehacker.com, Jaal LLC Automated identification of phishing, phony and malicious web sites
CN102460428A (zh) * 2009-06-05 2012-05-16 惠普开发有限公司 用于表示与web服务的用户交互的系统和方法
JP2011013974A (ja) * 2009-07-02 2011-01-20 Kddi Corp ウェブサイト評価装置およびプログラム
US8789178B2 (en) * 2009-08-03 2014-07-22 Barracuda Networks, Inc. Method for detecting malicious javascript
US9195768B2 (en) * 2011-08-26 2015-11-24 Amazon Technologies, Inc. Remote browsing session management
TWI439097B (zh) * 2011-08-26 2014-05-21 Univ Nat Taiwan Science Tech 跨站腳本攻擊產生方法
WO2013184653A1 (en) * 2012-06-04 2013-12-12 Board Of Regents, The University Of Texas System Method and system for resilient and adaptive detection of malicious websites
CN103281387B (zh) * 2013-05-31 2017-04-12 北京奇虎科技有限公司 处理网页中子资源的方法、服务器、客户端和系统
US9154492B2 (en) * 2013-09-27 2015-10-06 The University Of North Carolina At Charlotte Moving target defense against cross-site scripting
US9734332B2 (en) 2014-03-17 2017-08-15 Proofpoint, Inc. Behavior profiling for malware detection
JP6144848B2 (ja) * 2014-10-14 2017-06-07 日本電信電話株式会社 解析装置、解析方法、および、解析プログラム
CN105243159B (zh) * 2015-10-28 2019-06-25 福建亿榕信息技术有限公司 一种基于可视化脚本编辑器的分布式网络爬虫系统

Also Published As

Publication number Publication date
US20180316696A1 (en) 2018-11-01
EP3340097B1 (en) 2019-08-07
EP3340097A4 (en) 2019-04-10
EP3340097A1 (en) 2018-06-27
WO2017077847A1 (ja) 2017-05-11
JPWO2017077847A1 (ja) 2018-03-08
CN108351941B (zh) 2021-10-26
US10701087B2 (en) 2020-06-30
CN108351941A (zh) 2018-07-31

Similar Documents

Publication Publication Date Title
US11941054B2 (en) Iterative constraint solving in abstract graph matching for cyber incident reasoning
US11184374B2 (en) Endpoint inter-process activity extraction and pattern matching
JP6450022B2 (ja) 解析装置、解析方法、および、解析プログラム
Egele et al. Defending browsers against drive-by downloads: Mitigating heap-spraying code injection attacks
Borgolte et al. Delta: automatic identification of unknown web-based infection campaigns
US8516591B2 (en) Security monitoring
US8176556B1 (en) Methods and systems for tracing web-based attacks
US8955138B1 (en) Systems and methods for reevaluating apparently benign behavior on computing devices
JP6687761B2 (ja) 結合装置、結合方法および結合プログラム
CN103279710A (zh) Internet信息系统恶意代码的检测方法和系统
JP5752642B2 (ja) 監視装置および監視方法
Lamprakis et al. Unsupervised detection of APT C&C channels using web request graphs
US9519780B1 (en) Systems and methods for identifying malware
CN103561076B (zh) 一种基于云的网页挂马实时防护方法及系统
JP6527111B2 (ja) 解析装置、解析方法および解析プログラム
Drakonakis et al. Rescan: A middleware framework for realistic and robust black-box web application scanning
Sharif Web attacks analysis and mitigation techniques
JP6666475B2 (ja) 解析装置、解析方法及び解析プログラム
Takata et al. Website forensic investigation to identify evidence and impact of compromise
Aggarwal et al. Spying Browser Extensions: Analysis and Detection
Hovmark et al. Towards Extending Probabilistic Attack Graphs with Forensic Evidence: An investigation of property list files in macOS
Hsu et al. A Cloud-based Protection approach against JavaScript-based attacks to browsers
Pan Proactive Web Security and Privacy Systems without Breaking Compatibility
KR20240103411A (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 컴퓨터로 판독 가능한 저장매체
KR20240103338A (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리 프로그램을 저장하는 컴퓨터로 판독 가능한 저장 매체

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181030

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181206

R150 Certificate of patent or registration of utility model

Ref document number: 6450022

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150