JP2013084064A - Analyzer, analysis method, and analysis program - Google Patents
Analyzer, analysis method, and analysis program Download PDFInfo
- Publication number
- JP2013084064A JP2013084064A JP2011222241A JP2011222241A JP2013084064A JP 2013084064 A JP2013084064 A JP 2013084064A JP 2011222241 A JP2011222241 A JP 2011222241A JP 2011222241 A JP2011222241 A JP 2011222241A JP 2013084064 A JP2013084064 A JP 2013084064A
- Authority
- JP
- Japan
- Prior art keywords
- obfuscation
- blocks
- execution
- file
- unit
- 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
Abstract
Description
本発明は、解析装置、解析方法および解析プログラムに関する。 The present invention relates to an analysis apparatus, an analysis method, and an analysis program.
従来、コンピュータウィルスやスパイウェア等の悪意のあるプログラムであるマルウェアのプログラムコードは、該マルウェアの動作や機能が解析されることを妨害するために難読化されていることが多い。かかる難読化は、一つの態様として、XORエンコードや特定の鍵を利用した暗号化等の可逆なアルゴリズムを利用するものが挙げられる。また、マルウェアのプログラムコードが難読化されることで、本来のプログラムコードであるオリジナルコードが隠蔽されることはパッキングと呼ばれ、該パッキングを実行するツールは総じてパッカーと呼ばれる。 Conventionally, malware program codes that are malicious programs such as computer viruses and spyware are often obfuscated in order to prevent analysis of the operation and function of the malware. One example of such obfuscation is one that uses a reversible algorithm such as XOR encoding or encryption using a specific key. Further, obfuscation of the program code of the malware and concealing the original code, which is the original program code, is called packing, and the tools that execute the packing are generally called packers.
ところで、パッキングされたマルウェアは、難読化されたプログラムコードをデータとして有するとともに、オリジナルコードを復元するための展開コードを有する。詳細には、パッキングされたマルウェアが実行された場合には、展開コードの部分が実行されて難読化されたプログラムコードが解かれ、オリジナルコードがメモリ上に展開される。続いて、オリジナルコードの展開が完了した場合には、展開されたオリジナルコードが実行される。 By the way, the packed malware has an obfuscated program code as data and an expanded code for restoring the original code. Specifically, when the packed malware is executed, the portion of the expanded code is executed, the obfuscated program code is solved, and the original code is expanded on the memory. Subsequently, when the development of the original code is completed, the developed original code is executed.
このようなパッキングされたマルウェアに利用されているパッカーの識別方法として、シグネチャを用いたマッチング処理を行って、検査対象の実行ファイルで利用されたパッカーを特定する手法が知られている。例えば、パッキングされた展開コード部分とデータ部分の特徴的なバイト列を手動により抽出し、抽出した特徴的なバイト列をシグネチャのパターンとして用いたマッチング処理を行い、検査対象の実行ファイルで利用されたパッカーを特定する。 As a method for identifying a packer used for such packed malware, a technique is known in which a matching process using a signature is performed to identify a packer used in an execution file to be inspected. For example, a characteristic byte sequence of the packed expanded code portion and data portion is manually extracted, matching processing is performed using the extracted characteristic byte sequence as a signature pattern, and used in the execution file to be inspected. Identify the packer.
しかしながら、上述した従来技術では、パッキングされた展開コード部分とデータ部分の特徴的なバイト列を手動で抽出するので、コストが高く大量のシグネチャを作成するのが困難である。また、x86アーキテクチャの場合を例にとると正確な逆アセンブルを行うことが難しく精度の高いシグネチャを得ることが出来ない。結果、パッカーの識別精度向上を図ることが出来ないといった課題があった。 However, in the above-described conventional technique, the characteristic byte strings of the packed expanded code portion and the data portion are manually extracted. Therefore, it is difficult to create a large number of signatures at high cost. Further, taking the case of the x86 architecture as an example, it is difficult to perform accurate disassembly, and a highly accurate signature cannot be obtained. As a result, there was a problem that the packer identification accuracy could not be improved.
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、パッカーの識別精度の向上を図ることを目的とする。 Accordingly, the present invention has been made to solve the above-described problems of the prior art, and an object thereof is to improve the packer identification accuracy.
上述した課題を解決し、目的を達成するため、本願に開示する解析装置は、複数の実行ファイルに対して複数の難読化ツールそれぞれを用いて難読化された各実行ファイルを動作させ、該各実行ファイルの動作結果として得られた各命令コードを複数のブロックごとに分割する分割部と、前記分割部によって分割された各ブロックのうち、同一の難読化ツールで難読化された実行ファイル間で共通して出現するブロックを抽出し、該抽出したブロックの特徴に関する情報を生成する生成部と、前記生成部によって生成されたブロックの特徴に関する情報を用いて、検査対象の実行ファイルの難読化に用いられた難読化ツールを特定する特定部と、を備える。 In order to solve the above-described problems and achieve the object, the analysis device disclosed in the present application operates each executable file obfuscated using each of a plurality of obfuscation tools with respect to a plurality of execution files. A division unit that divides each instruction code obtained as an operation result of the executable file into a plurality of blocks, and an executable file obfuscated by the same obfuscation tool among the blocks divided by the division unit Extracting blocks that appear in common, generating information about the extracted block features, and using information about the block features generated by the generating unit to obfuscate the executable file to be examined A specifying unit that specifies the obfuscation tool used.
本願に開示する解析装置は、パッカーの識別精度の向上を図ることができるという効果を奏する。 The analysis device disclosed in the present application has an effect of improving the packer identification accuracy.
以下に添付図面を参照して、この発明に係る解析装置、解析方法および解析プログラムの実施例を詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。 Exemplary embodiments of an analysis apparatus, an analysis method, and an analysis program according to the present invention will be described below in detail with reference to the accompanying drawings. Note that the present invention is not limited to the embodiments.
[解析装置の構成]
まず、図1を用いて、実施例1に係る解析装置について説明する。図1は、実施例1に係る解析装置10の構成例を示すブロック図である。図1に示した解析装置10は、所定のプログラムを実行するコンピュータに実装される。
[Configuration of analyzer]
First, the analysis apparatus according to the first embodiment will be described with reference to FIG. FIG. 1 is a block diagram illustrating a configuration example of an
ここで、プログラムを実行するコンピュータの動作例を説明する。コンピュータによってプログラムが実行される場合には、例えば、コンピュータ内部のCPU(Central Processing Unit)は、ハードディスク装置等に記憶されているプログラムを、RAM(Random Access Memory)等のメモリ空間に展開する。具体的には、CPUは、メモリ空間に、命令や値等のデータを展開する。これにより、プログラムは、プロセスとして機能する。このようにしてプロセスが生成された後に、CPUは、プロセスメモリ空間に展開された各種データを用いて各種命令を実行する。 Here, an example of the operation of a computer that executes a program will be described. When a program is executed by a computer, for example, a CPU (Central Processing Unit) inside the computer expands a program stored in a hard disk device or the like in a memory space such as a RAM (Random Access Memory). Specifically, the CPU expands data such as instructions and values in the memory space. Thereby, the program functions as a process. After the process is generated in this manner, the CPU executes various instructions using various data expanded in the process memory space.
解析装置10は、入力部11、出力部12、制御部13および記憶部14を有する。解析装置10は、シグネチャを生成するとともに、生成したシグネチャを用いて検査対象の実行ファイルをパッキングしたパッカーを特定する。
The
入力部11は、シグネチャの生成指示や検査対象の実行ファイルなどを入力するものであり、キーボードやマウス、マイクなどを備えて構成される。出力部12は、例えば、実行ファイルにパッキングをしたパッカーを表示するものであり、モニタやスピーカを備えて構成される。
The
記憶部14は、制御部13による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、実行ファイル記憶部14a、パッキング済み実行ファイル記憶部14bおよびシグネチャ記憶部14cを有する。また、記憶部14とは、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
The
実行ファイル記憶部14aは、パッキングされる前の複数の実行ファイルを記憶する。例えば、実行ファイル記憶部14aは、複数の実行ファイル1〜nを記憶する。パッキング済み実行ファイル記憶部14bは、パッキング済みの実行ファイルを記憶する。例えば、パッキング済み実行ファイル記憶部14bは、実行ファイル1〜nに対してパッカー1〜mそれぞれを用いてパッキングされた各実行ファイル(つまり、n×m個の実行ファイル)を記憶する。シグネチャ14cは、後述するシグネチャ生成部13aによって生成されたシグネチャを記憶する。
The executable file storage unit 14a stores a plurality of executable files before packing. For example, the executable file storage unit 14a stores a plurality of
制御部13は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、シグネチャ生成部13aおよび難読化ツール識別部13bを有する。なお、制御部13として、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
The
シグネチャ生成部13aは、シグネチャとしてパッカーを識別するために利用するための各パッカーに応じた特徴的なコードブロックを抽出し、抽出したコードブロックからパッカー識別に利用するためのシグネチャを生成する。シグネチャ生成部13aは、分割部131および生成部132を有する。
The
分割部131は、複数の実行ファイルに対して複数のパッカーそれぞれを用いてパッキングされた各実行ファイルを動作させ、該各実行ファイルの動作結果として得られた各展開コードの実行トレースを複数のブロックごとに分割する。具体的には、まず、分割部131は、シグネチャの生成指示を入力部11から受け付けると、パッキング済みの実行ファイルをパッキング済み実行ファイル記憶部14bから取得する。例えば、図2の例を用いて説明すると、分割部131は、パッカー1〜mでそれぞれパッキングされたn×m個のパッキング済みの各実行ファイル(図2の例では、パッカー1(実行ファイル1〜n)、パッカー2(実行ファイル1〜n)・・・パッカーm(実行ファイル1〜n)と記載)をパッキング済み実行ファイル記憶部14bから取得する。
The dividing unit 131 operates each execution file packed using each of a plurality of packers with respect to a plurality of execution files, and executes an execution trace of each expanded code obtained as an operation result of each execution file into a plurality of blocks. Divide every. Specifically, first, upon receiving a signature generation instruction from the
そして、分割部131は、パッキング済みの各実行ファイルを動作させ、パッキング済み実行ファイルの展開コードの実行トレースを取得する。ここで実行トレースとは、プログラムの実行された命令の羅列である。x86命令を例にとると、実行された命令のオペコードとそのオペランドの組の列と言い換えてもよい。なお、実行トレースは幾つかの方法で取得することが可能である。例えば、デバッガを利用する方法、Binary Instrumentationを利用する方法、エミュレータを利用する方法、仮想マシンを利用する方法が考えられる。 Then, the dividing unit 131 operates each packed execution file, and acquires an execution trace of the expanded code of the packed execution file. Here, the execution trace is a list of instructions executed by the program. Taking the x86 instruction as an example, it may be paraphrased as a sequence of the opcode of the executed instruction and its operand. The execution trace can be acquired by several methods. For example, a method using a debugger, a method using Binary Instrumentation, a method using an emulator, and a method using a virtual machine can be considered.
また、展開コードの実行トレースとは、具体的に述べると、パッキングされた実行ファイルの先頭から各実行ファイルの本来のエントリポイントであるオリジナルエントリポイントまでの命令列である。また、オリジナルエントリポイント以外にも独自に定めた事象が現れるまで動作させることも可能である。つまり、展開コードが終わっていると思われる事象が現れる周辺まで動かせればよく、例えば、本来のオリジナルコードが利用する可能性の高いAPIの呼び出しがみられるところまで、ネットワークへの通信が発生するところまで、更にはある一定時間まで、などの指標で動かしてもよい。なお、多くのパッカーは、この展開コードを多段で持つことが多い。これは、最初の展開コードが実行されると、2段目の展開コードとデータをメモリ上に展開し、展開が終わるとその2段目の展開コードにジャンプし、その2段目の展開コードが先ほど展開されたデータの読み込みオリジナルコードを展開する。上記は2段の例だが、パッカーの中にはこの展開コードが多段になっているものも多く存在する。 More specifically, the expanded code execution trace is a sequence of instructions from the top of the packed execution file to the original entry point that is the original entry point of each execution file. In addition to the original entry point, it is possible to operate until a uniquely defined event appears. In other words, it is only necessary to move to the vicinity where an event that seems to be the end of the expanded code appears. For example, communication to the network occurs until an API call that is highly likely to be used by the original code is seen. However, it may be moved by an index such as until a certain time. Many packers often have this expanded code in multiple stages. When the first expanded code is executed, the expanded code and data of the second stage are expanded on the memory. When the expansion is completed, the jump to the expanded code of the second stage is performed, and the expanded code of the second stage is executed. Read the data that was expanded earlier and expand the original code. The above is a two-stage example, but there are many packers in which this expanded code has multiple stages.
また、本来シグネチャとして利用するバイト列としては、実行ファイルのデータ部分よりもコード部分の方が望ましい。これは、データ部分が難読化のアルゴリズムにより変動が激しく可変な状態である場合が多いため、ある特定のプログラムの特徴パターンとして利用するには向いていない。例えば、XORエンコードが利用されていた場合には、バイナリコードとXORをとる値を変更すれば生成される値は大きく変化してしまう。一方、パッキングされている実行ファイルは主に展開コードとデータから構成される。上述のようにデータ部分はシグネチャのパターンとしては適していないため、展開コード部分のバイト列をパターンとしてシグネチャに利用する方が識別の精度が高くなる。 In addition, as a byte string originally used as a signature, a code portion is preferable to a data portion of an executable file. This is often unsuitable for use as a characteristic pattern of a specific program because the data portion is often in a state of being fluctuating and variable due to an obfuscation algorithm. For example, when XOR encoding is used, if the value that takes XOR with the binary code is changed, the value to be generated changes greatly. On the other hand, the packed executable file is mainly composed of a development code and data. As described above, since the data portion is not suitable as a signature pattern, the accuracy of identification is higher when the byte sequence of the expanded code portion is used as a pattern for the signature.
続いて、分割部131は、実行トレースを特定のブロックに区切り、命令列(以下、コードブロックという)の集合を作成する。ブロックへの区切り方として、ベーシックブロック単位、一定命令数単位(n-gram)、関数単位、または上記ベーシックブロック、一定命令数、関数のn-gramが考えられる。これら各ブロックのハッシュ値を求めておく。なお、ハッシュ値を求める際、x86を例にとると、各命令のオペコード部分のみを利用してもよいし、オペランド部分も含めてハッシュ値を計算してもよい。なお、ここで計算されたハッシュ値は、後述のコードブロックの集合の比較を行う際に、計算を容易にするためのものであり、計算のコストを考慮しないのであれば、ハッシュ値を求める処理は必ずしも必要ではない。 Subsequently, the dividing unit 131 divides the execution trace into specific blocks, and creates a set of instruction sequences (hereinafter referred to as code blocks). As a method of dividing into blocks, a basic block unit, a constant instruction number unit (n-gram), a function unit, or the basic block, a constant instruction number, and a function n-gram can be considered. The hash value of each block is obtained. When obtaining a hash value, taking x86 as an example, only the opcode portion of each instruction may be used, or the hash value may be calculated including the operand portion. The hash value calculated here is for facilitating calculation when comparing sets of code blocks described later. If the calculation cost is not taken into account, the hash value is calculated. Is not necessarily required.
続いて、生成部132は、分割部131によって分割された各ブロックのうち、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックを抽出し、該抽出したコードブロックのシグネチャを生成する。例えば、生成部132は、パッカー1でパッキングした実行ファイル1〜nの各実行トレースのコードブロックのハッシュ値の集合同士を比較し、共通で出現するハッシュ値を求める。これは、言い換えると、各実行トレースの中で共通する命令コードを探しだしていることとなる。
Subsequently, the generation unit 132 extracts code blocks that appear in common among execution files packed by the same packer from the blocks divided by the division unit 131, and obtains the signatures of the extracted code blocks. Generate. For example, the generation unit 132 compares hash value sets of code blocks of the execution traces of the execution files 1 to n packed by the
上記の共通で出現するコードブロックを求める処理は、下記(1)式で定義される。つまり、パッカーqでパッキングしたi番目(0≦i≦n)の実行ファイルの実行トレースのブロックの集合をBq,iとすると、n個の実行ファイルの中に共通で出現するブロックは下記(1)式で定義される。そして、生成部132は、図2に例示するように、全てのパッカー1〜mについて、パッキングされた実行ファイルの展開コードの実行トレースに共通で出現するコードブロックを抽出する。
The process for obtaining the code block that appears in common is defined by the following equation (1). In other words, if a set of execution trace blocks of the i-th (0 ≦ i ≦ n) executable file packed by the packer q is B q, i , the blocks that appear in common in the n executable files are as follows ( 1) It is defined by the formula. Then, as illustrated in FIG. 2, the generation unit 132 extracts code blocks that appear in common in the execution trace of the expanded code of the packed execution file for all
上記の処理では、生成部132は、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックのシグネチャを生成する場合を説明したが、以下の(2)〜(5)式を用いて説明するように、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックであって、且つ、他のパッカーでパッキングされた実行ファイルでは出現しないコードブロックのシグネチャを生成するようにしてもよい。 In the above processing, the generation unit 132 has described the case of generating a signature of a code block that appears in common between executable files packed by the same packer. However, the following equations (2) to (5) are used. As will be described with reference to the above description, a signature of a code block that appears in common among executable files packed with the same packer and does not appear in an executable file packed with another packer is generated. You may do it.
例えば、生成部132は、全てのパッカー1〜mについて、パッキングされた実行ファイルの展開コード部分の実行トレースに共通で出現するコードブロックの計算が終わると、次にあるパッカーに対しては共通的に表れるが、他のパッカーの共通なコードブロックとしては出現しないコードブロックの集合を求め、これをそのパッカーに対するシグネチャとする。これを式で定義すると下記(2)式となる。パッカーの集合をPとし、パッカーのシグネチャをSqjとする。
For example, when the calculation of the code block that appears in common in the execution trace of the expanded code portion of the packed execution file is completed for all
また、生成部132は、あるパッカーで共通で出現するコードブロックから、他のパッカーの共通なコードブロック全てにおいて共通に出現するコードブロックを省くことで、シグネチャSqjを求める。これを式で定義すると下記(3)式となる。 The generation unit 132 obtains the signature S qj by omitting code blocks that appear in common in all code blocks common to other packers from code blocks that appear in common in a certain packer. When this is defined by an equation, the following equation (3) is obtained.
また、他にも、生成部132は、あるパッカーで共通で出現するコードブロックから、他の各パッカーの実行トレースのコードブロックに一つでも出現したコードを省いたコードブロックの集合をシグネチャSqjとしてもよい。これを式で定義すると下記(4)式となる。 Alternatively, it is also possible to form generating unit 132, a code block that appears in common in some packers, another signature S qj a set of code blocks even omitting the code that appeared in one code block execution trace of each packer It is good. When this is defined by an equation, the following equation (4) is obtained.
さらには、生成部132は、あるパッカーで共通で出現するコードブロックから、各パッカー内で複数の実行ファイル全てに出現するわけではないが、全てのパッカーに共通して出現するコードブロックを省くことでシグネチャSqjを作成してもよい。これを式で定義すると下記(5)式となる。 Furthermore, the generation unit 132 omits code blocks that appear in common in all packers from code blocks that appear in common in a certain packer, although they do not appear in all of the plurality of executable files in each packer. The signature S qj may be created by When this is defined by an equation, the following equation (5) is obtained.
また、シグネチャ生成部13aは、分割部によって分割された各ブロックのうち、同一のパッカーでパッキングされた実行ファイル間で共通して出現するブロックであって、且つ、パッキングされていない実行ファイルでは出現しないブロックのシグネチャを生成するようにしてもよい。
Also, the
例えば、図3に示すように、シグネチャ生成部13aは、パッカーによりパッキングされた実行ファイルのみならず、パッキングされる前の実行ファイルを実行ファイル記憶部14aから取得する。そして、シグネチャ生成部13aは、ある特定のパッカーのシグネチャを生成する際に、そのパッカーに共通的に表れるコードブロックの集合から、他のパッカーに出現するコードブロックのみならず、各実行ファイルに出現するコードブロックも併せて省くことでシグネチャを作成するようにしてもよい。
For example, as illustrated in FIG. 3, the
これにより、通常の実行ファイルに出現しやすいコードブロックを当該パッカーのシグネチャから省くことができ、よりパッカー特有のシグネチャが作成できるものと考えられる。 As a result, code blocks that tend to appear in a normal executable file can be omitted from the signature of the packer, and a packer-specific signature can be created.
難読化ツール識別部13bは、図4に示すように、シグネチャ生成部13aが生成したシグネチャを用いて、入力された検査対象実行ファイルで利用されているパッカーを特定し、特定した結果を出力する。具体的には、難読化ツール識別部13bは、検査対象実行ファイルを入力部11を介して受け付けると、検査対象実行ファイルを動作させて、実行トレースを取得する。ここで、難読化ツール識別部13bは、検査対象の実行ファイルを一旦動作させているので、2段目以降の展開コードが現れ、この部分もシグネチャと比較され、パッカーの識別処理に利用される。これにより、2段目以降の展開コードもパッカーの識別処理に利用することが可能となり、精度の高いパッカー識別処理を行うことが可能となる。
As shown in FIG. 4, the obfuscation tool identification unit 13b identifies the packer used in the input inspection target execution file using the signature generated by the
そして、難読化ツール識別部13bは、実行トレースを特定のブロックに区切り、コードブロックの集合を作成する。続いて、難読化ツール識別部13bは、作成したコードブロックとシグネチャ記憶部14cに記憶された各シグネチャSj(0≦j≦m)を比較し、スコアを算出する。
The obfuscation tool identification unit 13b then divides the execution trace into specific blocks and creates a set of code blocks. Subsequently, the obfuscation tool identification unit 13b compares the created code block with each signature S j (0 ≦ j ≦ m) stored in the
ここで、スコアの算出方法について具体的に説明する。難読化ツール識別部13bは、入力された検査対象の実行ファイルの実行トレースをシグネチャ生成部13aと同様の方法で取得し、この実行トレースから得られるコードブロックの集合Tとシグネチャ生成部13aで作成した各シグネチャを比較し、各シグネチャにおけるスコアを下記(6)式で計算する。この式により、各シグネチャのコードブロックのうち、どれだけのコードブロックが検査対象の実行ファイルの実行トレースに含まれているか(どれだけ適合するか)が分かる。
Here, the score calculation method will be specifically described. The obfuscation tool identification unit 13b obtains an execution trace of the input execution target execution file in the same manner as the
このスコアを全てのパッカー1〜mに対して求め、その中で最大値のもの(下記(7)式参照)を実行ファイルでパッキングされているパッカーとする。そして、難読化ツール識別部13bは、最大スコアのシグネチャに対応するパッカーを検査対象の実行ファイルをパッキングしたパッカーとして出力部12から出力する。なお、最大値のスコアでなく、ある閾値に基づき一定以上の値を示した場合に、その実行ファイルをパッキングしたパッカーとして識別してもよい。
This score is obtained for all
なお、パッカーには、正確な逆アセンブルを行うのが困難であるという事情がある。これは、x86のコードを例にとると、コードの最適化やキャッシュ効率を上げるためなどの理由でコード領域の中にデータを含ませることが可能なアーキテクチャになっている。パッカーでは、この特徴を悪用しコードブロックの途中にデータを含ませるなどの方法で逆アセンブルを困難にする解析妨害機能を持つことが多い。この結果としてパッキングされた実行ファイルの展開コード部分を自動的に特定するのが難しく、正確な逆アセンブル結果を得るために人手の介入が必要となることが多い。これに対して、解析装置10では、実行トレースは実際にCPUが実行した命令コードを基にしているため、明らかにコードと断定することができ、逆アセンブルの際のデータとコードの見分けがつかなくなる問題も発生しない。
The packer has a situation that it is difficult to perform accurate disassembly. Taking x86 code as an example, this is an architecture that allows data to be included in the code area for reasons such as code optimization and increased cache efficiency. Packers often have an analysis blocking function that makes disassembly difficult by exploiting this feature and including data in the middle of code blocks. As a result, it is difficult to automatically specify the expanded code portion of the packed executable file, and manual intervention is often required to obtain an accurate disassembly result. On the other hand, in the
[解析装置による処理]
次に、図5および図6を用いて、実施例1に係る解析装置10による処理を説明する。図5は、実施例1に係る解析装置のシグネチャ生成処理の手順を説明するためのフローチャートである。図6は、実施例1に係る解析装置のパッカー識別処理の手順を説明するためのフローチャートである。
[Processing by analyzer]
Next, processing performed by the
図5に示すように、解析装置10のシグネチャ生成部13aは、シグネチャ生成の指示を入力部11から受け付けると(ステップS101肯定)、パッキング済み実行ファイル記憶部14bに記憶されたパッキング済み実行ファイルを取得し、パッキング済み実行ファイルを動作させる(ステップS102)。
As illustrated in FIG. 5, when the
そして、シグネチャ生成部13aは、パッキング済み実行ファイルの展開コードの実行トレースを取得する(ステップS103)。続いて、シグネチャ生成部13aは、実行トレースを特定のブロックに区切り、コードブロックの集合を生成する(ステップS104)。
Then, the
そして、シグネチャ生成部13aは、各実行トレースのコードブロックの集合同士を比較し(ステップS105)、共通で出現するコードブロックの集合を抽出し、シグネチャを生成する(ステップS106)。具体的には、シグネチャ生成部13aは、あるパッカーに対しては共通的に表れるが、他のパッカーの共通なコードブロックとしては出現しないコードブロックの集合を求め、このコードブロックの集合をそのパッカーに対するシグネチャとして生成し、シグネチャ記憶部14cに記憶させて、処理を終了する。
Then, the
次に、図6を用いて、パッカー識別処理について説明する。図6に示すように、解析装置10の難読化ツール識別部13bは、検査対象実行ファイルを入力部11を介して受け付けると(ステップS201)、検査対象実行ファイルの実行トレースを取得する(ステップS202)。
Next, the packer identification process will be described with reference to FIG. As illustrated in FIG. 6, when the obfuscation tool identification unit 13b of the
そして、難読化ツール識別部13bは、実行トレースを特定のブロックに区切り、コードブロックの集合を作成する(ステップS203)。続いて、難読化ツール識別部13bは、作成したコードブロックとシグネチャ記憶部14cに記憶された各シグネチャを比較し、スコアを算出する(ステップS204)。
The obfuscation tool identification unit 13b then divides the execution trace into specific blocks and creates a set of code blocks (step S203). Subsequently, the obfuscation tool identification unit 13b compares the created code block with each signature stored in the
具体的には、難読化ツール識別部13bは、入力された検査対象の実行ファイルの実行トレースをシグネチャ生成部13aと同様の方法で取得し、この実行トレースから得られるコードブロックの集合Tとシグネチャ生成部13aで作成した各シグネチャを比較し、各シグネチャにおけるスコアを算出する。そして、難読化ツール識別部13bは、最大スコアのシグネチャに対応するパッカーを検査対象の実行ファイルで利用されているパッカーとして出力部12から出力する(ステップS205)。
Specifically, the obfuscation tool identification unit 13b acquires the execution trace of the input execution target execution file in the same manner as the
[実施例1の効果]
上述してきたように、解析装置10は、複数の実行ファイルに対して複数のパッカーそれぞれを用いてパッキングされた各実行ファイルを動作させ、該各実行ファイルの動作結果として得られた各命令コードを複数のブロックごとに分割する。そして、解析装置10は、分割された各ブロックのうち、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックを抽出し、該抽出したコードブロックのシグネチャを生成する。そして、解析装置10は、生成されたコードブロックのシグネチャを用いて、検査対象の実行ファイルのパッキングに用いられたパッカーを特定する。このため、精度の高いシグネチャを生成することができる結果、パッカーの識別精度の向上を図ることが可能である。
[Effect of Example 1]
As described above, the
また、実施例1によれば、分割された各コードブロックのうち、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックであって、且つ、他のパッカーでパッキングされた実行ファイルでは出現しないシグネチャを生成する。このため、よりパッカー特有のシグネチャを生成することができる結果、パッカーの識別精度の向上を図ることが可能である。 Further, according to the first embodiment, among the divided code blocks, code blocks that appear in common between execution files packed with the same packer and packed with other packers are executed. Generate a signature that does not appear in the file. For this reason, as a result of being able to generate a packer-specific signature, it is possible to improve the packer identification accuracy.
また、実施例1によれば、分割された各コードブロックのうち、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックであって、且つ、パッキングされていない実行ファイルでは出現しないコードブロックの特徴に関する情報を生成する。このため、よりパッカー特有のシグネチャを生成することができる結果、パッカーの識別精度の向上を図ることが可能である。 Further, according to the first embodiment, among the divided code blocks, code blocks that appear in common among executable files packed by the same packer and appear in an unpacked executable file Generate information about the features of the code blocks that do not. For this reason, as a result of being able to generate a packer-specific signature, it is possible to improve the packer identification accuracy.
また、実施例1によれば、検査対象の実行ファイルを動作させ、検査対象の実行ファイルの動作結果として得られた命令コードと生成されたシグネチャとの適合度合いを算出し、算出した結果に応じて、検査対象の実行ファイルのパッキングに用いられたパッカーを特定するので、パッカーの識別精度の向上を図ることが可能である。 Further, according to the first embodiment, the execution file to be inspected is operated, the degree of matching between the instruction code obtained as the operation result of the execution file to be inspected and the generated signature is calculated, and according to the calculated result Thus, since the packer used for packing the execution file to be inspected is specified, it is possible to improve the packer identification accuracy.
[解析プログラム]
図7は、解析プログラムによる処理がコンピュータを用いて具体的に実現されることを示す図である。図7に例示するように、コンピュータ1000は、例えば、メモリ1001と、CPU1002と、ハードディスクドライブインタフェース1003と、ディスクドライブインタフェース1004と、シリアルポートインタフェース1005と、ビデオアダプタ1006と、ネットワークインタフェース1007とを有し、これらの各部はバス1008によって接続される。
[Analysis program]
FIG. 7 is a diagram illustrating that the processing by the analysis program is specifically realized using a computer. As illustrated in FIG. 7, the
メモリ1001は、図7に例示するように、ROM(Read Only Memory)1001a及びRAM(Random Access Memory)1001bを含む。ROM1001aは、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1003は、図7に例示するように、ハードディスクドライブ1009に接続される。ディスクドライブインタフェース1004は、図7に例示するように、ディスクドライブ1010に接続される。例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1010に挿入される。シリアルポートインタフェース1005は、図7に例示するように、例えばマウス1011、キーボード1012に接続される。ビデオアダプタ1006は、図7に例示するように、例えばディスプレイ1013に接続される。
As illustrated in FIG. 7, the
ここで、図7に例示するように、ハードディスクドライブ1009は、例えば、OS1009a、アプリケーションプログラム1009b、プログラムモジュール1009c、プログラムデータ1009dを記憶する。すなわち、解析プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1009cとして、例えばハードディスクドライブ1009に記憶される。具体的には、上記実施例で説明したシグネチャ生成部13aと同様の処理を実行するシグネチャ生成手順と、難読化ツール識別部13bと同様の処理を実行する難読化ツール識別手順とが記述されたプログラムモジュール1009cが、ハードディスクドライブ1009に記憶される。また、解析プログラムによる処理に用いられるデータは、プログラムデータ1009dとして、例えばハードディスクドライブ1009に記憶される。そして、CPU1002が、ハードディスクドライブ1009に記憶されたプログラムモジュール1009cやプログラムデータ1009dを必要に応じてRAM1001bに読み出し、シグネチャ生成手順、難読化ツール識別手順を実行する。
Here, as illustrated in FIG. 7, the
なお、解析プログラムに係るプログラムモジュール1009cやプログラムデータ1009dは、ハードディスクドライブ1009に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1010等を介してCPU1002によって読み出されてもよい。あるいは、解析プログラムに係るプログラムモジュール1009cやプログラムデータ1009dは、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1007を介してCPU1002によって読み出されてもよい。
Note that the program module 1009c and the program data 1009d related to the analysis program are not limited to being stored in the
10 解析装置
11 入力部
12 出力部
13 制御部
13a シグネチャ生成部
13b 難読化ツール識別部
14 記憶部
14a 実行ファイル記憶部
14b パッキング済み実行ファイル記憶部
14c シグネチャ記憶部
DESCRIPTION OF
Claims (6)
前記分割部によって分割された各ブロックのうち、同一の難読化ツールで難読化された実行ファイル間で共通して出現するブロックを抽出し、該抽出したブロックの特徴に関する情報を生成する生成部と、
前記生成部によって生成されたブロックの特徴に関する情報を用いて、検査対象の実行ファイルの難読化に用いられた難読化ツールを特定する特定部と
を備えることを特徴とする解析装置。 Dividing multiple executable files by operating each executable file obfuscated using multiple obfuscation tools, and dividing each instruction code obtained as a result of each executable file into multiple blocks And
A generation unit that extracts blocks that appear in common among executable files obfuscated by the same obfuscation tool from among the blocks divided by the division unit, and generates information about the characteristics of the extracted blocks; ,
An analysis apparatus comprising: a specifying unit that specifies an obfuscation tool used for obfuscation of an execution file to be inspected using information about the feature of the block generated by the generation unit.
前記分割工程によって分割された各ブロックのうち、同一の難読化ツールで難読化された実行ファイル間で共通して出現するブロックを抽出し、該抽出したブロックの特徴に関する情報を生成する生成工程と、
前記生成工程によって生成されたブロックの特徴に関する情報を用いて、検査対象の実行ファイルの難読化に用いられた難読化ツールを特定する特定工程と
を含んだことを特徴とする解析方法。 Dividing multiple executable files by operating each executable file obfuscated using multiple obfuscation tools, and dividing each instruction code obtained as a result of each executable file into multiple blocks Process,
A generation step of extracting blocks that appear in common among executable files obfuscated by the same obfuscation tool among the blocks divided by the division step, and generating information on the characteristics of the extracted blocks; ,
And a specifying step of specifying an obfuscation tool used for obfuscation of the execution file to be inspected using information on the feature of the block generated by the generating step.
前記分割ステップによって分割された各ブロックのうち、同一の難読化ツールで難読化された実行ファイル間で共通して出現するブロックを抽出し、該抽出したブロックの特徴に関する情報を生成する生成ステップと、
前記生成ステップによって生成されたブロックの特徴に関する情報を用いて、検査対象の実行ファイルの難読化に用いられた難読化ツールを特定する特定ステップと
をコンピュータに実行させるための解析プログラム。 Dividing multiple executable files by operating each executable file obfuscated using multiple obfuscation tools, and dividing each instruction code obtained as a result of each executable file into multiple blocks Steps,
A generation step of extracting a block that appears in common among executable files obfuscated by the same obfuscation tool among the blocks divided by the division step, and generating information on the characteristics of the extracted block; ,
An analysis program for causing a computer to execute a specific step of identifying an obfuscation tool used for obfuscation of an execution file to be inspected using information on the feature of the block generated by the generation step.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011222241A JP5687593B2 (en) | 2011-10-06 | 2011-10-06 | Analysis device, analysis method, and analysis program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011222241A JP5687593B2 (en) | 2011-10-06 | 2011-10-06 | Analysis device, analysis method, and analysis program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013084064A true JP2013084064A (en) | 2013-05-09 |
JP5687593B2 JP5687593B2 (en) | 2015-03-18 |
Family
ID=48529212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011222241A Expired - Fee Related JP5687593B2 (en) | 2011-10-06 | 2011-10-06 | Analysis device, analysis method, and analysis program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5687593B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10325094B2 (en) | 2014-08-28 | 2019-06-18 | Mitsubishi Electric Corporation | Process analysis apparatus, process analysis method, and process analysis for determining input/output relation of a block of execution trace to detect potential malware |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011523748A (en) * | 2008-05-28 | 2011-08-18 | シマンテック コーポレーション | Intelligent hash for centrally detecting malware |
-
2011
- 2011-10-06 JP JP2011222241A patent/JP5687593B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011523748A (en) * | 2008-05-28 | 2011-08-18 | シマンテック コーポレーション | Intelligent hash for centrally detecting malware |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10325094B2 (en) | 2014-08-28 | 2019-06-18 | Mitsubishi Electric Corporation | Process analysis apparatus, process analysis method, and process analysis for determining input/output relation of a block of execution trace to detect potential malware |
Also Published As
Publication number | Publication date |
---|---|
JP5687593B2 (en) | 2015-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2015101096A1 (en) | Method and device for detecting malicious code in smart terminal | |
WO2015101097A1 (en) | Method and device for feature extraction | |
US20080289042A1 (en) | Method for Identifying Unknown Virus and Deleting It | |
US10586026B2 (en) | Simple obfuscation of text data in binary files | |
US11048798B2 (en) | Method for detecting libraries in program binaries | |
KR102317833B1 (en) | method for machine LEARNING of MALWARE DETECTING MODEL AND METHOD FOR detecting Malware USING THE SAME | |
EP3506140B1 (en) | Hacking code sensing device, hacking code sensing method, and hacking code sensing program | |
WO2015101043A1 (en) | Method and device for detecting malicious code in smart terminal | |
KR20170068814A (en) | Apparatus and Method for Recognizing Vicious Mobile App | |
KR20120105759A (en) | Malicious code visualization apparatus, apparatus and method for detecting malicious code | |
RU2722692C1 (en) | Method and system for detecting malicious files in a non-isolated medium | |
WO2015035827A1 (en) | Method and apparatus for providing string encryption and decryption in program files | |
US11250129B2 (en) | Method and system for determining affiliation of software to software families | |
US20150248288A1 (en) | Compiled file normalization | |
JP5456715B2 (en) | Data identification device, data identification method, and data identification program | |
KR20190080445A (en) | Whitelist construction method for analyzing malicious code, computer readable medium and device for performing the method | |
Chen et al. | Malware classification using static disassembly and machine learning | |
Aslanyan et al. | Scalable Framework for Accurate Binary Code Comparison | |
JP5687593B2 (en) | Analysis device, analysis method, and analysis program | |
US11307962B2 (en) | Method for semantic preserving transform mutation discovery and vetting | |
JP5952218B2 (en) | Information processing apparatus and information processing method | |
JP6674048B2 (en) | Judgment device, judgment method and judgment program | |
Wrench et al. | Detecting derivative malware samples using deobfuscation-assisted similarity analysis | |
Kinger et al. | Malware analysis using machine learning techniques | |
JP7355211B2 (en) | Signature generation device, signature generation method, and signature generation program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140115 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140826 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140902 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141016 |
|
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: 20150120 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150122 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5687593 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |