(57)【要約】【課題】多くのプログラムのプロファイリングを簡単に、かつ、短時間で行う。【解決手段】プログラム分析装置１０では、パラメータ取得部１１が、ユーザが入力したパラメータを取得し、プログラム実行部１２が、このパラメータに従って仮想ＯＳを起動し、仮想ＯＳ上でプログラムを実行し、プログラムの動作履歴を動作履歴記憶部１３に記録する。すると、プログラム分類部１５は、条件記憶部１４に記憶された条件、及び、動作履歴等を参照して、プログラムの種類を特定すると共に、動作履歴等からプログラムの特徴情報を生成し、これらの情報をプログラム情報としてプログラム情報記憶部１６に記憶する。そして、プログラム情報出力部１７が、プログラム情報記憶部１６に記憶されたプログラム情報に基づいて、プログラムの種類を明示したプログラム分析レポートを出力する。【選択図】図２
2008129707.tif 000002
【特許請求の範囲】
【請求項１】
仮想オペレーティングシステムの起動、及び、当該仮想オペレーティングシステム上での所定のプログラムの実行を指示する指示手段と、
前記指示手段による指示に応じて前記仮想オペレーティングシステム上で実行された前記所定のプログラムの動作の履歴を記録する記録手段と、
前記記録手段により記録された前記動作の履歴に基づいて、前記所定のプログラムの種類を特定する特定手段と、
前記特定手段により特定された前記所定のプログラムの種類を明示した当該所定のプログラムに関する情報を出力する出力手段と
を備えたことを特徴とするプログラム分析装置。
【請求項２】
前記記録手段は、前記所定のプログラムが他の装置との間で行った通信の履歴、前記所定のプログラムが自装置内で行ったデータの生成の履歴、及び、前記所定のプログラムが自装置内の資源に対して行った処理の履歴の少なくとも１つを、前記動作の履歴として記録することを特徴とする請求項１記載のプログラム分析装置。
【請求項３】
前記特定手段は、プログラムの種類ごとに、当該種類に対して予め決められた動作が、前記記録手段により記録された前記動作の履歴に出現する度合いを求め、当該度合いに基づいて、前記所定のプログラムの種類を特定することを特徴とする請求項１記載のプログラム分析装置。
【請求項４】
前記記録手段により記録された前記動作の履歴に基づいて、当該動作の特徴を示す特徴情報を生成する生成手段を更に備え、
前記出力手段は、前記生成手段により生成された前記特徴情報を、前記所定のプログラムに関する情報に含めて出力することを特徴とする請求項１記載のプログラム分析装置。
【請求項５】
前記生成手段は、前記特定手段により特定された前記所定のプログラムの種類以外の種類に対して予め決められた動作が、当該所定のプログラムの動作の履歴に出現する度合いを、前記特徴情報として生成することを特徴とする請求項４記載のプログラム分析装置。
【請求項６】
前記仮想オペレーティングシステム上で実行済の複数のプログラムの中から、前記特定手段により特定された前記所定のプログラムの種類と同じ種類の他のプログラムを検索する検索手段を更に備え、
前記出力手段は、前記検索手段により検索された前記他のプログラムに関する情報を、前記所定のプログラムに関する情報に含めて出力することを特徴とする請求項１記載のプログラム分析装置。
【請求項７】
仮想オペレーティングシステムを起動するステップと、
前記仮想オペレーティングシステム上で所定のプログラムを実行するステップと、
前記所定のプログラムの動作の履歴を所定の記録領域に記録するステップと、
前記所定の記録領域に記録された前記動作の履歴に基づいて、前記所定のプログラムの種類を特定するステップと、
特定された前記所定のプログラムの種類を明示した当該所定のプログラムに関する情報を出力するステップと
を含むことを特徴とするプログラム分析方法。
【請求項８】
コンピュータに、
仮想オペレーティングシステム上で実行された所定のプログラムの動作の履歴を記録する機能と、
記録された前記動作の履歴に基づいて、前記所定のプログラムの種類を特定する機能と、
特定された前記所定のプログラムの種類を明示した当該所定のプログラムに関する情報を出力する機能と
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの動作を分析するプログラム分析装置等に関する。
【背景技術】
【０００２】
近年のインターネットの爆発的な普及に伴い、ネットワーク上に存在する脅威は無視できないものとなっている。そのようなネットワーク上の脅威の１つに、悪性プログラムがある。この悪性プログラムは、「マルウェア」とも呼ばれ、ユーザにとって好ましくない悪意を持つプログラムのことを指している。この悪性プログラムの代表的なものとして、所謂コンピュータウイルスがある。
従来、コンピュータウイルスによる感染を防止したり、コンピュータウイルスの検査を容易に行ったりするための技術は提案されていた(例えば、特許文献１参照)。特許文献１では、仮想ホストを構築し、仮想ホスト上で被検査ファイルを実行することにより、実ホストへのウイルス感染を防止し、且つ容易にウイルス検査を行うことができるコンピュータウイルス検査装置を実現している。
【０００３】
【特許文献１】特開２００４−０３８２７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところが、昨今、悪性プログラムは、非常に多様化しており、コンピュータウイルスと呼べない種類のものも多数存在している。例えば、作成者がネットワークを介して動きを制御できる「ボット」や、密かにコンピュータに侵入して情報を収集し外部に送信する「スパイウェア」や、一見無害に見えるが裏で破壊活動を行う「トロイの木馬」等の種類である。また、同じ種類の悪性プログラムであってもその動きは様々である。そこで、悪性プログラムについては、その挙動や侵入経路等のプロファイリングを行い、より効果的な防御を行うことが重要になってきている。
【０００５】
現状、かかるプロファイリングは、セキュリティ対策の専門家が複数のソフトウェアからの出力内容を照合しながら調査することで行われている。例えば、あるソフトウェアでログを調査し、別のソフトウェアで通信内容を調査し、更に別のソフトウェアで生成データを調査する、といった方法である。しかし、この方法では非常に時間がかかる。そして、ある意味で職人芸的な方法になってしまう。即ち、属人性の極めて高い方法でしか、ユーザが悪性プログラムの動作を知ることはできなかったのである。このようなプロファイリング方法では、１日当たり何十個という悪性プログラムの出現のスピードに追いつくことができず、また、高度な知識を持たないユーザは悪性プログラムの動作について吟味することができないという問題点があった。
【０００６】
また、特許文献１のコンピュータウイルス検査装置では、被検査ファイルがコンピュータウイルスに感染しているかどうかを検査するだけであり、悪性プログラムのプロファイリングを効率的に行う有効な手段を提供するものではなかった。
尚、ここでは、「悪性プログラム」に限定して説明したが、「悪性」とは言えないプログラムについても同様に考えることができる。例えば、ユーザのキータイプを記録する「キーロガー」は、「悪性プログラム」に分類されることが多いが、使用方法によっては「悪性」でない場合もあるからである。
【０００７】
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的は、多くのプログラムのプロファイリングを簡単に、かつ、短時間で行うことにある。
また、本発明の他の目的は、プログラムをプロファイリングした結果をユーザが簡単に知ることができるようにすることにある。
【課題を解決するための手段】
【０００８】
かかる目的のもと、本発明は、仮想オペレーティングシステム上でのプログラムの動作履歴に基づいてプログラムの種類を特定し、特定したプログラムの種類を明示したプログラム情報を出力するようにした。即ち、本発明のプログラム分析装置は、仮想オペレーティングシステムの起動、及び、仮想オペレーティングシステム上での所定のプログラムの実行を指示する指示手段と、この指示手段による指示に応じて仮想オペレーティングシステム上で実行された所定のプログラムの動作の履歴を記録する記録手段と、この記録手段により記録された動作の履歴に基づいて、所定のプログラムの種類を特定する特定手段と、この特定手段により特定された所定のプログラムの種類を明示したその所定のプログラムに関する情報を出力する出力手段とを備えている。
また、本発明は、記録手段により記録された動作の履歴に基づいて、動作の特徴を示す特徴情報を生成する生成手段を更に備え、出力手段は、生成手段により生成された特徴情報を、所定のプログラムに関する情報に含めて出力する、というものであってもよい。
【０００９】
更に、本発明は、プログラム分析方法として捉えることもできる。その場合、本発明のプログラム分析方法は、仮想オペレーティングシステムを起動するステップと、仮想オペレーティングシステム上で所定のプログラムを実行するステップと、所定のプログラムの動作の履歴を所定の記録領域に記録するステップと、所定の記録領域に記録された動作の履歴に基づいて、所定のプログラムの種類を特定するステップと、特定された所定のプログラムの種類を明示したその所定のプログラムに関する情報を出力するステップとを含んでいる。
【００１０】
一方、本発明は、プログラムを分析するためのコンピュータプログラムとして捉えることもできる。その場合、本発明のコンピュータプログラムは、仮想オペレーティングシステム上で実行された所定のプログラムの動作の履歴を記録する機能と、記録された動作の履歴に基づいて、所定のプログラムの種類を特定する機能と、特定された所定のプログラムの種類を明示したその所定のプログラムに関する情報を出力する機能とを実現させるものである。
【発明の効果】
【００１１】
本発明によれば、多くのプログラムのプロファイリングを簡単に、かつ、短時間で行うことができるようになる。
【発明を実施するための最良の形態】
【００１２】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。
まず、本実施の形態におけるプログラム分析装置１０として用いるのに好適なコンピュータのハードウェア構成について説明する。
図１は、このようなコンピュータのハードウェア構成の一例を示した図である。
図示するように、コンピュータは、演算手段であるＣＰＵ(Central Processing Unit)１０ａと、Ｍ/Ｂ(マザーボード)チップセット１０ｂを介してＣＰＵ１０ａに接続されたメインメモリ１０ｃと、同じくＭ/Ｂチップセット１０ｂを介してＣＰＵ１０ａに接続された表示機構１０ｄとを備える。また、Ｍ/Ｂチップセット１０ｂには、ブリッジ回路１０ｅを介して、ネットワークインターフェイス１０ｆと、磁気ディスク装置(ＨＤＤ)１０ｇと、音声機構１０ｈと、キーボード/マウス１０ｉと、フレキシブルディスクドライブ１０ｊとが接続されている。
【００１３】
尚、図１において、各構成要素は、バスを介して接続される。例えば、ＣＰＵ１０ａとＭ/Ｂチップセット１０ｂの間や、Ｍ/Ｂチップセット１０ｂとメインメモリ１０ｃの間は、ＣＰＵバスを介して接続される。また、Ｍ/Ｂチップセット１０ｂと表示機構１０ｄとの間は、ＡＧＰ(Accelerated Graphics Port)を介して接続されてもよいが、表示機構１０ｄがＰＣＩ Ｅｘｐｒｅｓｓ対応のビデオカードを含む場合、Ｍ/Ｂチップセット１０ｂとこのビデオカードの間は、ＰＣＩ Ｅｘｐｒｅｓｓ(ＰＣＩｅ)バスを介して接続される。また、ブリッジ回路１０ｅと接続する場合、ネットワークインターフェイス１０ｆについては、例えば、ＰＣＩ Ｅｘｐｒｅｓｓを用いることができる。また、磁気ディスク装置１０ｇについては、例えば、シリアルＡＴＡ(AT Attachment)、パラレル転送のＡＴＡ、ＰＣＩ(Peripheral Components Interconnect)を用いることができる。更に、キーボード/マウス１０ｉ、及び、フレキシブルディスクドライブ１０ｊについては、ＵＳＢ(Universal Serial Bus)を用いることができる。
【００１４】
次に、本実施の形態におけるプログラム分析装置１０の機能構成について説明する。
図２は、プログラム分析装置１０の機能構成の一例を示したブロック図である。
図示するように、プログラム分析装置１０は、パラメータ取得部１１と、プログラム実行部１２と、動作履歴記憶部１３と、条件記憶部１４と、プログラム分類部１５と、プログラム情報記憶部１６と、プログラム情報出力部１７とを備えている。
【００１５】
パラメータ取得部１１は、ユーザが入力したパラメータを取得する。ここで、パラメータとしては、図示するように、分析対象のプログラム、プログラム実行部１２にて動作させるオペレーティングシステム(以下、「ＯＳ」という)、ＯＳの起動日付、ＯＳを起動してから停止させるまでの時間である生存期間等がある。
【００１６】
プログラム実行部１２は、実ＯＳ上で仮想ＯＳを起動し、パラメータ取得部１１が取得したパラメータで指定されたプログラムをこの仮想ＯＳ上で実行する。即ち、本実施の形態では、仮想ＯＳの起動及び仮想ＯＳ上でのプログラムの実行を指示する指示手段の一例としてプログラム実行部１２を設けている。尚、このような仮想ＯＳは、例えば、ＶＭＷａｒｅ(登録商標)によって実現可能である。具体的には、ＶＭＷａｒｅ自体を動作させている実ＯＳ(ホストＯＳ)上でＶＭＷａｒｅが生成した仮想コンピュータに対し、仮想ＯＳ(ゲストＯＳ)をインストールすればよい。
【００１７】
また、プログラム実行部１２は、仮想ＯＳ上でのプログラムの動作の履歴(以下、「動作履歴」という)を記録する。即ち、本実施の形態では、仮想ＯＳ上で実行されたプログラムの動作履歴を記録する記録手段の一例として、プログラム実行部１２を設けている。ここで、プログラムの動作とは、例えば、プログラムが他の装置との間で行った通信や、プログラムが自装置内で行ったデータの生成がある。また、ファイルを削除する処理、ＯＳに対して何らかの修正を施す処理、ユーザに対して何らかの情報を開示する処理等、プログラムが自装置内の資源に対して行った処理もある。そこで、本実施の形態では、動作履歴を、通信に関する履歴(以下、「通信履歴」という)と、データの生成に関する履歴(以下、「生成履歴」という)と、処理に関する履歴(以下、「処理履歴」という)とに分けて記録している。
【００１８】
動作履歴記憶部１３は、プログラム実行部１２が記録する動作履歴を記憶し蓄積する。
条件記憶部１４は、仮想ＯＳ上で実行したプログラムを分類するための条件を記憶する。尚、条件の内容については後述する。
プログラム分類部１５は、動作履歴記憶部１３に記憶された動作履歴を、条件記憶部１４に記憶された条件に基づいて解析することにより、仮想ＯＳ上で実行されたプログラムの種類を特定する。即ち、本実施の形態では、プログラムの種類を特定する特定手段の一例として、プログラム分類部１５を設けている。また、プログラム分類部１５は、プログラムの特徴を示す情報(以下、「特徴情報」という)の生成も行う。即ち、本実施の形態では、特徴情報を生成する生成手段の一例として、プログラム分類部１５を設けている。
【００１９】
プログラム情報記憶部１６は、プログラム分類部１５が特定したプログラムの種類を特定する情報や、プログラム分類部１５が生成した特徴情報を、分析対象のプログラムに関するプログラム情報として記憶する。
プログラム情報出力部１７は、プログラム情報記憶部１６に記憶されたプログラム情報を例えばレポートの形式で出力する。即ち、本実施の形態では、プログラムに関する情報を出力する出力手段の一例として、プログラム情報出力部１７を設けている。
【００２０】
尚、これらの各機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、ＣＰＵ１０ａ(図１参照)が、パラメータ取得部１１、プログラム実行部１２、プログラム分類部１５、プログラム情報出力部１７の各機能を実現するプログラムを、例えば磁気ディスク装置１０ｇ(図１参照)からメインメモリ１０ｃ(図１参照)に読み込んで処理を行う。また、動作履歴記憶部１３、条件記憶部１４、プログラム情報記憶部１６は、例えば磁気ディスク装置１０ｇ(図１参照)によって実現される。
【００２１】
次いで、本実施の形態におけるプログラム分析装置１０の動作について説明する。尚、以下において、分析対象(実験対象)のプログラムは悪性プログラムであるものとする。
まず、ユーザが、実験対象の悪性プログラムを特定する情報、仮想ＯＳの種類、仮想ＯＳの起動日付及び生存期間等のパラメータを、プログラム分析装置１０に入力したとする。尚、本実施の形態では、ユーザが対象プログラムを指定可能とすることで、本当に安全な(想定した通りに動作する)プログラムかをユーザが能動的に調査できるようにしている。
すると、プログラム分析装置１０では、パラメータ取得部１１が、この入力されたパラメータを取得し、プログラム実行部１２に受け渡す。そして、プログラム実行部１２の動作が開始する。
【００２２】
図３は、プログラム実行部１２の動作例を示したシーケンス図である。尚、このプログラム実行部１２は、初期状態において、実ＯＳ上で動作しており、仮想ＯＳを起動する機能、仮想ＯＳに情報を伝達する機能、仮想ＯＳから情報を受け取る機能を有するものとする。従って、図３は、全体としてはプログラム実行部１２の動作を示したものではあるが、これを実ＯＳと仮想ＯＳとの情報のやり取りの形で表現している。
まず、実ＯＳは、パラメータ取得部１１からパラメータを受け付ける(ステップ２０１)。そして、ステップ２０１で受け付けたパラメータで指定された仮想ＯＳを起動し、同じくステップ２０１で受け付けたパラメータで指定された悪性プログラムを実行するよう仮想ＯＳに対して指示する(ステップ２０２)。尚、この際、仮想ＯＳには起動日付及び生存期間の情報も与えられており、仮想ＯＳは、与えられた起動日付で起動し、与えられた生存期間で指定された時間が経過したら停止するよう動作する。
【００２３】
ステップ２０２での指示に従い、仮想ＯＳは、悪性プログラムを実行する(ステップ２５１)。
そして、仮想ＯＳは、一定時間間隔でステップ２５２〜２５４の検査処理を行う。
即ち、まず、仮想ＯＳは、生存期間を経過したかどうかを判定する(ステップ２５２)。その結果、生存期間が経過していなければ、前回の検証処理以降に悪性プログラムが動作したかどうかを判定する(ステップ２５３)。尚、ここで、「動作した」とは、悪性プログラムがただ単に実行状態にあることをいうのではなく、他の装置との間での通信、仮想ＯＳ上での新たなデータの生成、仮想ＯＳ上の資源に対する処理等、悪性プログラムの感染活動や破壊活動に関係すると思われる動作を行ったことをいう。そのような動作があった場合、仮想ＯＳは、動作内容をメモリに記憶しておく(ステップ２５４)。また、そのような動作がなかった場合は、ステップ２５２に戻り、再び生存期間が経過しているかどうかを判定する(ステップ２５２)。
【００２４】
このようにして検査処理を繰り返していくと、やがて生存期間が経過し、ステップ２５２での判定結果が「Ｙｅｓ」となる。すると、仮想ＯＳは、これまでにステップ２５４でメモリに記録した動作内容をまとめて実ＯＳに受け渡す(ステップ２５５)。
これにより、実ＯＳは、仮想ＯＳから受け渡された動作内容を受け取る(ステップ２０３)。そして、受け取った動作内容を、動作履歴として動作履歴記憶部１３に記憶する。
【００２５】
このように動作履歴が動作履歴記憶部１３に記憶されると、プログラム分類部１５が、悪性プログラムの種類を特定する。その際、プログラム分類部１５は、上述したように、条件記憶部１４に記憶された条件を参照する。そこで、まず、この条件について説明する。
図４に、条件記憶部１４に記憶された条件の一例を示す。
【００２６】
このうち、図４(ａ)は、加算用条件について示している。ここで、加算用条件とは、その条件に合致する事象があることのみをもって悪性プログラムの種類を特定するのではなく、その条件に合致する事象の数を加算することで悪性プログラムの種類を特定するための条件である。尚、ここでは、加算用条件を、条件に合致するかどうかを判断する際の参照先ごとに定義している。具体的には、悪性プログラムのファイル属性を参照して判断可能な加算用条件、通信履歴を参照して判断可能な加算用条件、生成履歴を参照して判断可能な加算用条件、処理履歴を参照して判断可能な加算用条件である。
また、図では、悪性プログラムの種類ごとに、その種類に特徴的な加算用条件に対応する欄に「＋１」が定義されている。これは、例えば、「ボット」に特徴的な条件は、「特定のサーバに接続する」、「コマンドを受信できる」、「ネットワークを介して伝播する」であり、「Ｐ２Ｐワーム」に特徴的な条件は、「ネットワークを介して伝播する」、「Ｐ２Ｐソフトを探す」であることを意味している。
【００２７】
更に、図４(ｂ)は、分類用条件について示している。ここで、分類用条件とは、その条件に合致する事象があることのみをもって悪性プログラムの種類を特定することができる条件である。尚、ここでは、分類用条件として、悪性プログラムのファイル属性を参照して判断可能な条件のみを定義しているが、図４(ａ)と同様に、通信履歴、生成履歴、処理履歴を参照して判断可能な条件を定義してもよい。
図では、悪性プログラムの種類ごとに、その種類に特徴的な分類用条件に対応する欄に「○」が定義されている。これは、例えば、「マクロウイルス」に特徴的な条件は、「特定のデータ形式に保存されたマクロである」ということを意味している。
尚、図４(ａ),(ｂ)において、条件も悪性プログラムの種類も、図示したものはあくまで一例であり、これ以外の条件や悪性プログラムの種類を定義してもよい。
【００２８】
かかる条件が条件記憶部１４に記憶されていることを前提として、プログラム分類部１５は、プログラムの分類処理を行う。尚、以下では、説明の便宜上、まず、プログラム分類部１５によりプログラム情報が格納されるメモリ上のエリアのレイアウトについて説明し、その後、プログラム分類部１５の動作について述べる。
図５は、プログラム情報が格納されるメモリ上のレイアウトの一例を示した図である。
図において、プログラム情報を格納するエリアは、分類名格納エリア６１と、加算用情報格納エリア６２ａ〜６２ｉと、ファイル情報格納エリア６３ａ〜６３ｄと、通信情報格納エリア６４ａ〜６４ｄと、生成情報格納エリア６５ａ及び６５ｂとからなるものとする。ここで、分類名格納エリア６１には、プログラム分類部１５が特定した悪性プログラムの種類が格納される。また、加算用情報格納エリア６２ａ〜６２ｉには、実験対象の悪性プログラムが、図４(ａ)の加算用条件をどの程度満たすかを示す情報が格納される。ここで、図４(ａ)の加算用条件は、実験対象の悪性プログラムに特徴的な条件に、その他の悪性プログラムに特徴的な条件を追加したものとなっている。尚、これらの加算用条件のうち、実験対象の悪性プログラムに特徴的な加算用条件に対する数値は、その悪性プログラムの種類を特定するために加算されることから、以下では、この情報を「加算用情報」と呼ぶことにする。更に、ファイル情報格納エリア６３ａ〜６３ｄには、ファイル属性に関する特徴情報(以下、「ファイル情報」という)が格納され、通信情報格納エリア６４ａ〜６４ｄには、通信に関する特徴情報(以下、「通信情報」という)が格納され、生成情報格納エリア６５ａ及び６５ｂには、データ生成に関する特徴情報(以下、「生成情報」という)が格納される。
【００２９】
図６は、プログラム分類部１５の動作例を示したフローチャートである。
まず、プログラム分類部１５は、悪性プログラムのファイル属性を取得する(ステップ５０１)。ここで、ファイル属性には、ファイル名、ファイル形式、ファイルのハッシュ値、ファイルサイズ、ファイルの作成日時等がある。そして、プログラム情報記憶部１６の加算用情報格納エリア６２ａ〜６２ｉのうち、ファイル属性に合致する加算用条件に対するエリアに格納された数値に１を加算する(ステップ５０２)。
【００３０】
また、プログラム分類部１５は、条件記憶部１４に記憶された分類用条件のうち、ステップ５０１で取得したファイル属性に合致する分類用条件があるかどうかを判定する(ステップ５０３)。その結果、合致する分類用条件がなければ何もしないが、合致する分類用条件があれば、その分類用条件に対応付けられた悪性プログラムの種類を、プログラム情報記憶部１６の分類名格納エリア６１に記憶する(ステップ５０４)。例えば、図４(ｂ)の分類用条件が定義されている場合において、「特定のデータに保存されたマクロである」というファイル属性を有していれば、分類名として「マクロウイルス」が記憶される。
また、プログラム分類部１５は、ステップ５０１で取得したファイル属性のうち、所定の情報をファイル情報としてプログラム情報記憶部１６のファイル情報格納エリア６３ａ〜６３ｄに記憶する(ステップ５０５)。図５の例では、ファイル名、ファイルのハッシュ値、ファイルサイズ、ファイルの作成日時を記憶する。
【００３１】
次に、プログラム分類部１５は、通信履歴があるかどうかを判定する(ステップ５０６)。
ここで、通信履歴があると判定された場合は、通信履歴を読み込む(ステップ５０７)。そして、プログラム情報記憶部１６の加算用情報格納エリア６２ａ〜６２ｉのうち、通信履歴に合致する加算用条件に対するエリアに格納された数値に１を加算する(ステップ５０８)。
【００３２】
また、プログラム分類部１５は、ステップ５０７で読み込んだ通信履歴から抽出した所定の情報を通信情報としてプログラム情報記憶部１６の通信情報格納エリア６４ａ〜６４ｄに記憶する(ステップ５０９)。図５の例では、通信先ＩＰアドレス、通信先プロトコル、通信先ポート番号、伝播に使用する脆弱性等を記憶する。ここで、「伝播に使用する脆弱性」は、例えば、「ボット」のように外部から制御可能な悪性プログラムに対し、外部からコマンドを受信させ、そのコマンドに対して送信されたデータを観測することで、認識することができる。
その後、ステップ５０６に戻り、通信履歴がなくまるまでステップ５０７〜５０９の処理を繰り返す。そして、ステップ５０６で通信履歴がなくなったと判定されると、通信履歴に関する処理を終了する。
【００３３】
次に、プログラム分類部１５は、生成履歴があるかどうかを判定する(ステップ５１０)。
ここで、生成履歴があると判定された場合は、生成履歴を読み込む(ステップ５１１)。そして、プログラム情報記憶部１６の加算用情報格納エリア６２ａ〜６２ｉのうち、生成履歴に合致する加算用条件に対するエリアに格納された数値に１を加算する(ステップ５１２)。
【００３４】
また、プログラム分類部１５は、ステップ５１１で読み込んだ生成履歴から抽出した所定の情報を生成情報としてプログラム情報記憶部１６の生成情報格納エリア６５ａ及び６５ｂに記憶する(ステップ５１３)。図５の例では、生成ファイル、生成レジストリを記憶する。
その後、ステップ５１０に戻り、生成履歴がなくまるまでステップ５１１〜５１３の処理を繰り返す。そして、ステップ５１０で生成履歴がなくなったと判定されると、生成履歴に関する処理を終了する。
【００３５】
次に、プログラム分類部１５は、処理履歴があるかどうかを判定する(ステップ５１４)。
ここで、処理履歴があると判定された場合は、処理履歴を読み込む(ステップ５１５)。そして、プログラム情報記憶部１６の加算用情報格納エリア６２ａ〜６２ｉのうち、生成履歴に合致する加算用条件に対するエリアに格納された数値に１を加算する(ステップ５１６)。
その後、ステップ５１４に戻り、処理履歴がなくまるまでステップ５１５及び５１６の処理を繰り返す。そして、ステップ５１４で処理履歴がなくなったと判定されると、処理履歴に関する処理を終了する。
【００３６】
そして、最後に、プログラム分類部１５は、プログラム情報記憶部１６の加算用情報格納エリア６２ａ〜６２ｉに格納された数値を用いてプログラムの種類を特定する処理を行う。
その場合、まず、プログラム分類部１５は、分類名格納エリア６１に分類名が記憶済かどうかを判定する(ステップ５１７)。分類用条件のみによって既に分類名が決まっている場合は、改めて分類名を決定する必要はないからである。
ここで、分類名格納エリア６１に分類名が記憶済でない場合は、プログラム情報記憶部１６の各加算用条件に対するエリアに格納された数値と、条件記憶部１４で各加算用条件に対して定義された悪性プログラムごとの数値とを掛け合わせたものを合計する(ステップ５１８)。この場合、条件記憶部１４の加算用条件に対する空欄は、「０」として考えるものとする。そして、その合計値が最大となる悪性プログラムの種類を特定し、その種類を分類名格納エリア６１に記憶する(ステップ５１９)。
【００３７】
例えば、「ボット」については、「特定のサーバに接続する」、「コマンドを受信できる」、「ネットワークを介して伝播する」という加算用条件に対して「＋１」が定義されている。従って、プログラム情報記憶部１６のエリア６２ｂ〜６２ｄに格納された数値を合計し、合計値とする。
また、「Ｐ２Ｐワーム」については、「ネットワークを介して伝播する」、「Ｐ２Ｐソフトを探す」という加算用条件に対して「＋１」が定義されている。従って、プログラム情報記憶部１６のエリア６２ｄ及び６２ｇに格納された数値を合計し、合計値とする。
【００３８】
更に、「スパイウェア」については、「ＡｃｔｉｖｅＸ形式である」、「ＡｃｔｉｖｅＸ形式のデータを生成する」、「キー入力を記録する」、「パスワードを探す」という加算用条件に対して「＋１」が定義されている。従って、プログラム情報記憶部１６のエリア６２ａ、６２ｅ、６２ｆ、６２ｈに格納された数値を合計し、合計値とする。
更にまた、「トロイの木馬」については、「特定のサーバに接続する」、「コマンドを受信できる」、「特定のポートで接続を待ち受ける」という加算用条件に対して「＋１」が定義されている。従って、プログラム情報記憶部１６のエリア６２ｂ、６２ｃ、６２ｉに格納された数値を合計し、合計値とする。
そして、「ボット」に対する合計値と、「Ｐ２Ｐワーム」に対する合計値と、「スパイウェア」に対する合計値と、「トロイの木馬」に対する合計値とを比較し、合計値が最大となる種類を、今回実験した悪性プログラムの種類として特定する。また、合計値がゼロの場合は、「非悪性プログラム」という種類に分類する。
【００３９】
このようにプログラム情報記憶部１６にプログラム情報が記憶されると、プログラム情報出力部１７がこのプログラム情報に基づいてレポートを出力する。
図７は、このときのプログラム情報出力部１７の動作例を示したフローチャートである。
まず、プログラム情報出力部１７は、プログラム情報記憶部１６からファイル情報を読み出す(ステップ７０１)。次に、プログラム情報記憶部１６から、分類名を読み出し(ステップ７０２)、続けて、加算用情報を読み出す(ステップ７０３)。
また、プログラム情報出力部１７は、プログラム情報記憶部１６から、通信情報を読み出し(ステップ７０４)、続けて、生成情報を読み出す(ステップ７０５)。
【００４０】
更に、プログラム情報出力部１７は、分類名及び通信情報をキーとして、プログラム情報を検索する(ステップ７０６)。即ち、プログラム情報記憶部１６に記憶された既に実験済の悪性プログラムに関するプログラム情報の中から、今回実験した悪性プログラムと種類が同じであり、通信先ＩＰアドレス等が同じ悪性プログラムに関するプログラム情報を検索する。そして、検索が成功したかどうか判定する(ステップ７０７)。
その結果、検索が失敗した場合は何もしないが、検索が成功した場合、プログラム情報出力部１７は、検索して得られたプログラム情報を参照情報としてメモリに記憶する(ステップ７０８)。
その後、プログラム情報出力部１７は、ファイル情報、分類名、加算用情報、通信情報、生成情報、参照情報を設定することにより、分析レポートの元となる出力データを生成する(ステップ７０９)。
【００４１】
これにより、悪性プログラムに関する分析レポートが出力される。
図８に、分析レポートの一例を示す。
この分析レポートでは、「ファイル名」欄、「ＭＤ５ハッシュ」欄、「ファイルサイズ」欄、「作成日時」欄に対し、ステップ７０１で読み出したファイル情報が印刷されている。
また、「分類名称」欄には、ステップ７０２で読み出した分類名が印刷され、「分類詳細」欄には、ステップ７０３で読み出した加算用情報が印刷されている。つまり、「分類名称」欄を参照することで、悪性プログラムの大まかな種類が分かり、「分類詳細」欄を参照することで、その詳細な動きが分かるようになっている。
【００４２】
更に、「通信先ＩＰアドレス」欄、「通信先プロトコルおよびポート番号」欄、「ボディ内メッセージの有無」欄、「パッカーの種別」欄、「伝播に使用する脆弱性」欄に対し、ステップ７０４で読み出した通信情報が印刷されている。
また、「作成するファイルとレジストリ」欄に対し、ステップ７０５で読み出した生成情報が印刷されている。
一方、ステップ７０６〜７０８で取り出された参照情報は、例えば、「備考」欄に印刷される。これにより、今回実験した悪性プログラムと同様の悪性プログラムが既に実験済であることをユーザが知ることができるようになっている。尚、本実施の形態では、分類名及び通信情報をキーとして蓄積済のプログラム情報を検索したが、検索の際に用いるキーはこれには限らない。例えば、ファイル情報や生成情報をキーとしてプログラム情報を検索するようにしてもよい。
【００４３】
また、ここでは、プログラム情報の出力形式として、紙ベースの分析レポートを例示した。しかしながら、同様の内容をディスプレイに表示することにより、ユーザにプログラムの分析結果を知らせるようにしてもよい。
【図面の簡単な説明】
【００４４】
【図１】本実施の形態が適用されるコンピュータのハードウェア構成図である。
【図２】本実施の形態におけるプログラム分析装置の機能構成を示したブロック図である。
【図３】本実施の形態におけるプログラム実行部の動作例を示したフローチャートである。
【図４】本実施の形態における条件記憶部に記憶される条件の例を示した図である。
【図５】本実施の形態におけるプログラム情報記憶部における情報格納のレイアウトを示した図である。
【図６】本実施の形態におけるプログラム分類部の動作例を示したフローチャートである。
【図７】本実施の形態におけるプログラム情報出力部の動作例を示したフローチャートである。
【図８】本実施の形態におけるプログラム分析装置にて出力される分析レポートの例を示した図である。
【符号の説明】
【００４５】
１０…プログラム分析装置、１１…パラメータ取得部、１２…プログラム実行部、１３…動作履歴記憶部、１４…条件記憶部、１５…プログラム分類部、１６…プログラム情報記憶部、１７…プログラム情報出力部
【図１】
2008129707.tif 000003
【図２】
2008129707.tif 000004
【図３】
2008129707.tif 000005
【図４】
2008129707.tif 000006
【図５】
2008129707.tif 000007
【図６】
2008129707.tif 000008
【図７】
2008129707.tif 000009
【図８】
2008129707.tif 000010