(58)【調査した分野】(Int.Cl.,DB名)
起動させたマルウェアの挙動を解析する第1の情報処理装置と、前記第1の情報処理装置から送信された送信情報を転送する第2の情報処理装置とを有する情報処理システムにおいて、
前記第1の情報処理装置は、
データと、前記データに付与されたタグ情報とを対応付けて記憶する記憶部と、
前記マルウェアがデータを送信する際に、送信されるデータと、前記送信されるデータに付与されたタグ情報とを含んだ送信情報を生成し、前記第2の情報処理装置に前記送信情報を送信する送信部とを備え、
前記第2の情報処理装置は、
受信した前記送信情報から前記タグ情報を抽出する抽出部と、
抽出された前記タグ情報に基づいて前記送信情報の転送先を決定し、決定した前記転送先に前記送信情報を転送する転送部と
を備えたことを特徴とする情報処理システム。
前記第2の情報処理装置は、受信した前記送信情報に含まれるデータと、前記データに付与されたタグ情報とを対応付けて記憶部に格納する格納制御部を更に備えたことを特徴とする請求項1又は2に記載の情報処理システム。
前記送信部は、前記データを送信する際に、前記データに付与されたタグ情報を所定の最大送信可能サイズを超えたフレーム内の領域に格納することを特徴とする請求項1又は2に記載の情報処理システム。
前記送信部は、前記データを送信する際に、前記データに付与されたタグ情報を所定の最大送信可能サイズを超えたフレーム内の領域に格納することを特徴とする請求項3に記載の情報処理システム。
起動させたマルウェアの挙動を解析する第1の情報処理装置と、前記第1の情報処理装置から送信された送信情報を転送する第2の情報処理装置とを有する情報処理システムで実行される制御方法であって、
前記第1の情報処理装置は、
データと、前記データに付与されたタグ情報とを対応付けて記憶する記憶部を備え、
前記第1の情報処理装置が、
前記マルウェアがデータを送信する際に、送信されるデータと、前記送信されるデータに付与されたタグ情報とを含んだ送信情報を生成し、前記第2の情報処理装置に前記送信情報を送信する送信工程を含み、
前記第2の情報処理装置が、
受信した前記送信情報から前記タグ情報を抽出する抽出工程と、
抽出された前記タグ情報に基づいて前記送信情報の転送先を決定し、決定した前記転送先に前記送信情報を転送する転送工程と
を含んだことを特徴とする制御方法。
起動させたマルウェアの挙動を解析する第1のコンピュータと、前記第1のコンピュータから送信された送信情報を転送する第2のコンピュータとを有する情報処理システムで実行される制御方法をコンピュータに実行させるための制御プログラムであって、
前記第1のコンピュータは、
データと、前記データに付与されたタグ情報とを対応付けて記憶する記憶部を備え、
前記第1のコンピュータに、
前記マルウェアがデータを送信する際に、送信されるデータと、前記送信されるデータに付与されたタグ情報とを含んだ送信情報を生成し、前記第2の情報処理装置に前記送信情報を送信する送信手順を実行させ、
前記第2のコンピュータに、
受信した前記送信情報から前記タグ情報を抽出する抽出手順と、
抽出された前記タグ情報に基づいて前記送信情報の転送先を決定し、決定した前記転送先に前記送信情報を転送する転送手順と
を実行させるための制御プログラム。
【発明を実施するための形態】
【0017】
以下に、開示する情報処理システム、制御方法及び制御プログラムの実施形態について、図面に基づいて詳細に説明する。なお、本実施形態により開示する発明が限定されるものではない。
【0018】
(第1の実施形態)
図1は、情報処理システム1の構成例を示す図である。
図1に示すように、情報処理システム1は、模擬インターネット装置2と、実インターネット接続装置3と、実インターネット4と、マルウェア通信先切り替え装置5と、マルウェア実行環境6とを有する。
【0019】
模擬インターネット装置2は、マルウェア通信先切り替え装置5を介して、マルウェア実行環境6からの通信を受け取り、保存すると同時に通信のプロトコルを判別し、プロトコルに応じたデータを生成する。そして、模擬インターネット装置2は、応答としてマルウェア実行環境6に生成したデータを送信する。模擬インターネット装置2は、このプロトコルに応じたサーバ応答の生成により実現される。
【0020】
実インターネット接続装置3は、実インターネット4を介して外部装置との間の通信を制御する。実インターネット4は、外部装置と接続するネットワーク網である。
【0021】
マルウェア実行環境6は、マルウェアを実行するための環境である。なお、ここで言う「マルウェア」とは、悪意あるソフトウェアの総称である。
【0022】
マルウェア通信先切り替え装置5は、模擬インターネット装置2と、実インターネット接続装置3と、マルウェア実行環境6とに接続されており、例えば、マルウェア実行環境6と模擬インターネット装置2との間での情報の転送を制御する。また、マルウェア通信先切り替え装置5は、マルウェア実行環境6と実インターネット接続装置3との間での情報の転送を制御する。なお、情報処理システム1において、情報はフレーム形式でやり取りされるものとして説明する。
【0023】
このような情報処理システム1において、例えば、マルウェア実行環境6は、マルウェアが情報漏えいを試みる可能性のあるデータをハニートークンとして事前に設定しておく。なお、ここで言う「データ」には、プログラム及びプログラムが参照するデータが含まれる。例えば、著名なFTPクライアントが用いる設定ファイルに、解析者が用意したFTPアカウント情報(FTPサーバ、ユーザ名、パスワード)を書き込んでおく。この際、この設定ファイルに対応付けて、属性情報としてテイントタグを設定しておく。そして、マルウェア実行環境6は、マルウェアを起動し、マルウェア実行環境6が備える仮想ネットワークインタフェース(仮想NIC)において送信処理が行われる際に、送信データとともにテイントタグを対応付けてマルウェア通信先切り替え装置5に送信する。
【0024】
また、マルウェア通信先切り替え装置5は、マルウェア実行環境6から受信したデータと当該データに関連付けられたテイントタグを受信する。そして、マルウェア通信先切り替え装置5は、テイントタグに基づき、データの転送先が模擬インターネット装置2か実インターネット接続装置3かを決定する。例えば、FTPアカウント情報を示すテイントタグが付与されたデータに関しては、実インターネット接続装置3に転送する。
【0025】
以下では、模擬インターネット装置2、実インターネット接続装置3、実インターネット4、マルウェア通信先切り替え装置5、及びマルウェア実行環境6のそれぞれが、仮想マシンとして1台の情報処理装置内において実現される場合について説明する。
【0026】
図2は、情報処理システム1を実現する情報処理装置10の構成例を示す図である。なお、
図2では、情報処理システム1のうちマルウェア通信先切り替え装置5に相当する仮想マシン40及びマルウェア実行環境6に相当する仮想マシン30のみを図示している。
図2に示すように、情報処理装置10は、物理マシン20上において、仮想マシン30と仮想マシン40とを実現する。
【0027】
物理マシン20は、図示しないハードウェアと、ホストOS(Operating System)と、仮想マシンソフトウェアとを有する。ハードウェアは、情報処理装置10を構成する電子回路や周辺機器であり、例えば、メモリ、CPU(Central Processing Unit)などである。また、ハードウェアは、後述する解析対象プログラム33とその解析を行うための環境を格納したディスクのイメージファイルを記憶する。つまり、ハードウェアは、仮想マシン30上で起動させるゲストOS32のイメージを記憶する。なお、ゲストOS32については、後述する。同様に、ハードウェアは、後述する解析対象プログラム43とその解析を行うための環境を格納したディスクのイメージファイルを記憶する。つまり、ハードウェアは、仮想マシン40上で起動させるゲストOS42のイメージを記憶する。なお、ゲストOS42については、後述する。
【0028】
ホストOSは、仮想マシン30及び仮想マシン40を動作させる基盤となるOSであり、ハードウェアを用いて実行される。仮想マシンソフトウェアは、ホストOS上で動作し、仮想マシン30及び仮想マシン40を提供するソフトウェアである。例えば、仮想マシンソフトウェアは、仮想ハードウェア31をゲストOS32に割り当てて、仮想マシン30を動作させる。また、仮想マシンソフトウェアは、仮想ハードウェア41をゲストOS42に割り当てて、仮想マシン40を動作させる。
【0029】
仮想マシン30は、例えば、仮想ハードウェア31と、ゲストOS32と、解析対象プログラム33とを有する。仮想ハードウェア31は、仮想マシンソフトウェアから提供された仮想ディスク、仮想物理メモリ、仮想CPUなどを用いてゲストOS32を動作させて、各種処理を実行する仮想的な情報処理装置である。ゲストOS32は、解析対象プログラム33を動作させる。解析対象プログラム33は、情報処理装置10において解析対象であるプログラムやアプリケーションであり、例えばマルウェアである。
【0030】
また、仮想ハードウェア31は、ゲストOS32を動作させて、各種処理を実行する仮想的な情報処理装置であり、仮想メモリ34a、シャドウメモリ34b、仮想ディスク35a、シャドウディスク35b、仮想NIC(Network Interface Card)36、仮想CPU37、及びテイントタグ種別情報テーブル38を有する。なお、仮想メモリ34a、シャドウメモリ34b、仮想ディスク35a、シャドウディスク35b、仮想NIC36、仮想CPU37、及びテイントタグ種別情報テーブル38などは、仮想マシンソフトウェアから提供される。
【0031】
仮想メモリ34aは、情報処理装置10が有する物理メモリにおける所定領域を仮想マシン30で動作するゲストOS32が使用するメモリとして割り当てることで実現された仮想的なメモリである。例えば、仮想メモリ34aは、仮想CPU37によって仮想ディスク35aから読み出されたプログラムやデータを記憶する。
【0032】
シャドウメモリ34bは、データが記憶される仮想メモリ34a上の格納位置を特定する情報と、データが監視対象であることを示すテイントタグとを対応付けた位置情報を記憶するデータ構造体である。例えば、シャドウメモリ34bの構造としては、単純な配列構造でもよいし、ツリー構造としてテイントタグを保持してもよい。また、格納する情報としては、テイントタグとしての値を持たせてもよいし、テイント情報を保持させたデータ構造体へのポインタとして持たせてもよい。
【0033】
図3を用いて、シャドウメモリ34bの一例を説明する。
図3は、シャドウメモリ34bに記憶される情報の一例を示す図である。
図3に示すように、シャドウメモリ34bは、「データID」と、「仮想メモリのアドレス」と「テイントタグID」とを対応付けて記憶する。
【0034】
ここで、「データID」は、データの識別子を示す。例えば、「データID」には、「0001」、「0002」等が格納される。また、「仮想メモリのアドレス」は、仮想メモリ34a上の格納位置を示す位置情報である。例えば、「仮想メモリのアドレス」には、「0x0010」、「0x0020」等が格納される。「テイントタグID」は、監視対象であることを識別する識別子である。例えば、「テイントタグID」には、「1」、「2」等が格納される。
【0035】
一例をあげると、
図3に示すシャドウメモリ34bは、識別子が「0001」であるデータが、仮想メモリ34aのアドレス「0x0010」に格納されており、テイントタグ「1」が付与されていることを示す。また、
図3に示すシャドウメモリ34bは、識別子が「0002」であるデータが、仮想メモリ34aのアドレス「0x0020」に格納されており、テイントタグ「2」が付与されていることを示す。なお、
図3に示した数値等は、あくまで例示であり、値等を限定するものではない。なお、これらのテイントタグは、利用者によって選択されたデータに対して事前に設定される。
【0036】
仮想ディスク35aは、情報処理装置10が有する物理ディスクにおける所定領域を仮想マシン30で動作するゲストOS32が使用する領域として割り当てることで実現された仮想的なディスクである。例えば、仮想ディスク35aは、仮想CPU37が実行対象とするプログラムや、プログラムの処理対象となるデータ等を記憶する。
【0037】
シャドウディスク35bは、データが記憶される仮想ディスク35a上の格納位置を特定する情報と、データが監視対象であることを示すテイントタグとを対応付けた位置情報を記憶するデータ構造体である。例えば、シャドウディスク35bの構造としては、単純な配列構造でもよいし、ツリー構造としてテイントタグを保持してもよい。また、格納する情報としては、テイントタグとしての値を持たせてもよいし、テイント情報を保持させたデータ構造体へのポインタとして持たせてもよい。なお、シャドウディスク35bは、シャドウメモリ34bが記憶する「仮想メモリのアドレス」に代えて、仮想ディスク35a上の格納位置を示す位置情報である「仮想ディスクのアドレス」を記憶する。また、これらのテイントタグは、利用者によって選択されたデータに対して事前に設定される。
【0038】
テイントタグ種別情報テーブル38は、テイントタグに対応付けられたデータの転送先を示すテイントタグ種別情報を記憶する。
図4は、テイントタグ種別情報テーブル38が記憶する情報の一例を示す図である。
図4に示すように、テイントタグ種別情報テーブル38は、「テイントタグID」と、「外部送信ステータス」とを対応付けた情報を記憶する。
【0039】
ここで、テイントタグ種別情報テーブル38が記憶する「テイントタグID」は、テイントタグの識別子を示す。例えば、「テイントタグID」には、「1」、「2」等の値が格納される。また、テイントタグ種別情報テーブル38が記憶する「外部送信ステータス」は、実インターネット4を介した外部装置との間の通信を許可されていることを示す「許可」、実インターネット4を介した外部装置との間の通信を許可されていないことを示す「不許可」等が格納される。すなわち、「外部送信ステータス」が「許可」である場合、データは、実インターネット接続装置3に転送され、「外部送信ステータス」が「不許可」である場合、データは、模擬インターネット装置2に転送される。
【0040】
一例をあげると、
図4に示すテイントタグ種別情報テーブル38は、テイントタグID「1」が付与されたデータは、実インターネット4を介して外部装置との間の通信を許可されていることを示す。また、
図4に示すテイントタグ種別情報テーブル38は、テイントタグID「2」が付与されたデータは、実インターネット4を介して外部装置との間の通信を許可されていないことを示す。
【0041】
仮想CPU37は、情報処理装置10が有する物理CPUにおける所定処理能力を仮想マシン30で動作するゲストOS32が使用するCPUとして割り当てることで実現された仮想的なCPUである。例えば、仮想CPU37は、図示しない、プログラム実行機能部と、更新機能部とを有する。
【0042】
また、仮想CPU37は、図示しない仮想レジスタとシャドウレジスタとを有する。仮想レジスタは、情報処理装置10が有する物理レジスタ・物理メモリ・物理ディスクにおける所定領域を仮想マシン30で動作するゲストOS32が使用する領域として割り当てることで実現された仮想的なレジスタである。例えば、仮想レジスタは、仮想CPU37によって仮想メモリ34aから読み出されたプログラムやデータを記憶する。また、シャドウレジスタは、データが記憶される仮想レジスタ上の格納位置を特定する情報と、データが監視対象であることを示すテイントタグとを対応付けた位置情報を記憶するデータ構造体である。
【0043】
プログラム実行機能部は、仮想ディスク35aに記憶されるプログラムを実行する処理部である。例えば、プログラム実行機能部は、仮想ディスク35aからプログラムを読み出して仮想メモリ34aに展開する。つまり、プログラム実行機能部は、実行対象のプログラムを仮想ディスク35aから読み出して仮想メモリ34aに格納した後、仮想メモリ34aに記憶させた実行対象のプログラムを実行する。
【0044】
更新機能部は、データのフローに応じて、データの格納位置を示す情報と、タグとを対応付けた位置情報を更新する。例えば、更新機能部は、プログラム実行機能部が解析対象プログラム33を実行している間、データがコピーされて他の記憶領域に格納されたり、他の記憶領域に移動されたりすると、コピー先や移動先となる記憶領域の格納位置に関連付けて、テイントタグを格納する。なお、ここで言う「記憶領域」には、仮想レジスタ、仮想メモリ34a及び仮想ディスク35aが含まれる。
【0045】
より具体的には、更新機能部は、解析対象プログラム33を実行している最中に生じる仮想レジスタと仮想メモリ34a間及び仮想メモリ34aと仮想ディスク35a間のデータのコピーや、演算命令が生じた場合、データのコピー先や移動先となる記憶領域の格納位置に関連付けて、各記憶領域に対応するシャドウレジスタ、シャドウメモリ34b及びシャドウディスク35bにテイントタグを格納する。言い換えると、更新機能部は、コピー先や移動先となる記憶領域の格納位置に対して、テイントタグを伝搬させる。なお、以下では、シャドウレジスタ、シャドウメモリ34b及びシャドウディスク35bをあわせてシャドウ領域と呼ぶ場合がある。
【0046】
仮想NIC36は、ゲストOS32からNICとして認識され、物理CPUで動作するソフトウェアとして実現される。また仮想NIC36が物理NICを制御することで、ゲストOS32は物理NICを通じて仮想マシン40(マルウェア通信先切り替え装置5)と通信することができる。
【0047】
ここで、仮想NIC36は、マルウェアがデータを送信する際に、送信されるデータと、送信されるデータに付与されたテイントタグとを含んだフレームを生成し、仮想マシン40(マルウェア通信先切り替え装置5)にフレームを送信する。より具体的には、仮想NIC36は、シャドウメモリ34b又はシャドウディスク35bを参照して、送信されるデータにテイントタグが付与されている否かを判定する。そして、仮想NIC36は、テイントタグが付与されていると判定した場合には、データとテイントタグとを含んだフレームを生成する。なお、仮想NICは、送信されるデータにテイントタグが付与されていないと判定した場合、データを含んだフレームを生成する。
【0048】
図5及び
図6を用いて、仮想NIC36により生成されるフレームについて説明する。
図5は、データにテイントタグが付与されていない場合に仮想NIC36により生成されるフレームの構造の一例を示す図であり、
図6は、データにテイントタグが付与されている場合に仮想NIC36により生成されるフレームの構造の一例を示す図である。
【0049】
図5に示すように、フレームは、通常、8バイトの「プリアンブル」、6バイトの「宛先MACアドレス」、6バイトの「送信元MACアドレス」、2バイトの「タイプ」、46〜1500バイトの「データ」、4バイトの「FCS」から構成される。仮想NIC36は、データにテイントタグが付与されていない場合、送信されるデータを「データ」に格納する。ここで、仮想NIC36は、データサイズが1500バイト未満の場合は、データ長がオフセット1522バイト目に位置するように、データの直後からオフセット1521バイト目までをパディングする。
【0050】
一方、仮想NIC36は、データにテイントタグが付与されている場合、仮想CPU37からデータの送信要求を受け取ると、送信するデータのサイズを取得する。そして、仮想NIC36は、
図6に示すように、データのサイズを2バイトの値として、プリアンブルから数えて(以後オフセットという)1522バイト目の「データ長」に設定する。ここで、仮想NIC36は、データサイズが1500バイト未満の場合は、データ長がオフセット1522バイト目に位置するように、データの直後からオフセット1521バイト目までをパディングする。なお、データサイズが最大(1500バイト)のときには、データの直後にデータサイズが位置することになる。
【0051】
そして、仮想NIC36は、送信するデータが格納されている仮想メモリに対応するシャドウメモリの内容を、オフセット1524バイト目以降の「テイントタグ格納領域」に追加し、これをフレームとして送信する。言い換えると、仮想NIC36は、データを送信する際に、データに付与されたテイントタグを所定の最大送信可能サイズを超えたフレーム内の領域に格納する。これは、例えば、仮想NIC36が、データとそれに対応するテイントタグを別のフレームとして送信すると、通信パケット数が倍増してしまい、また、受信側でデータまたはテイントタグが到着した後に、それとペアになるテイントタグまたはデータを待つ処理も必要となるからである。仮想NIC36がデータとテイントタグを同一のフレームに格納することで、こうした問題を解決することができる。テイントタグは送信データ1バイト当たり1バイトを割り当ててもよいし、256通り以上のデータの属性を区別する必要がある場合は、送信データ1バイト当たり複数バイトのテイントタグを割り当ててもよい。また、仮想NIC36は、ジャンボ・フレームに非対応であるハードウェアを装うことで、OSが1500バイトより大きなデータを送信要求するケースを抑制することができる。
【0052】
続いて、仮想マシン40について説明する。仮想マシン40は、例えば、仮想ハードウェア41と、ゲストOS42と、解析対象プログラム43とを有する。仮想ハードウェア41は、仮想マシンソフトウェアから提供された仮想ディスク、仮想物理メモリ、仮想CPUなどを用いてゲストOS42を動作させて、各種処理を実行する仮想的な情報処理装置である。ゲストOS42は、解析対象プログラム43を動作させる。解析対象プログラム43は、情報処理装置10において解析対象であるプログラムやアプリケーションである。
【0053】
また、仮想ハードウェア41は、ゲストOS42を動作させて、各種処理を実行する仮想的な情報処理装置であり、仮想メモリ44a、シャドウメモリ44b、仮想ディスク45a、シャドウディスク45b、仮想NIC46、仮想CPU47、及びテイントタグ種別情報テーブル48を有する。なお、仮想メモリ44a、シャドウメモリ44b、仮想ディスク45a、シャドウディスク45b、仮想NIC46、仮想CPU47、及びテイントタグ種別情報テーブル48などは、仮想マシンソフトウェアから提供される。
【0054】
また、仮想ハードウェア41が有する仮想メモリ44aは、仮想ハードウェア31が有する仮想メモリ34aと同様の機能を有し、仮想ハードウェア41が有するシャドウメモリ44bは、仮想ハードウェア31が有するシャドウメモリ34bと同様の機能を有する。なお、シャドウメモリ44bには、テイントタグは事前に設定されず、後述する仮想CPU47の格納制御機能部によって設定される。
【0055】
また、仮想ハードウェア41が有する仮想ディスク45aは、仮想ハードウェア31が有する仮想ディスク35aと同様の機能を有し、仮想ハードウェア41が有するシャドウディスク45bは、仮想ハードウェア31が有するシャドウディスク35bと同様の機能を有する。なお、シャドウディスク45bには、テイントタグは事前に設定されず、後述する仮想CPU47の格納制御機能部によって設定される。また、仮想ハードウェア41が有するテイントタグ種別情報テーブル48は、仮想ハードウェア31が有するテイントタグ種別情報テーブル38と同様の機能を有する。
【0056】
仮想CPU47は、情報処理装置10が有する物理CPUにおける所定処理能力を仮想マシン40で動作するゲストOS42が使用するCPUとして割り当てることで実現された仮想的なCPUである。仮想CPU47は、格納制御機能部を更に有する点を除いて、仮想CPU37と同様の機能を有する。
【0057】
格納制御機能部は、受信したフレームに含まれるデータが抽出され、仮想メモリ44aに格納される際に、テイントタグを書き込み先の仮想メモリ44aと対応するシャドウメモリ44bに格納する。例えば、格納制御機能部は、受信したデータにテイントタグが付与されている場合には、データとテイントタグとを対応付けてシャドウメモリ44bに格納する。なお、格納制御機能部は、受信したデータにテイントタグが付与されていない場合には、処理を実行しない。また、受信したデータにテイントタグが付与されているか否かに関わらず、仮想CPU47は、受信したデータを仮想メモリ44aに格納する。
【0058】
仮想NIC46は、ゲストOS42からNICとして認識され、物理CPUで動作するソフトウェアとして実現される。また仮想NIC46が物理NICを制御することで、ゲストOS42は物理NICを通じて仮想マシン30(マルウェア実行環境6)、模擬インターネット装置2及び実インターネット接続装置3と通信することができる。
【0059】
また、ゲストOS42は、フレームを受信した場合、フレームの転送先を決定し、決定した転送先にフレームを転送する。ゲストOS42は、図示しない抽出機能部と、転送機能部とを有する。ここで、ゲストOS42は、TCPのようなデータを受信するまでに接続確立のためのパケットが交換されるプロトコルの場合は、例えばTCPスリーウェイハンドシェイクを行いTCPのセションを確立することで、通信先を確定する前に、データとそれに対応するテイントタグを受信する。
【0060】
例えば、ゲストOS42の抽出機能部は、受信したデータにテイントタグが付与されている否かを判定する。そして、ゲストOS42の抽出機能部は、テイントタグが付与されていると判定した場合には、受信したフレームからテイントタグを抽出する。そして、ゲストOS42の転送機能部は、抽出したテイントタグに基づいてフレームの転送先を決定する。
【0061】
より具体的には、ゲストOS42の抽出機能部は、受信したフレームのフレーム長を参照し、データにテイントタグが付与されているか否かを判定する。ここで、ゲストOS42の抽出機能部は、フレーム長が1526バイトである場合には、データにテイントタグが付与されていないと判定し、フレーム長が1529バイトである場合には、データにテイントタグが付与されていると判定する。
【0062】
そして、ゲストOS42の抽出機能部は、データにテイントタグが付与されていると判定した場合、テイントタグを抽出する。例えば、ゲストOS42の抽出機能部は、フレームのオフセット1522バイト目から実データのサイズ分を実データとして抽出する。これにより、仮想CPU47は、抽出された実データを仮想メモリ44aにコピーする。また、ゲストOS42の抽出機能部は、オフセット1524バイト目以降からテイントタグを抽出する。これにより、仮想CPU47は、抽出したテイントタグをシャドウメモリ44bにコピーする。これにより、マルウェア実行環境6とマルウェア通信先切り替え装置5との間でのテイントタグの送受信が可能になる。
【0063】
そして、ゲストOS42の転送機能部は、テイントタグ種別情報を参照して、抽出されたテイントタグに対応付けられた「外部送信ステータス」を読み出す。ここで、ゲストOS42の転送機能部は、「外部送信ステータス」が外部装置との間の通信を許可されていることを示す「許可」である場合、受信したフレームを実インターネット接続装置3に転送する。一方、ゲストOS42の転送機能部は、「外部送信ステータス」が外部装置との間の通信を許可されていないことを示す「不許可」である場合、受信したフレームを模擬インターネット装置2に転送する。また、ゲストOS42の転送機能部は、データにテイントタグが付与されていない場合には、受信したフレームを転送しない。なお、ゲストOS42の転送機能部は、データにテイントタグが付与されていない場合には、受信したフレームを、模擬インターネット装置2又は実インターネット接続装置3のいずれか一方に転送するようにしてもよい。
【0064】
次に、
図7を用いて、仮想マシン30が有する仮想NIC36による処理の手順を説明する。
図7は、仮想NIC36によるフレーム生成する処理の手順を示すフローチャートである。
図7に示すように、仮想NIC36は、データの送信要求を受付けたか否かを判定する(ステップS101)。ここで、仮想NIC36は、データの送信要求を受付けなかったと判定した場合(ステップS101、No)、ステップS101の判定処理を繰り返す。
【0065】
一方、仮想NIC36は、データの送信要求を受付けたと判定した場合(ステップS101、Yes)、データにテイントタグが対応付けられているか否かを判定する(ステップS102)。ここで、仮想NIC36は、データにテイントタグが対応付けられていると判定した場合(ステップS102、Yes)、データに対応付けられたテイントタグを読み出す(ステップS103)。そして、仮想NIC36は、データとテイントタグとを含んだフレームを生成する(ステップS104)。
【0066】
一方、仮想NIC36は、データにテイントタグが対応付けられていると判定しなかった場合(ステップS102、No)、データを含んだフレームを生成する(ステップS105)。仮想NIC36は、ステップS104又はステップS105の後、生成したフレームを仮想マシン40に送信し(ステップS106)、処理を終了する。
【0067】
次に、
図8を用いて、仮想マシン40による処理の手順を説明する。
図8は、仮想マシン40による処理の手順を示すフローチャートである。
図8に示すように、仮想マシン40のゲストOS42の抽出機能部は、フレームを受信したか否かを判定する(ステップS201)。ここで、ゲストOS42の抽出機能部は、フレームを受信したと判定しなかった場合(ステップS201、No)、ステップS201の判定処理を繰り返す。
【0068】
一方、ゲストOS42の抽出機能部は、フレームを受信したと判定した場合(ステップS201、Yes)、フレームにテイントタグが含まれているか否かを判定する(ステップS202)。ここで、ゲストOS42の抽出機能部は、フレームにテイントタグが含まれていると判定した場合(ステップS202、Yes)、テイントタグを抽出する(ステップS203)。続いて、ゲストOS42は、仮想CPU47にテイントタグ種別情報を要求する(ステップS204)。なお、ゲストOS42の抽出機能部は、フレームにテイントタグが含まれていると判定しなかった場合(ステップS202、No)、処理を終了する。
【0069】
また、仮想CPU47は、テイントタグ種別情報を要求されたか否かを判定する(ステップS205)。ここで、仮想CPU47は、テイントタグ種別情報を要求されたと判定した場合(ステップS205、Yes)、テイントタグ種別情報をゲストOS42に応答し、データとテイントタグとをゲストOS42に要求する(ステップS206)。一方、仮想CPU47は、テイントタグ種別情報を要求されたと判定しなかった場合(ステップS205、No)、ステップS205の判定処理を繰り返す。
【0070】
ゲストOS42は、テイントタグ種別情報を取得し(ステップS207)、データとテイントタグとを仮想CPU47に応答する(ステップS208)。そして、仮想CPU47は、データとテイントタグとを取得する(ステップS209)。続いて、仮想CPU47の格納制御機能部は、データとテイントタグとを対応付けてシャドウメモリ44bに格納する(ステップS210)。このように仮想CPU47の格納制御機能部が、データとテイントタグとを対応付けてシャドウメモリ44bに格納しておくことで、例えば、テイントタグを参照し外部へ転送したデータを、事後の解析のために保存しておくことが可能になる。
【0071】
また、ゲストOS42の転送機能部は、テイントタグ種別情報を参照してテイントタグを判定し(ステップS211)、実インターネット接続が許可されているか否かを判定する(ステップS212)。ここで、ゲストOS42の転送機能部は、実インターネット接続が許可されていると判定した場合(ステップS212、Yes)、実インターネット接続装置3にフレームを転送する(ステップS213)。一方、ゲストOS42の転送機能部は、実インターネット接続が許可されていると判定しなかった場合(ステップS212、No)、模擬インターネット装置2にフレームを転送する(ステップS214)。
【0072】
上述したように、第1の実施形態に係る情報処理装置10において、マルウェアを動的解析する際、マルウェア実行環境6におけるテイントタグをネットワークに伝搬させることで、マルウェアの通信先を精度よく切り替える。
【0073】
ここで、マルウェアの動的解析の際、あえてインターネットに存在する攻撃者と通信を許したいケースと、他者へ被害を及ぼさないように通信を遮断もしくは模擬インターネットに転送したいケースとがある。従来の技術では、通信先が全く未知の宛先である場合や、通信ペイロードが難読化されている場合には、通信先を決定することが困難であった。一方、第1の実施形態に係る情報処理装置10では、事前にマルウェア実行環境6において、攻撃者に送信したい情報にテイントタグを付与しておき、このテイントタグをマルウェア通信先切り替え装置5に伝える。これにより、マルウェア通信先切り替え装置5は、テイントタグを参照することで、宛先IPアドレスや通信ペイロードに依存せずに、マルウェア通信の宛先を模擬インターネットか実インターネットかを切り替えることができる。
【0074】
なお、上述した実施形態では、マルウェア通信先切り替え装置5は、テイントタグ種別情報テーブル48を参照し、外部装置との間の通信を許可されているか否かを判定して転送先を決定するものとして説明したが、実施形態はこれに限定されるものではない。例えば、マルウェア実行環境6は、外部装置との間の通信を許可されているデータに対してのみテイントタグを付与するようにしてもよい。例えば、マルウェア実行環境6は、FTPアカウント情報についてのみテイントタグを付与する。かかる場合、マルウェア通信先切り替え装置5は、受信したフレームにテイントタグが含まれていた場合、データを実インターネット接続装置3に送信し、テイントタグが存在しない場合は、模擬インターネット装置2に送信する。或いは、マルウェア実行環境6は、外部装置との間の通信を許可されていないデータに対してのみテイントタグを付与するようにしてもよい。例えば、マルウェア実行環境6は、解析対象のマルウェアについてのみテイントタグを付与する。かかる場合、マルウェア通信先切り替え装置5は、受信したフレームにテイントタグが含まれていた場合、模擬インターネット装置2に送信し、テイントタグが存在しない場合は、データを実インターネット接続装置3に送信する。
【0075】
また、マルウェア通信先切り替え装置5は、宛先IPアドレスや通信ペイロードのチェック結果とテイントタグを組み合わせて、転送先を決定してもよい。
【0076】
また、上述した実施形態では、仮想NIC36は、
図6に示すようにオフセット1522バイト目にデータ長を格納しているが、このデータ長を含めずにオフセット1522バイト目からテイントタグ格納領域を開始してもよい。この場合、ジャンボ・フレームのサイズから1526バイト(1522バイト+FCSのバイト数)を引いたサイズが、テイントタグ格納領域のサイズとなり、当該サイズから実データのサイズ(データ1バイトあたりテイントタグが1バイトの場合は、テイントタグ格納領域のサイズと等しい)を決定することができる。また、仮想NIC36は、データをパディングせずにフレームを生成してもよい。かかる場合、ジャンボ・フレームのサイズから28バイト(データまでの22バイト+データ長の2バイト+FCSの4バイト)を引いたサイズが、データのサイズとテイント格納領域のサイズの和となり、当該サイズから実データのサイズ(データ1バイトあたりテイントタグが1バイトの場合は、当該サイズを2で割った値が実データのサイズとなる)を決定することができる。また、仮想NIC36は、データをパディングせず、かつ、データ長を含めずにフレームを生成してもよい。
【0077】
また、上述した実施形態では、模擬インターネット装置2、実インターネット接続装置3、実インターネット4、マルウェア通信先切り替え装置5、及びマルウェア実行環境6それぞれが、仮想マシンとして1台の情報処理装置内において実現される場合について説明したが、実施形態はこれに限定されるものではない。例えば、模擬インターネット装置2、実インターネット接続装置3、実インターネット4、マルウェア通信先切り替え装置5、及びマルウェア実行環境6それぞれが、仮想マシンとして複数の情報処理装置において任意の組み合わせで分散して実現されてもよい。或いは、情報処理システム1において、模擬インターネット装置2と、実インターネット接続装置3と、実インターネット4と、マルウェア通信先切り替え装置5と、マルウェア実行環境6とが、それぞれ独立した情報処理装置として実現されてもよい。
【0078】
(第2の実施形態)
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、その他の実施形態にて実施されてもよい。そこで、以下では、その他の実施形態を示す。
【0079】
(システム構成)
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0080】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、仮想マシン30および仮想マシン40は、それぞれ別個の情報処理装置10により実現されてもよい。例えば、
図10に示すように、仮想マシン30は情報処理装置10aの物理マシン20aにより実現され、仮想マシン40は情報処理装置10bの物理マシン20bにより実現されてもよい。この場合、仮想マシン30から送信されるフレームは、情報処理装置10a,10b間を接続するネットワーク(例えば、インターネット)経由で、仮想マシン40に到達する。
【0081】
(プログラム)
また、上記実施例1に係る情報処理装置が実行する処理をコンピュータが実行可能な言語で記述した特定プログラムを作成することもできる。この場合、コンピュータが特定プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。更に、かかる特定プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された特定プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、
図1等に示した情報処理装置10と同様の機能を実現する制御プログラムを実行するコンピュータの一例を説明する。
【0082】
図9は、制御プログラムを実行するコンピュータ1000を示す図である。
図9に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0083】
メモリ1010は、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110及びキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
【0084】
ここで、
図9に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093及びプログラムデータ1094を記憶する。上記実施形態で説明した制御プログラムは、例えばハードディスクドライブ1090やメモリ1010に記憶される。
【0085】
また、制御プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、第1のコンピュータに上記実施形態で説明した仮想NIC36と同様の情報処理を実行する送信手順と、第2のコンピュータに上記実施形態で説明したゲストOS42の抽出機能部と同様の情報処理を実行する抽出手順と、ゲストOS42の転送機能部と同様の情報処理を実行する転送手順とが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
【0086】
また、制御プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM1012に読み出して、上述した各手順を実行する。
【0087】
なお、制御プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、制御プログラムに係るプログラムモジュールやプログラムデータは、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0088】
(その他)
なお、本実施形態で説明した制御プログラムは、インターネットなどのネットワークを介して配布することができる。また、制御プログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。