JP2013232113A - Information processing apparatus, monitoring method, and monitoring program - Google Patents
Information processing apparatus, monitoring method, and monitoring program Download PDFInfo
- Publication number
- JP2013232113A JP2013232113A JP2012104028A JP2012104028A JP2013232113A JP 2013232113 A JP2013232113 A JP 2013232113A JP 2012104028 A JP2012104028 A JP 2012104028A JP 2012104028 A JP2012104028 A JP 2012104028A JP 2013232113 A JP2013232113 A JP 2013232113A
- Authority
- JP
- Japan
- Prior art keywords
- program
- stored
- monitoring target
- identifier
- virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
Description
本発明は、情報処理装置、監視方法および監視プログラムに関する。 The present invention relates to an information processing apparatus, a monitoring method, and a monitoring program.
従来、仮想マシン上で動作するゲストOS(Operating System)のように、物理的または仮想的に隔離された汎用OSなどの隔離環境で監視対象プログラムを実行し、監視対象プログラムの挙動を監視するプログラム解析手法が知られている。 Conventionally, a program that executes a monitored program in an isolated environment such as a general-purpose OS that is physically or virtually isolated, such as a guest OS (Operating System) operating on a virtual machine, and monitors the behavior of the monitored program Analytical methods are known.
例えば、監視対象プログラムが発行するAPI(Application Program Interface)を監視し、API列と各APIに渡される引数により、監視対象プログラムの挙動を把握することが行われている。また、APIの代わりにシステムコールの発行を監視することも行われている。また、監視対象プログラムがアクセスするメモリアドレスを収集し、収集した情報を使ってプログラムを解析することも知られている。また、監視対象プログラムが実行する命令列を収集し、収集した情報を使ってプログラムを解析することも行われている。 For example, an API (Application Program Interface) issued by the monitoring target program is monitored, and the behavior of the monitoring target program is grasped by an API string and an argument passed to each API. In addition, the issuing of a system call is monitored instead of the API. It is also known to collect memory addresses accessed by a monitored program and analyze the program using the collected information. In addition, a series of instructions executed by the monitoring target program is collected, and the program is analyzed using the collected information.
そして、汎用OS上で動作するプログラムが監視対象か監視対象外かを識別する手法としては、プロセスID(PID)を利用する手法が一般的に知られている。例えば、APIを発行したプロセスのPIDと、予め記憶しておいた監視対象プログラムのPIDと比較し、監視対象プログラムから発行されたAPIか否かを識別することが行われている。また、PIDの代わりに各プロセスを識別する識別子としてCR3レジスタの値を利用する手法も知られている。 As a method for identifying whether a program operating on a general-purpose OS is a monitoring target or a non-monitoring target, a method using a process ID (PID) is generally known. For example, the PID of the process that issued the API is compared with the PID of the monitoring target program stored in advance to identify whether the API is issued from the monitoring target program. In addition, a method of using the value of the CR3 register as an identifier for identifying each process instead of PID is also known.
しかしながら、従来のPIDやCR3レジスタの値に基づく手法では、監視対象プログラムの誤識別が発生する場合があり、識別精度が必ずしも高くないという問題がある。 However, in the conventional method based on the value of the PID or CR3 register, there is a case that the monitoring target program may be erroneously identified, and the identification accuracy is not necessarily high.
例えば、PIDやCR3レジスタの値で監視対象プログラムを識別する手法では、コードインジェクションやファイル感染などの悪意のある手法が利用されると、検知漏れや誤り検知が発生してしまう。コードインジェクションとは、自身のコードを他のプロセスに注入し、注入されたプロセス内で悪意のある行動を行う手法である。ファイル感染とは、自身以外の実行形式のファイルに感染し、感染されたファイルが実行された場合に、自身の悪意のある動作も一緒に開始する手法である。 For example, in the method of identifying the monitoring target program by the value of the PID or CR3 register, if a malicious method such as code injection or file infection is used, detection omission and error detection occur. Code injection is a technique that injects its own code into another process and performs malicious actions within the injected process. File infection is a method in which when a file of an executable format other than itself is infected and the infected file is executed, its malicious operation is started together.
例えば、PIDで監視対象のAPIを特定する状況で、コードインジェクションによって、監視対象のプロセスからコードが注入された感染プロセスがAPIを発行した場合について説明する。この場合、コードが注入された感染プロセスのPIDが監視対象外に設定されていると、この感染プロセスから発行されたAPIは、本来監視対象となるはずが監視対象外と識別される。また、コードインジェクションでは、注入先のプロセスを監視対象に入れると、そのプロセスの正規の動作で発行されるAPIも監視してしまう。つまり、コードインジェクションによって、誤り検知や検知漏れが発生する。 For example, a case where an infection process in which a code is injected from a process to be monitored issues an API by code injection in a situation where the API to be monitored is specified by PID will be described. In this case, if the PID of the infected process into which the code is injected is set as a non-monitoring target, the API issued from this infected process is identified as a non-monitoring target that should originally be a monitoring target. In addition, in code injection, when an injection destination process is set as a monitoring target, an API issued by a normal operation of the process is also monitored. In other words, error detection and omission of detection occur due to code injection.
また、ファイル感染の場合、監視対象のPIDを有するプログラムがファイル感染によって不正なプログラムを付与された場合、元々のプログラムと不正なプログラムとが同じPIDで動作することになるので、APIが混在し、正確に識別することができない。つまり、元々のプログラムと不正なプログラムの区別ができず、全てを監視対象とするか、全てを監視対象外とするか、の2択しかないことで、誤り検知や検知漏れが発生する。 In the case of file infection, if a program having a PID to be monitored is given an unauthorized program due to file infection, the original program and the unauthorized program operate with the same PID. Can not be identified accurately. In other words, the original program and the illegal program cannot be distinguished, and there are only two options, ie, whether all are to be monitored or all not to be monitored, so that error detection or detection omission occurs.
本発明は、上記に鑑みてなされたものであって、監視対象プログラムか否かを識別する精度を向上させることができる情報処理装置、監視方法および監視プログラムを提供することを目的とする。 The present invention has been made in view of the above, and an object thereof is to provide an information processing apparatus, a monitoring method, and a monitoring program that can improve the accuracy of identifying whether or not the program is a monitoring target program.
上述した課題を解決し、目的を達成するために、本発明に係る情報処理装置は、監視対象のプログラムが記憶されるメモリ上の格納位置を特定する位置情報と、監視対象であることを識別する識別子とを対応付けて保持する保持部と、前記メモリに記憶されるプログラムが実行される場合に、実行されるプログラムを記憶する前記位置情報に対応付けて前記識別子が、前記保持部に保持されているか否かを判定する判定部と、前記判定部によって前記識別子が保持されていると判定された場合に、前記実行されるプログラムを監視対象と決定する決定部とを有する。 In order to solve the above-described problems and achieve the object, the information processing apparatus according to the present invention identifies position information specifying a storage position on a memory in which a program to be monitored is stored, and the monitoring target. A holding unit that associates and holds an identifier to be executed, and when the program stored in the memory is executed, the identifier is held in the holding unit in association with the position information that stores the program to be executed. A determination unit that determines whether or not the identifier is held by the determination unit; and a determination unit that determines the program to be executed as a monitoring target when the determination unit determines that the identifier is held.
本発明にかかる情報処理装置、監視方法および監視プログラムは、監視対象プログラムか否かを識別する精度を向上させることができるという効果を奏する。 The information processing apparatus, the monitoring method, and the monitoring program according to the present invention have an effect that the accuracy of identifying whether the program is a monitoring target program can be improved.
以下に、本発明にかかる情報処理装置、監視方法および監視プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。 Embodiments of an information processing apparatus, a monitoring method, and a monitoring program according to the present invention will be described below in detail with reference to the drawings. In addition, this invention is not limited by this embodiment.
[第1の実施形態]
[全体構成]
図1は、情報処理装置の全体構成を示す図である。図1に示すように、情報処理装置は、ハードウェア1、ホストOS2、仮想マシンソフトウェア3、仮想マシン10、仮想マシン20を有する。
[First Embodiment]
[overall structure]
FIG. 1 is a diagram illustrating the overall configuration of the information processing apparatus. As illustrated in FIG. 1, the information processing apparatus includes
ハードウェア1は、情報処理装置を構成する電子回路や周辺機器であり、例えば、メモリ、CPU(Central Processing Unit)などである。ホストOS2は、仮想マシンを動作させる基盤となるOSであり、ハードウェア1を用いて実行される。仮想マシンソフトウェア3は、ハードウェア1を用いて仮想マシンを提供するソフトウェアであり、ここでは、仮想マシン10と仮想マシン20とを動作させる。例えば、仮想マシンソフトウェア3は、仮想ディスク、仮想物理メモリ、仮想CPUなどをゲストOSに割当てて、仮想マシンを動作させる。
The
仮想マシン10と仮想マシン20は、仮想マシンソフトウェア3から提供された仮想ディスク、仮想物理メモリ、仮想CPUなどを用いてゲストOSを動作させて、各種処理を実行する仮想的な情報処理装置である。
The
このような構成において、情報処理装置は、隔離された環境である仮想マシン10または仮想マシン20内で、挙動を解析する対象となるプログラムを監視する。具体的には、各仮想マシンは、監視対象のプログラムが記憶される仮想物理メモリ上の格納位置を特定する位置情報と、監視対象であることを識別するテイントタグとを対応付けて保持する。各仮想マシンは、仮想物理メモリに記憶されるプログラムが実行される場合に、実行されるプログラムを記憶する位置情報に対応付けてテイントタグが保持されているか否かを判定する。そして、各仮想マシンは、テイントタグが保持されていると判定された場合に、実行する当該プログラムを監視対象と決定する。
In such a configuration, the information processing apparatus monitors a program whose behavior is to be analyzed in the
このように、情報処理装置は、プログラムの挙動解析をする場合においてプログラムの実行を監視する際に、テイントタグがついているプログラムが実行されていた場合は監視対象とし、テイントタグがついていないときは監視対象外とする。この結果、情報処理装置は、正確に監視対象と対象外のプログラムの区別を行うことができ、監視対象プログラムか否かを識別する精度を向上させることができる。 In this way, the information processing apparatus, when analyzing the program behavior, monitors the execution of the program, if a program with a taint tag is being executed, and if it is not attached with a taint tag, It is outside. As a result, the information processing apparatus can accurately distinguish between the monitoring target program and the non-target program, and the accuracy of identifying whether the program is the monitoring target program can be improved.
[仮想マシンの構成]
次に、図1に示した情報処理装置において監視対象プログラムを監視する仮想マシンの構成を説明する。なお、ハードウェア1、ホストOS2、仮想マシンソフトウェア3については、一般的な構成と同様の構成を有するので、詳細な説明は省略する。また、仮想マシン10と仮想マシン20は、同様の構成を有するので、ここでは、仮想マシン10を例にして説明する。
Virtual machine configuration
Next, the configuration of the virtual machine that monitors the monitoring target program in the information processing apparatus shown in FIG. 1 will be described. Since the
図2は、仮想マシンの機能構成例を示す機能ブロック図である。図2に示すように、仮想マシン10は、仮想物理メモリ10a、シャドウメモリ10b、仮想ディスク11a、シャドウディスク11b、仮想CPU12、仮想HWコントローラ18を有する。
FIG. 2 is a functional block diagram illustrating a functional configuration example of the virtual machine. As shown in FIG. 2, the
仮想物理メモリ10aは、情報処理装置が有する物理メモリにおける所定領域を仮想マシン10で動作するゲストOSが使用するメモリとして割り当てることで実現された仮想的なメモリである。例えば、仮想物理メモリ10aは、仮想CPU12によって仮想ディスク11aから読み出されたプログラムやデータを記憶する。
The virtual
シャドウメモリ10bは、監視対象であることを示すテイントタグと、監視対象のプログラムが記憶される仮想物理メモリ10a上の格納位置を特定する位置情報とを対応付けて記憶するデータ構造体である。例えば、シャドウメモリ10bの構造としては、単純な配列構造でもよいし、ツリー構造としてテイントタグを保持してもよい。また、格納する情報としては、テイントタグとしての値を持たせてもよいし、テイント情報を保持させたデータ構造体へのポインタとして持たせてもよい。このシャドウメモリ10bは、パフォーマンスやメモリ消費量などによって任意に実装形態を変更することができる。
The
例えば、パフォーマンスを重視する場合、仮想物理メモリ10aと同等のサイズの領域を予め用意し、それをシャドウメモリとして利用することができる。一方、メモリ消費量を抑えたい場合は、テイントタグを設定したデータに関する要素のみを保持させることもできる。テイントタグのサイズは、どれほどの種類のデータを識別したいかに依存する。例えば、1種類だけのタグでよければ、1ビットで識別すればよく、256種類を識別する場合には、8ビットのサイズを用いる。また、データ構造体へのポインタとしてテイントタグを持たせる場合は、アドレスのサイズ分をサイズとして用いることもできる。なお、メモリ上の位置は、仮想アドレスで指定してもよいし、物理アドレスで指定してもよく、その他でも格納位置を特定できる位置情報であればよい。
For example, when performance is important, an area having the same size as the virtual
ここで、シャドウメモリ10bの一例を説明する。図3は、シャドウメモリに記憶される情報の例を示す図である。図3に示すように、シャドウメモリ10bは、「仮想物理メモリのアドレス」と2ビットの「テイントタグ」とを対応付けて記憶する。「仮想物理メモリのアドレス」は、仮想物理メモリ10a上の格納位置を示す位置情報であり、「テイントタグ」は、監視対象であることを識別する識別子である。また、ここでは、「テイントタグ」の2ビット情報が「1」である場合には、監視対象のデータがプログラムのコードであることを示す。
Here, an example of the
図3の場合、仮想物理メモリ10aのアドレス「0000から0200」に格納されている監視対象のプログラムコードに対して、テイントタグ「11」が付与されていることを示す。また、仮想物理メモリ10aのアドレス「0310から0350」に格納されている監視対象のデータに対して、テイントタグ「05」が付与されていることを示す。なお、図3に示した数値等は、あくまで例示であり、値等を限定するものではない。
In the case of FIG. 3, the taint tag “11” is given to the monitoring target program code stored in the addresses “0000 to 0200” of the virtual
仮想ディスク11aは、情報処理装置が有する物理ディスクにおける所定領域を仮想マシン10で動作するゲストOSが使用する領域として割り当てることで実現された仮想的なディスクである。例えば、仮想ディスク11aは、仮想CPU12が実行対象とするプログラムや、プログラムの処理対象となるデータ等を記憶する。
The virtual disk 11a is a virtual disk realized by allocating a predetermined area in a physical disk included in the information processing apparatus as an area used by the guest OS operating in the
シャドウディスク11bは、監視対象であることを示すテイントタグと、監視対象のプログラムが記憶される仮想ディスク11a上の格納位置を特定する位置情報とを対応付けて記憶するデータ構造体である。例えば、シャドウディスク11bの構造としては、単純な配列構造でもよいし、ツリー構造としてテイントタグを保持してもよい。また、格納する情報としては、テイントタグとしての値を持たせてもよいし、テイント情報を保持させたデータ構造体へのポインタとして持たせてもよい。このシャドウディスク11bは、シャドウメモリ10bと同様、パフォーマンスやメモリ消費量などによって任意に実装形態を変更することができる。
The shadow disk 11b is a data structure that stores a taint tag indicating that it is a monitoring target and position information that specifies a storage position on the virtual disk 11a in which the program to be monitored is stored in association with each other. For example, the structure of the shadow disk 11b may be a simple arrangement structure, or a taint tag may be held as a tree structure. Moreover, as the information to be stored, a value as a taint tag may be given, or as a pointer to a data structure holding taint information. As with the
ここで、シャドウディスク11bの一例を説明する。図4は、シャドウディスクに記憶される情報の例を示す図である。図4に示すように、シャドウディスク11bは、「仮想ディスクのアドレス」と2ビットの「テイントタグ」とを対応付けて記憶する。「仮想ディスクのアドレス」は、仮想ディスク11a上の格納位置を示す位置情報であり、「テイントタグ」は、監視対象であることを識別する識別子である。また、ここでは、「テイントタグ」の2ビット情報が「1」である場合には、監視対象のデータがプログラムのコードであることを示す。 Here, an example of the shadow disk 11b will be described. FIG. 4 is a diagram illustrating an example of information stored in the shadow disk. As shown in FIG. 4, the shadow disk 11b stores a “virtual disk address” and a 2-bit “taint tag” in association with each other. The “virtual disk address” is position information indicating the storage position on the virtual disk 11a, and the “taint tag” is an identifier for identifying the monitoring target. Here, when the 2-bit information of the “taint tag” is “1”, it indicates that the data to be monitored is the code of the program.
図4の場合、仮想ディスク11aのアドレス「1000から1200」に格納されている監視対象のプログラムコードに対して、テイントタグ「17」が付与されていることを示す。また、仮想ディスク11aのアドレス「1410から1450」に格納されている監視対象のデータに対して、テイントタグ「05」が付与されていることを示す。なお、図4に示した数値等は、あくまで例示であり、値等を限定するものではない。 In the case of FIG. 4, the taint tag “17” is given to the monitoring target program code stored in the addresses “1000 to 1200” of the virtual disk 11a. Further, it indicates that the taint tag “05” is given to the monitoring target data stored in the addresses “1410 to 1450” of the virtual disk 11a. Note that the numerical values shown in FIG. 4 are merely examples, and the values are not limited.
仮想CPU12は、情報処理装置が有する物理CPUにおける所定処理能力を仮想マシン10で動作するゲストOSが使用するCPUとして割り当てることで実現された仮想的なCPUである。この仮想CPU12は、プログラム実行部13、テイントタグ付与部14、判定部15、書込み監視部16、挙動監視部17を有し、これらによって各種処理を実行する。
The
プログラム実行部13は、仮想ディスク11aに記憶されるプログラムを実行する処理部である。例えば、プログラム実行部13は、仮想ディスク11aからプログラムを読み出して仮想物理メモリ10aに展開する。つまり、プログラム実行部13は、実行対象のプログラムを仮想ディスク11aから読み出して仮想物理メモリ10aに格納した後、仮想物理メモリ10aに記憶させた実行対象のプログラムを実行する。
The
テイントタグ付与部14は、プログラム実行部13によって仮想物理メモリ10a上に展開されるプログラムが監視対象である場合に、テイントタグを付与する処理部である。例えば、テイントタグ付与部14は、プログラム実行部13が仮想物理メモリ10aにプログラムを格納したことを検知すると、当該プログラムが監視対象であるか否かを判定する。そして、テイントタグ付与部14は、監視対象であると判定した場合、当該プログラムが格納された仮想物理メモリ10a上の位置に特定し、特定した位置に対応するシャドウメモリ10b上のエントリにテイントタグを格納する。
The taint tag assigning unit 14 is a processing unit that assigns a taint tag when a program developed on the virtual
一例を挙げると、テイントタグ付与部14は、監視対象のプログラムにおいて実行される命令の集合であるコード部分が記憶された仮想物理メモリ10a上のアドレスとして、「0150〜0160」を特定する。そして、テイントタグ付与部14は、特定したアドレス「0150〜0160」に対してテイントタグ「14」を付与する。その後、テイントタグ付与部14は、特定したアドレス「0150〜0160」と、付与したテイントタグ「14」とを対応付けてシャドウメモリ10bに格納する。
For example, the taint tag assigning unit 14 specifies “0150 to 0160” as an address on the virtual
なお、監視対象であるか否かを判定する手法は、公知の様々な手法を用いることができる。例えば、予め監視対象のプログラム名等を指定しておき、仮想物理メモリ10aに展開されたプログラムが予め指定したプログラムと一致するか否かによって、監視対象か否かを判定することもできる。また、プログラム内を走査し、監視対象として指定される命令を含んでいる場合に、監視対象と判定することもできる。また、付与するテイントタグは、任意の値を設定することができる。
Note that various known methods can be used as a method for determining whether or not the object is a monitoring target. For example, the name of a program to be monitored can be specified in advance, and it can be determined whether or not it is a monitoring target based on whether or not the program loaded in the virtual
判定部15は、実行されたプログラムが監視対象か否かを判定する処理部である。具体的には、判定部15は、シャドウメモリ10bを参照し、実行されたプログラムが格納される仮想物理メモリ10a上の位置情報に対応付けて、監視対象を表すテイントタグが格納されている場合に、監視対象であると判定する。そして、判定部15は、実行されたプログラムが監視対象であることを挙動監視部17に通知する。
The
一例を挙げると、判定部15は、プログラム実行部13が仮想物理メモリ10aのアドレス「0000〜0200」からプログラムを読み出したことを検知すると、読み出し先のアドレス「0000〜0200」を特定する。そして、判定部15は、シャドウメモリ10bを参照し、アドレス「0000〜0200」に対応付けてテイントタグ「11」が格納されていることを特定する。すると、判定部15は、アドレス「0000〜0200」から読み出されて実行されたプログラムを監視対象と判定する。
For example, when the
書込み監視部16は、仮想物理メモリ10aへのデータ書き込みを監視し、監視対象のデータが書き込まれた場合に、書き込まれたデータにテイントタグを付与する処理部である。具体的には、書込み監視部16は、監視対象と決定されたプログラムが仮想物理メモリ10aにデータを書き込んだ場合に、書き込まれたデータが格納される位置に対応するシャドウメモリ10b上のエントリにテイントタグを格納する。すなわち、書込み監視部16は、データを書き込んだ命令がテイントタグに対応付けられたプログラムコードに含まれる命令である場合に、書き込まれたデータを監視対象と判定する。
The
一例を挙げると、書込み監視部16は、仮想物理メモリ10aへのデータが書き込まれたことを検知すると、当該データを書き込んだプログラムを特定する。そして、書込み監視部16は、特定したプログラムの格納先を示すアドレス「0000〜0200」を仮想物理メモリ10a等から特定する。続いて、書込み監視部16は、シャドウメモリ10bを参照し、特定したアドレス「0000〜0200」に対応付けてテイントタグ「11」が格納されていると判定する。この場合、書込み監視部16は、テイントタグが付与されたプログラムによってデータが書き込まれたことになるので、書き込まれたデータを監視対象と判定する。
For example, when the writing
すると、書込み監視部16は、仮想物理メモリ10aを参照して、データが書き込まれたアドレス「0010〜0012」を抽出し、抽出したアドレス「0010〜0012」にテイントタグ「04」を付与する。そして、書込み監視部16は、抽出したアドレス「0010〜0012」と、付与したテイントタグ「04」とを対応付けて、シャドウメモリ10bに格納する。このとき、書込み監視部16は、書き込んだプログラムのテイントタグと同一の値を、書き込まれたデータのテイントタグとして付与してもよい。
Then, the
一方、書込み監視部16は、データ書き込みを行ったプログラムの格納先がアドレス「0500〜0600」である場合には、シャドウメモリ10bに対応するテイントタグが格納されていないので、書き込まれたデータを監視対象外と判定する。なお、書込み監視部16は、プログラムが仮想物理メモリ10aに新たに書き込まれたデータや、仮想ディスク11aから読み出して仮想物理メモリ10aに書き込まれたデータについて、監視対象か否かを判定する。
On the other hand, when the storage destination of the program to which data has been written is the address “0500 to 0600”, the
また、書込み監視部16は、仮想ディスク11a等から読み出されたデータが仮想物理メモリ10aに書き込まれ、書き込まれたデータに対するテイントタグがシャドウディスク11bに格納されていた場合には、書き込まれたデータを監視対象と判定する。そして、書込み監視部16は、書き込まれた仮想物理メモリ10a上のアドレスにテイントタグを付与して、シャドウメモリ10bに格納する。すなわち、書込み監視部16は、シャドウディスク11bからシャドウメモリ10bへのテイントタグを伝搬させる。このとき、書込み監視部16は、書き込まれたデータに元々付与されていたテイントタグと同一の値を、書き込まれたデータのテイントタグとして付与してもよい。
The
挙動監視部17は、監視対象のプログラムの挙動を監視する処理部である。例えば、挙動監視部17は、監視対象のプログラムが実行されてから終了するまでの時間、アクセスしたデータやレジストリ、生成したデータやレジストリ値等を収集し、プログラムの挙動を監視する。一例を挙げると、挙動監視部17は、監視対象プログラムが発行するAPIやシステムコールを監視し、API列と各APIに渡される引数により、監視対象プログラムの挙動を把握する。また、挙動監視部17は、監視対象プログラムがアクセスするメモリアドレスを収集し、収集した情報を使ってプログラムを解析する。また、監視対象プログラムが実行する命令列を収集し、収集した情報を使ってプログラムを解析する。
The
仮想HWコントローラ18は、仮想ディスク11aと仮想物理メモリ10aとの間、シャドウディスク11bとシャドウメモリ10bとの間のデータ送受信を制御する処理部である。例えば、仮想HWコントローラ18は、プログラム実行部13が仮想ディスク11aから読み出したプログラムを仮想物理メモリ10aに格納する。また、仮想HWコントローラ18は、プログラム等によって仮想物理メモリ10aから読み出されたデータを仮想ディスク11aに格納する。このような仮想HWコントローラ18は、テイントタグの伝搬を実行するテイント情報伝搬部18aを有する。
The
テイント情報伝搬部18aは、仮想ディスク11aへのデータ書き込みを監視し、監視対象のデータが書き込まれた場合に、書き込まれたデータにテイントタグを付与する処理部である。すなわち、テイント情報伝搬部18aは、シャドウメモリ10bからシャドウディスク11bへのテイントタグを伝搬させる。具体的には、テイント情報伝搬部18aは、監視対象と決定されたプログラムが仮想ディスク11aにデータを書き込んだ場合に、書き込まれたデータが格納される位置に対応するシャドウディスク11b上のエントリにテイントタグを格納する。
The taint
なお、テイント情報伝搬部18aが実行する処理の内容は、書込み監視部16と同様なので、詳細な説明は省略する。簡単に説明すると、テイント情報伝搬部18aは、仮想物理メモリ10a等から読み出されたデータが仮想ディスク11aに書き込まれ、書き込まれたデータに対するテイントタグがシャドウメモリ10bに格納されていた場合には、書き込まれたデータを監視対象と判定する。そして、テイント情報伝搬部18aは、書き込まれた仮想ディスク11a上のアドレスにテイントタグを付与して、シャドウディスク11bに格納する。このとき、テイント情報伝搬部18aは、書き込まれたデータに元々付与されていたテイントタグと同一の値を、書き込まれたデータのテイントタグとして付与してもよい。
Note that the content of the process executed by the taint
[テイントタグの伝搬]
次に、図5と図6を用いて、テイントタグの伝搬例を説明する。ここでは、まず、図5を用いてシャドウメモリ10bと仮想物理メモリ10aとの関係性を説明し、次に、図6を用いてテイントタグの伝搬例を説明する。
[Propagation of taint tag]
Next, an example of taint tag propagation will be described with reference to FIGS. Here, first, the relationship between the
図5は、シャドウメモリと仮想物理メモリとの関係性を示す図である。この図は、シャドウメモリ10bにおけるテイントタグの管理例である。また、シャドウディスク11bと仮想ディスク11aについても、ここで説明する関係性と同様の関係性を有する。
FIG. 5 is a diagram illustrating the relationship between the shadow memory and the virtual physical memory. This figure is an example of managing taint tags in the
図5に示すように、プログラム実行部13が仮想ディスク11aから監視対象のプログラムAを読み出して仮想物理メモリ10aに展開したとする。ここでは、プログラムAのコード部が仮想ディスク11aの0200番地から0400番地に格納され、データ部が0401番地から0500番地に格納され、ヒープ部が0501番地から0600番地に格納されたとする。すると、テイントタグ付与部14は、プログラムAのコード部が格納されるアドレス「0200番地から0400番地」に対応するシャドウメモリ10b上のアドレス「0200番地から0400番地」にテイントタグ「15」を格納する。このようにすることで、プログラムAが監視対象に設定される。
As shown in FIG. 5, it is assumed that the
また、図5では、データXが格納される仮想物理メモリ10aのアドレス「0800番地から0820番地」に対応するシャドウメモリ10b上のアドレス「0800番地から0820番地」にテイントタグ「05」が格納されている。このため、データXも監視対象に設定されている。一方で、データYが格納される仮想物理メモリ10aのアドレス「0715番地から0720番地」に対応するシャドウメモリ10b上のアドレス「0715番地から0720番地」にテイントタグが格納されていない。このため、データYは監視対象外に設定されている。
Further, in FIG. 5, the taint tag “05” is stored in the address “address 0800 to address 0820” on the
続いて、テイントタグの伝搬例を説明する。図6は、テイントタグの伝搬例を説明する図である。図6に示すように、仮想ディスクのアドレス「4000番地から4020番地」に格納されるデータX1には、シャドウディスク11b上のアドレス「4000番地から4020番地」にテイントタグ「09」が格納されている。このため、データX1は監視対象である。 Next, an example of taint tag propagation will be described. FIG. 6 is a diagram for explaining an example of propagation of a taint tag. As shown in FIG. 6, in the data X1 stored at the virtual disk address “addresses 4000 to 4020”, the taint tag “09” is stored at the address “addresses 4000 to 4020” on the shadow disk 11b. . For this reason, the data X1 is a monitoring target.
このような状態において、データX1が、仮想ディスク11aから読み出されて仮想物理メモリ10a上のアドレス「0690番地から0710番地」に格納されたとする。この場合、書込み監視部16は、データX1にテイントタグが付与されていることから、仮想物理メモリ10aに書き込まれたデータX1についても監視対象と判定する。この結果、書込み監視部16は、仮想物理メモリ10a上のアドレス「0690番地から0710番地」に対応するシャドウメモリ10b上のアドレス「0690番地から0710番地」にテイントタグ「09」を格納する。
In such a state, it is assumed that the data X1 is read from the virtual disk 11a and stored in addresses “addresses 0690 to 0710” on the virtual
さらにその後、仮想物理メモリ10a上のアドレス「0690番地から0710番地」に格納されるデータX1がデータX2に更新されて、仮想ディスク11a上のアドレス「4000番地から4020番地」に格納されたとする。この場合、書込み監視部16は、更新前のデータX1にテイントタグが付与されていることから、更新後のデータX2についても監視対象と判定する。この結果、書込み監視部16は、仮想ディスク11a上のアドレス「4000番地から4020番地」に対応するシャドウディスク11b上のアドレス「4000番地から4020番地」にテイントタグ「09」を格納する。このようにして、一度監視対象と判定されたデータについては、テイントタグを伝搬させることで、監視し続けることができる。
Thereafter, it is assumed that the data X1 stored at addresses “0690 to 0710” on the virtual
また、別例として、監視対象のプログラムAが、仮想物理メモリ10a上のアドレス「0110番地から0150番地」にデータZを書き込んだとする。この場合、書込み監視部16は、データZを書き込んだプログラムAが監視対象であることから、書き込まれたデータZについても監視対象と判定する。この結果、書込み監視部16は、データZが書き込まれた仮想物理メモリ10a上のアドレス「0110番地から0150番地」に対応するシャドウメモリ10b上のアドレス「0110番地から0150番地」にテイントタグ「03」を格納する。
As another example, it is assumed that the program A to be monitored has written the data Z at addresses “0110 to 0150” on the virtual
さらにその後、仮想物理メモリ10a上のアドレス「0110番地から0150番地」に格納されるデータZが、仮想ディスク11a上のアドレス「2280番地から2320番地」に格納されたとする。この場合、書込み監視部16は、データZにテイントタグが元々付与されていることから、仮想ディスク11aに書き込まれたデータZについても監視対象と判定する。この結果、書込み監視部16は、仮想ディスク11a上のアドレス「2280番地から2320」に対応するシャドウディスク11b上のアドレス「2280番地から2320」にテイントタグ「03」を格納する。
Further, it is assumed that data Z stored at addresses “0110 to 0150” on the virtual
[処理の流れ]
次に、実行対象のプログラムを仮想ディスク11aから仮想物理メモリ10aにロードした場合の処理、挙動解析処理、データの書込みが発生した場合の処理の各々について説明する。
[Process flow]
Next, a description will be given of each of processing when a program to be executed is loaded from the virtual disk 11a to the virtual
(ロードした場合の処理)
図7は、実行対象のプログラムを実行した場合の処理の流れを示すフローチャートである。図7に示すように、仮想マシン10のプログラム実行部13は、実行対象のプログラムを仮想ディスク11aから仮想物理メモリ10aにロードする(S101)。
(Processing when loading)
FIG. 7 is a flowchart showing the flow of processing when the execution target program is executed. As shown in FIG. 7, the
そして、テイントタグ付与部14は、ロードされたプログラムが監視対象のプログラムか否かを判定する(S102)。なお、テイントタグ付与部14は、ロードされたプログラムが監視対象のプログラムではないと判定した場合(S102No)、処理を終了する。 Then, the taint tag assigning unit 14 determines whether or not the loaded program is a program to be monitored (S102). If the taint tag assigning unit 14 determines that the loaded program is not a program to be monitored (No in S102), the process ends.
一方、テイントタグ付与部14は、ロードされたプログラムが監視対象のプログラムであると判定した場合(S102Yes)、監視対象のプログラムがロードされた仮想物理メモリ10a上の位置情報を特定する(S103)。
On the other hand, when it is determined that the loaded program is a monitoring target program (Yes in S102), the taint tag assigning unit 14 specifies position information on the virtual
続いて、テイントタグ付与部14は、特定した位置情報にテイントタグを付与し(S104)、位置情報とテイントタグとを対応付けてシャドウメモリ10bに格納する(S105)。そして、挙動監視部17は、シャドウメモリ10bに格納されたプログラムを監視対象に設定し(S106)、プログラム実行部13は、仮想物理メモリ10aにロードしたプログラムを実行する(S107)。
Subsequently, the taint tag assigning unit 14 assigns a taint tag to the specified position information (S104), and associates the position information with the taint tag and stores them in the
(挙動解析処理)
図8は、挙動解析処理の流れを示すフローチャートである。なお、ここでは、メモリ上へのデータアクセスが発生した場合にアクセス元が監視対象であるか否かを判定して挙動解析を実行する例を説明するが、ディスクであっても同様に処理することができる。
(Behavior analysis processing)
FIG. 8 is a flowchart showing the flow of behavior analysis processing. In this example, when data access to the memory occurs, an example is described in which the behavior analysis is performed by determining whether the access source is a monitoring target. be able to.
図8に示すように、仮想マシン10の判定部15は、仮想物理メモリ10aに格納されるデータへのアクセスが発生した場合(S201Yes)、データのアクセス元の位置情報を特定する(S202)。
As shown in FIG. 8, when the access to the data stored in the virtual
続いて、判定部15は、シャドウメモリ10bを参照し、特定した位置情報にテイントタグが対応付けられているか判定する(S203)。すなわち、判定部15は、データにアクセスした命令にテイントタグが付与されているか否かを判定する。そして、挙動監視部17は、判定部15によって位置情報にテイントタグが対応付けられていると判定された場合(S204Yes)、監視対象の命令がデータにアクセスしたこと示すログを生成して保持する(S205)。例えば、挙動監視部17は、アクセスした日時、データにアクセスした命令、当該命令の格納位置、当該命令がアクセスしたデータ、当該データの格納位置等をログとして抽出する。このようにして抽出されたログは、挙動監視部17による挙動解析に用いられる。
Subsequently, the
一方、判定部15は、位置情報にテイントタグが対応付けられていないと判定された場合(S204No)、アクセス元が監視対象外であると判定して、処理を終了する。
On the other hand, when it is determined that the taint tag is not associated with the position information (No in S204), the
(データの書込みが発生した場合の処理)
図9は、メモリへのデータ書込みが発生した場合の処理の流れを示すフローチャートである。なお、ここでは、メモリ上へのデータアクセスを例にして説明するが、ディスク上のデータについても同様に処理することができる。
(Process when data writing occurs)
FIG. 9 is a flowchart showing a processing flow when data writing to the memory occurs. In this example, data access to the memory is described as an example, but data on the disk can be processed in the same manner.
図9に示すように、仮想マシン10の書込み監視部16は、仮想物理メモリ10aへのデータ書込みが発生した場合(S301Yes)、データを書き込んだプログラムが格納される仮想物理メモリ10a上の位置情報を特定する(S302)。
As shown in FIG. 9, when the data writing to the virtual
続いて、書込み監視部16は、シャドウメモリ10bを参照し、データを書き込んだプログラムが格納される位置情報にテイントタグが対応付けられているか判定する(S303)。なお、書込み監視部16は、当該プログラムの位置情報にテイントタグが対応付けられていないと判定した場合(S304No)、処理を終了する。
Subsequently, the
一方、書込み監視部16は、当該プログラムの位置情報にテイントタグが対応付けられていると判定した場合(S304Yes)、書き込まれたデータの仮想物理メモリ10a上の位置情報を特定する(S305)。
On the other hand, when it is determined that the taint tag is associated with the position information of the program (Yes in S304), the
続いて、書込み監視部16は、特定した位置情報にテイントタグを付与し(S306)、位置情報とテイントタグとを対応付けてシャドウメモリ10bに格納する(S307)。そして、挙動監視部17は、シャドウメモリ10bに格納されたプログラムを監視対象に設定する(S308)。
Subsequently, the
[効果]
このように、情報処理装置は、正確に監視対象と対象外のプログラムの区別を行うことができ、監視対象プログラムか否かを識別する精度を向上させることができる。例えば、コードインジェクションにより他のプロセスにプログラムコードが注入された場合でも、そのプロセス内で、注入されたコードと、そのプロセスの元々のコードとはテイントタグを見ることで区別することができる。また、ファイル感染により他プログラムファイルにプログラムコードが付与された場合でも、付与されたコード部分と、そのファイルが元々持っているコード部分をテイントタグに値に基づいて区別することができる。
[effect]
As described above, the information processing apparatus can accurately distinguish between the monitoring target program and the non-target program, and can improve the accuracy of identifying whether the program is the monitoring target program. For example, even when program code is injected into another process by code injection, the injected code and the original code of the process can be distinguished from each other by looking at the taint tag. Even when a program code is assigned to another program file due to file infection, the assigned code portion and the code portion originally possessed by the file can be distinguished based on the value of the taint tag.
また、監視対象のプログラムを仮想物理メモリ10aに展開する際にテイントタグを付与するので、監視漏れを抑制できる。さらに、監視対象のプログラムが仮想物理メモリ10aや仮想ディスク11aに書き込んだデータ等を監視対象に設定することができるので、挙動を正確に監視することができる。したがって、プログラムによって扱われるデータに対して、テイントタグを付与し、そのデータが利用や操作される際に、テイントタグを伝搬させることで当該データのフローを解析することができる。
In addition, since a taint tag is added when a program to be monitored is developed in the virtual
また、プラグイン形式のプログラムの解析を行う際、プラグインの挙動とプラグインを実行するフレームワークの挙動を区別することができ、正確にプラグイン形式のプログラムを解析することができる。 Also, when analyzing a plug-in format program, the behavior of the plug-in and the behavior of the framework that executes the plug-in can be distinguished, and the plug-in format program can be analyzed accurately.
[第2の実施形態]
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施形態を説明する。
[Second Embodiment]
Although the embodiments of the present invention have been described so far, the present invention may be implemented in various different forms other than the above-described embodiments. Therefore, different embodiments will be described below.
(解析環境)
第1の実施形態では、仮想マシン上で監視対象のプログラムを実行し、物理マシン上であっても同様に処理することができる。例えば、仮想マシンの代わりにエミュレータを利用することもできる。
(Analysis environment)
In the first embodiment, the program to be monitored is executed on the virtual machine, and the same processing can be performed even on the physical machine. For example, an emulator can be used instead of a virtual machine.
(解析手法)
本発明を監視対象プログラムの特定に利用する具体的な例として、APIの監視を例に説明すると、何かしらの方法でAPIの呼び出しを捉えた時、そのAPIの呼び出し元(スタックに積まれているリターンアドレス)が監視対象のテイントタグを持っているか否かでこのAPIを監視対象とするかを判断することができる。さらには、APIが呼ばれた際のコールスタックの中に監視対象のテイントタグを持ったアドレスが含まれるか否か、からそのAPI呼び出しを監視対象とするか否かを判断してもよい。また、監視対象のテイントタグの付いた制御遷移命令(callやjmpなど)の実行から監視対象プログラムからのAPIの呼び出しを取得することもできる。
(Analytical method)
As a specific example of using the present invention for specifying a monitoring target program, API monitoring will be described as an example. When an API call is captured by some method, the API caller (stacked on the stack) is used. Whether the API is to be monitored can be determined by whether or not the return address has a taint tag to be monitored. Further, it may be determined whether or not the API call is to be monitored from whether or not an address having a taint tag to be monitored is included in the call stack when the API is called. It is also possible to acquire an API call from a monitoring target program from execution of a control transition instruction (call, jmp, etc.) with a monitoring target taint tag.
(仮想マシンの実行形態)
第1の実施形態では、ホストOS2で実行される仮想マシンソフトウェア3で仮想マシン10等を動作させる例を説明したが、仮想マシンの実行形態はこれに限定されるものではない。例えば、プロセスレベルの仮想マシンを用いてもよい。さらには、仮想マシンを使わずに、図2で説明した各処理部をモジュールとして実装し、OSの中で動作させてもよい。
(Virtual machine execution mode)
In the first embodiment, the example in which the
仮想マシンやエミュレータを使う場合は、仮想化されたCPUの中で、図2で説明した書込み監視部16等を動作することができる。また、OS内にモジュールとしてインストールする場合は、書込み監視部16等は、監視対象プログラムのすべてのメモリアクセスを取得するために、例えば監視対象プログラムの全プロセスアドレス空間のPresent Bitを落とし、メモリアクセスするたびにページフォルトを発生させるなど方法ですべてのメモリアクセスを取得することができる。なお、上記実施例で説明した各処理部は、ハードウェアで実装することもできる。
When a virtual machine or an emulator is used, the
(仮想マシン間の移動)
第1の実施形態では、仮想マシン間でテイントタグを遷移させる場合について説明したが、これに限定されるものではなく、仮想マシン間でテイントタグを遷移させることもできる。
(Move between virtual machines)
In the first embodiment, the case where the taint tag is changed between virtual machines has been described. However, the present invention is not limited to this, and the taint tag can be changed between virtual machines.
例えば、仮想マシン10が仮想マシン20の仮想ディスクに、テイントタグが付与されたデータを格納したとする。この場合、仮想マシン20は、格納されたデータにテイントタグが付与されていたか否かを仮想マシン10に問い合わせる。そして、仮想マシン20は、テイントタグが付与されていたことが通知されると、格納された仮想ディスクの位置情報に対応するシャドウディスクのエントリに、テイントタグを設定する。
For example, it is assumed that the
(システム構成等)
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示された構成要素と同一であることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図2に示した書込み監視部16と挙動監視部17とを統合してもよい。また、シャドウメモリ10bとシャドウディスク11bとを、メモリのアドレスかディスクのアドレスかを区別する情報をさらに用いることで、1つのデータ構造体として管理することもできる。このシャドウメモリ10bやシャドウディスク11bは、物理マシン上で用いる場合にはハードウェアで実現してもよく、仮想マシン上で用いる場合にはソフトウェアで実現することができる。
(System configuration etc.)
Each component of each illustrated device is functionally conceptual, and does not necessarily need to be the same as the physically illustrated component. In other words, the specific form of distribution / integration of each device is not limited to that shown in the figure, and all or a part thereof may be functionally or physically distributed or arbitrarily distributed in arbitrary units according to various loads or usage conditions. Can be integrated and configured. For example, the
また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。 In addition, all or some of the processes described as being automatically performed among the processes described in the present embodiment can be manually performed. Further, all or any part of each processing function performed in each device may be realized by a CPU and a program analyzed and executed by the CPU, or may be realized as hardware by wired logic.
(プログラム)
また、上記実施例1に係る情報処理装置が実行する処理をコンピュータが実行可能な言語で記述した監視プログラムを作成することもできる。この場合、コンピュータが監視プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる監視プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された監視プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図1等に示した情報処理装置と同様の機能を実現する監視プログラムを実行するコンピュータの一例を説明する。
(program)
It is also possible to create a monitoring program in which processing executed by the information processing apparatus according to the first embodiment is described in a language that can be executed by a computer. In this case, when the computer executes the monitoring program, the same effect as in the above embodiment can be obtained. Further, the monitoring program may be recorded on a computer-readable recording medium, and the monitoring program recorded on the recording medium may be read by the computer and executed to execute the same processing as in the above embodiment. An example of a computer that executes a monitoring program that implements the same function as the information processing apparatus shown in FIG.
図10は、監視プログラムを実行するコンピュータを示す図である。図10に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
FIG. 10 is a diagram illustrating a computer that executes a monitoring program. As shown in FIG. 10, the
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1100およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
The
ここで、図10に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した監視対象のプログラムは、例えばハードディスクドライブ1090やメモリ1010に記憶される。
Here, as shown in FIG. 10, the
また、監視プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明したプログラム実行部13と同様の情報処理を実行するプログラム実行手順と、テイントタグ付与部14と同様の情報処理を実行するテイントタグ付与手順と、判定部15と同様の情報処理を実行する判定手順と、書込み監視部16と同様の情報処理を実行する書込み監視手順と、挙動監視部17と同様の情報処理を実行する挙動監視手順とが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
Further, the monitoring program is stored in, for example, the
また、監視プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM1012に読み出して、上述した各手順を実行する。
In addition, data used for information processing by the monitoring program is stored in the
なお、監視プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、監視プログラムに係るプログラムモジュールやプログラムデータは、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
Note that the program module and program data related to the monitoring program are not limited to being stored in the
1 ハードウェア
2 ホストOS
3 仮想マシンソフトウェア
10 仮想マシン
10a 仮想物理メモリ
10b シャドウメモリ
11a 仮想ディスク
11b シャドウディスク
12 仮想CPU
13 プログラム実行部
14 テイントタグ付与部
15 判定部
16 書込み監視部
17 挙動監視部
18 仮想HWコントローラ
18a テイント情報伝搬部
20 仮想マシン
1010 メモリ
1011 ROM
1012 RAM
1020 CPU
1030 ハードディスクドライブインタフェース
1040 ディスクドライブインタフェース
1050 シリアルポートインタフェース
1051 マウス
1052 キーボード
1060 ビデオアダプタ
1061 ディスプレイ
1070 ネットワークインタフェース
1080 バス
1090 ハードディスクドライブ
1091 OS
1092 アプリケーションプログラム
1093 プログラムモジュール
1094 プログラムデータ
1100 ディスクドライブ
1110 マウス
1120 キーボード
1130 ディスプレイ
1
3
DESCRIPTION OF
1012 RAM
1020 CPU
1030 Hard
1092
Claims (7)
前記メモリに記憶されるプログラムが実行される場合に、実行されるプログラムを記憶する前記位置情報に対応付けて前記識別子が、前記保持部に保持されているか否かを判定する判定部と、
前記判定部によって前記識別子が保持されていると判定された場合に、前記実行されるプログラムを監視対象と決定する決定部と
を有することを特徴とする情報処理装置。 A holding unit that associates and holds position information that specifies a storage position on a memory in which a program to be monitored is stored and an identifier that identifies the monitoring target;
A determination unit that determines whether or not the identifier is held in the holding unit in association with the position information storing the program to be executed when the program stored in the memory is executed;
An information processing apparatus comprising: a determination unit that determines that the program to be executed is a monitoring target when the determination unit determines that the identifier is held.
前記決定部は、前記保持部によって前記位置情報と前記識別子とが対応付けて保持された前記データを監視対象と決定することを特徴とする請求項1または2に記載の情報処理装置。 When the program determined to be monitored by the determination unit writes data to the memory, the holding unit assigns an identifier to the position information in which the written data is stored, and the position information and the identifier Are further associated with each other,
The information processing apparatus according to claim 1, wherein the determination unit determines the data in which the position information and the identifier are associated and stored by the storage unit as a monitoring target.
前記決定部は、前記保持部によって前記位置情報と前記識別子とが保持された前記データを監視対象と決定することを特徴とする請求項1または2に記載の情報処理装置。 The holding unit assigns an identifier to position information indicating a storage position on the disk where the written data is stored when the program determined to be monitored by the determination unit writes data to the disk, Further storing the position information and the identifier in association with each other,
The information processing apparatus according to claim 1, wherein the determination unit determines the data in which the position information and the identifier are held by the holding unit as a monitoring target.
各仮想マシンは、前記保持部と前記判定部と前記決定部とを有し、
前記保持部は、他の仮想マシンに記憶される監視対象のデータが自仮想マシンに書き込まれた場合に、書き込まれたデータが格納される仮想ディスクまたは仮想物理メモリ上の格納位置を示す位置情報に識別子を付与し、前記位置情報と前記識別子とを対応付けてさらに保持することを特徴とする請求項1または2に記載の情報処理装置。 The information processing apparatus is an apparatus for operating a plurality of virtual machines,
Each virtual machine has the holding unit, the determination unit, and the determination unit,
When the monitoring target data stored in another virtual machine is written to the own virtual machine, the holding unit is position information indicating a storage position on the virtual disk or virtual physical memory in which the written data is stored The information processing apparatus according to claim 1, wherein an identifier is assigned to the information, and the position information and the identifier are further associated with each other and retained.
監視対象のプログラムが記憶されるメモリ上の格納位置を特定する位置情報と、監視対象であることを識別する識別子とを対応付けて保持する保持工程と、
前記メモリに記憶されるプログラムが実行される場合に、実行されるプログラムを記憶する前記位置情報に対応付けて前記識別子が、前記保持工程に保持されているか否かを判定する判定工程と、
前記判定工程によって前記識別子が保持されていると判定された場合に、前記実行されるプログラムを監視対象と決定する決定工程と
を含んだことを特徴とする監視方法。 A monitoring method executed by an information processing apparatus,
A holding step of associating and holding position information for specifying a storage position on a memory in which a monitoring target program is stored and an identifier for identifying the monitoring target;
A determination step of determining whether or not the identifier is held in the holding step in association with the position information storing the program to be executed when the program stored in the memory is executed;
And a determination step of determining the program to be executed as a monitoring target when it is determined by the determination step that the identifier is held.
前記メモリに記憶されるプログラムを実行する場合に、実行するプログラムが記憶される前記位置情報に対応付けて前記識別子が保持されているか否かを判定するステップと、
前記識別子が記憶されていると判定した場合に、前記実行するプログラムを監視対象と決定するステップと
をコンピュータに実行させることを特徴とする監視プログラム。
Holding information associating position information for specifying a storage position on a memory in which a program to be monitored is stored with an identifier for identifying that the program is to be monitored;
When executing the program stored in the memory, determining whether the identifier is held in association with the position information in which the program to be executed is stored;
When determining that the identifier is stored, a monitoring program causing a computer to execute the step of determining the program to be executed as a monitoring target.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012104028A JP5766650B2 (en) | 2012-04-27 | 2012-04-27 | Information processing apparatus, monitoring method, and monitoring program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012104028A JP5766650B2 (en) | 2012-04-27 | 2012-04-27 | Information processing apparatus, monitoring method, and monitoring program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013232113A true JP2013232113A (en) | 2013-11-14 |
JP5766650B2 JP5766650B2 (en) | 2015-08-19 |
Family
ID=49678486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012104028A Active JP5766650B2 (en) | 2012-04-27 | 2012-04-27 | Information processing apparatus, monitoring method, and monitoring program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5766650B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015182418A1 (en) * | 2014-05-26 | 2015-12-03 | 日本電信電話株式会社 | Dynamically loaded code analysis device, dynamically loaded code analysis method, and dynamically loaded code analysis program |
JP5989936B2 (en) * | 2014-03-13 | 2016-09-07 | 日本電信電話株式会社 | Specific apparatus, specific method, and specific program |
JP2020154796A (en) * | 2019-03-20 | 2020-09-24 | 日本電気株式会社 | Malware analysis apparatus, malware analysis method, and program |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0512065A (en) * | 1991-06-21 | 1993-01-22 | Hitachi Ltd | Program execution state monitoring method |
US20100083379A1 (en) * | 2008-09-29 | 2010-04-01 | Semiconductor Technology Academic Research Center | Information processing device, information processing method, and computer readable recording medium |
US20110145918A1 (en) * | 2009-12-15 | 2011-06-16 | Jaeyeon Jung | Sensitive data tracking using dynamic taint analysis |
JP2011145945A (en) * | 2010-01-15 | 2011-07-28 | Panasonic Corp | Malware detecting device and malware detecting method |
-
2012
- 2012-04-27 JP JP2012104028A patent/JP5766650B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0512065A (en) * | 1991-06-21 | 1993-01-22 | Hitachi Ltd | Program execution state monitoring method |
US20100083379A1 (en) * | 2008-09-29 | 2010-04-01 | Semiconductor Technology Academic Research Center | Information processing device, information processing method, and computer readable recording medium |
JP2010102679A (en) * | 2008-09-29 | 2010-05-06 | Semiconductor Technology Academic Research Center | Information processing apparatus, information processing method, and program for achieving the same |
US20110145918A1 (en) * | 2009-12-15 | 2011-06-16 | Jaeyeon Jung | Sensitive data tracking using dynamic taint analysis |
JP2011145945A (en) * | 2010-01-15 | 2011-07-28 | Panasonic Corp | Malware detecting device and malware detecting method |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5989936B2 (en) * | 2014-03-13 | 2016-09-07 | 日本電信電話株式会社 | Specific apparatus, specific method, and specific program |
US10382455B2 (en) | 2014-03-13 | 2019-08-13 | Nippon Telegraph And Telephone Corporation | Identifying apparatus, identifying method, and identifying program |
WO2015182418A1 (en) * | 2014-05-26 | 2015-12-03 | 日本電信電話株式会社 | Dynamically loaded code analysis device, dynamically loaded code analysis method, and dynamically loaded code analysis program |
JP6018344B2 (en) * | 2014-05-26 | 2016-11-02 | 日本電信電話株式会社 | Dynamic reading code analysis apparatus, dynamic reading code analysis method, and dynamic reading code analysis program |
CN106462704A (en) * | 2014-05-26 | 2017-02-22 | 日本电信电话株式会社 | Dynamically loaded code analysis device, dynamically loaded code analysis method, and dynamically loaded code analysis program |
US10242191B2 (en) | 2014-05-26 | 2019-03-26 | Nippon Telegraph And Telephone Corporation | Dynamically-loaded code analysis device, dynamically-loaded code analysis method, and dynamically-loaded code analysis program |
CN106462704B (en) * | 2014-05-26 | 2019-05-21 | 日本电信电话株式会社 | Dynamic reads in code analysis device and dynamic reads in code analysis methods |
JP2020154796A (en) * | 2019-03-20 | 2020-09-24 | 日本電気株式会社 | Malware analysis apparatus, malware analysis method, and program |
JP7188208B2 (en) | 2019-03-20 | 2022-12-13 | 日本電気株式会社 | MALWARE ANALYSIS DEVICE, MALWARE ANALYSIS METHOD, AND PROGRAM |
Also Published As
Publication number | Publication date |
---|---|
JP5766650B2 (en) | 2015-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8516589B2 (en) | Apparatus and method for preventing virus code execution | |
KR102255767B1 (en) | Systems and methods for virtual machine auditing | |
US8978141B2 (en) | System and method for detecting malicious software using malware trigger scenarios | |
CN109471697B (en) | Method, device and storage medium for monitoring system call in virtual machine | |
KR101806090B1 (en) | Generic unpacking of applications for malware detection | |
US10102373B2 (en) | Method and apparatus for capturing operation in a container-based virtualization system | |
RU2005135472A (en) | COMPUTER SECURITY MANAGEMENT, FOR example, IN A VIRTUAL MACHINE OR A REAL OPERATING SYSTEM | |
JP5382450B2 (en) | Access control apparatus, method and information recording medium | |
JP5832954B2 (en) | Tag assignment device and tag assignment method | |
JP6734481B2 (en) | Call stack acquisition device, call stack acquisition method, and call stack acquisition program | |
US10129275B2 (en) | Information processing system and information processing method | |
US7992156B1 (en) | Determining the address of a system call table to perform antivirus tasks in a computer | |
CN109271789B (en) | Malicious process detection method and device, electronic equipment and storage medium | |
CN104715202A (en) | Hidden process detecting method and hidden process detecting device in virtual machine | |
JP5766650B2 (en) | Information processing apparatus, monitoring method, and monitoring program | |
US20180189167A1 (en) | Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior | |
CN105117332B (en) | A kind of detection method of stack overflow position | |
CN113176926A (en) | API dynamic monitoring method and system based on virtual machine introspection technology | |
JP5952218B2 (en) | Information processing apparatus and information processing method | |
JP5710547B2 (en) | Information processing apparatus, monitoring method, and monitoring program | |
EP2819055B1 (en) | System and method for detecting malicious software using malware trigger scenarios | |
JP5989599B2 (en) | Information processing apparatus and information processing method | |
WO2022259528A1 (en) | Generation device, generation method, and generation program | |
TWI661355B (en) | Context-aware data structure reverse engineering system and method thereof | |
CN109472133A (en) | A kind of sandbox monitoring method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140711 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150224 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150410 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20150616 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150617 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5766650 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |