(57)【要約】【課題】仮想化環境を検出すると活動を停止または自身を消去するマルウェアを確実に監視する。【解決手段】プロセッサとメモリを有する物理計算機上で稼働する仮想計算機でマルウェアを解析する記憶媒体であって、前記仮想計算機のゲストＯＳ上で稼働する解析部が、前記マルウェアから前記ゲストＯＳに対する要求を取得する第１のステップと、前記解析部が、前記マルウェアからの前記要求に仮想化環境に関連する要求が含まれている場合には、当該要求に対して偽装応答を前記マルウェアに対して行う第２のステップと、を含む。【選択図】図２
2018081514.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリを有する物理計算機上で稼働する仮想計算機でマルウェアを解析するマルウェアの解析方法であって、
前記仮想計算機のゲストＯＳ上で稼働する解析部が、前記マルウェアから前記ゲストＯＳに対する要求を取得する第１のステップと、
前記解析部が、前記マルウェアからの前記要求に仮想化環境に関連する要求が含まれている場合には、当該要求に対して偽装応答を前記マルウェアに対して行う第２のステップと、
を含むことを特徴とするマルウェアの解析方法。
【請求項２】
請求項１に記載のマルウェアの解析方法であって、
前記解析部が、前記マルウェアから前記ゲストＯＳに対する要求が通信である場合には、宛先のアドレスを予め設定したダミーアドレスに変更して通信を実施する第３のステップと、
前記解析部が、前記マルウェアに前記通信の完了を応答する第４のステップと、
をさらに含むことを特徴とするマルウェアの解析方法。
【請求項３】
請求項１に記載のマルウェアの解析方法であって、
前記第２のステップは、
前記要求に対して仮想化環境が存在しないことを含む偽装応答を前記マルウェアに対して行うことを特徴とするマルウェアの解析方法。
【請求項４】
請求項１に記載のマルウェアの解析方法であって、
前記第２のステップは、
前記仮想化環境に関連する要求に対応する偽装応答が予め設定された偽装応答情報を参照し、前記要求に対応する偽装応答を実行することを特徴とするマルウェアの解析方法。
【請求項５】
請求項４に記載のマルウェアの解析方法であって、
前記仮想化環境に関連する要求は、前記仮想計算機に固有のリソースに対する要求であることを特徴とするマルウェアの解析方法。
【請求項６】
請求項５に記載のマルウェアの解析方法であって、
前記仮想計算機に固有のリソースが、当該仮想計算機に割り当てられた仮想デバイスのドライバであることを特徴とするマルウェアの解析方法。
【請求項７】
請求項５に記載のマルウェアの解析方法であって、
前記仮想計算機に固有のリソースが、当該仮想計算機を制御する仮想化部のポートであることを特徴とするマルウェアの解析方法。
【請求項８】
請求項１に記載のマルウェアの解析方法であって、
前記第１のステップは、
前記仮想計算機上で稼働するアプリケーションから前記ゲストＯＳに対する要求のうち、予め設定された情報に基づいて前記マルウェアから前記ゲストＯＳに対する要求を選択するステップを含むことを特徴とするマルウェアの解析方法。
【請求項９】
請求項１に記載のマルウェアの解析方法であって、
前記解析部が、前記マルウェアから前記ゲストＯＳに対する要求が通信である場合には、当該要求を前記物理計算機上の所定の領域に出力する第３のステップと、
前記解析部が、前記マルウェアに前記通信の完了を応答する第４のステップと、
をさらに含むことを特徴とするマルウェアの解析方法。
【請求項１０】
プロセッサとメモリを有する計算機を制御するプログラムを格納した記憶媒体であって、
マルウェアからゲストＯＳに対する要求を取得する第１のステップと、
前記マルウェアからの前記要求に仮想化環境に関連する要求が含まれている場合には、当該要求に対して偽装応答を前記マルウェアに対して行う第２のステップと、
を前記計算機に実行させるプログラムを格納した非一時的な計算機読み取り可能な記憶媒体。
【請求項１１】
請求項１０に記載の記憶媒体であって、
前記マルウェアから前記ゲストＯＳに対する要求が通信である場合には、宛先のアドレスを予め設定したダミーアドレスに変更して通信を実施する第３のステップと、
前記マルウェアに前記通信の完了を応答する第４のステップと、
をさらに含むことを特徴とする記憶媒体。
【請求項１２】
請求項１０に記載の記憶媒体であって、
前記第２のステップは、
前記要求に対して仮想化環境が存在しないことを含む偽装応答を前記マルウェアに対して行うことを特徴とする記憶媒体。
【請求項１３】
請求項１０に記載の記憶媒体であって、
前記第２のステップは、
前記仮想化環境に関連する要求に対応する偽装応答が予め設定された偽装応答情報を参照し、前記要求に対応する偽装応答を実行することを特徴とする記憶媒体。
【請求項１４】
請求項１３に記載の記憶媒体であって、
前記仮想化環境に関連する要求は、仮想計算機に固有のリソースに対する要求であることを特徴とする記憶媒体。
【請求項１５】
請求項１４に記載の記憶媒体であって、
前記仮想計算機に固有のリソースが、前記仮想計算機に割り当てられた仮想デバイスのドライバであることを特徴とする記憶媒体。
【請求項１６】
請求項１４に記載の記憶媒体であって、
前記仮想計算機に固有のリソースが、前記仮想計算機を制御する仮想化部のポートであることを特徴とする記憶媒体。
【請求項１７】
請求項１０に記載の記憶媒体であって、
前記第１のステップは、
前記仮想計算機上で稼働するアプリケーションから前記ゲストＯＳに対する要求のうち、予め設定された情報に基づいて前記マルウェアから前記ゲストＯＳに対する要求を選択するステップを含むことを特徴とする記憶媒体。
【請求項１８】
請求項１に記載の記憶媒体であって、
前記解析部が、前記マルウェアから前記ゲストＯＳに対する要求が通信である場合には、当該要求を前記物理計算機上の所定の領域に出力する第３のステップと、
前記解析部が、前記マルウェアに前記通信の完了を応答する第４のステップと、
をさらに含むことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機に侵入して悪意のある活動を行うマルウェア（ｍａｌｗａｒｅ）を監視する技術に関する。
【背景技術】
【０００２】
インターネットの普及に伴って、スパムメールやウェブサイトの閲覧を介して悪意のあるソフトウェアやコードであるマルウェアを計算機へ侵入させる攻撃が頻繁に行われている。近年のマルウェアは、Ｃ＆Ｃ（Command and Control）サーバからの指令等に基づいて、情報の奪取や、計算機やファイルのロックや暗号化を行って身代金を要求する等の活動を行う。
【０００３】
マルウェアはセキュリティソフトウェアや、マルウェアを監視する動的解析システムに検出されるのを回避するため、Sleepを利用して断続的に活動することで、動的解析システムに検出されるのを回避する種類が知られている。また、マルウェアによっては、Ｃ＆Ｃ（Command and Control）サーバを使用する攻撃者の指令に応じて、新たなマルウェアのダウンロード及びインストールや、他の計算機あるいはウェブサイトへの攻撃など、マルウェア自身の変化や攻撃手法を変化させて長期間活動する種類も知られている。
【０００４】
マルウェアの活動を解析する技術としては、仮想マシン上でマルウェアを活動させて解析を行う技術が知られている（例えば、特許文献１）。特許文献１では、仮想マシン上で複数のマルウェアを活動させて、仮想マシンのスナップショット機能によりシステムイメージを取得し、マルウェアの時系列的な変化を検出することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−２１１７３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
最近のマルウェアでは、仮想化環境で活動していることを検出すると、活動を停止したり自分自身を消去するマルウェアが登場している。この種のマルウェアでは、仮想化環境を検知して停止することにより、動的解析システムは当該マルウェアを無害なソフトウェアと誤判定する場合があった。
【０００７】
そこで本発明は、上記問題点に鑑みてなされたもので、仮想化環境を検出すると活動を停止または自身を消去するマルウェアを確実に監視することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、プロセッサとメモリを有する物理計算機上で稼働する仮想計算機でマルウェアを解析するマルウェアの解析方法であって、前記仮想計算機のゲストＯＳ上で稼働する解析部が、前記マルウェアから前記ゲストＯＳに対する要求を取得する第１のステップと、前記解析部が、前記マルウェアからの前記要求に仮想化環境に関連する要求が含まれている場合には、当該要求に対して偽装応答を前記マルウェアに対して行う第２のステップと、を含む。
【発明の効果】
【０００９】
したがって、本発明によれば、仮想化環境を検出すると活動を停止または自身を消去するマルウェアの活動を仮想化環境においても継続させて、監視を行うことが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例を示し、マルウェア動的解析システムの一例を示すブロック図である。
【図２】本発明の実施例を示し、マルウェア動的解析部の機能の概要を示すブロック図である。
【図３】本発明の実施例を示し、通信判別データベースの一例を示す図である。
【図４】本発明の実施例を示し、ホワイトリストの一例を示す図である。
【図５】本発明の実施例を示し、偽装応答データベースの一例を示す図である。
【図６】本発明の実施例を示し、マルウェア動的解析システムで行われる処理の一例を示すフローチャートである。
【図７】本発明の実施例を示し、応答偽装部で行われる処理の一例を示すフローチャートである。
【図８】本発明の実施例を示し、通信偽装部で行われる処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を添付図面に基づいて説明する。
【００１２】
図１は、本発明の実施例を示し、マルウェア動的解析システムの一例を示すブロック図である。
【００１３】
マルウェア動的解析システムは、マルウェアの活動を監視する仮想マシン１４−１〜１４−ｎを稼働させるホスト計算機１と、マルウェアの通信先として偽装して通信内容を収集するダミーサーバ３０と、ホスト計算機１とダミーサーバ３０を接続するネットワーク２０とを含む。なお、後述するように、マルウェアの本来の通信先となるＣ＆Ｃサーバ５０とは接続を遮断しておく。
【００１４】
ホスト計算機１は、演算を行うプロセッサ１０と、プログラムやデータを保持するメモリ１１と、ネットワーク２０に接続されるインターフェース１３と、データやプログラムを格納するストレージ装置１２を含む。
【００１５】
メモリ１１には、ホスト計算機１のハードウェアを仮想化して仮想マシン１４−１〜１４−ｎを制御するハイパーバイザ１７がロードされ、プロセッサ１０によって実行される。なお、仮想マシン全般について説明する際には、「−」以降を省略した符号「１４」を用いる。
【００１６】
仮想マシン１４では、ハイパーバイザ１７から提供された仮想化ハードウェア１６上でゲストＯＳ１５が稼働する。そして、ゲストＯＳ１５上ではマルウェア動的解析部１００とマルウェア通信遮断部１３０と、アプリケーション２００が稼働する。なお、本実施例では、ホスト計算機１のハードウェアリソースを仮想化（論理化）するソフトウェア（仮想化部）としてハイパーバイザを用いる例を示すが、ＶＭＭ（Virtual Machine Monitor）を採用しても良い。
【００１７】
アプリケーション２００には、後述するホワイトリスト１５０に定義されている正常アプリケーション２２０と、分析対象のマルウェア２１０が含まれる。なお、本実施例において、マルウェア２１０は、ホワイトリスト１５０に定義されておらず、外部の計算機と意図しない通信を行うソフトウェアとする。また、外部の計算機は、例えば、Ｃ＆Ｃサーバ５０である。
【００１８】
マルウェア２１０を監視する仮想マシン１４では、マルウェア２１０の外部との通信を遮断した他の仮想マシン１４や他のホスト計算機がマルウェア２１０に攻撃されるのを抑止するマルウェア通信遮断部１３０と、仮想化環境でマルウェア２１０を活動させて監視するマルウェア動的解析部１００が稼働している。
【００１９】
マルウェア動的解析部１００は、マルウェア２１０からゲストＯＳ１５へのコマンドをフックして偽装された応答を返す応答偽装部１２０と、マルウェア２１０の外部との通信を偽装する通信偽装部１１０とを含む。
【００２０】
マルウェア動的解析部１００の通信偽装部１１０と、応答偽装部１２０と、マルウェア通信遮断部１３０の各機能部はプログラムとしてメモリ１１にロードされ、プロセッサ１０によって実行される。
【００２１】
プロセッサ１０は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ１０は、応答偽装プログラムに従って処理することで応答偽装部１２０として機能する。他のプログラムについても同様である。さらに、プロセッサ１０は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【００２２】
マルウェア動的解析部１００の各機能を実現するプログラム、テーブル等の情報は、ストレージ装置１２や不揮発性半導体メモリ、ハードディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶デバイス、または、ＩＣカード、ＳＤカード、ＤＶＤ等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【００２３】
ダミーサーバ３０は、Ｃ＆Ｃサーバ５０に代わってマルウェア２１０が送信したデータを受信し、解析用データベース４０に通信内容を蓄積する。マルウェア動的分析システムの利用者は、ダミーサーバ３０の解析用データベース４０を参照することでマルウェア２１０の通信内容を解析することができる。
【００２４】
図２は、マルウェア動的解析部１００の機能の概要を示すブロック図である。仮想マシン１４では、予めマルウェア通信遮断部１３０とマルウェア動的解析部１００を起動してから、監視対象のマルウェア２１０の活動を開始させる。すなわち、仮想マシン１４をマルウェア２１０に感染させる。
【００２５】
マルウェア通信遮断部１３０は、プロセッサ１０で実行されるソフトウェアを監視して、ホワイトリスト１５０に定義されていないソフトウェアをマルウェア２１０として判定し、マルウェア２１０が使用するポートを特定して封止する。これにより、マルウェア通信遮断部１３０は、他のホスト計算機や仮想マシン１４が監視対象のマルウェア２１０に感染するのを抑止し、また、マルウェア２１０がＣ＆Ｃサーバ５０と通信するのを抑止する。
【００２６】
次に、マルウェア通信遮断部１３０は、マルウェア動的解析部１００にマルウェア２１０が通信で使用するポート番号を通知する。マルウェア動的解析部１００の応答偽装部１２０は、アプリケーション２００がゲストＯＳ１５に対する要求（命令（図中ＣＭＤ）や操作）をフックして、アプリケーション２００のうち正常アプリケーション２２０からの要求についてはそのままゲストＯＳ１５に渡して要求に応じた処理を実行させる。
【００２７】
応答偽装部１２０は、アプリケーション２００のうちマルウェア２１０からゲストＯＳ１５に対する要求については、偽装応答データベース１６０を参照して要求に対する偽装応答が定義されている場合には、後述するように、偽装応答をマルウェア２１０に送信して、仮想化環境ではないことを偽装する。すなわち、応答偽装部１２０は、マルウェア２１０からゲストＯＳ１５に対する仮想化環境に関する要求を受け付けると、ゲストＯＳ１５に代わって仮想化環境は存在しないことを含む応答を行って、応答を偽装する。
【００２８】
これにより、仮想化環境を検出すると活動を停止または自身を消去するマルウェア２１０の活動を継続させて、挙動を監視することが可能となる。なお、偽装応答データベース１６０に偽装応答が定義されていない要求については、ゲストＯＳ１５に実行させるようにしても良い。
【００２９】
上記マルウェア通信遮断部１３０と同様に、応答偽装部１２０は、アプリケーション２００からの命令や操作をフックすると、当該アプリケーション２００のプロセス名を取得して、ホワイトリスト１５０に定義されていなければ、マルウェア２１０からの要求であると判定する。
【００３０】
次に、マルウェア２１０がＣ＆Ｃサーバ５０と通信を行う場合には、通信偽装部１１０がマルウェア通信遮断部１３０にポートの開放を要求する。マルウェア通信遮断部１３０は要求されたマルウェア２１０が使用するポートを開放する。
【００３１】
通信偽装部１１０は、マルウェア２１０が発行したパケットの宛先を、予め設定したダミーサーバ３０のアドレス（ダミーアドレス）に偽装して通信を実行する。これにより、ダミーサーバ３０の解析用データベース４０には、マルウェア２１０が外部（Ｃ＆Ｃサーバ５０）に送信したデータが解析用データベース４０に蓄積される。なお、通信偽装部１１０は、正常アプリケーション２２０による通信については、そのままパケットを通過させる。
【００３２】
以上のように、応答偽装部１２０は、マルウェア２１０が物理計算機で実行されているかのように偽装することで、マルウェア２１０の活動を継続させることができる。そして、通信偽装部１１０は、マルウェア２１０からのパケットの宛先をダミーサーバ３０のアドレスに差し替えることで、マルウェア２１０の通信内容を解析用データベース４０に蓄積することができる。
【００３３】
図３は、マルウェア動的解析部１００が利用する通信判別データベース１４０の一例を示す図である。通信判別データベース１４０は、マルウェア２１０の通信先を格納する通信の宛先１４１と、実際の処理内容を格納する偽装通信内容１４２とを一つのエントリに含む。
【００３４】
通信の宛先１４１には、例えば、インターネット上で公開されているＣ＆Ｃサーバ５０のリストや情報に開示されたアドレスや、サーバ名や、ポート番号などが格納される。偽装通信内容１４２には、予め設定したダミーサーバ３０のアドレス（ダミーアドレス）が格納される。
【００３５】
なお、マルウェア２１０からのパケットの宛先はダミーサーバ３０等の外部の計算機に限定されるものではなく、マルウェア動的解析部１００が稼働するホスト計算機１と同一の計算機の所定の領域（例えば、仮想マシン１４）へ出力してもよい。この場合、同一ホスト計算機１内の通信であるのでダミーアドレスは不要となる。
【００３６】
なお、ダミーサーバ３０は複数存在してもよく、仮想マシン１４で複数のマルウェア２１０を監視する場合には、複数のダミーサーバ３０を用意しても良い。この場合、マルウェア２１０毎に異なるダミーサーバ３０で通信内容を収集することができる。
【００３７】
図４は、マルウェア動的解析部１００が利用するホワイトリスト１５０の一例を示す図である。ホワイトリスト１５０は、正常アプリケーション２２０のプロセス名１５１が予め定義されている。
【００３８】
マルウェア動的解析部１００は、ホワイトリスト１５０にプロセス名１５１が定義されていないアプリケーション２００を、マルウェア２１０として扱うことができる。
【００３９】
図５は、マルウェア動的解析部１００が利用する偽装応答データベース１６０の一例を示す図である。偽装応答データベース１６０は、応答偽装部１２０（または通信偽装部１１０）がフックした要求の内容を格納する要求処理内容１６１と、要求処理内容に対する応答を格納する偽装応答内容１６２とを一つのエントリに含む。
【００４０】
まず、図中最初の要求処理内容１６１が「仮想化環境に特有のツール」の有無を尋ねるエントリは、マルウェア２１０が仮想マシン１４のゲストＯＳ１５上で稼働する仮想化環境に特有のツール（アプリケーション２００）を検索あるいは呼び出すコマンドを発行した場合に利用する。仮想化環境に特有のツールとしては、例えば、ゲストＯＳ１５のスナップショットを取得する機能などを提供する「ＶＭｗａｒｅ  Ｔｏｏｌｓ」等が知られている。
【００４１】
マルウェア２１０は、これらの仮想化環境に特有のツールを発見すると仮想化環境で活動していると判定して活動を停止（あるいは自身を消去）する。このため、偽装応答内容１６２に「存在しない」という虚偽の応答を設定しておき、応答偽装部１２０に応答させる。マルウェア２１０は、応答偽装部１２０からの「仮想化環境に特有のツールは無い」という応答を、ゲストＯＳ１５からの応答として受け取り、活動を継続する。
【００４２】
図中２番目の要求処理内容１６１が「ＯＳがデバッグモードで起動しているか」という問い合わせのエントリは、マルウェア２１０が仮想マシン１４のゲストＯＳ１５に起動モードがデバッグモードに設定されているかを問い合わせた場合に利用する。ゲストＯＳ１５は、デバッグモードで起動することができ、マルウェア２１０は、デバッグモードであれば仮想化環境で活動していると判定して活動を停止（あるいは自身を消去）する。
【００４３】
このため、偽装応答内容１６２に「存在しない」という虚偽の応答を設定しておき、応答偽装部１２０に応答させる。マルウェア２１０は、応答偽装部１２０からの「起動モードはデバッグモードではない」という応答を、ゲストＯＳ１５からの応答として受け取り、活動を継続する。
【００４４】
図中３番目の要求処理内容１６１が「マルウェアの解析に使われるツール」の有無を尋ねるエントリは、マルウェア２１０が仮想マシン１４のゲストＯＳ１５上で稼働するマルウェア解析ツールを検索あるいは呼び出すコマンドを発行した場合に利用する。マルウェア解析ツールとしては特許文献１等に記載されるもの等、公知または周知の解析ソフトウェアが存在する。
【００４５】
マルウェア２１０は、マルウェア解析ツールが存在する場合には、仮想化環境で活動していると判定して活動を停止（あるいは自身を消去）する。このため、偽装応答内容１６２に「存在しない」という虚偽の応答を設定しておき、応答偽装部１２０に応答させる。マルウェア２１０は、応答偽装部１２０からの「マルウェア解析ツールは存在しない」という応答を、ゲストＯＳ１５からの応答として受け取り、活動を継続する。
【００４６】
図中４番目の要求処理内容１６１が「仮想化環境に特有のドライバ」の有無を尋ねるエントリは、マルウェア２１０が仮想マシン１４のゲストＯＳ１５のドライバから仮想化環境に特有のドライバを検索あるいは呼び出すコマンドを発行した場合に利用する。仮想化環境に特有のドライバとしては、仮想ネットワークアダプタのドライバ（例えば、ＶＭＸＮＥＴ）や、仮想ＳＣＳＩアダプタのドライバ（例えば、ＰＶＳＣＳＩ）などの仮想デバイスのドライバが知られている。
【００４７】
マルウェア２１０は、仮想化環境に特有のドライバが存在する場合には、仮想化環境で活動していると判定して活動を停止（あるいは自身を消去）する。このため、偽装応答内容１６２に「存在しない」という虚偽の応答を設定しておき、応答偽装部１２０に応答させる。マルウェア２１０は、応答偽装部１２０からの「仮想化環境に特有のドライバは存在しない」という応答を、ゲストＯＳ１５からの応答として受け取り、活動を継続する。
【００４８】
図中５番目の要求処理内容１６１が「仮想化環境に特有のポート」の有無（開放）を尋ねるエントリは、マルウェア２１０が仮想マシン１４のゲストＯＳ１５から仮想化環境に特有のポートを検索あるいは呼び出すコマンドを発行した場合に利用する。仮想化環境に特有のポートとしては仮想化管理サーバ（図示省略）と通信を行うためのハイパーバイザ１７側のカーネルのポートが知られている。仮想化管理サーバは、当該ポートを介して仮想計算機を制御するハイパーバイザ１７と通信し、ホスト計算機１上の仮想マシン１４を制御する。
【００４９】
マルウェア２１０は、仮想化環境に特有のポートが存在する場合には、仮想化環境で活動していると判定して活動を停止（あるいは自身を消去）する。このため、偽装応答内容１６２に「存在しない」という虚偽の応答を設定しておき、応答偽装部１２０に応答させる。マルウェア２１０は、応答偽装部１２０からの「仮想化環境に特有のポートは存在しない」という応答を、ゲストＯＳ１５からの応答として受け取り、活動を継続する。
【００５０】
図中５番目の要求処理内容１６１が「通信要求」のエントリは、マルウェア２１０がＣ＆Ｃサーバ５０と通信を行う際に利用する。偽装応答内容１６２には「ダミーの応答」という虚偽の応答を設定しておき、通信偽装部１１０に応答させる。後述するように、マルウェア２１０からの送信は、通信偽装部１１０がダミーサーバ３０に転送するので、マルウェア２１０にＣ＆Ｃサーバ５０からのＡＣＫパケットなどを偽装して応答する。
【００５１】
以上の他、マルウェア２１０によってはゲストＯＳ１５のレジストリから仮想化環境の設定を検出する例もあるので、レジストリの仮想化環境に関するエントリへのアクセスに対しては、偽装応答内容１６２を「存在しない」と設定しておく。この他、仮想化環境に特有のシステムサービスや、プロセス名等の有無についても要求処理内容１６１に設定しておき、偽装応答内容１６２を「存在しない」と設定しておく。
【００５２】
以上のように、偽装応答データベース１６０には、偽装応答を行う際の要求処理内容１６１と偽装応答内容１６２が設定される。要求処理内容１６１には、仮想化環境に関連する要求を含み、偽装応答内容１６２には、仮想化環境が存在しないことを含む偽装応答を予め設定しておく。マルウェア動的解析部１００は、偽装応答データベース１６０を参照することで、マルウェア２１０からの要求に対して、偽装応答を行うか否かを判定することができる。
【００５３】
なお、仮想化環境に関連する要求は、仮想マシン１４に固有のリソースに対する要求であって、上述のように仮想化環境で機能するツールを検索する要求や呼び出す要求や、仮想化環境のドライバを検索する要求や呼び出す要求や、仮想化環境で使用するポートを検索する要求や呼び出す要求等が含まれる。
【００５４】
図６は、マルウェア動的解析システムで行われる処理の一例を示すフローチャートである。この処理は、仮想マシン１４の利用者などによって開始される。
【００５５】
まず、ステップＳ１では、マルウェア通信遮断部１３０が、マルウェア２１０の感染を判定する。マルウェア通信遮断部１３０は、ゲストＯＳ１５上で実行されているプロセス名を取得して、ホワイトリスト１５０に含まれないプロセス名があれば、当該プロセス名を検出したマルウェア２１０とする。
【００５６】
そして、マルウェア通信遮断部１３０は、仮想マシン１４が当該マルウェア２１０に感染したと判定して、当該プロセス名のソフトウェアを監視対象のマルウェア２１０とする。なお、本実施例では、マルウェア通信遮断部１３０がマルウェア２１０への感染を判定したが、マルウェア２１０を検出できればよい。
【００５７】
マルウェア通信遮断部１３０は、マルウェア２１０に感染していると判定した場合にはステップＳ２へ進み、感染していない場合にはステップＳ８の通常処理へ進む。ステップＳ８では、マルウェア動的解析部１００は、アプリケーション２００からの要求をゲストＯＳ１５にそのまま渡して通常の処理を実施する。
【００５８】
ステップＳ２では、マルウェア通信遮断部１３０が、マルウェア２１０が通信で利用するポート番号を特定し、当該ポートを閉鎖する。これにより、マルウェア２１０とＣ＆Ｃサーバ５０の通信が遮断される。
【００５９】
ステップＳ３では、応答偽装部１２０が、アプリケーション２００からの要求を受け付けて、正常アプリケーション２２０からの要求についてはゲストＯＳ１５にそのまま処理させる一方、マルウェア２１０からの要求については、偽装応答データベース１６０の所定の条件に一致する要求については応答を偽装する。応答の偽装の詳細については後述する。
【００６０】
次に、ステップＳ４では、通信偽装部１１０が、マルウェア２１０からの要求が通信要求であるか否かを判定する。マルウェア２１０からの要求が通信要求の場合にはステップＳ５へ進み、そうでない場合にはステップＳ７へ進む。
【００６１】
ステップＳ５では、通信偽装部１１０が、マルウェア２１０からＣ＆Ｃサーバ５０への通信を、ダミーサーバ３０への通信に変更する。そして、通信偽装部１１０は、Ｃ＆Ｃサーバ５０に代わってマルウェア２１０への応答を偽装する。通信の偽装の詳細については、後述する。
【００６２】
ステップＳ６では、ダミーサーバ３０が、Ｃ＆Ｃサーバ５０に代わってマルウェア２１０からの通信を受信して、通信内容を解析用データベース４０に格納する。マルウェア動的解析システムの利用者は、所定のタイミングで解析用データベース４０を参照してマルウェア２１０の挙動を解析することができる。
【００６３】
ステップＳ７では、応答偽装部１２０が、図示しない管理サーバや図示しない入力装置から監視終了のコマンドを受け付けたか否かを判定する。監視終了のコマンドを受け付けていた場合には処理を終了する。一方、監視終了のコマンドを受け付けていなければステップＳ１へ復帰して上記処理を繰り返してマルウェア２１０の活動を監視する。
【００６４】
上記処理によって、マルウェア２１０に感染している場合には、応答偽装部１２０によってマルウェア２１０に物理計算機の環境を偽装し、通信偽装部１１０によってマルウェア２１０の通信内容をダミーサーバ３０に蓄積することが可能となる。
【００６５】
図７は、応答偽装部１２０で行われる処理の一例を示すフローチャートである。この処理は、図６のステップＳ３で行われる処理である。
【００６６】
まず、ステップＳ１１では、応答偽装部１２０はアプリケーション２００から受け付けた要求が、ＡＰＩ（Application Program Interface）を呼び出すコマンドであるか否かを判定し、ＡＰＩ呼び出しコマンドであればステップＳ１６に進み、そうでなければステップＳ１２へ進む。
【００６７】
ステップＳ１２では、応答偽装部１２０はアプリケーション２００から受け付けた要求が、システムコールであるか否かを判定し、システムコールであればステップＳ１６に進み、そうでなければステップＳ１３へ進む。
【００６８】
ステップＳ１３では、応答偽装部１２０はアプリケーション２００から受け付けた要求が、レジストリに対するアクセスであるか否かを判定し、レジストリアクセスであればステップＳ１６に進み、そうでなければステップＳ１４へ進む。
【００６９】
ステップＳ１４では、応答偽装部１２０はアプリケーション２００から受け付けた要求が、ファイルに対するアクセスであるか否かを判定し、ファイルアクセスであればステップＳ１６に進み、そうでなければステップＳ１５へ進む。
【００７０】
ステップＳ１５では、アプリケーション２００から受け付けた要求を、そのままゲストＯＳ１５に渡して通常の処理を実行させる。一方、ステップＳ１６以降ではアプリケーション２００がマルウェア２１０と正常アプリケーション２２０の判定を行って処理を切り替える。
【００７１】
ステップＳ１６では、応答偽装部１２０はアプリケーション２００のプロセス名を取得して、ホワイトリスト１５０と比較する。応答偽装部１２０は、ステップＳ１７で、現在のプロセス名がホワイトリスト１５０に存在すれば正常アプリケーション２２０と判定してステップＳ１５で通常の処理を実行する。一方、応答偽装部１２０は、現在のプロセス名がホワイトリスト１５０に存在しなければマルウェア２１０と判定してステップＳ１８に進む。
【００７２】
ステップＳ１８では、応答偽装部１２０が、偽装応答データベース１６０からマルウェア２１０からのコマンドまたは操作に対応する要求処理内容１６１を検索する。ステップＳ１９では、応答偽装部１２０が、受け付けた要求に対応する要求処理内容１６１が存在するか否かを判定して、要求処理内容１６１が存在すればステップＳ１９へ進み、存在しなければステップＳ１５に進む。
【００７３】
ステップＳ１９では、応答偽装部１２０が偽装応答データベース１６０から受け付けた要求に対応する要求処理内容１６１の偽装応答内容１６２を取得する。そして、応答偽装部１２０は、ゲストＯＳ１５に代わってマルウェア２１０に対して偽装応答内容１６２を通知する。
【００７４】
上記処理によって、マルウェア２１０がゲストＯＳ１５に対してＡＰＩ呼び出し、システムコール、レジストリアクセス、ファイルアクセス等の要求を行うと、応答偽装部１２０はこの要求に一致する要求処理内容１６１の偽装応答内容１６２を取得し、ゲストＯＳ１５に代わってマルウェア２１０に応答する。
【００７５】
偽装応答内容１６２は、マルウェア２１０が活動している環境が、仮想化環境ではなく物理計算機の環境であると応答する。これにより、マルウェア２１０は、物理計算機の環境で活動していると誤認して、Ｃ＆Ｃサーバ５０に代わるダミーサーバ３０と通信を行って、マルウェア２１０の活動を動的に解析することが可能となる。
【００７６】
図８は、通信偽装部１１０で行われる処理の一例を示すフローチャートである。この処理は、図６のステップＳ５で行われる処理である。
【００７７】
ステップＳ３１では、通信偽装部１１０はマルウェア２１０が送信した通信内容を取得する。ステップＳ３２では、通信偽装部１１０が取得した通信内容から宛先を選択して、通信判別データベース１４０を検索する。
【００７８】
そして、ステップＳ３３では、通信偽装部１１０が、マルウェア２１０の通信の宛先が通信判別データベース１４０に定義されているか否かを判定する。宛先が定義されていればステップＳ３４へ進み、宛先が定義されていない場合には、取得した通信内容を破棄して処理を終了する。
【００７９】
ステップＳ３４では、通信偽装部１１０が、通信判別データベース１４０が検索結果の宛先１４１に対応する偽装通信内容１４２を取得して、当該偽装通信内容１４２を実行する。本実施例では、通信偽装部１１０は、マルウェア２１０からの通信（パケット）の宛先をダミーサーバ３０のアドレスへ変更して通信を実行する。なお、通信を実行する前に通信偽装部１１０は、マルウェア通信遮断部１３０に対してポートの開放を要求する。マルウェア通信遮断部１３０は要求されたマルウェア２１０が使用するポートを開放する。
【００８０】
次に、ステップＳ３５では、通信偽装部１１０は、偽装応答データベース１６０から通信要求に対応するエントリから偽装応答内容１６２を取得する。ステップＳ３６では、通信偽装部１１０は、取得した偽装応答内容１６２でＣ＆Ｃサーバ５０に代わってマルウェア２１０へ応答する。
【００８１】
以上の処理によって、マルウェア２１０がＣ＆Ｃサーバ５０等へ通信すると、通信偽装部１１０が通信内容を取得して、通信判別データベース１４０の通信の宛先１４１に対応する偽装通信内容１４２に変換される。本実施例では、マルウェア２１０がＣ＆Ｃサーバ５０へ送信したデータは、ダミーサーバ３０へ送信される。そして、通信偽装部１１０は、送信が完了すると偽装応答データベース１６０から通信要求に対応する偽装応答内容１６２を取得してマルウェア２１０に応答することで、マルウェア２１０はＣ＆Ｃサーバ５０への通信が正常に完了したと誤認する。これにより、マルウェア２１０は活動を継続してダミーサーバ３０の解析用データベース４０に通信内容を蓄積することができる。
【００８２】
＜まとめ＞
以上のように、本実施例では、偽装応答内容１６２がマルウェア２１０に対して仮想化環境ではなく物理計算機の環境を偽装することで、マルウェア２１０の活動を継続させて動的に監視することが可能となる。そして、通信偽装部１１０が、マルウェア２１０からＣ＆Ｃサーバ５０への通信内容をダミーサーバ３０に転送して解析用データベース４０に蓄積することで、仮想化環境においてマルウェア２１０の活動の詳細を蓄積することが可能となる。
【００８３】
このように、本実施例によれば、応答偽装部１２０は、マルウェア２１０からゲストＯＳ１５に対して仮想化環境に関する要求を受け付けると、ゲストＯＳ１５に代わって仮想化環境は存在しないことを含む応答を行って、応答を偽装する。これにより、仮想化環境を検出すると活動を停止または自身を消去するマルウェア２１０を、仮想化環境で活動させて継続的に監視することが可能となる。
【００８４】
なお、上記実施例では、マルウェア通信遮断部１３０が、マルウェア２１０の感染を判定したが、マルウェア動的解析部１００がホワイトリスト１５０に基づいてマルウェア２１０への感染を判定しても良い。この場合、マルウェア動的解析部１００はポートの閉鎖をマルウェア通信遮断部１３０に依頼すれば良い。
【００８５】
また、上記実施例では、プロセス名のホワイトリスト１５０を用いてマルウェア２１０の感染を判定する例を示したが、これに限定されるものではなくマルウェア２１０の検出または感染の判定については、周知または公知の技術を適用すれば良い。例えば、ホワイトリストやパターンファイルを用いずにマルウェアを検出するCylancePROTECT等の技術を用いても良い。
【００８６】
また、通信偽装部１１０は、マルウェア２１０からのデータをダミーサーバ３０へ転送した後に、マルウェア通信遮断部１３０に対してマルウェア２１０が利用するポートを再度遮断するように指令しても良い。これにより、マルウェア２１０がＣ＆Ｃサーバ５０と通信することを確実に防ぐことができる。
【００８７】
また、上記実施例では、ダミーサーバ３０をホスト計算機１の外部のサーバとする例を示したが、これに限定されるものではなく、仮想マシン１４のひとつをダミーサーバ３０としても良い。
【００８８】
また、上記実施例では、マルウェア動的解析部１００とマルウェア通信遮断部１３０を独立した機能（プログラム）として開示したが、これに限定されるものではなく、マルウェア動的解析部１００がマルウェア通信遮断部１３０を含むようにしてもよい。
【００８９】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【００９０】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【００９１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００９２】
１  ホスト計算機
１０  プロセッサ
１１  メモリ
１２  ストレージ装置
１３  インターフェース
１３  ハイパーバイザ
１４  仮想マシン
１５  ゲストＯＳ
２０  ネットワーク
３０  ダミーサーバ
５０  Ｃ＆Ｃサーバ
１００  マルウェア動的解析部
１１０  通信偽装部
１２０  応答偽装部
１３０  マルウェア通信遮断部
２００  アプリケーション
２１０  マルウェア
２２０  正常アプリケーション
１４０  通信判別データベース
１５０  ホワイトリスト
１６０  偽装応答データベース
【図１】
2018081514.tif 000003
【図２】
2018081514.tif 000004
【図３】
2018081514.tif 000005
【図４】
2018081514.tif 000006
【図５】
2018081514.tif 000007
【図６】
2018081514.tif 000008
【図７】
2018081514.tif 000009
【図８】
2018081514.tif 000010