JP2011086147A - Device, method and program for calculating similarity - Google Patents

Device, method and program for calculating similarity Download PDF

Info

Publication number
JP2011086147A
JP2011086147A JP2009239014A JP2009239014A JP2011086147A JP 2011086147 A JP2011086147 A JP 2011086147A JP 2009239014 A JP2009239014 A JP 2009239014A JP 2009239014 A JP2009239014 A JP 2009239014A JP 2011086147 A JP2011086147 A JP 2011086147A
Authority
JP
Japan
Prior art keywords
machine language
similarity
instruction
longest common
instruction sequence
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
JP2009239014A
Other languages
Japanese (ja)
Other versions
JP5301411B2 (en
Inventor
Makoto Iwamura
誠 岩村
Mitsuyasu Ito
光恭 伊藤
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 JP2009239014A priority Critical patent/JP5301411B2/en
Publication of JP2011086147A publication Critical patent/JP2011086147A/en
Application granted granted Critical
Publication of JP5301411B2 publication Critical patent/JP5301411B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To highly accurately calculate the similarity of machine word instruction strings by a small amount of computational complexity. <P>SOLUTION: A similarity calculation device 10 includes: a contracted instruction string generation part 14c for generating a contracted instruction string 13b which is an array of contracted instructions obtained by excluding operand portions of respective machine word instructions included in a machine word instruction string; a longest common section string extraction part 14d for mutually comparing contracted instruction strings 13b generated by the contracted instruction string generation part 14c and extracting the longest common section string; and a similarity calculation part 14e for calculating the similarity of the respective machine word instruction strings on the basis of the longest common section strings extracted by the longest common section string extraction part 14d. <P>COPYRIGHT: (C)2011,JPO&INPIT

Description

本発明は、機械語命令列の類似性を算出する類似性算出装置、類似性算出方法および類似性算出プログラムに関する。   The present invention relates to a similarity calculation device, a similarity calculation method, and a similarity calculation program for calculating the similarity of machine language instruction sequences.

近年、インターネット等のネットワークの普及にともなって、コンピュータウィルスやワームといったマルウェアへの対策に大きなコストがかかるようになっている。マルウェアへの対策にコストがかかることの要因の一つは、マルウェア作者によって積極的に亜種が開発されるために、マルウェアの種類数が増加し、マルウェアの解析作業に時間を要することにある。   In recent years, with the spread of networks such as the Internet, measures against malware such as computer viruses and worms have become costly. One of the reasons for the cost of malware countermeasures is that the malware authors are actively developing variants, which increases the number of malware types and takes time to analyze malware. .

そこで、マルウェアを分類することでその解析コストを抑える研究が行われている。マルウェアを分類する手法には、大きく分けて挙動に基づいて分類する手法とプログラムコード(機械語命令列)に基づいて分類する手法とがある。   Therefore, research to reduce the analysis cost by classifying malware is being conducted. There are two methods for classifying malware: a method of classifying based on behavior and a method of classifying based on program code (machine language instruction sequence).

挙動に基づいて分類する手法では、ファイルシステムやネットワーク等のシステムリソースへのアクセスを監視できる環境が用意され、その環境において実際にマルウェアを動作させることでマルウェアの挙動に関する情報が取得される。そして、取得された挙動に関する情報の類似性をマルウェアの類似性とみなすことでマルウェアが分類される(非特許文献1参照)。   In the method of classifying based on behavior, an environment in which access to system resources such as a file system and a network can be monitored is prepared, and information on the behavior of the malware is acquired by actually operating the malware in the environment. And the malware is classified by regarding the similarity of the information regarding the acquired behavior as the similarity of the malware (see Non-Patent Document 1).

一方、プログラムコードに基づいて分類する手法では、挙動による手法とは異なり、マルウェアに内在する機能も踏まえた分類が可能である。プログラムコードに基づいて分類する手法には、プログラムコードの類似性の算出方法によって、以下に説明するようないくつかの手法が存在する。   On the other hand, the classification based on the program code allows classification based on the functions inherent in malware, unlike the behavioral technique. As a method of classifying based on the program code, there are several methods as described below depending on the method of calculating the similarity of the program code.

ある手法では、プログラムコードを逆アセンブルすることで命令種別の系列を抽出し、頻出するN−perms(順序性を持たないN個の命令種別系列)を特徴として用いることで、マルウェアの類似度が算出される(非特許文献2参照)。この手法によれば、順序性を持つN−gramsと比較して順序性を持たないN−permsを用いることで、コンパイラの最適化により発生する命令の入れ替えの影響を緩和することを期待できる。また、他の手法では、プログラムコードを逆アセンブルし、コールツリー(関数の呼び出し関係を表す木)を構築し、その木構造の類似性がマルウェアの類似性とされる(非特許文献3参照)。   In one method, a sequence of instruction types is extracted by disassembling the program code, and N-perms that frequently appear (N instruction type sequences having no order) are used as features, so that the degree of malware similarity is increased. Is calculated (see Non-Patent Document 2). According to this method, it can be expected that the influence of instruction replacement generated by compiler optimization is mitigated by using N-perms that do not have order as compared with N-grams that have order. In another method, the program code is disassembled to construct a call tree (a tree representing a function calling relationship), and the similarity of the tree structure is regarded as the similarity of malware (see Non-Patent Document 3). .

特開2009−193161号公報JP 2009-193161 A

M. Bailey, J. Oberheide, J. Andersen, Z. M. Mao, F. Jahanian, and J. Nazario. "Automated classification and analysis of internet malware". In Proceedings of the 10th Symposium on Recent Advances in Intrusion Detection (RAID'07). pages 178--197, 2007.M. Bailey, J. Oberheide, J. Andersen, ZM Mao, F. Jahanian, and J. Nazario. "Automated classification and analysis of internet malware". In Proceedings of the 10th Symposium on Recent Advances in Intrusion Detection (RAID'07 pages 178--197, 2007. Karim, M. E., Walenstein, A., Lakhotia, A., and Parida, L. "Malware Phylogeny Generation using Permutations of Code". European Research Journal of Computer Virology 1, 1-2 (Nov. 2005) 13--23.Karim, M. E., Walenstein, A., Lakhotia, A., and Parida, L. "Malware Phylogeny Generation using Permutations of Code". European Research Journal of Computer Virology 1, 1-2 (Nov. 2005) 13--23. Ero Carrera and Gergely Erdelyi, "Digital Genome Mapping -- Advanced Binary Malware Analysis". Virus Bulletin Conference September 2004.Ero Carrera and Gergely Erdelyi, "Digital Genome Mapping-Advanced Binary Malware Analysis". Virus Bulletin Conference September 2004. D.S. Hirschberg, A linear space algorithm for computing maximal common subsequences, Comm. Assoc. Comput. Mach., 18:6, 341.343, 1975.D.S.Hirschberg, A linear space algorithm for computing maximal common subsequences, Comm.Assoc.Comput.Mach., 18: 6, 341.343, 1975. Maxime Crochemore, Costas S. Iliopoulos, Yoan J. Pinzon: Speeding-up Hirschberg and Hunt-Szymanski LCS Algorithms. Fundam. Inform. 56(1-2): 89-103 (2003)Maxime Crochemore, Costas S. Iliopoulos, Yoan J. Pinzon: Speeding-up Hirschberg and Hunt-Szymanski LCS Algorithms. Fundam. Inform. 56 (1-2): 89-103 (2003)

しかしながら、上述した従来技術のうち、挙動に基づいて分類する手法は、マルウェアそのものを解析対象とする必要がないため容易に実現可能だが、ボットのように攻撃者からの指令なしには動作しないマルウェアについては、挙動を確認することが困難であるため、分類することができないという問題があった。   However, among the above-mentioned conventional techniques, the method of classifying based on behavior is easily realized because the malware itself does not need to be analyzed, but it does not operate without instructions from an attacker like a bot. For, there was a problem that it was difficult to classify because it was difficult to confirm the behavior.

また、プログラムコードに基づいて分類する手法のうち、N−permsを利用した手法には、Nが小さい場合は全く異なるマルウェアであっても類似度が高くなり、Nが大きい場合はわずかな差分であっても類似度に大きな影響を及ぼす可能性があるという問題があった。また、N−permsの統計情報を比較することになるため、比較したマルウェアのどこが一致しどこが一致しなかったかを厳密に算出することが難しいという問題があった。   Of the methods classified based on the program code, the method using N-perms increases the similarity even if the malware is completely different when N is small, and with a slight difference when N is large. Even if it exists, there existed a problem of having a big influence on similarity. Further, since the statistical information of N-perms is compared, there is a problem that it is difficult to calculate exactly where the compared malware matches and where does not match.

また、コールツリーの類似度を用いた手法には、多大な計算量を要する上に、関数の呼び出し関係のみをマルウェアの特徴とするため、全く異なるマルウェアに関しても類似度が高くなる可能性があるという問題があった。   In addition, the method using the similarity of the call tree requires a large amount of calculation, and since only the function call relationship is a characteristic of the malware, the similarity may be high even for completely different malware. There was a problem.

本発明は、上記に鑑みてなされたものであって、マルウェア等の機械語命令列の類似性を少ない計算量で高精度に算出することができる類似性算出装置、類似性算出方法および類似性算出プログラムを提供することを目的とする。   The present invention has been made in view of the above, and a similarity calculation device, a similarity calculation method, and a similarity that can calculate the similarity of a machine language instruction sequence such as malware with a small amount of calculation with high accuracy An object is to provide a calculation program.

上述した課題を解決し、目的を達成するために、本発明は、複数の機械語命令列の類似性を算出する類似性算出装置であって、前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成手段と、前記縮約命令列生成手段によって生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出手段と、前記最長共通部分列抽出手段によって抽出された最長共通部分列に基づいて、前記機械語命令列の類似性を算出する類似性算出手段とを備えたことを特徴とする。   In order to solve the above-described problems and achieve the object, the present invention is a similarity calculation device for calculating the similarity of a plurality of machine language instruction sequences, and for each of the plurality of machine language instruction sequences, a machine language Reduced instruction sequence generating means for generating a reduced instruction sequence that is an array of reduced instructions obtained by removing the operand portion from each machine language instruction included in the instruction sequence, and the reduction generated by the reduced instruction sequence generating means The longest common partial sequence extracting means for comparing the instruction sequences and extracting the longest common partial sequence, and the similarity of the machine language instruction sequence based on the longest common partial sequence extracted by the longest common partial sequence extracting means. And a similarity calculating means for calculating.

また、他の態様において、本発明は、複数の機械語命令列の類似性を算出する類似性算出方法であって、前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成工程と、前記縮約命令列生成工程において生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出工程と、前記最長共通部分列抽出工程において抽出された最長共通部分列に基づいて、前記機械語命令列の類似性を算出する類似性算出工程とを含んだことを特徴とする。   In another aspect, the present invention provides a similarity calculation method for calculating a similarity between a plurality of machine language instruction sequences, wherein each machine included in a machine language instruction sequence is included in each of the plurality of machine language instruction sequences. A reduced instruction sequence generating step for generating a reduced instruction sequence that is an array of reduced instructions obtained by removing an operand part from a word instruction and the reduced instruction sequence generated in the reduced instruction sequence generating step; A longest common subsequence extraction step for extracting the longest common subsequence, and a similarity calculation step for calculating the similarity of the machine language instruction sequence based on the longest common subsequence extracted in the longest common subsequence extraction step; It is characterized by including.

また、他の態様において、本発明は、複数の機械語命令列の類似性を算出する類似性算出プログラムであって、前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成手順と、前記縮約命令列生成手順によって生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出手順と、前記最長共通部分列抽出手順によって抽出された最長共通部分列に基づいて、前記機械語命令列の類似性を算出する類似性算出手順とをコンピュータに実行させることを特徴とする。   In another aspect, the present invention provides a similarity calculation program for calculating similarity between a plurality of machine language instruction sequences, wherein each machine included in a machine language instruction sequence is included in each of the plurality of machine language instruction sequences. A reduced instruction string generation procedure that generates a reduced instruction string that is an array of reduced instructions obtained by removing operand parts from word instructions and the reduced instruction string generated by the reduced instruction string generation procedure; A longest common subsequence extraction procedure for extracting the longest common subsequence, and a similarity calculation procedure for calculating the similarity of the machine language instruction sequence based on the longest common subsequence extracted by the longest common subsequence extraction procedure; Is executed by a computer.

本発明にかかる類似性算出装置、類似性算出方法および類似性算出プログラムは、機械語命令列の類似性を少ない計算量で高精度に算出することができるという効果を奏する。   The similarity calculation device, the similarity calculation method, and the similarity calculation program according to the present invention have an effect that the similarity of the machine language instruction sequence can be calculated with a small amount of calculation with high accuracy.

図1は、実施例1に係る類似性算出装置の構成を示すブロック図である。FIG. 1 is a block diagram illustrating the configuration of the similarity calculation apparatus according to the first embodiment. 図2は、縮約命令の構成の例を示す図である。FIG. 2 is a diagram illustrating an example of the configuration of the contracted instruction. 図3は、類似度行列データの一例を示す図である。FIG. 3 is a diagram illustrating an example of similarity matrix data. 図4は、実施例1に係る類似性算出装置の動作を示すフローチャートである。FIG. 4 is a flowchart illustrating the operation of the similarity calculation apparatus according to the first embodiment. 図5は、実施例2に係る類似性算出装置の構成を示すブロック図である。FIG. 5 is a block diagram illustrating the configuration of the similarity calculation apparatus according to the second embodiment. 図6は、差分解析結果データの一例を示す図である。FIG. 6 is a diagram illustrating an example of difference analysis result data. 図7は、実施例2に係る類似性算出装置の動作を示すフローチャートである。FIG. 7 is a flowchart illustrating the operation of the similarity calculation apparatus according to the second embodiment. 図8は、類似性算出プログラムを実行するコンピュータを示す機能ブロック図である。FIG. 8 is a functional block diagram illustrating a computer that executes the similarity calculation program.

以下に、本発明にかかる類似性算出装置、類似性算出方法および類似性算出プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例では、本発明にかかる類似性算出装置、類似性算出方法および類似性算出プログラムをマルウェアの類似性を算出するために用いる場合について説明するが、これらの実施例によりこの発明が限定されるものではない。   Embodiments of a similarity calculation device, a similarity calculation method, and a similarity calculation program according to the present invention will be described below in detail with reference to the drawings. In the following embodiments, the case where the similarity calculation device, the similarity calculation method, and the similarity calculation program according to the present invention are used for calculating the similarity of malware will be described. Is not limited.

まず、本実施例に係る類似性算出装置10の構成について説明する。図1は、類似性算出装置10の構成を示すブロック図である。図1に示すように、類似性算出装置10は、表示部11と、入力部12と、記憶部13と、制御部14とを有する。   First, the configuration of the similarity calculation apparatus 10 according to the present embodiment will be described. FIG. 1 is a block diagram illustrating a configuration of the similarity calculation apparatus 10. As illustrated in FIG. 1, the similarity calculation device 10 includes a display unit 11, an input unit 12, a storage unit 13, and a control unit 14.

表示部11は、例えば、液晶表示装置や有機EL(Electro-Luminescence)表示装置であり、各種情報を利用者に対して表示する。入力部12は、例えば、キーボードやマウスを含み、利用者からの指示を受け付ける。なお、表示部11や入力部12は、必須の構成要素ではなく、例えば、利用者からの指示をネットワーク経由で受け付け、受け付けた指示に対する応答をネットワーク経由で利用者へ送信するように類似性算出装置10を構成してもよい。   The display unit 11 is, for example, a liquid crystal display device or an organic EL (Electro-Luminescence) display device, and displays various types of information to the user. The input unit 12 includes, for example, a keyboard and a mouse, and receives instructions from the user. Note that the display unit 11 and the input unit 12 are not essential components. For example, the similarity calculation is performed so that an instruction from the user is received via the network and a response to the received instruction is transmitted to the user via the network. The apparatus 10 may be configured.

記憶部13は、例えば、ハードディスク装置や半導体メモリであり、実行モジュール13a等の各種の電子情報を記憶する。実行モジュール13aは、例えば、マルウェアであり、類似性の算出対象の機械語命令列や、機械語命令列によって利用されるデータ列等を含む。実行モジュール13aは、例えば、ネットワークやDVD等の記憶媒体を経由して記憶部13に格納される。   The storage unit 13 is, for example, a hard disk device or a semiconductor memory, and stores various electronic information such as the execution module 13a. The execution module 13a is, for example, malware, and includes a machine language instruction sequence for which similarity is calculated, a data sequence used by the machine language instruction sequence, and the like. The execution module 13a is stored in the storage unit 13 via a storage medium such as a network or a DVD, for example.

記憶部13は、制御部14が中間データとして生成する縮約命令列13bや、制御部14が処理結果として生成する類似度行列データ13cの格納場所としても利用される。   The storage unit 13 is also used as a storage location for the contracted instruction sequence 13b generated by the control unit 14 as intermediate data and the similarity matrix data 13c generated by the control unit 14 as a processing result.

制御部14は、類似性算出装置10を全体制御する制御部であり、アンパッキング部14aと、逆アセンブル部14bと、縮約命令列生成部14cと、最長共通部分列抽出部14dと、類似性算出部14eとを有する。   The control unit 14 is a control unit that controls the similarity calculating apparatus 10 as a whole, and is similar to the unpacking unit 14a, the disassembly unit 14b, the reduced instruction sequence generation unit 14c, and the longest common partial sequence extraction unit 14d. And a sex calculation unit 14e.

アンパッキング部14aは、記憶部13に記憶されている各実行モジュール13aにアンパッキング処理を施して逆アセンブル部14bへ出力する。マルウェアの多くは、解析を困難にするためにパッキングと呼ばれる処理が適用され、オリジナルの機械語命令列が隠蔽されている。アンパッキング部14aは、実行モジュール13aにパッキングが施されている場合、既存のアンパッキング技術を利用して、オリジナルの機械語命令列を再現する。なお、実行モジュール13aにパッキングが施されていない場合、アンパッキング部14aは、実行モジュール13aをそのまま逆アセンブル部14bへ出力する。   The unpacking unit 14a performs an unpacking process on each execution module 13a stored in the storage unit 13 and outputs it to the disassembly unit 14b. In many malware, a process called packing is applied to make analysis difficult, and the original machine language instruction sequence is concealed. When the execution module 13a is packed, the unpacking unit 14a reproduces the original machine language instruction sequence by using an existing unpacking technique. When the execution module 13a is not packed, the unpacking unit 14a outputs the execution module 13a as it is to the disassembly unit 14b.

逆アセンブル部14bは、アンパッキング部14aから入力された実行モジュール13aを逆アセンブルし、逆アセンブルした機械語命令列を縮約命令列生成部14cへ出力する。上述したように、実行モジュール13aには、機械語命令列以外に処理対象のデータ列等が含まれるが、逆アセンブル部14bは、機械語命令列の逆アセンブル結果のみを縮約命令列生成部14cへ出力する。なお、実行モジュール13aに含まれる機械語命令列の選別は、例えば、特許文献1にて開示されている技術を利用して実現することができる。   The disassembly unit 14b disassembles the execution module 13a input from the unpacking unit 14a, and outputs the disassembled machine language instruction sequence to the contracted instruction sequence generation unit 14c. As described above, the execution module 13a includes a data string to be processed in addition to the machine language instruction sequence, but the disassembly unit 14b is a reduced instruction sequence generation unit that generates only the disassembly result of the machine language instruction sequence. To 14c. The selection of the machine language instruction sequence included in the execution module 13a can be realized using, for example, the technique disclosed in Patent Document 1.

縮約命令列生成部14cは、逆アセンブル部14bから入力された機械語命令列から縮約命令列を生成する。ここで、縮約命令とは、機械語命令からオペランド部分を削除した命令をいい、縮約命令列とは、機械語命令列に含まれる各機械語命令から変換された縮約命令の配列をいう。   The contracted instruction sequence generation unit 14c generates a contracted instruction sequence from the machine language instruction sequence input from the disassemble unit 14b. Here, the contracted instruction is an instruction in which the operand part is deleted from the machine language instruction, and the contracted instruction sequence is an array of contracted instructions converted from each machine language instruction included in the machine language instruction sequence. Say.

例えば、機械語命令が分岐命令の場合、機械語命令のオペランド部分には分岐先情報が含まれる。そして、分岐先情報は、マルウェア作者によってマルウェアの亜種が作成された場合のように、実行モジュールが改変された場合に、分岐元と分岐先の間に新たな命令が追加される等して変化してしまうことがある。   For example, when the machine language instruction is a branch instruction, the operand part of the machine language instruction includes branch destination information. The branch destination information is obtained by adding a new instruction between the branch source and the branch destination when the execution module is modified, such as when a malware variant is created by the malware author. It may change.

また、メモリアクセスに必要となる絶対アドレスもオペランドとして指定されるが、実行モジュールが動的リンクライブラリとして実装されている場合、ロードされるアドレスが一定ではなく、当該ライブラリがロードされるタイミングによっては絶対アドレスが変化する。   The absolute address required for memory access is also specified as an operand, but when the execution module is implemented as a dynamic link library, the address to be loaded is not constant, and depending on the timing at which the library is loaded Absolute address changes.

このように、機械語命令のオペランド部分の内容は、機械語命令列が実質的には改変されていない場合でも変化することがある。このため、類似性の算出にオペランド部分を含んだ機械語命令列を用いると、機械語命令列のうち実質的には改変されていない部分までも相違部分と判断されるおそれがある。   As described above, the contents of the operand portion of the machine language instruction may change even when the machine language instruction sequence is not substantially modified. For this reason, when a machine language instruction sequence including an operand part is used for calculating the similarity, even a part of the machine language instruction string that is not substantially modified may be determined as a different part.

そこで、本実施例に係る類似性算出方法では、オペランド部分が除かれた縮約命令列を用いて類似性が算出される。オペランド部分が除かれた縮約命令列を用いて類似性を算出することにより、オペランド部分の内容の変化の影響をうけることなく、機械語命令列の類似性を高精度に算出することが可能になる。   Therefore, in the similarity calculation method according to the present embodiment, the similarity is calculated using the reduced instruction sequence from which the operand portion is removed. By calculating the similarity using the reduced instruction sequence from which the operand part is removed, the similarity of the machine language instruction sequence can be calculated with high accuracy without being affected by the change in the contents of the operand part. become.

ここで、縮約命令列生成部14cが機械語命令から変換して生成する縮約命令について、IA−32命令セットの場合を例としてさらに詳しく説明する。IA−32命令セットにおける機械語命令は、命令の修飾語となるプレフィックス部、命令の種類を表すオペコード部、オペランドの型を表すMod/RMとSIB、オペランドがメモリ上である場合のアドレス部、オペランドが即値であった場合の即値部から構成される。   Here, the contracted instruction generated by converting the contracted instruction sequence generation unit 14c from the machine language instruction will be described in more detail by taking the case of the IA-32 instruction set as an example. The machine language instruction in the IA-32 instruction set includes a prefix part that is an instruction modifier, an opcode part that represents an instruction type, Mod / RM and SIB that represent an operand type, and an address part when the operand is in memory. Consists of an immediate part when the operand is an immediate value.

IA−32命令セットにおけるプレフィックスは4つのグループに分けられ、グループ1には3通り、グループ2には6通り、グループ3には1通り、グループ4には1通りのプレフィックスが存在し、各グループで一つ以下のプレフィックスが選択される。また、オペコードに関しては、1バイト目が0x0F以外の場合はその値、0x0Fの場合は2バイト目の値が実質的なオペコードとなる。オペコードが決まると、オペランドの有無、Mod/RMの有無、即値の有無が確定する。さらに、Mod/RMの値によってSIBの有無が確定し、SIBの値によってアドレス部の有無が確定する。   The prefixes in the IA-32 instruction set are divided into four groups. There are three types of prefixes in group 1, six types in group 2, one type in group 3, and one type in group 4. Will select less than one prefix. Regarding the operation code, when the first byte is other than 0x0F, the value is the value, and when the first byte is 0x0F, the value of the second byte is the substantial operation code. When the opcode is determined, the presence / absence of an operand, the presence / absence of Mod / RM, and the presence / absence of an immediate value are determined. Further, the presence / absence of an SIB is determined by the value of Mod / RM, and the presence / absence of an address portion is determined by the value of SIB.

本実施例では、縮約命令として、プレフィックス部、オペコード部、Mod/RMとSIBの情報を組み合わせて利用する。本実施例における縮約命令の構成の例を図2に示す。図2に示す例では、縮約命令は、2ビットのP1と、3ビットのP2と、1ビットのP3、P4およびOLと、8ビットのOC、MおよびSとからなる。   In the present embodiment, a prefix instruction, an opcode part, Mod / RM and SIB information are used in combination as contraction instructions. An example of the configuration of the contracted instruction in this embodiment is shown in FIG. In the example shown in FIG. 2, the contracted instruction includes 2-bit P1, 3-bit P2, 1-bit P3, P4, and OL, and 8-bit OC, M, and S.

P1は、グループ1のプレフィックスに対応する。具体的には、P1は、グループ1のプレフィックスが存在しない場合は「0」となり、グループ1のプレフィックスの値が「F0H」、「F2H」、「F3H」の場合はそれぞれ「1」、「2」、「3」となる。P2は、グループ2のプレフィックスに対応する。具体的には、P2は、グループ2のプレフィックスが存在しない場合は「0」となり、グループ2のプレフィックスの値が「2EH」、「36H」、「3EH」、「26H」、「64H」、「65H」の場合はそれぞれ「1」、「2」、「3」、「4」、「5」、「6」となる。   P1 corresponds to the prefix of group 1. Specifically, P1 is “0” when there is no group 1 prefix, and “1” and “2” when the group 1 prefix value is “F0H”, “F2H”, and “F3H”, respectively. "," 3 ". P2 corresponds to the prefix of group 2. Specifically, P2 is “0” when the group 2 prefix does not exist, and the group 2 prefix values are “2EH”, “36H”, “3EH”, “26H”, “64H”, “ In the case of “65H”, they are “1”, “2”, “3”, “4”, “5”, and “6”, respectively.

P3は、グループ3のプレフィックスに対応する。具体的には、P3は、グループ3のプレフィックスが存在しない場合は「0」となり、グループ3のプレフィックスの値が「66H」の場合は「1」となる。P4は、グループ4のプレフィックスに対応する。具体的には、P4は、グループ4のプレフィックスが存在しない場合は「0」となり、グループ4のプレフィックスの値が「67H」の場合は「1」となる。   P3 corresponds to the prefix of group 3. Specifically, P3 is “0” when there is no group 3 prefix, and “1” when the group 3 prefix value is “66H”. P4 corresponds to the prefix of group 4. Specifically, P4 is “0” when there is no group 4 prefix and “1” when the group 4 prefix value is “67H”.

OLは、オペコードの1バイト目が0x0Fであるかを示し、オペコードの1バイト目が0x0Fであれば「1」となり、さもなければ「0」となる。OCは、オペコードの実質的な値であり、オペコードの1バイト目が0x0Fであればオペコードの2バイト目の値が設定され、さもなければオペコードの1バイト目の値が設定される。   OL indicates whether the first byte of the operation code is 0x0F. If the first byte of the operation code is 0x0F, “1” is set. Otherwise, “0” is set. OC is a substantial value of the operation code. If the first byte of the operation code is 0x0F, the value of the second byte of the operation code is set. Otherwise, the value of the first byte of the operation code is set.

Mは、ModR/Mに対応し、ModR/Mが存在する場合はModR/Mの値が設定され、さもなければ「0」が設定される。Sは、SIBに対応し、SIBが存在する場合はSIBの値が設定され、さもなければ「0」が設定される。   M corresponds to ModR / M. If ModR / M exists, the value of ModR / M is set, otherwise, “0” is set. S corresponds to the SIB, and if the SIB exists, the SIB value is set; otherwise, “0” is set.

IA−32命令セットにおける機械語命令は、命令の種別等によって長さが異なるが、図2に示すように、本実施例における縮約命令の長さは、命令の種類によらずに32ビットの固定長となる。32ビットというサイズは、IA−32における汎用レジスタのビット幅と同じであり、縮約命令列を効率よく処理するのに好適である。また、縮約命令列を固定長の要素からなる配列として形成することは、後述するビットベクトル化アルゴリズムを利用した共通部分の抽出処理を容易に実現するために好適である。   The machine language instructions in the IA-32 instruction set have different lengths depending on the instruction type and the like, but as shown in FIG. 2, the length of the reduced instruction in this embodiment is 32 bits regardless of the instruction type. It becomes a fixed length. The size of 32 bits is the same as the bit width of the general-purpose register in IA-32, and is suitable for efficiently processing the reduced instruction sequence. Also, forming the contracted instruction sequence as an array of fixed-length elements is suitable for easily realizing the common part extraction process using a bit vectorization algorithm described later.

最長共通部分列抽出部14dは、縮約命令列生成部14cによって生成された縮約命令列の全ての組合せについて、最長共通部分列(Longest Common Subsequence)を抽出する。例えば、{a,b,c,d,e}という5つの命令からなる縮約命令列と、{f,b,g,d,h}という4つの命令からなる縮約命令列があった場合、これら縮約命令列の共通部分列は{b,d}である。縮約命令列からの最長共通部分列の抽出は、例えば、動的計画法および分割統治法に基づく計算量o(mn)、メモリ使用量o(n)のアルゴリズム(非特許文献4参照)を利用することにより、少ない計算量で実現することができる。また、このアルゴリズムにビットベクトル化と呼ばれる手法を適用することで計算機における演算単位ビット数倍の高速化を達成するアルゴリズム(非特許文献5参照)を利用することもできる。   The longest common subsequence extraction unit 14d extracts the longest common subsequence for all combinations of the reduced instruction sequences generated by the reduced instruction sequence generation unit 14c. For example, when there is a reduced instruction sequence consisting of five instructions {a, b, c, d, e} and a reduced instruction sequence consisting of four instructions {f, b, g, d, h} The common partial sequence of these contracted instruction sequences is {b, d}. The extraction of the longest common subsequence from the contracted instruction sequence is performed, for example, by using an algorithm of calculation amount o (mn) and memory usage amount o (n) based on dynamic programming and divide-and-conquer (see Non-Patent Document 4). By using it, it can be realized with a small amount of calculation. In addition, by applying a technique called bit vectorization to this algorithm, an algorithm (see Non-Patent Document 5) that achieves a speed increase of the number of arithmetic unit bits in a computer can be used.

なお、ビットベクトル化を適用するアルゴリズムには、メモリ使用量が比較要素のアルファベットサイズをσとしたときo(σn)となるため、σが非常に大きくなるとビットベクトル化を適用することが困難になるという問題があることが知られている。本実施例に係る類似性算出方法では、比較要素として機械語命令からオペランドを取り除いた縮約命令を用いており、機械語命令を比較要素とする場合と比べてσを小さくすることができるため、ビットベクトル化を適用した際にもメモリ使用量を少なく抑えることが可能になっている。   Note that the algorithm for applying bit vectorization is o (σn) when the memory usage is σ when the alphabet size of the comparison element is σ. Therefore, it becomes difficult to apply bit vectorization when σ is very large. It is known that there is a problem of becoming. In the similarity calculation method according to the present embodiment, a contracted instruction obtained by removing an operand from a machine language instruction is used as a comparison element, and σ can be reduced compared to the case where a machine language instruction is used as a comparison element. Even when bit vectorization is applied, it is possible to reduce the memory usage.

類似性算出部14eは、最長共通部分列抽出部14dによって抽出された最長共通部分列の長さに基づいて全ての実行モジュール13a(機械語命令列)の組合せについて類似性を算出し、算出結果を類似度行列データ13cとして出力する。   The similarity calculation unit 14e calculates similarity for all combinations of execution modules 13a (machine language instruction sequences) based on the length of the longest common partial sequence extracted by the longest common partial sequence extraction unit 14d, and the calculation result Is output as similarity matrix data 13c.

2つの機械語命令列をA、Bとし、それぞれに対応する縮約命令列をCA、CBとし、それぞれ縮約命令列の長さをL(CA)、L(CB)とすると、CAとCBの最長共通部分列LCS(CA,CB)は、最長共通部分列抽出部14dによって抽出される。そして、最長共通部分列LCS(CA,CB)の長さをLLCS(CA,CB)とすると、類似性算出部14eは、以下の式(1)を用いて、0から1の値をとり類似比率を意味するJaccard係数を計算することによって、機械語命令列Aと機械語命令列Bの類似性を示す類似度を算出する。   Assuming that two machine language instruction sequences are A and B, the corresponding reduced instruction sequences are CA and CB, and the lengths of the reduced instruction sequences are L (CA) and L (CB), respectively, CA and CB The longest common subsequence LCS (CA, CB) is extracted by the longest common subsequence extraction unit 14d. Then, assuming that the length of the longest common subsequence LCS (CA, CB) is LLCS (CA, CB), the similarity calculation unit 14e takes a value from 0 to 1 using the following equation (1) and is similar By calculating a Jaccard coefficient representing a ratio, a similarity indicating the similarity between the machine language instruction sequence A and the machine language instruction sequence B is calculated.

Figure 2011086147
Figure 2011086147

なお、Jaccard係数を用いる手法は、最長共通部分列の長さに基づいて類似性を算出する手法の一例であり、最長共通部分列の長さに基づいて類似性を算出するものであれば他の手法を用いてもよい。例えば、最長共通部分列の長さそのものを類似性の指標として用いることとしてもよい。   Note that the method using the Jaccard coefficient is an example of a method for calculating similarity based on the length of the longest common subsequence, and other methods may be used as long as the similarity is calculated based on the length of the longest common subsequence. You may use the method of. For example, the length of the longest common subsequence itself may be used as an index of similarity.

類似性算出部14eが出力する類似度行列データ13cの一例を図3に示す。図3に示す例は、機械語命令列A〜Dの4つの機械語命令列を対象として類似性を算出した場合の類似度行列データ13cの例であり、機械語命令列A〜Dの全ての組合せについて類似性がJaccard係数として算出されている。   An example of the similarity matrix data 13c output from the similarity calculation unit 14e is shown in FIG. The example shown in FIG. 3 is an example of the similarity matrix data 13c when similarity is calculated for four machine language instruction sequences of the machine language instruction sequences A to D. All of the machine language instruction sequences A to D are illustrated. Similarity is calculated as a Jaccard coefficient for the combinations.

なお、このように出力された類似度行列データ13cに基づいて、さらに、機械語命令列をクラスタリングすることとしてもよい。類似性に基づくクラスタリングを行うことにより、例えば、類似性を算出する対象の機械語命令列がマルウェアであれば、マルウェアの流行や廃りを効率的に把握したり、未知のマルウェアが出現した場合にそのマルウェアに最も類似しているマルウェアを判別したりすることが容易になる。   The machine language instruction sequence may be further clustered based on the similarity matrix data 13c output in this way. By performing clustering based on similarity, for example, if the machine language instruction sequence for which similarity is calculated is malware, it is possible to efficiently grasp the fashion and disuse of malware, or when unknown malware appears It becomes easy to determine the most similar malware.

なお、類似度行列データ13cについては、表形式やグラフ等による形式で類似度行列データ13cを表示部11や図示しない印刷装置にできるように類似性算出装置10を構成することとしてもよいし、ネットワークや記憶媒体を介して類似度行列データ13cを他の装置へ転送できるように類似性算出装置10を構成することとしてもよい。   As for the similarity matrix data 13c, the similarity calculation device 10 may be configured so that the similarity matrix data 13c can be used in a display unit 11 or a printing device (not shown) in the form of a table or a graph. The similarity calculation device 10 may be configured so that the similarity matrix data 13c can be transferred to another device via a network or a storage medium.

次に、図1に示した類似性算出装置10の動作について、図4に示したフローチャートを参照しながら説明する。なお、ここでは、類似性を算出する対象である全ての実行モジュール13aが予め記憶部13に記憶されているものとする。   Next, the operation of the similarity calculation apparatus 10 shown in FIG. 1 will be described with reference to the flowchart shown in FIG. Here, it is assumed that all the execution modules 13a for which similarity is calculated are stored in the storage unit 13 in advance.

図3に示すように、アンパッキング部14aが、記憶部13に記憶されている実行モジュール13aのうち未選択のものを1つ選択する(ステップS101)。そして、選択できた場合(ステップS102否定)、アンパッキング部14aは、選択した実行モジュール13aがパッキングされていれば(ステップS103肯定)、その実行モジュール13aにアンパッキング処理を施して、逆アセンブル部14bへ出力する(ステップS104)。一方、選択した実行モジュール13aがパッキングされていなければ(ステップS103否定)、アンパッキング部14aは、その実行モジュール13aをそのまま逆アセンブル部14bへ出力する。   As shown in FIG. 3, the unpacking unit 14a selects one of the execution modules 13a stored in the storage unit 13 that has not been selected (step S101). If it can be selected (No at Step S102), the unpacking unit 14a performs an unpacking process on the execution module 13a if the selected execution module 13a is packed (Yes at Step S103), and disassembles the unit. 14b (step S104). On the other hand, if the selected execution module 13a is not packed (No at Step S103), the unpacking unit 14a outputs the execution module 13a as it is to the disassembly unit 14b.

逆アセンブル部14bは、入力された実行モジュール13aを逆アセンブルして機械語命令列を抽出する(ステップS105)。続いて、縮約命令列生成部14cは、抽出された機械語命令列から縮約命令列13bを生成する(ステップS106)。こうして、ステップS101で選択された実行モジュール13aに対応する縮約命令列13bが生成された後、ステップS101から処理手順が再開され、アンパッキング部14aが、記憶部13に記憶されている実行モジュール13aのうち未選択のものの選択を試みる。   The disassembly unit 14b disassembles the input execution module 13a to extract a machine language instruction string (step S105). Subsequently, the contracted instruction sequence generation unit 14c generates a contracted instruction sequence 13b from the extracted machine language instruction sequence (step S106). Thus, after the contracted instruction sequence 13b corresponding to the execution module 13a selected in step S101 is generated, the processing procedure is restarted from step S101, and the unpacking unit 14a is stored in the storage unit 13. Attempts to select an unselected one among 13a.

そして、ステップS101において全ての実行モジュール13aを選択済であった場合(ステップS102肯定)、最長共通部分列抽出部14dが、縮約命令列13bの組合せのうち未選択のものを1つ選択する(ステップS107)。選択できた場合(ステップS108否定)、最長共通部分列抽出部14dが、選択した縮約命令列13bの組合せから最長共通部分列を抽出する(ステップS109)。そして、類似性算出部14eが、抽出された最長共通部分列に基づいて、ステップS107で選択された縮約命令列13bの組合せに対応する機械語命令列の組合せの類似性を表す類似度を算出する(ステップS110)。   If all execution modules 13a have been selected in step S101 (Yes in step S102), the longest common partial sequence extraction unit 14d selects one of the unselected combinations of the reduced instruction sequence 13b. (Step S107). If it can be selected (No at Step S108), the longest common subsequence extraction unit 14d extracts the longest common subsequence from the selected combination of the contracted instruction sequences 13b (Step S109). Then, the similarity calculation unit 14e calculates a similarity indicating the similarity of the combination of machine language instruction sequences corresponding to the combination of the contracted instruction sequence 13b selected in step S107 based on the extracted longest common subsequence. Calculate (step S110).

こうして、ステップS107で選択された縮約命令列13bの組合せに対応する機械語命令列の組合せの類似度が算出された後、ステップS107から処理手順が再開され、最長共通部分列抽出部14dが、縮約命令列13bの組合せのうち未選択のものの選択を試みる。そして、ステップS107において全ての組合せが選択済であった場合(ステップS108肯定)、類似性算出部14eが、それまでに算出した各類似度から類似度行列データ13cを生成し(ステップS111)、一連の処理が終了する。   Thus, after the similarity of the combination of machine language instruction sequences corresponding to the combination of the reduced instruction sequence 13b selected in step S107 is calculated, the processing procedure is restarted from step S107, and the longest common subsequence extraction unit 14d Then, an attempt is made to select an unselected one among the combinations of the contracted instruction sequence 13b. If all combinations have been selected in step S107 (Yes in step S108), the similarity calculation unit 14e generates similarity matrix data 13c from each similarity calculated so far (step S111). A series of processing ends.

上述してきたように、本実施例では、機械語命令列から各機械語命令のオペランド部分を除いた縮約命令列に基づいて機械語命令列の類似性を算出することとしたので、機械語命令列の類似性を少ない計算量で高精度に算出することができる。   As described above, in this embodiment, since the similarity of the machine language instruction sequence is calculated based on the reduced instruction sequence obtained by removing the operand part of each machine language instruction from the machine language instruction sequence, the machine language The similarity of instruction sequences can be calculated with a small amount of calculation with high accuracy.

実施例1では、機械語命令列から縮約命令列を生成し、縮約命令列から抽出した最長共通部分列の長さに基づいて機械語命令列の類似性を算出することとしたが、縮約命令列を用いて機械語命令列の類似性を解析する方式は、これに限定されない。そこで、実施例2では、縮約命令列を用いて機械語命令列の類似性を解析する他の方式の例について説明する。なお、以下の説明では、既に説明した部位と同様の部位については、既に説明した部位と同一の符号を付して、重複する説明を省略する。   In the first embodiment, a reduced instruction sequence is generated from the machine language instruction sequence, and the similarity of the machine language instruction sequence is calculated based on the length of the longest common subsequence extracted from the reduced instruction sequence. The method of analyzing the similarity between machine language instruction sequences using the reduced instruction sequence is not limited to this. Therefore, in the second embodiment, an example of another method for analyzing the similarity of machine language instruction sequences using a reduced instruction sequence will be described. In the following description, the same parts as those already described are denoted by the same reference numerals as those already described, and redundant description is omitted.

まず、本実施例に係る類似性算出装置20の構成について説明する。図5は、類似性算出装置20の構成を示すブロック図である。図5に示すように、類似性算出装置20は、表示部11と、入力部12と、記憶部23と、制御部24とを有する。   First, the configuration of the similarity calculation apparatus 20 according to the present embodiment will be described. FIG. 5 is a block diagram illustrating a configuration of the similarity calculation apparatus 20. As illustrated in FIG. 5, the similarity calculation device 20 includes a display unit 11, an input unit 12, a storage unit 23, and a control unit 24.

記憶部23は、制御部14が処理結果として生成する類似度行列データ13cではなく、制御部24が処理結果として生成する差分解析結果データ23cの格納場所として利用される点において、図1に示した記憶部13と相違する。   The storage unit 23 is shown in FIG. 1 in that the storage unit 23 is used as a storage location of the difference analysis result data 23c generated as the processing result by the control unit 24, not the similarity matrix data 13c generated as the processing result by the control unit 14. This is different from the storage unit 13.

制御部24は、類似性算出部14eに代えて類似性算出部24eを有する点において、図1に示した制御部14と相違する。類似性算出部24eは、最長共通部分列抽出部14dによって抽出された各最長共通部分列を、その最長共通部分列の抽出元である2つの縮約命令列のそれぞれと比較して、それぞれの縮約命令列に固有の命令を抽出し、差分解析結果データ23cを生成する。そのようにそれぞれの縮約命令列に固有の命令を抽出することにより、例えば、改変が加えられたマルウェアについて、改変された箇所に注目して解析を行うことが容易になる。   The control unit 24 is different from the control unit 14 shown in FIG. 1 in that a similarity calculation unit 24e is provided instead of the similarity calculation unit 14e. The similarity calculation unit 24e compares each longest common partial sequence extracted by the longest common partial sequence extraction unit 14d with each of the two contracted instruction sequences from which the longest common partial sequence is extracted. An instruction specific to the contracted instruction sequence is extracted, and difference analysis result data 23c is generated. By extracting an instruction specific to each contracted instruction sequence in this way, for example, it is easy to analyze a malware that has been modified by paying attention to the modified location.

2つの機械語命令列をA、Bとし、それぞれに対応する縮約命令列をCA、CBとし、それぞれ縮約命令列の長さをL(CA)、L(CB)とすると、最長共通部分列抽出部14dによって抽出されるCAとCBの最長共通部分列をLCS(CA,CB)とする。この場合、類似性算出部24eは、LCS(CA,CB)とCAを先頭から順に比較することにより、CAには存在するがLCS(CA,CB)に存在しない縮約命令と、CAにもLCS(CA,CB)にも存在する縮約命令を特定する。このうち、前者がCAに固有の命令に相当する。また、類似性算出部24eは、LCS(CA,CB)とCBを先頭から順に比較することにより、CBには存在するがLCS(CA,CB)に存在しない縮約命令と、CBにもLCS(CA,CB)にも存在する縮約命令を特定する。このうち、前者がCBに固有の命令に相当する。   If the two machine language instruction sequences are A and B, the corresponding reduced instruction sequences are CA and CB, and the lengths of the reduced instruction sequences are L (CA) and L (CB), respectively, the longest common part The longest common partial sequence of CA and CB extracted by the column extraction unit 14d is LCS (CA, CB). In this case, the similarity calculation unit 24e compares LCS (CA, CB) and CA in order from the top, thereby reducing the reduced instruction that is present in CA but not in LCS (CA, CB) and CA. A contraction instruction that also exists in LCS (CA, CB) is specified. Of these, the former corresponds to an instruction specific to CA. Further, the similarity calculation unit 24e compares the LCS (CA, CB) and CB in order from the head, thereby reducing the reduced instruction that exists in the CB but does not exist in the LCS (CA, CB) and the LCS. A contraction instruction that also exists in (CA, CB) is specified. Of these, the former corresponds to an instruction specific to CB.

類似性算出部24eが出力する差分解析結果データ23cの一例を図6に示す。図6に示す例は、複数の機械語命令列のうち、機械語命令列Aと機械語命令列Bを対象として差分を抽出した場合の差分解析結果データ23cの例であり、XML形式で作成されている。なお、図6に示す例では、機械語命令列Aと機械語命令列Bの差分以外に、最長共通部分列に含まれる命令が、機械語命令列Aと機械語命令列Bの共通部分として出力されている。   An example of the difference analysis result data 23c output by the similarity calculation unit 24e is shown in FIG. The example shown in FIG. 6 is an example of the difference analysis result data 23c when a difference is extracted for a machine language instruction sequence A and a machine language instruction sequence B among a plurality of machine language instruction sequences, and is generated in an XML format. Has been. In the example shown in FIG. 6, in addition to the difference between the machine language instruction sequence A and the machine language instruction sequence B, the instruction included in the longest common partial sequence is the common part of the machine language instruction sequence A and the machine language instruction sequence B. It is output.

図6に示す例では、「機械語命令列1」というタグが、差分の抽出対象の一方が機械語命令列Aであることを示しており、「機械語命令列2」というタグが、差分の抽出対象の他方が機械語命令列Bであることを示している。また、「固有縮約命令1」というタグは、機械語命令列Aに固有の縮約命令を含むタグであり、「固有縮約命令2」というタグは、機械語命令列Bに固有の縮約命令を含むタグであり、「共通縮約命令」というタグは、機械語命令列Aと機械語命令列Bに固有の縮約命令を含むタグである。「固有縮約命令1」、「固有縮約命令2」、「共通縮約命令」の各タグには、縮約命令列における当該縮約命令の行番号と、当該縮約命令の各項目の値を含んだ「縮約命令」というタグが0個以上含まれている。   In the example shown in FIG. 6, the tag “machine language instruction sequence 1” indicates that one of the difference extraction targets is the machine language instruction sequence A, and the tag “machine language instruction sequence 2” The other of the extraction targets is a machine language instruction sequence B. The tag “unique contract instruction 1” is a tag including a contract instruction unique to the machine language instruction sequence A, and the tag “unique contract instruction 2” is a contract specific to the machine language instruction sequence B. A tag including a contract instruction, and a tag “common contract instruction” includes a contract instruction unique to the machine language instruction sequence A and the machine language instruction sequence B. Each tag of “unique contract instruction 1”, “unique contract instruction 2”, and “common contract instruction” includes the line number of the contract instruction in the contract instruction sequence and each item of the contract instruction. Zero or more tags “contract instruction” including a value are included.

なお、図6に示す例では、差分として縮約命令の内容が出力されているが、縮約命令列内の各縮約命令を何らかの方式で変換元の機械語命令と予め関連付けておいたり、縮約命令列における縮約命令の行番号に基づいて縮約命令の変換元の機械語命令を動的に特定したりすることによって、差分として縮約命令の変換元の機械語命令の内容を出力することとしてもよい。   In the example shown in FIG. 6, the content of the contracted instruction is output as a difference, but each contracted instruction in the contracted instruction sequence is associated in advance with the machine language instruction of the conversion source in some way, By dynamically specifying the machine language instruction that is the conversion source of the reduced instruction based on the line number of the reduced instruction in the reduced instruction sequence, the contents of the machine language instruction that is the conversion source of the reduced instruction are obtained as a difference. It is good also as outputting.

また、差分解析結果データ23cについては、表形式やグラフィカルな形式で差分解析結果データ23cを表示部11や図示しない印刷装置にできるように類似性算出装置20を構成することとしてもよいし、ネットワークや記憶媒体を介して差分解析結果データ23cを他の装置へ転送できるように類似性算出装置20を構成することとしてもよい。   For the difference analysis result data 23c, the similarity calculation device 20 may be configured so that the difference analysis result data 23c can be displayed in a tabular format or a graphical format on the display unit 11 or a printing device (not shown). Alternatively, the similarity calculation device 20 may be configured such that the difference analysis result data 23c can be transferred to another device via a storage medium.

次に、図5に示した類似性算出装置20の動作について、図7に示したフローチャートを参照しながら説明する。なお、ステップS201〜S206については、図4に示したフローチャートと同一の内容であるため、説明を省略する。   Next, the operation of the similarity calculation apparatus 20 shown in FIG. 5 will be described with reference to the flowchart shown in FIG. Steps S201 to S206 have the same contents as those in the flowchart shown in FIG.

ステップS201において全ての実行モジュール13aを選択済であった場合(ステップS202肯定)、最長共通部分列抽出部14dが、縮約命令列13bの組合せのうち未選択のものを1つ選択する(ステップS207)。選択できた場合(ステップS208否定)、最長共通部分列抽出部14dが、選択した縮約命令列13bの組合せから最長共通部分列を抽出する(ステップS209)。そして、類似性算出部24eが、抽出された最長共通部分列に基づいて、ステップS207で選択された縮約命令列13bの組合せの差分解析結果データ23cを生成する(ステップS210)。   If all the execution modules 13a have been selected in step S201 (Yes in step S202), the longest common subsequence extraction unit 14d selects one of the combinations of the contracted instruction sequence 13b that has not been selected (step S202). S207). If it can be selected (No at Step S208), the longest common partial sequence extracting unit 14d extracts the longest common partial sequence from the selected combination of the contracted instruction sequences 13b (Step S209). Then, the similarity calculation unit 24e generates difference analysis result data 23c of the combination of the contracted instruction sequence 13b selected in step S207 based on the extracted longest common partial sequence (step S210).

こうして、ステップS207で選択された縮約命令列13bの組合せの差分解析結果データ23cが生成された後、ステップS207から処理手順が再開され、最長共通部分列抽出部14dが、縮約命令列13bの組合せのうち未選択のものの選択を試みる。そして、ステップS207において全ての組合せが選択済であった場合(ステップS208肯定)、一連の処理手順が完了する。   Thus, after the difference analysis result data 23c of the combination of the contracted instruction sequence 13b selected in step S207 is generated, the processing procedure is restarted from step S207, and the longest common partial sequence extracting unit 14d performs the contracted instruction sequence 13b. Attempts to select an unselected one of the combinations. If all combinations have been selected in step S207 (Yes in step S208), a series of processing procedures is completed.

上述してきたように、縮約命令列を用いることにより、縮約命令列から抽出した最長共通部分列の長さに基づいて機械語命令列の類似性を算出する以外にも、機械語命令列の類似性を多様に解析することができる。   As described above, by using the contracted instruction sequence, in addition to calculating the similarity of the machine language instruction sequence based on the length of the longest common subsequence extracted from the contracted instruction sequence, the machine language instruction sequence Can be analyzed in various ways.

なお、上述してきた各実施例の実施形式は、要旨を逸脱しない範囲で種々に変更することができる。例えば、各実施例の実施形式は、適宜組み合わせて実施することができる。また、図1に示した類似性算出装置10の制御部14や図2に示した類似性算出装置20の制御部24の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、類似性算出装置10や類似性算出装置20と同等の機能を実現することもできる。以下に、類似性算出装置10の制御部14の機能をソフトウェアとして実装した類似性算出プログラム171を実行するコンピュータの一例を示す。   In addition, the implementation form of each Example mentioned above can be variously changed in the range which does not deviate from a summary. For example, the implementation forms of the embodiments can be implemented in combination as appropriate. Further, the functions of the control unit 14 of the similarity calculation device 10 shown in FIG. 1 and the control unit 24 of the similarity calculation device 20 shown in FIG. 2 are implemented as software, and this is executed by a computer. Functions equivalent to those of the calculation device 10 and the similarity calculation device 20 can also be realized. Hereinafter, an example of a computer that executes the similarity calculation program 171 in which the function of the control unit 14 of the similarity calculation apparatus 10 is implemented as software will be described.

図8は、類似性算出プログラム171を実行するコンピュータ100を示す機能ブロック図である。コンピュータ100は、各種演算処理を実行するCPU(Central Processing Unit)110と、ユーザからのデータの入力を受け付ける入力装置120と、各種情報を表示するモニタ130と、記録媒体からプログラム等を読み取る媒体読取り装置140と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置150と、各種情報を一時記憶するRAM(Random Access Memory)160と、ハードディスク装置170とをバスで接続して構成される。   FIG. 8 is a functional block diagram illustrating the computer 100 that executes the similarity calculation program 171. The computer 100 includes a CPU (Central Processing Unit) 110 that executes various arithmetic processes, an input device 120 that receives input of data from a user, a monitor 130 that displays various information, and a medium reading that reads a program from a recording medium. The device 140, a network interface device 150 that exchanges data with other computers via a network, a RAM (Random Access Memory) 160 that temporarily stores various information, and a hard disk device 170 are connected by a bus. Configured.

そして、ハードディスク装置170には、図1に示した制御部14と同様の機能を有する類似性算出プログラム171と、図1に示した記憶部13に記憶される実行モジュール13aに対応する機械語命令列172とが記憶される。なお、機械語命令列172は、ネットワークを介して接続された他のコンピュータに、コンピュータ100がアクセス可能な態様で記憶されていてもよい。   The hard disk device 170 has a similarity calculation program 171 having the same function as the control unit 14 shown in FIG. 1, and a machine language instruction corresponding to the execution module 13a stored in the storage unit 13 shown in FIG. Column 172 is stored. Note that the machine language instruction sequence 172 may be stored in a manner that the computer 100 can access another computer connected via a network.

そして、CPU110が類似性算出プログラム171をハードディスク装置170から読み出してRAM160に展開することにより、類似性算出プログラム171は、類似性算出プロセス161として機能するようになる。そして、類似性算出プロセス161は、機械語命令列172等を適宜RAM160上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行し、図1に示した類似度行列データ13cに相当する算出結果データ173をハードディスク装置170等に記憶させる。   Then, the CPU 110 reads out the similarity calculation program 171 from the hard disk device 170 and develops it in the RAM 160, whereby the similarity calculation program 171 functions as the similarity calculation process 161. Then, the similarity calculation process 161 appropriately expands the machine language instruction sequence 172 and the like in an area allocated to itself on the RAM 160, executes various data processing based on the expanded data, and the like, as shown in FIG. Calculation result data 173 corresponding to the similarity matrix data 13c is stored in the hard disk device 170 or the like.

なお、上記の類似性算出プログラム171は、必ずしもハードディスク装置170に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたこのプログラムを、コンピュータ100が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等を介してコンピュータ100に接続される他のコンピュータ(またはサーバ)等にこのプログラムを記憶させておき、コンピュータ100がこれらからプログラムを読み出して実行するようにしてもよい。   The similarity calculation program 171 is not necessarily stored in the hard disk device 170, and the computer 100 may read and execute the program stored in a storage medium such as a CD-ROM. Good. The computer 100 stores the program in another computer (or server) connected to the computer 100 via a public line, the Internet, a LAN (Local Area Network), a WAN (Wide Area Network), or the like. You may make it read and run a program from these.

本発明にかかる類似性算出装置、類似性算出方法および類似性算出プログラムは、マルウェアのように悪意に基づいて改変された機械語命令列の類似性を算出する目的だけでなく、例えば、機構追加や不具合修正等の目的で改変された機械語命令列の類似性を算出する目的や、ソースコードの盗用が疑われる機械語命令列の類似性を算出する目的のように多様な目的で利用することができる。   The similarity calculation device, the similarity calculation method, and the similarity calculation program according to the present invention are not only for the purpose of calculating the similarity of a machine language instruction sequence modified based on malicious intentions like malware, but also for example, a mechanism addition It is used for various purposes such as calculating the similarity of machine language instruction sequences modified for the purpose of correcting bugs, etc., and calculating the similarity of machine language instruction sequences suspected of theft of source code. be able to.

10、20 類似性算出装置
11 表示部
12 入力部
13、23 記憶部
13a 実行モジュール
13b 縮約命令列
13c 類似度行列データ
14、24 制御部
14a アンパッキング部
14b 逆アセンブル部
14c 縮約命令列生成部
14d 最長共通部分列抽出部
14e、24e 類似性算出部
23c 差分解析結果データ
100 コンピュータ
110 CPU
120 入力装置
130 モニタ
140 媒体読取り装置
150 ネットワークインターフェース装置
160 RAM
161 類似性算出プロセス
170 ハードディスク装置
171 類似性算出プログラム
172 機械語命令列
173 算出結果データ
DESCRIPTION OF SYMBOLS 10, 20 Similarity calculation apparatus 11 Display part 12 Input part 13, 23 Memory | storage part 13a Execution module 13b Reduction instruction sequence 13c Similarity matrix data 14, 24 Control part 14a Unpacking part 14b Disassembly part 14c Reduction instruction sequence generation Unit 14d longest common subsequence extraction unit 14e, 24e similarity calculation unit 23c difference analysis result data 100 computer 110 CPU
120 Input Device 130 Monitor 140 Medium Reading Device 150 Network Interface Device 160 RAM
161 Similarity calculation process 170 Hard disk device 171 Similarity calculation program 172 Machine language instruction sequence 173 Calculation result data

Claims (7)

複数の機械語命令列の類似性を算出する類似性算出装置であって、
前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成手段と、
前記縮約命令列生成手段によって生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出手段と、
前記最長共通部分列抽出手段によって抽出された最長共通部分列に基づいて、前記機械語命令列の類似性を算出する類似性算出手段と
を備えたことを特徴とする類似性算出装置。
A similarity calculation device that calculates the similarity of a plurality of machine language instruction sequences,
Reduced instruction sequence generation means for generating a reduced instruction sequence that is an array of reduced instructions obtained by removing an operand part from each machine language instruction included in the machine language instruction sequence for each of the plurality of machine language instruction sequences;
A longest common partial sequence extracting means for comparing the reduced instruction sequences generated by the reduced instruction sequence generating means and extracting a longest common partial sequence;
A similarity calculation device comprising: similarity calculation means for calculating similarity of the machine language instruction sequence based on the longest common partial sequence extracted by the longest common partial sequence extraction means.
前記最長共通部分列抽出手段は、ビットベクトル化アルゴリズムに基づいて前記縮約命令列から前記最長共通部分列を抽出することを特徴とする請求項1に記載の類似性算出装置。   2. The similarity calculation apparatus according to claim 1, wherein the longest common subsequence extraction unit extracts the longest common subsequence from the contracted instruction sequence based on a bit vectorization algorithm. 前記縮約命令列生成手段は、所定のビット長の縮約命令の配列である縮約命令列を生成することを特徴とする請求項1または2に記載の類似性算出装置。   3. The similarity calculation apparatus according to claim 1, wherein the contracted instruction sequence generation unit generates a contracted instruction sequence that is an array of contracted instructions having a predetermined bit length. 前記類似性算出手段は、前記最長共通部分列の長さに基づいて、前記機械語命令列の類似性を算出することを特徴とする請求項1〜3のいずれか1つに記載の類似性算出装置。   4. The similarity according to claim 1, wherein the similarity calculation unit calculates the similarity of the machine language instruction sequence based on the length of the longest common subsequence. Calculation device. 前記類似性算出手段は、前記最長共通部分列に基づいて、前記機械語命令列の差分を抽出することを特徴とする請求項1〜3のいずれか1つに記載の類似性算出装置。   The similarity calculation apparatus according to claim 1, wherein the similarity calculation unit extracts a difference between the machine language instruction sequences based on the longest common subsequence. 複数の機械語命令列の類似性を算出する類似性算出方法であって、
前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成工程と、
前記縮約命令列生成工程において生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出工程と、
前記最長共通部分列抽出工程において抽出された最長共通部分列に基づいて、前記機械語命令列の類似性を算出する類似性算出工程と
を含んだことを特徴とする類似性算出方法。
A similarity calculation method for calculating the similarity of a plurality of machine language instruction sequences,
For each of the plurality of machine language instruction sequences, a contracted instruction sequence generating step for generating a contracted instruction sequence that is an array of contracted instructions obtained by removing an operand part from each machine language instruction included in the machine language instruction sequence;
A longest common partial sequence extraction step of comparing the reduced instruction sequences generated in the reduced instruction sequence generation step and extracting a longest common partial sequence;
A similarity calculation step of calculating the similarity of the machine language instruction sequence based on the longest common subsequence extracted in the longest common subsequence extraction step.
複数の機械語命令列の類似性を算出する類似性算出プログラムであって、
前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成手順と、
前記縮約命令列生成手順によって生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出手順と、
前記最長共通部分列抽出手順によって抽出された最長共通部分列に基づいて、前記機械語命令列の類似性を算出する類似性算出手順と
をコンピュータに実行させることを特徴とする類似性算出プログラム。
A similarity calculation program for calculating the similarity of a plurality of machine language instruction sequences,
For each of the plurality of machine language instruction sequences, a contracted instruction sequence generation procedure for generating a contracted instruction sequence that is an array of contracted instructions obtained by removing an operand part from each machine language instruction included in the machine language instruction sequence;
A longest common partial sequence extraction procedure for comparing the reduced instruction sequences generated by the reduced instruction sequence generation procedure and extracting the longest common partial sequence;
A similarity calculation program for causing a computer to execute a similarity calculation procedure for calculating similarity of the machine language instruction sequence based on the longest common partial sequence extracted by the longest common subsequence extraction procedure.
JP2009239014A 2009-10-16 2009-10-16 Similarity calculation device, similarity calculation method, similarity calculation program, and similarity analysis device Active JP5301411B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009239014A JP5301411B2 (en) 2009-10-16 2009-10-16 Similarity calculation device, similarity calculation method, similarity calculation program, and similarity analysis device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009239014A JP5301411B2 (en) 2009-10-16 2009-10-16 Similarity calculation device, similarity calculation method, similarity calculation program, and similarity analysis device

Publications (2)

Publication Number Publication Date
JP2011086147A true JP2011086147A (en) 2011-04-28
JP5301411B2 JP5301411B2 (en) 2013-09-25

Family

ID=44079041

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009239014A Active JP5301411B2 (en) 2009-10-16 2009-10-16 Similarity calculation device, similarity calculation method, similarity calculation program, and similarity analysis device

Country Status (1)

Country Link
JP (1) JP5301411B2 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101547019B1 (en) 2013-09-05 2015-08-24 한양대학교 산학협력단 Method and computer system for extracting longest common sub-sequence
WO2017061270A1 (en) * 2015-10-09 2017-04-13 日本電信電話株式会社 Vulnerability discovering device, vulnerability discovering method, and vulnerability discovering program
JP2017151977A (en) * 2016-02-23 2017-08-31 富士通株式会社 Method and program for repairing software program
JP2018133081A (en) * 2017-02-17 2018-08-23 富士通株式会社 Method calling synthesis for software program recovery
JP2022008591A (en) * 2015-07-15 2022-01-13 サイランス・インコーポレイテッド Malware detection

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06250861A (en) * 1993-01-19 1994-09-09 Internatl Business Mach Corp <Ibm> Method and equipment for evaluating and sampling computer virus and signature of other undesired existing software
JP2008519374A (en) * 2004-11-04 2008-06-05 テルコーディア テクノロジーズ インコーポレイテッド Exploit code detection in network flows

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06250861A (en) * 1993-01-19 1994-09-09 Internatl Business Mach Corp <Ibm> Method and equipment for evaluating and sampling computer virus and signature of other undesired existing software
JP2008519374A (en) * 2004-11-04 2008-06-05 テルコーディア テクノロジーズ インコーポレイテッド Exploit code detection in network flows

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG200800113003; 安本幸希,ほか2名: 'マルウェアコードの類似度判定による機能推定' 電子情報通信学会技術研究報告 Vol.107 No.347 第107巻,第347号, 20071114, pp.31-36, 社団法人電子情報通信学会 *
JPN6013009490; Christian Kreibich,ほか1名: 'Honeycomb . Creating Intrusion DetectionSignatures Using Honeypots' ACM SIGCOMM Computer Communications Review Volume 34, Number 1, 200401, ACM *
JPN6013009491; 安本幸希,ほか2名: 'マルウェアコードの類似度判定による機能推定' 電子情報通信学会技術研究報告 Vol.107 No.347 第107巻,第347号, 20071114, pp.31-36, 社団法人電子情報通信学会 *
JPN6013009492; 岩村 誠,ほか2名: 機械語命令列の類似性に基づく自動マルウェア分類システム , 20091028, pp.1-26, NTT情報流通プラットフォーム研究所 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101547019B1 (en) 2013-09-05 2015-08-24 한양대학교 산학협력단 Method and computer system for extracting longest common sub-sequence
JP2022008591A (en) * 2015-07-15 2022-01-13 サイランス・インコーポレイテッド Malware detection
JP7246448B2 (en) 2015-07-15 2023-03-27 サイランス・インコーポレイテッド malware detection
US11928213B2 (en) 2015-07-15 2024-03-12 Cylance Inc. Malware detection
WO2017061270A1 (en) * 2015-10-09 2017-04-13 日本電信電話株式会社 Vulnerability discovering device, vulnerability discovering method, and vulnerability discovering program
JPWO2017061270A1 (en) * 2015-10-09 2018-02-22 日本電信電話株式会社 Vulnerability detection device, vulnerability detection method, and vulnerability detection program
US10747887B2 (en) 2015-10-09 2020-08-18 Nippon Telegraph And Telephone Corporation Vulnerability detection device, vulnerability detection method, and vulnerability detection program
JP2017151977A (en) * 2016-02-23 2017-08-31 富士通株式会社 Method and program for repairing software program
JP2018133081A (en) * 2017-02-17 2018-08-23 富士通株式会社 Method calling synthesis for software program recovery
JP7056139B2 (en) 2017-02-17 2022-04-19 富士通株式会社 Method call synthesis for software program repair

Also Published As

Publication number Publication date
JP5301411B2 (en) 2013-09-25

Similar Documents

Publication Publication Date Title
Cakir et al. Malware classification using deep learning methods
JP5579922B2 (en) Double DFA decomposition for large-scale regular expression matching
Gao et al. Malware classification for the cloud via semi-supervised transfer learning
JP5301411B2 (en) Similarity calculation device, similarity calculation method, similarity calculation program, and similarity analysis device
CN109983464B (en) Detecting malicious scripts
US11574054B2 (en) System, method and apparatus for malicious software detection
US11916937B2 (en) System and method for information gain for malware detection
US11328793B2 (en) Accelerating genomic data parsing on field programmable gate arrays
CN113688240B (en) Threat element extraction method, threat element extraction device, threat element extraction equipment and storage medium
CN116861431B (en) Malicious software classification method and system based on multichannel image and neural network
Ali et al. Benchmarking machine learning robustness in COVID-19 genome sequence classification
CN107577943B (en) Sample prediction method and device based on machine learning and server
JP6984761B2 (en) Information processing equipment and information processing programs
JP5169837B2 (en) Finite automaton generation system for character string matching, generation method thereof, and generation program
Naeem et al. Digital forensics for malware classification: An approach for binary code to pixel vector transition
JP6367959B2 (en) Partial character string position detection apparatus, partial character string position detection method, and program
Luh et al. SEQUIN: a grammar inference framework for analyzing malicious system behavior
Snytsar et al. Parallel approach to sliding window sums
JP6750674B2 (en) Program analysis system, program analysis method, and computer program
Pungila et al. Accelerating DNA biometrics in criminal investigations through GPU-based pattern matching
JP5571035B2 (en) Specific apparatus, specific method, and specific program
JP2010146273A (en) Document retrieval device and program
Bonizzoni et al. FSG: fast string graph construction for de novo assembly of reads data
WO2022201309A1 (en) Information complementing device, information complementing method, and computer readable recording medium
KR20150089570A (en) Method and apparatus of dynamic analysis

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110520

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110520

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130305

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130418

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: 20130618

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130619

R150 Certificate of patent or registration of utility model

Ref document number: 5301411

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350