JP5301411B2 - 類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置 - Google Patents

類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置 Download PDF

Info

Publication number
JP5301411B2
JP5301411B2 JP2009239014A JP2009239014A JP5301411B2 JP 5301411 B2 JP5301411 B2 JP 5301411B2 JP 2009239014 A JP2009239014 A JP 2009239014A JP 2009239014 A JP2009239014 A JP 2009239014A JP 5301411 B2 JP5301411 B2 JP 5301411B2
Authority
JP
Japan
Prior art keywords
similarity
machine language
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.)
Active
Application number
JP2009239014A
Other languages
English (en)
Other versions
JP2011086147A (ja
Inventor
誠 岩村
光恭 伊藤
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/ja
Publication of JP2011086147A publication Critical patent/JP2011086147A/ja
Application granted granted Critical
Publication of JP5301411B2 publication Critical patent/JP5301411B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Description

本発明は、機械語命令列の類似性を算出する類似性算出装置、類似性算出方法および類似性算出プログラムに関する。
近年、インターネット等のネットワークの普及にともなって、コンピュータウィルスやワームといったマルウェアへの対策に大きなコストがかかるようになっている。マルウェアへの対策にコストがかかることの要因の一つは、マルウェア作者によって積極的に亜種が開発されるために、マルウェアの種類数が増加し、マルウェアの解析作業に時間を要することにある。
そこで、マルウェアを分類することでその解析コストを抑える研究が行われている。マルウェアを分類する手法には、大きく分けて挙動に基づいて分類する手法とプログラムコード(機械語命令列)に基づいて分類する手法とがある。
挙動に基づいて分類する手法では、ファイルシステムやネットワーク等のシステムリソースへのアクセスを監視できる環境が用意され、その環境において実際にマルウェアを動作させることでマルウェアの挙動に関する情報が取得される。そして、取得された挙動に関する情報の類似性をマルウェアの類似性とみなすことでマルウェアが分類される(非特許文献1参照)。
一方、プログラムコードに基づいて分類する手法では、挙動による手法とは異なり、マルウェアに内在する機能も踏まえた分類が可能である。プログラムコードに基づいて分類する手法には、プログラムコードの類似性の算出方法によって、以下に説明するようないくつかの手法が存在する。
ある手法では、プログラムコードを逆アセンブルすることで命令種別の系列を抽出し、頻出するN−perms(順序性を持たないN個の命令種別系列)を特徴として用いることで、マルウェアの類似度が算出される(非特許文献2参照)。この手法によれば、順序性を持つN−gramsと比較して順序性を持たないN−permsを用いることで、コンパイラの最適化により発生する命令の入れ替えの影響を緩和することを期待できる。また、他の手法では、プログラムコードを逆アセンブルし、コールツリー(関数の呼び出し関係を表す木)を構築し、その木構造の類似性がマルウェアの類似性とされる(非特許文献3参照)。
特開2009−193161号公報
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. 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. 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)
しかしながら、上述した従来技術のうち、挙動に基づいて分類する手法は、マルウェアそのものを解析対象とする必要がないため容易に実現可能だが、ボットのように攻撃者からの指令なしには動作しないマルウェアについては、挙動を確認することが困難であるため、分類することができないという問題があった。
また、プログラムコードに基づいて分類する手法のうち、N−permsを利用した手法には、Nが小さい場合は全く異なるマルウェアであっても類似度が高くなり、Nが大きい場合はわずかな差分であっても類似度に大きな影響を及ぼす可能性があるという問題があった。また、N−permsの統計情報を比較することになるため、比較したマルウェアのどこが一致しどこが一致しなかったかを厳密に算出することが難しいという問題があった。
また、コールツリーの類似度を用いた手法には、多大な計算量を要する上に、関数の呼び出し関係のみをマルウェアの特徴とするため、全く異なるマルウェアに関しても類似度が高くなる可能性があるという問題があった。
本発明は、上記に鑑みてなされたものであって、マルウェア等の機械語命令列の類似性を少ない計算量で高精度に算出することができる類似性算出装置、類似性算出方法および類似性算出プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、複数の機械語命令列の類似性を示す類似度を算出する類似性算出装置であって、前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成手段と、前記縮約命令列生成手段によって生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出手段と、前記最長共通部分列抽出手段によって抽出された最長共通部分列の長さに基づいて、前記機械語命令列の類似性を示す類似度を算出する類似性算出手段とを備えたことを特徴とする。
また、他の態様において、本発明は、複数の機械語命令列の類似性を示す類似度を算出する類似性算出方法であって、前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成工程と、前記縮約命令列生成工程において生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出工程と、前記最長共通部分列抽出工程において抽出された最長共通部分列の長さに基づいて、前記機械語命令列の類似性を示す類似度を算出する類似性算出工程とを含んだことを特徴とする。
また、他の態様において、本発明は、複数の機械語命令列の類似性を示す類似度を算出する類似性算出プログラムであって、前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成手順と、前記縮約命令列生成手順によって生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出手順と、前記最長共通部分列抽出手順によって抽出された最長共通部分列の長さに基づいて、前記機械語命令列の類似性を示す類似度を算出する類似性算出手順とをコンピュータに実行させることを特徴とする。
本発明にかかる類似性算出装置、類似性算出方法および類似性算出プログラムは、機械語命令列の類似性を少ない計算量で高精度に算出することができるという効果を奏する。
図1は、実施例1に係る類似性算出装置の構成を示すブロック図である。 図2は、縮約命令の構成の例を示す図である。 図3は、類似度行列データの一例を示す図である。 図4は、実施例1に係る類似性算出装置の動作を示すフローチャートである。 図5は、実施例2に係る類似性算出装置の構成を示すブロック図である。 図6は、差分解析結果データの一例を示す図である。 図7は、実施例2に係る類似性算出装置の動作を示すフローチャートである。 図8は、類似性算出プログラムを実行するコンピュータを示す機能ブロック図である。
以下に、本発明にかかる類似性算出装置、類似性算出方法および類似性算出プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例では、本発明にかかる類似性算出装置、類似性算出方法および類似性算出プログラムをマルウェアの類似性を算出するために用いる場合について説明するが、これらの実施例によりこの発明が限定されるものではない。
まず、本実施例に係る類似性算出装置10の構成について説明する。図1は、類似性算出装置10の構成を示すブロック図である。図1に示すように、類似性算出装置10は、表示部11と、入力部12と、記憶部13と、制御部14とを有する。
表示部11は、例えば、液晶表示装置や有機EL(Electro-Luminescence)表示装置であり、各種情報を利用者に対して表示する。入力部12は、例えば、キーボードやマウスを含み、利用者からの指示を受け付ける。なお、表示部11や入力部12は、必須の構成要素ではなく、例えば、利用者からの指示をネットワーク経由で受け付け、受け付けた指示に対する応答をネットワーク経由で利用者へ送信するように類似性算出装置10を構成してもよい。
記憶部13は、例えば、ハードディスク装置や半導体メモリであり、実行モジュール13a等の各種の電子情報を記憶する。実行モジュール13aは、例えば、マルウェアであり、類似性の算出対象の機械語命令列や、機械語命令列によって利用されるデータ列等を含む。実行モジュール13aは、例えば、ネットワークやDVD等の記憶媒体を経由して記憶部13に格納される。
記憶部13は、制御部14が中間データとして生成する縮約命令列13bや、制御部14が処理結果として生成する類似度行列データ13cの格納場所としても利用される。
制御部14は、類似性算出装置10を全体制御する制御部であり、アンパッキング部14aと、逆アセンブル部14bと、縮約命令列生成部14cと、最長共通部分列抽出部14dと、類似性算出部14eとを有する。
アンパッキング部14aは、記憶部13に記憶されている各実行モジュール13aにアンパッキング処理を施して逆アセンブル部14bへ出力する。マルウェアの多くは、解析を困難にするためにパッキングと呼ばれる処理が適用され、オリジナルの機械語命令列が隠蔽されている。アンパッキング部14aは、実行モジュール13aにパッキングが施されている場合、既存のアンパッキング技術を利用して、オリジナルの機械語命令列を再現する。なお、実行モジュール13aにパッキングが施されていない場合、アンパッキング部14aは、実行モジュール13aをそのまま逆アセンブル部14bへ出力する。
逆アセンブル部14bは、アンパッキング部14aから入力された実行モジュール13aを逆アセンブルし、逆アセンブルした機械語命令列を縮約命令列生成部14cへ出力する。上述したように、実行モジュール13aには、機械語命令列以外に処理対象のデータ列等が含まれるが、逆アセンブル部14bは、機械語命令列の逆アセンブル結果のみを縮約命令列生成部14cへ出力する。なお、実行モジュール13aに含まれる機械語命令列の選別は、例えば、特許文献1にて開示されている技術を利用して実現することができる。
縮約命令列生成部14cは、逆アセンブル部14bから入力された機械語命令列から縮約命令列を生成する。ここで、縮約命令とは、機械語命令からオペランド部分を削除した命令をいい、縮約命令列とは、機械語命令列に含まれる各機械語命令から変換された縮約命令の配列をいう。
例えば、機械語命令が分岐命令の場合、機械語命令のオペランド部分には分岐先情報が含まれる。そして、分岐先情報は、マルウェア作者によってマルウェアの亜種が作成された場合のように、実行モジュールが改変された場合に、分岐元と分岐先の間に新たな命令が追加される等して変化してしまうことがある。
また、メモリアクセスに必要となる絶対アドレスもオペランドとして指定されるが、実行モジュールが動的リンクライブラリとして実装されている場合、ロードされるアドレスが一定ではなく、当該ライブラリがロードされるタイミングによっては絶対アドレスが変化する。
このように、機械語命令のオペランド部分の内容は、機械語命令列が実質的には改変されていない場合でも変化することがある。このため、類似性の算出にオペランド部分を含んだ機械語命令列を用いると、機械語命令列のうち実質的には改変されていない部分までも相違部分と判断されるおそれがある。
そこで、本実施例に係る類似性算出方法では、オペランド部分が除かれた縮約命令列を用いて類似性が算出される。オペランド部分が除かれた縮約命令列を用いて類似性を算出することにより、オペランド部分の内容の変化の影響をうけることなく、機械語命令列の類似性を高精度に算出することが可能になる。
ここで、縮約命令列生成部14cが機械語命令から変換して生成する縮約命令について、IA−32命令セットの場合を例としてさらに詳しく説明する。IA−32命令セットにおける機械語命令は、命令の修飾語となるプレフィックス部、命令の種類を表すオペコード部、オペランドの型を表すMod/RMとSIB、オペランドがメモリ上である場合のアドレス部、オペランドが即値であった場合の即値部から構成される。
IA−32命令セットにおけるプレフィックスは4つのグループに分けられ、グループ1には3通り、グループ2には6通り、グループ3には1通り、グループ4には1通りのプレフィックスが存在し、各グループで一つ以下のプレフィックスが選択される。また、オペコードに関しては、1バイト目が0x0F以外の場合はその値、0x0Fの場合は2バイト目の値が実質的なオペコードとなる。オペコードが決まると、オペランドの有無、Mod/RMの有無、即値の有無が確定する。さらに、Mod/RMの値によってSIBの有無が確定し、SIBの値によってアドレス部の有無が確定する。
本実施例では、縮約命令として、プレフィックス部、オペコード部、Mod/RMとSIBの情報を組み合わせて利用する。本実施例における縮約命令の構成の例を図2に示す。図2に示す例では、縮約命令は、2ビットのP1と、3ビットのP2と、1ビットのP3、P4およびOLと、8ビットのOC、Mおよび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」となる。
P3は、グループ3のプレフィックスに対応する。具体的には、P3は、グループ3のプレフィックスが存在しない場合は「0」となり、グループ3のプレフィックスの値が「66H」の場合は「1」となる。P4は、グループ4のプレフィックスに対応する。具体的には、P4は、グループ4のプレフィックスが存在しない場合は「0」となり、グループ4のプレフィックスの値が「67H」の場合は「1」となる。
OLは、オペコードの1バイト目が0x0Fであるかを示し、オペコードの1バイト目が0x0Fであれば「1」となり、さもなければ「0」となる。OCは、オペコードの実質的な値であり、オペコードの1バイト目が0x0Fであればオペコードの2バイト目の値が設定され、さもなければオペコードの1バイト目の値が設定される。
Mは、ModR/Mに対応し、ModR/Mが存在する場合はModR/Mの値が設定され、さもなければ「0」が設定される。Sは、SIBに対応し、SIBが存在する場合はSIBの値が設定され、さもなければ「0」が設定される。
IA−32命令セットにおける機械語命令は、命令の種別等によって長さが異なるが、図2に示すように、本実施例における縮約命令の長さは、命令の種類によらずに32ビットの固定長となる。32ビットというサイズは、IA−32における汎用レジスタのビット幅と同じであり、縮約命令列を効率よく処理するのに好適である。また、縮約命令列を固定長の要素からなる配列として形成することは、後述するビットベクトル化アルゴリズムを利用した共通部分の抽出処理を容易に実現するために好適である。
最長共通部分列抽出部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参照)を利用することもできる。
なお、ビットベクトル化を適用するアルゴリズムには、メモリ使用量が比較要素のアルファベットサイズをσとしたときo(σn)となるため、σが非常に大きくなるとビットベクトル化を適用することが困難になるという問題があることが知られている。本実施例に係る類似性算出方法では、比較要素として機械語命令からオペランドを取り除いた縮約命令を用いており、機械語命令を比較要素とする場合と比べてσを小さくすることができるため、ビットベクトル化を適用した際にもメモリ使用量を少なく抑えることが可能になっている。
類似性算出部14eは、最長共通部分列抽出部14dによって抽出された最長共通部分列の長さに基づいて全ての実行モジュール13a(機械語命令列)の組合せについて類似性を算出し、算出結果を類似度行列データ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の類似性を示す類似度を算出する。
Figure 0005301411
なお、Jaccard係数を用いる手法は、最長共通部分列の長さに基づいて類似性を算出する手法の一例であり、最長共通部分列の長さに基づいて類似性を算出するものであれば他の手法を用いてもよい。例えば、最長共通部分列の長さそのものを類似性の指標として用いることとしてもよい。
類似性算出部14eが出力する類似度行列データ13cの一例を図3に示す。図3に示す例は、機械語命令列A〜Dの4つの機械語命令列を対象として類似性を算出した場合の類似度行列データ13cの例であり、機械語命令列A〜Dの全ての組合せについて類似性がJaccard係数として算出されている。
なお、このように出力された類似度行列データ13cに基づいて、さらに、機械語命令列をクラスタリングすることとしてもよい。類似性に基づくクラスタリングを行うことにより、例えば、類似性を算出する対象の機械語命令列がマルウェアであれば、マルウェアの流行や廃りを効率的に把握したり、未知のマルウェアが出現した場合にそのマルウェアに最も類似しているマルウェアを判別したりすることが容易になる。
なお、類似度行列データ13cについては、表形式やグラフ等による形式で類似度行列データ13cを表示部11や図示しない印刷装置にできるように類似性算出装置10を構成することとしてもよいし、ネットワークや記憶媒体を介して類似度行列データ13cを他の装置へ転送できるように類似性算出装置10を構成することとしてもよい。
次に、図1に示した類似性算出装置10の動作について、図4に示したフローチャートを参照しながら説明する。なお、ここでは、類似性を算出する対象である全ての実行モジュール13aが予め記憶部13に記憶されているものとする。
図3に示すように、アンパッキング部14aが、記憶部13に記憶されている実行モジュール13aのうち未選択のものを1つ選択する(ステップS101)。そして、選択できた場合(ステップS102否定)、アンパッキング部14aは、選択した実行モジュール13aがパッキングされていれば(ステップS103肯定)、その実行モジュール13aにアンパッキング処理を施して、逆アセンブル部14bへ出力する(ステップS104)。一方、選択した実行モジュール13aがパッキングされていなければ(ステップS103否定)、アンパッキング部14aは、その実行モジュール13aをそのまま逆アセンブル部14bへ出力する。
逆アセンブル部14bは、入力された実行モジュール13aを逆アセンブルして機械語命令列を抽出する(ステップS105)。続いて、縮約命令列生成部14cは、抽出された機械語命令列から縮約命令列13bを生成する(ステップS106)。こうして、ステップS101で選択された実行モジュール13aに対応する縮約命令列13bが生成された後、ステップS101から処理手順が再開され、アンパッキング部14aが、記憶部13に記憶されている実行モジュール13aのうち未選択のものの選択を試みる。
そして、ステップS101において全ての実行モジュール13aを選択済であった場合(ステップS102肯定)、最長共通部分列抽出部14dが、縮約命令列13bの組合せのうち未選択のものを1つ選択する(ステップS107)。選択できた場合(ステップS108否定)、最長共通部分列抽出部14dが、選択した縮約命令列13bの組合せから最長共通部分列を抽出する(ステップS109)。そして、類似性算出部14eが、抽出された最長共通部分列に基づいて、ステップS107で選択された縮約命令列13bの組合せに対応する機械語命令列の組合せの類似性を表す類似度を算出する(ステップS110)。
こうして、ステップS107で選択された縮約命令列13bの組合せに対応する機械語命令列の組合せの類似度が算出された後、ステップS107から処理手順が再開され、最長共通部分列抽出部14dが、縮約命令列13bの組合せのうち未選択のものの選択を試みる。そして、ステップS107において全ての組合せが選択済であった場合(ステップS108肯定)、類似性算出部14eが、それまでに算出した各類似度から類似度行列データ13cを生成し(ステップS111)、一連の処理が終了する。
上述してきたように、本実施例では、機械語命令列から各機械語命令のオペランド部分を除いた縮約命令列に基づいて機械語命令列の類似性を算出することとしたので、機械語命令列の類似性を少ない計算量で高精度に算出することができる。
実施例1では、機械語命令列から縮約命令列を生成し、縮約命令列から抽出した最長共通部分列の長さに基づいて機械語命令列の類似性を算出することとしたが、縮約命令列を用いて機械語命令列の類似性を解析する方式は、これに限定されない。そこで、実施例2では、縮約命令列を用いて機械語命令列の類似性を解析する他の方式の例について説明する。なお、以下の説明では、既に説明した部位と同様の部位については、既に説明した部位と同一の符号を付して、重複する説明を省略する。
まず、本実施例に係る類似性算出装置20の構成について説明する。図5は、類似性算出装置20の構成を示すブロック図である。図5に示すように、類似性算出装置20は、表示部11と、入力部12と、記憶部23と、制御部24とを有する。
記憶部23は、制御部14が処理結果として生成する類似度行列データ13cではなく、制御部24が処理結果として生成する差分解析結果データ23cの格納場所として利用される点において、図1に示した記憶部13と相違する。
制御部24は、類似性算出部14eに代えて類似性算出部24eを有する点において、図1に示した制御部14と相違する。類似性算出部24eは、最長共通部分列抽出部14dによって抽出された各最長共通部分列を、その最長共通部分列の抽出元である2つの縮約命令列のそれぞれと比較して、それぞれの縮約命令列に固有の命令を抽出し、差分解析結果データ23cを生成する。そのようにそれぞれの縮約命令列に固有の命令を抽出することにより、例えば、改変が加えられたマルウェアについて、改変された箇所に注目して解析を行うことが容易になる。
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に固有の命令に相当する。
類似性算出部24eが出力する差分解析結果データ23cの一例を図6に示す。図6に示す例は、複数の機械語命令列のうち、機械語命令列Aと機械語命令列Bを対象として差分を抽出した場合の差分解析結果データ23cの例であり、XML形式で作成されている。なお、図6に示す例では、機械語命令列Aと機械語命令列Bの差分以外に、最長共通部分列に含まれる命令が、機械語命令列Aと機械語命令列Bの共通部分として出力されている。
図6に示す例では、「機械語命令列1」というタグが、差分の抽出対象の一方が機械語命令列Aであることを示しており、「機械語命令列2」というタグが、差分の抽出対象の他方が機械語命令列Bであることを示している。また、「固有縮約命令1」というタグは、機械語命令列Aに固有の縮約命令を含むタグであり、「固有縮約命令2」というタグは、機械語命令列Bに固有の縮約命令を含むタグであり、「共通縮約命令」というタグは、機械語命令列Aと機械語命令列Bに固有の縮約命令を含むタグである。「固有縮約命令1」、「固有縮約命令2」、「共通縮約命令」の各タグには、縮約命令列における当該縮約命令の行番号と、当該縮約命令の各項目の値を含んだ「縮約命令」というタグが0個以上含まれている。
なお、図6に示す例では、差分として縮約命令の内容が出力されているが、縮約命令列内の各縮約命令を何らかの方式で変換元の機械語命令と予め関連付けておいたり、縮約命令列における縮約命令の行番号に基づいて縮約命令の変換元の機械語命令を動的に特定したりすることによって、差分として縮約命令の変換元の機械語命令の内容を出力することとしてもよい。
また、差分解析結果データ23cについては、表形式やグラフィカルな形式で差分解析結果データ23cを表示部11や図示しない印刷装置にできるように類似性算出装置20を構成することとしてもよいし、ネットワークや記憶媒体を介して差分解析結果データ23cを他の装置へ転送できるように類似性算出装置20を構成することとしてもよい。
次に、図5に示した類似性算出装置20の動作について、図7に示したフローチャートを参照しながら説明する。なお、ステップS201〜S206については、図4に示したフローチャートと同一の内容であるため、説明を省略する。
ステップS201において全ての実行モジュール13aを選択済であった場合(ステップS202肯定)、最長共通部分列抽出部14dが、縮約命令列13bの組合せのうち未選択のものを1つ選択する(ステップS207)。選択できた場合(ステップS208否定)、最長共通部分列抽出部14dが、選択した縮約命令列13bの組合せから最長共通部分列を抽出する(ステップS209)。そして、類似性算出部24eが、抽出された最長共通部分列に基づいて、ステップS207で選択された縮約命令列13bの組合せの差分解析結果データ23cを生成する(ステップS210)。
こうして、ステップS207で選択された縮約命令列13bの組合せの差分解析結果データ23cが生成された後、ステップS207から処理手順が再開され、最長共通部分列抽出部14dが、縮約命令列13bの組合せのうち未選択のものの選択を試みる。そして、ステップS207において全ての組合せが選択済であった場合(ステップS208肯定)、一連の処理手順が完了する。
上述してきたように、縮約命令列を用いることにより、縮約命令列から抽出した最長共通部分列の長さに基づいて機械語命令列の類似性を算出する以外にも、機械語命令列の類似性を多様に解析することができる。
なお、上述してきた各実施例の実施形式は、要旨を逸脱しない範囲で種々に変更することができる。例えば、各実施例の実施形式は、適宜組み合わせて実施することができる。また、図1に示した類似性算出装置10の制御部14や図2に示した類似性算出装置20の制御部24の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、類似性算出装置10や類似性算出装置20と同等の機能を実現することもできる。以下に、類似性算出装置10の制御部14の機能をソフトウェアとして実装した類似性算出プログラム171を実行するコンピュータの一例を示す。
図8は、類似性算出プログラム171を実行するコンピュータ100を示す機能ブロック図である。コンピュータ100は、各種演算処理を実行するCPU(Central Processing Unit)110と、ユーザからのデータの入力を受け付ける入力装置120と、各種情報を表示するモニタ130と、記録媒体からプログラム等を読み取る媒体読取り装置140と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置150と、各種情報を一時記憶するRAM(Random Access Memory)160と、ハードディスク装置170とをバスで接続して構成される。
そして、ハードディスク装置170には、図1に示した制御部14と同様の機能を有する類似性算出プログラム171と、図1に示した記憶部13に記憶される実行モジュール13aに対応する機械語命令列172とが記憶される。なお、機械語命令列172は、ネットワークを介して接続された他のコンピュータに、コンピュータ100がアクセス可能な態様で記憶されていてもよい。
そして、CPU110が類似性算出プログラム171をハードディスク装置170から読み出してRAM160に展開することにより、類似性算出プログラム171は、類似性算出プロセス161として機能するようになる。そして、類似性算出プロセス161は、機械語命令列172等を適宜RAM160上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行し、図1に示した類似度行列データ13cに相当する算出結果データ173をハードディスク装置170等に記憶させる。
なお、上記の類似性算出プログラム171は、必ずしもハードディスク装置170に格納されている必要はなく、CD−ROM等の記憶媒体に記憶されたこのプログラムを、コンピュータ100が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等を介してコンピュータ100に接続される他のコンピュータ(またはサーバ)等にこのプログラムを記憶させておき、コンピュータ100がこれらからプログラムを読み出して実行するようにしてもよい。
本発明にかかる類似性算出装置、類似性算出方法および類似性算出プログラムは、マルウェアのように悪意に基づいて改変された機械語命令列の類似性を算出する目的だけでなく、例えば、機構追加や不具合修正等の目的で改変された機械語命令列の類似性を算出する目的や、ソースコードの盗用が疑われる機械語命令列の類似性を算出する目的のように多様な目的で利用することができる。
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 算出結果データ

Claims (8)

  1. 複数の機械語命令列の類似性を示す類似度を算出する類似性算出装置であって、
    前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成手段と、
    前記縮約命令列生成手段によって生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出手段と、
    前記最長共通部分列抽出手段によって抽出された最長共通部分列の長さに基づいて、前記機械語命令列の類似性を示す類似度を算出する類似性算出手段と
    を備えたことを特徴とする類似性算出装置。
  2. 前記最長共通部分列抽出手段は、ビットベクトル化アルゴリズムに基づいて前記縮約命令列から前記最長共通部分列を抽出することを特徴とする請求項1に記載の類似性算出装置。
  3. 前記縮約命令列生成手段は、固定長のビット長の縮約命令の配列である縮約命令列を生成することを特徴とする請求項1または2に記載の類似性算出装置。
  4. 前記類似性算出手段は、前記最長共通部分列の長さに基づいて、前記機械語命令列の類似性を示す類似度を算出することを特徴とする請求項1〜3のいずれか1つに記載の類似性算出装置。
  5. 前記類似性算出手段は、前記最長共通部分列の長さに基づいて、前記機械語命令列の差分を抽出することを特徴とする請求項1〜3のいずれか1つに記載の類似性算出装置。
  6. 複数の機械語命令列の類似性を示す類似度を算出する類似性算出方法であって、
    前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成工程と、
    前記縮約命令列生成工程において生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出工程と、
    前記最長共通部分列抽出工程において抽出された最長共通部分列の長さに基づいて、前記機械語命令列の類似性を示す類似度を算出する類似性算出工程と
    を含んだことを特徴とする類似性算出方法。
  7. 複数の機械語命令列の類似性を示す類似度を算出する類似性算出プログラムであって、
    前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成手順と、
    前記縮約命令列生成手順によって生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出手順と、
    前記最長共通部分列抽出手順によって抽出された最長共通部分列の長さに基づいて、前記機械語命令列の類似性を示す類似度を算出する類似性算出手順と
    をコンピュータに実行させることを特徴とする類似性算出プログラム。
  8. 複数の機械語命令列の類似性を解析する類似性解析装置であって、
    前記複数の機械語命令列毎に、機械語命令列に含まれる各機械語命令からオペランド部分を取り除いた縮約命令の配列である縮約命令列を生成する縮約命令列生成手段と、
    前記縮約命令列生成手段によって生成された縮約命令列を比較して、最長共通部分列を抽出する最長共通部分列抽出手段と、
    前記最長共通部分列抽出手段によって抽出された最長共通部分列を、抽出元の縮約命令列のそれぞれと比較して、前記複数の機械語命令列の差分を抽出する差分抽出手段と
    を備えたことを特徴とする類似性解析装置。
JP2009239014A 2009-10-16 2009-10-16 類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置 Active JP5301411B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009239014A JP5301411B2 (ja) 2009-10-16 2009-10-16 類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009239014A JP5301411B2 (ja) 2009-10-16 2009-10-16 類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置

Publications (2)

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

Family

ID=44079041

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009239014A Active JP5301411B2 (ja) 2009-10-16 2009-10-16 類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置

Country Status (1)

Country Link
JP (1) JP5301411B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101547019B1 (ko) 2013-09-05 2015-08-24 한양대학교 산학협력단 최장 공통 부분 수열을 추출하는 방법 및 컴퓨터 시스템
EP3323075B1 (en) * 2015-07-15 2023-01-18 Cylance Inc. Malware detection
WO2017061270A1 (ja) * 2015-10-09 2017-04-13 日本電信電話株式会社 脆弱性発見装置、脆弱性発見方法、および、脆弱性発見プログラム
US10133657B2 (en) * 2016-02-23 2018-11-20 Fujitsu Limited Textual similarity based software program repair
US10496519B2 (en) * 2017-02-17 2019-12-03 Fujitsu Limited Method invocation synthesis for software program repair

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2501771B2 (ja) * 1993-01-19 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 不所望のソフトウェア・エンティティの複数の有効なシグネチャを得る方法及び装置
EP1820099A4 (en) * 2004-11-04 2013-06-26 Tti Inv S C Llc DETECTING OPERATING CODE IN NETWORK DATA STREAMS

Also Published As

Publication number Publication date
JP2011086147A (ja) 2011-04-28

Similar Documents

Publication Publication Date Title
Cakir et al. Malware classification using deep learning methods
JP5579922B2 (ja) ラージ・スケール正規表現のマッチングのための二重dfa分解
JP5301411B2 (ja) 類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置
CN109983464B (zh) 检测恶意脚本
US11328793B2 (en) Accelerating genomic data parsing on field programmable gate arrays
US11916937B2 (en) System and method for information gain for malware detection
JP2018113034A (ja) 転置インデックスを用いたバイト列のバイナリサーチ
CN116861431B (zh) 基于多通道图像和神经网络的恶意软件分类方法及系统
Ali et al. Benchmarking machine learning robustness in COVID-19 genome sequence classification
JP5169837B2 (ja) 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム
Li et al. Juxtapp and dstruct: Detection of similarity among android applications
CN112257068A (zh) 一种程序相似性检测方法、装置、电子设备和存储介质
CN113688240B (zh) 威胁要素提取方法、装置、设备及存储介质
US11574054B2 (en) System, method and apparatus for malicious software detection
Naeem et al. Digital forensics for malware classification: An approach for binary code to pixel vector transition
Zhu et al. Malware homology determination using visualized images and feature fusion
JP6984761B2 (ja) 情報処理装置及び情報処理プログラム
JP6367959B2 (ja) 部分文字列位置検出装置、部分文字列位置検出方法及びプログラム
Luh et al. SEQUIN: a grammar inference framework for analyzing malicious system behavior
JP6750674B2 (ja) プログラム分析システム、プログラム分析方法、及び、コンピュータ・プログラム
Snytsar et al. Parallel approach to sliding window sums
JP5571035B2 (ja) 特定装置、特定方法及び特定プログラム
JP2010146273A (ja) 文書検索装置およびプログラム
Bonizzoni et al. FSG: fast string graph construction for de novo assembly of reads data
Bonizzoni et al. Kfinger: Capturing overlaps between long reads by using lyndon fingerprints

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