説明

データ特定装置、データ特定方法及びデータ特定プログラム

【課題】アンパッキングに係る作業の効率化を可能にすること。
【解決手段】メモリアクセス監視部31が、圧縮又は暗号化されたプログラムの領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される値と、メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される値とを取得する。エントロピー計算部33が、取得された値を用いて、所定の回数の読み出し及び書き込みに相当するデータ量ごとに、エントロピー値を算出する。ログ解析部71が、読み出しに係るエントロピー値が所定の閾値よりも高くなった時点から、書き込みに係るエントロピー値が所定の閾値よりも低くなった時点までの時間区間の中でメモリに対して書き込まれた所定の容量のデータのうち、最も早く実行されたデータの書き込み先を、復元されたプログラムが実行される際の開始位置として特定する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、データ特定装置、データ特定方法及びデータ特定プログラムに関する。
【背景技術】
【0002】
従来、マルウェア(Malware)などのプログラムには、解析を困難にさせるためにパッキングと呼ばれる圧縮処理や暗号化処理が施されている場合がある。パッキングが施されたプログラムは、元のプログラムであるオリジナルコードに加えて、自己解凍を行うためのコードなどが付加されている。そして、オリジナルコードがメモリ上に復元された後に、プログラムが実行される。
【0003】
このようなパッキングが施されたプログラムについて解析を行う場合には、メモリ上に復元されるオリジナルコードを抽出するアンパッキングが行われる。アンパッキングでは、オリジナルコードとそれ以外のコードとの境界を知るために、復元されるオリジナルコードのメモリ上の開始アドレスであるOEP(Original Entry Point)を特定することが重要となる。しかしながら、OEPの特定は、手動の動的解析によって行われるために、手間がかかり、作業の効率化が求められている。
【0004】
そこで、近年、書き込み命令が実行された際に、書き込み先のメモリアドレスに印を付加し、印が付加されたメモリアドレスの値が命令として実行された際に、当該アドレスをOEP候補として出力する技術が知られている。これにより、解析者は、出力された候補のみを解析対象とすることができ、アンパッキングに係る負担が軽減される。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】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
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した従来技術では、アンパッキングに係る作業の効率化に一定の限界があった。具体的には、上述した従来技術では、複数のOEP候補が出力されることが多く、その中から正しいOEPを特定する作業が必要となり、アンパッキングの効率化に一定の限界があった。
【0007】
そこで、本願に開示する技術は、上述した従来技術の問題に鑑みてなされたものであって、アンパッキングに係る作業の効率化を可能にするデータ特定装置、データ特定方法及びデータ特定プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決し、目的を達成するため、開示の装置は、圧縮又は暗号化されたプログラムの領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される第1の値と、前記メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される第2の値とを取得する取得部と、前記取得部によって取得された前記第1の値を用いて所定の回数の読み出しに相当するデータ量のデータの第1エントロピー値、および前記取得部によって取得された前記第2の値を用いて所定の回数の書き込みに相当するデータ量のデータの第2エントロピー値を算出する算出部と、前記算出部によって算出された前記第1エントロピー値が所定の閾値よりも高くなった時点から、前記第2エントロピー値が所定の閾値よりも低くなった時点までの時間区間の中で前記メモリに対して書き込まれた前記所定の容量のデータのうち、最も早く実行されたデータの書き込み先を、復元された前記プログラムが実行される際の開始位置として特定する特定部とを有することを特徴とする。
【発明の効果】
【0009】
開示の装置は、アンパッキングに係る作業の効率化を可能にする。
【図面の簡単な説明】
【0010】
【図1】図1は、実施例1に係るデータ特定装置の構成の一例を説明するための図である。
【図2】図2は、実施例1に係る監視対象プロセスを説明するための図である。
【図3】図3は、実施例1に係るメモリアクセス監視部によって取得されるデータの値を説明するための図である。
【図4】図4は、実施例1に係るエントロピー計算部によるエントロピー算出処理の一例を説明するための図である。
【図5】図5は、実施例1に係るログ解析部による第1の処理の一例を説明するための図である。
【図6】図6は、実施例1に係るログ解析部による第2の処理の一例を説明するための図である。
【図7】図7は、実施例1に係るログ解析部による第3の処理の一例を説明するための図である。
【図8】図8は、実施例1に係るデータ特定装置によるOEP特定処理の手順を示すフローチャートである。
【図9】図9は、実施例2に係るデータ特定プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【0011】
以下に添付図面を参照して、本願の開示するデータ特定装置、データ特定方法及びデータ特定プログラムの実施例を詳細に説明する。なお、本願の開示するデータ特定装置、データ特定方法及びデータ特定プログラムは、以下の実施例により限定されるものではない。
【実施例1】
【0012】
[実施例1に係るデータ特定装置の構成]
実施例1に係るデータ特定装置の構成について説明する。図1は、実施例1に係るデータ特定装置100の構成の一例を説明するための図である。図1に示すように、実施例1に係るデータ特定装置100は、サブシステム1と、サブシステム2と、記憶領域60とを有する。サブシステム1、サブシステム2及び記憶領域60は、図1に示すように、ホストOS(Operating System)20がインストールされたハードウェア10で動作する。
【0013】
ハードウェア10は、物理的な計算機であり、各種演算処理を実行するCPU(Central Processing Unit)や、各種情報を一時記憶するRAM(Random Access Memory)等を有する。ホストOS20は、ハードウェア10上で動作する各種アプリケーションに種々のサービスを提供する基本ソフトである。ホストOS20は、通常は単にOSと呼ばれるが、本明細書では、物理的な計算機上で動作するOSと、仮想計算機上で動作するOSとを区別するために、前者をホストOSと呼び、後者をゲストOSと呼ぶこととする。
【0014】
サブシステム1は、図1に示すように、下層レイヤーからハードウェア10、ホストOS20、VMM(Virtual Machine Monitor:ハイパーバイザー)30、ゲストOS40から構成され、ゲストOS40上で監視対象プロセス50が実行される。VMM30は、ハードウェアデバイスを全てソフトウェアにより実現した仮想ハードウェアにより構成されており、図1に示すように、メモリアクセス監視部31と、OEP候補生成部32と、エントロピー計算部33とを有する。ゲストOS40は、VMM30上にて動作させる仮想OSであり、ゲストOS40上で監視対象プロセス50が実行される。
【0015】
ここで、ゲストOS40上で実行される監視対象プロセス50について説明する。図2は、実施例1に係る監視対象プロセス50を説明するための図である。実施例1に係る監視対象プロセス50は、例えば、VMM30が有する仮想メモリに記憶されたプログラムが実行されたプロセスである。仮想メモリに記憶されるプログラムは、例えば、図2の(A)に示すように、元のプログラムであるオリジナルコードが圧縮又は暗号化され、展開用コードが付加されたプログラムである。
【0016】
このようなパッキングされたプログラムがマルウェアである場合には、プログラムがメモリに格納されると、自己解凍機能などにより以下に記す展開処理が実行された後、オリジナルコードが実行されることとなる。展開処理は、オリジナルコードが実行されるまでの前処理であり、例えば、図2の(B)に示すように、圧縮又は暗号化されたオリジナルコードを解凍又は復号し、メモリの他のアドレスにコピーする処理などである。展開処理においては、例えば、メモリからの読み込み及びメモリに対する書き込みが1バイト(Byte)ごとに実行される。展開用コードは、上述した展開処理を実行させるためのコードである。
【0017】
監視対象プロセス50は、上述した展開処理からメモリにコピーされたオリジナルコードの実行処理までの一連の処理に相当する。現在、ネットワーク上に配布されるマルウェアの大半は、このようなパッキングが施されており、マルウェア本体であるオリジナルコードを解析するために、オリジナルコードを抽出するアンパッキングが重要となっている。
【0018】
図1に戻って、メモリアクセス監視部31は、圧縮又は暗号化されたプログラムの領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される第1の値と、メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される第2の値とを取得する。具体的には、メモリアクセス監視部31は、監視対象プロセス50が図示しない仮想メモリ上で実行する展開処理に係る読み込み命令及び書き込み命令それぞれについて、データが読み書きされたメモリアドレス、読み書きされたデータの値、プログラムカウンタなどを取得する。
【0019】
ここで、メモリアクセス監視部31によって取得される読み書きされたデータの値について説明する。図3は、実施例1に係るメモリアクセス監視部31によって取得されるデータの値を説明するための図である。例えば、メモリアクセス監視部31は、図3に示すように、監視対象プロセス50によって実行される展開処理において、メモリから読み込まれる1バイトごとのデータについて、8つのビット(bit)で構成された値を1つの値として取得する。一例を挙げると、メモリアクセス監視部31は、図3に示す「11010011」を1つの値として取得する。
【0020】
すなわち、メモリアクセス監視部31は、1つのビットが「0」又は「1」のどちらかの値をとることから、メモリから読み込まれたデータの値として、「28=256」通りの値を取得することとなる。同様に、メモリアクセス監視部31は、監視対象プロセス50によって実行される展開処理において、メモリに対して書き込まれる1バイトごとのデータについて、8つのビットで構成された値を1つの値として取得する。そして、メモリアクセス監視部31は、データが読み書きされたメモリアドレス、プログラムカウンタなども同時に取得し、取得した情報を後述するエントロピー計算部33に送信する。
【0021】
図1に戻って、OEP候補生成部32は、監視対象プロセス50によって書き込み命令が実行された場合に、書き込み先のメモリアドレスに印を付加する。そして、OEP候補生成部32は、印が付加されたアドレスの値が実行された場合に、図1に示すように、当該アドレスをOEP候補として後述する記憶領域60に出力する。
【0022】
エントロピー計算部33は、メモリアクセス監視部31によって取得された第1の値を用いて所定の回数の読み出しに相当するデータ量のデータの第1エントロピー値、およびメモリアクセス監視部31によって取得された第2の値を用いて所定の回数の書き込みに相当するデータ量のデータの第2エントロピー値を算出する。例えば、エントロピー計算部33は、図1に示すように、読み込みバッファと書き込みバッファとを有し、メモリアクセス監視部31によってデータの値が取得されるごとに、取得されたデータの値を読み込みバッファ又は書き込みバッファに格納する。そして、エントロピー計算部33は、バッファに格納されたデータの値を用いてエントロピー値を算出する。
【0023】
ここで、読み込みバッファ及び書き込みバッファは、それぞれ所定のサイズのFIFO(First-In First-Out)型のバッファである。すなわち、エントロピー計算部33は、バッファのサイズごとのエントロピー値を算出する。なお、読み込みバッファは、メモリアクセス監視部31によって取得された読み込みデータのデータ値を記憶し、エントロピー計算部33によってエントロピー値が算出される。また、書き込みバッファは、メモリアクセス監視部31によって取得された書き込みデータのデータ値を記憶し、エントロピー計算部33によってエントロピー値が算出される。
【0024】
エントロピー計算部33は、読み込まれたデータ及び書き込まれたデータそれぞれについて、以下の式(1)により読み込み命令又は書き込み命令が実行されるごとのデータのエントロピー値を算出する。
【0025】
【数1】

【0026】
例えば、エントロピー計算部33は、式(1)に示すように、256通りのデータの値を「0」から「255」とした場合の読み込みデータ又は書き込みデータのエントロピー値を算出する。そして、エントロピー計算部33は、読み込み命令及び書き込み命令が実行された時点ごとに、読み込みデータ及び書き込みデータのエントロピー値を算出する。なお、式(1)のpiは、{(あるデータDにおける値iを取るバイト数)/(データDの総バイト数)}で表される。
【0027】
図4は、実施例1に係るエントロピー計算部33によるエントロピー算出処理の一例を説明するための図である。図4においては、読み込みデータのエントロピー値の算出を示す。例えば、エントロピー計算部33は、図4の(A)に示すように、読み込みデータのバイト1の値「11010011」から順に取得されると、取得された値を読み込みバッファに格納する。そして、エントロピー計算部33は、図4の(B)に示すように、読み込みバッファのサイズ分のデータのエントロピー値を算出する。例えば、エントロピー計算部33は、図4の(B)に示すように、読み込み命令が実行された時点で読み込みバッファに格納されたバイト1から3までのデータのエントロピー値を算出する。エントロピー計算部33は、読み込み命令が実行されるごとに、当該命令が実行された時点で読み込みバッファに格納されたデータ値を用いてエントロピー値を算出する。
【0028】
同様に、エントロピー計算部33は、書き込みデータについても、メモリアクセス監視部31によって取得されたデータの値をバッファに格納し、バッファのサイズごとにデータのエントロピー値を算出する。エントロピー計算部33は、書き込み命令が実行されるごとに、当該命令が実行された時点で書き込みバッファに格納されたデータ値を用いてエントロピー値を算出する。そして、エントロピー計算部33は、算出した読み込みデータのエントロピー値及び書き込みデータのエントロピー値を算出した順にログとして記憶領域60に出力する。
【0029】
図1に戻って、記憶領域60は、OEP候補生成部32によって出力されたOEP候補を記憶するOEP候補記憶領域と、エントロピー計算部33によって出力された読み込みデータのエントロピー値及び書き込みデータのエントロピー値とを記憶するログ記憶領域とを有する。ログ記憶領域は、エントロピー計算部33によって出力された読み込みデータのエントロピー値及び書き込みデータのエントロピー値に加えて、書き込みデータのエントロピー値の算出に用いられたデータの書き込み先アドレスを記憶する。記憶領域60は、例えば、ハードディスク、光ディスクなどの記憶装置、または、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子である。
【0030】
サブシステム2は、図1に示すように、下層レイヤーからハードウェア10、ホストOS20、解析部70から構成される。解析部70は、図1に示すように、ログ解析部71と、フィルター72とを有し、記憶領域60のOEP候補記憶領域によって記憶されたOEP候補と、記憶領域60のログ記憶領域に記憶された読み込みデータのエントロピー値及び書き込みデータのエントロピー値とを用いて、OEPを特定する。
【0031】
ログ解析部71は、エントロピー計算部33によって算出された第1エントロピー値が所定の閾値よりも高くなった時点から、第2エントロピー値が所定の閾値よりも低くなった時点までの時間区間の中で前記メモリに対して書き込まれた前記所定の容量のデータのうち、最も早く実行されたデータの書き込み先を、復元された前記プログラムが実行される際の開始位置として特定する。また、ログ解析部71は、第1エントロピー値が第1の閾値よりも高い時点からなる高区間と、前記第2エントロピー値が第2の閾値よりも低い時点からなり、かつ、発生時点が前記高区間よりも遅い低区間とを抽出し、前記高区間の開始時点から前記低区間の終了時点までの間を、前記圧縮又は暗号化された領域が前記メモリから読み出され、復元されて当該メモリに書き込まれるまでの前記時間区間として特定する。
【0032】
具体的には、ログ解析部71は、エントロピー計算部33によって算出され、ログ記憶領域に記憶された読み込みデータのエントロピー値及び書き込みデータのエントロピー値に基づいて、OEP及びオリジナルレコードが読み書きされた時間区間を特定する。より具体的には、ログ解析部71は、読み込みデータのエントロピー値が所定の閾値を上回った時点から書き込みデータのエントロピー値が所定の値を下回った時点までの時間区間の中で書き込み命令が実行された書き込み先のメモリアドレスを抽出して、抽出したメモリアドレスを記憶したフィルター72を生成する。
【0033】
ここで、実施例1に係るログ解析部71によって実行される処理について説明する。図5は、実施例1に係るログ解析部71による第1の処理の一例を説明するための図である。図5においては、読み込みデータに対するログ解析部71の処理について示す。例えば、ログ解析部71は、図5の(A)に示すように、i回目の読み込み命令が実行された場合におけるデータのエントロピー値Riが所定の閾値を上回ったか否かを判定する際に、以下に記すような処理を実行する。すなわち、ログ解析部71は、エントロピー値Riと、i回目の前後N/2回の読み込み命令が実行された場合におけるデータそれぞれのエントロピー値の平均Piと、所定の閾値Cとが「Ri−Pi>C」を満たすか否かを判定する。
【0034】
一例を挙げて説明すると、例えば、「N:300000、C:1.5」であった場合には、ログ解析部71は、i回目の前「150000」回分のエントロピー値及びi回目の後ろ「150000」回分のエントロピー値の平均値を算出する。そして、ログ解析部71は、算出した平均値をRiの値から減算して、「1.5」を上回るか否かを判定する。ログ解析部71は、上述した処理を読み込みデータのエントロピー値を取得するごとに実行する。そして、ログ解析部71は、図5の(B)に示すように、「Ri−Pi>C」を満たすような「i」の連続区間を全て算出し、図5の(C)に示すように、算出した連続区間の集合を高区間集合として抽出する。
【0035】
図6は、実施例1に係るログ解析部71による第2の処理の一例を説明するための図である。図6においては、書き込みデータに対するログ解析部71の処理について示す。例えば、ログ解析部71は、図6の(A)に示すように、i回目の書き込み命令が実行された場合におけるデータのエントロピー値Wiが所定の閾値を下回ったか否かを判定する際に、以下に記すような処理を実行する。すなわち、ログ解析部71は、エントロピー値Wiと、i回目の前後N/2回の読み込み命令が実行された場合におけるデータそれぞれのエントロピー値の平均Qiと、所定の閾値Cとが「−(Wi−Qi)>C」を満たすか否かを判定する。
【0036】
一例を挙げて説明すると、例えば、「N:300000、C:1.5」であった場合には、ログ解析部71は、i回目の前「150000」回分のエントロピー値及びi回目の後ろ「150000」回分のエントロピー値の平均値を算出する。そして、ログ解析部71は、算出した平均値をWiの値から減算して、減算した値に「−(マイナス)」を付加した値が「1.5」を上回るか否かを判定する。ログ解析部71は、上述した処理を書き込みデータのエントロピー値を取得するごとに実行する。そして、ログ解析部71は、図6の(B)に示すように、「−(Wi−Qi)>C」を満たすような「i」の連続区間を全て算出し、図6の(C)に示すように、算出した連続区間の集合を低区間集合として抽出する。
【0037】
なお、高区間集合及び低区間集合を抽出する際に用いられる区間は、エントロピー値が閾値よりも高い時点及び低い時点が続く区間であれば、どのような区間を用いてもよい。すなわち、上述した連続区間は、あくまでも一例であり、他の例を挙げると、例えば、エントロピー値が閾値よりも高い時点及び低い時点が離散的に続く区間を用いる場合であってもよい。
【0038】
さらに、ログ解析部71は、抽出した高区間集合と低区間集合とを用いて、OEPを特定するためのフィルターを生成する。図7は、実施例1に係るログ解析部71による第3の処理の一例を説明するための図である。例えば、ログ解析部71は、図7の(A)に示すように、高区間集合の中で一番早く出現した区間を区間Hとして抽出する。また、ログ解析部71は、図7の(A)に示すように、低区間集合の中で、区間Hの終点よりも始点及び終点が遅い区間の集合である集合Tを抽出する。そして、ログ解析部71は、図7の(A)に示すように、集合Tのなかで、一番早く出現した区間を区間Lとして抽出する。
【0039】
そして、ログ解析部71は、図7の(B)に示すように、区間Hの始点から区間Lの終点までの間に書き込み命令が実行された書き込み先アドレスを抽出する。その後、ログ解析部71は、抽出した書き込み先アドレスを記憶させたフィルターを生成する。
【0040】
ここで、読み込みデータのエントロピー値及び書き込みデータのエントロピー値を用いた処理において、以下に示す状態になった場合には、ログ解析部71は、判定のための閾値を下げて、再度処理を実行する。具体的には、ログ解析部71は、高区間集合又は低区間集合のいずれかがない場合、また、集合Tがない場合に、「閾値C」から「イテレーションごとの閾値の減少値δ」を減算し、減算後の値を新たな閾値として再度処理を実行する。すなわち、ログ解析部71は、上述した場合には、「C:= C−δ」として再度高区間集合及び低区間集合の抽出処理を実行する。例えば、ログ解析部71は、「δ」として「0.1」を用いる。
【0041】
また、ログ解析部71は、読み込みデータ及び書き込みデータともに、1回目からN/2回目までの間については、平均値の算出において不足する値にエントロピー値の最大値と最小値との中間値(loge256)/2を用いる。また、ログ解析部71は、終了前N/2回については、計算の対象外とする。
【0042】
図1に戻って、フィルター72は、記憶領域60によって記憶されたOEP候補を取得して、取得したOEP候補の中から自身が記憶する書き込み先アドレスに含まれないものを削除する。そして、フィルター72は、削除後に残ったOEP候補のなかから一番早く実行されたOEP候補をOEPとして特定し、特定したOEPを図示しない出力部に出力する。解析者は、フィルター72によって出力されたOEPの情報を用いることで、正しいオリジナルコードの解析を実行することができる。
【0043】
上述したように、実施例1に係るデータ特定装置100は、メモリから読み込まれるデータ及びメモリに対して書き込まれるデータのエントロピー値の変化に基づいて、パッキングされたプログラムのオリジナルコードの開始アドレスであるOEPを特定する。これは、読み込まれるデータと書き込まれるデータとが有する性質の違いを利用したものである。すなわち、データを解凍又は復号するためのメモリからデータを読み込む場合には、データは圧縮又は暗号化されているため規則性がなく、その結果、エントロピー値が高くなる。一方、メモリに対して書き込みが実行される場合には、データは、コードの終りにパディングと呼ばれる連続した「0」の値が書き込まれるケースが多く、その結果、エントロピー値が低くなる。すなわち、圧縮又は暗号化されたオリジナルコードに対して展開処理が実行されると、読み出しデータ及び書き込みデータのエントロピー値が上述したように推移することとなることから、読み込みデータのエントロピー値が高くなった時点から書き込みデータのエントロピー値が低くなった時点までの間に書き込まれたデータは、圧縮又は暗号化されたオリジナルコードである可能性が高い。そして、読み込みデータのエントロピー値が高くなった時点から書き込みデータのエントロピー値が低くなった時点までの間に出現した書き込み先アドレスのうち一番早いものが復元されたコードの開始アドレスであるOEPである可能性が高い。従って、実施例1に係るデータ特定装置100は、OEPを高確度で特定することができ、アンパッキングに係る作業の効率化を可能にする。
【0044】
実施例1に係るデータ特定装置100に利用されるパッキングとエントロピー値との関係については、以下に示す非特許文献においても言及されており、データ内における各バイト値の数の偏りが少ないほど、そのデータのエントロピー値が高くなり、パッキングによって圧縮もしくは暗号化されている情報は一般に高いエントロピー値を持つことが知られている。
【0045】
「非特許文献:Robert Lyda , James Hamrock, Using Entropy Analysis to Find Encrypted and Packed Malware, IEEE Security and Privacy, v.5 n.2, p.40-45, March 2007」
【0046】
[実施例1に係るデータ特定装置によるOEP特定処理の手順]
次に、実施例1に係るデータ特定装置100によるOEP特定処理の手順について、図8を用いて説明する。なお、図8においては、監視対象プロセス50が実行された後の手順について示している。図8は、実施例1に係るデータ特定装置100によるOEP特定処理の手順を示すフローチャートである。
【0047】
図8に示すように、実施例1に係るデータ特定装置100においては、監視対象プロセス50が実行されると、メモリアクセス監視部31は、読み込みデータ及び書き込みデータの値を取得する(ステップS101)。そして、OEP候補生成部32は、書き込み命令が実行された書き込み先のアドレスに印を付加し、印が付加されたアドレスの値が実行された場合に、当該アドレスをOEP候補として生成する(ステップS102)。
【0048】
その後、エントロピー計算部33は、メモリアクセス監視部31によって読み込みデータの値及び書き込みデータの値が取得されるごとに、各データのエントロピー値を算出する(ステップS103)。そして、ログ解析部71は、読み込みデータからの高区間集合の抽出と、書き込みデータからの低区間集合とを実行する(ステップS104)。
【0049】
ここで、ログ解析部71は、高区間集合及び低区間集合が抽出されたか否かを判定する(ステップS105)。高区間集合及び低区間集合が抽出された場合には(ステップS105肯定)、ログ解析部71は、高区間集合の中で一番早く出現する区間Hを抽出する(ステップS106)。一方、高区間集合又は低区間集合のいずれかが抽出されなかった場合には(ステップS105否定)、ログ解析部71は、高区間集合及び低区間集合を抽出する際に用いる閾値を下げ(ステップS109)、再度高区間集合及び低区間集合の抽出を実行する。
【0050】
ステップS106において、区間Hを抽出すると、ログ解析部71は、低区間集合から区間Hよりも遅い集合Tの抽出を実行する(ステップS107)。ここで、ログ解析部71は、集合Tが抽出されたか否かを判定する(ステップS108)。集合Tが抽出された場合には(ステップS108肯定)、ログ解析部71は、集合Tの中で一番早く出現する区間Lを抽出する(ステップS110)。一方、集合Tが抽出されなかった場合には(ステップS108否定)、ログ解析部71は、閾値を下げ(ステップS109)、再度高区間集合及び低区間集合の抽出を実行する(ステップS104)。
【0051】
ステップS110において、区間Lを抽出すると、ログ解析部71は、区間Hの始点から区間Lの終点までの間の書き込み命令の書き込み先アドレスを抽出する(ステップS111)。その後、フィルター72は、OEP候補生成部32によって生成されたOEP候補のうち、抽出した書き込み先アドレスに含まれないものを削除する(ステップS112)。そして、フィルター72は、残った候補のうち、一番早いものをOEPと特定して(ステップS113)、処理を終了する。
【0052】
[実施例1の効果]
上述したように、実施例1によれば、メモリアクセス監視部31が、圧縮又は暗号化された領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される値と、メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される値とを取得する。エントロピー計算部33が、メモリアクセス監視部31によって取得された所定の容量のデータによって示される値を用いて、所定の回数の読み出し及び書き込みに相当するデータ量ごとに、当該データ量のデータのエントロピー値を算出する。ログ解析部71が、エントロピー計算部33によって算出された読み出しに係るエントロピー値が所定の閾値よりも高くなった時点から、書き込みに係るエントロピー値が所定の閾値よりも低くなった時点までの時間区間の中でメモリに対して最も早く書き込まれた所定の容量のデータの書き込み先を圧縮又は暗号化された領域の書き込み開始位置として特定する。従って、実施例1に係るデータ特定装置100は、OEPを高確度で特定することができ、アンパッキングに係る作業の効率化を可能にする。
【0053】
また、実施例1によれば、ログ解析部71が、読み出しに係るエントロピー値が第1の閾値よりも高い時点からなる高区間と、書き込みに係るエントロピー値が第2の閾値よりも低い時点からなり、かつ、発生時点が高区間よりも遅い低区間とを抽出し、高区間の開始時点から低区間の終了時点までの間を、圧縮又は暗号化された領域がメモリから読み出され、復元されて当該メモリに書き込まれるまでの前記時間区間として特定する。実施例1に係るデータ特定装置100は、マルウェアに相当するオリジナルコードを高確度で特定することができ、アンパッキングに係る作業の効率化を可能にする。
【0054】
例えば、従来技術においては、複数のOEP候補が出力される場合が多く、解析者が出力された複数のOEP候補から正しいOEPを特定する必要があった。そのため、オリジナルコードを抽出するアンパッキングに係る作業に手間がかかり、結果として、オリジナルコードの解析においても効率的に行うことが困難であった。開示の技術は、複数のOEP候補の中から、正しいOEPを特定することができ、アンパッキングに係る作業の効率化を可能にする。その結果、開示の技術は、オリジナルコードの解析についても効率的に行うことを可能にする。
【実施例2】
【0055】
これまで実施例1について説明したが、本願が開示する技術は実施例1に限定されるものではない。すなわち、実施例1は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。
【0056】
上述した実施例1では、サブシステム1及び2が同一装置内に内蔵される場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、サブシステム1及び2がそれぞれ異なる装置内に内蔵される場合であってもよい。
【0057】
上述した実施例1では、読み出しデータのエントロピー値に対する閾値と、書き込みデータのエントロピー値に対する閾値とが同一である場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、読み出しデータのエントロピー値に対する閾値と、書き込みデータのエントロピー値に対する閾値とで異なる値を用いる場合であってもよい。また、実施例1では、読み出しデータに対する処理及び書き込みデータに対する処理の双方において、イテレーションごとの閾値の減少値が同一である場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、イテレーションごとの閾値の減少値が読み出しデータに対する処理及び書き込みデータに対する処理とで異なる場合であってもよい。
【0058】
上述した実施例1では、連続区間として始点と終点が異なる場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、始点と終点が同一である場合であってもよい。
【0059】
上述した実施例1では、1バイトのデータの値を取得して、エントロピー値を算出する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、2バイトのデータの値を取得して、エントロピー値を算出する場合であってもよい。
【0060】
上述した実施例1では、監視対象プロセス50がVM上で実行される場合について説明した。これは、マルウェアの動的解析をVMM上で実行することにより、解析環境が感染しても容易に復旧することができる点や、耐デバッガ機能を有するマルウェアの解析に有利である点などの利点が得られるためである。すなわち、開示の技術は、これに限定されるものではなく、例えば、実施例1に記載したVMM30で実行される処理を物理的計算機上で実行する場合であってもよい。なお、耐デバッガ機能とは、デバッガを検知した場合に、そのプログラムを終了させる機能である。
【0061】
上述した実施例1では、読み出されるデータの容量と書き込まれるデータの容量とが同一である場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、読み出されるデータの容量と書き込まれるデータの容量とが異なる場合であってもよい。
【0062】
[システム構成等]
例えば、各装置の分散・統合の具体的形態(例えば、図1の形態)は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合することができる。一例を挙げると、メモリアクセス監視部31とOEP候補生成部32とを一つの処理部として統合してもよく、一方、ログ解析部71を、エントロピー値を解析するエントロピー値解析部と、フィルターを生成するフィルター生成部とに分散してもよい。
【0063】
また、解析部70をデータ特定装置100の外部装置としてネットワーク経由で接続するようにしてもよく、或いは、ログ解析部71を別の装置が有し、ネットワークに接続されて協働することで、上述したデータ特定装置100の機能を実現するようにしてもよい。
【0064】
[データ特定プログラム]
上記実施例で説明したデータ特定装置100は、あらかじめ用意されたプログラムをコンピュータで実行することで実現することもできる。そこで、以下では、図1に示したデータ特定装置100と同様の機能を実現するデータ特定プログラムを実行するコンピュータの一例を説明する。
【0065】
図9は、実施例2に係るデータ特定プログラムを実行するコンピュータ1000を示す図である。図9に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU(Central Processing Unit)1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0066】
メモリ1010は、ROM(Read Only Memory)1011およびRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
【0067】
ここで、図9に示すように、ハードディスクドライブ1090は、例えば、OS(Operating System)1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。本実施例に係るデータ特定プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施例で説明したメモリアクセス監視部31と同様の情報処理を実行する取得手順と、エントロピー計算部33と同様の情報処理を実行する算出手順と、ログ解析部71と同様の情報処理を実行する特定手順とが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
【0068】
また、上記実施例で説明した記憶領域60に記憶されるデータのように、データ特定プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM1012に読み出して、取得手順と、算出手順と、特定手順とを実行する。
【0069】
なお、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、情報送受信プログラムに係るプログラムモジュールやプログラムデータは、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0070】
これらの実施例やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0071】
10 ハードウェア
20 ホストOS
30 VMM
31 メモリアクセス監視部
32 OEP候補生成部
33 エントロピー計算部
40 ゲストOS
50 監視対象プロセス
60 記憶領域
70 解析部
71 ログ解析部
72 フィルター
100 データ特定装置

【特許請求の範囲】
【請求項1】
圧縮又は暗号化されたプログラムの領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される第1の値と、前記メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される第2の値とを取得する取得部と、
前記取得部によって取得された前記第1の値を用いて所定の回数の読み出しに相当するデータ量のデータの第1エントロピー値、および前記取得部によって取得された前記第2の値を用いて所定の回数の書き込みに相当するデータ量のデータの第2エントロピー値を算出する算出部と、
前記算出部によって算出された前記第1エントロピー値が所定の閾値よりも高くなった時点から、前記第2エントロピー値が所定の閾値よりも低くなった時点までの時間区間の中で前記メモリに対して書き込まれた前記所定の容量のデータのうち、最も早く実行されたデータの書き込み先を、復元された前記プログラムが実行される際の開始位置として特定する特定部と、
を有することを特徴とするデータ特定装置。
【請求項2】
前記特定部は、前記第1エントロピー値が第1の閾値よりも高い時点からなる高区間と、前記第2エントロピー値が第2の閾値よりも低い時点からなり、かつ、発生時点が前記高区間よりも遅い低区間とを抽出し、前記高区間の開始時点から前記低区間の終了時点までの間を、前記圧縮又は暗号化された領域が前記メモリから読み出され、復元されて当該メモリに書き込まれるまでの前記時間区間として特定することを特徴とする請求項1に記載のデータ特定装置。
【請求項3】
データ特定装置によって実行されるデータ特定方法であって、
圧縮又は暗号化されたプログラムの領域を含むデータが所定の容量ごとにメモリから読み出される当該所定の容量のデータによって示される第1の値と、前記メモリから読み出され、復元されて書き込まれる所定の容量のデータによって示される第2の値とを取得する取得工程と、
前記取得工程によって取得された前記第1の値を用いて所定の回数の読み出しに相当するデータ量のデータの第1エントロピー値、および前記取得部によって取得された前記第2の値を用いて所定の回数の書き込みに相当するデータ量のデータの第2エントロピー値を算出する算出工程と、
前記算出工程によって算出された前記第1エントロピー値が所定の閾値よりも高くなった時点から、前記第2エントロピー値が所定の閾値よりも低くなった時点までの時間区間の中で前記メモリに対して書き込まれた前記所定の容量のデータのうち、最も早く実行されたデータの書き込み先を、復元された前記プログラムが実行される際の開始位置として特定する特定工程と、
を含んだことを特徴とするデータ特定方法。
【請求項4】
コンピュータを請求項1又は2に記載のデータ特定装置として機能させるためのデータ特定プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−194814(P2012−194814A)
【公開日】平成24年10月11日(2012.10.11)
【国際特許分類】
【出願番号】特願2011−58598(P2011−58598)
【出願日】平成23年3月16日(2011.3.16)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】