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