(57)【特許請求の範囲】
【請求項１】
マルウエアからオペレーティングシステムに対して送信される命令を記憶する記憶部と、
アプリケーションから前記オペレーティングシステムに対して送信された特定の命令が所定の時間内に所定回数以上取得された場合であって、取得した前記特定の命令が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する処理部と、を有する、
ことを特徴とするマルウエア解析装置。
【請求項２】
前記特定の命令は、前記アプリケーションが仮想マシン上で動作しているか否かを示す情報を要求する命令である、
ことを特徴とする請求項１に記載のマルウエア解析装置。
【請求項３】
前記記憶部は、前記マルウエアからオペレーティングシステムに対して送信される複数の命令の順序を記憶し、
前記処理部は、複数の前記特定の命令を取得し、前記複数の特定の命令が所定の時間内に所定回数以上取得された場合であって、取得した前記複数の特定の命令の順序が前記記憶部に記憶されている場合、前記ハードウエアに記憶されたデータを前記他のハードウエアに記憶する、
ことを特徴とする請求項１または２に記載のマルウエア解析装置。
【請求項４】
コンピュータが、
マルウエアからオペレーティングシステムに対して送信される命令を記憶部に記憶し、
アプリケーションから前記オペレーティングシステムに対して送信された特定の命令が所定の時間内に所定回数以上取得された場合であって、取得した前記特定の命令が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する、
ことを特徴とするマルウエア解析方法。
【請求項５】
コンピュータに、
マルウエアからオペレーティングシステムに対して送信される命令を記憶部に記憶し、
アプリケーションから前記オペレーティングシステムに対して送信された特定の命令が所定の時間内に所定回数以上取得された場合であって、取得した前記特定の命令が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する、
処理を実行させることを特徴とするマルウエア解析プログラム。
【請求項６】
マルウエアからオペレーティングシステムに対して送信される複数の命令の順序を記憶する記憶部と、
アプリケーションから前記オペレーティングシステムに対して送信された前記複数の命令の順序が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する処理部と、を有する、
ことを特徴とするマルウエア解析装置。
【請求項７】
コンピュータが、
マルウエアからオペレーティングシステムに対して送信される複数の命令の順序を記憶部に記憶し、
アプリケーションから前記オペレーティングシステムに対して送信された前記複数の命令の順序が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する、
ことを特徴とするマルウエア解析方法。
【請求項８】
コンピュータに、
マルウエアからオペレーティングシステムに対して送信される複数の命令の順序を記憶部に記憶し、
アプリケーションから前記オペレーティングシステムに対して送信された前記複数の命令の順序が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する、
処理を実行させることを特徴とするマルウエア解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルウエア解析装置、マルウエア解析方法及びマルウエア解析プログラムに関する。
【背景技術】
【０００２】
企業や組織におけるセキュリティ管理者（以下、単に管理者とも呼ぶ）は、例えば、コンピュータウィルスを含む有害動作を行うプログラム等（以下、マルウエアとも呼ぶ）による情報の不正取得や破壊等（以下、悪性動作とも呼ぶ）を防ぐ必要がある。
【０００３】
具体的に、マルウエアは、例えば、悪意のある者によって外部の端末装置（以下、単に外部端末とも呼ぶ）から送信されたメールに添付される形で送信され、メールを受信した端末装置において実行されることで、その端末装置に感染する。これにより、悪意のある者は、例えば、マルウエアに感染した端末装置を踏み台にし、端末装置と接続した他の端末装置（例えば、機密情報を記憶する端末装置等）に対して不正アクセスを行うことが可能になる。
【０００４】
そのため、管理者は、例えば、外部端末から端末装置に送信されたメールに実行ファイルが添付されている場合、その実行ファイルを検証装置（例えば、仮想マシンによって実現される仮想環境を有する装置）に実行させる。具体的に、検証装置は、外部端末から端末装置に送信されたメールに実行ファイルが添付されている場合、端末装置に送信される前にそのメールを取得する。そして、検証装置は、取得したメールに添付されている実行ファイルを仮想環境において実行して解析する。
【０００５】
これにより、管理者は、外部端末から送信されたメールが端末装置に送信される前に、そのメールに添付されている実行ファイルがマルウエアであるか否かを判定することが可能になる。そのため、管理者は、外部端末から送信されたメールに添付されている実行ファイルがマルウエアであると判定した場合、そのメールを端末装置に送信することなく破棄することが可能になる。また、管理者は、この場合、そのマルウエアが行う動作の内容についての情報（解析結果）を取得することが可能になる（例えば、特許文献１から３参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−２３９１４９号公報
【特許文献２】特表２０１４−５１９１１３号公報
【特許文献３】特開２０１２−０２２４６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、マルウエアには、例えば、仮想環境において実行されたことを検知した場合に、自身の動作を終了するもの（悪性動作を行わないマルウエア）が存在する。具体的に、このようなマルウエアは、仮想環境において実行されたことを検知した場合、自身の動作の解析が行われる可能性があると判定し、自身の動作の解析が行われることを防止するために動作を終了する（以下、このような機能を耐解析機能とも呼ぶ）。そのため、検証装置は、マルウエアの種類によっては、メールに添付された実行ファイルがマルウエアであると判定することができず、マルウエアが添付されたメールを端末装置に送信する場合がある。
【０００８】
一方、管理者は、例えば、端末装置がマルウエアに感染した後、マルウエアの内容を人間が解読できる形式に逆アセンブルし、マルウエアが行う動作について解析を行う場合がある。これにより、管理者は、マルウエアが行う動作の内容について解析を行うことが可能になる。
【０００９】
しかしながら、マルウエアには、例えば、パッカー等のプログラムによって暗号化された状態でメール等に添付されるものが存在する。そして、このようなマルウエアは、例えば、自身の実行が開始された場合にのみ、アンパッカー等のプログラムによって自身の復号化を行う。そのため、管理者は、逆アセンブルを行うことによるマルウエアを解析することができない場合がある。
【００１０】
そこで、一つの側面では、マルウエアの解析を行い易くすることを可能とするマルウエア解析装置、マルウエア解析方法及びマルウエア解析プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
実施の形態の一つの態様によれば、マルウエア解析装置は、マルウエアからオペレーティングシステムに対して送信される命令を記憶する記憶部と、アプリケーションから前記オペレーティングシステムに対して送信された特定の命令をフックし、フックした前記特定の命令が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する処理部と、を有する。
【発明の効果】
【００１２】
一つの側面によれば、マルウエアの解析を行い易くすることを可能とする。
【図面の簡単な説明】
【００１３】
【図１】図１は、情報処理システム１０の全体構成を説明する図である。
【図２】図２は、悪意のある者が端末装置１ｃに対してマルウエアを送信した場合の具体例を説明する図である。
【図３】図３は、検証装置２について説明する図である。
【図４】図４は、検証装置２について説明する図である。
【図５】図５は、マルウエアの内容を逆アセンブルする場合について説明する図である。
【図６】図６は、端末装置１のハードウエア構成を説明する図である。
【図７】図７は、図６の端末装置１の機能ブロック図である。
【図８】図８は、第１の実施の形態におけるマルウエア解析処理の概略を説明するフローチャート図である。
【図９】図９は、第１の実施の形態におけるマルウエア解析処理の概略を説明するフローチャート図である。
【図１０】図１０は、第１の実施の形態におけるマルウエア解析処理の概略を説明する図である。
【図１１】図１１は、第１の実施の形態におけるマルウエア解析処理の概略を説明する図である。
【図１２】図１２は、第１の実施の形態におけるマルウエア解析処理の概略を説明する図である。
【図１３】図１３は、第１の実施の形態におけるマルウエア解析処理の詳細を説明するフローチャート図である。
【図１４】図１４は、第１の実施の形態におけるマルウエア解析処理の詳細を説明するフローチャート図である。
【図１５】図１５は、第１の実施の形態におけるマルウエア解析処理の詳細を説明するフローチャート図である。
【図１６】図１６は、命令情報１３１の具体例を説明する図である。
【図１７】図１７は、第２の実施の形態におけるマルウエア解析処理の詳細を説明するフローチャート図である。
【図１８】図１８は、第２の実施の形態におけるマルウエア解析処理の詳細を説明するフローチャート図である。
【図１９】図１９は、第２の実施の形態におけるマルウエア解析処理の詳細を説明するフローチャート図である。
【図２０】図２０は、第２の実施の形態における命令情報１３１の具体例を説明する図である。
【発明を実施するための形態】
【００１４】
［情報処理システムの構成］
図１は、情報処理システム１０の全体構成を説明する図である。図１に示す情報処理システム１０は、端末装置１ａ、１ｂ及び１ｃ（以下、これらを総称して端末装置１またはマルウエア解析装置１とも呼ぶ）と、ファイアーウォール装置３とを有する。
【００１５】
端末装置１は、企業や組織における業務システムの開発者や管理者が使用する端末である。具体的に、端末装置１は、例えば、デスクトップＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やノート型ＰＣである。
【００１６】
ファイアーウォール装置３は、ネットワークＮＷと接続した外部端末３１と、端末装置１との間の通信を制御する。すなわち、ファイアーウォール装置３は、例えば、外部端末３１による端末装置１への不正アクセス等を防御する。なお、ネットワークＮＷは、例えば、インターネット網である。
【００１７】
［外部端末からマルウエアが送信された場合の具体例］
次に、悪意のある者が外部端末３１を介して端末装置１ｃにマルウエアを送信した場合の具体例について説明する。図２は、悪意のある者が端末装置１ｃに対してマルウエアを送信した場合の具体例を説明する図である。
【００１８】
悪意のある者は、図２に示すように、例えば、外部端末３１を介して、マルウエアを添付したメール（通常のメールを装ったメール）を端末装置１ｃに対して送信する。具体的に、悪意のある者は、情報の不正取得等を行う標的（特定の企業等）を予め決定し、その標的の端末装置（端末装置１ｃ）に対してマルウエアを添付したメールを送信する（以下、これを標的型攻撃とも呼ぶ）。
【００１９】
この場合において、ファイアーウォール装置３は、外部端末３１から送信されたメールにマルウエアが添付されていると判定することができず、そのメールの破棄を行わない可能性がある。そのため、端末装置１ｃは、図２に示すように、送信されたメールに添付されたマルウエアを利用者が実行することにより、マルウエアに感染する場合がある。
【００２０】
そこで、管理者は、例えば、端末装置１とファイアーウォール装置３との間に、マルウエアの解析等を行う検証装置２を設ける。以下、検証装置２について説明を行う。
【００２１】
［検証装置の具体例］
図３及び図４は、検証装置２について説明する図である。検証装置２は、例えば、外部端末３１から端末装置１に対するメールが送信された場合に、送信されたメールを取得し、そのメールに実行ファイルが添付されているか否かを判定する。そして、外部端末３１から送信されたメールに実行ファイルが添付されている場合、検証装置２は、検証装置２内に構築された仮想環境において、そのメールに添付されている実行ファイルを実行する。検証装置２内に構築された仮想環境は、例えば、検証装置２の物理リソースが割り当てられて生成された仮想マシン（以下、ＶＭとも呼ぶ）からなる環境である。
【００２２】
すなわち、ファイアーウォール装置３は、メールに添付された実行ファイルがマルウエアであることを検知することができず、通信を許可する可能性がある。そのため、検証装置２は、ファイアーウォール装置３が通過させたメールに添付された実行ファイルを実行して解析を行うことにより、その実行ファイルがマルウエアであるか否かについての判定を行う。
【００２３】
これにより、管理者は、外部端末３１から送信されたメールに添付されたマルウエアの動作の内容の解析を行うことが可能になる。また、管理者は、マルウエアが添付されたメールが端末装置１に送信されることを防止することが可能になる。
【００２４】
しかしながら、マルウエアには、例えば、耐解析機能を有するものが存在する。以下、耐解析機能を有するマルウエアに対する検証装置２の処理について説明を行う。
【００２５】
［耐解析機能を有するマルウエアに対する検証装置の処理の具体例］
図４は、耐解析機能を有するマルウエアを受信した場合における検証装置２の処理の具体例を説明する図である。なお、以下、オペレーティングシステムをＯＳとも表記する。
【００２６】
図４に示す検証装置２において、ハイパーバイザ２４は、検証装置２のハードウエア２５（物理リソース）上で動作し、仮想マシンの生成または削除を行う。具体的に、ハイパーバイザ２４は、検証装置２において仮想マシンを生成する場合、ハイパーバイザ２４上にＯＳ２１ｃ（以下、ゲストＯＳ２１ｃとも呼ぶ）を生成し、ハードウエア２５の一部を仮想マシンのハードウエア（以下、仮想ハードウエアとも呼ぶ）として割り当てる。一方、ハイパーバイザ２４は、検証装置２に生成された仮想マシンを削除する場合、ハイパーバイザ２４上に生成されたＯＳ２１ｃを削除し、仮想マシンの仮想ハードウエアを解放する。
【００２７】
また、図４に示す検証装置２において、ＯＳ２１ｃ上では、外部端末３１から送信されたメールに添付された実行ファイル３１ａ（マルウエアである可能性がある実行ファイル）等を実行して解析するためのデバッガ２１ｂが動作している。
【００２８】
具体的に、検証装置２で実行された実行ファイル３１ａがマルウエアである場合、そのマルウエアは、図４に示すように、実行された現在の環境が動作を継続すべき環境（悪性動作を開始すべき環境）であるか否かの判定を行う。すなわち、マルウエアは、例えば、実行された環境が仮想環境であるか否かの判定を行う。その結果、実行された環境が仮想環境であると判定した場合、マルウエアは、実行された環境が自身を解析するための仮想環境であると判定する。そして、マルウエアは、この場合、実行された環境が動作を継続すべき環境ではないと判定し、動作を終了する。これにより、マルウエアは、自身の動作が解析されることを防止する。
【００２９】
さらに具体的に、マルウエアは、図４に示すように、実行された環境が仮想環境であるか否かの情報を要求するための命令（以下、ＶＭ検知命令とも呼ぶ）をＯＳ２１ｃに対して送信する。そして、実行された環境が仮想環境である旨を示す情報をＯＳ２１ｃから受信した場合、マルウエアは、動作を終了する。すなわち、マルウエアは、この場合、実行された現在の環境が動作を継続すべき環境ではないと判定し、悪性動作を行うための動作を行わない。そのため、検証装置２は、この場合、送信されたメールに添付された実行ファイル３１ａがマルウエアであることを検知することができない。
【００３０】
一方、管理者は、マルウエアの内容を人間が解読できる形式に逆アセンブルし、マルウエアが行う動作について解析を行う場合がある。以下、マルウエアの内容を逆アセンブルする場合について説明を行う。
【００３１】
［マルウエアの内容を逆アセンブルする場合の具体例］
図５は、マルウエアの内容を逆アセンブルする場合を説明する図である。管理者は、図５に示すように、例えば、マルウエアの内容を人間が解読できる形式に逆アセンブルし、逆アセンブルされたマルウエアの内容を参照する。これにより、管理者は、マルウエアに感染した後であっても、マルウエアの動作について解析を行うことが可能になる。
【００３２】
しかしながら、マルウエアには、例えば、パッカー等のプログラムによって暗号化された状態でメール等に添付されるものが存在する。そして、このようなマルウエアは、例えば、自身の実行が行われた場合にのみ、アンパッカー等のプログラムによって自身の復号化を行う。そのため、管理者は、逆アセンブルを行ってもマルウエアの内容を解析することができない場合がある。
【００３３】
そこで、本実施の形態では、端末装置１は、マルウエアからＯＳに対して送信される可能性がある命令を予め記憶する。そして、端末装置１は、アプリケーション（外部端末３１から送信されたメールに添付された実行ファイル３１ａを含むアプリケーション）からＯＳに対して送信された命令（以下、特定の命令とも呼ぶ）をフックする。その後、端末装置１は、フックした特定の命令が記憶部に記憶されている場合、ハードウエアに記憶されたデータを他のハードウエアに記憶する。
【００３４】
すなわち、図４で説明したように、マルウエアには、例えば、ＶＭ検知命令をＯＳに対して送信するものが存在する。そのため、端末装置１は、ＯＳ上で動作するアプリケーションがＯＳに対してＶＭ検知命令を送信した場合、そのＶＭ検知命令を送信したアプリケーションがマルウエア自体であるか、マルウエアに感染したアプリケーションである可能性があると判定する。そして、端末装置１は、この場合、マルウエア自体である可能性があるアプリケーション（マルウエアに感染した可能性があるアプリケーション）によって書き込みが行われるハードウエアに記憶されているデータを、他のハードウエアに記憶する。
【００３５】
これにより、端末装置１は、マルウエアが動作中にハードウエアに書き込んだデータを、他のハードウエアに保全することが可能になる。そのため、管理者は、マルウエアが動作を終えた後であっても、マルウエアが書き込みを行ったデータを維持することが可能になる。したがって、管理者は、マルウエアが動作中にハードウエアに書き込んだデータ（他のハードウエアに保全したデータ）を参照して、マルウエアの動作の内容について解析を事後的に行うことが可能になる。
【００３６】
［端末装置のハードウエア構成］
次に、端末装置１のハードウエア構成について説明する。図６は、端末装置１のハードウエア構成を説明する図である。
【００３７】
端末装置１は、プロセッサであるＣＰＵ１０１と、メモリ１０２と、外部インターフェース（Ｉ／Ｏユニット）１０３と、記憶媒体１０４とを有する。各部は、バス１０５を介して互いに接続される。
【００３８】
記憶媒体１０４は、例えば、記憶媒体１０４内のプログラム格納領域（図示しない）に、マルウエアの解析を行う処理（以下、マルウエア解析処理とも呼ぶ）等を行うためのプログラム１１０を記憶する。記憶媒体１０４は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である。
【００３９】
ＣＰＵ１０１は、図６に示すように、プログラム１１０の実行時に、プログラム１１０を記憶媒体１０４からメモリ１０２にロードし、プログラム１１０と協働してマルウエア解析処理等を行う。
【００４０】
記憶媒体１０４は、例えば、マルウエア解析処理等を行う際に用いられる情報を記憶する情報格納領域１３０（以下、記憶部１３０とも呼ぶ）を有する。なお、記憶部１３０は、例えば、端末装置１のハイパーバイザが制御する記憶部として機能する。
【００４１】
また、外部インターフェース１０３は、ファイアーウォール装置３を介してネットワークＮＷと通信を行う。
【００４２】
[端末装置のソフトウエア構成]
次に、端末装置１のソフトウエア構成について説明する。図７は、図６の端末装置１の機能ブロック図である。ＣＰＵ１０１は、プログラム１１０と協働することにより、端末装置１のハイパーバイザの機能である情報管理部１１１と、命令取得部１１２と、命令判定部１１３と、ハードウエア制御部１１４（以下、処理部１１４とも呼ぶ）と、ダンプ作成部１１５として機能する。また、情報格納領域１３０には、命令情報１３１と、回数情報１３２と、時間情報１３３とが記憶されている。
【００４３】
情報管理部１１１は、マルウエアからＯＳに対して送信される可能性がある命令を、命令情報１３１として情報格納領域１３０に記憶する。
【００４４】
命令取得部１１２は、アプリケーションからＯＳに対して送信された命令をフックする。そして、命令判定部１１３は、命令取得部１１２がフックした命令に対応する情報が、情報格納領域１３０に記憶された命令情報１３１に含まれているか否かを判定する。
【００４５】
ハードウエア制御部１１４は、命令取得部１１２がフックした命令に対応する情報が命令情報１３１に含まれていると判定された場合、ハードウエアに記憶されたデータを他のハードウエアに記憶する。
【００４６】
ダンプ作成部１１５は、例えば、管理者による端末装置１に対する入力に応じて、他のハードウエアに記憶されたデータからダンプファイル（図示しない）を作成する。以下、他のハードウエアが記憶媒体１０４であるものとして説明を行うが、他のハードウエアは、例えば、記憶媒体１０４と異なる他の記憶媒体であってもよい。また、他のハードウエアは、例えば、メモリ１０２と異なる他のメモリであってもよい。回数情報１３２及び時間情報１３３については後述する。
【００４７】
［第１の実施の形態の概略］
次に、第１の実施の形態の概略について説明する。図８及び図９は、第１の実施の形態におけるマルウエア解析処理の概略を説明するフローチャート図である。また、図１０から図１２は、第１の実施の形態におけるマルウエア解析処理の概略を説明する図である。図１０から図１２を参照しながら図９及び図１０のマルウエア解析処理の概略を説明する。
【００４８】
初めに、端末装置１の構成について説明を行う。図１０は、端末装置１の構成について説明する図である。
【００４９】
図１０に示す端末装置１において、ハイパーバイザ１３は、端末装置１のハードウエア１４（物理リソース）上で動作し、仮想マシンの生成または削除を行う。具体的に、ハイパーバイザ１３は、端末装置１において仮想マシンを生成する場合、ハイパーバイザ１３上にＯＳ１２を生成し、ハードウエア１４の一部を仮想マシンの仮想ハードウエアとして割り当てる。一方、ハイパーバイザ１３は、端末装置１に生成された仮想マシンを削除する場合、ハイパーバイザ１３上に生成されたＯＳ１２を削除し、仮想マシンの仮想ハードウエアを解放する。
【００５０】
なお、図１０に示すハイパーバイザ１３は、ハードウエア１４上において直接動作しているが、ハードウエア１４上で動作するホストＯＳ（図示しない）上において動作するハイパーバイザであってもよい。すなわち、図１０に示すハイパーバイザ１３は、ホストＯＳ上で動作するハイパーバイザではなく、ハードウエア１４上で直接動作するハイパーバイザ（Ｔｙｐｅ１型のハイパーバイザ）である。これに対し、ハイパーバイザ１３は、ハードウエア１４上で直接動作するホストＯＳ上で動作するハイパーバイザ（Ｔｙｐｅ２型のハイパーバイザ）であってもよい。
【００５１】
次に、図８及び図９に示すフローチャート図について説明を行う。端末装置１のハイパーバイザ１３は、図８に示すように、命令情報記憶タイミングまで待機する（Ｓ１のＮＯ）。命令情報記憶タイミングは、命令情報１３１を情報格納領域１３０に記憶するタイミングである。具体的に、命令情報記憶タイミングは、例えば、管理者が端末装置１に対して命令情報１３１の入力を行ったタイミングであってよい。そして、命令情報記憶タイミングになった場合（Ｓ１のＹＥＳ）、ハイパーバイザ１３は、命令情報１３１を情報格納領域１３０に記憶する（Ｓ２）。
【００５２】
すなわち、ハイパーバイザ１３は、端末装置１のＯＳ１２上においてマルウエアが動作している場合に、そのマルウエアがＯＳ１２に対して送信する可能性がある命令（ＶＭ検知命令）を識別する情報を、命令情報１３１として予め記憶する。これにより、ハイパーバイザ１３は、後述するように、アプリケーション１１がＯＳ１２に対して送信した命令をフックすることで、命令を送信したアプリケーション１１がマルウエア自体であるか否か（マルウエアに感染したアプリケーションであるか否か）を判定することが可能になる。
【００５３】
その後、ハイパーバイザ１３は、図９に示すように、アプリケーション１１からＯＳ１２に対して命令が送信されるまで待機する（Ｓ１１のＮＯ）。そして、アプリケーション１１から命令が送信されたことを検知した場合（Ｓ１１のＹＥＳ）、ハイパーバイザ１３は、図１１に示すように、検知した命令（特定の命令）をフックする（Ｓ１２）。
【００５４】
続いて、ハイパーバイザ１３は、図１１に示すように、Ｓ１２の処理でフックした命令に対応する情報が、情報格納領域１３０に記憶された命令情報１３１に含まれているか否かを判定する（Ｓ１３）。そして、フックした命令に対応する情報が命令情報１３１に含まれていると判定した場合（Ｓ１３のＹＥＳ）、ハイパーバイザ１３は、図１２に示すように、ハードウエア（例えば、メモリ１０２）に記憶されたデータを、他のハードウエア（例えば、記憶媒体１０４）に記憶する（Ｓ１４）。
【００５５】
すなわち、ハイパーバイザ１３は、命令情報１３１に情報が含まれるＶＭ検知命令の送信が行われた場合、そのＶＭ検知命令を送信したアプリケーション１１がマルウエア自体であるか、マルウエアに感染したアプリケーションである可能性があると判定する。そして、端末装置１は、この場合、マルウエアが書込みを行うメモリ１０２に現在記憶されているデータを記憶媒体１０４に記憶する。
【００５６】
このように、第１の実施の形態によれば、ハイパーバイザ１３は、マルウエアからＯＳ１２に対して送信される命令を記憶する。そして、ハイパーバイザ１３は、アプリケーション１１（外部端末３１から送信されたメールに添付された実行ファイルを含むアプリケーション）からＯＳ１２に対して送信された命令をフックする。その後、ハイパーバイザ１３は、フックした特定の命令が情報格納領域１３０に記憶されている場合、例えば、メモリ１０２に記憶されたデータを他のハードウエアである記憶媒体１０４に記憶する。
【００５７】
これにより、端末装置１は、マルウエア（マルウエアである可能性があると判定されたアプリケーション１１）の動作中においてメモリ１０２に書き込まれたデータを、記憶媒体１０４に保全することが可能になる。そのため、管理者は、記憶媒体１０４に記憶されたデータを参照し、マルウエアの動作の内容を事後的に解析することが可能になる。
【００５８】
[第１の実施の形態の詳細]
次に、第１の実施の形態の詳細について説明する。図１３から図１５は、第１の実施の形態におけるマルウエア解析処理の詳細を説明するフローチャート図である。また、図１６は、第１の実施の形態におけるマルウエア解析処理の詳細を説明する図である。図１６を参照しながら、図１３から図１５のマルウエア解析処理の説明を行う。
【００５９】
情報管理部１１１は、図１３に示すように、命令情報記憶タイミングまで待機する（Ｓ２１のＮＯ）。そして、命令情報記憶タイミングになった場合（Ｓ２１のＹＥＳ）、情報管理部１１１は、命令情報１３１を情報格納領域１３０に記憶する（Ｓ２２）。以下、命令情報１３１の具体例について説明を行う。
【００６０】
[命令情報の具体例]
図１６は、命令情報１３１の具体例を説明する図である。図１６に示す命令情報１３１は、命令情報１３１に含まれる各情報を識別する「項番」と、マルウエアから送信される可能性がある命令（ＶＭ検知命令）が設定される「命令」とを項目として有する。
【００６１】
具体的に、図１６に示す命令情報１３１において、「項番」が「１」である情報の「命令」には、「ＡＡＡ命令」が設定され、「項番」が「２」である情報の「命令」には、「ＢＢＢ命令」が設定され、「項番」が「３」である情報の「命令」には、「ＣＣＣ命令」が設定される。
【００６２】
すなわち、情報管理部１１１は、アプリケーション１１がマルウエア自体である場合（アプリケーション１１がマルウエアに感染している場合）に、そのマルウエアがＯＳ１２に対して送信すると予測される各命令を識別する命令情報１３１を予め情報格納領域１３０に記憶する。
【００６３】
なお、情報管理部１１１は、マルウエアが送信すると予測されるＶＭ検知命令以外の命令を識別する情報を命令情報１３１に含めるものであってもよい。具体的に、情報管理部１１１は、例えば、マルウエアが自身の動作環境がデバッガ等のプログラム上であるか否かを問い合わせるためのデバッガ検知命令を識別する情報を命令情報１３１に含めるものであってもよい。これにより、命令判定部１１３は、マルウエアの検知をより精度よく行うことが可能になる。
【００６４】
図１４に戻り、命令判定部１１３は、回数情報１３２に「０」を設定する（Ｓ３１）。回数情報１３２は、所定の時間内にアプリケーション１１が命令を送信した回数を示す情報である。
【００６５】
すなわち、命令情報１３１に情報が含まれる命令は、マルウエアに感染していないアプリケーション１１によって送信される場合がある。そのため、メモリ１０２に記憶されたデータの保全を、命令情報１３１に情報が含まれる命令がアプリケーション１１から送信される毎に行う場合、ハイパーバイザ１３は、メモリ１０２に記憶されたデータの保全を効率的に行うことができない。
【００６６】
そこで、ハイパーバイザ１３は、後述するように、例えば、所定の時間内において命令情報１３１に情報が含まれる命令の送信回数が所定の回数を超えた場合に、アプリケーション１１がマルウエアである可能性があるとしてメモリ１０２に記憶されたデータの保全を行う。これにより、ハイパーバイザ１３は、メモリ１０２に記憶されたデータの保全を効率的に行うことが可能になる。
【００６７】
そして、命令判定部１１３は、所定のタイミングにおける時間を保持する時間情報１３３に、現在の時間を設定する（Ｓ３２）。
【００６８】
その後、命令判定部１１３は、例えば、現在の時間と時間情報１３３に設定された時間との差が５秒以内であるか否かを判定する（Ｓ３３）。その結果、現在の時間と時間情報１３３に設定された時間との差が５秒以内である場合（Ｓ３３のＹＥＳ）、命令取得部１１２は、アプリケーション１１からＯＳ１２に対して命令が送信されるか否かを判定する（Ｓ３４）。そして、アプリケーション１１からＯＳ１２に対して命令が送信されたと判定された場合（Ｓ３４のＹＥＳ）、命令取得部１１２は、Ｓ３４の処理で検知した命令をフックする（Ｓ３５）。
【００６９】
なお、現在の時間と時間情報１３３に設定された時間との差が５秒に達した場合（Ｓ３４のＮＯ、Ｓ３３のＮＯ）、命令判定部１１３は、Ｓ３１以降の処理を再度実行する。
【００７０】
続いて、命令判定部１１３は、Ｓ３５の処理でフックされた命令に対応する情報が、情報格納領域１３０に記憶された命令情報１３１に含まれているか否かを判定する（Ｓ３６）。その結果、フックされた命令に対応する情報が命令情報１３１に含まれている場合（Ｓ３６のＹＥＳ）、命令判定部１１３は、回数情報１３２に設定されている値に「１」を加算する（Ｓ３７）。
【００７１】
その後、命令判定部１１３は、図１５に示すように、例えば、回数情報１３２に現在設定されている値が「３」以上であるか否かを判定する（Ｓ４１）。そして、回数情報１３２に設定されている値が「３」以上である場合（Ｓ４１のＹＥＳ）、ハードウエア制御部１１４は、ハードウエア（例えば、メモリ１０２）に記憶されたデータを他のハードウエア（例えば、記憶媒体１０４）に記憶する（Ｓ４２）。
【００７２】
すなわち、命令判定部１１３は、命令情報１３１に情報が含まれる命令が送信される毎ではなく、例えば、命令情報１３１に情報が含まれる命令が５秒以内に３回以上送信された場合に、アプリケーション１１がマルウエアである（マルウエアに感染している）可能性があると判定する。これにより、ハードウエア制御部１１４は、メモリ１０２に記憶されたデータの保全を効率的に行うことが可能になる。
【００７３】
なお、命令判定部１１３は、Ｓ３７の処理において、回数情報１３２に設定されている値の更新を命令毎（図１６で説明した命令情報１３１における「項番」に設定された情報毎）に行うものであってもよい。そして、命令判定部１１３は、Ｓ４１の処理において、命令情報１３１に情報が含まれる命令に、５秒以内に３回以上送信された命令が存在するか否かを判定するものであってもよい。これにより、命令判定部１１３は、同一の命令の送信が所定時間内に所定回数行われた場合に限り、メモリ１０２に記憶されたデータの保全を行うことが可能になる。
【００７４】
また、ハイパーバイザ１３は、Ｓ３６の処理において、フックされた命令に対応する情報が情報格納領域１３０に記憶された命令情報１３１に含まれていると判定した場合、ＯＳ１２の動作を停止するように制御するものであってもよい。これにより、ハイパーバイザ１３は、Ｓ４２に処理において、ハードウエア制御部１１４によるメモリ１０２のデータの保全を、マルウエアの動作が終了する前に行うことが可能になる。
【００７５】
さらに、ハイパーバイザ１３は、Ｓ３６の処理において、フックされた命令に対応する情報が情報格納領域１３０に記憶された命令情報１３１に含まれていると判定した場合、端末装置１のＣＰＵ１０１の動作速度を低下させるように制御を行うものであってもよい。これにより、ハイパーバイザ１３は、マルウエアによる動作の速度を遅らせることが可能になる。
【００７６】
その後、ダンプ作成部１１５は、メモリダンプ作成タイミングまで待機する（Ｓ４３のＮＯ）。メモリダンプ作成タイミングは、例えば、管理者が端末装置１に対してダンプファイルを作成する旨の入力を行ったタイミングであってよい。そして、メモリダンプ作成タイミングになった場合（Ｓ４３のＹＥＳ）、ダンプ作成部１１５は、他のハードウエア（記憶媒体１０４）に記憶されたデータからダンプファイルを作成する（Ｓ４４）。
【００７７】
一方、命令判定部１１３は、フックされた命令に対応する情報が命令情報１３１に含まれていない場合（Ｓ３６のＮＯ）、Ｓ３３以降の処理を再度行う。また、命令判定部１１３は、回数情報１３２に設定されている値が「３」以上でない場合も同様に（Ｓ４１のＮＯ）、Ｓ３３以降の処理を再度行う。
【００７８】
このように、第１の実施の形態によれば、ハイパーバイザ１３は、マルウエアからＯＳ１２に対して送信される命令を記憶する。そして、ハイパーバイザ１３は、アプリケーション１１（外部端末３１から送信されたメールに添付された実行ファイルを含むアプリケーション）からＯＳ１２に対して送信された命令をフックする。その後、ハイパーバイザ１３は、フックした特定の命令が情報格納領域１３０に記憶されている場合、例えば、メモリ１０２に記憶されたデータを他のハードウエアである記憶媒体１０４に記憶する。
【００７９】
これにより、端末装置１は、マルウエアが動作中にハードウエアに書き込んだデータを他のハードウエアに保全することが可能になる。そのため、管理者は、マルウエアが動作を終えた後であっても、マルウエアが書き込みを行ったデータを維持することが可能になる。したがって、管理者は、マルウエアが動作中にハードウエアに書き込んだデータを参照して、マルウエアの動作の内容について解析を事後的に行うことが可能になる。
【００８０】
[第２の実施の形態の詳細]
次に、第２の実施の形態について説明する。図１７から図１９は、第２の実施の形態におけるマルウエア解析処理の詳細を説明するフローチャート図である。また、図２０は、第２の実施の形態におけるマルウエア解析処理の詳細を説明する図である。図２０を参照しながら、図１７から図１９のマルウエア解析処理の説明を行う。
【００８１】
第２の実施の形態におけるマルウエア解析処理では、アプリケーション１１がＯＳ１２に対して送信した複数命令の順序に対応する情報が命令情報１３１に記憶されている場合に、ＯＳ１２上でマルウエアが動作していると判定する。
【００８２】
これにより、ハイパーバイザ１３は、マルウエアの動作の特性が明らかである場合に、マルウエアによって送信された命令と、マルウエアに感染していないアプリケーション１１によって送信された命令とを、精度よく区別することが可能になる。そのため、ハイパーバイザ１３は、メモリ１０２に記憶されたデータの保全をより効率的に行うことが可能になる。以下、第２の実施の形態におけるマルウエア解析処理の詳細について説明を行う。
【００８３】
情報管理部１１１は、図１７に示すように、命令情報記憶タイミングまで待機する（Ｓ５１のＮＯ）。そして、命令情報記憶タイミングになった場合（Ｓ５１のＹＥＳ）、情報管理部１１１は、命令情報１３１を情報格納領域１３０に記憶する（Ｓ５２）。第２の実施の形態における命令情報１３１は、マルウエアからＯＳ１２に対して送信される命令の順序に対応する情報である。以下、第２の実施の形態における命令情報１３１の具体例について説明を行う。
【００８４】
[第２の実施の形態における命令情報の具体例]
図２０は、第２の実施の形態における命令情報１３１の具体例を説明する図である。図２０に示す命令情報１３１は、命令情報１３１に含まれる各情報を識別する「項番」と、マルウエアから送信される可能性がある命令が設定される「第１命令」とを項目として有する。また、図２０に示す命令情報１３１は、「第１命令」に設定された命令の次にマルウエアから送信される可能性がある命令が設定される「第２命令」と、「第２命令」に設定された命令の次にマルウエアから送信される可能性がある命令が設定される「第３命令」とを項目として有する。
【００８５】
具体的に、図２０に示す命令情報１３１において、「項番」が「１」である情報には、「第１命令」として「ＡＡＡ命令」が設定され、「第２命令」として「ＢＢＢ命令」が設定されている。そして、図２０に示す命令情報１３１において、「項番」が「１」である情報における「第３命令」には、情報が設定されていないことを示す「−」が設定されている。また、図２０に示す命令情報１３１において、「項番」が「２」である情報には、「第１命令」として「ＢＢＢ命令」が設定され、「第２命令」として「ＥＥＥ命令」が設定され、「第３命令」として「ＢＢＢ命令」が設定されている。さらに、図２０に示す命令情報１３１において、「項番」が「３」である情報には、「第１命令」として「ＣＣＣ命令」が設定され、「第２命令」として「ＣＣＣ命令」が設定され、「第３命令」に「−」が設定されている。
【００８６】
そして、ハイパーバイザ１３は、後述するように、所定の時間内において、「第１命令」、「第２命令」及び「第３命令」に設定された各命令が、連続して所定の回数以上送信された場合に、各命令がマルウエアによって送信されたものであると判定する。具体的に、ハイパーバイザ１３は、例えば、所定の時間内において、「ＢＢＢ命令」と「ＥＥＥ命令」と「ＢＢＢ命令」とが連続して所定の回数以上送信された場合に、各命令がマルウエアによって送信されたものであり、ＯＳ１２上においてマルウエアが動作している判定する。これにより、ハイパーバイザ１３は、マルウエアによって送信された命令と、マルウエアに感染していないアプリケーション１１によって送信された命令とを、より精度よく区別することが可能になる。
【００８７】
なお、図２０に示す命令情報１３１は、命令に対応する情報を設定することができる項目を３つ有しているが、命令に対応する情報を設定することができる項目を２つのみ有するものであってもよい。また、図２０に示す命令情報１３１は、命令に対応する情報を設定することができる項目を４つ以上有するものであってもよい。
【００８８】
図１８に戻り、命令判定部１１３は、回数情報１３２に「０」を設定する（Ｓ６１）。また、命令判定部１１３は、所定のタイミングにおける時間を保持する時間情報１３３に、現在の時間を設定する（Ｓ６２）。
【００８９】
その後、命令判定部１１３は、例えば、現在の時間と時間情報１３３に設定された時間との差が５秒以内であるか否かを判定する（Ｓ６３）。その結果、現在の時間と時間情報１３３に設定された時間との差が５秒以内である場合（Ｓ６３のＹＥＳ）、命令取得部１１２は、アプリケーション１１からＯＳ１２に対して命令が送信されるか否かを判定する（Ｓ６４）。そして、アプリケーション１１からＯＳ１２に対して命令が送信されたと判定した場合（Ｓ６４のＹＥＳ）、命令取得部１１２は、Ｓ６４の処理で検知した命令をフックする（Ｓ６５）。
【００９０】
なお、現在の時間と時間情報１３３に設定された時間との差が５秒に達した場合（Ｓ６４のＮＯ、Ｓ６３のＮＯ）、命令判定部１１３は、Ｓ６１以降の処理を再度実行する。
【００９１】
続いて、命令判定部１１３は、Ｓ６５の処理でフックされた命令の順序に対応する情報が、情報格納領域１３０に記憶された命令情報１３１に含まれているか否かを判定する（Ｓ６６）。その結果、フックされた命令に対応する情報が命令情報１３１に含まれている場合（Ｓ６６のＹＥＳ）、命令判定部１１３は、回数情報１３２に設定されている値に「１」を加算する（Ｓ６７）。
【００９２】
その後、命令判定部１１３は、図１９に示すように、例えば、回数情報１３２に現在設定されている値が「３」以上であるか否かを判定する（Ｓ７１）。そして、回数情報１３２に設定されている値が「３」以上である場合（Ｓ７１のＹＥＳ）、ハードウエア制御部１１４は、ハードウエア（例えば、メモリ１０２）に記憶されたデータを他のハードウエア（例えば、記憶媒体１０４）に記憶する（Ｓ７２）。
【００９３】
なお、フックされた命令に対応する情報が命令情報１３１に含まれていない場合（Ｓ６６のＮＯ）、または、回数情報１３２に設定されている値が「３」以上でない場合（Ｓ７１のＮＯ）、命令判定部１１３は、Ｓ６３以降の処理を再度実行する。
【００９４】
また、命令判定部１１３は、Ｓ６７の処理において、回数情報１３２に設定されている値の更新を命令の順序毎（図２０で説明した命令情報１３１における「項番」に設定された情報毎）に行うものであってもよい。そして、命令判定部１１３は、Ｓ７１の処理において、命令情報１３１に情報が含まれる命令の順序に、５秒以内に３回以上送信された命令の順序が存在するか否かを判定するものであってもよい。これにより、命令判定部１１３は、同一の順序による複数の命令の送信が所定時間内に所定回数行われた場合に限り、メモリ１０２に記憶されたデータの保全を行うことが可能になる。
【００９５】
その後、ダンプ作成部１１５は、メモリダンプ作成タイミングまで待機する（Ｓ７３のＮＯ）。そして、メモリダンプ作成タイミングになった場合（Ｓ７３のＹＥＳ）、ダンプ作成部１１５は、他のハードウエア（記憶媒体１０４）に記憶されたデータからダンプファイルを作成する（Ｓ７４）。
【００９６】
これにより、ハイパーバイザ１３は、マルウエアの動作の特性が明らかである場合に、マルウエアによって送信された命令と、マルウエアに感染していないアプリケーション１１によって送信された命令とを、精度よく区別することが可能になる。そのため、ハイパーバイザ１３は、メモリ１０２に記憶されたデータの保全をより効率的に行うことが可能になる。
【００９７】
以上の実施の形態をまとめると、以下の付記のとおりである。
【００９８】
（付記１）
マルウエアからオペレーティングシステムに対して送信される命令を記憶する記憶部と、
アプリケーションから前記オペレーティングシステムに対して送信された特定の命令をフックし、フックした前記特定の命令が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する処理部と、を有する、
ことを特徴とするマルウエア解析装置。
【００９９】
（付記２）
付記１において、
前記特定の命令は、前記アプリケーションが仮想マシン上で動作しているか否かを示す情報を要求する命令である、
ことを特徴とするマルウエア解析装置。
【０１００】
（付記３）
付記１において、
前記処理部は、前記特定の命令のフックを所定の時間内に所定回数以上行った場合であって、前記特定の命令が前記記憶部に記憶されている場合に、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する、
ことを特徴とするマルウエア解析装置。
【０１０１】
（付記４）
付記１において、
前記記憶部は、前記マルウエアから前記オペレーティングシステムに対して送信される複数の命令の順序を記憶し、
前記処理部は、前記アプリケーションから前記オペレーティングシステムに対して送信された複数の命令をそれぞれフックし、フックした前記複数の命令の順序が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを前記他のハードウエアに記憶する、
ことを特徴とするマルウエア解析装置。
【０１０２】
（付記５）
付記４において、
前記処理部は、所定の順序による複数の命令のフックを所定の時間内に所定回数以上行った場合であって、前記所定の順序が前記記憶部に記憶されている場合に、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する、
ことを特徴とするマルウエア解析装置。
【０１０３】
（付記６）
マルウエアからオペレーティングシステムに対して送信される命令を記憶部に記憶し、
アプリケーションから前記オペレーティングシステムに対して送信された特定の命令をフックし、フックした前記特定の命令が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する、
ことを特徴とするマルウエア解析方法。
【０１０４】
（付記７）
付記６において、
前記ハードウエアに記憶されたデータを記憶する工程では、前記特定の命令のフックを所定の時間内に所定回数以上行った場合であって、前記特定の命令が前記記憶部に記憶されている場合に、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する、
ことを特徴とするマルウエア解析方法。
【０１０５】
（付記８）
付記６において、
前記命令を記憶する工程では、前記マルウエアから前記オペレーティングシステムに対して送信される複数の命令の順序を記憶し、
前記ハードウエアに記憶されたデータを記憶する工程では、前記アプリケーションから前記オペレーティングシステムに対して送信された複数の命令をそれぞれフックし、フックした前記複数の命令の順序が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを前記他のハードウエアに記憶する、
ことを特徴とするマルウエア解析方法。
【０１０６】
（付記９）
コンピュータに、
マルウエアからオペレーティングシステムに対して送信される命令を記憶部に記憶し、
アプリケーションから前記オペレーティングシステムに対して送信された特定の命令をフックし、フックした前記特定の命令が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する、
処理を実行させることを特徴とするマルウエア解析プログラム。
【０１０７】
（付記１０）
付記９において、
前記ハードウエアに記憶されたデータを記憶する処理では、前記特定の命令のフックを所定の時間内に所定回数以上行った場合であって、前記特定の命令が前記記憶部に記憶されている場合に、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを他のハードウエアに記憶する、
ことを特徴とするマルウエア解析プログラム。
【０１０８】
（付記１１）
付記９において、
前記命令を記憶する処理では、前記マルウエアから前記オペレーティングシステムに対して送信される複数の命令の順序を記憶し、
前記ハードウエアに記憶されたデータを記憶する処理では、前記アプリケーションから前記オペレーティングシステムに対して送信された複数の命令をそれぞれフックし、フックした前記複数の命令の順序が前記記憶部に記憶されている場合、前記オペレーティングシステムがアクセスするハードウエアに記憶されたデータを前記他のハードウエアに記憶する、
ことを特徴とするマルウエア解析プログラム。
【符号の説明】
【０１０９】
１ａ：端末装置                １ｂ：端末装置
１ｃ：端末装置                ２：検証装置
３：ファイアーウォール装置    ３１：外部端末
ＮＷ：ネットワーク
【図１】
0006687844.tif 000002
【図２】
0006687844.tif 000003
【図３】
0006687844.tif 000004
【図４】
0006687844.tif 000005
【図５】
0006687844.tif 000006
【図６】
0006687844.tif 000007
【図７】
0006687844.tif 000008
【図８】
0006687844.tif 000009
【図９】
0006687844.tif 000010
【図１０】
0006687844.tif 000011
【図１１】
0006687844.tif 000012
【図１２】
0006687844.tif 000013
【図１３】
0006687844.tif 000014
【図１４】
0006687844.tif 000015
【図１５】
0006687844.tif 000016
【図１６】
0006687844.tif 000017
【図１７】
0006687844.tif 000018
【図１８】
0006687844.tif 000019
【図１９】
0006687844.tif 000020
【図２０】
0006687844.tif 000021