JP5687593B2 - 解析装置、解析方法および解析プログラム - Google Patents

解析装置、解析方法および解析プログラム Download PDF

Info

Publication number
JP5687593B2
JP5687593B2 JP2011222241A JP2011222241A JP5687593B2 JP 5687593 B2 JP5687593 B2 JP 5687593B2 JP 2011222241 A JP2011222241 A JP 2011222241A JP 2011222241 A JP2011222241 A JP 2011222241A JP 5687593 B2 JP5687593 B2 JP 5687593B2
Authority
JP
Japan
Prior art keywords
obfuscation
blocks
unit
execution
obfuscated
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.)
Expired - Fee Related
Application number
JP2011222241A
Other languages
English (en)
Other versions
JP2013084064A (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 JP2011222241A priority Critical patent/JP5687593B2/ja
Publication of JP2013084064A publication Critical patent/JP2013084064A/ja
Application granted granted Critical
Publication of JP5687593B2 publication Critical patent/JP5687593B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Description

本発明は、解析装置、解析方法および解析プログラムに関する。
従来、コンピュータウィルスやスパイウェア等の悪意のあるプログラムであるマルウェアのプログラムコードは、該マルウェアの動作や機能が解析されることを妨害するために難読化されていることが多い。かかる難読化は、一つの態様として、XORエンコードや特定の鍵を利用した暗号化等の可逆なアルゴリズムを利用するものが挙げられる。また、マルウェアのプログラムコードが難読化されることで、本来のプログラムコードであるオリジナルコードが隠蔽されることはパッキングと呼ばれ、該パッキングを実行するツールは総じてパッカーと呼ばれる。
ところで、パッキングされたマルウェアは、難読化されたプログラムコードをデータとして有するとともに、オリジナルコードを復元するための展開コードを有する。詳細には、パッキングされたマルウェアが実行された場合には、展開コードの部分が実行されて難読化されたプログラムコードが解かれ、オリジナルコードがメモリ上に展開される。続いて、オリジナルコードの展開が完了した場合には、展開されたオリジナルコードが実行される。
このようなパッキングされたマルウェアに利用されているパッカーの識別方法として、シグネチャを用いたマッチング処理を行って、検査対象の実行ファイルで利用されたパッカーを特定する手法が知られている。例えば、パッキングされた展開コード部分とデータ部分の特徴的なバイト列を手動により抽出し、抽出した特徴的なバイト列をシグネチャのパターンとして用いたマッチング処理を行い、検査対象の実行ファイルで利用されたパッカーを特定する。
"The new signature generation method based on an unpacking algorithm and procedure for a packer detection",International Journal of Advanced Science and Technology, VOL.27, February 2011 "A Survey of Malware Detection Techniques", Technical report. Department of Computer Science, Purdue University, February 2007
しかしながら、上述した従来技術では、パッキングされた展開コード部分とデータ部分の特徴的なバイト列を手動で抽出するので、コストが高く大量のシグネチャを作成するのが困難である。また、x86アーキテクチャの場合を例にとると正確な逆アセンブルを行うことが難しく精度の高いシグネチャを得ることが出来ない。結果、パッカーの識別精度向上を図ることが出来ないといった課題があった。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、パッカーの識別精度の向上を図ることを目的とする。
上述した課題を解決し、目的を達成するため、本願に開示する解析装置は、複数の実行ファイルに対して複数の難読化ツールそれぞれを用いて難読化された各実行ファイルを動作させ、該各実行ファイルの動作結果として得られた各命令コードを複数のブロックごとに分割する分割部と、前記分割部によって分割された各ブロックのうち、同一の難読化ツールで難読化された実行ファイル間で共通して出現するブロックを抽出し、該抽出したブロックの特徴に関する情報を生成する生成部と、前記生成部によって生成されたブロックの特徴に関する情報を用いて、検査対象の実行ファイルの難読化に用いられた難読化ツールを特定する特定部と、を備える。
本願に開示する解析装置は、パッカーの識別精度の向上を図ることができるという効果を奏する。
図1は、実施例1に係る解析装置の構成を示すブロック図である。 図2は、パッキング済みの実行ファイルを用いてシグネチャを生成する処理を説明する図である。 図3は、パッキング済みの実行ファイルとともに、パッキング前の実行ファイルを用いてシグネチャを生成する処理を説明する図である。 図4は、パッカーを識別する識別処理を説明する図である。 図5は、実施例1に係る解析装置のシグネチャ生成処理の手順を説明するためのフローチャートである。 図6は、実施例1に係る解析装置のパッカー識別処理の手順を説明するためのフローチャートである。 図7は、図7は、解析プログラムを実行するコンピュータを示す図である。
以下に添付図面を参照して、この発明に係る解析装置、解析方法および解析プログラムの実施例を詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[解析装置の構成]
まず、図1を用いて、実施例1に係る解析装置について説明する。図1は、実施例1に係る解析装置10の構成例を示すブロック図である。図1に示した解析装置10は、所定のプログラムを実行するコンピュータに実装される。
ここで、プログラムを実行するコンピュータの動作例を説明する。コンピュータによってプログラムが実行される場合には、例えば、コンピュータ内部のCPU(Central Processing Unit)は、ハードディスク装置等に記憶されているプログラムを、RAM(Random Access Memory)等のメモリ空間に展開する。具体的には、CPUは、メモリ空間に、命令や値等のデータを展開する。これにより、プログラムは、プロセスとして機能する。このようにしてプロセスが生成された後に、CPUは、プロセスメモリ空間に展開された各種データを用いて各種命令を実行する。
解析装置10は、入力部11、出力部12、制御部13および記憶部14を有する。解析装置10は、シグネチャを生成するとともに、生成したシグネチャを用いて検査対象の実行ファイルをパッキングしたパッカーを特定する。
入力部11は、シグネチャの生成指示や検査対象の実行ファイルなどを入力するものであり、キーボードやマウス、マイクなどを備えて構成される。出力部12は、例えば、実行ファイルにパッキングをしたパッカーを表示するものであり、モニタやスピーカを備えて構成される。
記憶部14は、制御部13による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、実行ファイル記憶部14a、パッキング済み実行ファイル記憶部14bおよびシグネチャ記憶部14cを有する。また、記憶部14とは、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
実行ファイル記憶部14aは、パッキングされる前の複数の実行ファイルを記憶する。例えば、実行ファイル記憶部14aは、複数の実行ファイル1〜nを記憶する。パッキング済み実行ファイル記憶部14bは、パッキング済みの実行ファイルを記憶する。例えば、パッキング済み実行ファイル記憶部14bは、実行ファイル1〜nに対してパッカー1〜mそれぞれを用いてパッキングされた各実行ファイル(つまり、n×m個の実行ファイル)を記憶する。シグネチャ14cは、後述するシグネチャ生成部13aによって生成されたシグネチャを記憶する。
制御部13は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、シグネチャ生成部13aおよび難読化ツール識別部13bを有する。なお、制御部13として、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などを適用する。
シグネチャ生成部13aは、シグネチャとしてパッカーを識別するために利用するための各パッカーに応じた特徴的なコードブロックを抽出し、抽出したコードブロックからパッカー識別に利用するためのシグネチャを生成する。シグネチャ生成部13aは、分割部131および生成部132を有する。
分割部131は、複数の実行ファイルに対して複数のパッカーそれぞれを用いてパッキングされた各実行ファイルを動作させ、該各実行ファイルの動作結果として得られた各展開コードの実行トレースを複数のブロックごとに分割する。具体的には、まず、分割部131は、シグネチャの生成指示を入力部11から受け付けると、パッキング済みの実行ファイルをパッキング済み実行ファイル記憶部14bから取得する。例えば、図2の例を用いて説明すると、分割部131は、パッカー1〜mでそれぞれパッキングされたn×m個のパッキング済みの各実行ファイル(図2の例では、パッカー1(実行ファイル1〜n)、パッカー2(実行ファイル1〜n)・・・パッカーm(実行ファイル1〜n)と記載)をパッキング済み実行ファイル記憶部14bから取得する。
そして、分割部131は、パッキング済みの各実行ファイルを動作させ、パッキング済み実行ファイルの展開コードの実行トレースを取得する。ここで実行トレースとは、プログラムの実行された命令の羅列である。x86命令を例にとると、実行された命令のオペコードとそのオペランドの組の列と言い換えてもよい。なお、実行トレースは幾つかの方法で取得することが可能である。例えば、デバッガを利用する方法、Binary Instrumentationを利用する方法、エミュレータを利用する方法、仮想マシンを利用する方法が考えられる。
また、展開コードの実行トレースとは、具体的に述べると、パッキングされた実行ファイルの先頭から各実行ファイルの本来のエントリポイントであるオリジナルエントリポイントまでの命令列である。また、オリジナルエントリポイント以外にも独自に定めた事象が現れるまで動作させることも可能である。つまり、展開コードが終わっていると思われる事象が現れる周辺まで動かせればよく、例えば、本来のオリジナルコードが利用する可能性の高いAPIの呼び出しがみられるところまで、ネットワークへの通信が発生するところまで、更にはある一定時間まで、などの指標で動かしてもよい。なお、多くのパッカーは、この展開コードを多段で持つことが多い。これは、最初の展開コードが実行されると、2段目の展開コードとデータをメモリ上に展開し、展開が終わるとその2段目の展開コードにジャンプし、その2段目の展開コードが先ほど展開されたデータの読み込みオリジナルコードを展開する。上記は2段の例だが、パッカーの中にはこの展開コードが多段になっているものも多く存在する。
また、本来シグネチャとして利用するバイト列としては、実行ファイルのデータ部分よりもコード部分の方が望ましい。これは、データ部分が難読化のアルゴリズムにより変動が激しく可変な状態である場合が多いため、ある特定のプログラムの特徴パターンとして利用するには向いていない。例えば、XORエンコードが利用されていた場合には、バイナリコードとXORをとる値を変更すれば生成される値は大きく変化してしまう。一方、パッキングされている実行ファイルは主に展開コードとデータから構成される。上述のようにデータ部分はシグネチャのパターンとしては適していないため、展開コード部分のバイト列をパターンとしてシグネチャに利用する方が識別の精度が高くなる。
続いて、分割部131は、実行トレースを特定のブロックに区切り、命令列(以下、コードブロックという)の集合を作成する。ブロックへの区切り方として、ベーシックブロック単位、一定命令数単位(n-gram)、関数単位、または上記ベーシックブロック、一定命令数、関数のn-gramが考えられる。これら各ブロックのハッシュ値を求めておく。なお、ハッシュ値を求める際、x86を例にとると、各命令のオペコード部分のみを利用してもよいし、オペランド部分も含めてハッシュ値を計算してもよい。なお、ここで計算されたハッシュ値は、後述のコードブロックの集合の比較を行う際に、計算を容易にするためのものであり、計算のコストを考慮しないのであれば、ハッシュ値を求める処理は必ずしも必要ではない。
続いて、生成部132は、分割部131によって分割された各ブロックのうち、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックを抽出し、該抽出したコードブロックのシグネチャを生成する。例えば、生成部132は、パッカー1でパッキングした実行ファイル1〜nの各実行トレースのコードブロックのハッシュ値の集合同士を比較し、共通で出現するハッシュ値を求める。これは、言い換えると、各実行トレースの中で共通する命令コードを探しだしていることとなる。
上記の共通で出現するコードブロックを求める処理は、下記(1)式で定義される。つまり、パッカーqでパッキングしたi番目(0≦i≦n)の実行ファイルの実行トレースのブロックの集合をBq,iとすると、n個の実行ファイルの中に共通で出現するブロックは下記(1)式で定義される。そして、生成部132は、図2に例示するように、全てのパッカー1〜mについて、パッキングされた実行ファイルの展開コードの実行トレースに共通で出現するコードブロックを抽出する。
Figure 0005687593
上記の処理では、生成部132は、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックのシグネチャを生成する場合を説明したが、以下の(2)〜(5)式を用いて説明するように、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックであって、且つ、他のパッカーでパッキングされた実行ファイルでは出現しないコードブロックのシグネチャを生成するようにしてもよい。
例えば、生成部132は、全てのパッカー1〜mについて、パッキングされた実行ファイルの展開コード部分の実行トレースに共通で出現するコードブロックの計算が終わると、次にあるパッカーに対しては共通的に表れるが、他のパッカーの共通なコードブロックとしては出現しないコードブロックの集合を求め、これをそのパッカーに対するシグネチャとする。これを式で定義すると下記(2)式となる。パッカーの集合をPとし、パッカーのシグネチャをSqjとする。
Figure 0005687593
また、生成部132は、あるパッカーで共通で出現するコードブロックから、他のパッカーの共通なコードブロック全てにおいて共通に出現するコードブロックを省くことで、シグネチャSqjを求める。これを式で定義すると下記(3)式となる。
Figure 0005687593
また、他にも、生成部132は、あるパッカーで共通で出現するコードブロックから、他の各パッカーの実行トレースのコードブロックに一つでも出現したコードを省いたコードブロックの集合をシグネチャSqjとしてもよい。これを式で定義すると下記(4)式となる。
Figure 0005687593
さらには、生成部132は、あるパッカーで共通で出現するコードブロックから、各パッカー内で複数の実行ファイル全てに出現するわけではないが、全てのパッカーに共通して出現するコードブロックを省くことでシグネチャSqjを作成してもよい。これを式で定義すると下記(5)式となる。
Figure 0005687593
また、シグネチャ生成部13aは、分割部によって分割された各ブロックのうち、同一のパッカーでパッキングされた実行ファイル間で共通して出現するブロックであって、且つ、パッキングされていない実行ファイルでは出現しないブロックのシグネチャを生成するようにしてもよい。
例えば、図3に示すように、シグネチャ生成部13aは、パッカーによりパッキングされた実行ファイルのみならず、パッキングされる前の実行ファイルを実行ファイル記憶部14aから取得する。そして、シグネチャ生成部13aは、ある特定のパッカーのシグネチャを生成する際に、そのパッカーに共通的に表れるコードブロックの集合から、他のパッカーに出現するコードブロックのみならず、各実行ファイルに出現するコードブロックも併せて省くことでシグネチャを作成するようにしてもよい。
これにより、通常の実行ファイルに出現しやすいコードブロックを当該パッカーのシグネチャから省くことができ、よりパッカー特有のシグネチャが作成できるものと考えられる。
難読化ツール識別部13bは、図4に示すように、シグネチャ生成部13aが生成したシグネチャを用いて、入力された検査対象実行ファイルで利用されているパッカーを特定し、特定した結果を出力する。具体的には、難読化ツール識別部13bは、検査対象実行ファイルを入力部11を介して受け付けると、検査対象実行ファイルを動作させて、実行トレースを取得する。ここで、難読化ツール識別部13bは、検査対象の実行ファイルを一旦動作させているので、2段目以降の展開コードが現れ、この部分もシグネチャと比較され、パッカーの識別処理に利用される。これにより、2段目以降の展開コードもパッカーの識別処理に利用することが可能となり、精度の高いパッカー識別処理を行うことが可能となる。
そして、難読化ツール識別部13bは、実行トレースを特定のブロックに区切り、コードブロックの集合を作成する。続いて、難読化ツール識別部13bは、作成したコードブロックとシグネチャ記憶部14cに記憶された各シグネチャS(0≦j≦m)を比較し、スコアを算出する。
ここで、スコアの算出方法について具体的に説明する。難読化ツール識別部13bは、入力された検査対象の実行ファイルの実行トレースをシグネチャ生成部13aと同様の方法で取得し、この実行トレースから得られるコードブロックの集合Tとシグネチャ生成部13aで作成した各シグネチャを比較し、各シグネチャにおけるスコアを下記(6)式で計算する。この式により、各シグネチャのコードブロックのうち、どれだけのコードブロックが検査対象の実行ファイルの実行トレースに含まれているか(どれだけ適合するか)が分かる。
Figure 0005687593
このスコアを全てのパッカー1〜mに対して求め、その中で最大値のもの(下記(7)式参照)を実行ファイルでパッキングされているパッカーとする。そして、難読化ツール識別部13bは、最大スコアのシグネチャに対応するパッカーを検査対象の実行ファイルをパッキングしたパッカーとして出力部12から出力する。なお、最大値のスコアでなく、ある閾値に基づき一定以上の値を示した場合に、その実行ファイルをパッキングしたパッカーとして識別してもよい。
Figure 0005687593
なお、パッカーには、正確な逆アセンブルを行うのが困難であるという事情がある。これは、x86のコードを例にとると、コードの最適化やキャッシュ効率を上げるためなどの理由でコード領域の中にデータを含ませることが可能なアーキテクチャになっている。パッカーでは、この特徴を悪用しコードブロックの途中にデータを含ませるなどの方法で逆アセンブルを困難にする解析妨害機能を持つことが多い。この結果としてパッキングされた実行ファイルの展開コード部分を自動的に特定するのが難しく、正確な逆アセンブル結果を得るために人手の介入が必要となることが多い。これに対して、解析装置10では、実行トレースは実際にCPUが実行した命令コードを基にしているため、明らかにコードと断定することができ、逆アセンブルの際のデータとコードの見分けがつかなくなる問題も発生しない。
[解析装置による処理]
次に、図5および図6を用いて、実施例1に係る解析装置10による処理を説明する。図5は、実施例1に係る解析装置のシグネチャ生成処理の手順を説明するためのフローチャートである。図6は、実施例1に係る解析装置のパッカー識別処理の手順を説明するためのフローチャートである。
図5に示すように、解析装置10のシグネチャ生成部13aは、シグネチャ生成の指示を入力部11から受け付けると(ステップS101肯定)、パッキング済み実行ファイル記憶部14bに記憶されたパッキング済み実行ファイルを取得し、パッキング済み実行ファイルを動作させる(ステップS102)。
そして、シグネチャ生成部13aは、パッキング済み実行ファイルの展開コードの実行トレースを取得する(ステップS103)。続いて、シグネチャ生成部13aは、実行トレースを特定のブロックに区切り、コードブロックの集合を生成する(ステップS104)。
そして、シグネチャ生成部13aは、各実行トレースのコードブロックの集合同士を比較し(ステップS105)、共通で出現するコードブロックの集合を抽出し、シグネチャを生成する(ステップS106)。具体的には、シグネチャ生成部13aは、あるパッカーに対しては共通的に表れるが、他のパッカーの共通なコードブロックとしては出現しないコードブロックの集合を求め、このコードブロックの集合をそのパッカーに対するシグネチャとして生成し、シグネチャ記憶部14cに記憶させて、処理を終了する。
次に、図6を用いて、パッカー識別処理について説明する。図6に示すように、解析装置10の難読化ツール識別部13bは、検査対象実行ファイルを入力部11を介して受け付けると(ステップS201)、検査対象実行ファイルの実行トレースを取得する(ステップS202)。
そして、難読化ツール識別部13bは、実行トレースを特定のブロックに区切り、コードブロックの集合を作成する(ステップS203)。続いて、難読化ツール識別部13bは、作成したコードブロックとシグネチャ記憶部14cに記憶された各シグネチャを比較し、スコアを算出する(ステップS204)。
具体的には、難読化ツール識別部13bは、入力された検査対象の実行ファイルの実行トレースをシグネチャ生成部13aと同様の方法で取得し、この実行トレースから得られるコードブロックの集合Tとシグネチャ生成部13aで作成した各シグネチャを比較し、各シグネチャにおけるスコアを算出する。そして、難読化ツール識別部13bは、最大スコアのシグネチャに対応するパッカーを検査対象の実行ファイルで利用されているパッカーとして出力部12から出力する(ステップS205)。
[実施例1の効果]
上述してきたように、解析装置10は、複数の実行ファイルに対して複数のパッカーそれぞれを用いてパッキングされた各実行ファイルを動作させ、該各実行ファイルの動作結果として得られた各命令コードを複数のブロックごとに分割する。そして、解析装置10は、分割された各ブロックのうち、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックを抽出し、該抽出したコードブロックのシグネチャを生成する。そして、解析装置10は、生成されたコードブロックのシグネチャを用いて、検査対象の実行ファイルのパッキングに用いられたパッカーを特定する。このため、精度の高いシグネチャを生成することができる結果、パッカーの識別精度の向上を図ることが可能である。
また、実施例1によれば、分割された各コードブロックのうち、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックであって、且つ、他のパッカーでパッキングされた実行ファイルでは出現しないシグネチャを生成する。このため、よりパッカー特有のシグネチャを生成することができる結果、パッカーの識別精度の向上を図ることが可能である。
また、実施例1によれば、分割された各コードブロックのうち、同一のパッカーでパッキングされた実行ファイル間で共通して出現するコードブロックであって、且つ、パッキングされていない実行ファイルでは出現しないコードブロックの特徴に関する情報を生成する。このため、よりパッカー特有のシグネチャを生成することができる結果、パッカーの識別精度の向上を図ることが可能である。
また、実施例1によれば、検査対象の実行ファイルを動作させ、検査対象の実行ファイルの動作結果として得られた命令コードと生成されたシグネチャとの適合度合いを算出し、算出した結果に応じて、検査対象の実行ファイルのパッキングに用いられたパッカーを特定するので、パッカーの識別精度の向上を図ることが可能である。
[解析プログラム]
図7は、解析プログラムによる処理がコンピュータを用いて具体的に実現されることを示す図である。図7に例示するように、コンピュータ1000は、例えば、メモリ1001と、CPU1002と、ハードディスクドライブインタフェース1003と、ディスクドライブインタフェース1004と、シリアルポートインタフェース1005と、ビデオアダプタ1006と、ネットワークインタフェース1007とを有し、これらの各部はバス1008によって接続される。
メモリ1001は、図7に例示するように、ROM(Read Only Memory)1001a及びRAM(Random Access Memory)1001bを含む。ROM1001aは、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1003は、図7に例示するように、ハードディスクドライブ1009に接続される。ディスクドライブインタフェース1004は、図7に例示するように、ディスクドライブ1010に接続される。例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1010に挿入される。シリアルポートインタフェース1005は、図7に例示するように、例えばマウス1011、キーボード1012に接続される。ビデオアダプタ1006は、図7に例示するように、例えばディスプレイ1013に接続される。
ここで、図7に例示するように、ハードディスクドライブ1009は、例えば、OS1009a、アプリケーションプログラム1009b、プログラムモジュール1009c、プログラムデータ1009dを記憶する。すなわち、解析プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1009cとして、例えばハードディスクドライブ1009に記憶される。具体的には、上記実施例で説明したシグネチャ生成部13aと同様の処理を実行するシグネチャ生成手順と、難読化ツール識別部13bと同様の処理を実行する難読化ツール識別手順とが記述されたプログラムモジュール1009cが、ハードディスクドライブ1009に記憶される。また、解析プログラムによる処理に用いられるデータは、プログラムデータ1009dとして、例えばハードディスクドライブ1009に記憶される。そして、CPU1002が、ハードディスクドライブ1009に記憶されたプログラムモジュール1009cやプログラムデータ1009dを必要に応じてRAM1001bに読み出し、シグネチャ生成手順、難読化ツール識別手順を実行する。
なお、解析プログラムに係るプログラムモジュール1009cやプログラムデータ1009dは、ハードディスクドライブ1009に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1010等を介してCPU1002によって読み出されてもよい。あるいは、解析プログラムに係るプログラムモジュール1009cやプログラムデータ1009dは、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1007を介してCPU1002によって読み出されてもよい。
10 解析装置
11 入力部
12 出力部
13 制御部
13a シグネチャ生成部
13b 難読化ツール識別部
14 記憶部
14a 実行ファイル記憶部
14b パッキング済み実行ファイル記憶部
14c シグネチャ記憶部

Claims (6)

  1. 複数の実行ファイルに対して複数の難読化ツールそれぞれを用いて難読化された各実行ファイルを動作させ、該各実行ファイルの動作結果として得られた各命令コードを複数のブロックごとに分割する分割部と、
    前記分割部によって分割された各ブロックのうち、同一の難読化ツールで難読化された実行ファイル間で共通して出現するブロックを抽出し、該抽出したブロックの特徴に関する情報を生成する生成部と、
    前記生成部によって生成されたブロックの特徴に関する情報を用いて、検査対象の実行ファイルの難読化に用いられた難読化ツールを特定する特定部と
    を備えることを特徴とする解析装置。
  2. 前記生成部は、前記分割部によって分割された各ブロックのうち、同一の難読化ツールで難読化された実行ファイル間で共通して出現するブロックであって、且つ、他の難読化ツールで難読化された実行ファイルでは出現しないブロックの特徴に関する情報を生成することを特徴とする請求項1に記載の解析装置。
  3. 前記生成部は、前記分割部によって分割された各ブロックのうち、同一の難読化ツールで難読化された実行ファイル間で共通して出現するブロックであって、且つ、難読化されていない実行ファイルでは出現しないブロックの特徴に関する情報を生成することを特徴とする請求項1または2に記載の解析装置。
  4. 前記特定部は、前記検査対象の実行ファイルを動作させ、前記検査対象の実行ファイルの動作結果として得られた命令コードと前記生成部によって生成された特徴に関する情報との適合度合いを算出し、算出した結果に応じて、検査対象の実行ファイルの難読化に用いられた難読化ツールを特定することを特徴とする請求項1〜3のいずれか一つに記載の解析装置。
  5. 解析装置で実行される解析方法であって、
    前記解析装置が、複数の実行ファイルに対して複数の難読化ツールそれぞれを用いて難読化された各実行ファイルを動作させ、該各実行ファイルの動作結果として得られた各命令コードを複数のブロックごとに分割する分割工程と、
    前記解析装置が、前記分割工程によって分割された各ブロックのうち、同一の難読化ツールで難読化された実行ファイル間で共通して出現するブロックを抽出し、該抽出したブロックの特徴に関する情報を生成する生成工程と、
    前記解析装置が、前記生成工程によって生成されたブロックの特徴に関する情報を用いて、検査対象の実行ファイルの難読化に用いられた難読化ツールを特定する特定工程と
    を含んだことを特徴とする解析方法。
  6. 複数の実行ファイルに対して複数の難読化ツールそれぞれを用いて難読化された各実行ファイルを動作させ、該各実行ファイルの動作結果として得られた各命令コードを複数のブロックごとに分割する分割と、
    前記分割によって分割された各ブロックのうち、同一の難読化ツールで難読化された実行ファイル間で共通して出現するブロックを抽出し、該抽出したブロックの特徴に関する情報を生成する生成と、
    前記生成によって生成されたブロックの特徴に関する情報を用いて、検査対象の実行ファイルの難読化に用いられた難読化ツールを特定する特定
    備える解析装置としてコンピュータを機能させる解析プログラム。
JP2011222241A 2011-10-06 2011-10-06 解析装置、解析方法および解析プログラム Expired - Fee Related JP5687593B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011222241A JP5687593B2 (ja) 2011-10-06 2011-10-06 解析装置、解析方法および解析プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011222241A JP5687593B2 (ja) 2011-10-06 2011-10-06 解析装置、解析方法および解析プログラム

Publications (2)

Publication Number Publication Date
JP2013084064A JP2013084064A (ja) 2013-05-09
JP5687593B2 true JP5687593B2 (ja) 2015-03-18

Family

ID=48529212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011222241A Expired - Fee Related JP5687593B2 (ja) 2011-10-06 2011-10-06 解析装置、解析方法および解析プログラム

Country Status (1)

Country Link
JP (1) JP5687593B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6246377B2 (ja) 2014-08-28 2017-12-13 三菱電機株式会社 プロセス解析装置、プロセス解析方法、及びプロセス解析プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8732825B2 (en) * 2008-05-28 2014-05-20 Symantec Corporation Intelligent hashes for centralized malware detection

Also Published As

Publication number Publication date
JP2013084064A (ja) 2013-05-09

Similar Documents

Publication Publication Date Title
Luo et al. Semantics-based obfuscation-resilient binary code similarity comparison with applications to software and algorithm plagiarism detection
WO2015101097A1 (zh) 特征提取的方法及装置
US10586026B2 (en) Simple obfuscation of text data in binary files
US11048798B2 (en) Method for detecting libraries in program binaries
EP1950663A1 (en) A method for identifying unknown virus and deleting it
KR102317833B1 (ko) 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법
EP3506140B1 (en) Hacking code sensing device, hacking code sensing method, and hacking code sensing program
KR20170068814A (ko) 악성 모바일 앱 감지 장치 및 방법
WO2015101043A1 (zh) 检测智能终端中恶意代码的方法及装置
RU2722692C1 (ru) Способ и система выявления вредоносных файлов в неизолированной среде
JP2019502197A (ja) ランタイム生成コードにおける悪意のあるコードの検出のためのシステムおよび方法
WO2015035827A1 (en) Method and apparatus for providing string encryption and decryption in program files
Nguyen et al. Detecting repackaged android applications using perceptual hashing
Phu et al. CFDVex: A novel feature extraction method for detecting cross-architecture IoT malware
JP5456715B2 (ja) データ特定装置、データ特定方法及びデータ特定プログラム
Chen et al. Malware classification using static disassembly and machine learning
JP5952218B2 (ja) 情報処理装置および情報処理方法
JP5687593B2 (ja) 解析装置、解析方法および解析プログラム
KR101995176B1 (ko) 프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템
US11307962B2 (en) Method for semantic preserving transform mutation discovery and vetting
CN109241706B (zh) 基于静态胎记的软件抄袭检测方法
WO2018116522A1 (ja) 判定装置、判定方法及び判定プログラム
JP5989599B2 (ja) 情報処理装置、および、情報処理方法
Wrench et al. Detecting derivative malware samples using deobfuscation-assisted similarity analysis
Kinger et al. Malware analysis using machine learning techniques

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141016

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150122

R150 Certificate of patent or registration of utility model

Ref document number: 5687593

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees