(57)【要約】【課題】  本発明によれば、起動後一定時間後或いは、特定の日時にのみ活動を行うプログラムに対する効率的な解析が実現される。【解決手段】  プログラム実行環境の時間経過速度を調整しながら、プログラムの解析を行うプログラム解析システムは、実行環境における時間経過速度およびプログラム実行開始時間、実行終了時間などの解析条件を設定し、解析管理部の決定に従い、時間経過速度およびプログラム実行開始時間を調整し、実行終了時間までプログラムを実行し、実行環境を監視し、プログラムの活動記録を取得し、活動記録を解析し、プログラムの挙動を明らかにする。さらに、解析結果に基づき、解析条件を再設定し、再解析を行い、検体と外部端末との通信を監視し、通信でタイムアウトが発生しないように、解析管理部により設定された時間経過速度を変更する。【選択図】図１
2013171556.tif 000002
【特許請求の範囲】
【請求項１】
動作検証対象のプログラムを、時間経過速度を任意に調整可能な実行環境上で動作させるプログラム解析システムは、
前記プログラムの解析状況を管理し、時間経過速度を決定する解析管理部を有するシステム管理装置と、
前記解析管理部で指定された時間経過速度に基づき前記プログラムを前記実行環境上で実行する検体実行部と、前記実行環境上での前記プログラムの挙動を、活動記録として取得する活動記録部とを有する少なくとも１つの検体実行装置と、
前記活動記録を解析して、前記プログラムの特徴を、解析結果として出力する活動解析部を有する少なくとも一つの活動解析装置と、
前記プログラムが外部と通信を行う際にタイムアウトが発生しないように、前記時間経過速度を調整する通信監視部を有する少なくとも一つの通信監視装置と、
を含むことを特徴とするプログラム解析システム。
【請求項２】
前記通信監視装置は、前記プログラムの通信の開始時に、前記検体実行装置の時間経過速度を予め定められた値に設定することを特徴とする、請求項１に記載のプログラム解析システム。
【請求項３】
前記通信監視装置は、前記プログラムの通信終了時に、前記検体実行装置の時間経過速度を予めきめられた値に再設定することを特徴とする、請求項１に記載のプログラム解析システム。
【請求項４】
前記通信監視装置は、時間経過速度変更命令を前記検体実行装置に送信することで、時間経過速度を設定することを特徴とする、請求項１に記載のプログラム解析システム。
【請求項５】
前記通信監視装置は、通信内容を分析して、通信のタイムアウト時間を推定することを特徴とする、請求項１に記載のプログラム解析システム。
【請求項６】
前記通信監視装置は、通信内容を分析して、前記検体実行装置からの要求文と、それに対する応答文を取得することを特徴とする、請求項５に記載のプログラム解析システム。
【請求項７】
前記通信監視装置は、前記応答文と前記要求文の時間差を算出し、これに基づき前記タイムアウト時間を推定することを特徴とする、請求項６に記載のプログラム解析システム。
【請求項８】
前記通信監視装置は、前記時間差を基に、前記タイムアウト時間を推定することを特徴とする、請求項７に記載のプログラム解析システム。
【請求項９】
前記通信監視装置は、前記タイムアウト時間を基に、最適時間経過速度を算出することを特徴とする、請求項８に記載のプログラム解析システム。
【請求項１０】
前記通信監視装置は、前記最適時間経過速度が更新されるごとに、前記時間経過速度変更命令を前記検体実行装置に送信することを特徴とする、請求項８に記載のプログラム解析システム。
【請求項１１】
前記通信監視装置は、前記プログラムが複数の通信を実行していた場合に、各通信から得られた前記最適時間経過速度のうち最も小さい値を、前記時間経過速度変更命令として送信することを特徴とする、請求項１０に記載のプログラム解析システム。
【請求項１２】
処理装置を用いて、動作検証対象のプログラムを、時間経過速度を任意に調整可能な実行環境上で動作させるためのプログラム解析方法は、
前記プログラムの解析状況を管理し、時間経過速度を決定する解析管理ステップと、
前記解析管理ステップで指定された時間経過速度に基づき前記プログラムを前記実行環境上で実行する検体実行ステップと、
前記実行環境上での前記プログラムの挙動を、活動記録として取得する活動記録ステップと、
前記活動記録を解析して、前記プログラムの特徴を、解析結果として出力する活動解析ステップと、
前記プログラムが外部と通信を行う際にタイムアウトが発生しないように、前記時間経過速度を調整する通信監視ステップと、
を有することを特徴とするプログラム解析方法。
【請求項１３】
動作検証対象のプログラムを、時間経過速度を任意に調整可能な実行環境上で動作させるプログラム解析システムは、
前記プログラムの解析状況を管理し、時間経過速度を決定する解析管理部を有するシステム管理装置、及び
前記解析管理部で指定された時間経過速度に基づき前記プログラムを前記実行環境上で実行する検体実行部と、前記実行環境上での前記プログラムの挙動を、活動記録として取得する活動記録部と、前記活動記録を解析して、前記プログラムの特徴を、解析結果として出力する活動解析部と、前記プログラムが外部と通信を行う際にタイムアウトが発生しないように、前記時間経過速度を調整する通信監視部とを有する処理装置、
を含むことを特徴とするプログラム解析システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムの挙動を解析するプログラム解析システムに関する。
【背景技術】
【０００２】
ソースコードを用いずに、コンピュータプログラムの挙動を解析する方法としては、静的解析と動的解析の、２種類がある。静的解析は、プログラムのファイルに記述されている命令コードを分析することで、挙動を調査する。一方、動的解析では、プログラムを計算機上で実行し、その時の振る舞いを観測することで、挙動を調査する。プログラムによっては、静的解析を阻止するために様々な防御策が講じられている。特に、昨今のマルウェア（malware：コンピュータウイルスやスパイウェアなどの不正プログラム）は、静的解析を阻止するために、ファイル構造を難読化又は暗号化する場合が多いため、静的解析による調査には、ファイル構造の解読や復号化に長時間かかり、熟練した技術者が必要である、という課題が発生している。一方、静的解析に比べて、動的解析は、実際の振る舞いを観測して、挙動を調査するため、ファイル難読化又は暗号化による影響を受けにくく、比較的短時間に解析を完了することができる。
【０００３】
そのため、特許文献１、特許文献２、非特許文献１などに示すように、動的解析の処理を自動化し、効率的な解析を実現するシステムの研究開発が進んでいる。これらのシステムでは、実行環境でマルウェアを実行し、一定時間内に観測された挙動（たとえば、マルウェアのファイルアクセスやネットワーク通信）を取得して解析する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１８１３３５号公報
【特許文献２】特開２００９−３７５４５号公報
【非特許文献】
【０００５】
【非特許文献１】IEEE International Conference of Communications 2008 Proceedings，“Malware Behavior Analysis in Isolated Miniature Network for Revealing Malware’s Network Activity”
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、プログラムによっては、起動してから一定時間経過してから、あるいは特定の日時にのみ、実質的な活動を行うものがある。また、Ｙ２Ｋ問題にあったように、特定の日時を過ぎると誤動作を起こすものがある。このようなプログラムを上述のシステムで解析する場合、解析に多くの時間がかかる、或いは解析に失敗するという問題がある。非特許文献１では、解析対象のマルウェアが、一定時間活動を停止するために実行する関数を無効化することで、解析の効率化を図っている。しかし、この方法は、関数実行後に時間経過を検証する必要があるマルウェア、あるいは、特定の日時にのみ活動を行うマルウェアに対しては、有効ではない。
【０００７】
本発明の目的は、起動後一定時間後或いは、特定の日時にのみ活動を行うプログラムに対する効率的な解析を行なうシステム及び方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明のプログラム解析システムでは、プログラムが動作する実行環境の時刻管理機能を操作し、外部との通信活動に悪影響を与えなることなく、実行環境内の時間経過速度を実時間よりも高速あるいは低速に変化させ、活動を記録することにより、プログラム実行環境の時間経過速度を調整しながら、プログラムの解析を行う。
【０００９】
プログラム解析システムの主な機能部は、解析管理部、検体実行部、活動記録部、活動解析部、通信監視部の５つである。ここで、「検体」とは、解析対象となるマルウェアである。解析管理部は、実行環境における時間経過速度、およびプログラム実行開始時間と実行終了時間などの解析条件を設定する。検体実行部は、解析管理部が設定した解析条件に従い、時間経過速度およびプログラム実行開始時間を調整し、実行終了時間までにプログラムを実行する。活動記録部は、実行環境を監視し、プログラムの活動記録を取得する。活動解析部は、活動記録に基づいて、プログラムの挙動を解析する。さらに、解析管理部は、解析結果に基づき、解析条件を再設定し、再解析を行う。通信監視部は検体と外部端末との通信を監視し、通信でタイムアウトが発生しないように、解析管理部により設定された時間経過速度を変更する。
【発明の効果】
【００１０】
本発明によれば、起動後一定時間後或いは、特定の日時にのみ活動を行うプログラムに対する効率的な解析が実現される。
【図面の簡単な説明】
【００１１】
【図１】本発明を実施するためのシステムの全体構成を示す図である。
【図２】システム管理装置の物理構成を示す図である。
【図３】システム管理装置の論理構成を示す図である。
【図４】検体実行装置の物理構成を示す図である。
【図５】検体実行装置の論理構成を示す図である。
【図６】タイマー装置の物理構成を示す図である。
【図７】活動解析装置の物理構成を示す図である。
【図８】活動解析装置の論理構成を示す図である。
【図９】通信監視装置の物理構成を示す図である。
【図１０】通信監視装置の論理構成を示す図である。
【図１１】解析シナリオＤＢのレコード例を示す図である。
【図１２】活動記録ＤＢのレコード例を示す図である。
【図１３】再解析ルールＤＢのレコード例を示す図である。
【図１４】解析結果ＤＢのレコード例を示す図である。
【図１５】記録ルールＤＢのレコード例を示す図である。
【図１６】解析ルールＤＢのレコード例を示す図である。
【図１７】時刻経過速度ＤＢのレコード例を示す図である。
【図１８】管理席管理処理のフローチャートを示す図である。
【図１９】検体実行処理のフローチャートを示す図である。
【図２０】時間経過速度変更処理のフローチャートを示す図である。
【図２１】タイマー装置と時計部の関係を示す図である。
【図２２】時刻経過処理の調整処理のフローチャートを示す図である。
【図２３】活動記録処理のフローチャートを示す図である。
【図２４】活動解析処理のフローチャートを示す図である。
【図２５】通信管理処理のフローチャートを示す図である。
【図２６Ａ】発信器のパルスとＣＰＵへのクロック信号との対応関係を示す図である。
【図２６Ｂ】発信器のパルスとＣＰＵへのクロック信号との対応関係を示す図である。
【図２７】発信器のパルスとＣＰＵへのクロック信号との対応関係における各種設定モードを示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を、図面に示す実施例を基に説明する。本実施例では、起動してから活動するまでの時間や活動時刻が不明であるマルウェアを、４台の装置がネットワークを介して連携して解析するシステムについて説明する。本実施例を説明した後に、変更例について述べる。
【００１３】
（システム構成）
図１は本発明を実施するためのシステムの全体構成を示す図である。本システムを構成する要素として、システム管理装置１００、検体実行装置２００、活動解析装置３００、通信監視装置４００、通信ネットワーク５００、通信ネットワーク６００、ミラー装置７００、検体通信先端末８００、通信ネットワーク９００がある。通信ネットワーク５００を介して接続された装置１００、２００、３００及び４００が連携してプログラムの解析を行う。
【００１４】
システム管理置１００は、１つ以上の公知のパーソナルコンピュータやワークステーション等の計算機により構成される。システム管理装置１００は、本システムで行われるマルウェア解析処理の進行を管理する。また、解析対象となる検体（マルウェア）１０と、実行環境で解析開始時に設定される時刻を指定する解析開始時刻４０、解析を終了する時刻を指定する解析終了時刻５０、及び時間経過速度３０からなる解析シナリオ２０とを決定し、検体実行装置２００に指令する。システム管理装置１００の構成の詳細および、他の装置との通信の詳細については、後述する。
【００１５】
検体実行装置２００は、１つ以上の公知のパーソナルコンピュータやワークステーション等の計算機により構成される。検体実行装置２００は、システム管理装置１００から送信された指令に従い、実行環境で検体１０を実行する。また、検体１０の実行の際、ファイルアクセスやネットワーク通信などの、検体の活動情報を活動記録６０として記録する。検体実行装置２００の構成の詳細および、他の装置との通信の詳細については、後述する。
【００１６】
活動解析装置３００は、１つ以上の公知のパーソナルコンピュータやワークステーション等の計算機により構成される。活動解析装置３００は、検体実行装置２００から送信された活動記録６０に含まれる検体の活動情報を解析し、検体がどのような活動を行ったかを示す、解析結果７０を作成する。システム管理装置１００は、解析結果７０を参照して、再解析の有無や手順を決定する。活動解析装置３００の構成の詳細および、他の装置との通信の詳細については、後述する。
【００１７】
通信監視装置４００は、１つ以上の公知のパーソナルコンピュータやワークステーション等の計算機により構成される。通信監視装置４００は、通信ネットワーク６００を介して行われる検体実行装置２００と検体通信先端末８００との間のＴＣＰ(Transmission Control Protocol)通信を、パケットミラー装置７００及び通信ネットワーク９００介して取得したミラーパケット９０によって監視する。そして、通信が時間経過速度の高速化による悪影響を受けないように、通信状態に応じて時間経過速度を制御する。活動解析装置４００の構成の詳細および、他の装置との通信の詳細については、後述する。
【００１８】
通信ネットワーク５００は、ＷＡＮ（World Area Network）やＬＡＮ（Local Area Network）、携帯電話、ＰＨＳ等の公衆回線網でもよい。システム管理装置１００、検体実行装置２００、活動解析装置３００、及び通信監視装置４００間の通信は、通信ネットワーク５００を介して行われる。
【００１９】
通信ネットワーク６００は、ＷＡＮやＬＡＮ、携帯電話、ＰＨＳ等の公衆回線網でもよい。検体実行装置２００と検体通信先端末８００との通信は、通信ネットワーク６００介して行われる。
【００２０】
通信ネットワーク９００は、ＷＡＮやＬＡＮ、携帯電話、ＰＨＳ等の公衆回線網でもよい。パケットミラー装置７００と検体通信先端末８００との通信は、通信ネットワーク６００介して行われる。
【００２１】
ミラー装置７００は、検体実行装置２００と検体通信先端末８００が通信ネットワーク６００を介して行うＴＣＰ通信に含まれる全てのＴＣＰパケットを、ミラーパケット９０として通信監視装置４００に転送する。
【００２２】
検体通信先端末８００は、検体実行装置２００内で実行される検体と通信を行う端末の総称である。
【００２３】
図１のライン１は、システム管理装置１００と検体実行装置２００との間の情報の論理的な流れを示す。同様に、ライン２は、検体実行装置２００と活動解析装置３００との間の情報の論理的な流れを、ライン３は、活動解析装置３００とシステム管理装置１００との間の情報の論理的な流れを示す。ライン１、ライン２、ライン３とも、物理的な情報の伝達手段として、通信ネットワーク５００を用いる。また、物理的な情報の伝達は、各装置間で直接的に行われる必要はなく、外部記憶装置などを経由して行われてもよい。
【００２４】
ライン１を介しては、検体１０と解析シナリオ２０という２種類の情報が、システム管理装置１００から検体実行装置２００に伝達される。解析シナリオ２０には、検体実行装置２００内での時間経過速度３０、解析開始時刻４０、解析終了時刻５０が含まれる。解析シナリオ２０を受信した検体実行装置２００は実行環境の時刻を解析開始時刻４０に設定し、解析環境の時刻経過速度を時間経過速度３０に設定する。そして、実行環境の時刻が解析終了時刻５０に達するまで、解析が行われる。システム管理装置１００は、同時に１つ以上の解析シナリオ２０を送信する。
【００２５】
ライン２を介しては、活動記録６０が、検体実行装置２００から活動解析装置３００に伝達される。同様に、ライン３を介しては、解析結果７０が、活動解析装置３００からシステム管理装置１００に伝達される。
【００２６】
また、ライン４は、検体実行装置２００と通信監視装置４００との間の情報の論理的な流れを示す。同様に、ライン５は、パケットミラー装置７００と通信監視装置４００との間の情報の論理的な流れを示す。
【００２７】
ライン４を介しては、時間経過速度変更命令８０が、通信監視装置４００から検体実行装置２００へ伝達される。同様に、ライン５を介しては、ミラーパケット９０が、パケットミラー装置７００から通信監視装置４００へ伝達される。
【００２８】
また、図１では、システム管理装置１００、検体実行装置２００、活動解析装置３００、及び通信監視装置４００をそれぞれ別の処理装置で構成したが、これらの装置を１つの処理装置で実現しても良い。また、検体実行装置２００、活動解析装置３００、及び通信監視装置４００がそれぞれ複数台あって、システム管理装置１００がこれらを管理する構成であっても良い。更に、検体実行装置２００、活動解析装置３００、及び通信監視装置４００を１つの処理装置で構成し、システム管理装置１００が複数台の処理装置を管理する構成であっても良い。  
図２は、システム管理装置１００の物理構成を示す図である。システム管理装置１００は、装置本体１１０と、入出力装置１８０から構成される。
【００２９】
装置本体１１０は、ＣＰＵ１２０、メモリ１３０、インタフェイス１４０、外部記憶装置１５０、バス１６０、及び検体保存装置１７０を備えている。
【００３０】
ＣＰＵ１２０は処理を実行するための演算装置である。メモリ１３０はＣＰＵ１２０で実行する命令のセットがプログラムとして記述されたデータを含む記憶媒体である。
【００３１】
メモリ１３０には、システム管理プログラム１３１が含まれている。そして、このシステム管理プログラム１３１がＣＰＵ１２０で実行されることによって、検体解析の管理を行う。具体的な管理手順については後述する。
【００３２】
インタフェイス１４０は、システム管理装置１００を通信ネットワーク５００と接続するための通信装置である。ＬＡＮカードなどの通信機器がこれに対応する。インタフェイス１４０は、図中においてＩＦと記述することがある。
【００３３】
外部記憶装置１５０は、ＨＤＤ(Hard Disk Drive)などの記憶媒体から構成され、解析シナリオＤＢ１５１、活動記録ＤＢ１５２、解析結果ＤＢ１５３、及び再解析ルールＤＢ１５４を記憶する。これらのＤＢの具体的内容については後述する。
【００３４】
バス１６０は、ＣＰＵ１２０、メモリ１３０、ＩＦ１４０、外部記憶装置１５０、検体保存装置１７０、及び入出力装置１８０を接続する。
【００３５】
検体保存装置１７０は、ＨＤＤなどの記憶媒体から構成され、解析中の検体１０を保存する。
【００３６】
入出力装置１８０はシステム管理装置１００に対して、管理者によるデータの入力、及びシステム管理装置１００内のデータの出力を行うための装置である。入出力装置の一例としては、キーボードやマウス、ディスプレイがある。具体的な入出力内容については後述する。
【００３７】
図３は、システム管理装置１００の機能的な構成、及び物理的な各装置との関係を示す図である。システム管理装置１００の装置本体１１０に含まれるＣＰＵ１２０は、解析管理部１２１を含んで構成される。解析管理部１２１の機能は、ＣＰＵ１２０による、システム管理プログラム１３１の実行によって具現化される。
【００３８】
解析管理部１２１は、検体１０の解析状況を管理するとともに、検体実行装置２００に、解析シナリオ２０を送信し、検体実行方法を指示する。また、活動解析装置３００から解析結果７０を受信し、再解析の有無や方法を判断する。詳細については、後述する。
【００３９】
図４は、検体実行装置２００の物理構成を示す図である。検体実行装置２００は、装置本体２１０と、入出力装置２９０から構成される。
【００４０】
装置本体２１０は、ＣＰＵ２２０、メモリ２３０、インタフェイス２４０、インタフェイス２４１、外部記憶装置２５０、バス２６０、タイマー装置２７０、及びイメージ保存装置２８０を備えている。
【００４１】
ＣＰＵ２２０は処理を実行するための演算装置である。メモリ２３０はＣＰＵ２２０で実行する命令のセットが、プログラムとして記述されたデータを含む記憶媒体である。
【００４２】
メモリ２３０には、検体実行プログラム２３１、活動記録プログラム２３２、時計プログラム２３３、及び時間経過速度変更プログラム２３４が含まれている。検体実行プログラム２３１がＣＰＵ２２０で実行されることによって、時間経過速度３０を調整しながら、検体１０を実行する。活動記録プログラム２３２がＣＰＵ２２０で実行されることで、検体１０の活動記録６０を取得する。また、時計プログラム２３３は、ＣＰＵ２２０で実行されることで、検体１０、検体実行プログラム２３１、及び活動記録プログラム２３２に対して、検体実行装置２００における時刻情報を提供する。また、時間経過プログラム２３４は、ＣＰＵ２２０で実行されることで、時間経過速度３０を変更する。各プログラムの具体的な管理手順については後述する。
【００４３】
インタフェイス２４０は、検体実行装置２００を通信ネットワーク５００と接続するための通信装置である。ＬＡＮカードなどの通信機器がこれに対応する。インタフェイス２４０は、図中においてＩＦと記述することがある。同様に、インタフェイス２４１は、検体実行装置２００を通信ネットワーク６００と接続するための通信装置である。
【００４４】
外部記憶装置２５０は、ＨＤＤなどの記憶媒体から構成され、記録ルールＤＢ２５１を記憶する。記録ルールＤＢには、活動記録プログラム２３２が、検体１０のどのような活動を記録するのかを示す情報が記述されている。ＤＢの具体的内容については後述する。
【００４５】
バス２６０は、ＣＰＵ２２０、メモリ２３０、ＩＦ２４０、外部記憶装置２５０、タイマー装置２７０、イメージ保存装置２８０、及び入出力装置２９０を接続する。
【００４６】
タイマー装置２７０は、一定周期で振動する素子を含んでいるハードウェアであり、観測される振動数を基に時間経過を測定する。そして、一定時間が経過するごとにＣＰＵ２２０に対して信号を送信する。ＣＰＵ２２０は信号を受信することで、時間経過を知ることができる。タイマー装置２７０の詳細については後述する。
【００４７】
イメージ保存装置２８０は、ＨＤＤなどの記憶媒体から構成され、実行環境イメージ２８１を記憶する。実行環境イメージ２８１は、一般的なオペレーティングシステムの構成情報を含んでいるファイルであり、ＣＰＵ２２０上で検体１０が実行されると、検体１０を実行するためのソフトウェア環境を提供する。また、イメージ保存装置２８０には、検体１０が実行中に作成又は変更したファイルやレジストリに関する情報が、一時的に保存される。
【００４８】
入出力装置２９０は、検体実行装置２００に対して、管理者によるデータの入力、及び検体実行装置２００内のデータの出力を行うための装置である。入出力装置の一例としては、キーボードやマウス、ディスプレイがある。具体的な入出力内容については後述する。
【００４９】
図５は、検体実行装置２００の機能的な構成、及び物理的な各装置との関係を示す図である。検体実行装置２００の装置本体２１０に含まれるＣＰＵ２２０は、検体実行部２２１、活動記録部２２２、時計部２２３、時間経過速度変更部２２４を含んで構成される。検体実行部２２１の機能は、ＣＰＵ２２０による、検体実行プログラム２３１の実行によって具現化される。活動記録部２２２の機能は、ＣＰＵ２２０による、活動記録プログラム２３２の実行によって具現化される。時計部２２３の機能は、ＣＰＵ２２０による、時計プログラム２３３の実行によって具現化される。時間経過速度変更部２２４の機能は、ＣＰＵ２２０による。時間経過速度変更プログラム２３４の実行によって具現化される。
【００５０】
検体実行部２２１は、システム管理装置１００から受信した検体１０を、解析シナリオ２０に従って実行する。この際に、タイマー装置２７０にアクセスし、時間経過速度３０の調整を行う。詳細については後述する。
【００５１】
活動記録部２２２は、検体実行部２２１により実行される検体１０の活動を記録し、活動記録６０として、活動解析装置３００に送信する。詳細については後述する。
【００５２】
時計部２２３は、タイマー装置２７０からの信号を、バス２６０を介して受信し、検体実行装置２００における現在時刻を決定する。現在時刻を決定する手順の詳細については後述する。また、検体１０は、時計装置２２３を参照することで、現在時刻を把握する。例えば、検体１０が、２０１０年１２月３１日0時0分0秒に特定の活動を開始するようにプログラムされている場合、時計部２２３における時刻が２０１０年１２月３１日0時０分０秒になった時に、活動を開始する。
【００５３】
時間経過速度変更部２２４は、通信監視装置４００から受信した時間経過速度変更命令８０を基に、時間経過速度３０を変更する。詳細については後述する。
【００５４】
図６に、タイマー装置２７０の物理構成を示す。タイマー装置２７０は、発振器２７１、カウンタレジスタ２７２、カウンタ最大値レジスタ２７３、及びバス２７４から構成される。
【００５５】
発振器２７１は、水晶など、一定周期で振動する（パルスを発生する）特性を持つ素子である。発振器２７１は、振動の度に、バス２７４を介して、カウンタレジスタ２７２に信号を与える。たとえば、振動周期が１Ｍ（＝１００００００）Ｈｚである発振器の場合、１マイクロ秒に一回の割合で振動し、カウンタレジスタ２７２に信号を与える。
【００５６】
カウンタレジスタ２７２は、一定桁数の数値を記憶することができる素子である。カウンタレジスタ２７２は、発振器２７１から信号を受け取ると、記憶している値に＋１を加算する。カウンタレジスタ２７２は、その値に＋１が加算される度に、バス２７４を介して、カウンタ最大レジスタ２７３に記憶された値と比較する。そして、カウンタレジスタ２７２の値がカウンタ最大値レジスタ２７３内の値と同じになった場合、バス２６０を介して、ＣＰＵ２２０に信号（クロック信号）を送信する。クロック信号の送信後、カウンタレジスタ２７２の値は０にリセットされる。
【００５７】
カウンタ最大値レジスタ２７３には、特定の値が格納されている素子であり、前述の通り、カウンタレジスタ２７２内の値と比較される。
【００５８】
例として、発振器２７１の振動周期が１ＭＨzで、カウンタ最大値レジスタ２７３の値が１００００である場合、１秒間に１００（＝１Ｍ／１００００）回、カウンタレジスタ２７２の値はカウンタ最大レジスタ２７３の値と等しくなり、クロック信号がＣＰＵ２２０に送信される。
【００５９】
また、タイマー装置２７０の構成として、カウンタレジスタ２７２の値を、発振器２７１の振動の度に、＋１加算するのではなく、特定の値だけ加算してもよい。また、+１よりも大きな値を加算する場合は、加算される値が大きくなるほど、クロック信号がＣＰＵ２２０に送信される期間が短くなる。たとえば、発振器２７１の振動周期が１ＭＨz、カウンタ最大値レジスタ２７３の値が１００００の場合、カウンタレジスタ２７２の加算値が＋２であれば、１秒間に５０回のクロック信号が発生する。
【００６０】
以上に述べた、発信器のパルスとＣＰＵへのクロックとの対応関係を図示したものを図２６Ａ及び図２６Ｂに示す。図２６Ａ及び２６Ｂでは、カウンタ加算値をα、カウンタ最大値をβとして、αとβの組合せを変えたものを図示している。図２６Ａは、カウンタ加算値αをα＝１に固定し、カウンタ最大値βを可変した時の対応関係を示す。図２６Ｂは、カウンタ最大値βをβ＝４に固定し、カウンタ加算値αを可変した時の対応関係を示す。図２６に示した傾きの異なるいくつかの破線は、図中の階段関数の抱落線(envelope)であり、パルス（Ｔｐ）とクロック（Ｔｃ）との対応関係Ｔｃ＝（α／β）Ｔｐを示す。但し、α≦βであり、αとβとの比で対応関係が決まり、この比率を変えることでクロックの「高速化」又は「低速化」が実現できる。従って、図２６Ａのβ＝２と図２６Ｂのα＝２の対応関係は同じ（いずれも２パルス増加すると１クロック増加する）。
【００６１】
また、カウンタレジスタ２７２の値を減算することによってクロックを発生させる場合、カウンタレジスタ２７２の値が０になる度に、信号を送信する。そして、信号送信後に、カウンタレジスタ２７２の値は、カウンタ最大値レジスタ２７３の値にリセットされる。また、処理の進行を停止させる際には、タイマー装置２７０のカウント処理を停止させる。
【００６２】
以上で述べた、発信器のパルスとＣＰＵへのクロックとの対応関係における各種設定モードを図示したものを図２７に示す。即ち、プログラムの通常動作時の対応関係である「通常」、発信器のパルスよりもクロックを早く進行させる「高速化」、タイマー動作を停止させて処理の進行を停止する「停止」、クロックの値を所定の値に変更して処理の進行を不連続に変更する「設定変更」、及び、発信器のパルスよりもクロックを遅く進行させる「低速化」の各設定モードが指定される。
【００６３】
バス２６０は、発振器２７１、カウンタレジスタ２７２、カウンタ最大値レジスタ２７３を接続する。
【００６４】
図７は、活動解析装置３００の物理構成を示す図である。活動解析装置３００は、装置本体３１０と、入出力装置３７０から構成される。
【００６５】
装置本体３１０は、ＣＰＵ３２０、メモリ３３０、インタフェイス３４０、外部記憶装置３５０、及びバス３６０を備えている。
【００６６】
ＣＰＵ３２０は処理を実行するための演算装置である。メモリ３３０はＣＰＵ３２０で実行する命令のセットがプログラムとして記述されたデータを含む記憶媒体である。
【００６７】
メモリ３３０には、活動解析プログラム３３１が含まれている。そして、この活動解析プログラム３３１がＣＰＵ３２０で実行されることによって、活動記録６０の解析が行なわれる。具体的な解析手順については後述する。
【００６８】
インタフェイス３４０は、活動解析装置３００を通信ネットワーク５００と接続するための通信装置である。ＬＡＮカードなどの通信機器がこれに対応する。インタフェイス３４０は、図中においてＩＦと記述することがある。
【００６９】
外部記憶装置３５０は、ＨＤＤなどの記憶媒体から構成され、解析ルールＤＢ３５１を記憶する。これらのＤＢの具体的内容については後述する。
【００７０】
バス３６０は、ＣＰＵ３２０、メモリ３３０、ＩＦ３４０、外部記憶装置３５０、及び入出力装置３７０を接続する。
【００７１】
入出力装置３７０は、活動解析装置３００に対して、管理者によるデータの入力、及びシステム管理装置１００内のデータの出力を行うための装置である。入出力装置の一例としては、キーボードやマウス、ディスプレイがある。具体的な入出力内容については後述する。
【００７２】
図８は、システム管理装置３００の機能的な構成、及び物理的な各装置との関係を示す図である。システム管理装置３００の装置本体３１０に含まれるＣＰＵ３２０は、活動解析部３２１を含んで構成される。活動解析部３２１の機能は、ＣＰＵ３２０による、活動解析プログラム３３１の実行によって具現化される。
【００７３】
活動解析部３２１は、検体事項装置２００が作成した活動記録６０の内容を解析して、検体１０の解析結果７０を出力する。詳細については、後述する。
図９は、通信監視装置４００の物理構成を示す図である。通信監視装置４００は、装置本体４１０と、入出力装置４９０から構成される。
【００７４】
装置本体４１０は、ＣＰＵ４２０、メモリ４３０、インタフェイス４４０、インタフェイス４４１、外部記憶装置４５０、バス４６０を備えている。
【００７５】
ＣＰＵ４２０は処理を実行するための演算装置である。メモリ４３０はＣＰＵ４２０で実行する命令のセットがプログラムとして記述されたデータを含む記憶媒体である。
【００７６】
メモリ４３０には、通信監視プログラム４３１が含まれている。通信監視プログラム４３１がＣＰＵ４２０で実行されることによって、検体実行装置２００と検体通信先端末７８００とのＴＣＰ通信がタイムアウトしないような、時間経過速度を演算し、演算の結果を検体実行装置２００に入力する。通信監視プログラム４４１の具体的な手順については後述する。
【００７７】
インタフェイス４４０は、通信監視装置４００を通信ネットワーク５００と接続するための通信装置である。ＬＡＮカードなどの通信機器がこれに対応する。インタフェイス２４０は、図中においてＩＦと記述することがある。同様に、インタフェイス２４１は、通信監視装置４００を通信ネットワーク９００と接続するための通信装置である。
【００７８】
外部記憶装置４５０は、ＨＤＤなどの記憶媒体から構成され、時間経過速度ＤＢ４５１を記憶する。時間経過速度ＤＢ４５１には、検体１０のＴＣＰ通信に関する情報が記録されている。ＤＢの具体的内容については後述する。
【００７９】
バス４６０は、ＣＰＵ４２０、メモリ４３０、ＩＦ４４０、外部記憶装置４５０、及び入出力装置４９０を接続する。
【００８０】
入出力装置４９０は通信監視装置４００に対して、管理者によるデータの入力、及び通信監視装置４００内のデータの出力を行うための装置である。入出力装置の一例としては、キーボードやマウス、ディスプレイがある。具体的な入出力内容については後述する。
【００８１】
図１０は、通信監視装置４００の機能的な構成、及び物理的な各装置との関係を示す図である。通信監視装置４００の装置本体４１０に含まれるＣＰＵ４２０は、通信監視部４２１を含んで構成される。通信監視部４２１の機能は、ＣＰＵ４２０による、通信監視プログラム４３１の実行によって具現化される。
【００８２】
通信監視部４２１は、検体１０と検体通信先端末８００間のＴＣＰ通信に含まれるパケットを分析し、ＴＣＰ通信にタイムアウトを発生させない時間経過速度を算出し、算出の結果を時間経過速度変更命令７０として、検体実行装置２００に入力する。詳細については後述する。
【００８３】
（処理の説明）
図１１以降に、本システムに含まれるＤＢの構成例及び各機能部のフローチャートを示す。
【００８４】
図１１以降の構成例は、以下の手順で検体１０の解析が行われたことを想定している。
【００８５】
２０１１／９／１５  １７：００：００に、解析管理装置１００が、検体１０の解析を開始する。解析では、検体実行装置２００に対して、２０１２／１／１  ００：００：００から２０１２／１／２  ２３：５９：５９までの４８時間の期間の処理を、実時間の７２倍速の時間経過速度で、検体Ａ（に対する処理）を実行するように指示する。即ち、４８時間の期間の処理を４０分（４８／７２＝２／３時間）で実行する。実行完了後、活動記録を、活動解析装置３００が解析し、解析結果を出力する。解析結果を参照すると、再解析が必要な期間があったため、解析管理装置１００は、検体１０の再解析を行う。再解析では、検体実行装置２００に対して、２０１２／１／１  １１：５５：００から２０１２／１／１  １２：００：０５までの期間と、２０１２／１／２  １１：５５：００から２０１２／１／２  １２：００：０５までの期間、前回と同じ時間経過速度（７２倍速）で検体Ａを実行するように指示する。再解析は成功し、3回目の解析は必要ないと判断されたため、検体Ａに対する解析は完了する。
【００８６】
（各種テーブル）
図１１は、解析シナリオＤＢ１５１の構成を示す図である。解析シナリオＤＢ１５１内の各レコードは、ある検体に対する、検体解析の方法や解析状況を記憶する。各レコードは、システム管理装置１００が解析シナリオ（２０）を決定した時点で、解析シナリオＤＢ１５１内に保存される。
【００８７】
解析管理ＩＤ５０１は、解析シナリオＤＢ１５１内の各レコードを一意に認識するのに用いられる。このため、各解析管理ＩＤ５０１の値は、解析シナリオＤＢ１５１内でユニークである。
【００８８】
レコード作成時刻１００２は、各レコードが作成された時刻を示す。レコード作成時刻１００２には、システム管理装置１００内の時刻が適用される。
【００８９】
検体ＩＤ５０３は、本システムで解析される各検体を一意に識別するための番号である。異なるレコードに同一の検体ＩＤ１００３が設定されている場合、同一検体が複数回、異なる条件で解析されていることを意味する。
【００９０】
解析開始時刻１００４（４０）は、検体実行装置２００が検体１０の実行を開始する時刻を、検体実行装置２００内の時刻で示す。このため、レコード作成時刻１００２とは大きく異なる値が入力される場合がある。解析終了時刻１００５（５０）は、検体実行装置２００が検体１０の実行を終了する時刻を、検体実行装置２００内の時刻で示す。このため、レコード作成時刻１００２とは大きく異なる値が入力される場合がある。
【００９１】
時間経過速度１００６（３０）は、検体１０の実行を行う検体実行装置２００内のタイマー装置２７０が管理する時間の経過速度を、通常の時間経過速度の倍率として表現している。時間経過速度１００６は、正数を取る。たとえば、時間経過速度１００６＝１０倍速である場合、通常の時間の流れで１秒が経過する間に、タイマー装置２７０が管理する時間では、１０秒が経過する。同様に、時間経過速度１００６＝０．１倍速である場合、通常の時間の流れで１秒が経過する間に、タイマー装置２７０が管理する時間では、０．１秒が経過することになる。なお、シナリオは入力されているが、検体は実行されていない場合は、解析状況１００７には「解析前」が設定される。
【００９２】
本実施例では、検体実行速度１００６の下限値及び上限値、及び粒度（０．１刻みなど）は指定していない。しかし、検体実行装置２００のタイマー装置２７０の性能によっては、下限値または上限値、及び粒度が定まっていてもよい。
【００９３】
解析状況１００７は、当該解析シナリオの実行状況を示す。解析状況１００７が取りうる値としては、「完了」もしくは「解析中」である。「完了」の場合、当該解析シナリオの実行及び解析は完了している。「解析中」の場合、当該解析シナリオは、検体が実行中であるか、実行結果が解析中である。
【００９４】
図１１には、３種類の解析シナリオのレコードの例が示されている。解析管理ＩＤ＝１のレコードは、レコード作成時間は２０１１／９／１５  １７：００であり、解析対象の検体は、検体Ａである。システム管理装置１００は、検体実行装置２００に対して、検体Ａを、２０１２／１／１  ０：００：００から２０１２／１／２  ２３：５９：５９までの４８時間に渡って実行するように指示している。また、時間経過速度１００６としては、７２倍速を指定している。このため、実時間での検体実行時間は、４０分（＝４８／７２＊６０）となる。解析状況１００７は「完了」となっている。
【００９５】
解析管理ＩＤ＝２のレコードは、レコード作成時間は２０１１／９／１５  １７：５０であり、解析対象の検体は、解析ＩＤ＝１のレコードと同様、検体Ａである。システム管理装置１００は、検体実行装置２００に対して、検体Ａを、２０１２／１／１  １１：５５：００から２０１１／１／１  １２：０５：００までの１０分に渡って実行するように指示している。また、時間経過速度１００６としては、７２倍速（＝実時間の経過速度と同じ）を指定している。このため、実時間での検体実行時間は、１０分となる。解析状況１００７は「完了」となっている。
【００９６】
解析管理ＩＤ＝３のレコードは、レコード作製時間は２０１１／９／１５  １７：５０であり、解析対象の検体は、解析ＩＤ＝１のレコードと同様、検体Ａである。システム管理装置１００は、検体実行装置２００に対して、検体Ａを、２０１２／１／２  １１：５５：００から２０１１／１／２  １２：０５：００までの１０分に渡って実行するように指示している。また、時間経過速度１００６としては、７２倍速（＝実時間の経過速度と同じ）を指定している。このため、実時間での検体実行時間は、１０分となる。解析状況５０７は「実行中」となっている。
【００９７】
図１２は、活動記録ＤＢ１５２の構成を示す図である。活動記録ＤＢ１５２には、検体実行装置２００で検体１０が実行されている際に、活動記録部２２２が取得した検体１０の活動記録６０が記録されている。具体的に、検体１０のどのような活動記録を記録するのかについては、後述の記録ルールＤＢ２５１にて指定する。
【００９８】
活動記録ＩＤ１１０１は、活動記録ＤＢ１５２内の各レコードを一意に認識するのに用いられる。このため、活動記録ＩＤ１１０１の値は、活動記録ＤＢ１５２内でユニークである。解析管理ＩＤ１１０２は、活動記録ＤＢ１５２内の各レコードが対応する解析シナリオＤＢ１５１内のレコードの解析管理ＩＤ１００１で指定される。すなわち、当該レコードは、解析管理ＩＤ１１０２で指定される解析シナリオを実行中に記録された検体１０の活動記録である。
【００９９】
活動記録時刻１１０３は、各レコードが記録された時刻を、検体実行装置２００内の時刻として記録する。このため、実時間とは大きく異なる場合がある。
【０１００】
活動種類１１０４は、どのような種類の活動を記録したかを示す。図１１では、例として「ＩＰ（Internet Protocol）パケット」と「デスクトップ画像」を示している。「ＩＰパケット」は、検体１０が送受信したＩＰパケットを意味する。「デスクトップ画像」は、入出力装置２９０に表示される、検体１０を含む実行環境が描画した画像を意味する。そのほかの、活動種類１１０４の変更例としては、検体１０が呼び出した「関数」や、検体１０が実行中に作成された「作成ファイル」や「作成レジストリ」等がある。
【０１０１】
活動データ１１０５は、実際に記録されたデータを意味する。活動種類１１０４が「ＩＰパケット」の場合、対応する活動データ１１０５は、ＩＰパケットのバイナリデータとなる。活動種類１１０４が「デスクトップ画像」の場合、対応する活動データ１１０５は、デスクトップ画像の画像データとなる。
【０１０２】
図１２には、活動記録ＤＢ１５２のレコードの例が６種類示されている。活動記録ＩＤ１１０１＝１であるレコードは、解析管理ＩＤ１１０２＝１の実行時に取得された活動記録である。活動記録時刻１１０３は２０１１／０１／０１  １２：００：００であり、活動種類１１０４は、「ＩＰパケット」、活動データ１１０５は「ＡＡＡＡＡ．．．」である。
【０１０３】
活動記録ＩＤ１１０１＝２であるレコードは、先述同様、解析管理ＩＤ１１０２＝１の実行時に取得された活動記録である。活動記録時刻１１０３は２０１１／０１／０１  １８：００：００であり、活動種類１１０４は、「デスクトップ画像」、活動データ１１０５は「ＢＢＢＢＢ．．．」である。
【０１０４】
活動記録ＩＤ１１０１＝３であるレコードは、先述同様、解析管理ＩＤ１１０２＝１の実行時に取得された活動記録である。活動記録時刻１１０３は２０１１／０１／０２  １２：００：００であり、活動種類１１０４は、「ＩＰパケット」、活動データ１１０５は「ＣＣＣＣＣ．．．」である。
【０１０５】
活動記録ＩＤ１１０１＝４であるレコードは、先述同様、解析管理ＩＤ１１０２＝１の実行時に取得された活動記録である。活動記録時刻１１０３は２０１１／０１／０２  １８：００：００であり、活動種類１１０４は、「デスクトップ画像」、活動データ１１０５は「ＤＤＤＤＤ．．．」である。
【０１０６】
活動記録ＩＤ１１０１＝５であるレコードは、解析管理ＩＤ１１０２＝２の実行時に取得された活動記録である。活動記録時刻１１０３は２０１１／０１／０１  １２：００：００であり、活動種類１１０４は、「ＩＰパケット」、活動データ１１０５は「ＥＥＥＥＥ．．．」である。
【０１０７】
活動記録ＩＤ１１０１＝６であるレコードは、解析管理ＩＤ１１０２＝３の実行時に取得された活動記録である。活動記録時刻１１０３は２０１１／０１／０２  １２：００：００であり、活動種類１１０４は、「ＩＰパケット」、活動データ１１０５は「ＦＦＦＦＦ．．．」である。
【０１０８】
図１３は、解析結果ＤＢ１５３の構成を示す図である。解析結果ＤＢ１５３は、活動解析装置３００が作成した解析結果７０を保存する。各レコードは、活動解析装置３００の解析の結果明らかになった、検体１０が行った活動の内容、及び活動時間を示す。
【０１０９】
解析は、活動記録ＤＢ１５２を基に行われるが、活動記録ＤＢ１５２内のレコードと解析結果ＤＢ１５３内のレコードは、一対一に対応する必要はない。例えば、１つの活動記録レコードから、複数の解析結果レコードが作成される場合もあれば、複数の解析結果レコードから、１つの解析結果レコードが作成される場合もある。
【０１１０】
解析結果ＩＤ１２０１は、解析結果ＤＢ１５３内の各レコードを一意に認識するのに用いられる。このため、解析結果ＩＤ１２０１の値は、解析結果ＤＢ１５３内でユニークである。解析管理ＩＤ１２０２は、解析結果ＤＢ１５２内の各レコードが対応する解析シナリオＤＢ１５１内のレコードを、解析管理ＩＤ５０１で指定する。すなわち、当該レコードは、解析管理ＩＤ１２０２で指定される解析シナリオを実行中に作成された活動記録を解析した結果となる。
【０１１１】
レコード作成時刻１２０３には、当該レコードが作成された時刻が、活動解析装置３００内の時刻で記録される。活動開始時刻１２０４には、当該レコードが示す活動が開始された時刻が、検体１０の実行時の検体実行装置２００内の時刻で記録される。このため、活動開始時刻１２０４は、実時間とは大きく異なる場合がある。活動終了時刻１２０５には、当該レコードが示す活動が終了された時刻が、検体１０の実行時の検体実行装置２００内の時刻で記録される。このため、活動終了時刻１２０５は、実時間とは大きく異なる場合がある。
【０１１２】
活動内容１２０６は、解析の結果、明らかになった、検体１０の活動内容を示す。検体属性１２０７は、活動内容１２０６に基づいて明らかになった、検体１０の属性、すなわち、検体１０が、どのようなマルウェアのグループに分類されるのかを示す。活動内容１２０６から、検体属性１２０７を決定できない場合は、「不明」が記録される。予め用意した、マルウェアの活動内容の特徴に応じてマルウェアをグループに分類した情報に基づいて、検体属性１２０７が設定される。
【０１１３】
解析成否１２０８は、当該レコードが示す解析が成功したか否かを示す。解析が成功した場合は「成功」が、解析が失敗した場合は、「失敗」が記述される。解析の成否は、活動内容１２０６に基づき、検体属性１２０７を決定できたか否か、などにより決定される。後述のように、解析成否１２０８が「失敗」の場合、システム管理装置１００は、解析シナリオを変えて、再解析を行う場合がある。解析の「成功」とは、活動内容１２０６及び検体属性１２０７が明らかになった場合である。
【０１１４】
図１３には、解析結果ＤＢ１５３のレコードの例が６種類示されている。
【０１１５】
解析結果ＩＤ７０１＝１のレコードは、解析管理ＩＤ７０２＝１である解析シナリオの結果作成されたレコードである。レコードの作成時刻は、２０１１／０９／１５  １７：４０：０８である。当該レコードの解析内容７０６によると、２０１１／１／１  １２：００：００から２０１１／１／１  １２：００：００の間に、検体実行装置２００のＩＰアドレス（１２７．０．０．１）から、ＩＰアドレスが１９２．１６８．０．１である別の端末のＴＣＰ（Transfer Control Protocol）の８０番ポートに対して、外部とのやり取りを行なう機能を有するコンピュータウイルスである「ボット」という種類のマルウェアが「Ｃ＆Ｃ通信」を行っている。このため、検体属性１２０７は、「ボット」となっており、解析成否１２０８は「成功」となる。
【０１１６】
解析結果ＩＤ１２０１＝２のレコードは、解析管理ＩＤ１２０２＝１である解析シナリオの結果作成されたレコードである。レコードの作成時刻は、２０１１／０９／１５  １７：４０：０８である。当該レコードの解析内容７０６によると、２０１１／１／１  １８：００：００から２０１１／１／１  １８：０１：００の間に、ユーザに対して入金を要求するダイアログを表示する。これは、「偽アンチウイルスソフト」というマルウェアに固有の活動である。このため、検体属性１２０７は、「偽アンチウイルスソフト」となり、解析成否１２０８は「成功」となる。
【０１１７】
解析結果ＩＤ１２０１＝３のレコードは、解析管理ＩＤ１２０１＝１である解析シナリオの結果作成されたレコードである。レコードの作成時刻は、２０１１／０９／１５  １７：４０：０８である。当該レコードの活動内容１２０６によると、２０１１／１／２  １２：００：００から２０１１／１／２  １２：００：００の間に、検体実行装置２００のＩＰアドレス（１２７．０．０．１）から、ＩＰアドレスが１９２．１６８．０．２である別の端末のＴＣＰの８０番ポートに対して、外部とのやり取りを行なう機能を有するコンピュータウイルスである「ボット」という種類のマルウェアが「Ｃ＆Ｃ通信」を行っている。このため、検体属性１２０７は、「ボット」となっており、解析成否１２０８は「成功」となる。
【０１１８】
解析結果ＩＤ１２０１＝４のレコードは、解析管理ＩＤ１２０２＝１である解析シナリオの結果作成されたレコードである。レコードの作成時刻は、２０１１／０９／１５  １７：４０：０８である。当該レコードの活動内容１２０６によると、２０１１／１／２  １８：００：００から２０１１／１／２  １８：０１：００の間に、ユーザに対して入金を要求するダイアログを表示する。このため、検体属性１２０７は、「偽アンチウイルスソフト」となり、解析成否１２０８は「成功」となる。
【０１１９】
解析結果ＩＤ１２０１＝５のレコードは、解析管理ＩＤ１２０２＝２である解析シナリオの結果作成されたレコードである。レコードの作成時刻は、２０１１／０９／１５  １８：００：０８である。当該レコードの活動内容１２０６によると、２０１１／１／１  １２：００：００から２０１１／１／１  １２：０１：００の間に、検体実行装置２００のＩＰアドレス（１２７．０．０．１）から、ＩＰアドレスが１９２．１６８．０．１である別の端末のＴＣＰの８０番ポートに対して、外部とのやり取りを行なう機能を有するコンピュータウイルスである「ボット」という種類のマルウェアが「Ｃ＆Ｃ通信」を行っている。このため、検体属性１２０７は、「ボット」となっており、解析成否１２０８は「成功」となる。
【０１２０】
解析結果ＩＤ１２０１＝６のレコードは、解析管理ＩＤ１２０２＝３である解析シナリオの結果作成されたレコードである。レコードの作成時刻は、２０１１／０９／１５  １８：００：０８である。当該レコードの活動内容１２０６によると、２０１１／１／２  １２：００：００から２０１１／１／２  １２：０１：００の間に、検体実行装置２００のＩＰアドレス（１２７．０．０．１）から、ＩＰアドレスが１９２．１６８．０．１である別の端末のＴＣＰの８０番ポートに対して「Ｃ＆Ｃ通信」を行っている。このため、検体属性１２０７は、「ボット」となっており、解析成否１２０８は「成功」となる。
【０１２１】
図１４は、再解析ルールＤＢ１５４の構成を示す図である。再解析ルールＤＢ１５４は、システム管理装置１００が、解析結果ＤＢ１５３の内容を踏まえ、検体１０の再解析を行う必要があるかどうかを判断するのに用いられる。各レコードは、解析結果ＤＢ１５３のレコードが満たすべき条件と、条件が満たされた場合の再解析の有無、の対応により構成される。
【０１２２】
再解析ルールＩＤ１３０１は、各レコードを一意に識別するのに用いられる。このため、再解析ルールＩＤ１３０１の値は、再解析ルールＤＢ１５４の中でユニークである。
【０１２３】
解析結果条件１３０２は、再解析ルールを適用する上で、解析結果ＤＢ１５３のレコードが満たすべき条件が示されている。条件１３０２は、解析結果ＤＢ１５３のレコードの各カラム、及び当該レコードから参照される解析シナリオＤＢ１５１のレコードの各カラムを用いた論理式として表現される。
【０１２４】
再解析判定１３０３は、解析結果ＤＢ１５３のレコードが解析結果条件８０２を満たした場合に、再解析を行うかどうかの判定結果を定義する。再解析判定８０３の値は「必要」又は「不必要」の２値をとる。「必要」の場合、再解析は行われることになる。「不必要」の場合、再解析は行われない。
【０１２５】
再解析シナリオ１３０４は、再解析判定１３０３が「必要」の場合、新たに作成する解析シナリオ２０を再度決定するためのシナリオの修正内容である。具体的には、解析結果ＤＢ１５３のレコードの値を参照しながら、再解析シナリオ１３０４に基づいて解析シナリオが修正され、新たに追加される解析シナリオＤＢ１５１レコードの各カラムが取るべき値を決定する。なお、再解析判定１３０３が「不要」であるレコードについては、再解析シナリオ１３０４は空白となる。
【０１２６】
図１３には、再解析ルールＤＢ１５４のレコードの例が４種類示されている。
【０１２７】
再解析ルールＩＤ＝１のレコードは、解析結果条件１３０２が、解析成否１２０８＝“失敗”で、且つ、時間経過速度１００６が一倍速より大きい場合に適用される。再解析判定１３０３が「必要」のため、再解析が行われる。再解析シナリオ１３０４では、時間経過速度１００６を一倍速に、解析開始時刻１００４が活動開始時刻７０４の値−５分に、解析終了時刻１００５が活動終了時刻１２０５の値＋５分となるように、解析シナリオ２０を修正することを指定する。
【０１２８】
再解析ルールＩＤ＝２のレコードは、解析結果条件１３０２が、解析成否１２０８＝“成功”で、且つ、解析の際に。2件以上の新規ＩＰアドレスとのＢＯＴ通信が観測された場合に適用される。再解析判定１３０３が「必要」のため、再解析が行われる。再解析シナリオ１３０４では、時間経過速度１００６は現在の解析と同等であり、解析開始時刻１００４が活動開始時刻７０４の値−５分に、解析終了時刻１００５が活動終了時刻１２０５の値＋５分となるように、解析シナリオ２０を修正することを指定する。例えば、図13の解析管理ＩＤ１２０２＝１の場合では、解析結果ＩＤ１２０１＝１及び３に対応する、１９２．１６８．０．１、及び１９２．１６８．０．２という2種類のＩＰアドレスとのＢＯＴ通信が発生するため、解析結果条件１３０２を満たすこととなる。
【０１２９】
再解析ルールＩＤ＝３のレコードは、解析結果条件１３０２が、解析成否１２０８＝“失敗”で、且つ、時間経過速度１００６が一倍速以下の場合に適用される。この場合、再解析判定１３０３が「不要」のため、再解析は行われない。よって、再解析シナリオ１３０４は空白となる。
【０１３０】
再解析ルールＩＤ＝４のレコードは、解析結果条件１３０２が、解析成否１２０８＝“成功”の場合に適応される。この場合、再解析判定１３０３が「不要」のため、再解析は行われない。よって、再解析シナリオ１３０４は空白となる。
【０１３１】
図１５は、記録ルールＤＢ２５１の構成を示す図である。記録ルールＤＢ２５１は、活動記録部２２２が、検体１０の活動のうち、どれを記録するのかを決定する。
【０１３２】
記録ルールＩＤ１４０１は、記録ルールＤＢ２５１の各レコードを一意に識別するのに用いられる。このため、記録ルールＩＤ１４０１の値は、記録ルールＤＢ２５１の中でユニークである。
【０１３３】
記録条件１４０２は、検体１０の活動がどのような条件を満たしたときに、活動を記録するのかを指定する。記録内容１４０３は、具体的に記録する情報の内容を指定する。活動記録部２２２は、検体１０が記録条件１４０２に当てはまる活動をしているか判断できる機能と、記録内容１４０３で指定する情報を記録できる機能を、有しているものとする。
【０１３４】
図１５には、記憶ルールＤＢ２５１のレコードの例が２種類示されている。
【０１３５】
記憶ルールＩＤ１４０１＝１のレコードは、記録条件１４０２が「パケット送信時」のときに、記録内容１４０３に示されるように「パケット内データ」を記録する。具体的には、活動記録部２５２は、ＩＦ２４０を観測することで、記録条件１４０２を満たす活動を観測できる。さらに、ＩＦ２４０からパケットデータを取得することで、記録条件１４０３に示す情報を取得することができる。
【０１３６】
記憶ルールＩＤ１４０１＝２のレコードは、記録条件１４０２が「デスクトップ画面更新時」のときに、記録内容１４０３に示されるように「デスクトップ画面の画像」を記録する。具体的には、活動記録部２２２は、入出力装置２９０を観測することで、記録条件９０２を満たす活動を観測できる。さらに、入出力装置２９０から画像データを取得することで、記録内容９０３に示す情報を取得することができる。
【０１３７】
また、図１５には示されていない、その他の例として、検体１０が実行されるメモリ２３０を監視することで、検体１０の特定の関数からの呼び出しを観測し、関数に渡された引数や関数の実行結果を記録することができる。また、イメージ保存装置２８０を監視することで、検体１０が作成又は変更したファイルやレジストリの情報を観測して取得することができる。
【０１３８】
図１６は、解析ルールＤＢ３５１の構成を示す図である。活動解析部３２１は、解析ルールＤＢ３５１内のレコードを読み込み、解析ルールＤＢ３５１内のレコードで指定された解析を行う。
【０１３９】
解析ルールＩＤ１５０１は、解析ルールＤＢ３５１の各レコードを一意に識別するのに用いられる。このため、解析ルールＩＤ１５０１の値は、解析ルールＤＢ３５１の中でユニークである。解析内容１５０２は、具体的な解析方法が記述されている。
【０１４０】
図１６には、解析ルールＤＢ３５１のレコードの例が３種類示されている。
【０１４１】
解析ルールＩＤ１５０１＝１のレコードは、解析ルールＤＢ３５１内のレコードに示されるＴＣＰ通信内に、特定文字列（ＰＯＮＧ、ＪＯＩＮ、ＮＩＣＫ等）が有る場合、通信をＩＲＣ(Internet Relay Chat)通信と判定し、検体１０に、ボットの属性があると判断する。また、当該レコードに対する解析結果は、「解析成功」と判定する。
【０１４２】
解析ルールＩＤ１５０１＝２のレコードは、解析ルールＤＢ３５１内のレコードに示される画像から、検体が出力したダイアログ画面を抽出する。抽出されたダイアログが、「ユーザに入金を要求する」ものである場合、検体１０に、偽アンチウイルスソフトの属性があると判断する。 また、当該レコードに対する解析結果は、「解析成功」と判定する。
【０１４３】
解析ルールＩＤ１５０１＝３のレコードは、時間経過速度の調整の影響で、ネットワーク接続が正常に行われなかったケースが解析ルールＤＢ３５１内のレコードから発見された場合に、検体１０の属性は不明であると判断する。また、当該レコードに対する解析結果を「解析失敗」と判定する。 
図１７は、時間経過速度ＤＢ４５１の構成を示す図である。通信監視部４２１は、時間経過速度ＤＢ４５１を参照して、ＴＣＰタイムアウトが発生しない時間経過速度を算出する。図１７に示す各レコードには、パケットを受信する度に時間経過速度を算出した結果が格納される。
【０１４４】
タイムアウトとは、ＴＣＰセッションで、検体１０が送信したＴＣＰパケット（以下、送信ＴＣＰパケット）に対する、検体通信先端末８００からの応答ＴＣＰパケットが、ある閾値時間（ＲＴＯ：Retransmission Time Out）以内に受信されない現象である。タイムアウトが発生すると、ＴＣＰパケットの再送信が行われたり、パケット送信が抑制されるため、通信速度の低下や通信の切断が起きる。ある送信ＴＣＰパケットを送信した時間と、対応する応答ＴＣＰパケットを受信した時間の時間差を、往復遅延時間（ＲＴＴ：Round Trip Time）と呼ぶ。
【０１４５】
時間経過速度が１倍速以上に設定されている場合、検体実行装置２００で設定されているＲＴＯが実時間と比べて相対的に短くなるため、タイムアウトが発生しやすくなる。例えば、通常のＲＴＯが６秒と設定されているＯＳが実行されている検体実行装置２００が、時間経過速度＝１０倍で動作する場合、実時間に換算して０．６秒以内に、応答ＴＣＰパケットが到着しない時に、タイムアウトが発生する。このため、通信監視部４２１は、ＴＣＰ通信が発生した場合に、ＲＴＯを超えない範囲で出来るだけ大きな値の時間経過速度を、検体実行装置２００に設定する。通信状況に応じて検体実行装置２００が保持するＲＴＯは変化するため、通信監視部４２１は、検体事項装置２００の現在のＲＴＯ値を推定し、これに基づいて時間経過速度を算出する。
【０１４６】
ＴＣＰでは、ある時点でのＲＴＯの算出方法は様々にあるが、本実施例では、セッション開始後のＲＴＴの移動平均（以下、ＳＲＴＴ(Smoothed RTT)）の２倍、すなわち、ＲＴＯ＝２×ＳＲＴＴで算出されるものとする。また、ＳＲＴＴは、応答ＴＣＰパケットを受信する度に更新される。本実施例では、現在のＳＲＴＴの値がＡ秒で、ＲＴＴがＢ秒である応答ＴＣＰパケットを受信した場合、更新されるＳＲＴＴの値は、Ａ×０．８７５＋Ｂ×０．１２５で求まるものとする。一般には、時刻ｔｎ＋１及びｔｎにおけるＳＲＴＴをそれぞれＳＲＴＴ（ｎ＋１）及びＳＲＴＴ（ｎ）とし、時刻ｔｎにおけるＲＴＴをＲＴＴ（ｎ）とし、予め定めた定数ｋ（移動平均の重み、上記の場合はｋ＝０．８７５＝７／８）とすると、ＳＲＴＴ（ｎ＋１）は、ＳＲＴＴ（ｎ＋１）＝ｋ・ＳＲＴＴ（ｎ）＋（１−ｋ）・ＲＴＴ（ｎ）によって求められる。ＳＲＴＴ（ｎ＋１）を各ＲＴＴ（ｉ）（ｉ＝１〜ｎ）を用いて表すと、ＳＲＴＴ（ｎ＋１）＝ｋｎ・ＳＲＴＴ（１）＋（１−ｋ）（ＲＴＴ（ｎ）＋ｋ・ＲＴＴ（ｎ−１）＋・・・＋ｋｎ−１・ＲＴＴ（１））となり、初期値としてＳＲＴＴ（１）＝０とすると、ＳＲＴＴ（ｎ＋１）＝（１−ｋ）（ＲＴＴ（ｎ）＋ｋ・ＲＴＴ（ｎ−１）＋・・・＋ｋｎ−１・ＲＴＴ（１））となる。これは、現在（ｎ）から過去に向かうほどＲＴＴ（ｉ）に対する重みが指数関数的に小さくなっていくことを示している。即ち、過去のＲＴＴ（ｉ）ほど、移動平均ＳＲＴＴに対する寄与が小さくなっていることを示す。ＲＴＯやＳＲＴＴの算出方法としては、別の式を用いてもよい。
【０１４７】
時間経過速度ＤＢ４５１内の各レコードは、検体１０が送信するＴＣＰパケットごとに追加される。このため、検体１０が複数のＴＣＰセッション（送信元ＩＰアドレス、送信元ポート、送信先ＩＰアドレス、及び送信先ポートの４項目の組み合わせで区別）を行う場合には、実際には、複数のセッションに属するＴＣＰパケットに対応するエントリが時間経過速度ＤＢ４５１に登録される。しかし、通信監視部４２１は、セッション単位で処理を行うため、時間経過速度ＤＢ４５１は、例えば複数のテーブルを使い分けることで、セッションごとにレコードを管理する機能を持つものとする。図１７の例及び以降では、簡単のために、検体１０と検体通信先端末８００間で確立する１つのＴＣＰセッションに着目して説明を行う。検体１０が複数のＴＣＰセッションを確立する場合の処理については図２５で述べる。
【０１４８】
パケットＩＤ１６０１は、あるＴＣＰセッションにおける、送信ＴＣＰパケットを一意に識別するのに用いられる。パケットＩＤ１６０１＝０のレコードはＲＴＯ等の初期値が設定されるが、これについては後述する。セッションの一番初めの送信ＴＣＰパケットは、パケットＩＤ１６０１＝１として記録される。
【０１４９】
最終送信パケット観測時刻１６０２は、該当する送信ＴＣＰパケットの観測時刻を記録する。尚、この時刻は、通信監視装置４２１内の時計で計算されるため、実時間である。
【０１５０】
観測ＲＴＴ１６０３は、該当するＴＣＰパケットが送信されてから、対応する応答ＴＣＰパケットを受信するまでの時間を記録する。尚、この時間は、通信監視装置４２１内の時計で計算されるため、実時間である。
【０１５１】
推定ＲＴＴ１６０４は、検体実行装置２００内の時計でのＲＴＴ値であり、観測ＲＴＴ１６０３に、検体実行装置２００に現在設定されている時間経過速度を掛けることで求めることができる。
【０１５２】
推定ＳＲＴＴ１６０５は、検体実行装置２００内の時計でのＳＲＴＴ値である。本実施例では、パケットＩＤ１６０１＝Ｎのレコードの推定ＳＲＴＴ１６０５は、(パケットＩＤ１６０２＝Ｎ−１のレコードの推定ＳＲＴＴ１６０５の値)×０．８７５＋(パケットＩＤ１６０１＝Ｎのレコードの推定ＲＴＴ１６０４)×０．１２５、で求まる。
【０１５３】
推定ＲＴＯ１６０６は、推定ＳＲＴＴ１６０５を基に求まる、検体実行装置２００内の時計でのＲＴＯ値である。本実施例では、推定ＲＴＯ１６０６の値は、推定ＳＲＴＴ１６０５の値の２倍となる。
【０１５４】
最適時間経過速度１６０７は、現在のセッションの状態において最適な時間経過速度であり、推定ＲＴＯ１６０６及び観測ＲＴＴ１６０３を基に算出する。本実施例では、パケットＩＤ１６０１＝Ｎの応答ＴＣＰパケットを観測した際の最適時間経過速度１６０７は、((パケットＩＤ１６０１＝Ｎの推定ＲＴＯ１６０６)×０．８)／(パケットＩＤ１６０１＝Ｎの観測ＲＴＴ１６０３)、として算出するものとする。パケットＩＤ１６０１＝Ｎ−１以下の、過去の観測ＲＴＴ１６０３を用いて、最適時間経過速度１６０７を算出してもよい。
【０１５５】
他に確立しているセッションが存在しない場合、最適時間経過速度１６０７は、時間経過速度変更命令８０として、検体実行装置２００に送信される。尚、時間経過速度変更命令８０は、ＴＣＰセッション等タイムアウトが発生する可能性がある通信以外の方法で伝達されるため、時間経過速度の値に依らず、検体実行装置２００は、時間経過速度命令８０を正常に受信できるものとする。確立されている他セッションが存在する場合の処理については後述する。以下では、他セッションが存在しない場合について述べる。
【０１５６】
図１７には、時間経過速度ＤＢ４５１のレコードの例が９種類示されている。
【０１５７】
パケットＩＤ１６０１＝０のレコードには、推定ＲＴＯ１６０６の初期値「６秒」及び、時間経過変更速度１６０７の初期値「６秒」、最適時間経過速度１６０７の初期値「１倍速」があらかじめ設定されている。このため、検体１０がＴＣＰセッションを開始するＴＣＰ送信パケットを観測した場合、通信監視装置４００は、時間経過速度＝１倍速である、時間経過速度変更命令８０を、検体実行装置２００に送信する。
【０１５８】
パケットＩＤ１６０１＝１のレコードには、最終送信パケット観測時刻１６０２に「２０１１／０９／１５  １７：４０：０１」、観測ＲＴＴ１６０３に「０．５秒」、推定ＲＴＴ１６０４に「０．５秒」、推定ＳＲＴＴ１６０５に「２．７秒」、推定ＲＴＯ１６０６に「５．４」秒、最適時間経過速度１６０７に「８．６倍速」が設定されている。これは、検体１０の最初のＴＣＰ送信パケットの観測時刻が、「２０１１／０９／１５  １７：４０：０１」であり、その応答ＴＣＰパケットは０．５秒後に届き、時間経過速度＝８．６倍速である時間経過速度変更命令８０が検体実行装置２００に送信されることを意味する。
【０１５９】
同様に、パケットＩＤ１６０１＝２のレコードには、最終送信パケット観測時刻１６０２に「２０１１／０９／１５  １７：４０：０２」、観測ＲＴＴ１６０３に「０．４秒」、推定ＲＴＴ１６０４に「３．４秒」、推定ＳＲＴＴ１６０５に「２．８秒」、推定ＲＴＯ１６０６に「５．６」秒、最適時間経過速度１６０７に「１１．１倍速」が設定されている。これは、検体１０の２番目のＴＣＰ送信パケットの観測時刻が、「２０１１／０９／１５  １７：４０：０２」であり、その応答ＴＣＰパケットは０．４秒後に届き、時間経過速度＝１１．１倍速である時間経過速度変更命令８０が、検体実行装置２００に送信されることを意味する。
【０１６０】
同様に、パケットＩＤ１６０１＝３のレコードには、最終送信パケット観測時刻１６０２に「２０１１／０９／１５  １７：４０：０３」、観測ＲＴＴ１６０３に「０．６秒」、推定ＲＴＴ１６０４に「６．７秒」、推定ＳＲＴＴ１６０５に「３．３秒」、推定ＲＴＯ１６０６に「６．５」秒、最適時間経過速度１６０７に「８．７倍速」が設定されている。これは、検体１０の３番目のＴＣＰ送信パケットの観測時刻が、「２０１１／０９／１５  １７：４０：０３」であり、その応答ＴＣＰパケットは０．６秒後に届き、時間経過速度＝８．７倍速である時間経過速度変更命令８０が検体実行装置２００に送信されることを意味する。
【０１６１】
パケットＩＤ１６０１＝４〜７のレコードについても同様の処理である。
【０１６２】
パケットＩＤ１６０１＝８のレコードは、最終送信パケット観測時刻１６０２が「２０１１／０９／１５  １７：４０：０８」であり、最適時間経過速度１６０７に「ＲＥＳＥＴ」と記されている。これは、確立しているＴＣＰセッションを終了するパケットが検体１０から送信された時に発生する。この場合、時間経過速度＝ＲＥＳＥＴである時間経過速度変更命令８０が検体事項装置２００に送信される。
【０１６３】
（処理手順の詳細）
図１８は、解析管理部１２１で実行される、解析管理部処理のフローチャートである。このフローチャートでは、検体が投入されてから、解析が完了するまでの一連の流れを示している。即ち、図１８は、本実施例における処理概要のフローチャートである。
【０１６４】
処理Ｓ２００１では、検体１０がシステム管理装置１００を通じて、解析管理部１２１に投入される。投入方法としては、ＩＦ１４０を介して別の端末から検体１０を投入してもよいし、入出力装置１８０を介して、投入されてもよい。投入された検体１０は、検体保存装置１７０に保存される。
【０１６５】
処理Ｓ２００２では、解析管理部１２１は、解析シナリオ２０の決定を行う。具体的には、時間経過速度３０、解析開始時刻４０、解析終了時刻５０を決定する。各項目で決定される値は、予め定まった標準値でもよいし、入出力１８０を介して、解析者が、その都度登録してもよい。
【０１６６】
処理Ｓ２００３では、解析管理部１２１は、処理Ｓ２００２で定まった解析シナリオ２０を、解析シナリオＤＢ１５１に保存する。この際、解析管理ＩＤ５０１にはユニークな値が、レコード作成時刻５０２には保存時刻が、解析状況５０７には、「解析中」がそれぞれ登録される。
【０１６７】
処理Ｓ２００４では、ライン１を通じて、検体１０と、１つ以上の解析シナリオ２０が、解析管理部１２１から、検体実行装置２００の検体実行部２２１に送信される。
【０１６８】
処理Ｓ２００５では、解析管理部１２１は、解析結果ＤＢ１５３に新しいレコードが追加されるまで、即ち、活動解析装置３００内の活動解析部３２１による活動解析が完了するまで待機する。解析結果ＤＢ１５３に新しいレコードが追加されたことの通知方法としては、解析結果ＤＢ１５３に、解析管理部１２１に信号を送るような仕組みがあってもよいし、活動解析部３２１から解析管理部１２１に直接通知が送信されるような仕組みがあってもよい。
【０１６９】
処理Ｓ２００６では、解析管理部１２１は、解析結果ＤＢ１５３を読み込み、新しく追加されたレコードを取得する。
【０１７０】
処理Ｓ２００７では、解析管理部１２１は、読み込んだ解析結果ＤＢ１５３を基に、再解析が必要であるかどうかを判定する。基本的な方針としては、再解析ルールＤＢ１５４内のレコードに従い、再解析判定８０３＝「必要」と判断されるような、解析結果ＤＢ１５３のレコードが１つ以上ある場合、再解析が必要であると判断する。また、入出力装置１８０を介して解析結果ＤＢ１５３のレコードを管理者に提示して、最終的な判断を行ってもよい。
【０１７１】
処理Ｓ２００８では、処理Ｓ２００７で、再解析が必要＝「ＹＥＳ」と判断された場合に、解析管理部１２１は、再解析ルールＤＢ１５４内のレコードに従い、解析シナリオの再設定を行う。再設定後、処理はＳ２００３に戻る。
【０１７２】
処理Ｓ２００９では、処理Ｓ２００７で、再解析が必要＝「ＮＯ」と判断された場合に、解析管理部１２１は、解析結果を出力する。出力内容としては、解析シナリオＤＢ１５１と解析結果ＤＢ１５３内のレコードを、入出力装置１８０を通じて管理者に提示してもよいし、ネットワーク５００を介して、別の装置に送信してもよい。
【０１７３】
次に、図１１、図１３、図１４内のレコード例を用いて、図１８で行われる処理の具体例を説明する。
【０１７４】
まず、処理Ｓ２００１では、解析管理部１２１は、検体Ａを取得して、検体保存装置１７０に保存する。処理Ｓ２００２では、検体Ａの解析シナリオとして、時間経過速度３０＝７２倍速、解析開始時刻４０＝２０１２／１／１  ００：００：００、及び解析終了時刻５０＝２０１２／１／２  ２３：５９：５９を決定する。
【０１７５】
処理Ｓ２００３では、決定された解析シナリオを、解析シナリオＤＢ１５１に、解析管理ＩＤ＝１のレコードとして保存する。処理Ｓ２００４では、検体Ａと、解析管理ＩＤ＝１に対応する解析シナリオ２０を、検体実行装置２００に送信する。処理Ｓ２００５では、解析結果ＩＤ７０１＝１、２、３、４である４つのレコードが、解析結果ＤＢ１５３に出力されるまで、待機する。処理Ｓ２００６では、解析結果ＩＤ７０１＝１〜４の解析結果ＤＢ１５３内のレコードを読み込む。
【０１７６】
処理Ｓ２００７では、解析結果ＩＤ１２０１＝１，３の解析結果ＤＢ１５３内のレコードの活動内容１２０６にて、２つの新規ＩＰアドレス１９２．１６８．０．１、及び１９２．１６８．０．２とＢＯＴ通信を行っているため、再解析ルールＤＢ１５４の再解析ルールＩＤ＝２のレコードを基に、再解析が必要＝「ＹＥＳ」と判断される。
【０１７７】
処理Ｓ２００８では、再解析ルールＤＢ１５４に基づき、解析シナリオ２０が再設定される。具体的には、解析結果ＩＤ７０１＝１のレコードに対応する解析シナリオ２０として「時間経過速度３０＝７２倍速、解析開始時刻４０＝２０１２／１／１  １１：５５：００、解析終了時刻５０＝２０１２／１／２  １２：０５：００」が、解析結果ＩＤ＝３のレコードに対応する解析シナリオ２０として、「時間経過速度３０＝１倍速、解析開始時刻４０＝２０１２／１／１  ００：００：００、解析終了時刻５０＝２０１２／１／２  ２３：５９：５９」が再設定される。
【０１７８】
処理は、処理Ｓ２００３に戻り、処理Ｓ２００８で決定された２つの解析シナリオ２０を、解析管理ＩＤ＝２、３のレコードとして、解析シナリオＤＢ１５１に保存する。
【０１７９】
処理Ｓ２００４では、検体Ａと、処理Ｓ２００８で再設定された解析シナリオ２０を、検体実行装置２００に送信する。処理Ｓ２００５では、解析結果ＩＤ１２０１＝５、６である２つのレコードが、解析結果ＤＢ１５３に出力されるまで、待機する。処理Ｓ２００６では、解析結果ＩＤ１２０１＝５，６の解析結果ＤＢ１５３内のレコードを読み込む。
【０１８０】
処理２００７では、解析結果ＩＤ１２０１＝５，６の解析結果ＤＢ１５３内のレコードの活動内容１２０６にて、新しいＩＰアドレスとのＢＯＴ接続が存在しないため、再解析ルールＤＢ１５４の再解析ルールＩＤ１３０３＝４であるレコードを基に、再解析が必要＝「ＮＯ」と判断される。
【０１８１】
処理Ｓ２００９では、解析結果ＤＢ１５３内の解析結果ＩＤ＝２、４、５、６のレコードに従い、「検体Ａは、２０１２／１／１／１８：００、２０２／１／２／１８：００に、ユーザに入金を要求するダイアログを表示するという、偽アンチウイルスソフトに固有の活動を行う。また、２０１２／１／１／１２：００、２０２／１／２／１２：００に、１９２．１６８．０．１の８０番ポートとＣ＆Ｃ通信を行うという、ボットに固有の活動を行う」というメッセージを、入出力装置１８０を介して表示する。
【０１８２】
図１９は、検体実行装置２００の検体実行部２２１で行われる検体実行処理のフローチャートである。
【０１８３】
処理Ｓ２１０１では、検体実行部２２１は、システム管理装置１００の解析管理部１２１から、検体１０及び、１つ以上の解析シナリオ２０を受信する。
【０１８４】
処理Ｓ２１０２では、イメージ保存装置２８０から実行環境イメージ２８１を読み込み、メモリ２３０上に展開し、実行する。
【０１８５】
処理Ｓ２１０３では、解析シナリオ２０の時間経過速度３０に従い、実行環境の時間経過速度を設定する。具体的方法については後述する。
【０１８６】
処理Ｓ２１０４では、検体実行装置２００の時計部２２３にアクセスし、現在時刻を、解析シナリオ２０の解析開始時刻４０に設定する。処理Ｓ２１０５では、処理Ｓ２１０１で受信した検体１０及び活動記録部２２２を起動する。処理Ｓ２１０６では、時計部２２３が示す現在時刻が、解析シナリオ２０の解析終了時刻５０になるまで待機する。
【０１８７】
処理Ｓ２１０７では、処理Ｓ２１０１で受信した全ての解析シナリオ２０について、検体の実行を完了したかどうかをチェックする。処理Ｓ２１０７の結果が「ＹＥＳ」である場合、処理Ｓ２１０８において、検体１０及び活動記録部２２２を停止し、処理を完了する。処理Ｓ２１０７の結果が「ＮＯ」である場合、処理Ｓ２１０２に戻り、実行環境イメージ２８１を再度読み込み、未処理の解析シナリオ２０に従って検体１０を実行する。
【０１８８】
次に、図１１内のレコード例を用いて、図１９で行われる処理の具体例を説明する。
【０１８９】
まず、処理Ｓ２１０１において、検体実行部２２１は、解析シナリオＤＢ１５１の解析管理ＩＤ５０１＝１のレコードに対応する、解析シナリオ２０及び検体Ａを、解析管理部１２１から受信する。
【０１９０】
処理Ｓ２１０２で、検体Ａを実行するための実行環境イメージ２８１を読み込む。処理Ｓ２１０３で、実行環境の時間経過速度を７２倍速に設定する。処理Ｓ２１０４で、時計部２２３の現在時刻を「２０１２／１／１  ００：００：００」に設定する。処理Ｓ２１０５で、検体Ａ及び活動記録部２２２を実行する。処理Ｓ２１０６で、時計部２２３の現在時刻が「２０１２／１／２  ２３：５９：５９」になるまで待機する。
【０１９１】
処理Ｓ２１０７では、全ての解析シナリオ２０の処理が完了しているため、処理Ｓ２１０８で、検体Ａ及び活動記録部２２２を停止する。
【０１９２】
その後、処理Ｓ２１０１において、検体実行部２２１は、解析シナリオＤＢ１５１の解析管理ＩＤ１００１＝２，３のレコードに相当する、２つの解析シナリオ２０及び検体Ａを、解析管理部１２１から受信する。
【０１９３】
処理Ｓ２１０２で、検体Ａを実行するための実行環境イメージ２８１を読み込む。処理Ｓ２１０３で、解析管理ＩＤ１００１＝２のレコードに相当する解析シナリオ２０に従い、実行環境の時間経過速度３０を７２倍速に設定する。
処理Ｓ２１０４で、時計部２２３の現在時刻を「２０１２／１／１  １１：５５：００」に設定する。処理Ｓ２１０５で、検体Ａ及び活動記録部２２２を実行する。処理Ｓ２１０６で、時計部２２３の現在時刻が「２０１２／１／１  １２：００：０５」になるまで待機する。
【０１９４】
処理Ｓ２１０７では、解析管理ＩＤ５０１＝３のレコードに対応する解析シナリオ２０の処理が未だ行われていないため、処理Ｓ２１０２に戻る。その後、処理Ｓ２１０３〜２１０６で、上記解析シナリオ２０に従って、検体の実行処理を行う。
【０１９５】
処理Ｓ２１０７では、受信した２つの解析シナリオ２０の処理が全て完了しているため、処理Ｓ２１０８にて、検体Ａと活動記録部２２２の処理を停止し、全ての処理を終了する。
【０１９６】
図２０は、検体実行装置２００の時間経過速度変更部２２４で行われる時間経過速度変更処理のフローチャートである。
【０１９７】
処理Ｓ２２０１では、時間経過速度変更部２２４は、通信監視装置４００から時間経過速度変更命令８０を受信する。時間経過速度変更命令８０には、「時間経過速度の変更値（例えば、５．０倍）」若しくは、「ＲＥＳＥＴコード」が記述されている。
【０１９８】
処理Ｓ２２０２では、時間経過速度変更命令に従って、時間経過速度を変更する。時間経過速度変更命令に変更値が記載されている場合はその値に、「ＲＥＳＥＴコード」が記述されている場合は、検体実行装置２００の時間経過速度を、システム管理装置１００から受信した時間経過速度３０の値に設定する。
【０１９９】
図２１に、タイマー装置２７０と、時計部２２３の関係を示す。前述の通り、タイマー装置２７０は、発振器２７１が振動する度に、信号を時計部２２３に送信し、時計部２２３は受信した信号の回数を基に、現在時刻を決定する。
【０２００】
処理Ｓ２３０１では、タイマー装置２７０のカウンタレジスタ２７２の値を０に初期化する。処理Ｓ２３０２では、発振器２７１が、１回振動する。処理Ｓ３２０３では、発振器２７１が振動する度に、カウンタレジスタ２７２の値を＋１加算する。処理Ｓ２３０４では、カウンタレジスタ２７２の値とカウンタ最大値レジスタ２７３の値を比較する。比較の結果、カウンタレジスタ２７２の値がカウンタ最大値レジスタ２７３と等しくない場合、処理Ｓ２３０２に移動する。
【０２０１】
カウンタレジスタ２７２の値がカウンタ最大値レジスタ２７３の値と等しい場合、処理Ｓ２３０５に移動する。処理Ｓ２３０５では、クロック信号を時計部２２３に送信する。クロック信号の送信後、処理Ｓ２３０１に移動する。
【０２０２】
時計部２２３は、処理Ｓ２３０６で、タイマー装置２２３の処理Ｓ２３０５から送信されたクロック信号を受信する。処理Ｓ２３０７で、現在時刻に対して、定数時間を加算する。これにより検体実行装置２００の現在時刻は更新される。処理Ｓ２３０７実行後、再び処理Ｓ２２０６に移動し、次のクロック信号の受信まで待機する。
【０２０３】
ここで、処理Ｓ２３０７で、現在時刻に加算される定数時間は、時計部２２３における時刻の精度を決定する。定数時間＝１秒であるなら、時計部２２３の時刻精度は１秒単位になり、定数時間＝０．０１秒であるなら、時刻精度は０．０１秒単位となる。
【０２０４】
カウンタ最大値レジスタ２７３の値は、時計部２２３の起動時に設定される。ここで、発振器２７１の振動数が１ＭＨｚ（１秒間に１００００００回振動）であり、時計部２２３の時刻精度が０．０１秒とする。この場合、１秒間に１００回のクロック信号を、時計部２２３は受信する必要があるため、カウンタ最大値レジスタ２７３の値は１００００（＝１００００００／１００）に設定される。これにより、カウンタ最大値レジスタ２７３の値が他のプログラムから変更されない限り、時計部２２３は、１秒間に１００回の割合でクロック信号を受信し、その度に、０．０１秒だけ現在時刻を進めることになる。
【０２０５】
図２２に、図１９の検体実行部処理のＳ２1０３で実行される、時刻経過速度の調整処理のフローについて述べる。調整処理では、カウンタ最大値レジスタ２７３の値を変えることで、タイマー装置２７０がクロック信号を送信する頻度を調整する。
【０２０６】
処理Ｓ２４０１では、カウンタ最大値レジスタ２７３の値を、変数Ｃｕｒｒｅｎｔ＿ＭＡＸに読み込む。処理Ｓ２４０２では、変数Ｃｕｒｒｅｎｔ＿ＭＡＸの値を、時刻経過速度３０の値で割った値を、変数Ｎｅｗ＿Ｍａｘに保存する。処理Ｓ２４０３では、変数Ｎｅｗ＿Ｍａｘの値をカウンタ最大値レジスタ２４０３に格納する。
【０２０７】
例として、図２１に示したように、カウンタ最大値レジスタ２７３の値に１００００が設定されている状況で、図１１の解析管理ＩＤ１００３＝１のレコードのように、時間経過速度５０６を７２倍速にする場合を考える。
【０２０８】
処理Ｓ２４０１で、変数Ｃｕｒｒｅｎｔ＿Ｍａｘの値が１００００に設定される。処理Ｓ２４０２で、変数ＮｅｗＭａｘに１３９（＝１００００／７２）が格納される。処理Ｓ２４０３で、１３９がカウンタ最大値レジスタ２７３に保存される。
【０２０９】
図２１の例では発振器２７１の振動数は１ＭＨｚであるため、１秒間に約７２００回のクロック信号が、タイマー装置２７０から時計部２２３に送信される。クロック信号を受信する度に、時計部２２３は０．０１秒だけ現在時刻を進めるため、７２００回のクロック信号受信により、検体実行装置２００の時刻は７２秒進むことになる。これにより、時間調整速度３０で指定した７２倍速が実現される。
【０２１０】
図２３は、活動記録部２２２で実行される、活動記録処理のフローを示している。
【０２１１】
処理Ｓ２５０１では、活動記録部２２２は、記録ルールＤＢ２５１を読み込む。処理Ｓ２５０２では、読み込んだ記録ルールＤＢ２５１に従って、実行環境上での検体１０の活動を記録する。処理Ｓ２５０３では、検体実行部２２１が、図１９の処理Ｓ２１０８で活動記録部２２２の停止を行うタイミングで、検体１０の実行中に作成された活動記録６０を、活動記録ＤＢ１５２に書き出す。
【０２１２】
次に、図１２、図１５内のレコード例を用いて、図２３で行われる活動記録処理の具体例を示す。
【０２１３】
処理Ｓ２５０１では、記録ルールＤＢ２５１内の２つのレコード（記録ルールＩＤ１４０１＝１，２）が、活動記録部２２２に読み込まれる。処理Ｓ２５０２では、読み込んだ記憶ルールＤＢ２５１のレコードに従い、検体Ａの「パケット送信活動」及び、「デスクトップ画面の更新」を記録する。具体的な記録方法は、図１５の説明時に示した通りである。
【０２１４】
処理Ｓ２５０３では、検体実行部２２１が、解析管理ＩＤ１１０２＝１である解析シナリオ２０に従った実行処理を行っていた場合は、活動記録ＩＤ１１０１＝１、２、３、４のレコードを、活動記録ＤＢ１５２に書き出す。また、検体実行部２２１が、解析管理ＩＤ１１０２＝２、３である解析シナリオ２０に従った実行処理を行っていた場合は、活動記録ＩＤ１１０１＝５、６のレコードを、活動記録ＤＢ１５２に書き出す。
【０２１５】
図２４は、活動解析部３２１で実行される、活動解析処理のフローを示している。
【０２１６】
処理Ｓ２６０１では、活動解析部３２１は、活動記録ＤＢ１５２が更新され、新しいレコードが追加されるまで待機する。処理Ｓ２６０２では、活動解析部３２１は、解析ルールＤＢ３５１及び活動記録ＤＢ１５２を読み込む。
【０２１７】
処理Ｓ２６０３では、解析ルールＤＢ３５１に従って、活動記録ＤＢ１５２のレコードを解析し、解析結果７０を作成する。なお、解析の途中においては、入出力装置３７０を介して、管理者が解析ルールＤＢ３５１の内容を更新したり、解析ルールＤＢ３５１には載っていない判断基準を基に、手動で解析を行ってもよい。処理Ｓ２６０４では、処理Ｓ２６０３で作成した解析結果７０を、解析結果ＤＢ１５３に保存する。
【０２１８】
次に、図１２、図１３、図１６内のレコード例を用いて、図２４で行われる活動解析録処理の具体例を示す。
【０２１９】
処理Ｓ２６５０１では、活動記録ＩＤ１１０１が１〜４であるレコードが活動記録ＤＢ１５２に追加されるため、待機を解除する。処理Ｓ２６０２では、活動記録ＩＤ１１０１が１〜２であるレコード及び、解析ルールＤＢ３５１の３つのレコードを読み込む。
【０２２０】
処理Ｓ２６０３では、活動記録ＩＤ１１０１＝２および４であるレコードに関しては、解析ルールＩＤ１５０１＝２のレコードを適用し、検体Ａには「偽アンチウイルスソフト」の属性があると判断する。また、活動記録ＩＤ１１０１＝１および３であるレコードに関しては、解析ルールＩＤ１５０１＝１のレコードを適用し、検体Ａには「ボット」の属性があると判断する。処理Ｓ２６０４では、解析結果ＤＢ１５３を更新し、解析結果ＩＤ１２０１＝１〜４のレコードを新たに追加する。その後処理Ｓ２６０１に移動する。
【０２２１】
再び、処理Ｓ２６０１では、活動記録ＩＤ１１０１が５〜６であるレコードが活動記録ＤＢ１５２に追加されるため、待機を解除する。処理Ｓ２６０２では、活動記録ＩＤ１１０１が１〜２であるレコード及び、解析ルールＤＢ３５１の２つのレコードを読み込む。
【０２２２】
処理Ｓ２６０３では、活動記録ＩＤ＝５、６のレコードに関して、解析ルールＩＤ１５０１＝１のレコードを適用し、検体Ａには「ボット」の属性があると判断する。処理Ｓ２６０４では、解析結果ＤＢ１５３を更新し、解析結果ＩＤ１２０１＝５〜６のレコードを新たに追加する。
【０２２３】
図２５は、通信監視部４２１で実行される、通信監視処理のフローを示している。
【０２２４】
処理Ｓ２７０１では、ＩＦ４４１を通じて、パケットミラー装置７００から、検体１０のミラーパケット９０を受信する。
【０２２５】
処理Ｓ２７０２では、受信したミラーパケット９０が検体１０からの送信ＴＣＰパケット又は、検体１０宛の応答ＴＣＰパケットの何れであるかを判定する。送信ＴＣＰパケットの場合は処理Ｓ２７０３に、応答ＴＣＰパケットの場合は処理Ｓ２７１０に進む。
【０２２６】
処理Ｓ２７０３では、送信ＴＣＰパケットがセッション開始パケットであるかどうかを判定する。より詳細には、ＳＹＮフラグがＯＮになっており、ＡＣＫフラグがＯＦＦになっているＴＣＰパケットを、セッション開始パケットとみなす。セッション開始パケットの場合は処理Ｓ２７０４に、それ以外のパケットの場合には処理Ｓ２７０６に進む。
【０２２７】
処理Ｓ２７０４では、時間経過速度＝１倍速となる時間経過速度変更命令８０を、検体実行装置２００に送信する。
【０２２８】
処理Ｓ２７０５では、パケット送信時刻を、パケットＩＤ１６０２＝２のレコードの最終送信パケット観測時刻１６０２として、時間経過速度ＤＢ４５１に記録する。
【０２２９】
処理Ｓ２７０６では、送信ＴＣＰパケットが、セッション終了パケットであるかどうかを判定する。より詳細には、ＦＩＮフラグがＯＮになっているＴＣＰパケットを、セッション終了パケットとみなす。セッション終了パケットの場合は処理Ｓ２７０７に、それ以外の場合は処理Ｓ２７０９に進む。
【０２３０】
処理Ｓ２７０７では、現在、検体１０が確立している他セッションが存在するかどうかを判定する。存在しない場合は処理Ｓ２７０８に進む。存在する場合は処理を終了する。
【０２３１】
処理Ｓ２７０８では、時間経過速度＝ＲＥＳＥＴとなる時間経過速度変更命令８０を、検体実行装置２００に送信する。
【０２３２】
処理Ｓ２７０９では、パケット送信時刻を、最新レコードの最終送信パケット観測時刻１６０２として、時間経過速度ＤＢ４５１に記録する。
【０２３３】
処理Ｓ２７１０では、応答ＴＣＰパケットの観測時刻を基に、最適時間経過速度１６０７を算出する。具体的な演算例は、図１７で示した通りである。
【０２３４】
処理Ｓ２７１１では、最新のレコードの最適時間経過速度２７１０の値が、処理Ｓ２７１０で算出した値よりも小さいようなセッションが存在するかどうかを判定する。存在する場合は、処理を終了する。存在しない場合は、処理Ｓ２７１２に進む。
【０２３５】
処理Ｓ２７１２では、時間経過速度＝最適時間経過速度２７１０である時間経過速度変更命令８０を、検体実行装置２００に送信する。
【０２３６】
（変形例）
次に、図１に示すシステムの変形例について説明する。
【０２３７】
（１）検体実行装置２００と通信監視装置４００の接続
図１の例では、検体実行装置２００と通信監視装置４００は、ネットワーク５００を介して接続されているが、別の接続手段を用いてもよい。例えば、シリアルケーブルやＵＳＢケーブルを用いて、両機器を接続する方法が考えられる。この場合、時間経過速度変更命令８０はケーブルを通じて、検体実行装置２００に伝達される。
【０２３８】
（２）ＴＣＰ通信以外の通信の監視
図１の例では、通信監視装置４００は、検体１０のＴＣＰ通信を監視する。それ以外にも、ＴＣＰ通信と同様に時間経過速度の上昇によりタイムアウトが発生しやすくなる通信を監視し、時間経過速度を制御することが可能である。
【０２３９】
例えば、ＨＴＴＰ（Hyper Text Transfer Protocol）は、クライアント端末側からリクエストメッセージを送信してから一定時間以内にレスポンスメッセージを受信しない場合に、タイムアウトが発生する。このため、通信監視装置４００がリクエストメッセージの送信を検出した際に、レスポンスメッセージを受信するまでの間、時間経過速度を一時的に低速とすることで、ＨＴＴＰでのタイムアウトを防止することが可能となる。
【符号の説明】
【０２４０】
１０：検体、２０：解析シナリオ、３０：時間経過速度、４０：解析開始時刻、５０：解析終了時刻、６０：活動記録、７０：解析結果、８０：時間経過速度変更命令、９０：ミラーパケット、１００：システム管理装置、２００：検体実行装置，３００：活動解析装置、４００：通信監視装置、５００、６００、９００：通信ネットワーク、７００：パケットミラー装置、８００：検体通信先端末
【図１】
2013171556.tif 000003
【図２】
2013171556.tif 000004
【図３】
2013171556.tif 000005
【図４】
2013171556.tif 000006
【図５】
2013171556.tif 000007
【図６】
2013171556.tif 000008
【図７】
2013171556.tif 000009
【図８】
2013171556.tif 000010
【図９】
2013171556.tif 000011
【図１０】
2013171556.tif 000012
【図１１】
2013171556.tif 000013
【図１２】
2013171556.tif 000014
【図１３】
2013171556.tif 000015
【図１４】
2013171556.tif 000016
【図１５】
2013171556.tif 000017
【図１６】
2013171556.tif 000018
【図１７】
2013171556.tif 000019
【図１８】
2013171556.tif 000020
【図１９】
2013171556.tif 000021
【図２０】
2013171556.tif 000022
【図２１】
2013171556.tif 000023
【図２２】
2013171556.tif 000024
【図２３】
2013171556.tif 000025
【図２４】
2013171556.tif 000026
【図２５】
2013171556.tif 000027
【図２６Ａ】
2013171556.tif 000028
【図２６Ｂ】
2013171556.tif 000029
【図２７】
2013171556.tif 000030