JP2013232113A - Information processing apparatus, monitoring method, and monitoring program - Google Patents

Information processing apparatus, monitoring method, and monitoring program Download PDF

Info

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
Application number
JP2012104028A
Other languages
Japanese (ja)
Other versions
JP5766650B2 (en
Inventor
Yuhei Kawakoya
裕平 川古谷
Makoto Iwamura
誠 岩村
Takeo Hario
剛男 針生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2012104028A priority Critical patent/JP5766650B2/en
Publication of JP2013232113A publication Critical patent/JP2013232113A/en
Application granted granted Critical
Publication of JP5766650B2 publication Critical patent/JP5766650B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

PROBLEM TO BE SOLVED: To improve accuracy for identifying whether or not a program is a monitoring target program.SOLUTION: Virtual machines operating in an information processing apparatus each hold position information that specifies a storage position on a virtual physical memory in which a monitoring target program is stored, and a taint tag that identifies being a monitoring target in association with each other. When the program stored in the virtual physical memory is executed, the virtual machines each determine whether or not the taint tag is held in association with the position information that stores the program to be executed. When it is determined that the taint tag is held in association with the program, the virtual machines each determine that the program is a monitoring target.

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.

“Toward Automated Dynamic Malware Analysis Using CWSandbox”、IEEE Security and Privacy、Vol.5、No.2、pp.32-39、2007“Toward Automated Dynamic Malware Analysis Using CWSandbox”, IEEE Security and Privacy, Vol.5, No.2, pp.32-39, 2007 “TTAnalyze: A Tool for Analyzing Malware”、15th European Institute for Computer Antivirus Research (EICAR 2006) Annual Conference“TTAnalyze: A Tool for Analyzing Malware”, 15th European Institute for Computer Antivirus Research (EICAR 2006) Annual Conference “Memory Behavior−Based Automatic Malware Unpacking in Stealth Debugging Environment”、5th International Conference on Malicious and Unwanted Software(MALWARE 2010)、2010“Memory Behavior—Based Automatic Malware Unpacking in Stealth Debugging Environment”, 5th International Conference on Malicious and Unwanted Software (MALWARE 2010), 2010

しかしながら、従来の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.

図1は、情報処理装置の全体構成を示す図である。FIG. 1 is a diagram illustrating the overall configuration of the information processing apparatus. 図2は、仮想マシンの機能構成例を示す機能ブロック図である。FIG. 2 is a functional block diagram illustrating a functional configuration example of the virtual machine. 図3は、シャドウメモリに記憶される情報の例を示す図である。FIG. 3 is a diagram illustrating an example of information stored in the shadow memory. 図4は、シャドウディスクに記憶される情報の例を示す図である。FIG. 4 is a diagram illustrating an example of information stored in the shadow disk. 図5は、シャドウメモリと仮想物理メモリとの関係性を示す図である。FIG. 5 is a diagram illustrating the relationship between the shadow memory and the virtual physical memory. 図6は、テイントタグの伝搬例を説明する図である。FIG. 6 is a diagram for explaining an example of propagation of a taint tag. 図7は、実行対象のプログラムを実行した場合の処理の流れを示すフローチャートである。FIG. 7 is a flowchart showing the flow of processing when the execution target program is executed. 図8は、挙動解析処理の流れを示すフローチャートである。FIG. 8 is a flowchart showing the flow of behavior analysis processing. 図9は、メモリへのデータ書込みが発生した場合の処理の流れを示すフローチャートである。FIG. 9 is a flowchart showing a processing flow when data writing to the memory occurs. 図10は、監視プログラムを実行するコンピュータを示す図である。FIG. 10 is a diagram illustrating a computer that executes a monitoring program.

以下に、本発明にかかる情報処理装置、監視方法および監視プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。   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 hardware 1, host OS 2, virtual machine software 3, virtual machine 10, and virtual machine 20.

ハードウェア1は、情報処理装置を構成する電子回路や周辺機器であり、例えば、メモリ、CPU(Central Processing Unit)などである。ホストOS2は、仮想マシンを動作させる基盤となるOSであり、ハードウェア1を用いて実行される。仮想マシンソフトウェア3は、ハードウェア1を用いて仮想マシンを提供するソフトウェアであり、ここでは、仮想マシン10と仮想マシン20とを動作させる。例えば、仮想マシンソフトウェア3は、仮想ディスク、仮想物理メモリ、仮想CPUなどをゲストOSに割当てて、仮想マシンを動作させる。   The hardware 1 is an electronic circuit or a peripheral device constituting the information processing apparatus, and is, for example, a memory, a CPU (Central Processing Unit), or the like. The host OS 2 is an OS serving as a base for operating the virtual machine, and is executed using the hardware 1. The virtual machine software 3 is software that provides a virtual machine using the hardware 1. Here, the virtual machine 10 and the virtual machine 20 are operated. For example, the virtual machine software 3 allocates a virtual disk, virtual physical memory, virtual CPU, and the like to the guest OS to operate the virtual machine.

仮想マシン10と仮想マシン20は、仮想マシンソフトウェア3から提供された仮想ディスク、仮想物理メモリ、仮想CPUなどを用いてゲストOSを動作させて、各種処理を実行する仮想的な情報処理装置である。   The virtual machine 10 and the virtual machine 20 are virtual information processing apparatuses that execute various processes by operating a guest OS using a virtual disk, virtual physical memory, virtual CPU, or the like provided from the virtual machine software 3. .

このような構成において、情報処理装置は、隔離された環境である仮想マシン10または仮想マシン20内で、挙動を解析する対象となるプログラムを監視する。具体的には、各仮想マシンは、監視対象のプログラムが記憶される仮想物理メモリ上の格納位置を特定する位置情報と、監視対象であることを識別するテイントタグとを対応付けて保持する。各仮想マシンは、仮想物理メモリに記憶されるプログラムが実行される場合に、実行されるプログラムを記憶する位置情報に対応付けてテイントタグが保持されているか否かを判定する。そして、各仮想マシンは、テイントタグが保持されていると判定された場合に、実行する当該プログラムを監視対象と決定する。   In such a configuration, the information processing apparatus monitors a program whose behavior is to be analyzed in the virtual machine 10 or the virtual machine 20 that is an isolated environment. Specifically, each virtual machine holds location information for specifying a storage location on the virtual physical memory in which the monitoring target program is stored and a taint tag for identifying the monitoring target in association with each other. When a program stored in the virtual physical memory is executed, each virtual machine determines whether or not a taint tag is held in association with position information storing the program to be executed. Then, when it is determined that each taint tag is held, each virtual machine determines the program to be executed as a monitoring target.

このように、情報処理装置は、プログラムの挙動解析をする場合においてプログラムの実行を監視する際に、テイントタグがついているプログラムが実行されていた場合は監視対象とし、テイントタグがついていないときは監視対象外とする。この結果、情報処理装置は、正確に監視対象と対象外のプログラムの区別を行うことができ、監視対象プログラムか否かを識別する精度を向上させることができる。   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 hardware 1, the host OS 2, and the virtual machine software 3 have the same configuration as a general configuration, detailed description thereof is omitted. Since the virtual machine 10 and the virtual machine 20 have the same configuration, the virtual machine 10 will be described as an example here.

図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 virtual machine 10 includes a virtual physical memory 10a, a shadow memory 10b, a virtual disk 11a, a shadow disk 11b, a virtual CPU 12, and a virtual HW controller 18.

仮想物理メモリ10aは、情報処理装置が有する物理メモリにおける所定領域を仮想マシン10で動作するゲストOSが使用するメモリとして割り当てることで実現された仮想的なメモリである。例えば、仮想物理メモリ10aは、仮想CPU12によって仮想ディスク11aから読み出されたプログラムやデータを記憶する。   The virtual physical memory 10a is a virtual memory realized by allocating a predetermined area in the physical memory of the information processing apparatus as a memory used by the guest OS operating on the virtual machine 10. For example, the virtual physical memory 10a stores programs and data read from the virtual disk 11a by the virtual CPU 12.

シャドウメモリ10bは、監視対象であることを示すテイントタグと、監視対象のプログラムが記憶される仮想物理メモリ10a上の格納位置を特定する位置情報とを対応付けて記憶するデータ構造体である。例えば、シャドウメモリ10bの構造としては、単純な配列構造でもよいし、ツリー構造としてテイントタグを保持してもよい。また、格納する情報としては、テイントタグとしての値を持たせてもよいし、テイント情報を保持させたデータ構造体へのポインタとして持たせてもよい。このシャドウメモリ10bは、パフォーマンスやメモリ消費量などによって任意に実装形態を変更することができる。   The shadow memory 10b is a data structure that associates and stores a taint tag indicating a monitoring target and position information that specifies a storage position on the virtual physical memory 10a in which the monitoring target program is stored. For example, the structure of the shadow memory 10b may be a simple array structure or a taint tag 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. The mounting form of the shadow memory 10b can be arbitrarily changed according to performance and memory consumption.

例えば、パフォーマンスを重視する場合、仮想物理メモリ10aと同等のサイズの領域を予め用意し、それをシャドウメモリとして利用することができる。一方、メモリ消費量を抑えたい場合は、テイントタグを設定したデータに関する要素のみを保持させることもできる。テイントタグのサイズは、どれほどの種類のデータを識別したいかに依存する。例えば、1種類だけのタグでよければ、1ビットで識別すればよく、256種類を識別する場合には、8ビットのサイズを用いる。また、データ構造体へのポインタとしてテイントタグを持たせる場合は、アドレスのサイズ分をサイズとして用いることもできる。なお、メモリ上の位置は、仮想アドレスで指定してもよいし、物理アドレスで指定してもよく、その他でも格納位置を特定できる位置情報であればよい。   For example, when performance is important, an area having the same size as the virtual physical memory 10a can be prepared in advance and used as a shadow memory. On the other hand, when it is desired to reduce the memory consumption, it is possible to hold only elements relating to data for which taint tags are set. The size of the taint tag depends on how many types of data you want to identify. For example, if only one type of tag is sufficient, it may be identified by 1 bit, and if 256 types are identified, an 8-bit size is used. Further, when a taint tag is provided as a pointer to the data structure, the size of the address can be used as the size. The location on the memory may be designated by a virtual address, a physical address, or any other location information that can specify the storage location.

ここで、シャドウメモリ10bの一例を説明する。図3は、シャドウメモリに記憶される情報の例を示す図である。図3に示すように、シャドウメモリ10bは、「仮想物理メモリのアドレス」と2ビットの「テイントタグ」とを対応付けて記憶する。「仮想物理メモリのアドレス」は、仮想物理メモリ10a上の格納位置を示す位置情報であり、「テイントタグ」は、監視対象であることを識別する識別子である。また、ここでは、「テイントタグ」の2ビット情報が「1」である場合には、監視対象のデータがプログラムのコードであることを示す。   Here, an example of the shadow memory 10b will be described. FIG. 3 is a diagram illustrating an example of information stored in the shadow memory. As illustrated in FIG. 3, the shadow memory 10 b stores a “virtual physical memory address” and a 2-bit “taint tag” in association with each other. The “virtual physical memory address” is position information indicating the storage position on the virtual physical memory 10a, and the “taint tag” is an identifier for identifying a 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.

図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 physical memory 10a. Further, it indicates that the taint tag “05” is given to the monitoring target data stored in the addresses “0310 to 0350” of the virtual physical memory 10a. Note that the numerical values and the like shown in FIG. 3 are merely examples, and the values and the like are not limited.

仮想ディスク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 virtual machine 10. For example, the virtual disk 11a stores a program to be executed by the virtual CPU 12, data to be processed by the program, and the like.

シャドウディスク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 shadow memory 10b, the mounting form of the shadow disk 11b can be arbitrarily changed depending on performance, memory consumption, and the like.

ここで、シャドウディスク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 virtual CPU 12 is a virtual CPU that is realized by allocating a predetermined processing capacity of a physical CPU included in the information processing apparatus as a CPU used by a guest OS operating on the virtual machine 10. The virtual CPU 12 includes a program execution unit 13, a taint tag assignment unit 14, a determination unit 15, a write monitoring unit 16, and a behavior monitoring unit 17, and executes various processes.

プログラム実行部13は、仮想ディスク11aに記憶されるプログラムを実行する処理部である。例えば、プログラム実行部13は、仮想ディスク11aからプログラムを読み出して仮想物理メモリ10aに展開する。つまり、プログラム実行部13は、実行対象のプログラムを仮想ディスク11aから読み出して仮想物理メモリ10aに格納した後、仮想物理メモリ10aに記憶させた実行対象のプログラムを実行する。   The program execution unit 13 is a processing unit that executes a program stored in the virtual disk 11a. For example, the program execution unit 13 reads a program from the virtual disk 11a and develops it in the virtual physical memory 10a. That is, the program execution unit 13 reads the execution target program from the virtual disk 11a and stores it in the virtual physical memory 10a, and then executes the execution target program stored in the virtual physical memory 10a.

テイントタグ付与部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 physical memory 10a by the program executing unit 13 is a monitoring target. For example, when the taint tag assigning unit 14 detects that the program execution unit 13 stores a program in the virtual physical memory 10a, it determines whether or not the program is a monitoring target. When the taint tag assigning unit 14 determines that the program is to be monitored, the taint tag assigning unit 14 identifies the position on the virtual physical memory 10a where the program is stored, and stores the taint tag in the entry on the shadow memory 10b corresponding to the identified position. To do.

一例を挙げると、テイントタグ付与部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 physical memory 10a in which a code portion, which is a set of instructions executed in the monitoring target program, is stored. Then, the taint tag assigning unit 14 assigns the taint tag “14” to the identified addresses “0150 to 0160”. Thereafter, the taint tag assigning unit 14 stores the identified address “0150 to 0160” in association with the assigned taint tag “14” in the shadow memory 10b.

なお、監視対象であるか否かを判定する手法は、公知の様々な手法を用いることができる。例えば、予め監視対象のプログラム名等を指定しておき、仮想物理メモリ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 physical memory 10a matches the program specified in advance. Further, when the program is scanned and an instruction specified as a monitoring target is included, it can be determined as a monitoring target. In addition, an arbitrary value can be set for the taint tag to be assigned.

判定部15は、実行されたプログラムが監視対象か否かを判定する処理部である。具体的には、判定部15は、シャドウメモリ10bを参照し、実行されたプログラムが格納される仮想物理メモリ10a上の位置情報に対応付けて、監視対象を表すテイントタグが格納されている場合に、監視対象であると判定する。そして、判定部15は、実行されたプログラムが監視対象であることを挙動監視部17に通知する。   The determination unit 15 is a processing unit that determines whether the executed program is a monitoring target. Specifically, the determination unit 15 refers to the shadow memory 10b, and stores a taint tag representing a monitoring target in association with position information on the virtual physical memory 10a in which the executed program is stored. It is determined that it is a monitoring target. Then, the determination unit 15 notifies the behavior monitoring unit 17 that the executed program is a monitoring target.

一例を挙げると、判定部15は、プログラム実行部13が仮想物理メモリ10aのアドレス「0000〜0200」からプログラムを読み出したことを検知すると、読み出し先のアドレス「0000〜0200」を特定する。そして、判定部15は、シャドウメモリ10bを参照し、アドレス「0000〜0200」に対応付けてテイントタグ「11」が格納されていることを特定する。すると、判定部15は、アドレス「0000〜0200」から読み出されて実行されたプログラムを監視対象と判定する。   For example, when the determination unit 15 detects that the program execution unit 13 has read the program from the address “0000-0200” of the virtual physical memory 10a, the determination unit 15 specifies the address “0000-0200” as the read destination. Then, the determination unit 15 refers to the shadow memory 10b and specifies that the taint tag “11” is stored in association with the address “0000 to 0200”. Then, the determination unit 15 determines that the program read from the address “0000-0200” and executed is the monitoring target.

書込み監視部16は、仮想物理メモリ10aへのデータ書き込みを監視し、監視対象のデータが書き込まれた場合に、書き込まれたデータにテイントタグを付与する処理部である。具体的には、書込み監視部16は、監視対象と決定されたプログラムが仮想物理メモリ10aにデータを書き込んだ場合に、書き込まれたデータが格納される位置に対応するシャドウメモリ10b上のエントリにテイントタグを格納する。すなわち、書込み監視部16は、データを書き込んだ命令がテイントタグに対応付けられたプログラムコードに含まれる命令である場合に、書き込まれたデータを監視対象と判定する。   The write monitoring unit 16 is a processing unit that monitors data writing to the virtual physical memory 10a and adds a taint tag to the written data when the monitoring target data is written. Specifically, when the program determined to be monitored writes data to the virtual physical memory 10a, the write monitoring unit 16 adds an entry in the shadow memory 10b corresponding to the position where the written data is stored. Stores taint tags. That is, the write monitoring unit 16 determines that the written data is a monitoring target when the command that wrote the data is an instruction included in the program code associated with the taint tag.

一例を挙げると、書込み監視部16は、仮想物理メモリ10aへのデータが書き込まれたことを検知すると、当該データを書き込んだプログラムを特定する。そして、書込み監視部16は、特定したプログラムの格納先を示すアドレス「0000〜0200」を仮想物理メモリ10a等から特定する。続いて、書込み監視部16は、シャドウメモリ10bを参照し、特定したアドレス「0000〜0200」に対応付けてテイントタグ「11」が格納されていると判定する。この場合、書込み監視部16は、テイントタグが付与されたプログラムによってデータが書き込まれたことになるので、書き込まれたデータを監視対象と判定する。   For example, when the writing monitoring unit 16 detects that data has been written to the virtual physical memory 10a, the writing monitoring unit 16 identifies the program that has written the data. Then, the write monitoring unit 16 specifies an address “0000-0200” indicating the storage location of the specified program from the virtual physical memory 10a or the like. Subsequently, the write monitoring unit 16 refers to the shadow memory 10b and determines that the taint tag “11” is stored in association with the identified address “0000-0200”. In this case, the write monitoring unit 16 determines that the written data is a monitoring target because the data has been written by the program with the taint tag.

すると、書込み監視部16は、仮想物理メモリ10aを参照して、データが書き込まれたアドレス「0010〜0012」を抽出し、抽出したアドレス「0010〜0012」にテイントタグ「04」を付与する。そして、書込み監視部16は、抽出したアドレス「0010〜0012」と、付与したテイントタグ「04」とを対応付けて、シャドウメモリ10bに格納する。このとき、書込み監視部16は、書き込んだプログラムのテイントタグと同一の値を、書き込まれたデータのテイントタグとして付与してもよい。   Then, the write monitoring unit 16 refers to the virtual physical memory 10a, extracts the addresses “0010 to 0012” where the data has been written, and assigns the taint tag “04” to the extracted addresses “0010 to 0012”. Then, the write monitoring unit 16 associates the extracted address “0010 to 0012” with the assigned taint tag “04” and stores them in the shadow memory 10b. At this time, the write monitoring unit 16 may assign the same value as the taint tag of the written program as the taint tag of the written data.

一方、書込み監視部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 write monitoring unit 16 monitors the written data because the taint tag corresponding to the shadow memory 10b is not stored. Judged out of scope. The write monitoring unit 16 determines whether or not the data newly written in the virtual physical memory 10a or the data read from the virtual disk 11a and written in the virtual physical memory 10a is a monitoring target.

また、書込み監視部16は、仮想ディスク11a等から読み出されたデータが仮想物理メモリ10aに書き込まれ、書き込まれたデータに対するテイントタグがシャドウディスク11bに格納されていた場合には、書き込まれたデータを監視対象と判定する。そして、書込み監視部16は、書き込まれた仮想物理メモリ10a上のアドレスにテイントタグを付与して、シャドウメモリ10bに格納する。すなわち、書込み監視部16は、シャドウディスク11bからシャドウメモリ10bへのテイントタグを伝搬させる。このとき、書込み監視部16は、書き込まれたデータに元々付与されていたテイントタグと同一の値を、書き込まれたデータのテイントタグとして付与してもよい。   The write monitoring unit 16 writes the data read from the virtual disk 11a and the like when the data is written to the virtual physical memory 10a and the taint tag for the written data is stored in the shadow disk 11b. Are determined to be monitored. Then, the write monitoring unit 16 assigns a taint tag to the written address on the virtual physical memory 10a and stores it in the shadow memory 10b. That is, the write monitoring unit 16 propagates the taint tag from the shadow disk 11b to the shadow memory 10b. At this time, the write monitoring unit 16 may assign the same value as the taint tag originally assigned to the written data as the taint tag of the written data.

挙動監視部17は、監視対象のプログラムの挙動を監視する処理部である。例えば、挙動監視部17は、監視対象のプログラムが実行されてから終了するまでの時間、アクセスしたデータやレジストリ、生成したデータやレジストリ値等を収集し、プログラムの挙動を監視する。一例を挙げると、挙動監視部17は、監視対象プログラムが発行するAPIやシステムコールを監視し、API列と各APIに渡される引数により、監視対象プログラムの挙動を把握する。また、挙動監視部17は、監視対象プログラムがアクセスするメモリアドレスを収集し、収集した情報を使ってプログラムを解析する。また、監視対象プログラムが実行する命令列を収集し、収集した情報を使ってプログラムを解析する。   The behavior monitoring unit 17 is a processing unit that monitors the behavior of the program to be monitored. For example, the behavior monitoring unit 17 collects the time from the execution of the monitored program to the end thereof, the accessed data and registry, the generated data and registry value, etc., and monitors the behavior of the program. For example, the behavior monitoring unit 17 monitors APIs and system calls issued by the monitoring target program, and grasps the behavior of the monitoring target program from the API string and arguments passed to each API. The behavior monitoring unit 17 collects memory addresses accessed by the monitoring target program and analyzes the program using the collected information. In addition, the instruction sequence executed by the monitoring target program is collected, and the program is analyzed using the collected information.

仮想HWコントローラ18は、仮想ディスク11aと仮想物理メモリ10aとの間、シャドウディスク11bとシャドウメモリ10bとの間のデータ送受信を制御する処理部である。例えば、仮想HWコントローラ18は、プログラム実行部13が仮想ディスク11aから読み出したプログラムを仮想物理メモリ10aに格納する。また、仮想HWコントローラ18は、プログラム等によって仮想物理メモリ10aから読み出されたデータを仮想ディスク11aに格納する。このような仮想HWコントローラ18は、テイントタグの伝搬を実行するテイント情報伝搬部18aを有する。   The virtual HW controller 18 is a processing unit that controls data transmission / reception between the virtual disk 11a and the virtual physical memory 10a and between the shadow disk 11b and the shadow memory 10b. For example, the virtual HW controller 18 stores the program read from the virtual disk 11a by the program execution unit 13 in the virtual physical memory 10a. The virtual HW controller 18 stores data read from the virtual physical memory 10a by a program or the like in the virtual disk 11a. Such a virtual HW controller 18 includes a taint information propagation unit 18a that performs propagation of a taint tag.

テイント情報伝搬部18aは、仮想ディスク11aへのデータ書き込みを監視し、監視対象のデータが書き込まれた場合に、書き込まれたデータにテイントタグを付与する処理部である。すなわち、テイント情報伝搬部18aは、シャドウメモリ10bからシャドウディスク11bへのテイントタグを伝搬させる。具体的には、テイント情報伝搬部18aは、監視対象と決定されたプログラムが仮想ディスク11aにデータを書き込んだ場合に、書き込まれたデータが格納される位置に対応するシャドウディスク11b上のエントリにテイントタグを格納する。   The taint information propagation unit 18a is a processing unit that monitors data writing to the virtual disk 11a and adds a taint tag to the written data when the monitoring target data is written. That is, the taint information propagation unit 18a propagates the taint tag from the shadow memory 10b to the shadow disk 11b. Specifically, when the program determined to be monitored writes data to the virtual disk 11a, the taint information propagation unit 18a sets the entry on the shadow disk 11b corresponding to the position where the written data is stored. Stores taint tags.

なお、テイント情報伝搬部18aが実行する処理の内容は、書込み監視部16と同様なので、詳細な説明は省略する。簡単に説明すると、テイント情報伝搬部18aは、仮想物理メモリ10a等から読み出されたデータが仮想ディスク11aに書き込まれ、書き込まれたデータに対するテイントタグがシャドウメモリ10bに格納されていた場合には、書き込まれたデータを監視対象と判定する。そして、テイント情報伝搬部18aは、書き込まれた仮想ディスク11a上のアドレスにテイントタグを付与して、シャドウディスク11bに格納する。このとき、テイント情報伝搬部18aは、書き込まれたデータに元々付与されていたテイントタグと同一の値を、書き込まれたデータのテイントタグとして付与してもよい。   Note that the content of the process executed by the taint information propagation unit 18a is the same as that of the write monitoring unit 16, and thus detailed description thereof is omitted. In brief, the taint information propagation unit 18a writes data read from the virtual physical memory 10a or the like to the virtual disk 11a, and stores a taint tag for the written data in the shadow memory 10b. The written data is determined as a monitoring target. Then, the taint information propagation unit 18a assigns a taint tag to the written address on the virtual disk 11a and stores it in the shadow disk 11b. At this time, the taint information propagation unit 18a may assign the same value as the taint tag originally assigned to the written data as the taint tag of the written data.

[テイントタグの伝搬]
次に、図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 shadow memory 10b and the virtual physical memory 10a will be described with reference to FIG. 5, and then an example of taint tag propagation will be described with reference to FIG.

図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 shadow memory 10b. Further, the shadow disk 11b and the virtual disk 11a have the same relationship as the relationship described here.

図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 program execution unit 13 reads the monitoring target program A from the virtual disk 11a and develops it in the virtual physical memory 10a. Here, it is assumed that the code part of the program A is stored from 0200 to 0400 of the virtual disk 11a, the data part is stored from 0401 to 0500, and the heap part is stored from 0501 to 0600. Then, the taint tag assigning unit 14 stores the taint tag “15” at the address “address 0200 to address 0400” on the shadow memory 10b corresponding to the address “address 0200 to address 0400” where the code part of the program A is stored. In this way, program A is set as a monitoring target.

また、図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 shadow memory 10b corresponding to the address “address 0800 to address 0820” of the virtual physical memory 10a in which the data X is stored. Yes. For this reason, the data X is also set as a monitoring target. On the other hand, no taint tag is stored in the address “address 0715 to address 0720” on the shadow memory 10b corresponding to the address “address 0715 to address 0720” of the virtual physical memory 10a in which the data Y is stored. For this reason, the data Y is set out of the monitoring target.

続いて、テイントタグの伝搬例を説明する。図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 physical memory 10a. In this case, the write monitoring unit 16 determines that the data X1 written in the virtual physical memory 10a is also a monitoring target since the taint tag is given to the data X1. As a result, the write monitoring unit 16 stores the taint tag “09” at the addresses “0690 to 0710” on the shadow memory 10 b corresponding to the addresses “0690 to 0710” on the virtual physical memory 10 a.

さらにその後、仮想物理メモリ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 physical memory 10a is updated to data X2 and stored at addresses “4000 to 4020” on the virtual disk 11a. In this case, the write monitoring unit 16 determines that the updated data X2 is also a monitoring target since the taint tag is assigned to the data X1 before the update. As a result, the write monitoring unit 16 stores the taint tag “09” at the address “4000 address to 4020 address” on the shadow disk 11 b corresponding to the address “4000 address to 4020 address” on the virtual disk 11 a. In this way, the data once determined to be monitored can be continuously monitored by propagating the taint tag.

また、別例として、監視対象のプログラム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 physical memory 10a. In this case, the write monitoring unit 16 determines that the written data Z is also a monitoring target because the program A into which the data Z has been written is the monitoring target. As a result, the write monitoring unit 16 sets the taint tag “03” to the address “0110 to 0150” on the shadow memory 10b corresponding to the address “0110 to 0150” on the virtual physical memory 10a to which the data Z is written. Is stored.

さらにその後、仮想物理メモリ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 physical memory 10a is stored at addresses “2280 to 2320” on the virtual disk 11a. In this case, since the taint tag is originally added to the data Z, the write monitoring unit 16 determines that the data Z written to the virtual disk 11a is also a monitoring target. As a result, the write monitoring unit 16 stores the taint tag “03” at the addresses “2280 to 2320” on the shadow disk 11 b corresponding to the addresses “2280 to 2320” on the virtual disk 11 a.

[処理の流れ]
次に、実行対象のプログラムを仮想ディスク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 physical memory 10a, behavior analysis processing, and processing when data writing occurs.

(ロードした場合の処理)
図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 program execution unit 13 of the virtual machine 10 loads the execution target program from the virtual disk 11a to the virtual physical memory 10a (S101).

そして、テイントタグ付与部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 physical memory 10a loaded with the monitoring target program (S103).

続いて、テイントタグ付与部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 shadow memory 10b (S105). Then, the behavior monitoring unit 17 sets the program stored in the shadow memory 10b as a monitoring target (S106), and the program execution unit 13 executes the program loaded in the virtual physical memory 10a (S107).

(挙動解析処理)
図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 physical memory 10a occurs (S201 Yes), the determination unit 15 of the virtual machine 10 specifies the location information of the data access source (S202).

続いて、判定部15は、シャドウメモリ10bを参照し、特定した位置情報にテイントタグが対応付けられているか判定する(S203)。すなわち、判定部15は、データにアクセスした命令にテイントタグが付与されているか否かを判定する。そして、挙動監視部17は、判定部15によって位置情報にテイントタグが対応付けられていると判定された場合(S204Yes)、監視対象の命令がデータにアクセスしたこと示すログを生成して保持する(S205)。例えば、挙動監視部17は、アクセスした日時、データにアクセスした命令、当該命令の格納位置、当該命令がアクセスしたデータ、当該データの格納位置等をログとして抽出する。このようにして抽出されたログは、挙動監視部17による挙動解析に用いられる。   Subsequently, the determination unit 15 refers to the shadow memory 10b and determines whether a taint tag is associated with the specified position information (S203). That is, the determination unit 15 determines whether or not a taint tag is given to an instruction that accesses data. When the determination unit 15 determines that the taint tag is associated with the position information (Yes in S204), the behavior monitoring unit 17 generates and holds a log indicating that the instruction to be monitored has accessed the data ( S205). For example, the behavior monitoring unit 17 extracts the access date and time, the instruction accessing the data, the storage position of the instruction, the data accessed by the instruction, the storage position of the data, and the like as a log. The log extracted in this way is used for behavior analysis by the behavior monitoring unit 17.

一方、判定部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 determination unit 15 determines that the access source is not monitored and ends the process.

(データの書込みが発生した場合の処理)
図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 physical memory 10a occurs (S301 Yes), the write monitoring unit 16 of the virtual machine 10 stores the positional information on the virtual physical memory 10a in which the program that wrote the data is stored. Is identified (S302).

続いて、書込み監視部16は、シャドウメモリ10bを参照し、データを書き込んだプログラムが格納される位置情報にテイントタグが対応付けられているか判定する(S303)。なお、書込み監視部16は、当該プログラムの位置情報にテイントタグが対応付けられていないと判定した場合(S304No)、処理を終了する。   Subsequently, the write monitoring unit 16 refers to the shadow memory 10b and determines whether the taint tag is associated with the position information in which the program in which the data is written is stored (S303). Note that if the write monitoring unit 16 determines that the taint tag is not associated with the position information of the program (No in S304), the process ends.

一方、書込み監視部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 write monitoring unit 16 specifies the position information of the written data on the virtual physical memory 10a (S305).

続いて、書込み監視部16は、特定した位置情報にテイントタグを付与し(S306)、位置情報とテイントタグとを対応付けてシャドウメモリ10bに格納する(S307)。そして、挙動監視部17は、シャドウメモリ10bに格納されたプログラムを監視対象に設定する(S308)。   Subsequently, the write monitoring unit 16 adds a taint tag to the specified position information (S306), and associates the position information with the taint tag and stores them in the shadow memory 10b (S307). Then, the behavior monitoring unit 17 sets the program stored in the shadow memory 10b as a monitoring target (S308).

[効果]
このように、情報処理装置は、正確に監視対象と対象外のプログラムの区別を行うことができ、監視対象プログラムか否かを識別する精度を向上させることができる。例えば、コードインジェクションにより他のプロセスにプログラムコードが注入された場合でも、そのプロセス内で、注入されたコードと、そのプロセスの元々のコードとはテイントタグを見ることで区別することができる。また、ファイル感染により他プログラムファイルにプログラムコードが付与された場合でも、付与されたコード部分と、そのファイルが元々持っているコード部分をテイントタグに値に基づいて区別することができる。
[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 physical memory 10a, omission of monitoring can be suppressed. Furthermore, since the monitoring target program can set the data written in the virtual physical memory 10a and the virtual disk 11a as the monitoring target, the behavior can be accurately monitored. Therefore, a taint tag is assigned to data handled by the program, and when the data is used or operated, the taint tag is propagated to analyze the data flow.

また、プラグイン形式のプログラムの解析を行う際、プラグインの挙動とプラグインを実行するフレームワークの挙動を区別することができ、正確にプラグイン形式のプログラムを解析することができる。   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 virtual machine 10 or the like is operated by the virtual machine software 3 executed by the host OS 2 has been described, but the execution form of the virtual machine is not limited to this. For example, a process level virtual machine may be used. Furthermore, without using a virtual machine, each processing unit described in FIG. 2 may be mounted as a module and operated in the OS.

仮想マシンやエミュレータを使う場合は、仮想化されたCPUの中で、図2で説明した書込み監視部16等を動作することができる。また、OS内にモジュールとしてインストールする場合は、書込み監視部16等は、監視対象プログラムのすべてのメモリアクセスを取得するために、例えば監視対象プログラムの全プロセスアドレス空間のPresent Bitを落とし、メモリアクセスするたびにページフォルトを発生させるなど方法ですべてのメモリアクセスを取得することができる。なお、上記実施例で説明した各処理部は、ハードウェアで実装することもできる。   When a virtual machine or an emulator is used, the write monitoring unit 16 described with reference to FIG. 2 can be operated in a virtualized CPU. In addition, when installing as a module in the OS, the write monitoring unit 16 or the like drops the Present Bit of all process address spaces of the monitoring target program, for example, in order to acquire all memory accesses of the monitoring target program. Every memory access can be obtained in such a way as to generate a page fault each time. The processing units described in the above embodiments can be implemented by hardware.

(仮想マシン間の移動)
第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 virtual machine 10 stores data with a taint tag in the virtual disk of the virtual machine 20. In this case, the virtual machine 20 inquires of the virtual machine 10 whether or not a taint tag is given to the stored data. When notified that the taint tag has been assigned, the virtual machine 20 sets the taint tag in the entry of the shadow disk corresponding to the stored location information of the virtual disk.

(システム構成等)
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示された構成要素と同一であることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、図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 write monitoring unit 16 and the behavior monitoring unit 17 illustrated in FIG. 2 may be integrated. Further, the shadow memory 10b and the shadow disk 11b can be managed as one data structure by further using information for distinguishing between the memory address and the disk address. The shadow memory 10b and the shadow disk 11b may be realized by hardware when used on a physical machine, and may be realized by software when used on a virtual machine.

また、本実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、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 computer 1000 includes, for example, a memory 1010, a CPU 1020, a hard disk drive interface 1030, a disk drive interface 1040, a serial port interface 1050, a video adapter 1060, and a network interface 1070. These units are connected by a bus 1080.

メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1100およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。   The memory 1010 includes a ROM (Read Only Memory) 1011 and a RAM 1012. The ROM 1011 stores a boot program such as BIOS (Basic Input Output System). The hard disk drive interface 1030 is connected to the hard disk drive 1090. The disk drive interface 1040 is connected to the disk drive 1100. A removable storage medium such as a magnetic disk or an optical disk is inserted into the disk drive 1100, for example. For example, a mouse 1100 and a keyboard 1120 are connected to the serial port interface 1050. For example, a display 1130 is connected to the video adapter 1060.

ここで、図10に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した監視対象のプログラムは、例えばハードディスクドライブ1090やメモリ1010に記憶される。   Here, as shown in FIG. 10, the hard disk drive 1090 stores, for example, an OS 1091, an application program 1092, a program module 1093, and program data 1094. The monitoring target program described in the above embodiment is stored in, for example, the hard disk drive 1090 or the memory 1010.

また、監視プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明したプログラム実行部13と同様の情報処理を実行するプログラム実行手順と、テイントタグ付与部14と同様の情報処理を実行するテイントタグ付与手順と、判定部15と同様の情報処理を実行する判定手順と、書込み監視部16と同様の情報処理を実行する書込み監視手順と、挙動監視部17と同様の情報処理を実行する挙動監視手順とが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。   Further, the monitoring program is stored in, for example, the hard disk drive 1090 as a program module in which a command to be executed by the computer 1000 is described. Specifically, the program execution procedure for executing the same information processing as the program execution unit 13 described in the above embodiment, the taint tag assignment procedure for executing the same information processing as the taint tag assignment unit 14, and the determination unit 15 are the same. A program module describing a determination procedure for executing the information processing, a write monitoring procedure for executing information processing similar to that of the write monitoring unit 16, and a behavior monitoring procedure for executing information processing similar to that of the behavior monitoring unit 17 And stored in the hard disk drive 1090.

また、監視プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM1012に読み出して、上述した各手順を実行する。   In addition, data used for information processing by the monitoring program is stored in the hard disk drive 1090 as program data, for example. Then, the CPU 1020 reads out the program module and program data stored in the hard disk drive 1090 to the RAM 1012 as necessary, and executes each procedure described above.

なお、監視プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ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 hard disk drive 1090, but are stored in, for example, a removable storage medium and read out by the CPU 1020 via the disk drive 1100 or the like. Also good. Alternatively, the program module and program data related to the monitoring program are stored in another computer connected via a network such as a LAN (Local Area Network) or a WAN (Wide Area Network), and the CPU 1020 via the network interface 1070. It may be read out.

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 Hardware 2 Host OS
3 Virtual Machine Software 10 Virtual Machine 10a Virtual Physical Memory 10b Shadow Memory 11a Virtual Disk 11b Shadow Disk 12 Virtual CPU
DESCRIPTION OF SYMBOLS 13 Program execution part 14 Taint tag provision part 15 Judgment part 16 Write monitoring part 17 Behavior monitoring part 18 Virtual HW controller 18a Taint information propagation part 20 Virtual machine 1010 Memory 1011 ROM
1012 RAM
1020 CPU
1030 Hard disk drive interface 1040 Disk drive interface 1050 Serial port interface 1051 Mouse 1052 Keyboard 1060 Video adapter 1061 Display 1070 Network interface 1080 Bus 1090 Hard disk drive 1091 OS
1092 Application Program 1093 Program Module 1094 Program Data 1100 Disk Drive 1110 Mouse 1120 Keyboard 1130 Display

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に記載の情報処理装置。   The holding unit assigns an identifier to the position information in which a code portion of the monitoring target program is stored when the monitoring target program is expanded in the memory, and associates the position information with the identifier. The information processing apparatus according to claim 1, wherein the information processing apparatus 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.
JP2012104028A 2012-04-27 2012-04-27 Information processing apparatus, monitoring method, and monitoring program Active JP5766650B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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