(57)【特許請求の範囲】
【請求項１】
起動させたマルウェアの挙動を解析する第１の情報処理装置と、前記第１の情報処理装置から送信された送信情報を転送する第２の情報処理装置とを有する情報処理システムにおいて、
前記第１の情報処理装置は、
データと、前記データに付与されたタグ情報とを対応付けて記憶する記憶部と、
前記マルウェアがデータを送信する際に、送信されるデータと、前記送信されるデータに付与されたタグ情報とを含んだ送信情報を生成し、前記第２の情報処理装置に前記送信情報を送信する送信部とを備え、
前記第２の情報処理装置は、
受信した前記送信情報から前記タグ情報を抽出する抽出部と、
抽出された前記タグ情報に基づいて前記送信情報の転送先を決定し、決定した前記転送先に前記送信情報を転送する転送部と
を備えたことを特徴とする情報処理システム。
【請求項２】
前記第２の情報処理装置は、
前記タグ情報と、前記タグ情報が付与された前記データの外部装置への転送を許可するか否かを示す情報とを対応付けたタグ種別情報を更に備え、
前記転送部は、前記タグ種別情報を参照し、模擬インターネットと実インターネットとのいずれか一方から前記送信情報の転送先を決定する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記第２の情報処理装置は、受信した前記送信情報に含まれるデータと、前記データに付与されたタグ情報とを対応付けて記憶部に格納する格納制御部を更に備えたことを特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
前記送信部は、前記データを送信する際に、前記データに付与されたタグ情報を所定の最大送信可能サイズを超えたフレーム内の領域に格納することを特徴とする請求項１又は２に記載の情報処理システム。
【請求項５】
前記送信部は、前記データを送信する際に、前記データに付与されたタグ情報を所定の最大送信可能サイズを超えたフレーム内の領域に格納することを特徴とする請求項３に記載の情報処理システム。
【請求項６】
起動させたマルウェアの挙動を解析する第１の情報処理装置と、前記第１の情報処理装置から送信された送信情報を転送する第２の情報処理装置とを有する情報処理システムで実行される制御方法であって、
前記第１の情報処理装置は、
データと、前記データに付与されたタグ情報とを対応付けて記憶する記憶部を備え、
前記第１の情報処理装置が、
前記マルウェアがデータを送信する際に、送信されるデータと、前記送信されるデータに付与されたタグ情報とを含んだ送信情報を生成し、前記第２の情報処理装置に前記送信情報を送信する送信工程を含み、
前記第２の情報処理装置が、
受信した前記送信情報から前記タグ情報を抽出する抽出工程と、
抽出された前記タグ情報に基づいて前記送信情報の転送先を決定し、決定した前記転送先に前記送信情報を転送する転送工程と
を含んだことを特徴とする制御方法。
【請求項７】
起動させたマルウェアの挙動を解析する第１のコンピュータと、前記第１のコンピュータから送信された送信情報を転送する第２のコンピュータとを有する情報処理システムで実行される制御方法をコンピュータに実行させるための制御プログラムであって、
前記第１のコンピュータは、
データと、前記データに付与されたタグ情報とを対応付けて記憶する記憶部を備え、
前記第１のコンピュータに、
前記マルウェアがデータを送信する際に、送信されるデータと、前記送信されるデータに付与されたタグ情報とを含んだ送信情報を生成し、前記第２の情報処理装置に前記送信情報を送信する送信手順を実行させ、
前記第２のコンピュータに、
受信した前記送信情報から前記タグ情報を抽出する抽出手順と、
抽出された前記タグ情報に基づいて前記送信情報の転送先を決定し、決定した前記転送先に前記送信情報を転送する転送手順と
を実行させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、制御方法及び制御プログラムに関する。
【背景技術】
【０００２】
従来、マルウェアの解析手法には、大別して静的解析と動的解析とがある。静的解析は、マルウェアのプログラムコードを解析することでマルウェアが備える機能を把握する手法である。ただし、静的解析は、マルウェアが備える機能を網羅的に解析するので、多くの人手による作業が伴う。一方、動的解析は、マルウェアの振る舞いを記録する環境を用意し、この環境内でマルウェアを動作させることで、マルウェアの機能を解析する手法である。動的解析における振る舞いの抽出は、静的解析と比較して、自動化が容易である。【０００３】
こうしたマルウェアの動的解析の１つとして、動的テイント解析がある。動的テイント解析では、例えば仮想マシンにおいて、仮想ＣＰＵ（Central  Processing  Unit）が、仮想メモリや仮想ディスク等でマルウェアが読み書きするデータの流れを追跡する。より具体的には、動的テイント解析は、テイントタグの付与、テイントタグの伝搬、テイントタグの検出という３つのフェーズから構成される。【０００４】
例えば、マルウェアによる機密情報の漏洩を検出する場合、仮想ＣＰＵは、以下の処理を実行する。まず、第１のフェーズでは、仮想ＣＰＵは、マルウェアを動作させる。そして、仮想ＣＰＵは、機密情報を含むファイルがメモリに読み込まれる段階で、機密情報を含むファイルのメモリにおける格納位置に対応付けて、機密情報を意味するテイントタグを付与する。通常、このテイントタグは、ＯＳ（Operating  System）が管理する物理メモリとは別に用意された領域（「シャドウメモリ」とも呼ばれる）に格納される。この領域は、ＯＳやアプリケーション（マルウェアを含む）からはアクセスできないように実装される。【０００５】
その後、第２のフェーズでは、仮想ＣＰＵは、レジスタとメモリ領域との間の転送命令等を監視することで、機密情報のコピーに応じてテイントタグが伝搬する。そして、第３のフェーズでは、仮想ＣＰＵは、ネットワークインタフェースから出力されるデータに、機密情報を意味するテイントタグが付与されているかを確認する。仮想ＣＰＵは、出力されるデータにテイントタグが付与されている場合、機密情報が外部へ出力されようとしたことを検出する。【０００６】
また、動的テイント解析を応用した例として、デバッガにおけるブレークポイントをテイントタグにより実現する技術がある。この技術では、利用者が、プログラムを中断させたい箇所（「ブレークポイント」を設定する箇所）に対して、テイントタグを事前に割り当てる。そして、仮想ＣＰＵは、実行する命令に対応付けてテイントタグが付与されているかを検査し、テイントタグが付与されている場合にプログラムを中断する。またテイントタグの伝搬先として、ディスクへ伝搬させる技術もある。【０００７】
また、マルウェアの動的解析手法のひとつとして、あらかじめ用意したＦＴＰ（File  Transfer  Protocol）アカウント情報等（ハニートークンという）を解析用ＰＣに設定しておき、故意にマルウェアによる情報漏えいを発生させることで、攻撃者の挙動を追跡する試みがある。これにより攻撃者が取得した情報をどのように悪用しているのかを把握することが可能になる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−８３７９８号公報
【非特許文献】
【０００９】
【非特許文献１】川古谷裕平、岩村誠、針生剛男、テイントタグを用いた解析対象コードの識別方法、電子情報通信学会、情報通信システムセキュリティ研究会、２０１２年７月
【非特許文献２】Mitsuaki  Akiyama,  Takeshi  Yagi,  Kazufumi  Aoki,  Takeo  Hariu,  Youki  Kadobayashi:  Active  Credential  Leakage  for  Observing  Web-Based  Attack  Cycle.  RAID  2013:  pp.223-243
【非特許文献３】青木一史、川古谷裕平、岩村誠、伊藤光恭、半透性仮想インターネットによるマルウェアの動的解析、マルウェア対策研究人材育成ワークショップ、２００９年１０月
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記の従来技術では、他者への被害を及ぼさないようにマルウェアの挙動を解析することができないという問題がある。【００１１】
例えば、故意にマルウェアによる情報漏えいを発生させる動的解析の際には、マルウェアの通信先を実インターネットとして、攻撃者側にハニートークンを送信する必要がある。一方、マルウェアの中には迷惑メールの送信など、実インターネットにつないでしまうと、他者に被害を与える活動がある。このようなことから、他者に被害を与える可能性のある通信を遮断したり、解析者が用意した模擬インターネット内で通信を続行させたりするなどして、他者に被害を与えない方法が必要となる。【００１２】
このように、マルウェアを動的解析する際には、その通信意図に応じて通信先を実インターネット、もしくは模擬インターネットに切り替える必要がある。従来は、その通信先ＩＰ（Internet  Protocol）アドレスやＵＲＬ（Uniform  Resource  Locator）、通信ペイロードの情報などから通信先を切り替えていたが、未知の通信先や通信ペイロードが難読化されている場合への対応が困難であった。【００１３】
開示の技術は、上述に鑑みてなされたものであって、他者への被害を及ぼさないようにマルウェアの挙動を解析することを目的とする。
【課題を解決するための手段】
【００１４】
本願の開示する情報処理システムは、起動させたマルウェアの挙動を解析する第１の情報処理装置と、前記第１の情報処理装置から送信された送信情報を転送する第２の情報処理装置とを有する。前記第１の情報処理装置は、記憶部と、送信部とを備え、前記第２の情報処理装置は、抽出部と、転送部とを備える。記憶部は、データと、前記データに付与されたタグ情報とを対応付けて記憶する。送信部は、前記マルウェアがデータを送信する際に、送信されるデータと、前記送信されるデータに付与されたタグ情報とを含んだ送信情報を生成し、前記第２の情報処理装置に前記送信情報を送信する。抽出部は、受信した前記送信情報から前記タグ情報を抽出する。転送部は、抽出された前記タグ情報に基づいて前記送信情報の転送先を決定し、決定した前記転送先に前記送信情報を転送する。
【発明の効果】
【００１５】
開示する情報処理装置の一つの態様によれば、他者への被害を及ぼさないようにマルウェアの挙動を解析することができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】図１は、情報処理システムの構成例を示す図である。
【図２】図２は、情報処理システムを実現する情報処理装置の構成例を示す図である。
【図３】図３は、シャドウメモリに記憶される情報の一例を示す図である。
【図４】図４は、テイントタグ種別情報テーブルが記憶する情報の一例を示す図である。
【図５】図５は、データにテイントタグが付与されていない場合に仮想ＮＩＣにより生成されるフレームの構造の一例を示す図である。
【図６】図６は、データにテイントタグが付与されている場合に仮想ＮＩＣにより生成されるフレームの構造の一例を示す図である。
【図７】図７は、仮想ＮＩＣによるフレーム生成する処理の手順を示すフローチャートである。
【図８】図８は、仮想マシンによる処理の手順を示すフローチャートである。
【図９】図９は、制御プログラムを実行するコンピュータを示す図である。
【図１０】図１０は、情報処理システムを実現する情報処理装置の他の構成例を示す図である。
【発明を実施するための形態】
【００１７】
以下に、開示する情報処理システム、制御方法及び制御プログラムの実施形態について、図面に基づいて詳細に説明する。なお、本実施形態により開示する発明が限定されるものではない。
【００１８】
（第１の実施形態）
図１は、情報処理システム１の構成例を示す図である。図１に示すように、情報処理システム１は、模擬インターネット装置２と、実インターネット接続装置３と、実インターネット４と、マルウェア通信先切り替え装置５と、マルウェア実行環境６とを有する。
【００１９】
模擬インターネット装置２は、マルウェア通信先切り替え装置５を介して、マルウェア実行環境６からの通信を受け取り、保存すると同時に通信のプロトコルを判別し、プロトコルに応じたデータを生成する。そして、模擬インターネット装置２は、応答としてマルウェア実行環境６に生成したデータを送信する。模擬インターネット装置２は、このプロトコルに応じたサーバ応答の生成により実現される。
【００２０】
実インターネット接続装置３は、実インターネット４を介して外部装置との間の通信を制御する。実インターネット４は、外部装置と接続するネットワーク網である。
【００２１】
マルウェア実行環境６は、マルウェアを実行するための環境である。なお、ここで言う「マルウェア」とは、悪意あるソフトウェアの総称である。
【００２２】
マルウェア通信先切り替え装置５は、模擬インターネット装置２と、実インターネット接続装置３と、マルウェア実行環境６とに接続されており、例えば、マルウェア実行環境６と模擬インターネット装置２との間での情報の転送を制御する。また、マルウェア通信先切り替え装置５は、マルウェア実行環境６と実インターネット接続装置３との間での情報の転送を制御する。なお、情報処理システム１において、情報はフレーム形式でやり取りされるものとして説明する。
【００２３】
このような情報処理システム１において、例えば、マルウェア実行環境６は、マルウェアが情報漏えいを試みる可能性のあるデータをハニートークンとして事前に設定しておく。なお、ここで言う「データ」には、プログラム及びプログラムが参照するデータが含まれる。例えば、著名なＦＴＰクライアントが用いる設定ファイルに、解析者が用意したＦＴＰアカウント情報（ＦＴＰサーバ、ユーザ名、パスワード）を書き込んでおく。この際、この設定ファイルに対応付けて、属性情報としてテイントタグを設定しておく。そして、マルウェア実行環境６は、マルウェアを起動し、マルウェア実行環境６が備える仮想ネットワークインタフェース（仮想ＮＩＣ）において送信処理が行われる際に、送信データとともにテイントタグを対応付けてマルウェア通信先切り替え装置５に送信する。
【００２４】
また、マルウェア通信先切り替え装置５は、マルウェア実行環境６から受信したデータと当該データに関連付けられたテイントタグを受信する。そして、マルウェア通信先切り替え装置５は、テイントタグに基づき、データの転送先が模擬インターネット装置２か実インターネット接続装置３かを決定する。例えば、ＦＴＰアカウント情報を示すテイントタグが付与されたデータに関しては、実インターネット接続装置３に転送する。
【００２５】
以下では、模擬インターネット装置２、実インターネット接続装置３、実インターネット４、マルウェア通信先切り替え装置５、及びマルウェア実行環境６のそれぞれが、仮想マシンとして１台の情報処理装置内において実現される場合について説明する。
【００２６】
図２は、情報処理システム１を実現する情報処理装置１０の構成例を示す図である。なお、図２では、情報処理システム１のうちマルウェア通信先切り替え装置５に相当する仮想マシン４０及びマルウェア実行環境６に相当する仮想マシン３０のみを図示している。図２に示すように、情報処理装置１０は、物理マシン２０上において、仮想マシン３０と仮想マシン４０とを実現する。
【００２７】
物理マシン２０は、図示しないハードウェアと、ホストＯＳ（Operating  System）と、仮想マシンソフトウェアとを有する。ハードウェアは、情報処理装置１０を構成する電子回路や周辺機器であり、例えば、メモリ、ＣＰＵ（Central  Processing  Unit）などである。また、ハードウェアは、後述する解析対象プログラム３３とその解析を行うための環境を格納したディスクのイメージファイルを記憶する。つまり、ハードウェアは、仮想マシン３０上で起動させるゲストＯＳ３２のイメージを記憶する。なお、ゲストＯＳ３２については、後述する。同様に、ハードウェアは、後述する解析対象プログラム４３とその解析を行うための環境を格納したディスクのイメージファイルを記憶する。つまり、ハードウェアは、仮想マシン４０上で起動させるゲストＯＳ４２のイメージを記憶する。なお、ゲストＯＳ４２については、後述する。
【００２８】
ホストＯＳは、仮想マシン３０及び仮想マシン４０を動作させる基盤となるＯＳであり、ハードウェアを用いて実行される。仮想マシンソフトウェアは、ホストＯＳ上で動作し、仮想マシン３０及び仮想マシン４０を提供するソフトウェアである。例えば、仮想マシンソフトウェアは、仮想ハードウェア３１をゲストＯＳ３２に割り当てて、仮想マシン３０を動作させる。また、仮想マシンソフトウェアは、仮想ハードウェア４１をゲストＯＳ４２に割り当てて、仮想マシン４０を動作させる。
【００２９】
仮想マシン３０は、例えば、仮想ハードウェア３１と、ゲストＯＳ３２と、解析対象プログラム３３とを有する。仮想ハードウェア３１は、仮想マシンソフトウェアから提供された仮想ディスク、仮想物理メモリ、仮想ＣＰＵなどを用いてゲストＯＳ３２を動作させて、各種処理を実行する仮想的な情報処理装置である。ゲストＯＳ３２は、解析対象プログラム３３を動作させる。解析対象プログラム３３は、情報処理装置１０において解析対象であるプログラムやアプリケーションであり、例えばマルウェアである。
【００３０】
また、仮想ハードウェア３１は、ゲストＯＳ３２を動作させて、各種処理を実行する仮想的な情報処理装置であり、仮想メモリ３４ａ、シャドウメモリ３４ｂ、仮想ディスク３５ａ、シャドウディスク３５ｂ、仮想ＮＩＣ（Network  Interface  Card）３６、仮想ＣＰＵ３７、及びテイントタグ種別情報テーブル３８を有する。なお、仮想メモリ３４ａ、シャドウメモリ３４ｂ、仮想ディスク３５ａ、シャドウディスク３５ｂ、仮想ＮＩＣ３６、仮想ＣＰＵ３７、及びテイントタグ種別情報テーブル３８などは、仮想マシンソフトウェアから提供される。
【００３１】
仮想メモリ３４ａは、情報処理装置１０が有する物理メモリにおける所定領域を仮想マシン３０で動作するゲストＯＳ３２が使用するメモリとして割り当てることで実現された仮想的なメモリである。例えば、仮想メモリ３４ａは、仮想ＣＰＵ３７によって仮想ディスク３５ａから読み出されたプログラムやデータを記憶する。
【００３２】
シャドウメモリ３４ｂは、データが記憶される仮想メモリ３４ａ上の格納位置を特定する情報と、データが監視対象であることを示すテイントタグとを対応付けた位置情報を記憶するデータ構造体である。例えば、シャドウメモリ３４ｂの構造としては、単純な配列構造でもよいし、ツリー構造としてテイントタグを保持してもよい。また、格納する情報としては、テイントタグとしての値を持たせてもよいし、テイント情報を保持させたデータ構造体へのポインタとして持たせてもよい。
【００３３】
図３を用いて、シャドウメモリ３４ｂの一例を説明する。図３は、シャドウメモリ３４ｂに記憶される情報の一例を示す図である。図３に示すように、シャドウメモリ３４ｂは、「データＩＤ」と、「仮想メモリのアドレス」と「テイントタグＩＤ」とを対応付けて記憶する。
【００３４】
ここで、「データＩＤ」は、データの識別子を示す。例えば、「データＩＤ」には、「０００１」、「０００２」等が格納される。また、「仮想メモリのアドレス」は、仮想メモリ３４ａ上の格納位置を示す位置情報である。例えば、「仮想メモリのアドレス」には、「０ｘ００１０」、「０ｘ００２０」等が格納される。「テイントタグＩＤ」は、監視対象であることを識別する識別子である。例えば、「テイントタグＩＤ」には、「１」、「２」等が格納される。
【００３５】
一例をあげると、図３に示すシャドウメモリ３４ｂは、識別子が「０００１」であるデータが、仮想メモリ３４ａのアドレス「０ｘ００１０」に格納されており、テイントタグ「１」が付与されていることを示す。また、図３に示すシャドウメモリ３４ｂは、識別子が「０００２」であるデータが、仮想メモリ３４ａのアドレス「０ｘ００２０」に格納されており、テイントタグ「２」が付与されていることを示す。なお、図３に示した数値等は、あくまで例示であり、値等を限定するものではない。なお、これらのテイントタグは、利用者によって選択されたデータに対して事前に設定される。
【００３６】
仮想ディスク３５ａは、情報処理装置１０が有する物理ディスクにおける所定領域を仮想マシン３０で動作するゲストＯＳ３２が使用する領域として割り当てることで実現された仮想的なディスクである。例えば、仮想ディスク３５ａは、仮想ＣＰＵ３７が実行対象とするプログラムや、プログラムの処理対象となるデータ等を記憶する。
【００３７】
シャドウディスク３５ｂは、データが記憶される仮想ディスク３５ａ上の格納位置を特定する情報と、データが監視対象であることを示すテイントタグとを対応付けた位置情報を記憶するデータ構造体である。例えば、シャドウディスク３５ｂの構造としては、単純な配列構造でもよいし、ツリー構造としてテイントタグを保持してもよい。また、格納する情報としては、テイントタグとしての値を持たせてもよいし、テイント情報を保持させたデータ構造体へのポインタとして持たせてもよい。なお、シャドウディスク３５ｂは、シャドウメモリ３４ｂが記憶する「仮想メモリのアドレス」に代えて、仮想ディスク３５ａ上の格納位置を示す位置情報である「仮想ディスクのアドレス」を記憶する。また、これらのテイントタグは、利用者によって選択されたデータに対して事前に設定される。
【００３８】
テイントタグ種別情報テーブル３８は、テイントタグに対応付けられたデータの転送先を示すテイントタグ種別情報を記憶する。図４は、テイントタグ種別情報テーブル３８が記憶する情報の一例を示す図である。図４に示すように、テイントタグ種別情報テーブル３８は、「テイントタグＩＤ」と、「外部送信ステータス」とを対応付けた情報を記憶する。
【００３９】
ここで、テイントタグ種別情報テーブル３８が記憶する「テイントタグＩＤ」は、テイントタグの識別子を示す。例えば、「テイントタグＩＤ」には、「１」、「２」等の値が格納される。また、テイントタグ種別情報テーブル３８が記憶する「外部送信ステータス」は、実インターネット４を介した外部装置との間の通信を許可されていることを示す「許可」、実インターネット４を介した外部装置との間の通信を許可されていないことを示す「不許可」等が格納される。すなわち、「外部送信ステータス」が「許可」である場合、データは、実インターネット接続装置３に転送され、「外部送信ステータス」が「不許可」である場合、データは、模擬インターネット装置２に転送される。
【００４０】
一例をあげると、図４に示すテイントタグ種別情報テーブル３８は、テイントタグＩＤ「１」が付与されたデータは、実インターネット４を介して外部装置との間の通信を許可されていることを示す。また、図４に示すテイントタグ種別情報テーブル３８は、テイントタグＩＤ「２」が付与されたデータは、実インターネット４を介して外部装置との間の通信を許可されていないことを示す。
【００４１】
仮想ＣＰＵ３７は、情報処理装置１０が有する物理ＣＰＵにおける所定処理能力を仮想マシン３０で動作するゲストＯＳ３２が使用するＣＰＵとして割り当てることで実現された仮想的なＣＰＵである。例えば、仮想ＣＰＵ３７は、図示しない、プログラム実行機能部と、更新機能部とを有する。
【００４２】
また、仮想ＣＰＵ３７は、図示しない仮想レジスタとシャドウレジスタとを有する。仮想レジスタは、情報処理装置１０が有する物理レジスタ・物理メモリ・物理ディスクにおける所定領域を仮想マシン３０で動作するゲストＯＳ３２が使用する領域として割り当てることで実現された仮想的なレジスタである。例えば、仮想レジスタは、仮想ＣＰＵ３７によって仮想メモリ３４ａから読み出されたプログラムやデータを記憶する。また、シャドウレジスタは、データが記憶される仮想レジスタ上の格納位置を特定する情報と、データが監視対象であることを示すテイントタグとを対応付けた位置情報を記憶するデータ構造体である。
【００４３】
プログラム実行機能部は、仮想ディスク３５ａに記憶されるプログラムを実行する処理部である。例えば、プログラム実行機能部は、仮想ディスク３５ａからプログラムを読み出して仮想メモリ３４ａに展開する。つまり、プログラム実行機能部は、実行対象のプログラムを仮想ディスク３５ａから読み出して仮想メモリ３４ａに格納した後、仮想メモリ３４ａに記憶させた実行対象のプログラムを実行する。
【００４４】
更新機能部は、データのフローに応じて、データの格納位置を示す情報と、タグとを対応付けた位置情報を更新する。例えば、更新機能部は、プログラム実行機能部が解析対象プログラム３３を実行している間、データがコピーされて他の記憶領域に格納されたり、他の記憶領域に移動されたりすると、コピー先や移動先となる記憶領域の格納位置に関連付けて、テイントタグを格納する。なお、ここで言う「記憶領域」には、仮想レジスタ、仮想メモリ３４ａ及び仮想ディスク３５ａが含まれる。
【００４５】
より具体的には、更新機能部は、解析対象プログラム３３を実行している最中に生じる仮想レジスタと仮想メモリ３４ａ間及び仮想メモリ３４ａと仮想ディスク３５ａ間のデータのコピーや、演算命令が生じた場合、データのコピー先や移動先となる記憶領域の格納位置に関連付けて、各記憶領域に対応するシャドウレジスタ、シャドウメモリ３４ｂ及びシャドウディスク３５ｂにテイントタグを格納する。言い換えると、更新機能部は、コピー先や移動先となる記憶領域の格納位置に対して、テイントタグを伝搬させる。なお、以下では、シャドウレジスタ、シャドウメモリ３４ｂ及びシャドウディスク３５ｂをあわせてシャドウ領域と呼ぶ場合がある。
【００４６】
仮想ＮＩＣ３６は、ゲストＯＳ３２からＮＩＣとして認識され、物理ＣＰＵで動作するソフトウェアとして実現される。また仮想ＮＩＣ３６が物理ＮＩＣを制御することで、ゲストＯＳ３２は物理ＮＩＣを通じて仮想マシン４０（マルウェア通信先切り替え装置５）と通信することができる。
【００４７】
ここで、仮想ＮＩＣ３６は、マルウェアがデータを送信する際に、送信されるデータと、送信されるデータに付与されたテイントタグとを含んだフレームを生成し、仮想マシン４０（マルウェア通信先切り替え装置５）にフレームを送信する。より具体的には、仮想ＮＩＣ３６は、シャドウメモリ３４ｂ又はシャドウディスク３５ｂを参照して、送信されるデータにテイントタグが付与されている否かを判定する。そして、仮想ＮＩＣ３６は、テイントタグが付与されていると判定した場合には、データとテイントタグとを含んだフレームを生成する。なお、仮想ＮＩＣは、送信されるデータにテイントタグが付与されていないと判定した場合、データを含んだフレームを生成する。
【００４８】
図５及び図６を用いて、仮想ＮＩＣ３６により生成されるフレームについて説明する。図５は、データにテイントタグが付与されていない場合に仮想ＮＩＣ３６により生成されるフレームの構造の一例を示す図であり、図６は、データにテイントタグが付与されている場合に仮想ＮＩＣ３６により生成されるフレームの構造の一例を示す図である。
【００４９】
図５に示すように、フレームは、通常、８バイトの「プリアンブル」、６バイトの「宛先ＭＡＣアドレス」、６バイトの「送信元ＭＡＣアドレス」、２バイトの「タイプ」、４６〜１５００バイトの「データ」、４バイトの「ＦＣＳ」から構成される。仮想ＮＩＣ３６は、データにテイントタグが付与されていない場合、送信されるデータを「データ」に格納する。ここで、仮想ＮＩＣ３６は、データサイズが１５００バイト未満の場合は、データ長がオフセット１５２２バイト目に位置するように、データの直後からオフセット１５２１バイト目までをパディングする。
【００５０】
一方、仮想ＮＩＣ３６は、データにテイントタグが付与されている場合、仮想ＣＰＵ３７からデータの送信要求を受け取ると、送信するデータのサイズを取得する。そして、仮想ＮＩＣ３６は、図６に示すように、データのサイズを２バイトの値として、プリアンブルから数えて（以後オフセットという）１５２２バイト目の「データ長」に設定する。ここで、仮想ＮＩＣ３６は、データサイズが１５００バイト未満の場合は、データ長がオフセット１５２２バイト目に位置するように、データの直後からオフセット１５２１バイト目までをパディングする。なお、データサイズが最大（１５００バイト）のときには、データの直後にデータサイズが位置することになる。
【００５１】
そして、仮想ＮＩＣ３６は、送信するデータが格納されている仮想メモリに対応するシャドウメモリの内容を、オフセット１５２４バイト目以降の「テイントタグ格納領域」に追加し、これをフレームとして送信する。言い換えると、仮想ＮＩＣ３６は、データを送信する際に、データに付与されたテイントタグを所定の最大送信可能サイズを超えたフレーム内の領域に格納する。これは、例えば、仮想ＮＩＣ３６が、データとそれに対応するテイントタグを別のフレームとして送信すると、通信パケット数が倍増してしまい、また、受信側でデータまたはテイントタグが到着した後に、それとペアになるテイントタグまたはデータを待つ処理も必要となるからである。仮想ＮＩＣ３６がデータとテイントタグを同一のフレームに格納することで、こうした問題を解決することができる。テイントタグは送信データ１バイト当たり１バイトを割り当ててもよいし、２５６通り以上のデータの属性を区別する必要がある場合は、送信データ１バイト当たり複数バイトのテイントタグを割り当ててもよい。また、仮想ＮＩＣ３６は、ジャンボ・フレームに非対応であるハードウェアを装うことで、ＯＳが１５００バイトより大きなデータを送信要求するケースを抑制することができる。
【００５２】
続いて、仮想マシン４０について説明する。仮想マシン４０は、例えば、仮想ハードウェア４１と、ゲストＯＳ４２と、解析対象プログラム４３とを有する。仮想ハードウェア４１は、仮想マシンソフトウェアから提供された仮想ディスク、仮想物理メモリ、仮想ＣＰＵなどを用いてゲストＯＳ４２を動作させて、各種処理を実行する仮想的な情報処理装置である。ゲストＯＳ４２は、解析対象プログラム４３を動作させる。解析対象プログラム４３は、情報処理装置１０において解析対象であるプログラムやアプリケーションである。
【００５３】
また、仮想ハードウェア４１は、ゲストＯＳ４２を動作させて、各種処理を実行する仮想的な情報処理装置であり、仮想メモリ４４ａ、シャドウメモリ４４ｂ、仮想ディスク４５ａ、シャドウディスク４５ｂ、仮想ＮＩＣ４６、仮想ＣＰＵ４７、及びテイントタグ種別情報テーブル４８を有する。なお、仮想メモリ４４ａ、シャドウメモリ４４ｂ、仮想ディスク４５ａ、シャドウディスク４５ｂ、仮想ＮＩＣ４６、仮想ＣＰＵ４７、及びテイントタグ種別情報テーブル４８などは、仮想マシンソフトウェアから提供される。
【００５４】
また、仮想ハードウェア４１が有する仮想メモリ４４ａは、仮想ハードウェア３１が有する仮想メモリ３４ａと同様の機能を有し、仮想ハードウェア４１が有するシャドウメモリ４４ｂは、仮想ハードウェア３１が有するシャドウメモリ３４ｂと同様の機能を有する。なお、シャドウメモリ４４ｂには、テイントタグは事前に設定されず、後述する仮想ＣＰＵ４７の格納制御機能部によって設定される。
【００５５】
また、仮想ハードウェア４１が有する仮想ディスク４５ａは、仮想ハードウェア３１が有する仮想ディスク３５ａと同様の機能を有し、仮想ハードウェア４１が有するシャドウディスク４５ｂは、仮想ハードウェア３１が有するシャドウディスク３５ｂと同様の機能を有する。なお、シャドウディスク４５ｂには、テイントタグは事前に設定されず、後述する仮想ＣＰＵ４７の格納制御機能部によって設定される。また、仮想ハードウェア４１が有するテイントタグ種別情報テーブル４８は、仮想ハードウェア３１が有するテイントタグ種別情報テーブル３８と同様の機能を有する。
【００５６】
仮想ＣＰＵ４７は、情報処理装置１０が有する物理ＣＰＵにおける所定処理能力を仮想マシン４０で動作するゲストＯＳ４２が使用するＣＰＵとして割り当てることで実現された仮想的なＣＰＵである。仮想ＣＰＵ４７は、格納制御機能部を更に有する点を除いて、仮想ＣＰＵ３７と同様の機能を有する。
【００５７】
格納制御機能部は、受信したフレームに含まれるデータが抽出され、仮想メモリ４４ａに格納される際に、テイントタグを書き込み先の仮想メモリ４４ａと対応するシャドウメモリ４４ｂに格納する。例えば、格納制御機能部は、受信したデータにテイントタグが付与されている場合には、データとテイントタグとを対応付けてシャドウメモリ４４ｂに格納する。なお、格納制御機能部は、受信したデータにテイントタグが付与されていない場合には、処理を実行しない。また、受信したデータにテイントタグが付与されているか否かに関わらず、仮想ＣＰＵ４７は、受信したデータを仮想メモリ４４ａに格納する。
【００５８】
仮想ＮＩＣ４６は、ゲストＯＳ４２からＮＩＣとして認識され、物理ＣＰＵで動作するソフトウェアとして実現される。また仮想ＮＩＣ４６が物理ＮＩＣを制御することで、ゲストＯＳ４２は物理ＮＩＣを通じて仮想マシン３０（マルウェア実行環境６）、模擬インターネット装置２及び実インターネット接続装置３と通信することができる。
【００５９】
また、ゲストＯＳ４２は、フレームを受信した場合、フレームの転送先を決定し、決定した転送先にフレームを転送する。ゲストＯＳ４２は、図示しない抽出機能部と、転送機能部とを有する。ここで、ゲストＯＳ４２は、ＴＣＰのようなデータを受信するまでに接続確立のためのパケットが交換されるプロトコルの場合は、例えばＴＣＰスリーウェイハンドシェイクを行いＴＣＰのセションを確立することで、通信先を確定する前に、データとそれに対応するテイントタグを受信する。
【００６０】
例えば、ゲストＯＳ４２の抽出機能部は、受信したデータにテイントタグが付与されている否かを判定する。そして、ゲストＯＳ４２の抽出機能部は、テイントタグが付与されていると判定した場合には、受信したフレームからテイントタグを抽出する。そして、ゲストＯＳ４２の転送機能部は、抽出したテイントタグに基づいてフレームの転送先を決定する。
【００６１】
より具体的には、ゲストＯＳ４２の抽出機能部は、受信したフレームのフレーム長を参照し、データにテイントタグが付与されているか否かを判定する。ここで、ゲストＯＳ４２の抽出機能部は、フレーム長が１５２６バイトである場合には、データにテイントタグが付与されていないと判定し、フレーム長が１５２９バイトである場合には、データにテイントタグが付与されていると判定する。
【００６２】
そして、ゲストＯＳ４２の抽出機能部は、データにテイントタグが付与されていると判定した場合、テイントタグを抽出する。例えば、ゲストＯＳ４２の抽出機能部は、フレームのオフセット１５２２バイト目から実データのサイズ分を実データとして抽出する。これにより、仮想ＣＰＵ４７は、抽出された実データを仮想メモリ４４ａにコピーする。また、ゲストＯＳ４２の抽出機能部は、オフセット１５２４バイト目以降からテイントタグを抽出する。これにより、仮想ＣＰＵ４７は、抽出したテイントタグをシャドウメモリ４４ｂにコピーする。これにより、マルウェア実行環境６とマルウェア通信先切り替え装置５との間でのテイントタグの送受信が可能になる。
【００６３】
そして、ゲストＯＳ４２の転送機能部は、テイントタグ種別情報を参照して、抽出されたテイントタグに対応付けられた「外部送信ステータス」を読み出す。ここで、ゲストＯＳ４２の転送機能部は、「外部送信ステータス」が外部装置との間の通信を許可されていることを示す「許可」である場合、受信したフレームを実インターネット接続装置３に転送する。一方、ゲストＯＳ４２の転送機能部は、「外部送信ステータス」が外部装置との間の通信を許可されていないことを示す「不許可」である場合、受信したフレームを模擬インターネット装置２に転送する。また、ゲストＯＳ４２の転送機能部は、データにテイントタグが付与されていない場合には、受信したフレームを転送しない。なお、ゲストＯＳ４２の転送機能部は、データにテイントタグが付与されていない場合には、受信したフレームを、模擬インターネット装置２又は実インターネット接続装置３のいずれか一方に転送するようにしてもよい。
【００６４】
次に、図７を用いて、仮想マシン３０が有する仮想ＮＩＣ３６による処理の手順を説明する。図７は、仮想ＮＩＣ３６によるフレーム生成する処理の手順を示すフローチャートである。図７に示すように、仮想ＮＩＣ３６は、データの送信要求を受付けたか否かを判定する（ステップＳ１０１）。ここで、仮想ＮＩＣ３６は、データの送信要求を受付けなかったと判定した場合（ステップＳ１０１、Ｎｏ）、ステップＳ１０１の判定処理を繰り返す。
【００６５】
一方、仮想ＮＩＣ３６は、データの送信要求を受付けたと判定した場合（ステップＳ１０１、Ｙｅｓ）、データにテイントタグが対応付けられているか否かを判定する（ステップＳ１０２）。ここで、仮想ＮＩＣ３６は、データにテイントタグが対応付けられていると判定した場合（ステップＳ１０２、Ｙｅｓ）、データに対応付けられたテイントタグを読み出す（ステップＳ１０３）。そして、仮想ＮＩＣ３６は、データとテイントタグとを含んだフレームを生成する（ステップＳ１０４）。
【００６６】
一方、仮想ＮＩＣ３６は、データにテイントタグが対応付けられていると判定しなかった場合（ステップＳ１０２、Ｎｏ）、データを含んだフレームを生成する（ステップＳ１０５）。仮想ＮＩＣ３６は、ステップＳ１０４又はステップＳ１０５の後、生成したフレームを仮想マシン４０に送信し（ステップＳ１０６）、処理を終了する。
【００６７】
次に、図８を用いて、仮想マシン４０による処理の手順を説明する。図８は、仮想マシン４０による処理の手順を示すフローチャートである。図８に示すように、仮想マシン４０のゲストＯＳ４２の抽出機能部は、フレームを受信したか否かを判定する（ステップＳ２０１）。ここで、ゲストＯＳ４２の抽出機能部は、フレームを受信したと判定しなかった場合（ステップＳ２０１、Ｎｏ）、ステップＳ２０１の判定処理を繰り返す。
【００６８】
一方、ゲストＯＳ４２の抽出機能部は、フレームを受信したと判定した場合（ステップＳ２０１、Ｙｅｓ）、フレームにテイントタグが含まれているか否かを判定する（ステップＳ２０２）。ここで、ゲストＯＳ４２の抽出機能部は、フレームにテイントタグが含まれていると判定した場合（ステップＳ２０２、Ｙｅｓ）、テイントタグを抽出する（ステップＳ２０３）。続いて、ゲストＯＳ４２は、仮想ＣＰＵ４７にテイントタグ種別情報を要求する（ステップＳ２０４）。なお、ゲストＯＳ４２の抽出機能部は、フレームにテイントタグが含まれていると判定しなかった場合（ステップＳ２０２、Ｎｏ）、処理を終了する。
【００６９】
また、仮想ＣＰＵ４７は、テイントタグ種別情報を要求されたか否かを判定する（ステップＳ２０５）。ここで、仮想ＣＰＵ４７は、テイントタグ種別情報を要求されたと判定した場合（ステップＳ２０５、Ｙｅｓ）、テイントタグ種別情報をゲストＯＳ４２に応答し、データとテイントタグとをゲストＯＳ４２に要求する（ステップＳ２０６）。一方、仮想ＣＰＵ４７は、テイントタグ種別情報を要求されたと判定しなかった場合（ステップＳ２０５、Ｎｏ）、ステップＳ２０５の判定処理を繰り返す。
【００７０】
ゲストＯＳ４２は、テイントタグ種別情報を取得し（ステップＳ２０７）、データとテイントタグとを仮想ＣＰＵ４７に応答する（ステップＳ２０８）。そして、仮想ＣＰＵ４７は、データとテイントタグとを取得する（ステップＳ２０９）。続いて、仮想ＣＰＵ４７の格納制御機能部は、データとテイントタグとを対応付けてシャドウメモリ４４ｂに格納する（ステップＳ２１０）。このように仮想ＣＰＵ４７の格納制御機能部が、データとテイントタグとを対応付けてシャドウメモリ４４ｂに格納しておくことで、例えば、テイントタグを参照し外部へ転送したデータを、事後の解析のために保存しておくことが可能になる。
【００７１】
また、ゲストＯＳ４２の転送機能部は、テイントタグ種別情報を参照してテイントタグを判定し（ステップＳ２１１）、実インターネット接続が許可されているか否かを判定する（ステップＳ２１２）。ここで、ゲストＯＳ４２の転送機能部は、実インターネット接続が許可されていると判定した場合（ステップＳ２１２、Ｙｅｓ）、実インターネット接続装置３にフレームを転送する（ステップＳ２１３）。一方、ゲストＯＳ４２の転送機能部は、実インターネット接続が許可されていると判定しなかった場合（ステップＳ２１２、Ｎｏ）、模擬インターネット装置２にフレームを転送する（ステップＳ２１４）。
【００７２】
上述したように、第１の実施形態に係る情報処理装置１０において、マルウェアを動的解析する際、マルウェア実行環境６におけるテイントタグをネットワークに伝搬させることで、マルウェアの通信先を精度よく切り替える。
【００７３】
ここで、マルウェアの動的解析の際、あえてインターネットに存在する攻撃者と通信を許したいケースと、他者へ被害を及ぼさないように通信を遮断もしくは模擬インターネットに転送したいケースとがある。従来の技術では、通信先が全く未知の宛先である場合や、通信ペイロードが難読化されている場合には、通信先を決定することが困難であった。一方、第１の実施形態に係る情報処理装置１０では、事前にマルウェア実行環境６において、攻撃者に送信したい情報にテイントタグを付与しておき、このテイントタグをマルウェア通信先切り替え装置５に伝える。これにより、マルウェア通信先切り替え装置５は、テイントタグを参照することで、宛先ＩＰアドレスや通信ペイロードに依存せずに、マルウェア通信の宛先を模擬インターネットか実インターネットかを切り替えることができる。
【００７４】
なお、上述した実施形態では、マルウェア通信先切り替え装置５は、テイントタグ種別情報テーブル４８を参照し、外部装置との間の通信を許可されているか否かを判定して転送先を決定するものとして説明したが、実施形態はこれに限定されるものではない。例えば、マルウェア実行環境６は、外部装置との間の通信を許可されているデータに対してのみテイントタグを付与するようにしてもよい。例えば、マルウェア実行環境６は、ＦＴＰアカウント情報についてのみテイントタグを付与する。かかる場合、マルウェア通信先切り替え装置５は、受信したフレームにテイントタグが含まれていた場合、データを実インターネット接続装置３に送信し、テイントタグが存在しない場合は、模擬インターネット装置２に送信する。或いは、マルウェア実行環境６は、外部装置との間の通信を許可されていないデータに対してのみテイントタグを付与するようにしてもよい。例えば、マルウェア実行環境６は、解析対象のマルウェアについてのみテイントタグを付与する。かかる場合、マルウェア通信先切り替え装置５は、受信したフレームにテイントタグが含まれていた場合、模擬インターネット装置２に送信し、テイントタグが存在しない場合は、データを実インターネット接続装置３に送信する。
【００７５】
また、マルウェア通信先切り替え装置５は、宛先ＩＰアドレスや通信ペイロードのチェック結果とテイントタグを組み合わせて、転送先を決定してもよい。
【００７６】
また、上述した実施形態では、仮想ＮＩＣ３６は、図６に示すようにオフセット１５２２バイト目にデータ長を格納しているが、このデータ長を含めずにオフセット１５２２バイト目からテイントタグ格納領域を開始してもよい。この場合、ジャンボ・フレームのサイズから１５２６バイト（１５２２バイト＋ＦＣＳのバイト数）を引いたサイズが、テイントタグ格納領域のサイズとなり、当該サイズから実データのサイズ（データ１バイトあたりテイントタグが１バイトの場合は、テイントタグ格納領域のサイズと等しい）を決定することができる。また、仮想ＮＩＣ３６は、データをパディングせずにフレームを生成してもよい。かかる場合、ジャンボ・フレームのサイズから２８バイト（データまでの２２バイト＋データ長の２バイト＋ＦＣＳの４バイト）を引いたサイズが、データのサイズとテイント格納領域のサイズの和となり、当該サイズから実データのサイズ（データ１バイトあたりテイントタグが１バイトの場合は、当該サイズを２で割った値が実データのサイズとなる）を決定することができる。また、仮想ＮＩＣ３６は、データをパディングせず、かつ、データ長を含めずにフレームを生成してもよい。
【００７７】
また、上述した実施形態では、模擬インターネット装置２、実インターネット接続装置３、実インターネット４、マルウェア通信先切り替え装置５、及びマルウェア実行環境６それぞれが、仮想マシンとして１台の情報処理装置内において実現される場合について説明したが、実施形態はこれに限定されるものではない。例えば、模擬インターネット装置２、実インターネット接続装置３、実インターネット４、マルウェア通信先切り替え装置５、及びマルウェア実行環境６それぞれが、仮想マシンとして複数の情報処理装置において任意の組み合わせで分散して実現されてもよい。或いは、情報処理システム１において、模擬インターネット装置２と、実インターネット接続装置３と、実インターネット４と、マルウェア通信先切り替え装置５と、マルウェア実行環境６とが、それぞれ独立した情報処理装置として実現されてもよい。
【００７８】
（第２の実施形態）
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、その他の実施形態にて実施されてもよい。そこで、以下では、その他の実施形態を示す。
【００７９】
（システム構成）
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８０】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、仮想マシン３０および仮想マシン４０は、それぞれ別個の情報処理装置１０により実現されてもよい。例えば、図１０に示すように、仮想マシン３０は情報処理装置１０ａの物理マシン２０ａにより実現され、仮想マシン４０は情報処理装置１０ｂの物理マシン２０ｂにより実現されてもよい。この場合、仮想マシン３０から送信されるフレームは、情報処理装置１０ａ，１０ｂ間を接続するネットワーク（例えば、インターネット）経由で、仮想マシン４０に到達する。
【００８１】
（プログラム）
また、上記実施例１に係る情報処理装置が実行する処理をコンピュータが実行可能な言語で記述した特定プログラムを作成することもできる。この場合、コンピュータが特定プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。更に、かかる特定プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された特定プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図１等に示した情報処理装置１０と同様の機能を実現する制御プログラムを実行するコンピュータの一例を説明する。
【００８２】
図９は、制御プログラムを実行するコンピュータ１０００を示す図である。図９に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００８３】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０及びキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【００８４】
ここで、図９に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３及びプログラムデータ１０９４を記憶する。上記実施形態で説明した制御プログラムは、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【００８５】
また、制御プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。具体的には、第１のコンピュータに上記実施形態で説明した仮想ＮＩＣ３６と同様の情報処理を実行する送信手順と、第２のコンピュータに上記実施形態で説明したゲストＯＳ４２の抽出機能部と同様の情報処理を実行する抽出手順と、ゲストＯＳ４２の転送機能部と同様の情報処理を実行する転送手順とが記述されたプログラムモジュールが、ハードディスクドライブ１０９０に記憶される。
【００８６】
また、制御プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュールやプログラムデータを必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００８７】
なお、制御プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、制御プログラムに係るプログラムモジュールやプログラムデータは、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００８８】
（その他）
なお、本実施形態で説明した制御プログラムは、インターネットなどのネットワークを介して配布することができる。また、制御プログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【符号の説明】
【００８９】
１０、１０ａ、１０ｂ      情報処理装置
２０、２０ａ、２０ｂ      物理マシン
３０、４０      仮想マシン
３１、４１      仮想ハードウェア
３２、４２      ゲストＯＳ
３３、４３      解析対象プログラム
３４ａ、４４ａ    仮想メモリ
３４ｂ、４４ｂ    シャドウメモリ
３５ａ、４５ａ    仮想ディスク
３５ｂ、４５ｂ    シャドウディスク
３６、４６      仮想ＮＩＣ
３７、４７      仮想ＣＰＵ
３８、４８      テイントタグ種別情報テーブル
１０００  コンピュータ
１０１０  メモリ
１０１１  ＲＯＭ
１０１２  ＲＡＭ
１０２０  ＣＰＵ
１０３０  ハードディスクドライブインタフェース
１０４０  ディスクドライブインタフェース
１０５０  シリアルポートインタフェース
１０６０  ビデオアダプタ
１０７０  ネットワークインタフェース
１０８０  バス
１０９０  ハードディスクドライブ
１０９１  ＯＳ
１０９２  アプリケーションプログラム
１０９３  プログラムモジュール
１０９４  プログラムデータ
１１００  ディスクドライブ
１１１０  マウス
１１２０  キーボード
１１３０  ディスプレイ
【図１】
0006018346.tif 000002
【図２】
0006018346.tif 000003
【図３】
0006018346.tif 000004
【図４】
0006018346.tif 000005
【図５】
0006018346.tif 000006
【図６】
0006018346.tif 000007
【図７】
0006018346.tif 000008
【図８】
0006018346.tif 000009
【図９】
0006018346.tif 000010
【図１０】
0006018346.tif 000011