(57)【特許請求の範囲】
【請求項１】
コンピュータ内で不正な動作を行う不正プログラムを実行する不正プログラム実行環境と前記不正プログラムの挙動を解析する解析装置とを含む解析システムであって、
前記解析装置が、
前記不正プログラム実行環境によって実行された不正プログラムが前記コンピュータ内で行った動作である実行命令の配置されているアドレスを含む情報を収集する収集手段と、
前記収集手段によって収集された実行命令の配置されているアドレスを含む情報の任意の時間に対する増加量を算出する算出手段と、
前記算出手段によって算出された増加量に基づいて、前記不正プログラムの解析を終了させるか否かを判定する判定手段と、
前記判定手段によって前記不正プログラムの解析を終了すると判定された場合に、前記不正プログラム実行環境によって実行されている不正プログラムの解析を終了させる制御手段と、
を有することを特徴とする解析システム。
【請求項２】
前記収集手段は、前記不正プログラム実行環境によって実行された不正プログラムが要求した命令と当該命令のコードが配置されている場所とを対応付けた情報を前記実行命令の配置されているアドレスを含む情報として収集することを特徴とする請求項１に記載の解析システム。
【請求項３】
前記判定手段は、前記算出手段によって算出された増加量と所定の閾値とを比較し、当該増加量が一定期間所定の閾値を下回った場合に、前記不正プログラムの解析を終了させると判定することを特徴とする請求項１に記載の解析システム。
【請求項４】
前記収集手段は、前記不正プログラムによって新たなプロセスが生起された場合に、当該新たなプロセスによって実行される命令と当該命令のコードが配置されている場所とを対応付けて前記実行命令の配置されているアドレスを含む情報として収集することを特徴とする請求項１に記載の解析システム。
【請求項５】
コンピュータ内で不正な動作を行う不正プログラムを実行する不正プログラム実行環境によって実行された不正プログラムが前記コンピュータ内で行った動作である実行命令の配置されているアドレスを含む情報を収集する収集手段と、
前記収集手段によって収集された実行命令の配置されているアドレスを含む情報の任意の時間に対する増加量を算出する算出手段と、
前記算出手段によって算出された増加量に基づいて、前記不正プログラムの解析を終了させるか否かを判定する判定手段と、
前記判定手段によって前記不正プログラムの解析を終了すると判定された場合に、前記不正プログラム実行環境によって実行されている不正プログラムの解析を終了させる制御手段と、
を有することを特徴とする解析装置。
【請求項６】
コンピュータ内で不正な動作を行う不正プログラムを実行する不正プログラム実行環境と前記不正プログラムの挙動を解析する解析装置とを含む解析システムに適用され、前記解析装置が実行する解析方法であって、
前記解析装置が、
前記不正プログラム実行環境によって実行された不正プログラムが前記コンピュータ内で行った動作である実行命令の配置されているアドレスを含む情報を収集する収集ステップと、
前記収集ステップによって収集された実行命令の配置されているアドレスを含む情報の任意の時間に対する増加量を算出する算出ステップと、
前記算出ステップによって算出された増加量に基づいて、前記不正プログラムの解析を終了させるか否かを判定する判定ステップと、
前記判定ステップによって前記不正プログラムの解析を終了すると判定された場合に、前記不正プログラム実行環境によって実行されている不正プログラムの解析を終了させる制御ステップと、
を含んだことを特徴とする解析方法。
【請求項７】
コンピュータ内で不正な動作を行う不正プログラムの挙動を解析する解析装置としてのコンピュータに実行させる解析プログラムであって、
不正プログラム実行環境によって実行された不正プログラムが前記コンピュータ内で行った動作である実行命令の配置されているアドレスを含む情報を収集する収集手順と、
前記収集手順によって収集された実行命令の配置されているアドレスを含む情報の任意の時間に対する増加量を算出する算出手順と、
前記算出手順によって算出された増加量に基づいて、前記不正プログラムの解析を終了させるか否かを判定する判定手順と、
前記判定手順によって前記不正プログラムの解析を終了すると判定された場合に、前記不正プログラム実行環境によって実行されている不正プログラムの解析を終了させる制御手順と、
を前記解析装置としてのコンピュータに実行させることを特徴とする解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、解析システム、解析装置、解析方法及び解析プログラムに関する。
【背景技術】
【０００２】
従来、コンピュータウイルスやスパイウェアといった不正なコンピュータプログラムが知られている。このような不正プログラムは、マルウェア（Malware）とも呼ばれている。近年、マルウェアによる被害を低減させるために、マルウェアに関する種々の解析が行われている。
【０００３】
例えば、コンピュータがマルウェアに感染した場合に、どのような通信を発生させるのか、または、コンピュータの内部資源にどのような影響を及ぼすのかなどを調べるための解析が行われている。なお、内部資源とは、例えば、不揮発性記憶媒体、揮発性記憶媒体及びそれら記憶媒体によって記憶されるデータなどである。
【０００４】
上述したような解析を実行するための手法としては、例えば、マルウェアのバイナリ（Binary）データを逆アセンブル（Assemble）する静的解析手法が知られている（非特許文献１）。しかしながら、マルウェアの静的解析手法は、機械語命令とデータとが混在するバイナリ列の逆アセンブルが困難であり、解析者のスキルに依存した部分が多い。また、マルウェアの静的解析手法は、マルウェアに内在する耐解析技術が高度化しているため、解析に要する時間が膨大となってしまう（非特許文献２）。
【０００５】
そこで、マルウェアの解析を実行する他の手法として、例えば、動的解析手法が知られている（特許文献１）。動的解析手法は、マルウェアをコンピュータ内で実際に動作させて挙動を解析する解析手法である。動的解析手法では、まず、マルウェアを動作させる動作時間を設定する。そして、動的解析手法では、設定した動作時間でマルウェアを動作させ、動作させている間、マルウェアが実行したプログラムコードに基づいた挙動を解析する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１８１３３５号公報
【非特許文献】
【０００７】
【非特許文献１】Konstantin Rozinov  「REVERSE CODE ENGINEERING: AN IN-DEPTH ANALYSIS OF THE BAGLE VIRUS」  Lucent Technologies
【非特許文献２】Mark Vincent Yason  「The Art of Unpacking」  Black Hat USA 2007 Briefings
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来技術では、動作時間が異なるマルウェアを効率よく解析することができないという問題があった。
【０００９】
具体的には、上述した従来技術では、マルウェアを動作させる動作時間を一意に設定するだけであり、動作時間が異なるマルウェアを効率よく解析することができない。例えば、マルウェアには、実行直後に特定の動作を示すだけのものや、実行直後に一定の動作を示した後に待機し、特定の時間が経過してから新たな動作を示すものなどが存在する。従って、例えば、設定した動作時間が、実際にマルウェアが動作する時間よりも長い場合には、解析時間に無駄が生じてしまう。また、設定した動作時間が、実際にマルウェアが動作する時間よりも短い場合には、マルウェアを十分に動作させることができず、不完全な解析結果しか取得できないという事態が生じてしまう。すなわち、上述した従来技術では、マルウェアの動作時間を一意に設定することで、解析時間に無駄が生じたり、不完全な解析結果しか取得できなかったりしてしまい、動作時間が異なるマルウェアを効率よく解析することができない。
【００１０】
そこで、本開示の技術は、上述した従来技術の問題に鑑みて、動作時間が異なるマルウェアを効率よく解析することを可能とする解析システム、解析装置、解析方法及び解析プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、開示のシステムは、コンピュータ内で不正な動作を行う不正プログラムを実行する不正プログラム実行環境と前記不正プログラムの挙動を解析する解析装置とを含む解析システムであって、前記解析装置の収集手段が、前記不正プログラム実行環境によって実行された不正プログラムが前記コンピュータ内で行った動作である実行命令の配置されているアドレスを含む情報を収集する。そして、算出手段が、前記収集手段によって収集された実行命令の配置されているアドレスを含む情報の任意の時間に対する増加量を算出する。そして、判定手段が、前記算出手段によって算出された増加量に基づいて、前記不正プログラムの解析を終了させるか否かを判定する。そして、制御手段が、前記判定手段によって前記不正プログラムの解析を終了すると判定された場合に、前記不正プログラム実行環境によって実行されている不正プログラムの解析を終了させる。
【発明の効果】
【００１２】
開示のシステムは、動作時間が異なるマルウェアを効率よく解析することを可能にする。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係る解析システムの構成の一例を示す図である。
【図２】図２は、実行トレース記憶部によって記憶される実行トレースの一例を説明するための図である。
【図３】図３は、実行トレース解析部による実行トレースの増加量の算出を説明するための図である。
【図４】図４は、実行トレース解析部によって算出された実行トレースの増加量の経時変化を説明するための図である。
【図５】図５は、実行トレース量の経時変化の一例を説明するための図である。
【図６】図６は、実行トレースの増加量の経時変化の一例を説明するための図である。
【図７】図７は、実行トレース解析部によるマルウェア解析の終了判定処理の一例を説明するための図である。
【図８】図８は、実施例１に係る解析システムによる実行トレース収集処理の手順を示すフローチャートである。
【図９】図９は、実施例１に係る解析システムによるマルウェア解析の終了判定処理の手順を示すフローチャートである。
【図１０】図１０は、解析プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、本願の開示する解析システム、解析装置、解析方法及び解析プログラムの実施例を詳細に説明する。なお、本願の開示する解析システム、解析装置、解析方法及び解析プログラムは、以下の実施例により限定されるものではない。
【実施例１】
【００１５】
実施例１に係る解析システムは、コンピュータ内で不正な動作を行う不正プログラムによって実行された命令の増加量を経時的に監視して、当該不正プログラムによって実行される命令が終了したか否かを判定する。そして、実施例１に係る解析システムは、当該不正プログラムによって実行される命令が終了したと判定した場合に、解析を終了するように制御する。なお、不正プログラムとは、例えば、コンピュータウイルスやスパイウェアなどである。また、以下では、不正プログラムをマルウェアと記載する場合がある。
【００１６】
具体的には、実施例１に係る解析システムは、不正プログラムによって実行された命令と当該命令のコードが配置されているアドレスとを対応付けて順次記憶する。そして、実施例１に係る解析システムは、順次記憶した命令及びアドレスの単位時間当たりの増加量を算出し、算出した増加量に基づいて解析を終了するか否かを判定する。ここで、解析を終了すると判定した場合に、実施例１に係る解析システムは、不正プログラムの解析を終了するように制御する。
【００１７】
従って、実施例１に係る解析システムは、不正プログラムごとに異なる動作時間を考慮した解析を行うことができる。すなわち、実施例１に係る解析システムによれば、種々のマルウェアに対して、それぞれ最適な解析時間で解析を行うことができ、動作時間が異なるマルウェアを効率よく解析することを可能にする。例えば、解析対象のマルウェアが実行直後に特定の動作を示すだけのものであった場合でも、実施例１に係る解析システムは、解析時間に無駄が生じることを抑止することできる。また、例えば、解析対象のマルウェアが実行直後に一定の動作を示した後に待機し、特定の時間が経過してから新たな動作を示すものであった場合でも、実施例１に係る解析システムは、マルウェアを十分に動作させることができ、解析結果が不完全になるという事態が生じることを抑止することができる。
【００１８】
［実施例１に係る解析システムの構成］
実施例１に係る解析システム１の構成について説明する。図１は、実施例１に係る解析システム１の構成の一例を示す図である。図１に示すように、実施例１に係る解析システム１は、マルウェアの挙動を解析する解析装置１００にマルウェアを動作させるマルウェア実行環境部５０を内蔵している。以下では、マルウェア実行環境が解析装置１００に内蔵された解析システムについて説明するが、開示の技術はこれに限定されるものではなく、例えば、マルウェア実行環境部５０を備えた他の装置が解析装置１００に接続される場合であってもよい。
【００１９】
そして、解析システム１においては、解析装置１００がネットワーク２００を介して接続先３００と接続されている。接続先３００は、解析装置１００において実行されるマルウェアによって要求される通信の接続先である。例えば、接続先３００は、ネットワーク２００に接続された所定のホストや、或いは、ホストに記憶されている所定のコンテンツなどである。例を挙げれば、接続先３００は、ダウンローダによってダウンロードされるマルウェアを記憶するホストや、攻撃者がマルウェアに対する命令を記憶させたホストである。なお、図１においては、接続先が１台のみ示されているが、実際には複数の接続先がネットワーク２００を介して解析装置１００に接続されている。また、図示しない他の接続先としては、例えば、ダウンローダによってダウンロードされるマルウェアやマルウェアに対する命令などを記憶していないホストなども含まれる。
【００２０】
解析装置１００は、図１に示すように、入出力制御Ｉ／Ｆ部１０と、入力部２０と、表示部３０と、通信部４０と、マルウェア実行環境部５０と、解析データ記憶部６１と、実行トレース記憶部６２と、制御部７０とを有している。なお、解析装置１００は、例えば、ＰＣ（Personal Computer）、ワークステーション又は解析用の専用装置である。また、解析データ記憶部６１及び実行トレース記憶部６２は、例えば、ＲＡＭ（Random Access Memory）、フラッシュメモリ（Flash Memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。また、マルウェア実行環境部５０及び制御部７０は、例えば、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの集積回路、または、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro Processing Unit）などの電子回路である。言い換えると、マルウェア実行環境部５０及び制御部７０は、物理メモリに展開された各種プログラムを読込んで実行することなどにより、各種処理を実行する。
【００２１】
入出力制御Ｉ／Ｆ部１０は、入力部２０、表示部３０、通信部４０と制御部７０との間での各種情報のやり取りを制御するインタフェースである。入力部２０は、例えば、解析者による種々の情報の入力処理を受付ける。例えば、入力部２０は、キーボードやタッチパネルなどである。表示部３０は、例えば、解析者に対して解析結果を表示出力する。例えば、表示部３０は、ディスプレイなどである。通信部４０は、解析装置１００と接続先３００との間の通信を制御する。
【００２２】
マルウェア実行環境部５０は、コンピュータ内で不正な動作を行うマルウェアを実行する。具体的には、マルウェア実行環境部５０は、解析者によって入力されたり、ネットワーク上から取得されたりした解析対象のマルウェアに動作を実行させ、実行させたマルウェアによって要求された各種情報を後述する制御部７０に転送する。各種情報としては、例えば、マルウェアが発生させた通信に関する解析結果や、内部リソースアクセス結果、実行トレースなどである。なお、実行トレースについては、後に詳述する。
【００２３】
解析データ記憶部６１は、解析装置１００によって解析されたマルウェアの情報を記憶する。具体的には、解析データ記憶部６１は、マルウェア実行環境部５０によって実行され、後述する制御部７０によって解析されたマルウェアの挙動などを記憶する。
【００２４】
実行トレース記憶部６２は、後述する制御部７０の処理結果を記憶する。具体的には、実行トレース記憶部６２は、後述する制御部７０によって収集された実行トレースを記憶する。ここで、実行トレースとは、マルウェア実行環境部５０によって実行されたマルウェアによって要求された命令と当該命令のアドレスとを対応付けた情報である。図２は、実行トレース記憶部６２によって記憶される実行トレースの一例を説明するための図である。
【００２５】
図２に示すように、実行トレース記憶部６２は、アドレスと命令とを対応付けた実行トレースを記憶する。ここで、「アドレス」とは、マルウェアによって実行される命令のコードが配置されている場所を意味している。また、「命令」とは、マルウェアがコンピュータに実行させる動作を意味している。
【００２６】
例えば、実行トレース記憶部６２は、図２に示すように、実行トレースとして「アドレス：０ｘ７Ｃ８０２４７０、命令：ｍｏｖ  ｅｄｉ、ｅｄｉ」を記憶する。なお、上記実行トレースは、メモリアドレス「０ｘ７Ｃ８０２４７０」に記録されている「ｍｏｖ  ｅｄｉ、ｅｄｉ」という命令を実行し、「ｅｄｉ」の値を「ｅｄｉ」の値にすることを意味している。同様に、実行トレース記憶部６２は、後述する制御部７０によって収集された実行トレース「アドレス：０ｘ７Ｃ８０２４７２、命令：ｐｕｓｈ  ｅｂｐ」などを順次記憶する。
【００２７】
図１に戻って、制御部７０は、応答処理部７１と、マルウェア解析部７２と、実行トレース収集部７３と、実行トレース解析部７４と、解析システム制御部７５とを有し、マルウェアの通信に対する処理、マルウェアが行う内部リソースアクセスの監視、実行トレースの取得などの各種処理を実行する。応答処理部７１は、マルウェア実行環境部５０により実行されたマルウェアが要求する接続先との通信を行い、接続先とのデータの送受信を実行する。例えば、応答処理部７１は、マルウェア実行環境部５０によって実行されたマルウェアの要求に基づいて、接続先３００との通信を行い、接続先３００に格納された新たなマルウェアを取得する。そして、応答処理部７１は、接続先３００から取得した新たなマルウェアをマルウェア実行環境部５０に転送する。
【００２８】
マルウェア解析部７２は、マルウェア実行環境部５０によって実行されたマルウェアの挙動を解析して、解析したマルウェアの情報を解析データ記憶部６１に格納したり、解析結果を表示部３０に表示させたりする。
【００２９】
実行トレース収集部７３は、マルウェア実行環境部５０によって実行されたマルウェアが要求した命令と当該命令のアドレスとを対応付けた実行トレースを収集する。そして、実行トレース収集部７３は、収集した実行トレースを実行トレース記憶部６２に格納する。具体的には、実行トレース収集部７３は、まず、マルウェア実行環境部５０によって実行されるマルウェアのプロセスを、自身が有する実行トレース収集対象プロセスリストに登録する。なお、実行トレース収集部７３は、実行トレース対象プロセスリストを記憶するメモリを有している。
【００３０】
そして、実行トレース収集部７３は、実行トレース対象プロセスリストに登録したマルウェアのプロセスによって要求された命令と当該命令のアドレスとを実行トレースとして収集し、収集した実行トレースを実行トレース記憶部６２に格納する。例えば、実行トレース収集部７３は、図２に示すように、マルウェア実行環境部５０によって実行されたマルウェアのプロセスが要求した実行トレース「アドレス：０ｘ７Ｃ８０２４７０、命令：ｍｏｖ  ｅｄｉ、ｅｄｉ」を収集して、収集した実行トレースを実行トレース記憶部６２に格納する。そして、実行トレース収集部７３は、実行トレース対象プロセスリストに登録したマルウェアのプロセスによって要求された実行トレースを順次収集して、図２に示すように、収集した実行トレースを実行トレース記憶部６２に格納する。
【００３１】
ここで、マルウェア実行環境部５０が実行したマルウェアによって新たなマルウェアが取得された場合について説明する。例えば、このような場合としては、マルウェアがネットワーク上の接続先３００から新たなマルウェアを取得するように要求したり、自身のデータ部分から新たなマルウェアを切り出すように要求したりする場合などである。
【００３２】
ネットワーク上から新たなマルウェアが取得される場合には、応答処理部７１がネットワーク２００を介して接続先３００と通信を行い、新たなマルウェアを取得する。そして、応答処理部７１は、取得した新たなマルウェアをマルウェア実行環境部５０に転送する。ここで、実行トレース収集部７３は、新たに取得したマルウェアがマルウェア実行環境部５０で実行され、新しいプロセスが生起したことを検出し、新たなマルウェアのプロセスを実行トレース対象プロセスリストに追加する。また、自身のデータ部分から新たなマルウェアが切り出される場合には、マルウェア実行環境部５０が、現時点で動作させているマルウェアのデータ部分から新たなマルウェアを切り出す。そして、実行トレース収集部７３が、新たに取得したマルウェアがマルウェア実行環境部５０で実行され、新しいプロセスが生起したことを検出し、新たなマルウェアのプロセスを実行トレース対象プロセスリストに追加する。すなわち、実行トレース収集部７３は、最初に登録したマルウェアによって取得された新たなマルウェアのプロセスが要求した実行トレースも収集し、収集した実行トレースを実行トレース記憶部６２に格納する。
【００３３】
実行トレース解析部７４は、マルウェア実行環境部５０によって実行されたマルウェアのプロセスが要求した命令とアドレスとを対応付けた実行トレースを計数して、所定の時間に対する増加量を算出する。そして、実行トレース解析部７４は、算出した増加量に基づいて、マルウェアの解析を終了するか否かを判定する。
【００３４】
具体的には、実行トレース解析部７４は、実行トレース記憶部６２によって記憶された実行トレースを読み出し、読み出した実行トレースを自身が有する実行済みコードリストに追加する。そして、実行トレース解析部７４は、実行済みコードリストに追加した実行トレースの量を経時的に計数して、単位時間当たりの実行トレースの増加量を算出する。なお、実行トレース解析部７４は、実行済みコードリストを記憶するメモリを有している。
【００３５】
ここで、実行トレース解析部７４は、実行トレース記憶部６２から読み出した実行トレースが実行済みコードリストに既に存在する場合には、読み出した実行トレースの実行済みコードリストへの追加を行わない。すなわち、実行トレース解析部７４は、実行済みコードリストに追加されていない実行トレースを実行済みコードリストに追加する。
【００３６】
図３は、実行トレース解析部７４による実行トレースの増加量の算出を説明するための図である。図３においては、実行済みコードリストに追加された実行トレースの量の経時変化を示している。ここで、図３に示す縦軸は、実行済みコードリストに含まれている実行トレースの量を示している。また、図３に示す横軸は、マルウェア実行環境部５０によって実行されたマルウェアの解析時間を示している。また、図３に示す「ｔ」は、単位時間を示している。また、図３に示す「ｉ１」は、解析開始から単位時間「ｔ」が経過した時点の実行トレースの増加量を示している。また、図３に示す「ｉ２」は、解析開始から単位時間「ｔ」が経過した時点からさらに単位時間「ｔ」が経過した時点の実行トレースの増加量を示している。なお、単位時間「ｔ」は、解析システム１の管理者によって任意の時間が決定され、予め設定される。
【００３７】
図３に示すように、実行済みコードリストに追加された実行トレース量は、解析開始から増加し、解析時間が経過するとほぼ一定となる。これは、実行トレース量が増加している間はマルウェアが動作中であり、実行トレース量がほぼ一定になった時点でマルウェアの動作が終了したことを示している。すなわち、単位時間当たりの実行トレース量を算出することにより、マルウェア実行環境部５０によって実行されたマルウェアが動作中であるか否かを判定することが可能となる。
【００３８】
例えば、実行トレース解析部７４は、図３に示すように、実行済みコードリストに追加された実行トレースの量を経時的に計数して時間「ｔ」が経過した時点の実行トレースの増加量「ｉ１」を算出する。そして、実行トレース解析部７４は、図３に示すように、「ｉ１」を算出した時点から単位時間「ｔ」が経過した時点の実行トレースの増加量として、「ｉ１」を算出した時点から単位時間「ｔ」が経過した時点の実行トレース量から「ｉ１」を減算した値「ｉ２」を算出する。このように、実行トレース解析部７４は、単位時間「ｔ」当たりの実行トレースの増加量を算出する。
【００３９】
図４は、実行トレース解析部７４によって算出された実行トレースの増加量の経時変化を説明するための図である。図４においては、図３に示す増加量の経時変化をグラフにしたものである。ここで、図４に示す縦軸は、実行トレース解析部７４によって算出された実行トレース量の増加量を示している。また、図４に示す横軸は、マルウェア実行環境部５０によって実行されたマルウェアの解析時間を示している。また、図４に示す「ｔ」は、単位時間を示している。また、図４に示す「ｉ１」は、解析開始から単位時間「ｔ」が経過した時点の実行トレースの増加量を示している。また、図４に示す「ｉ２」は、解析開始から単位時間「ｔ」が経過した時点からさらに単位時間「ｔ」が経過した時点の実行トレースの増加量を示している。
【００４０】
図４に示すように、実行トレースの増加量は、時間の経過に伴って減少していき、解析開始から所定の時間が経過すると、ほぼ「０」に近い状態となる。新たなコードが実行されないということは、当該マルウェアから新たな挙動を観測していないことを意味する。すなわち、実行トレースの増加量がほぼ「０」に近い状態になった時点で、マルウェア実行環境部５０によって実行されたマルウェアの動作が終了したと判定することができる。
【００４１】
ところで、マルウェアは種々の動作パターンを有している。例えば、上述したように、実行直後に特定の動作を示すだけのマルウェアや、実行直後に一定の動作を示した後に待機し、特定の時間が経過してから新たな動作を示すマルウェアなどが存在する。解析対象が実行直後に特定の動作を示すだけのマルウェアであった場合には、実行トレース量は、図３に示すように、解析開始から増加し、解析時間が経過するとほぼ一定となる。すなわち、実行トレースの増加量は、図４に示すように、時間の経過に伴って減少していき、解析開始から所定の時間が経過すると、ほぼ「０」に近い状態となる。
【００４２】
一方、解析対象が実行直後に一定の動作を示した後に待機し、特定の時間が経過してから新たな動作を示すマルウェアであった場合には、実行トレース量及び実行トレースの増加量は、それぞれ図３及び図４とは異なる経時変化を示す。図５は、実行トレース量の経時変化の一例を説明するための図である。ここで、図５に示す縦軸は、実行済みコードリストに含まれている実行トレース量を示している。また、図５に示す横軸は、マルウェア実行環境部５０によって実行されたマルウェアの解析時間を示している。
【００４３】
例えば、解析対象が実行直後に一定の動作を示した後に待機し、特定の時間が経過してから新たな動作を示すマルウェアであった場合には、実行トレース量は、図５に示すように、解析開始から増加した後、一定になり、再度増加することとなる。そして、実行トレース量は、マルウェアの新たな動作が終了すると再度一定となる。このようなマルウェアの場合には、実行トレースの増加量は、図６に示すような経時変化を示すこととなる。
【００４４】
図６は、実行トレースの増加量の経時変化の一例を説明するための図である。ここで、図６に示す縦軸は、実行トレース解析部７４によって算出された実行トレースの増加量を示している。また、図６に示す横軸は、マルウェア実行環境部５０によって実行されたマルウェアの解析時間を示している。例えば、解析対象が実行直後に一定の動作を示した後に待機し、特定の時間が経過してから新たな動作を示すマルウェアであった場合には、実行トレースの増加量は、図６に示すように、時間の経過に伴って減少していき、解析開始から所定の時間が経過すると、一定期間ほぼ「０」に近い状態となる。その後、実行トレースの増加量は、再度上昇し、所定の時間が経過すると、ほぼ「０」に近い状態となる。
【００４５】
このように、マルウェアは、単純な動作時間の違いだけではなく、段階的に動作を行うものが存在するため、開示の技術では、このようなマルウェアに対しても効率よく解析が行えるように構成されている。
【００４６】
具体的には、実行トレース解析部７４は、算出した単位時間当たりの実行トレースの増加量が所定の閾値を下回るか否かを判定する。ここで、算出した単位時間当たりの実行トレースの増加量が所定の閾値を下回った場合に、実行トレース解析部７４は、増加量が所定の閾値を下回った期間が所定の期間を超えるか否かを判定する。そして、増加量が所定の閾値を下回った期間が所定の期間を超えた場合に、実行トレース解析部７４は、現時点でマルウェア実行環境部５０によって実行されているマルウェアの解析を終了すると判定する。
【００４７】
図７は、実行トレース解析部７４によるマルウェア解析の終了判定処理の一例を説明するための図である。図７においては、図４に示す実行トレースの増加量の経時変化を示している。すなわち、図７に示す縦軸は、実行トレース解析部７４によって算出された実行トレース量の増加量を示している。また、図７に示す横軸は、マルウェア実行環境部５０によって実行されたマルウェアの解析時間を示している。
【００４８】
例えば、実行トレース解析部７４は、図７に示すように、実行トレースの増加量が所定の閾値を下回った期間が一定時間を超えた場合に、マルウェア実行環境部５０によって実行されているマルウェアの解析を終了すると判定する。なお、解析の終了判定に用いられる閾値及び一定時間は、解析システム１の管理者によって任意に決定され、予め設定される。
【００４９】
このように、実行トレース量が所定の閾値を下回った期間が一定期間を超えた場合にマルウェアの解析を終了すると判定することによって、例えば、実行トレースの増加量が図６に示すような経時変化を示すマルウェアを解析する場合であっても、実行トレースの増加量が一定期間を超える前に再度上昇することで解析を継続することとなり、マルウェアを十分に動作させることができる。従って、実施例１に係る解析システム１は、解析結果が不完全なものになるということを抑止することを可能にする。
【００５０】
図１に戻って、解析システム制御部７５は、実行トレース解析部７４によってマルウェアの解析を終了すると判定された場合に、マルウェア実行環境部５０によって実行されている不正プログラムの解析を終了させる。具体的には、解析システム制御部７５は、実行トレース解析部７４によってマルウェアの解析を終了すると判定された場合に、マルウェア実行環境部５０に対して動作を終了する旨の信号である終了信号を送信する。マルウェア実行環境部５０は、解析システム制御部７５から終了信号を受信すると、動作を終了する。すなわち、マルウェア解析部７２によって実行されているマルウェアの解析が終了することとなる。
【００５１】
［実施例１に係る解析システムによる処理の手順］
次に、実施例１に係る解析システム１による判定処理の手順を説明する。以下では、まず、実施例１に係る解析システム１による実行トレース収集処理の手順を説明する。その後、実施例１に係る解析システム１によるマルウェア解析の終了判定処理の手順を説明する。
【００５２】
［実施例１に係る解析システムによる実行トレース収集処理の手順］
まず、実施例１に係る解析システムによる実行トレース収集処理の手順を説明する。図８は、実施例１に係る解析システム１による実行トレース収集処理の手順を示すフローチャートである。図８に示すように、実施例１に係る解析システム１においては、マルウェア実行環境部５０に解析対象のマルウェアが設定されると（ステップＳ１０１肯定）、実行トレース収集部７３が、実行トレース収集対象プロセスリストに解析対象のマルウェアを登録する（ステップＳ１０２）。
【００５３】
そして、マルウェア実行環境部５０が解析対象のマルウェアを実行すると（ステップＳ１０３）、実行トレース収集部７３が、実行トレース収集対象プロセスリスト内のプロセスを監視し（ステップＳ１０４）、実行トレース収集対象プロセスの命令が実行されたか否かを判定する（ステップＳ１０５）。
【００５４】
ここで、実行トレース収集対象プロセスの命令が実行された場合には（ステップＳ１０５肯定）、実行トレース収集部７３は、実行された命令と命令のアドレスとを実行トレースとして取得し、取得した実行トレースを実行トレース記憶部６２に格納する（ステップ
Ｓ１０６）。なお、実行トレース収集部７３は、実行トレース収集対象プロセスの命令を常時監視する（ステップＳ１０５否定）。
【００５５】
その後、実行トレース収集部７３は、実行トレース収集対象プロセスリスト内のプロセスが新たなプロセスを生起させたか否かを判定する（ステップＳ１０７）。ここで、実行トレース収集対象プロセスリスト内のプロセスが新たなプロセスを生起させた場合には（ステップＳ１０７肯定）、実行トレース収集部７３は、実行トレース対象プロセスリストに生起した新たなプロセスを追加して（ステップＳ１０８）、実行トレース収集対象プロセスリスト内のプロセスの命令を監視する（ステップＳ１０４）。
【００５６】
一方、実行トレース収集対象プロセスリスト内のプロセスが新たなプロセスを生起させなかった場合には（ステップＳ１０７否定）、実行トレース収集部７３は、実行トレース解析部７４によって解析を終了すると判定されたか否かを判定する（ステップＳ１０９）。ここで、実行トレース解析部７４によって解析を終了すると判定されなかった場合には（ステップＳ１０９否定）、実行トレース収集部７３は、実行トレース収集対象プロセスリスト内のプロセスの命令を監視する（ステップＳ１０４）。
【００５７】
一方、実行トレース解析部７４によって解析を終了すると判定された場合には（ステップＳ１０９肯定）、実行トレース収集部７３は、処理を終了する。なお、解析システム１は、マルウェア実行環境部５０に解析対象のマルウェアが設定されるまで、待機状態である（ステップ１０１否定）。
【００５８】
［実施例１に係る解析システムによるマルウェア解析の終了判定処理の手順］
次に、実施例１に係る解析システム１によるマルウェア解析の終了判定処理の手順を説明する。図９は、実施例１に係る解析システム１によるマルウェア解析の終了判定処理の手順を示すフローチャートである。図９に示すように、実施例１に係る解析システム１においては、まず、管理者が実行トレースの増加量を算出するための単位時間を設定する（ステップＳ２０１）そして、実施例１に係る解析システム１においては、管理者が解析終了を判定するための実行トレースの増加量に対する閾値と期間とを設定する（ステップＳ２０２）。
【００５９】
ステップＳ２０１及びステップＳ２０２において、管理者によって各種設定が行われると、実行トレース解析部７４は、実行トレース収集部７３によって実行トレースが実行トレース記憶部６２に格納されたか否かを判定する（ステップＳ２０３）。ここで、実行トレースが実行トレース記憶部６２に格納された場合には（ステップＳ２０３肯定）、実行トレース解析部７４は、実行トレース記憶部６２から格納された実行トレースを読み出し（ステップＳ２０４）、実行済みコードリストに存在するか否かを判定する（ステップＳ２０５）。
【００６０】
ここで、読み出した実行トレースが実行済みコードリストに存在しなかった場合には（ステップＳ２０５否定）、実行トレース解析部７４は、読み出した実行トレースを実行済みコードリストに追加して（ステップＳ２０６）、単位時間が経過したか否かを判定する（ステップＳ２０７）。一方、読み出した実行トレースが実行済みコードリストに存在した場合には（ステップＳ２０５肯定）、実行トレース解析部７４は、単位時間が経過したか否かを判定する（ステップＳ２０７）。
【００６１】
ここで、単位時間が経過していなかった場合には（ステップＳ２０７否定）、実行トレース解析部７４は、ステップＳ２０３に戻って、実行トレースが格納されたか否かを確認し、実行トレースが格納された場合には、実行トレースを読み出す。一方、単位時間が経過していた場合には（ステップＳ２０７肯定）、実行トレース解析部７４は、実行済みコードリストに追加した実行トレースの量を計数し、単位時間当たりの増加量を算出する（ステップＳ２０８）。
【００６２】
そして、実行トレース解析部７４は、算出した実行トレースの増加量と閾値とを比較して、実行トレースの増加量が閾値を下回っているか否かを判定する（ステップＳ２０９）。ここで、実行トレースの増加量が閾値を下回っていない場合には（ステップＳ２０９否定）、実行トレース解析部７４は、ステップＳ２０４に戻って、実行トレースを読み出す。
【００６３】
一方、実行トレースの増加量が閾値を下回っていた場合には（ステップＳ２０９肯定）、実行トレース解析部７４は、閾値を下回った期間が所定の期間を超えたか否かを判定する（ステップＳ２１０）。ここで、閾値を下回った期間が所定の期間を超えていなかった場合には（ステップＳ２１０否定）、実行トレース解析部７４は、ステップＳ２０４に戻って、実行トレースを読み出す。
【００６４】
一方、閾値を下回った期間が所定の期間を超えていた場合には（ステップＳ２１０肯定）、実行トレース解析部７４は、解析を終了すると判定し、終了信号をマルウェア実行環境部５０に送信して（ステップＳ２１１）、処理を終了する。
【００６５】
［実施例１の効果］
上述したように、実施例１によれば、コンピュータ内で不正な動作を行うマルウェアを実行するマルウェア実行環境部５０とマルウェアの挙動を解析する解析装置１００とを含む解析システム１であって、解析装置１００の実行トレース収集部７３が、マルウェア実行環境部５０によって実行されたマルウェアがコンピュータ内で行った動作である実行トレースを収集する。そして、実行トレース解析部７４が、実行トレース収集部７３によって収集された実行トレースの任意の時間に対する増加量を算出する。さらに、実行トレース解析部７４が、算出した増加量に基づいて、マルウェアの解析を終了させるか否かを判定する。そして、解析システム制御部７５が、実行トレース解析部７４によってマルウェアの解析を終了すると判定された場合に、マルウェア実行環境部５０によって実行されているマルウェアの解析を終了させる。従って、実施例１に係る解析システム１は、実行トレースの増加量を監視することによって、マルウェアが動作中であるか否かを判定することができ、動作時間が異なるマルウェアを効率よく解析することを可能にする。
【００６６】
また、実施例１によれば、実行トレース収集部７３が、マルウェア実行環境部５０によって実行されたマルウェアが要求した命令と当該命令のアドレスとを対応付けた情報を実行トレースとして収集する。従って、実施例１に係る解析システム１は、マルウェアの動作について詳細に監視することで、マルウェアの動作についてより正確に判定することができる。
【００６７】
例えば、マルウェアには、自身のプログラムコードを動的に書き換えながら動作するものが存在する。このようなマルウェアは、同一のアドレスに配置された命令であっても同一の命令が配置されているとは限らないため、アドレスが同一であっても同一の命令を実行しているとは限らない。すなわち、実施例１に係る解析システム１は、命令とアドレスとを対応付けた情報を実行トレースとして用いることで、マルウェアの動作内容を考慮することができ、マルウェアが動作中であるか否かをより正確に判定することを可能にする。
【００６８】
また、実施例１によれば、実行トレース解析部７４は、算出した増加量と所定の閾値とを比較し、当該増加量が一定期間所定の閾値を下回った場合に、マルウェアの解析を終了させると判定する。従って、実施例１に係る解析システム１は、段階的に動作するマルウェアに対しても対応することができ、動作時間が異なるマルウェアをより効率よく解析することを可能にする。
【００６９】
また、実施例１によれば、実行トレース収集部７３は、マルウェアによって新たなプロセスが生起された場合に、当該新たなプロセスによって実行される命令と当該命令のアドレスとを対応付けて実行トレースとして収集する。従って、実施例１に係る解析システム１は、マルウェアが実行する種々の動作に対応することができ、動作時間が異なるマルウェアをさらに効率よく解析することを可能にする。
【実施例２】
【００７０】
これまで実施例１を説明したが、本願が開示する技術は実施例１に限定されるものではない。すなわち、開示の技術は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。
【００７１】
（１）マルウェア解析の終了判定機能
上述した実施例１では、マルウェア解析の終了判定機能を有する解析装置１００が、マルウェア解析部７２を有し、マルウェアの挙動などを解析する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、マルウェア解析の終了判定機能のみを有する解析装置が、マルウェアの挙動などを解析する装置のマルウェア解析の終了判定を行う場合であってもよい。かかる場合には、例えば、実行トレース収集部７３と、実行トレース解析部７４と、解析システム制御部７５と、実行トレース記憶部６２とを有した装置が、マルウェアの挙動などを解析する装置に接続され、マルウェアの解析を終了するか否かを制御する。
【００７２】
（２）解析終了の制御
上記した実施例１では、解析システム制御部７５がマルウェア実行環境部５０に対して終了信号を送信することで、マルウェアの解析を終了させる場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、解析システム制御部７５が、マルウェア解析部７２に対して解析を終了させる旨の終了信号を送信することで、マルウェアの解析を終了させる場合であってもよい。
【００７３】
（３）実行トレース対象プロセスリスト及び実行済みコードリスト
上記した実施例１では、実行トレース収集部７３と実行トレース解析部７４とが、それぞれ実行トレース対象プロセスリストと実行済みコードリストとを記憶する場合について説明した。しかしながら、開示の技術はこれに限定されるものではなく、例えば、実行トレース対象プロセスリスト及び実行済みコードリストをそれぞれ記憶部に格納させる場合であってもよい。
【００７４】
（４）システム構成等
例えば、各装置の分散・統合の具体的形態（例えば、図１の形態）は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合することができる。一例を挙げると、解析データ記憶部６１と実行トレース記憶部６２とを一つの記憶部として統合してもよく、一方、実行トレース解析部７４を、実行トレースの増加量を算出する算出部と、マルウェアの解析を終了するか否かを判定する判定部とに分散してもよい。
【００７５】
また、実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。例えば、図９における単位時間の設定処理を、自動で行ってもよい。かかる場合には、例えば、制御部７０が、過去に設定された単位時間に基づいて、現時点で実行されるマルウェア解析に最適な単位時間を算出し、算出した単位時間を設定する。
【００７６】
また、マルウェア実行環境部５０を解析装置１００の外部装置としてネットワーク経由で接続するようにしてもよく、或いは、実行トレース収集部７３、実行トレース解析部７４を別の装置がそれぞれ有し、ネットワークに接続されて協働することで、上記した解析装置１００の機能を実現するようにしてもよい。
【００７７】
（５）解析プログラム
ところで、上記実施例１では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本実施例はこれに限定されるものではなく、予め用意されたプログラムをコンピュータで実行するようにしてもよい。そこで、以下では、図１０を用いて上記実施例１に示した解析装置１００と同様の機能を有する解析プログラムを実行するコンピュータの一例を説明する。図１０は、解析プログラムを実行するコンピュータを示す図である。
【００７８】
図１０に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ（Central  Processing  Unit）１０２０と、ハードディスクドライブインタフェース１０３０とを有する。また、図１０に示すように、コンピュータ１０００は、例えば、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００７９】
メモリ１０１０は、図１０に示すように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１０に示すように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図１０に示すように、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、図１０に示すように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図１０に示すように、例えばディスプレイ１１３０に接続される。
【００８０】
ここで、図１０に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ（Operating  System）１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、解析プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクに記憶される。具体的には、上述した実施例で説明した実行トレース収集部７３と同様の情報処理を実行する収集手順と、実行トレース解析部７４と同様の情報処理を実行する算出手順及び判定手順と、解析システム制御部７５と同様の情報処理を実行する制御手順とが記述されたプログラムモジュールが、ハードディスクに記憶される。
【００８１】
また、上述した実施例で説明した実行トレース記憶部６２に記憶されるデータのように、解析プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えばハードディスクに記憶される。そして、ＣＰＵ１０２０が、ハードディスクに記憶されたプログラムモジュールやプログラムデータを必要に応じてＲＡＭ１０１２に読み出し、収集手順、算出手順、判定手順、制御手順を実行する。
【００８２】
なお、解析プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクに記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、解析プログラムに係るプログラムモジュールやプログラムデータは、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェースを介してＣＰＵ１０２０によって読み出されてもよい。
【００８３】
これらの実施例やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００８４】
１  解析システム
５０  マルウェア実行環境部
６２  実行トレース記憶部
７１  応答処理部
７２  マルウェア解析部
７３  実行トレース収集部
７４  実行トレース解析部
７５  解析システム制御部
１００  解析装置
【図１】
0005437977.tif 000002
【図２】
0005437977.tif 000003
【図３】
0005437977.tif 000004
【図４】
0005437977.tif 000005
【図５】
0005437977.tif 000006
【図６】
0005437977.tif 000007
【図７】
0005437977.tif 000008
【図８】
0005437977.tif 000009
【図９】
0005437977.tif 000010
【図１０】
0005437977.tif 000011