JP5389733B2 - 抽出装置及び抽出方法 - Google Patents

抽出装置及び抽出方法 Download PDF

Info

Publication number
JP5389733B2
JP5389733B2 JP2010117640A JP2010117640A JP5389733B2 JP 5389733 B2 JP5389733 B2 JP 5389733B2 JP 2010117640 A JP2010117640 A JP 2010117640A JP 2010117640 A JP2010117640 A JP 2010117640A JP 5389733 B2 JP5389733 B2 JP 5389733B2
Authority
JP
Japan
Prior art keywords
memory access
extraction
tendency
original code
candidate
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
JP2010117640A
Other languages
English (en)
Other versions
JP2011248405A (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 JP2010117640A priority Critical patent/JP5389733B2/ja
Publication of JP2011248405A publication Critical patent/JP2011248405A/ja
Application granted granted Critical
Publication of JP5389733B2 publication Critical patent/JP5389733B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、抽出装置及び抽出方法に関する。
従来、コンピュータウィルスやスパイウェア等の悪意のあるプログラムであるマルウェアのプログラムコードは、該マルウェアの動作や機能が解析されることを妨害するために難読化されていることが多い。かかる難読化は、一つの態様として、XORエンコードや特定の鍵を利用した暗号化等の可逆なアルゴリズムを利用するものが挙げられる。また、マルウェアのプログラムコードが難読化されることで、本来のプログラムコードであるオリジナルコードが隠蔽されることはパッキングと呼ばれ、該パッキングを実行するツールは総じてパッカーと呼ばれる。
ところで、パッキングされたマルウェアは、難読化されたプログラムコードをデータとして有するとともに、オリジナルコードを復元するための展開コードを有する。詳細には、パッキングされたマルウェアが実行された場合には、展開コードの部分が実行されて難読化されたプログラムコードが解かれ、オリジナルコードがメモリ上に展開される。続いて、オリジナルコードの展開が完了した場合には、展開されたオリジナルコードが実行される。なお、パッカーの中には、オリジナルコードを難読化するだけでなく、デバッガによる解析を妨害するアンチデバッグの機能を展開されるコードに含むものもある。
このようなパッキングされたマルウェアを解析する場合に、解析者は、オリジナルコードを取り出してから逆アセンブルすることでアセンブラコードを復元し、復元されたアセンブラコードを読むことでマルウェアの解析を進める。また、オリジナルコードを取り出す場合に、解析者は、デバッガをマルウェアにアタッチした状態で該マルウェアを実行させる。続いて、解析者は、マルウェアの展開コードが終了してオリジナルコードの先頭(OEP:Original Entry Point)に移る直前又は直後等の近傍でマルウェアの動作を停止させる。その後、解析者は、メモリ上においてマルウェアが利用しているアドレスの範囲のバイナリデータをファイルにダンプすることでオリジナルコードを抽出する。
また、最近では、上記のように解析者がデバッガを利用して手動で解析するものの他に、難読化されたプログラムコードからオリジナルコードを自動的に取り出す技術が考えられている。例えば、オリジナルコードを自動的に取り出す技術では、実行プログラムの書きこみと命令フェッチとのメモリアクセスを監視する。そして、オリジナルコードを自動的に取り出す技術では、実行中のプロセスで書き込まれたメモリアドレス領域が実行されるときのメモリアクセスをOEPとして、メモリ上のデータをファイルにダンプするものがある。
Min Gyung Kang,Pongsin Poosankam,Heng Yin,"Renovo:a hidden code extractor for packed executables",In Proceedings of the 2007 ACM workshop on Recurring malcode,pages 46‐53,2007
しかしながら、上述した従来技術では、高精度にオリジナルコードを抽出することができないという課題がある。具体的には、解析者によって解析される場合には、実行されるマルウェアのコードを順次追いかけることになるため、相当な数のステップを有するマルウェアであれば非常に手間のかかる作業となってしまう。加えて、解析者によって解析される場合には、展開コードの終端の判断について経験を要することになるため、解析者によって結果が異なるとともに、未熟な解析者では間違いが発生する可能性が大きい。
また、オリジナルコードを自動的に取り出す技術では、マルウェアの難読化が多段階になっている場合に、オリジナルコードの出現前であるにもかかわらず、書き込みのあったアドレス領域を実行してしまうことがあり得る。これにより、オリジナルコードを自動的に取り出す技術では、展開途中のコードをオリジナルコードとして誤って抽出してしまう可能性がある。
そこで、本願に開示する技術は、上記に鑑みてなされたものであって、高精度にオリジナルコードを抽出することが可能である抽出装置及び抽出方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本願に開示する抽出装置は、パッキングされたプログラムからオリジナルコードを抽出する抽出装置であって、前記プログラムを実行させ、前記オリジナルコードの候補を抽出する候補抽出手段と、前記プログラムを実行するプロセスによるメモリアクセスに関する情報であって、前記候補抽出手段によって抽出された時点の前後一定期間におけるメモリアクセス情報を取得する取得手段と、前記候補抽出手段によって抽出されたオリジナルコード候補の情報と、前記取得手段によって取得されたメモリアクセス情報とに基づいてメモリアクセスの傾向を抽出し、抽出されたメモリアクセスの傾向について、所定条件を満たすか否かを判定する傾向抽出手段とを有する。
また、本願に開示する抽出方法は、パッキングされたプログラムからオリジナルコードを抽出する抽出方法であって、前記プログラムを実行させ、前記オリジナルコードの候補を抽出する候補抽出工程と、前記プログラムを実行するプロセスによるメモリアクセスに関する情報であって、前記候補抽出工程によって抽出された時点の前後一定期間におけるメモリアクセス情報を取得する取得工程と、前記候補抽出工程によって抽出されたオリジナルコード候補の情報と、前記取得工程によって取得されたメモリアクセス情報とに基づいてメモリアクセスの傾向を抽出し、抽出されたメモリアクセスの傾向について、所定条件を満たすか否かを判定する傾向抽出工程とを含む。
本願に開示する抽出装置及び抽出方法の一つの様態によれば、高精度にオリジナルコードを抽出することができるという効果を奏する。
図1は、実施例1に係る抽出装置の構成例を示す図である。 図2は、実施例1に係る抽出装置を含むシステムの全体像の例を示す図である。 図3は、実施例1に係る抽出装置による全体処理の流れの例を示すフローチャートである。 図4は、実施例1に係るメモリアクセス傾向抽出処理の流れの例を示すフローチャートである。 図5は、実施例2に係る抽出装置の構成例を示す図である。 図6は、実施例2に係る判定処理の流れの例を示すフローチャートである。
以下に添付図面を参照して、本願に開示する抽出装置及び抽出方法の実施例を説明する。なお、以下の実施例により本発明が限定されるものではない。また、各実施例は、内容を矛盾させない範囲で適宜組み合わせることが可能である。
[実施例1に係る抽出装置の構成]
最初に、図1を用いて、実施例1に係る抽出装置の構成を説明する。図1は、実施例1に係る抽出装置の構成例を示す図である。
例えば、図1に示すように、抽出装置100は、メモリダンプ抽出部111と、メモリアクセス情報取得部112と、メモリアクセス傾向抽出部113とを有する。また、抽出装置100は、パッキングされたプログラムから本来のプログラムコードであるオリジナルコードを抽出する装置である。
メモリダンプ抽出部111は、例えば、パッキングされたプログラムを実行させ、該パッキングされたプログラムが書き込みを行なったメモリ領域を実行する場合に、メモリ上のバイナリデータをファイルとしてダンプする。つまり、このダンプファイルは、パッキングされたプログラムに含まれるオリジナルコードの候補として抽出される。そして、メモリダンプ抽出部111は、ダンプファイルの抽出時点等の情報を含むダンプファイル情報をメモリアクセス傾向抽出部113に通知する。
メモリアクセス情報取得部112は、例えば、パッキングされたプログラムを実行するプロセスによるメモリアクセスに関する情報であって、メモリダンプ抽出部111によってオリジナルコード候補となるダンプファイルが抽出された時点の前後一定期間におけるメモリアクセス情報を取得する。メモリアクセス情報取得部112によって取得されるメモリアクセス情報は、例えば、「メモリアクセスの回数」や「メモリアクセスの際のアドレス値」等の情報を含む。なお、メモリアクセスについては、例えば、メモリに対する読み込み、書き込み及び命令フェッチ等が挙げられる。
メモリアクセス傾向抽出部113は、例えば、メモリダンプ抽出部111によって通知されたダンプファイル情報と、メモリアクセス情報取得部112によって取得されたメモリアクセス情報とに基づいて、メモリアクセスの傾向を抽出する。メモリアクセス傾向抽出部113による処理は、例えば、メモリダンプ抽出部111とメモリアクセス情報取得部112とにおいてある程度の情報が抽出及び取得できた時点で開始されれば良い。
詳細には、メモリアクセス傾向抽出部113は、オリジナルコード候補の抽出時前後の一定期間それぞれにおける「メモリアクセスの回数:n」と、「各メモリアクセスの際のアドレス値:α」とから「アクセスされたアドレスの範囲の平均値:μ」を式(1)により求める。
Figure 0005389733
また、メモリアクセス傾向抽出部113は、オリジナルコード候補が抽出された時点の前後におけるメモリアクセスの傾向の「変化率:ρ」を式(2)により求める。式(2)では、抽出前の平均値を「μbefore」として、抽出後の平均値を「μafter」として示す。
Figure 0005389733
その後、メモリアクセス傾向抽出部113は、メモリアクセスの傾向として求められた「変化率:ρ」について、ダンプファイル抽出時点の前後で所定条件を満たすか否かを判定する。かかる所定条件の判定において、メモリアクセス傾向抽出部113は、例えば、ダンプファイル抽出時点の前後で「変化率:ρ」が所定閾値以上変化しているか否か、或いは、該「変化率:ρ」が最も大きく変化しているか否かを判定する。
メモリアクセス傾向抽出部113による判定の結果、所定閾値以上変化していると判定された場合、或いは、最も大きく変化していると判定された場合に、抽出装置100は、メモリアクセスの傾向に該当する時点でメモリダンプ抽出部111によって抽出されたオリジナルコード候補をオリジナルコードとして抽出する。なお、抽出装置100は、メモリアクセス傾向抽出部113による判定の結果、該当するオリジナルコード候補が複数存在する場合に、複数の時点でのオリジナルコード候補をオリジナルコードとして抽出する。
このように、抽出装置100は、オリジナルコード候補の抽出前後におけるメモリアクセスの傾向が大きく変化している場合に、該オリジナルコード候補をオリジナルコードとして抽出するので、高精度にオリジナルコードを抽出することができる。換言すると、抽出装置100は、プログラムコードの目的(役割)が異なればプログラムコードが変化し、該変化に伴ってメモリアクセスの傾向も変化することと、難読化されたプログラムコードの実行において最初に展開コードが実行される特性とを利用し、プログラムコードの目的が大きく変化する時点をオリジナルコードの展開が終わり、実行されはじめたこととしている。要するに、抽出装置100は、オリジナルコードの展開が終わり、実行されはじめた時点をメモリアクセスの傾向の変化として捉え、諸傾向の変化の大きい時点で抽出したメモリダンプをオリジナルコードとして抽出するので、解析者が解析したり、メモリアクセス時点のコードをオリジナルコードとして抽出したりする従来技術と比較して、高精度にオリジナルコードを抽出することができる。
[システム全体像]
次に、図2を用いて、実施例1に係る抽出装置100を含むシステムの全体像を説明する。図2は、実施例1に係る抽出装置100を含むシステムの全体像の例を示す図である。
例えば、図2に示すように、抽出装置100を含むシステムは、難読化プロセスと、アプリケーションと、GUEST OS(Operating System)と、VMM(Virtual Machine Monitor)と、HOST OSと、HW(hardware)とを有する。なお、難読化プロセスとは、パッキングされたプログラムを指す。
メモリダンプ抽出部111とメモリアクセス情報取得部112とは、システムにおいてメモリアクセス情報を取得するため、OSに仮想的なハードウェアを提供するソフトウェアである仮想マシンモニタ(VMM)を利用する。
VMMは、HOST OSがインストールされているHW上にて動作する。また、GUEST OSは、VMM上にて動作させる仮想OSであり、さらに、該GUEST OSの上位にてアプリケーションと、難読化プロセスとが動作する。また、メモリアクセス傾向抽出部113は、HOST OS側でアプリケーションとして動作する。
また、VMMによって提供される仮想的なメモリに配置された監視モジュールは、メモリアクセスを監視する。監視モジュールによる監視でメモリアクセスが発生した場合に、メモリアクセス情報取得部112は、アクセス先のアドレス値と、該アドレス値に格納されたデータ(書き込みの場合は書き込もうとしたデータ)と、読み込み或いは書き込みのトリガとなった実行命令とをログとして取得する。
また、VMMは、一度書き込まれた領域を記憶しておく。そして、メモリダンプ抽出部111は、領域が実行される場合に、メモリ上のデータをファイルとして抽出する。このとき、メモリアクセス情報取得部112は、取得したメモリアクセス情報をメモリアクセス傾向抽出部113に出力する。そして、メモリアクセス傾向抽出部113は、VMM内で動作するメモリダンプ抽出部111とメモリアクセス情報取得部112とからダンプファイル情報及びメモリアクセス情報を受け取り、メモリアクセスの傾向を抽出し、抽出されたメモリアクセスの傾向について所定条件を満たすか否かの判定結果を出力する。
[全体処理フロー]
次に、図3を用いて、実施例1に係る抽出装置100による全体処理の流れを説明する。図3は、実施例1に係る抽出装置100による全体処理の流れの例を示すフローチャートである。
例えば、図3に示すように、抽出装置100は、パッキングされたプログラムを実行させ、書き込みのあったメモリ領域を実行する場合に、メモリ上のバイナリデータをファイルとしてダンプすることでオリジナルコード候補を抽出する(ステップS101)。そして、抽出装置100は、オリジナルコード候補が抽出された時点の前後一定期間で、パッキングされたプログラムを実行するプロセスでのメモリアクセス情報を取得する(ステップS102)。
続いて、抽出装置100は、オリジナルコード候補の抽出時前後の一定期間それぞれにおけるメモリアクセスの回数と、各メモリアクセスの際のアドレス値とから、アクセスされたアドレスの範囲の平均値を求めることで、メモリアクセスの傾向を抽出する(ステップS103)。かかるメモリアクセスの傾向の抽出では、メモリアクセスそれぞれについてさらに変化率を求める。その後、抽出装置100は、変化率が所定閾値以上であるか否かを判定し、判定結果を出力する(ステップS104)。かかる判定については、変化率が最も大きいか否かを判定することにしても良い。
[メモリアクセス傾向抽出処理]
次に、図4を用いて、実施例1に係るメモリアクセス傾向抽出処理の流れを説明する。図4は、実施例1に係るメモリアクセス傾向抽出処理の流れの例を示すフローチャートである。なお、メモリアクセス傾向抽出処理とは、主にメモリアクセス傾向抽出部113による処理を指す。また、図4では、メモリアクセスのうち、読み込みに係るメモリアクセスの傾向抽出について説明する。
例えば、図4に示すように、メモリアクセス傾向抽出部113は、メモリダンプ情報とメモリアクセス情報との数がある程度の量になった場合に、ダンプファイルの抽出時点におけるメモリアクセス情報を受け取る(ステップS201)。かかるメモリアクセス情報は、例えば、各ダンプファイルの抽出時点の前後一定期間における読み込み、書き込み及び命令フェッチ等のメモリアクセスの情報であり、ダンプファイル毎に存在する。
そして、メモリアクセス傾向抽出部113は、受け取ったメモリアクセス情報が空であるか否かを判定する(ステップS202)。このとき、メモリアクセス傾向抽出部113は、メモリアクセス情報が空である場合に(ステップS202肯定)、最大値(max値)を有するダンプファイルの抽出時点の情報を判定部114に通知する(ステップS203)。
一方、メモリアクセス傾向抽出部113は、メモリアクセス情報が空でない場合に(ステップS202否定)、ダンプファイルの抽出前におけるメモリアクセスのアドレス範囲の平均値を算出する(ステップS204)。続いて、メモリアクセス傾向抽出部113は、ダンプファイルの抽出後におけるメモリアクセスのアドレス範囲の平均値を算出する(ステップS205)。
その後、メモリアクセス傾向抽出部113は、ダンプファイルの抽出の前後における平均値の差分を計算し、「d」として保存する(ステップS206)。そして、メモリアクセス傾向抽出部113は、最大値が空であるか否かを判定する(ステップS207)。このとき、メモリアクセス傾向抽出部113は、最大値が空でない場合に(ステップS207否定)、「d」が最大値よりも大きいか否かを判定する(ステップS208)。一方、メモリアクセス傾向抽出部113は、最大値が空である場合に(ステップS207肯定)、該最大値を「d」に設定する(ステップS209)。
また、メモリアクセス傾向抽出部113は、「d」が最大値よりも大きい場合に(ステップS208肯定)、該最大値を「d」に設定する(ステップS209)。ここで、メモリアクセス傾向抽出部113は、「d」が最大値よりも小さい場合(ステップS208否定)、及び、最大値を「d」に設定した場合(ステップS209)に、ステップS201の処理を実行することになる。
要するに、メモリアクセス傾向抽出部113は、メモリアクセス情報に基づき、ダンプ毎のダンプ時点前後におけるメモリアクセスの回数とアドレス値とから平均値を求め、該ダンプ時点前後での平均値の差分を変化率として定義する。そして、メモリアクセス傾向抽出部113は、求められた変化率と既に求めた変化率とを比較し、全てのダンプ時点の中で最大となる変化率を抽出する。その後、メモリアクセス傾向抽出部113は、全てのダンプ時点における変化率を求めた場合に、最大の変化率を有するダンプファイル情報を出力する。これにより、抽出装置100は、ダンプファイル情報に該当するオリジナルコード候補をオリジナルコードとして抽出することとなる。
[実施例1による効果]
上述したように、抽出装置100は、マルウェアを実行させて得られるオリジナルコード候補を抽出し、抽出された時点の前後一定期間におけるプロセスでのメモリアクセス情報からメモリアクセスの傾向を抽出し、メモリアクセスの傾向が大きく変化しているものに該当するオリジナルコード候補をオリジナルコードとして抽出するので、高精度にオリジナルコードを抽出することができる。
ところで、上記実施例1では、メモリアクセスの傾向が所定条件を満たす場合にオリジナルコード候補をオリジナルコードとして抽出する場合を説明したが、抽出されたオリジナルコードからさらに好適なオリジナルコードを抽出することもできる。そこで、実施例2では、実施例1において抽出されたオリジナルコードからさらに好適なオリジナルコードを抽出する場合を説明する。
[実施例2に係る抽出装置の構成]
図5を用いて、実施例2に係る抽出装置の構成を説明する。図5は、実施例2に係る抽出装置の構成例を示す図である。なお、図5では、実施例1に係る抽出装置100と同様の構成や機能を有するブロックについては同一の符号を付している。以下では、実施例1に係る抽出装置100と同一の処理についてはその説明を省略し、特に、判定部214の処理について説明する。
例えば、図5に示すように、抽出装置200は、メモリダンプ抽出部111と、メモリアクセス情報取得部112と、メモリアクセス傾向抽出部113と、判定部114とを有する。また、抽出装置200は、パッキングされたプログラムから本来のプログラムコードであるオリジナルコードを抽出する。なお、判定部214は、図2において、メモリアクセス傾向抽出部113と同様に、HOST OS側でアプリケーションとして動作する。
判定部214は、例えば、メモリアクセス傾向抽出部113よる判定の結果、所定条件を満たすものについて、メモリダンプ抽出部111による抽出時点が複数のメモリアクセスのうち少なくとも2つで一致する場合に、一致した抽出時点でのオリジナルコード候補をオリジナルコードとして判定する。
また、判定部214は、メモリアクセス傾向抽出部113による判定の結果、所定条件を満たすものについて、メモリダンプ抽出部111による抽出時点が複数のメモリアクセスで全て一致しない場合に、メモリアクセスの傾向について最も大きな変化を有するオリジナルコード候補をオリジナルコードとして判定する。なお、メモリアクセスは、例えば、読み込み、書き込み及び命令フェッチ等である。また、判定部214による判定の結果、オリジナルコードとして判定された場合に、抽出装置200は、該当するオリジナルコード候補をオリジナルコードとして抽出する。
[判定処理]
次に、図6を用いて、実施例2に係る判定処理の流れを説明する。図6は、実施例2に係る判定処理の流れの例を示すフローチャートである。なお、判定処理とは、主に判定部214による処理を指す。
例えば、図6に示すように、判定部214は、メモリアクセス傾向抽出部113によって抽出されたメモリアクセスそれぞれの最大の差分値である変化率やダンプ時点におけるダンプファイル情報等を受け取る(ステップS301)。かかるメモリアクセスは、例えば、読み込み、書き込み及び命令フェッチ等である。
そして、判定部214は、全てのメモリアクセスの中でダンプファイルの抽出時点が同一のものがあるか否かを判定する(ステップS302)。このとき、判定部214は、3つのメモリアクセスのうち、全てにおいてダンプファイルの抽出時点が同一でない場合に(ステップS302否定)、3つのメモリアクセスのうち2つにおいてダンプファイルの抽出時点が同一であるか否かを判定する(ステップS303)。
続いて、判定部214は、3つのメモリアクセスのうち、2つにおいてダンプファイルの抽出時点が同一でない場合に(ステップS303否定)、該メモリアクセスのうち、最大の変化率を有するダンプファイルの抽出時点を取得する(ステップS304)。なお、ダンプファイルの抽出時点の取得については、最大の変化率ではなく、該変化率が所定閾値以上であるものを取得するようにしても良い。
その後、判定部214は、取得されたダンプファイルの抽出時点のものをオリジナルコードとして決定する(ステップS305)。なお、判定部214は、全てのメモリアクセスにおいてダンプファイルの抽出時点が同一である場合(ステップS302肯定)と、2つにおいてダンプファイルの抽出時点が同一である場合(ステップS303肯定)とについても、一致しているダンプファイル抽出時点のものをオリジナルコードとして決定する(ステップS305)。
[実施例2による効果]
上述したように、抽出装置200は、メモリアクセスの変化の大きいオリジナルコード候補のうち、メモリアクセスにおいて同一のダンプポイントがあれば該当するオリジナルコード候補をオリジナルコードとして決定し、同一のダンプポイントがなければ最も変化の大きいオリジナルコード候補をオリジナルコードとして決定するので、より高精度にオリジナルコードを抽出することができる。
さて、これまで本願に開示する抽出装置及び抽出方法の実施例について説明したが、上述した実施例以外にも種々の異なる形態にて実施されてよいものである。そこで、(1)所定条件に係る処理、(2)装置の構成、において異なる実施例を説明する。
(1)所定条件に係る処理
上記実施例では、所定条件に係る処理、すなわちメモリアクセスの傾向が所定閾値以上変化しているか否か、或いは、最も大きく変化しているか否かの判定について、メモリアクセス傾向抽出部113で処理する場合を説明したが、これらの処理を判定部214で実施することにしても良い。例えば、メモリアクセス傾向抽出部113は、ダンプファイル情報とメモリアクセス情報とに基づき変化率等のメモリアクセスの傾向を抽出し、判定部214は、メモリアクセスの傾向について所定条件を満たすか否かを判定し、所定条件を満たすものについて、メモリアクセスのうち複数で同一のダンプポイントを有するか否かを判定し、オリジナルコード候補からオリジナルコードを決定する。
また、上記実施例では、所定条件を満たすものとして、メモリアクセスの傾向が所定閾値以上変化するもの、或いは、最も大きく変化しているものについて、該当するオリジナルコード候補をオリジナルコードとすることとして説明したが、メモリアクセスの傾向が所定閾値以上変化するもの、且つ、最も大きく変化しているものについて、該当するオリジナルコード候補をオリジナルコードとすることとしても良い。すなわち、メモリアクセスの傾向が全てにおいて変化が小さい(所定閾値未満である)場合には、オリジナルコードとして抽出しない。
(2)装置の構成
なお、上記文書中や図面中などで示した処理手順、制御手順、具体的名称、各種のデータやパラメタなどを含む情報(例えば、メモリアクセスの種類等)については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は、機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は、図示のものに限られず、その全部または一部を各種の負担や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合することができる。さらに、各装置にて行われる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、或いは、ワイヤードロジックによるハードウェアとして実現され得る。
以上のように、本発明に係る抽出装置及び抽出方法は、パッキングされたプログラムからオリジナルコードを抽出する場合に有用であり、特に、高精度にオリジナルコードを抽出することに適する。
100,200 抽出装置
111 メモリダンプ抽出部
112 メモリアクセス情報取得部
113 メモリアクセス傾向抽出部
214 判定部

Claims (7)

  1. パッキングされたプログラムからオリジナルコードを抽出する抽出装置であって、
    前記プログラムを実行させ、前記オリジナルコードの候補を抽出する候補抽出手段と、
    前記プログラムを実行するプロセスによるメモリアクセスに関する情報であって、前記候補抽出手段によって抽出された時点の前後一定期間におけるメモリアクセス情報を取得する取得手段と、
    前記候補抽出手段によって抽出されたオリジナルコード候補の情報と、前記取得手段によって取得されたメモリアクセス情報とに基づいてメモリアクセスの傾向を抽出し、抽出されたメモリアクセスの傾向について、所定条件を満たすか否かを判定する傾向抽出手段と
    を有することを特徴とする抽出装置。
  2. 前記傾向抽出手段は、前記オリジナルコード候補の情報と、前記メモリアクセス情報とに基づいて、アクセスされたアドレスの範囲の平均値を求め、該平均値をメモリアクセスの傾向として抽出することを特徴とする請求項1に記載の抽出装置。
  3. 前記傾向抽出手段は、前記メモリアクセスの傾向について、前記候補抽出手段によって抽出された時点の前後で所定閾値以上変化しているか否かを判定することを特徴とする請求項1又は2に記載の抽出装置。
  4. 前記傾向抽出手段は、前記メモリアクセスの傾向について、前記候補抽出手段によって抽出された時点の前後で最も大きく変化しているか否かを判定することを特徴とする請求項1又は2に記載の抽出装置。
  5. 前記傾向抽出手段による判定の結果、所定条件を満たすものについて、前記候補抽出手段による抽出時点が複数のメモリアクセスのうち少なくとも2つで一致する場合に、一致した抽出時点でのオリジナルコード候補をオリジナルコードとして判定し、前記候補抽出手段による抽出時点が複数のメモリアクセスで全て一致しない場合に、メモリアクセスの傾向について最も大きな変化を有するオリジナルコード候補をオリジナルコードとして判定する判定手段をさらに有することを特徴とする請求項1〜4のいずれか一つに記載の抽出装置。
  6. 前記取得手段は、メモリに対する読み込み、書き込み及び命令フェッチのメモリアクセス情報を取得することを特徴とする請求項1に記載の抽出装置。
  7. パッキングされたプログラムからオリジナルコードを抽出する抽出方法であって、
    前記プログラムを実行させ、前記オリジナルコードの候補を抽出する候補抽出工程と、
    前記プログラムを実行するプロセスによるメモリアクセスに関する情報であって、前記候補抽出工程によって抽出された時点の前後一定期間におけるメモリアクセス情報を取得する取得工程と、
    前記候補抽出工程によって抽出されたオリジナルコード候補の情報と、前記取得工程によって取得されたメモリアクセス情報とに基づいてメモリアクセスの傾向を抽出し、抽出されたメモリアクセスの傾向について、所定条件を満たすか否かを判定する傾向抽出工程と
    を含んだことを特徴とする抽出方法。
JP2010117640A 2010-05-21 2010-05-21 抽出装置及び抽出方法 Active JP5389733B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010117640A JP5389733B2 (ja) 2010-05-21 2010-05-21 抽出装置及び抽出方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010117640A JP5389733B2 (ja) 2010-05-21 2010-05-21 抽出装置及び抽出方法

Publications (2)

Publication Number Publication Date
JP2011248405A JP2011248405A (ja) 2011-12-08
JP5389733B2 true JP5389733B2 (ja) 2014-01-15

Family

ID=45413635

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010117640A Active JP5389733B2 (ja) 2010-05-21 2010-05-21 抽出装置及び抽出方法

Country Status (1)

Country Link
JP (1) JP5389733B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5083760B2 (ja) * 2007-08-03 2012-11-28 独立行政法人情報通信研究機構 マルウェアの類似性検査方法及び装置
JP5133192B2 (ja) * 2008-10-06 2013-01-30 日本電信電話株式会社 オリジナルコードの抽出装置、抽出方法、および抽出プログラム

Also Published As

Publication number Publication date
JP2011248405A (ja) 2011-12-08

Similar Documents

Publication Publication Date Title
JP6494744B2 (ja) リターン指向プログラミング攻撃の透過的な検出及び抽出
US7814544B1 (en) API-profile guided unpacking
KR102317833B1 (ko) 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법
JP6170900B2 (ja) ファイル処理方法及び装置
US10691791B2 (en) Automatic unpacking of executables
US10311233B2 (en) Generic unpacking of program binaries
US8775826B2 (en) Counteracting memory tracing on computing systems by code obfuscation
US20160224791A1 (en) Process testing apparatus, process testing program, and process testing method
EP3570196B1 (en) Imparting device, imparting method, and imparting program
JP5441043B2 (ja) プログラム、情報処理装置、及び情報処理方法
JP5456715B2 (ja) データ特定装置、データ特定方法及びデータ特定プログラム
JP5952218B2 (ja) 情報処理装置および情報処理方法
EP4332805A1 (en) Emulation-based malware detection
JP5389734B2 (ja) 抽出装置及び抽出方法
JP5389733B2 (ja) 抽出装置及び抽出方法
KR101052735B1 (ko) 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치
CN110135152B (zh) 应用程序攻击检测方法及装置
JP2012008825A (ja) プログラム難読化装置、プログラム制御装置、プログラム難読化方法及びプログラム
CN107239703B (zh) 一种动态链接库缺失的可执行程序的动态分析方法
JP5437913B2 (ja) コード領域識別装置、コード領域識別方法及びコード領域識別プログラム
US20240248990A1 (en) Machine learning-based malware detection for code reflection
JP7259436B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム、及び情報処理システム
Isawa et al. Generic unpacking method based on detecting original entry point
US20230394145A1 (en) Machine learning-based malware detection in process memory
JP5687593B2 (ja) 解析装置、解析方法および解析プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120928

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130930

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131009

R150 Certificate of patent or registration of utility model

Ref document number: 5389733

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