説明

ウェブページ検査装置、コンピュータシステム、ウェブページ検査方法、及びプログラム

【課題】検査対象として指定されたウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する。
【解決手段】サーバ20のホストOS30上で、通信部31がファイルを受信し、URLリスト生成部32がファイルからURLリストを生成してURLリスト記憶部33に記憶する。そして、ゲストOS40上で、URL読出し部41がURLリストからURLを読み出し、ブラウザ部42がそのURLのページにアクセスし、状態変化監視部43が状態変化ログを状態変化ログ記憶部44に記録すれば、情報出力部45が、通信情報記憶部34、巡回情報記憶部35、状態変化情報記憶部36に情報を出力すると共に再起動部37にゲストOS40の再起動を指示する。その後、ホストOS30上で、ページ生成部38が上記の出力された情報に基づいてクライアントに表示するページを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査するウェブページ検査装置、コンピュータシステム、ウェブページ検査方法、及びプログラムに関する。
【背景技術】
【0002】
近年のインターネットの爆発的な普及に伴い、ネットワーク上に存在する脅威は無視できないものとなっている。そのようなネットワーク上の脅威の1つに、悪性プログラムがある。この悪性プログラムは、「マルウェア」とも呼ばれ、ユーザにとって好ましくない悪意を持つプログラムのことを指している。マルウェアの代表的なものとして、所謂コンピュータウイルスがある。
【0003】
このようなマルウェアとして、これまでは、ネットワークを通じて能動的に感染を広げるものが多く確認されてきた。例えば、電子メール等を通じて一気に大量感染するタイプのマルウェアである。しかし、昨今、パーソナルファイアウォールが標準装備されたオペレーティングシステム(OS)が浸透してきたこともあり、そのような「能動的攻撃」型のマルウェアによる被害は、以前よりは目立たなくなってきている。
これに対して、ここ最近急激に増加しているのが、ウェブサイトを利用した「受動的な攻撃」型のマルウェアである。このようなマルウェアは、例えば、ウェブサーバの脆弱性を突いて書き換えられたウェブページを閲覧しただけで感染するように仕掛けられている。安全なはずの一般企業のウェブページが書き換えられることもあるため、「怪しいウェブサイト」に近付かないように気を付けていてもマルウェアに感染する事例は増えている。
【0004】
ここで、公報記載の技術として、ウイルス感染ページをウェブサイト側で検知し、ユーザ環境へのウイルス侵入を未然に阻止するシステムがある(例えば、特許文献1参照)。この特許文献1では、自動巡回ロボットが、ウイルスデータベースを参照しながら各ウェブサイトを巡回することにより、ウェブページがウイルスに感染していないかどうかの検知を行い、ウイルスに感染しているウェブページを発見した場合はそのウェブページの情報をウイルス感染ページデータベースに登録し、感染ページを有するウェブサイトに対してウェブページがウイルスに感染している旨の通知を行っている。
【0005】
【特許文献1】特開2001−222425号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
このように、ウェブページを閲覧することによるユーザ環境へのマルウェアの侵入を阻止する技術は、従来から存在した。
しかしながら、特許文献1の技術において、自動巡回ロボットは、ウェブ検索サービス機能を持ったウェブサイトで稼働するプログラムのように、複数のウェブサイト/ページを自動的に渡り歩いているに過ぎず、ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する対象として指定されたウェブページを渡り歩いて検査することはできないという問題点があった。
【0007】
本発明の目的は、検査対象として指定されたウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査することにある。
【課題を解決するための手段】
【0008】
かかる目的のもと、本発明は、実マシン上に仮想的なマシン環境である仮想マシンが構築された装置において、ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する対象のウェブページを特定するウェブページ特定情報を他の装置から受信する受信手段と、仮想マシン上で動作し、受信手段により受信したウェブページ特定情報で特定されるウェブページにアクセスするアクセス手段と、仮想マシン上で動作し、仮想マシン内の状態の変化を検出する検出手段と、検出手段により状態の変化が検出された場合に、受信手段により受信したウェブページ特定情報で特定されるウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があることを示すウェブページの検査結果を他の装置に送信する送信手段とを備えたことを特徴とするウェブページ検査装置を提供する。
【0009】
また、この装置において、受信手段は、ウェブページ特定情報を、ウェブページ特定情報の記述を含むファイルとして受信する、ものであってよい。その場合、ファイルには、特定の文字列が付加されており、送信手段は、ウェブページの検査結果を含む複数の検査結果を表示するための表示情報であって、特定の文字列を検索キーとして複数の検査結果の中からウェブページの検査結果を検索可能な表示情報を、他の装置に送信する、ものであってよい。
【0010】
更に、この装置は、検出手段により状態の変化が検出された場合に、受信手段により受信したウェブページ特定情報で特定されるウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があることを他の装置に表示するための表示情報を生成する生成手段を更に備え、送信手段は、生成手段により生成された表示情報を、ウェブページの検査結果として他の装置に送信する、ものであってよい。
その場合、この装置は、第一に、アクセス手段によるウェブページへのアクセスの際の通信のログを保存する第1の保存手段を更に備え、生成手段は、第1の保存手段により保存された通信のログを更に含む表示情報を生成する、ものであってよく、第1の保存手段は、ウェブページにアクセスした際にダウンロードされたデータを更に保存し、生成手段は、第1の保存手段により保存されたデータにアクセスするための記述を更に含む表示情報を生成する、ものであってよい。そして、受信手段、送信手段、第1の保存手段は、実マシン上で動作する、ものであってよい。
また、この装置は、第二に、検出手段により検出された状態の変化のログを保存する第2の保存手段を更に備え、生成手段は、第2の保存手段により保存された状態の変化のログを更に含む表示情報を生成する、ものであってよい。そして、受信手段、送信手段は、実マシン上で動作し、第2の保存手段は、仮想マシン上で動作し、生成手段は、検出手段による状態の変化の検出に応じた仮想マシンの再構築に先立ち、第2の保存手段により保存された状態の変化のログを実マシンに出力し、実マシンに出力された状態の変化のログを用いて表示情報を生成する、ものであってよい。
【0011】
また、本発明は、クライアントコンピュータと、実マシン上に仮想的なマシン環境である仮想マシンが構築されたサーバコンピュータとが通信回線を介して接続されてなるコンピュータシステムであって、クライアントコンピュータは、ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する対象のウェブページを特定するウェブページ特定情報を通信回線を介してサーバコンピュータに送信する送信手段を備え、サーバコンピュータは、ウェブページ特定情報をクライアントコンピュータから通信回線を介して受信する受信手段と、仮想マシン上で動作し、受信手段により受信したウェブページ特定情報で特定されるウェブページにアクセスするアクセス手段と、仮想マシン上で動作し、仮想マシン内の状態の変化を検出する検出手段と、検出手段により状態の変化が検出された場合に、受信手段により受信したウェブページ特定情報で特定されるウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があることを示すウェブページの検査結果を通信回線を介してクライアントコンピュータに送信する送信手段とを備え、クライアントコンピュータは、ウェブページの検査結果をサーバコンピュータから通信回線を介して受信する受信手段を更に備えたことを特徴とするコンピュータシステムも提供する。
【0012】
更に、本発明は、実マシン上に仮想的なマシン環境である仮想マシンが構築された装置において、ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する対象のウェブページを特定するウェブページ特定情報を他の装置から受信するステップと、仮想マシン上で実行され、ウェブページ特定情報で特定されるウェブページにアクセスするステップと、仮想マシン上で実行され、仮想マシン内の状態の変化を検出するステップと、状態の変化が検出された場合に、ウェブページ特定情報で特定されるウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があることを示すウェブページの検査結果を他の装置に送信するステップとを含むことを特徴とするウェブページ検査方法も提供する。
【0013】
更にまた、本発明は、実マシン上に仮想的なマシン環境である仮想マシンが構築されたコンピュータにおける仮想マシンに、ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する対象のウェブページを特定するウェブページ特定情報を他の装置から受信する機能と、仮想マシン上で動作するブラウザを、ウェブページ特定情報で特定されるウェブページにアクセスさせる機能と、仮想マシン内の状態の変化を検出する機能と、状態の変化が検出された場合に、実マシンに対して、ウェブページ特定情報で特定されるウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があることを示すウェブページの検査結果を他の装置に送信させる機能とを実現させるためのプログラムも提供する。
【発明の効果】
【0014】
本発明によれば、検査対象として指定されたウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査することができる。
【発明を実施するための最良の形態】
【0015】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
まず、本実施の形態が適用されるコンピュータシステムについて説明する。
図1は、このようなコンピュータシステムの全体構成例を示した図である。
図示するように、このコンピュータシステムは、クライアント10a,10bと、サーバ20とが、ネットワーク80を介して接続されている。
【0016】
クライアント10a,10bは、ユーザが使用するクライアントコンピュータである。例えば、パーソナルコンピュータやワークステーション、その他のコンピュータ装置にて実現される。本実施の形態において、クライアント10a,10bは、アクセスするとマルウェアに感染するかどうかを検査する対象のウェブページ(以下、単に「ページ」という)のURL(Uniform Resource Locator)のリスト(URLリスト)をサーバ20にアップロードするために用いられる。例えば、クライアント10a,10bには、ウェブブラウザがインストールされ、URLリストは、このウェブブラウザにより表示されたサーバ20のページ上で所定の操作を行うことによりサーバ20にアップロードするとよい。そして、クライアント10a,10bは、サーバ20によるページの検査結果を受信して表示する。尚、図では、クライアント10a,10bを示したが、これらを区別する必要がない場合は、クライアント10と称することもある。また、図には、2台のクライアント10しか示していないが、3台以上のクライアント10を設けてもよい。
【0017】
サーバ20は、クライアント10からアップロードされたURLリストに基づいてページを巡回し、ページにアクセスするとマルウェアに感染する可能性があるか等を示す情報を生成してクライアント10に提供するサーバコンピュータである。例えば、パーソナルコンピュータやワークステーション、その他のコンピュータ装置にて実現される。尚、サーバ20の詳細な機能及び動作については後述する。
ネットワーク80は、情報の送受信に用いる通信回線である。このネットワーク80としては、インターネットやLAN(Local Area Network)が例示される。
【0018】
ところで、本実施の形態では、図1のようなコンピュータシステムのサーバ20において、実マシン上に仮想的なマシン環境である仮想マシンを構築する。このような仮想マシンは、例えば、VMWare(登録商標)を用いて構築するとよい。そして、仮想マシン上で、クライアント10から送られたURLリストに含まれるURLへのアクセスを行い、その結果、仮想マシンがマルウェアに感染したと判断されれば、その旨の情報及びマルウェアに関する詳細な情報をクライアント10に送信する。
【0019】
そこで、まず、このような動作を行うサーバ20の機能構成について説明する。
図2は、サーバ20の機能構成例を示したブロック図である。
上述したように、サーバ20では、実マシン上に仮想マシンが構築されているので、図示するように、実マシン上で動作するOS(以下、「ホストOS」という)30と、仮想マシン上で動作するOS(以下、「ゲストOS」という)40とが動作している。そして、サーバ20は、ホストOS30上で動作する機能として、通信部31と、URLリスト生成部32と、URLリスト記憶部33と、通信情報記憶部34と、巡回情報記憶部35と、状態変化情報記憶部36と、再起動部37と、ページ生成部38とを備えている。また、ゲストOS40上で動作する機能として、URL読出し部41と、ブラウザ部42と、状態変化監視部43と、状態変化ログ記憶部44と、情報出力部45とを備えている。
【0020】
まず、ホストOS30上で動作する機能について説明する。このホストOS30としては、例えば、Linux(登録商標)を用いることができる。
通信部31は、クライアント10からURLリストを含むファイルを受信したり、URLリスト内のURLのページの検査結果をクライアント10に送信したりする。また、ゲストOS40と外部との間の通信も行い、このときの通信ログを採取して通信情報記憶部34に記憶する。本実施の形態では、ウェブページ特定情報の一例として、URLを用いており、ウェブページ特定情報を他の装置から受信する受信手段の一例として、また、ウェブページの検査結果を他の装置に送信する送信手段の一例として、通信部31を設けている。
【0021】
尚、この通信部31によるゲストOS40と外部との間の通信、及び、通信ログの採取に関する具体的な実装としては、次のようなものが考えられる。
まず、URLへのアクセス時の通信を集約して処理するため、例えばPerlスクリプトで作成したプロキシを用意し、かつ、仮想マシンとの間にHost−Onlyの仮想ネットワークを作成する。そして、URLへのアクセス時の通信は全てこのプロキシを経由させ、将来的な拡張、例えばアクセス先のコンテンツに含まれるリンク先の収集といった機能を具備することを可能とする。このような状態で、プロキシのネットワーク80側のネットワークインターフェイスにtcpdumpをバインドさせ、通信ログを記録させる。
【0022】
URLリスト生成部32は、通信部31が受信したファイルからURLリストを生成する。また、通信部31が受信したファイルに付加されたタグを取り出す。
URLリスト記憶部33は、URLリスト生成部32が生成したURLリストを記憶する。
【0023】
通信情報記憶部34は、ゲストOS40上で動作するブラウザ部42がURLリストに基づいてページを巡回した際の通信の内容に関する情報(以下、「通信情報」という)を記憶する。本実施の形態では、通信のログを保存する第1の保存手段の一例として、通信情報記憶部34を設けている。
巡回情報記憶部35は、ゲストOS40上で動作するブラウザ部42がURLリストに基づいてページを巡回した際に得られるURLごとの情報(以下、「巡回情報」という)を記憶する。
状態変化情報記憶部36は、ゲストOS40上で動作するブラウザ部42がURLリストに基づいてページを巡回した際のゲストOS40上のシステムの状態の変化に関する情報(以下、「状態変化情報」という)を記憶する。本実施の形態では、状態の変化のログを保存する第2の保存手段の一例として、状態変化情報記憶部36を設けている。
【0024】
再起動部37は、ゲストOS40の指示に従い、仮想マシンの再起動(クリーンな状態へのリセット)を行う。
ページ生成部38は、URLリスト記憶部33に記憶されたURLリスト、巡回情報記憶部35に記憶された巡回情報、通信情報記憶部34に記憶された通信情報、状態変化情報記憶部36に記憶された状態変化情報に基づいて、クライアント10に表示するページを生成する。本実施の形態では、表示情報を生成する生成手段の一例として、ページ生成部38を設けている。
【0025】
次に、ゲストOS40上で動作する機能について説明する。ホストOS30としてLinux(登録商標)を用いたとすると、このゲストOS40としては、例えば、Windows(登録商標)を用いることができる。
URL読出し部41は、URLリスト記憶部33からURLを読み出す。このURL読出し部41は、例えば、仮想マシンにおいて事前に読み込まれているカーネルドライバによって実現すればよく、ホストOS30は、URLリストに含まれるURLを、事前に定義した制御チャネルを通じてURL読出し部41に通知する。また、URL読出し部41は、URLを読み出すと、ブラウザ部42を起動し、読み出したURLにアクセスさせる。このような一連の動作を繰り返し行うことで、サーバ20は、URLリストで指定されたページを巡回する。
ブラウザ部42は、URL読出し部41が読み出したURLに基づいてページにアクセスする。ゲストOS40としてWindows(登録商標)を用いたとすると、このブラウザ部42としては、例えば、Internet Explorer(登録商標)を用いることができる。本実施の形態では、ウェブページにアクセスするアクセス手段の一例として、ブラウザ部42を設けている。
【0026】
状態変化監視部43は、ブラウザ部42がページにアクセスした際のゲストOS40上のシステムの状態の変化を監視し、システムの状態の変化を検出すると、状態の変化のログ(状態変化ログ)を記録する。ここで、システムの状態とは、ファイルアクセスやレジストリアクセス等である。
【0027】
尚、この状態変化監視部43によるシステムの状態の変化の監視に関する具体的な実装としては、次のようなものが考えられる。
まず、プロセスの監視である。
下記(1),(2)のAPIを利用することでカーネルによるプロセス生成処理に対する通知処理を登録する。これによりカーネルによるプロセス生成処理に併せて独自のプロセスエントリを生成し、状態変化監視部43が管理する。また、その情報をロギング機能により状態変化ログ記憶部44に記録する。
(1)PsSetCreateProcessNotifyRoutine
カーネルによるプロセス生成処理時に対象プロセスの親プロセスのコンテキストにおいて実行される通知処理を登録するためのAPI
(2)PsSetLoadImageNotifyRoutine
カーネルによるプロセス生成処理時に対象プロセスのコンテキストにおいて、対象プロセスにロードされる実行モジュールがロードされる際に実行される通知処理を登録するためのAPI
これにより、あらゆるプロセス並びにスレッドの新規生成を記録するようにした。
【0028】
次に、ファイルシステムの監視である。
SSDT(System Service Description Table)フッキングにより下記(3),(4)のAPIのフィルタリングを行う。これによりファイル生成時のファイルハンドルを記録し、そのファイルハンドルが開放された直後に対象ファイルのバックアップを行う。また、その情報をロギング機能により状態変化ログ記憶部44に記録する。
(3)ZwCreateFile
ファイルの生成処理を行うためのAPI
(4)ZwClose
ハンドルの開放を行うためのAPI
尚、この処理では、ブラウザ部42が使用する一時ディレクトリ以外の全てのディレクトリに含まれるファイルを対象とした。これにより、極力全てのプロセスとマルウェア検体の収集を図るものとした。
【0029】
また、状態変化監視部43は、マルウェア検体の捕捉も行う。即ち、状態変化監視部43は、マルウェアの感染活動を確認すると、その検体をその活動を記した状態変化ログと共に一時的に状態変化ログ記憶部44にコピーする。
【0030】
状態変化ログ記憶部44は、状態変化監視部43が生成した状態変化ログを記憶する。
情報出力部45は、状態変化ログ記憶部44における状態変化ログの記録の状況に基づいて、仮想マシンがマルウェアに感染したと判定する。そして、一定時間後に発生するホストOS30からの問い合わせに対して感染を報告し、URL読出し部41から受け取った情報を巡回情報記憶部35及び状態変化情報記憶部36に記録し、状態変化ログ記憶部44に記録された状態変化ログを状態変化情報記憶部36にコピーし、マルウェアの検体をホストOS30の管理下にある記憶領域(図示せず)にコピーする。本実施の形態では、仮想マシン内の状態の変化を検出する検出手段の一例として、情報出力部45を設けている。
【0031】
尚、この情報出力部45による仮想マシンでの監視の結果の回収は、ホストOS30側に結果の回収を行うPerlスクリプトを用意することで実現可能である。
また、仮想マシンで収集されたマルウェアの検体の回収は、VIX APIを使用したスクリプトによって実現可能である。VMWare(登録商標)に標準で用意されているVIX APIを使用することで、仮想マシンの操作を自動化することや、仮想マシン内でスクリプトを実行すること、或いは仮想マシン間でファイルを転送することが可能となる。
【0032】
次に、本実施の形態の動作について説明する。
まず、本実施の形態においてクライアント10に表示される初期ページについて説明する。
図3は、クライアント10に表示される初期ページの一例を示した図である。尚、この初期ページは、例えば、HTML文書として作成されている。
図示するように、この初期ページは、メールアドレス記述101と、登録フォーム102と、新規登録ボタン105とを含んでいる。
【0033】
このうち、メールアドレス記述101は、検査対象のURLをサーバ20に伝える電子メールの送信先となるメールアドレスを記述したものである。表題(subject)にタグを記述し、本文にURLを記述した電子メールを「urlcrawl@gmail.com」に送信すれば、本文に記述されたURLのページの検査がサーバ20にて行われ、クライアント10は、その検査結果をタグで検索可能な形式で受信することになる。
また、登録フォーム102は、検査対象のURLを一般的なファイルの形式でサーバ20に伝えるために用いられるものである。タグをファイル名とし、URLを内容とするファイルを参照ボタン103で指定し、登録ボタン104でサーバ20にアップロードすれば、ファイルに記述されたURLのページの検査がサーバ20にて行われ、クライアント10は、その検査結果をタグで検索可能な形式で受信することになる。
更に、新規登録ボタン105は、検査対象のURLを手入力によりサーバ20に伝えるために用いられるものである。新規登録ボタン105を押下して表示された入力画面にタグ及びURLを入力してサーバ20に送信すれば、入力されたURLのページの検査がサーバ20にて行われ、クライアント10は、その検査結果をタグで検索可能な形式で受信することになる。
【0034】
このような画面から、例えば、URLリストが一般的なファイルの形式でサーバ20に送信されると、サーバ20は、そのファイルからURLリストを生成する処理を行う。
図4は、このときのサーバ20のホストOS30上の各機能の動作例を示したフローチャートである。尚、この動作例において、ファイルの1行には1つのURLが記述されているものとする。
クライアント10からファイルが送信されると、サーバ20では、まず、通信部31が、ファイルを受信し、URLリスト生成部32に受け渡す(ステップ301)。
すると、URLリスト生成部32は、受け渡されたファイルからファイル名を取得する(ステップ302)。
【0035】
次に、URLリスト生成部32は、ファイルから1行を読み出し(ステップ303)、EOF(End Of File)であるかどうかを判定する(ステップ304)。
その結果、EOFでなければ、URLリスト生成部32は、ステップ302で取得したファイル名を、URLリスト記憶部33内のタグ欄に記憶する(ステップ305)。また、ステップ303で読み出した1行のURLをURLリスト記憶部33内のURL欄に記憶する(ステップ306)。更に、URLリスト記憶部33内の巡回済フラグ欄には、巡回済でないことを示す「OFF」を記憶する(ステップ307)。
その後、ステップ303〜307の処理を繰り返すが、ファイル内のURLを全て読み出すと、ステップ304でEOFと判定されるので、処理は終了する。
【0036】
尚、図4の動作例では、URLリストが一般的なファイルの形式でサーバ20に送信されたことを前提としたが、URLリストが電子メールでサーバ20に送信された場合であっても、同様の動作となる。その場合は、図4において、ファイルを電子メールのファイルと捉え、ファイル名を電子メールの表題と読み替えればよい。
【0037】
ここで、図4の動作が行われた結果、URLリスト記憶部33に記憶されるURLリストについて具体的に説明する。
図5は、URLリストの具体的な内容を示した図である。
図示するように、URLリストは、タグと、URLと、巡回済フラグとを対応付けたものとなっている。
【0038】
このうち、タグは、既述の通り、ユーザがURLリストをサーバ20に送信する際に同時に送信した文字列である。クライアント10に表示された複数のURLに関する検査結果の中から自分が依頼したURLの検査結果を検索する際の検索キーとなるものであるので、URLリストに含めて管理している。
URLは、ユーザがサーバ20に送信したURLリストに含まれる個々のURLである。
巡回済フラグは、対応するURLのページを巡回したかどうかを示すフラグである。URLリストにURLが登録されたばかりで未巡回の場合は「OFF」に設定され、その後、ページを巡回すると、そのページのURLの巡回済フラグは「ON」に書き換えられる。
【0039】
このようにURLリスト記憶部33にURLリストが記憶されると、ゲストOS40上で、URLリストに含まれるURLのページを巡回し、マルウェアへの感染の可能性を検査する処理が開始する。
図6は、このときのサーバ20のゲストOS40上の各機能の動作例を示したフローチャートである。
まず、URL読出し部41は、URLリスト記憶部33に記憶されたURLリストから1行を読み出し(ステップ401)、EOFであるかどうかを判定する(ステップ402)。
その結果、EOFでなければ、URL読出し部41は、ステップ401で読み出した行に含まれるURLをブラウザ部42に渡し、ブラウザ部42が、渡されたURLを用いてページにアクセスする(ステップ403)。このとき、ブラウザ部42から外部のページへのアクセスは、ホストOS30上の通信部31を介して行われ、そのときの通信のログが通信情報記憶部34に記憶される。また、このとき、ブラウザ部42は、例えば、ページへのアクセスのための一連の通信が終了した日時を巡回日時とし、ページへのアクセスが完了した旨と巡回日時とをURL読出し部41に伝える。すると、URL読出し部41は、URLリスト記憶部33内の巡回済フラグを「ON」に書き換える(ステップ404)。そして、URL読出し部41は、ステップ401で読み出した行に含まれるタグ及びURLと、ステップ403で取得した巡回日時とを情報出力部45に渡し、情報出力部45は、タグ、URL、巡回日時、巡回が完了したことを示すステータス「Done」を、それぞれ、ホストOS30上の巡回情報記憶部35内のタグ欄、URL欄、巡回日時欄、ステータス欄に記憶する(ステップ405)。
【0040】
その後、情報出力部45は、状態変化ログ記憶部44に状態変化ログが記録されているかどうかを判定する(ステップ406)。
その結果、状態変化ログ記憶部44に状態変化ログが記録されていると判定されれば、情報出力部45は、ステップ401で読み出した行に含まれるURLが悪性URLであることを示す判定「exploit」と、状態変化ログ記憶部44に記憶された状態変化ログとをホストOS30上に保存する(ステップ407)。具体的には、巡回情報記憶部35において、ステップ405で記憶したURL及び巡回日時の組み合わせに対する判定欄に「exploit」を記憶する。また、ステップ405で巡回情報記憶部35に記憶したURL及び巡回日時の組み合わせと、状態変化ログ記憶部44に記憶されたイベント発生日時、イベントID、プロセスID、イベントタイプ、検体活動情報とを、状態変化情報記憶部36に記憶する。更に、状態変化ログ記憶部44に記憶されたマルウェアの検体を記憶領域(図示せず)に保存し、通信情報記憶部34において、ステップ405で記憶したURL及び巡回日時の組み合わせに対する検体欄にその記憶領域のアドレス情報を記憶する。そして、情報出力部45は、仮想マシンの再起動を再起動部37に指示する(ステップ408)。これにより、仮想マシンは再起動され、仮想マシン内の状態の変化はクリアされることになる。
【0041】
一方、ステップ406で、状態変化ログ記憶部44に状態変化ログが記録されていないと判定されれば、ステップ401に戻り、次のURLについて同様の処理を繰り返す。そして、URLリスト記憶部33に記憶されたURLリストからURLを全て読み出すと、ステップ402でEOFと判定されるので、URLリスト記憶部33にURLリストが登録されるまで処理は停止する。
【0042】
ここで、図6の動作が行われた結果、通信情報記憶部34に記憶される通信情報について具体的に説明する。
図7は、通信情報の具体的な内容を示した図である。
図示するように、通信情報は、URLと、巡回日時と、通信日時と、通信時間と、IPアドレス/ポート番号と、プロトコルと、データ量と、通信内容と、検体とを対応付けたものとなっている。
URLは、既述の通り、ユーザがサーバ20に送信したURLリストに含まれる個々のURLである。
巡回日時は、対応するURLのページを巡回した日時である。
通信日時は、対応するURLのページにアクセスするために発生した個々の通信の日時である。
通信時間は、対応するURLのページにアクセスするために発生した個々の通信に要した時間である。
IPアドレス/ポート番号は、対応するURLのページにアクセスするために発生した個々の通信における送信元及び送信先のIPアドレス及びポート番号である。
プロトコルは、対応するURLのページにアクセスするために発生した個々の通信で用いられたプロトコルである。
データ量は、対応するURLのページにアクセスするために発生した個々の通信でやり取りされたデータの容量である。
通信内容は、対応するURLのページにアクセスするために発生した個々の通信でやり取りされた実際のデータである。或いは、実際のデータは、別の記憶領域に記憶しておき、その記憶領域のアドレス情報を記憶するようにしてもよい。
検体は、仮想マシンにて捕捉されたマルウェアの検体を保存した記憶領域のアドレス情報を意味する。
【0043】
また、図6の動作が行われた結果、巡回情報記憶部35に記憶される巡回情報について具体的に説明する。
図8は、巡回情報の具体的な内容を示した図である。
図示するように、巡回情報は、タグと、URLと、巡回日時と、ステータスと、判定とを対応付けたものとなっている。
タグ、URL、巡回日時については、既に述べたので、ここでの説明は省略する。
ステータスは、対応するURLのページの巡回が完了したかどうかを示す情報である。巡回が完了したURLに対して「Done」が書き込まれる。
判定は、対応するURLがアクセスするとマルウェアに感染する可能性のある悪性URLであるかどうかを示す情報である。悪性URLに対して「exploit」が書き込まれる。
【0044】
更に、図6の動作が行われた結果、状態変化情報記憶部36に記憶される状態変化情報について具体的に説明する。
図9は、状態変化情報の具体的な内容を示した図である。
図示するように、状態変化情報は、URLと、巡回日時と、イベント発生日時、イベントID、プロセスID、イベントタイプ、検体活動情報とを対応付けたものとなっている。
URL、巡回日時については、既に述べたので、ここでの説明は省略する。
イベント発生日時は、状態の変化を生じさせたイベントが発生した日時である。
イベントIDは、状態の変化を生じさせたイベントを一意に識別するための情報である。
プロセスIDは、状態の変化を生じさせたプロセスを一意に識別するための情報である。
イベントタイプは、状態の変化を生じさせたイベントの種類を示す情報である。例えば、プロセスを生成するイベントであれば「CREATE_PROCESS」が記憶され、ファイルを生成するイベントであれば「CREATE_FILE」が記憶される。
検体活動情報は、状態の変化を生じさせたイベントの対象となるプロセスやファイルを示す情報である。
【0045】
このように通信情報記憶部34に通信情報が記憶され、巡回情報記憶部35に巡回情報が記憶され、状態変化情報記憶部36に状態変化情報が記憶されると、ホストOS30上では、ページ生成部38が、クライアント10に表示されるページを生成する処理を開始する。
図10は、このときのページ生成部38の動作例を示したフローチャートである。
まず、ページ生成部38は、悪性URL数、累積検体数、巡回待ちURL数を取得し、トップページにセットする(ステップ321)。ここで、悪性URL数としては、巡回情報記憶部35に記憶されたURLのうち、判定「exploit」が対応付けられたURLの数を取得すればよい。また、累積検体数としては、通信情報記憶部34に記憶された通信情報内の検体のアドレス情報を用いて、これまでに捕捉した検体の種類の数を求めて記憶しておき、その求めた数を取得すればよい。更に、巡回待ちURL数としては、URLリスト記憶部33に記憶されたURLのうち、巡回済フラグ「OFF」が対応付けられたURLの数を取得すればよい。
【0046】
次に、ページ生成部38は、巡回情報記憶部35に記憶された巡回情報から1行を読み出し(ステップ322)、EOFであるかどうかを判定する(ステップ323)。
その結果、EOFでなければ、ページ生成部38は、ステップ322で読み出した1行分の情報をトップページにセットする(ステップ324)。具体的には、URL、ステータス、判定、タグ、巡回日時をセットする。
【0047】
また、ページ生成部38は、通信情報記憶部34に記憶された通信情報から、ステップ322で読み出した行に含まれるURL及び巡回日時の組み合わせと同じ組み合わせを含む行を読み出す(ステップ325)。そして、EOFであるかどうかを判定する(ステップ326)。
その結果、EOFでなければ、ページ生成部38は、ステップ325で読み出した1行分の情報をトップページにリンクされたリンク先ページBにセットする(ステップ327)。トップページには4つのリンク先ページA,B,C,Dがリンクされており、ここでは、そのうちのリンク先ページBに情報をセットするものとする。詳細は後述する。具体的には、通信日時、通信時間、IPアドレス/ポート番号、プロトコル、データ量、通信内容及び検体へのリンク記述をセットする。
その後、ステップ325〜327の処理を繰り返すが、通信情報記憶部34内の目的のURL及び巡回日時の組み合わせに対応する通信情報を全て読み出すと、ステップ326でEOFと判定されるので、状態変化情報に関する処理に移行する。
【0048】
次いで、ページ生成部38は、状態変化情報記憶部36に記憶された状態変化情報から、ステップ322で読み出した行に含まれるURL及び巡回日時の組み合わせと同じ組み合わせを含む行を読み出す(ステップ328)。そして、EOFであるかどうかを判定する(ステップ329)。
その結果、EOFでなければ、ページ生成部38は、ステップ328で読み出した1行分の情報をトップページにリンクされたリンク先ページCにセットする(ステップ330)。上述したように、トップページには4つのリンク先ページA,B,C,Dがリンクされているが、ここでは、そのうちのリンク先ページCに情報をセットするものとする。詳細は後述する。具体的には、イベント発生日時、イベントID、プロセスID、イベントタイプ、検体活動情報をセットする。
その後、ステップ328〜330の処理を繰り返すが、状態変化情報記憶部36内の目的のURL及び巡回日時の組み合わせに対応する状態変化情報を全て読み出すと、ステップ329でEOFと判定される。そこで、ステップ322に戻り、次の巡回情報について同様の処理を繰り返す。そして、巡回情報記憶部35から巡回情報を全て読み出すと、ステップ323でEOFと判定されるので、ページ生成部38は、生成されたページを通信部31に受け渡す。すると、通信部31は、受け取ったページをクライアント10に送信する(ステップ331)。
【0049】
これにより、クライアント10には、ページ生成部38で生成されたページが表示される。
図11〜14は、クライアント10に表示されるページの一例を示した図である。
まず、図11は、トップページ(巡回情報ページ)を示している。尚、この巡回情報ページは、例えば、HTML文書として作成されている。
この巡回情報ページは、図3の初期ページに表示されたURLリストのアップロードのための記述の下に、巡回情報が表示されたものとなっている。尚、この巡回情報は、図10のステップ324でセットされたものである。
ここで、巡回情報にはタグが含まれ、前述した通り、検索ボタン111を用いてタグを検索キーとした検索が行えるようになっている。
また、巡回情報の各行の右端には、履歴ボタン112、編集ボタン113、削除ボタン114、表示ボタン115が設けられている。このうち、編集ボタン113は、対応する行のURLを編集するためのボタンであり、削除ボタン114は、対応する行を削除するためのボタンであり、表示ボタン115は、対応する行のURLに関するより詳細な情報を表示するためのボタンである。また、履歴ボタン112は、対応する行のURLに関する各種履歴等を表示するためのボタンである。
【0050】
図12は、URL「http://drmyy.cn/」に対応する履歴ボタン112を押下したときに表示されるページ(中間ページ)を示している。尚、この中間ページも、例えば、HTML文書として作成されている。ここでは、URL「http://drmyy.cn/」にアクセスすることにより1つの検体が見つかったことが表示されており、この検体に対して、地図ボタン121、通信ログボタン122、状態変化ログボタン123、表示ボタン124が設けられている。このうち、地図ボタン121を押下すると、リンク先ページAが表示される。このリンク先ページAには、例えば、URLで特定されるコンピュータの実際の位置が示された地図を表示するとよい。また、通信ログボタン122を押下すると、後述するリンク先ページBが表示され、状態変化ログボタン123を押下すると、後述するリンク先ページCが表示される。更に、表示ボタン124を押下すると、リンク先ページDが表示される。このリンク先ページDには、例えば、検体に関するより詳細な情報を表示するとよい。
【0051】
次に、リンク先ページB(通信情報ページ)について説明する。
図13は、リンク先ページB(通信情報ページ)を示している。尚、この通信情報ページも、例えば、HTML文書として作成されている。ここでは、URL「http://drmyy.cn/」に対応する通信ログボタン122を押下することにより表示された通信情報ページを想定しているので、そのURLの行の下に、通信情報が表示されたものとなっている。具体的には、左から、シーケンシャル番号、通信日時、通信時間、IPアドレス/ポート番号(左側が送信元、右側が送信先)、プロトコル、データ量、通信内容及び検体へのリンク記述となっている。図では、記述131(「as_html」)が、通信内容を表すHTML文書へのリンク記述であり、記述132(「session__0004.part_01.data」)が、検体(そのURLのページからダウンロードされたデータ)へのリンク記述である。尚、この通信情報は、図10のステップ327でセットされたものである。
【0052】
次いで、リンク先ページC(状態変化情報ページ)について説明する。
図14は、リンク先ページC(状態変化情報ページ)を示している。尚、この状態変化情報ページも、例えば、HTML文書として作成されている。ここでは、URL「http://drmyy.cn/」に対応する通信ログボタン122を押下することにより表示された状態変化情報ページを想定しているので、そのURLの行の下に、状態変化情報が表示されたものとなっている。具体的には、左から、イベント発生日時、イベントID、プロセスID、イベントタイプ、検体活動情報となっている。尚、この状態変化情報は、図10のステップ330でセットされたものである。
【0053】
以上により、本実施の形態の動作は終了する。
ところで、本実施の形態では、通信部31、URLリスト生成部32、URLリスト記憶部33、通信情報記憶部34、巡回情報記憶部35、状態変化情報記憶部36、ページ生成部38をホストOS30上で動作するものとしたが、これらをゲストOS40上で動作するものとしてもよい。その場合、仮想マシンのマルウェアへの感染に応じた仮想マシンの再起動に先立ち、仮想マシンの再起動後に使用するデータ(例えば、URLリスト)は、ゲストOS40に出力して保全しておく必要がある。
【0054】
以上述べたように、本実施の形態では、ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する対象のウェブページのURLを受信し、仮想マシンを用いてこのURLのページを巡回し、仮想マシンの状態の変化を検出するようにした。これにより、検査対象として指定されたウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査することが可能となった。
【0055】
最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。図15は、このようなコンピュータのハードウェア構成の一例を示した図である。図示するように、コンピュータは、演算手段であるCPU(Central Processing Unit)90aと、M/B(マザーボード)チップセット90bを介してCPU90aに接続されたメインメモリ90cと、同じくM/Bチップセット90bを介してCPU90aに接続された表示機構90dとを備える。また、M/Bチップセット90bには、ブリッジ回路90eを介して、ネットワークインターフェイス90fと、磁気ディスク装置(HDD)90gと、音声機構90hと、キーボード/マウス90iと、フレキシブルディスクドライブ90jとが接続されている。
【0056】
尚、図15において、各構成要素は、バスを介して接続される。例えば、CPU90aとM/Bチップセット90bの間や、M/Bチップセット90bとメインメモリ90cの間は、CPUバスを介して接続される。また、M/Bチップセット90bと表示機構90dとの間は、AGP(Accelerated Graphics Port)を介して接続されてもよいが、表示機構90dがPCI Express対応のビデオカードを含む場合、M/Bチップセット90bとこのビデオカードの間は、PCI Express(PCIe)バスを介して接続される。また、ブリッジ回路90eと接続する場合、ネットワークインターフェイス90fについては、例えば、PCI Expressを用いることができる。また、磁気ディスク装置90gについては、例えば、シリアルATA(AT Attachment)、パラレル転送のATA、PCI(Peripheral Components Interconnect)を用いることができる。更に、キーボード/マウス90i、及び、フレキシブルディスクドライブ90jについては、USB(Universal Serial Bus)を用いることができる。
【図面の簡単な説明】
【0057】
【図1】本実施の形態が適用されるコンピュータシステムの全体構成図である。
【図2】本実施の形態におけるサーバの機能構成例を示したブロック図である。
【図3】本実施の形態でクライアントに表示される初期ページの例を示した図である。
【図4】本実施の形態におけるサーバのホストOS上の機能の動作例を示したフローチャートである。
【図5】本実施の形態で生成されるURLリストの例を示した図である。
【図6】本実施の形態におけるサーバのゲストOS上の機能の動作例を示したフローチャートである。
【図7】本実施の形態で記憶される通信情報の例を示した図である。
【図8】本実施の形態で記憶される巡回情報の例を示した図である。
【図9】本実施の形態で記憶される状態変化情報の例を示した図である。
【図10】本実施の形態におけるサーバのホストOS上の機能の動作例を示したフローチャートである。
【図11】本実施の形態でクライアントに表示される巡回情報ページの例を示した図である。
【図12】本実施の形態でクライアントに表示される中間ページの例を示した図である。
【図13】本実施の形態でクライアントに表示される通信情報ページの例を示した図である。
【図14】本実施の形態でクライアントに表示される状態変化情報ページの例を示した図である。
【図15】本実施の形態が適用されるコンピュータのハードウェア構成図である。
【符号の説明】
【0058】
10…クライアント、20…サーバ、30…ホストOS、31…通信部、32…URLリスト生成部、33…URLリスト記憶部、34…通信情報記憶部、35…巡回情報記憶部、36…状態変化情報記憶部、37…再起動部、38…ページ生成部、40…ゲストOS、41…URL読出し部、42…ブラウザ部、43…状態変化監視部、44…状態変化ログ記憶部、45…情報出力部

【特許請求の範囲】
【請求項1】
実マシン上に仮想的なマシン環境である仮想マシンが構築された装置において、
ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する対象の当該ウェブページを特定するウェブページ特定情報を他の装置から受信する受信手段と、
前記仮想マシン上で動作し、前記受信手段により受信した前記ウェブページ特定情報で特定されるウェブページにアクセスするアクセス手段と、
前記仮想マシン上で動作し、当該仮想マシン内の状態の変化を検出する検出手段と、
前記検出手段により前記状態の変化が検出された場合に、前記受信手段により受信した前記ウェブページ特定情報で特定されるウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があることを示す当該ウェブページの検査結果を前記他の装置に送信する送信手段と
を備えたことを特徴とするウェブページ検査装置。
【請求項2】
前記受信手段は、前記ウェブページ特定情報を、当該ウェブページ特定情報の記述を含むファイルとして受信することを特徴とする請求項1記載のウェブページ検査装置。
【請求項3】
前記ファイルには、特定の文字列が付加されており、
前記送信手段は、前記ウェブページの検査結果を含む複数の検査結果を表示するための表示情報であって、前記特定の文字列を検索キーとして当該複数の検査結果の中から当該ウェブページの検査結果を検索可能な表示情報を、前記他の装置に送信することを特徴とする請求項2記載のウェブページ検査装置。
【請求項4】
前記検出手段により前記状態の変化が検出された場合に、前記受信手段により受信した前記ウェブページ特定情報で特定されるウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があることを前記他の装置に表示するための表示情報を生成する生成手段を更に備え、
前記送信手段は、前記生成手段により生成された前記表示情報を、前記ウェブページの検査結果として前記他の装置に送信することを特徴とする請求項1記載のウェブページ検査装置。
【請求項5】
前記アクセス手段による前記ウェブページへのアクセスの際の通信のログを保存する第1の保存手段を更に備え、
前記生成手段は、前記第1の保存手段により保存された前記通信のログを更に含む前記表示情報を生成することを特徴とする請求項4記載のウェブページ検査装置。
【請求項6】
前記第1の保存手段は、前記ウェブページにアクセスした際にダウンロードされたデータを更に保存し、
前記生成手段は、前記第1の保存手段により保存された前記データにアクセスするための記述を更に含む前記表示情報を生成することを特徴とする請求項5記載のウェブページ検査装置。
【請求項7】
前記受信手段、前記送信手段、前記第1の保存手段は、前記実マシン上で動作することを特徴とする請求項5記載のウェブページ検査装置。
【請求項8】
前記検出手段により検出された前記状態の変化のログを保存する第2の保存手段を更に備え、
前記生成手段は、前記第2の保存手段により保存された前記状態の変化のログを更に含む前記表示情報を生成することを特徴とする請求項4記載のウェブページ検査装置。
【請求項9】
前記受信手段、前記送信手段は、前記実マシン上で動作し、
前記第2の保存手段は、前記仮想マシン上で動作し、
前記生成手段は、前記検出手段による前記状態の変化の検出に応じた前記仮想マシンの再構築に先立ち、前記第2の保存手段により保存された前記状態の変化のログを前記実マシンに出力し、当該実マシンに出力された当該状態の変化のログを用いて前記表示情報を生成することを特徴とする請求項8記載のウェブページ検査装置。
【請求項10】
クライアントコンピュータと、実マシン上に仮想的なマシン環境である仮想マシンが構築されたサーバコンピュータとが通信回線を介して接続されてなるコンピュータシステムであって、
前記クライアントコンピュータは、
ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する対象の当該ウェブページを特定するウェブページ特定情報を前記通信回線を介して前記サーバコンピュータに送信する送信手段を備え、
前記サーバコンピュータは、
前記ウェブページ特定情報を前記クライアントコンピュータから前記通信回線を介して受信する受信手段と、
前記仮想マシン上で動作し、前記受信手段により受信した前記ウェブページ特定情報で特定されるウェブページにアクセスするアクセス手段と、
前記仮想マシン上で動作し、当該仮想マシン内の状態の変化を検出する検出手段と、
前記検出手段により前記状態の変化が検出された場合に、前記受信手段により受信した前記ウェブページ特定情報で特定されるウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があることを示す当該ウェブページの検査結果を前記通信回線を介して前記クライアントコンピュータに送信する送信手段とを備え、
前記クライアントコンピュータは、
前記ウェブページの検査結果を前記サーバコンピュータから前記通信回線を介して受信する受信手段を更に備えたことを特徴とするコンピュータシステム。
【請求項11】
実マシン上に仮想的なマシン環境である仮想マシンが構築された装置において、
ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する対象の当該ウェブページを特定するウェブページ特定情報を他の装置から受信するステップと、
前記仮想マシン上で実行され、前記ウェブページ特定情報で特定されるウェブページにアクセスするステップと、
前記仮想マシン上で実行され、当該仮想マシン内の状態の変化を検出するステップと、
前記状態の変化が検出された場合に、前記ウェブページ特定情報で特定されるウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があることを示す当該ウェブページの検査結果を前記他の装置に送信するステップと
を含むことを特徴とするウェブページ検査方法。
【請求項12】
実マシン上に仮想的なマシン環境である仮想マシンが構築されたコンピュータにおける当該仮想マシンに、
ウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があるかどうかを検査する対象の当該ウェブページを特定するウェブページ特定情報を他の装置から受信する機能と、
前記仮想マシン上で動作するブラウザを、前記ウェブページ特定情報で特定されるウェブページにアクセスさせる機能と、
前記仮想マシン内の状態の変化を検出する機能と、
前記状態の変化が検出された場合に、前記実マシンに対して、前記ウェブページ特定情報で特定されるウェブページにアクセスしたコンピュータがマルウェアに感染する可能性があることを示す当該ウェブページの検査結果を前記他の装置に送信させる機能と
を実現させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate