(57)【要約】  本発明は、マルウェアが通信の秘匿に利用した暗号ロジックを解析するために、マルウェアのプログラム内で暗号ロジックを格納した暗号ブロックを特定する暗号ブロック特定装置に関する。  暗号ブロック特定装置は、マルウェアの実行ステップを記録した実行トレースを解析し、暗号らしさを特徴付ける演算種別が実行ステップに含まれるか否かに基づいて実行ステップの暗号らしさを示す評価値を算出し、この評価値が閾値Ｌを越える実行ステップを暗号ブロックの候補であるブロック候補として抽出するブロック候補抽出部と、ブロック候補が閾値Ｍを越えて連続している実行トレースの領域を暗号ブロックとして特定する暗号ブロック特定部とを備える。
2016125205.tif 000002
【特許請求の範囲】
【請求項１】
マルウェアの実行ステップを記録した実行トレースを解析し、暗号らしさを特徴付ける演算種別が前記実行ステップに含まれるか否かに基づいて前記実行ステップの暗号らしさを示す評価値を算出し、この評価値が閾値Ｌを越える実行ステップを暗号ブロックの候補であるブロック候補として抽出するブロック候補抽出部と、
前記ブロック候補が閾値Ｍを越えて連続している前記実行トレースの領域を暗号ブロックとして特定する暗号ブロック特定部と
を備える暗号ブロック特定装置。
【請求項２】
前記ブロック候補抽出部は、前記実行ステップに対応付けられた配列を備え、前記配列の全ての要素から１実行ステップあたりの減衰量δを減算し、前記演算種別が前記実行ステップに含まれている場合に、暗号ブロックである確からしさを示す値αを前記配列の要素として追加し、前記配列の全ての要素を合計して前記暗号らしさを示す評価値を算出する請求項１記載の暗号ブロック特定装置。
【請求項３】
前記ブロック候補抽出部は、算術演算または論理演算またはビット演算の演算種別に基づいて前記実行ステップの前記評価値を算出する請求項１記載の暗号ブロック特定装置。
【請求項４】
前記ブロック候補を格納するブロック候補記憶部を備え、
前記ブロック候補抽出部は、前記実行トレースを順方向及び逆方向に解析して抽出した前記ブロック候補を前記ブロック候補記憶部に格納し、
前記暗号ブロック特定部は、前記ブロック候補記憶部に格納された前記ブロック候補に対して前記暗号ブロックを特定する請求項１記載の暗号ブロック特定装置。
【請求項５】
前記ブロック候補抽出部は、前記実行ステップに対応付けられた記憶領域を備え、前記実行トレースを順方向に解析して算出した評価値である順方向評価値を前記記憶領域に格納し、前記実行トレースを逆方向に解析して算出した評価値である逆方向評価値を前記記憶領域に格納された前記順方向評価値に加算し、前記順方向評価値と前記逆方向評価値との加算値が閾値Ｌを越える実行ステップを抽出して前記ブロック候補として前記ブロック候補記憶部に格納する請求項４記載の暗号ブロック特定装置。
【請求項６】
前記ブロック候補抽出部は、前記配列の構造がキューであり、前記キューに対して減衰量δを減算して前記キューの先端要素が０になる場合、デキュー処理を行なって前記先端要素を削除する請求項２記載の暗号ブロック特定装置。
【請求項７】
前記ブロック候補抽出部が算出する前記実行ステップの暗号らしさを示す評価値を可視化する可視化部を備える請求項１記載の暗号ブロック特定装置。
【請求項８】
暗号ブロックを特定する他の暗号ブロック特定装置を備え、
前記ブロック候補抽出部は、前記暗号らしさを示す評価値を算出した前記実行ステップの中から閾値Ｌを越える前記実行ステップをフィルタリングして抽出し、抽出した前記実行ステップからなる実行トレースを前記他の暗号ブロック特定装置に入力する請求項１記載の暗号ブロック特定装置。
【請求項９】
マルウェアの実行ファイルを実行して実行トレースを取得する実行トレース取得部と、
通信ログを解析して鍵と平文を含む解析結果を出力する通信ログ解析部とを備え、
前記ブロック候補抽出部は、前記実行トレース取得部が取得した前記実行トレースから前記ブロック候補を抽出し、
前記暗号ブロック特定部は、前記ブロック候補抽出部が抽出した前記ブロック候補から前記暗号ブロックを特定し、
前記通信ログ解析部は、暗号ブロック特定部が特定した前記暗号ブロックの情報を用いて、前記通信ログを解析して前記解析結果を出力する請求項１記載の暗号ブロック特定装置。
【請求項１０】
マルウェアの実行ステップを記録した実行トレースを解析し、暗号ブロックを特定する暗号ブロック特定装置の暗号ブロック特定方法であって、
ブロック候補抽出部が、前記実行トレースを解析し、暗号らしさを特徴付ける演算種別が前記実行ステップに含まれるか否かに基づいて前記実行ステップの暗号らしさを示す評価値を算出し、この評価値が閾値Ｌを越える実行ステップを暗号ブロックの候補であるブロック候補として抽出するブロック候補抽出ステップと、
暗号ブロック特定部が、前記ブロック候補が閾値Ｍを越えて連続している前記実行トレースの領域を暗号ブロックとして特定する暗号ブロック特定ステップと
を備える暗号ブロック特定方法。
【請求項１１】
コンピュータに、
マルウェアの実行ステップを記録した実行トレースを解析し、暗号らしさを特徴付ける演算種別が前記実行ステップに含まれるか否かに基づいて前記実行ステップの暗号らしさを示す評価値を算出し、この評価値が閾値Ｌを越える実行ステップを暗号ブロックの候補であるブロック候補として抽出するブロック候補抽出ステップと、
前記ブロック候補が閾値Ｍを越えて連続している前記実行トレースの領域を暗号ブロックとして特定する暗号ブロック特定ステップと
を実行させるための暗号ブロック特定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルウェアが通信の秘匿に利用した暗号ロジックを解析するために、マルウェアのプログラム内で暗号ロジックを格納した暗号ブロックを特定する暗号ブロック特定装置に関する。
【背景技術】
【０００２】
近年のセキュリティ脅威として、特定の組織を狙い、執拗に攻撃を行なう標的型攻撃が深刻化している。標的型攻撃は、メールを標的組織へ送信することで、標的組織の端末にマルウェアを感染させる。感染したマルウェアは、組織内部から外部の攻撃者サーバと通信を行ない、攻撃プログラムのダウンロードや組織システム内の情報窃取を行なう。
マルウェア感染による情報漏えい被害の深刻化を背景に、マルウェアがどの情報を漏えいしたか特定する技術が注目されている。実際に漏えいした情報を特定する際には、パソコンやサーバ等の機器が生成したログを解析することで、マルウェアの活動を明らかにする。
しかし、昨今のマルウェアの中には暗号技術を用いて通信を秘匿するものがある。このようなマルウェアの通信は、そのままでは解析できないため、マルウェアの活動を明らかにすることが困難となってしまう。
従って、マルウェアが通信の秘匿に利用した暗号ロジックとその鍵を特定し、暗号化された通信を復号する必要がある。通常、この作業は、マルウェアの機械語、すなわちバイナリデータを解析する必要があり、膨大な手間と時間を要する。このため、暗号ロジックとその鍵を特定する従来技術として、例えば、以下の特許文献１、非特許文献１、非特許文献２で開示されている手法がある。【０００３】
特許文献１は、暗号化関数を内部に持ち、情報を暗号化してアップロードするマルウェアの暗号鍵を特定するために、マルウェアの実行する命令の実行トレースを記録し、演算のデータを含めて解析することによって鍵を特定する。
非特許文献１、非特許文献２は、マルウェアを実行して得られたログである実行トレースを解析して、マルウェアが利用している暗号ロジックを特定する技術が提案されている。
非特許文献１では、暗号処理は算術・ビット演算が多いことを利用して、実行トレースにおいて、ビット・論理演算の割合を計算することで暗号ブロックを特定する。
非特許文献２では、暗号処理は同一処理を繰り返し行なうことで情報を暗号化していることが多い特徴を利用して、実行トレースから同一処理の繰り返しであるループを検知することで、暗号ブロックを特定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１１４６３７号公報
【非特許文献】
【０００５】
【非特許文献１】Zhi Wang, Xuxian Jiang, Weidong Cui, Xinyuan Wang and Mike Grace, ReFormat: automatic reverse engineering of encrypted messages, Proceedings of the 14th European Conference on Research in Computer Security, ESORICS'09 2009.
【非特許文献２】Joan Calvet, Jose M. Fernandez, Jean-Yves Marion, Aligot: Cryptographic Function Identification in Obfuscated Binary Programs, Proceedings of the 19th ACM Conference on Computer and Communications Security, CCS 2012.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来技術は、暗号ブロック特定段階において、処理速度が遅い、メモリが大量に必要であるという問題点があった。例えば、非特許文献２の手法では、ループを検知する際に、ループとなりうる可能性を全て記録しておき一つ一つ試す必要があるため、多くの計算量が必要となり、処理が遅く、メモリが大量に必要となるという課題があった。【０００７】
本発明は、上記の課題を解決するためになされたもので、少ない計算量で軽量に暗号ブロックを特定することで、処理の高速化と使用メモリ削減を実現することを目的とする。
【課題を解決するための手段】
【０００８】
上記で述べた課題を解決するため、本発明の暗号ブロック特定装置は、マルウェアの実行ステップを記録した実行トレースを解析し、暗号らしさを特徴付ける演算種別が前記実行ステップに含まれるか否かに基づいて前記実行ステップの暗号らしさを示す評価値を算出し、この評価値が閾値Ｌを越える実行ステップを暗号ブロックの候補であるブロック候補として抽出するブロック候補抽出部と、前記ブロック候補が閾値Ｍを越えて連続している前記実行トレースの領域を暗号ブロックとして特定する暗号ブロック特定部とを備える。【０００９】
また、本発明の暗号ブロック特定方法は、マルウェアの実行ステップを記録した実行トレースを解析し、暗号ブロックを特定する暗号ブロック特定装置の暗号ブロック特定方法であって、ブロック候補抽出部が、前記実行トレースを解析し、暗号らしさを特徴付ける演算種別が前記実行ステップに含まれるか否かに基づいて前記実行ステップの暗号らしさを示す評価値を算出し、この評価値が閾値Ｌを越える実行ステップを暗号ブロックの候補であるブロック候補として抽出するブロック候補抽出ステップと、暗号ブロック特定部が、前記ブロック候補が閾値Ｍを越えて連続している前記実行トレースの領域を暗号ブロックとして特定する暗号ブロック特定ステップとを備える。
【発明の効果】
【００１０】
本発明によれば、ブロック候補抽出処理と暗号ブロック特定処理が、加算命令、または減算命令により実行されるため、少ない計算量で軽量に暗号ブロックを特定することができ、処理の高速化と使用メモリ削減を実現できるという効果がある。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係る暗号ブロック特定装置の一構成例を示す図である。
【図２】実施の形態１に係る暗号ブロック特定装置１の全体の動作の流れを示すフローチャートである。
【図３】実行トレース５に含まれる各実行ステップを表現するデータ形式の一例を示す説明図である。
【図４】実行トレース５の具体例を示す図である。
【図５】ブロック候補記憶部３に記録されるブロック候補を表現するデータ形式の一例を示す説明図である。
【図６】ブロック候補記憶部３に記録されるブロック候補の具体例を示す図である。
【図７】暗号ブロック情報６を表現するデータ形式の一例を示す説明図である。
【図８】ブロック候補抽出部２の動作の流れを示すフローチャートである。
【図９】暗号ブロック特定部４の動作の流れを示すフローチャートである。
【図１０】実施の形態１に係るキューとキューの各要素の合計値であるF(t)の推移を示す図である。
【図１１】実施の形態１の実行例において、ブロック候補抽出処理によって得られるブロック候補記憶部３の状態を示す図である。
【図１２】実施の形態２に係る暗号ブロック特定装置１の全体の動作の流れを示すフローチャートである。
【図１３】実施の形態２に係るキューとキューの各要素の合計値であるF(t)の推移を示す図である。
【図１４】実施の形態２の実行例において、ブロック候補抽出処理によって得られるブロック候補記憶部３の状態を示す図である。
【図１５】順方向と逆方向の暗号らしさの値F(t)の加算結果を格納する記憶領域を示す図である。
【図１６】実施の形態４に係る暗号ブロック特定装置１の一構成例を示す図である。
【図１７】順方向における暗号らしさを示す評価値の分布を示す図である。
【図１８】逆方向における暗号らしさを示す評価値の分布を示す図である。
【図１９】順方向と逆方向の暗号らしさを示す評価値の加算結果の分布を示す図である。
【図２０】実施の形態５に係る暗号ブロック特定装置１の一構成例を示す図である。
【図２１】実施の形態６に係る暗号ブロック特定装置１の一構成例を示す図である。
【図２２】実施の形態１〜６に示した暗号ブロック特定装置１のハードウェア構成の例を示す図である。
【発明を実施するための形態】
【００１２】
実施の形態１．
図１は、実施の形態１に係る暗号ブロック特定装置１の一構成例を示す図である。
図１において、暗号ブロック特定装置１は、ブロック候補抽出部２と、ブロック候補記憶部３と、暗号ブロック特定部４とを備える。
【００１３】
ブロック候補抽出部２は、命令の実行ステップのトレース結果である実行トレース５を解析し、暗号らしさの特徴である算術演算、論理演算、ビット演算等の命令の有無に基づいて、暗号ブロックを構成する実行ステップの候補になるブロック候補を抽出し、抽出したブロック候補を一意に識別するブロック候補ＩＤと対応付けて出力する。
ブロック候補記憶部３は、ブロック候補抽出部２により抽出されたブロック候補を記憶する。
暗号ブロック特定部４は、ブロック候補記憶部３に記憶されたブロック候補から、暗号ブロックを特定し、特定した暗号ブロックの情報を暗号ブロック情報６として出力する。
【００１４】
次に、実施の形態１に係る暗号ブロック特定装置１の動作について説明する。
図２は、実施の形態１に係る暗号ブロック特定装置１の全体の動作の流れを示すフローチャートである。
【００１５】
まず、ステップＳ１００において、ブロック候補抽出部２は、実行トレース５の各実行ステップに対し、暗号らしさの評価値を算出する。ブロック候補抽出部２は、入力された実行トレース５に含まれる各実行ステップの情報を解析し、各実行ステップに含まれる算術演算、論理演算、ビット演算等の命令の有無に基づき、暗号らしさを評価する評価関数を用いて、暗号らしさを示す評価値を算出する。ここで、暗号らしさを示す情報として、算術演算、論理演算、ビット演算等を用いる理由は、暗号処理が、加算処理や、ＸＯＲといった論理演算、シフト処理のようなビット演算を多く含むためである。暗号らしさを評価する評価関数と暗号らしさを示す評価値については、後述する。
【００１６】
ここで、実行トレース５のデータ形式の一例と具体例を説明する。
図３は、実行トレース５に含まれる各実行ステップを表現するデータ形式の一例を示す説明図である。
図４は、実行トレース５の具体例を示す図である。
図３において、実行トレース５に含まれる各実行ステップは、命令のアドレス、命令（オペコード）、命令対象（オペランド）、メモリ・レジスタアクセス情報を備えるデータ形式で表現される。図４は、図３に示したデータ形式により表現された実際の実行トレース５の具体例であり、記号「！」により命令のアドレス等の情報を区切って表現している。
【００１７】
次に、ステップＳ１０１において、ブロック候補抽出部２は、ステップＳ１００で算出した暗号らしさの評価値が閾値Ｌを越える実行ステップを、暗号ブロックを構成するブロック候補として抽出する。
【００１８】
次に、ステップＳ１０２において、ブロック候補抽出部２は、ステップＳ１０１で抽出したブロック候補を、ブロック候補ＩＤと対応付けて、ブロック候補記憶部３に記録する。
図５は、ブロック候補記憶部３に記録されるブロック候補を表現するデータ形式の一例を示す説明図である。
図６は、ブロック候補記憶部３に記録されるブロック候補の具体例を示す図である。
図５において、ブロック候補記憶部３に記録されるブロック候補は、ブロック候補を一意に識別するブロック候補ＩＤと対応付けられており、図６の具体例に示すように、ブロック候補ＩＤとブロック候補とが対応付けられてブロック候補記憶部３に記録される。なお、ここでは、実行トレース５中の実行ステップの行番号を、ブロック候補ＩＤとして用いている。また、実行トレース５中の実行ステップの行番号は、各実行ステップの実行ステップＩＤとしても用いる。
【００１９】
次に、ステップＳ１０３において、暗号ブロック特定部４は、ブロック候補記憶部３に記録されたブロック候補を参照し、ブロック候補ＩＤが連続するブロック候補の個数を数える。
【００２０】
次に、ステップＳ１０４において、暗号ブロック特定部４は、連続するブロック候補の個数が閾値Ｍを越えるブロック候補群を暗号ブロックとして特定し、暗号ブロック情報６を出力する。
【００２１】
図７は、暗号ブロック情報６を表現するデータ形式の一例を示す説明図である。
図７において、ブロックＩＤは、特定した暗号ブロックを一意に識別する識別子である。開始アドレスは、特定した暗号ブロックが開始する位置を示し、例えば、特定した暗号ブロックの先頭のブロック候補ＩＤを用いる。同様に、終了アドレスは、特定した暗号ブロックが終了する位置を示し、例えば、特定した暗号ブロックの最後のブロック候補ＩＤを用いる。ブロックを構成する命令列は、特定した暗号ブロックに含まれるブロック候補とブロック候補ＩＤの列であり、ブロックサイズは、特定した暗号ブロックに含まれるブロック候補とブロック候補ＩＤの列の個数を示す。
【００２２】
以上が、暗号ブロック特定装置１の全体の動作の流れである。
【００２３】
次に、ブロック候補抽出部２の動作について、図８を用いて詳細に説明する。ここでは、実行トレース５を順方向で、ブロック候補抽出部２へ入力した場合を説明する。
【００２４】
ここで、ブロック候補抽出部２が用いる暗号らしさを評価する評価関数の一例を説明する。
本実施の形態で用いる評価関数は、例えば、以下の数１で定義する。
【００２５】
【数１】
2016125205.tif 000003
ただし、F(t)は、t における暗号らしさを示す評価値であり、fi(t)とgi(t)は、i 番目に励起される減衰関数である。
t は、経過時間であり、ここでは実行トレース５中の実行ステップが何番目かを示す。
N は、計測対象の実行トレース５において励起される減衰関数fi(t)の数であり、ここでは実行トレース５中に含まれる算術演算、論理演算、ビット演算の個数を示す。
τi は、i 番目に励起される減衰関数fi(t)が励起された時刻であり、ここでは励起されたタイミングにおいて実行トレース５中の実行ステップが何番目かを示す。
αは、暗号らしさとして定義される値である。
δ(t)は、減衰関数fi(t)が励起された時刻において、暗号らしさを示す評価値を減衰させるための値であり、１命令当たりの暗号らしさの減衰量を示す。
上記の数１では、減衰関数fi(t)は、算術演算、論理演算、ビット演算が処理されたタイミングで励起される。また、減衰関数fi(t)は正の値しか取らないため、減衰関数gi(t)の値が負となる場合には、減衰関数fi(t)は０とする。
【００２６】
次に、フローチャートを参照しながら、ブロック候補抽出部２の動作の流れを説明する。
図８は、ブロック候補抽出部２の動作の流れを示すフローチャートである。
【００２７】
まず、ステップＳ２００において、ブロック候補抽出部２に、実行トレース５を順方向で入力する。また、暗号らしさを示す評価値を要素として記録するキューを用意する。キューの初期状態は、空とする。
【００２８】
次に、ステップＳ２０１において、ブロック候補抽出部２は、入力された実行トレース５を一行分だけ読み込む。
【００２９】
次に、ステップＳ２０２において、ブロック候補抽出部２は、ステップＳ２０１で読み込んだ一行分の実行トレースの命令部分を確認し、命令が算術・論理・ビット演算である場合は、Ｙｅｓの分岐によりステップＳ２０３に進み、そうでない場合は、Ｎｏの分岐によりステップＳ２０４に進む。
【００３０】
次に、ステップＳ２０３において、ブロック候補抽出部２は、キューに、暗号らしさとして定義される値αを追加する。ここで、αは、数１で定義したαに相当する。
【００３１】
次に、ステップＳ２０４において、ブロック候補抽出部２は、ステップＳ２０３で追加したαを含めてキューの中身を全て加算した値F(t)を算出し、F(t)が、暗号ブロック候補としてみなす閾値であるＬを超えている場合は、Ｙｅｓの分岐によりステップＳ２０５に進み、そうでない場合は、Ｎｏの分岐によりステップＳ２０６に進む。ここで、F(t)は、数１で定義したF(t)に相当する。
【００３２】
次に、ステップＳ２０５において、ブロック候補抽出部２は、現在読み込んでいる実行トレース５とそのＩＤを、各々、ブロック候補、ブロック候補ＩＤとしてブロック候補記憶部３へ記録する。ブロック候補記憶部３に記録する情報は、実行トレース５とそのＩＤの他、暗号ブロック特定部４で暗号ブロックとして出力したい情報を含める。実行トレース５に含まれる情報全てをそのまま記録してもよい。
【００３３】
次に、ステップＳ２０６において、ブロック候補抽出部２は、キューに含まれている要素全てから、各々、δだけ減算する減算処理を行なう。ここで、δ は、数１で定義したδ(t-τi) に相当する。
【００３４】
次に、ステップＳ２０７において、ブロック候補抽出部２は、キューの先頭要素が０以下であるか否かを判定し、キューの先頭要素が０以下である場合はＹｅｓの分岐によりステップＳ２０８に進み、そうでない場合は、Ｎｏの分岐によりステップＳ２０９に進む。
【００３５】
次に、ステップＳ２０８において、ブロック候補抽出部２は、デキュー処理を実行する。デキュー処理では、キューの先頭要素を削除して、他の要素を前へ詰める処理を行なう。
【００３６】
次に、ステップＳ２０９において、ブロック候補抽出部２は、全ての実行トレースを読み込んだか判断する。ブロック候補抽出部２は、現在読み込んでいる実行トレース５が、ステップＳ２００で入力した実行トレース５の最後の行であるかどうかを確認し、最後の行である場合、Ｙｅｓの分岐に進み、ブロック候補抽出の処理を終了する。最後の行でない場合は、Ｎｏの分岐によりステップＳ２０１に戻る。
【００３７】
以上が、ブロック候補抽出部２の動作の流れである。
【００３８】
上記の説明では、暗号らしさの値を保存するデータ構造としてキューを利用したが、データを保存できる構造であれば、配列やスタック、テーブル等を用いても構わない。なお、キューを用いた場合は、ステップＳ２０４のデキュー処理により、キューの要素数を抑えることができるため、ステップＳ２０２での減算処理を減らす効果や、メモリの消費を抑える効果が期待できる。
【００３９】
次に、フローチャートを参照しながら、暗号ブロック特定部４の動作の流れを説明する。
図９は、暗号ブロック特定部４の動作の流れを示すフローチャートである。
【００４０】
まず、ステップＳ３００において、暗号ブロック特定部４は、ブロック候補記憶部３に記憶されているブロック候補ＩＤを参照する。
次に、ステップＳ３０１において、暗号ブロック特定部４は、参照したブロック候補ＩＤが連続する数を計数し、連続する数が閾値Ｍを超えているか判定する。連続する数が閾値Ｍを越えている場合は、Ｙｅｓの分岐によりステップＳ３０２に進み、そうでない場合は、Ｎｏの分岐によりステップＳ３０３に進む。
次に、ステップＳ３０２において、暗号ブロック特定部４は、ブロック候補ＩＤが連続している部分を暗号ブロックとして特定し、ブロック候補とブロック候補ＩＤの情報を含む暗号ブロック情報６を出力する。暗号ブロック情報６は、例えば、図７で説明したデータ形式である。
次に、ステップＳ３０３において、暗号ブロック特定部４は、ブロック候補記憶部３に記憶された全てのブロック候補ＩＤを処理したか判定する。全てのブロック候補ＩＤを処理した場合は、Ｙｅｓの分岐に進み、暗号ブロック特定の処理を終了する。全てのブロック候補ＩＤを処理していない場合は、Ｎｏの分岐によりステップＳ３００に戻る。
【００４１】
以上が、暗号ブロック特定部４の動作の流れである。
【００４２】
ここで、上記で述べたブロック候補抽出処理と暗号ブロック特定処理の具体的な実行例を説明する。ただし、本実行例は、あくまで本発明の理解を助けるための一例であって、本発明を限定するものではない。
【００４３】
まず、ブロック候補抽出処理の具体的な実行例を説明する。
図１０は、実施の形態１に係るキューとキューの各要素の合計値であるF(t)の推移を示す図である。
図１０では、３１個の実行ステップからなる実行トレース５に対して、上から下の順方向でブロック候補抽出部２に入力した場合を示している。この実行トレース５には、算術演算、論理演算、ビット演算のいずれかの命令を含む実行ステップが存在し、その実行ステップを、図中の「命令あり」の列に丸印を付与して示す。
【００４４】
ここで、ステップＳ２０７において、暗号ブロック候補とみなす閾値Ｌを８に設定した場合、F(t)が８を超える実行ステップが、ブロック候補としてブロック候補記憶部３に記録される。なお、図１０で、ブロック候補記憶部３に記録されるブロック候補のF(t)の値を、斜体文字で示す。
【００４５】
次に、暗号ブロック特定処理の具体的な実行例を説明する。
図１１は、実施の形態１の実行例において、ブロック候補抽出処理によって得られるブロック候補記憶部３の状態を示す図である。
ここで、ステップＳ３０１において、ブロック候補ＩＤが連続する数の閾値Ｍを５に設定した場合、ブロック候補ＩＤが４〜９のブロック候補は、連続する数が６であるため、ブロック候補ＩＤが４〜９のブロック候補を、暗号ブロックとして特定し、暗号ブロック情報６を出力する。一方、ブロック候補ＩＤが１３、１５のブロック候補は、連続していないため暗号ブロックとしてみなさず、暗号ブロック情報６を出力しない。
【００４６】
このように、ブロック候補抽出処理と暗号ブロック特定処理を行なうことにより、暗号らしさである算術演算、論理演算、ビット演算の分布を測定することができるため、算術演算、論理演算、ビット演算が連続している部分を検出することができる。
【００４７】
以上のように、本実施の形態１の発明では、ブロック候補抽出処理と暗号ブロック特定処理が、加算命令、または減算命令により実行されるため、少ない計算量で軽量に暗号ブロックを特定することができ、処理の高速化と使用メモリ削減を実現できるという効果がある。
【００４８】
また、実行トレース５の中には、暗号ロジックを含む部分であっても、処理の途中に算術演算、論理演算、ビット演算以外の処理が含まれる場合がある。このように、暗号ブロックとして検出されることが期待される部分であるにも関わらず、算術演算、論理演算、ビット演算が連続しない部分でも、連続部分に近ければ、暗号ブロックとして特定することができるため、算術演算、論理演算、ビット演算以外の命令のような多少のノイズを無視して、算術演算、論理演算、ビット演算が連続している部分として検知できる。
【００４９】
一方で、暗号ロジックを含む部分以外でも、算術演算、論理演算、ビット演算を数命令行なう場合がある。このような場合でも、暗号ブロック特定部４により、数命令だけ行なわれる算術演算、論理演算、ビット演算を、暗号ブロックではないとして取り除くことができる。
【００５０】
実施の形態２．
以上の実施の形態１では、実行トレース５を順方向に解析して、少ない計算量で軽量に暗号ブロックを特定するようにしたものであるが、次に、本実施の形態２では、実行トレース５を逆方向に解析した結果を併用して、暗号ブロックを精度良く特定する場合について説明する。
【００５１】
本実施の形態２における構成は、図１に示す実施の形態１の構成と同様である。
以下、実施の形態２に係る暗号ブロック特定装置１の動作について説明する。
図１２は、実施の形態２に係る暗号ブロック特定装置１の全体の動作の流れを示すフローチャートである。
【００５２】
図１２において、ステップＳ４００〜ステップＳ４０２は、実施の形態１のステップ１００〜ステップＳ１０２と同様であるため、説明を省略する。
【００５３】
ステップＳ４０３において、ブロック候補抽出部２は、実行トレース５の逆方向に、ステップＳ４００〜ステップＳ４０２の処理を行なう。この結果、ブロック候補記憶部３には、実行トレース５の順方向と逆方向の両方向から選ばれたブロック候補とそのＩＤが記録された状態となる。
【００５４】
図１３は、実施の形態２に係るキューとキューの各要素の合計値であるF(t)の推移を示す図である。
図１３では、３１個の実行ステップからなる実行トレース５に対して、下から上の逆方向でブロック候補抽出部２に入力した場合を示している。図１０の場合と同様に、この実行トレース５には、算術演算、論理演算、ビット演算のいずれかの命令を含む実行ステップが存在し、その実行ステップを、図中の「命令あり」の列に丸印を付与して示す。
【００５５】
ここで、ステップＳ４０３では、暗号ブロック候補とみなす閾値Ｌを８に設定した場合、F(t)が８を超える実行ステップが、ブロック候補としてブロック候補記憶部３に記録される。なお、図１３で、ブロック候補記憶部３に記録されるブロック候補のF(t)の値を、斜体文字で示す。ブロック候補をブロック候補記憶部３に記録するときは、実行トレース５の順方向の解析で既に登録されているブロック候補は、登録しなくても良い。この実行例では登録しないものとする。
【００５６】
図１４は、実施の形態２の実行例において、ブロック候補抽出処理によって得られるブロック候補記憶部３の状態を示す図である。
図１４では、実行トレース５を順方向と逆方向の両方向で解析した結果、抽出されたブロック候補がブロック候補記憶部３に記録されている状態を示している。
【００５７】
ここで、ステップＳ３０１において、ブロック候補ＩＤが連続する数の閾値Ｍを５に設定した場合、ブロック候補ＩＤが１〜９のブロック候補は、連続する数が９であるため、ブロック候補ＩＤが１〜９のブロック候補を、暗号ブロックとして特定し、暗号ブロック情報６を出力する。一方、ブロック候補ＩＤが１２〜１３は、連続しているものの連続する数が２であるため暗号ブロックとしてみなさず、暗号ブロック情報６を出力しない。
【００５８】
以上のように、本実施の形態２の発明では、実施の形態１で述べた効果に加えて、暗号らしさを評価する評価関数を用いることにより、暗号ブロックの始点と終点を正確に特定できるという効果がある。暗号らしさを評価する評価関数では、算術演算、論理演算、ビット演算を発見するごとに、暗号らしさとして定義する値αがキューの要素に加えられるとともに、キューに加えられた各要素の値が、それぞれ一ステップごとにδだけ減少していく。そして、キューの各要素の値を全て足し合わせた値F(t)を暗号らしさの指標としているので、算術演算、論理演算、ビット演算が連続した後は、暗号らしさの値F(t)が急激に減少する。そのため、暗号ブロックの終点を正確に特定することが可能となり、順方向、逆方向の両方から処理を行なうことによって、暗号ブロックの始点と終点を精度良く特定できるという効果がある。
【００５９】
実施の形態３．
以上の実施の形態２では、ブロック候補抽出部２において、順方向と逆方向それぞれでブロック候補記憶部３にブロック候補ＩＤを記録したものであるが、次に、本実施の形態２では、順方向と逆方向の暗号らしさの値F(t)を先に計算してから、ブロック候補記憶部３へのブロック候補ＩＤの記録を一度だけで行なう場合について説明する。
【００６０】
本実施の形態３における構成は、ブロック候補抽出部２において、ブロック候補ＩＤごとに順方向と逆方向の暗号らしさの値F(t)の加算結果を格納する記憶領域を備えており、その他の構成は、実施の形態２と同様である。
【００６１】
図１５は、順方向と逆方向の暗号らしさの値F(t)の加算結果を格納する記憶領域を示す図である。
図１５において、「F(t)加算結果」の記憶領域に、順方向と逆方向の暗号らしさの値F(t)の加算結果を格納する。
【００６２】
以下、実施の形態３に係る暗号ブロック特定装置１の動作について説明する。
まず、ブロック候補抽出部２が、実施の形態１のステップＳ２０１〜ステップＳ２０６までを順方向に実行し、キューの中身を全て加算した値である順方向評価値を、ブロック候補ＩＤごとに「F(t)加算結果」の記憶領域に格納する。
次に、ブロック候補抽出部２が、実施の形態１のステップＳ２０１〜ステップＳ２０６までを逆方向に実行し、キューの中身を全て加算した値である逆方向評価値を、対応するブロック候補ＩＤの「F(t)加算結果」の記憶領域に格納されている順方向評価値に加算する。
次に、ブロック候補抽出部２が、「F(t)加算結果」の値が、暗号ブロック候補とみなす閾値Ｌを越えていた場合、該当するブロック候補ＩＤとブロック候補をブロック候補記憶部３に記録する。
【００６３】
以上のように、本実施の形態３の発明では、実施の形態１で述べた効果に加えて、順方向と逆方向の加算結果に基づいてブロック候補記憶部３にブロック候補ＩＤを記録することにより、ブロック候補記憶部３へのブロック候補ＩＤの記録を一度だけで行なうことができ、ブロック候補抽出処理の処理量を削減することができるという効果がある。
【００６４】
実施の形態４．
以上で説明した実施の形態１から３では、実行トレース５を解析して暗号ブロックを特定する処理について説明したが、次に、実施の形態４では、暗号らしさを示す評価値をグラフにより可視化することにより、算術演算、論理演算、ビット演算の分布を視覚的に容易に判断できるようにする場合について説明する。
【００６５】
図１６は、実施の形態４に係る暗号ブロック特定装置１の一構成例を示す図である。
図１６において、暗号ブロック特定装置１は、暗号らしさを示す評価値を可視化し、可視化結果８を出力する可視化部７を備える。その他の構成は、実施の形態１から３の構成と同様である。
【００６６】
以下、実施の形態４に係る暗号ブロック特定装置１の動作について説明する。
まず、実施の形態１〜３に示した処理手順により、ブロック候補抽出部２が、実行トレース５の実行ステップ一行ごとに、暗号らしさを示す評価値F(t)を記録する。ここで、実行トレース５の各実行ステップと、暗号らしさを示す評価値F(t)とが対応付けられて記録されている状態となる。
次に、可視化部７は、ブロック候補抽出部２に記録されている暗号らしさを示す評価値F(t)を、例えばグラフにより可視化し、可視化結果８をユーザに表示する。
【００６７】
図１７〜図１９は、暗号らしさを示す評価値を可視化する一例を示す図である。
図１７は、順方向における暗号らしさを示す評価値の分布を示す図である。
図１８は、逆方向における暗号らしさを示す評価値の分布を示す図である。
図１９は、順方向と逆方向の暗号らしさを示す評価値の加算結果の分布を示す図である。
図中、横軸の「ＩＤ」は、実行トレース５中の実行ステップＩＤを示し、縦軸の「評価値」は、暗号らしさを示す評価値を示す。
【００６８】
以上のように、本実施の形態３の発明では、実施の形態１で述べた効果に加えて、暗号らしさを示す評価値の分布を可視化することにより、暗号ブロックとして疑わしい部分を視覚的に容易に判断できるようになるという効果がある。
【００６９】
実施の形態５．
以上の実施の形態１〜４では、算術演算、論理演算、ビット演算が、実行トレース５のどの領域に多く含まれるかという尺度により、少ない処理量で暗号ブロックを特定するようにしたものであるが、次に、実施の形態５では、実施の形態１〜４の暗号ブロック特定装置１の処理量が軽量であることを利用して、暗号ブロック特定装置１のブロック候補抽出部２を、他の暗号ブロック特定装置に入力する実行トレースのフィルタとして適用する場合について説明する。
【００７０】
図２０は、実施の形態５に係る暗号ブロック特定装置１の一構成例を示す図である。
図２０において、暗号ブロック特定装置１は、本発明とは異なる暗号ブロック特定処理を行なう他の暗号ブロック特定装置９を備える。その他の構成は、実施の形態１から３の構成と同様である。
【００７１】
以下、実施の形態５に係る暗号ブロック特定装置１の動作について説明する。
まず、実施の形態１〜３に示した処理手順により、ブロック候補抽出部２が、入力された実行トレース５を解析して、実行トレース５の実行ステップ一行ごとに、暗号らしさを示す評価値F(t)を算出する。この場合、実行トレース５を解析する方向は、順方向、逆方向のどちらの場合であっても良いし、両方向を併用しても良い。
【００７２】
次に、ブロック候補抽出部２は、算出した暗号らしさを示す評価値F(t)が付与された実行トレース５に含まれる実行ステップの中から、設定された閾値以上の評価値F(t)を持つ実行ステップのみをフィルタリングして抽出し、抽出した実行ステップのみを含む実行トレースを他の暗号ブロック特定装置９に出力する。
次に、他の暗号ブロック特定装置９は、ブロック候補抽出部２によりフィルタリングされた実行トレースに対して、暗号ブロック特定処理を実行する。
【００７３】
以上のように、本実施の形態５の発明では、ブロック候補抽出部２がフィルタリングした実行トレースを、他の暗号ブロック特定装置９に入力することにより、他の暗号ブロック特定装置９が、大量の実行トレースを処理することが原因で膨大な処理時間とメモリを必要としている場合に、他の暗号ブロック特定装置９の処理の高速化と使用メモリ削減を実現することできるという効果がある。
【００７４】
実施の形態６．
以上で説明した実施の形態１〜５は、実行トレース５を解析して暗号ブロックを特定するまでの処理について説明したが、次に、本実施の形態６では、解析対象となるマルウェアの実行ファイルから実行トレースを抽出し、この実行トレースから暗号ブロック特定装置１が暗号ブロックを特定した後に、暗号ブロックに用いられている暗号ロジックにより、入力された通信ログを解析して鍵と平文を解析結果として出力する場合について説明する。
【００７５】
図２１は、実施の形態６に係る暗号ブロック特定装置１の一構成例を示す図である。
図２１において、暗号ブロック特定装置１は、マルウェアの実行ファイル１０を実行して実行トレースを取得する実行トレース取得部１１と、暗号ブロック特定部４が出力する暗号ブロック情報を用いて通信ログ１１を解析し、鍵と平文を含む解析結果１２を出力する通信ログ解析部１０とを備える。その他の構成は、実施の形態１から３の構成と同様である。
【００７６】
以下、実施の形態６に係る暗号ブロック特定装置１の動作について説明する。
まず、解析対象となる実行ファイル１０が実行トレース取得部１１に入力される。実行トレース取得部１１は、実行ファイル１０を実行して実行トレースを取得し、暗号ブロック特定装置１に入力する。
【００７７】
次に、実施の形態１〜３に示した処理手順により、暗号ブロック特定装置１が、実行トレース中の暗号ブロックを特定し、特定した暗号ブロックの暗号ブロック情報を出力する。
【００７８】
次に、通信ログ解析部１３は、暗号ブロック特定部４が出力する暗号ブロック情報を用いて、解析対象である暗号化されたメッセージを含む通信ログ１２と、暗号ブロック情報より特定される鍵とを入力として、暗号ブロック情報により特定される暗号ブロックに入力し、平文を特定して特定した鍵と平文を含む解析結果１４を出力する。なお、通信ログ解析部１３として、特許文献１に開示されている手法を用いても良い。
【００７９】
以上のように、本実施の形態６の発明では、マルウェアの実行ファイルから、高速・自動的に暗号ロジックを特定し、鍵と平文を得ることが可能となる。その結果、これまで高度な技術を持った人間が人手により行なっていた復号処理を自動で行なうことができるようになり、通信ログを復号するための人件費といったコストを下げることができるという効果がある。
【００８０】
次に、実施の形態１〜６に示した暗号ブロック特定装置１のハードウェア構成について説明する。
図２２は、実施の形態１〜６に示した暗号ブロック特定装置１のハードウェア構成の例を示す図である。
【００８１】
暗号ブロック特定装置１はコンピュータであり、暗号ブロック特定装置１の各要素をプログラムで実現することができる。暗号ブロック特定装置１のハードウェア構成としては、バスに、演算装置１５、外部記憶装置１６、主記憶装置１７、通信装置１８、入出力装置１９が接続されている。
【００８２】
演算装置１５は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等である。外部記憶装置１６は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置等である。主記憶装置１７は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等である。通信装置１８は、例えば通信ボード等である。入出力装置１９は、例えばマウス、キーボード、ディスプレイ装置等である。
【００８３】
プログラムは、通常は外部記憶装置１６に記憶されており、主記憶装置１７にロードされた状態で、順次、演算装置１５に読み込まれ、実行される。このプログラムは、暗号ブロック特定装置１を構成するブロック候補抽出部２、暗号ブロック特定部４、可視化部７、実行トレース取得部１１、通信ログ解析部１３として説明している機能を実現するプログラムである。
【００８４】
更に、外部記憶装置１６には、オペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置１７にロードされ、演算装置１５は、ＯＳを実行しながら、上記プログラムを実行する。
【００８５】
また、実施の形態１〜６の説明において、ブロック候補記憶部３が記憶する情報やデータ、ロック候補抽出部２、暗号ブロック特定部４、可視化部７、実行トレース取得部１１、通信ログ解析部１３の処理の結果を示す情報やデータや信号値や変数値が、主記憶装置１７にファイルとして記憶されている。
【００８６】
なお、図２２の構成は、あくまでも各装置のハードウェア構成の一例を示すものであり、各装置のハードウェア構成は図２２に記載の構成に限らず、他の構成であってもよい。
【符号の説明】
【００８７】
１  暗号ブロック特定装置、２  ブロック候補抽出部、３  ブロック候補記憶部、４  暗号ブロック特定部、５  実行トレース、６  暗号ブロック情報、７  可視化部、８  可視化結果、９  他の暗号ブロック特定装置、１０  実行ファイル、１１  実行トレース取得部、１２  通信ログ、１３  通信ログ解析部、１４  解析結果。
【図１】
2016125205.tif 000004
【図２】
2016125205.tif 000005
【図３】
2016125205.tif 000006
【図４】
2016125205.tif 000007
【図５】
2016125205.tif 000008
【図６】
2016125205.tif 000009
【図７】
2016125205.tif 000010
【図８】
2016125205.tif 000011
【図９】
2016125205.tif 000012
【図１０】
2016125205.tif 000013
【図１１】
2016125205.tif 000014
【図１２】
2016125205.tif 000015
【図１３】
2016125205.tif 000016
【図１４】
2016125205.tif 000017
【図１５】
2016125205.tif 000018
【図１６】
2016125205.tif 000019
【図１７】
2016125205.tif 000020
【図１８】
2016125205.tif 000021
【図１９】
2016125205.tif 000022
【図２０】
2016125205.tif 000023
【図２１】
2016125205.tif 000024
【図２２】
2016125205.tif 000025
【国際調査報告】
2016125205.tif 000026
2016125205.tif 000027
2016125205.tif 000028
2016125205.tif 000029