(57)【要約】      （修正有）【課題】ソフトウェアを実行する実行装置に対する不正なソフトウェアの入力経路を推定する解析システムを提供する。【解決手段】実行装置１００において、感染原因機能の動作履歴を記録（Ｓ１１３）し、実行中の監視対象プログラムの挙動情報を取得（Ｓ１１５）し、監視対象プログラムを正常に実行させた場合の挙動モデル情報に挙動情報が適合しない場合（Ｓ１１６でＹＥＳ）に、不正なソフトウェアの入力経路に該当する条件を満たした感染原因機能と動作履歴に関する情報を含む異常機能情報を解析装置２００に出力（Ｓ１１９）する。解析装置２００は、各異常機能情報内の感染原因機能毎に動作履歴に関する情報を集計（Ｓ２１３）し、集計結果に基づいて感染原因機能を順位付け（Ｓ２１４）て感染経路危険度情報を出力（Ｓ２１５）する。【選択図】図９
2010267128.tif 000002
【特許請求の範囲】
【請求項１】
監視の対象となるソフトウェアである監視対象ソフトウェアを実行する１又は複数の実行装置と、当該実行装置に対する不正なソフトウェアの入力経路について解析する解析装置と備え、
各々の前記実行装置は、
前記監視対象ソフトウェアを実行する実行手段と、
前記監視対象ソフトウェアを正常に実行させた場合の挙動を表す挙動情報を挙動モデルとして記憶する挙動モデル記憶手段と、
自装置の外部から提供される情報を取得可能な複数の機能の各々について、当該機能の動作履歴を記録する記録手段と、
前記実行手段が前記監視対象ソフトウェアを実行したときの挙動を表す挙動情報を取得する挙動情報取得手段と、
前記挙動情報取得手段により取得された前記挙動情報が前記挙動モデル記憶手段に記憶された前記挙動モデルと適合するか否かを判定する判定手段と、
前記判定手段により前記挙動情報が前記挙動モデルに適合しないと判定された場合に、前記記録手段により各々の前記機能について記録された動作履歴を解析し、不正なソフトウェアの入力経路に該当する条件を満たす動作履歴が記録されている前記機能を特定する動作履歴解析手段と、
前記動作履歴解析手段により特定された前記機能と、当該機能の動作履歴に関する情報とを、前記解析装置に通知する通知手段とを備え、
前記解析装置は、
１又は複数の前記実行装置から通知された前記動作履歴に関する情報を前記機能毎に解析し、その解析結果に基づいて各々の前記機能の順位付けを行い、その順位付けの結果を前記実行装置に対する不正なソフトウェアの入力経路の危険度合を示す情報として出力する入力経路解析手段を備える
ことを特徴とする解析システム。
【請求項２】
前記実行装置において、
前記動作履歴解析手段は、各々の前記機能の動作履歴に含まれる動作の回数、動作の期間、前記動作の回数及び前記動作の期間の組み合わせのうち、少なくとも一つを前記機能毎に集計し、その集計結果が閾値を超えている前記機能を、不正なソフトウェアの入力経路に該当する条件を満たす動作履歴が記録されている機能として特定する
ことを特徴とする請求項１記載の解析システム。
【請求項３】
前記実行装置において、
前記通知手段は、前記動作履歴解析手段により特定された前記機能の動作履歴に関する情報として、当該機能の前記集計結果が前記閾値を超えていることを示すフラグ情報を通知し、
前記解析装置において、
前記入力経路解析手段は、１又は複数の前記実行装置から通知された前記フラグ情報の数を前記機能毎に集計し、その集計結果の順に前記機能の順位付けを行う
ことを特徴とする請求項２記載の解析システム。
【請求項４】
前記実行装置において、
前記動作履歴解析手段は、各々の前記機能の動作履歴に含まれる動作の回数、動作の期間、前記動作の回数及び前記動作の期間の組み合わせのうち、少なくとも一つが閾値を超えるたびに、当該機能を、不正なソフトウェアの入力経路に該当する条件を満たす動作履歴が記録されている機能として特定し、
前記通知手段は、前記動作履歴解析手段により特定された前記機能の動作履歴に関する情報として、当該機能の回数又は動作の期間が前記閾値を超えていることを示すフラグ情報を前記解析装置に通知し、
前記解析装置において、
前記入力経路解析手段は、１又は複数の前記実行装置から通知された前記動作履歴に関する情報が含まれるフラグ情報の数を前記機能毎に集計し、その集計結果の順に前記機能の順位付けを行う
ことを特徴とする請求項１記載の解析システム。
【請求項５】
監視対象となるソフトウェアである監視対象ソフトウェアを実行する実行手段と、
前記監視対象ソフトウェアを正常に実行させた場合の挙動を表す挙動情報を挙動モデルとして記憶する挙動モデル記憶手段と、
自装置の外部から提供される情報を取得可能な複数の機能の各々について、当該機能の動作履歴を記録する記録手段と、
前記実行手段が前記監視対象ソフトウェアを実行したときの挙動を表す挙動情報を取得する挙動情報取得手段と、
前記挙動情報取得手段により取得された前記挙動情報が前記挙動モデル記憶手段に記憶された前記挙動モデルと適合するか否かを判定する判定手段と、
前記判定手段により前記挙動情報が前記挙動モデルに適合しないと判定された場合に、前記記録手段により各々の前記機能について記録された動作履歴を解析し、不正なソフトウェアの入力経路に該当する条件を満たす動作履歴が記録されている前記機能を特定する動作履歴解析手段と、
前記動作履歴解析手段により特定された前記機能の前記動作履歴に関する情報を前記機能毎に解析し、その解析結果に基づいて各々の前記機能の順位付けを行い、その順位付けの結果を前記実行装置に対する不正なソフトウェアの入力経路の危険度合を示す情報として出力する入力経路解析手段を備える
ことを特徴とする解析装置。
【請求項６】
監視の対象となるソフトウェアである監視対象ソフトウェアを実行する実行装置が行う不正なソフトウェアの検知方法であって、
当該実行装置の外部から提供される情報を取得可能な複数の機能の各々について、当該機能の動作履歴を記録する記録ステップと、
前記監視対象ソフトウェアを実行したときの挙動を表す挙動情報を取得する挙動情報取得ステップと、
前記挙動情報取得ステップにより取得された前記挙動情報が、前記監視対象ソフトウェアを正常に実行した場合の挙動を表す挙動情報として予め記憶された挙動モデルと適合するか否かを判定する判定ステップと、
前記判定ステップにより前記挙動情報が前記挙動モデルに適合しないと判定された場合に、前記記録ステップにより各々の前記機能について記録された動作履歴を解析し、不正なソフトウェアの入力経路に該当するための条件を満たす動作履歴が記録されている前記機能を特定する動作履歴解析ステップと、
前記動作履歴解析ステップにより特定された前記機能と、当該機能の動作履歴に関する情報とを、不正なソフトウェアの入力経路について解析する解析装置に通知する通知ステップと
を有することを特徴とする検知方法。
【請求項７】
監視の対象となるソフトウェアである監視対象ソフトウェアを実行する１又は複数の実行装置に対する不正なソフトウェアの入力経路について解析する解析装置が行う解析方法であって、
前記１又は複数の実行装置から、当該実行装置が有する複数の機能のうち、不正なソフトウェアの入力経路に該当するための条件を満たす動作履歴が記録されている機能と、当該機能の動作履歴に関する情報とを取得する取得ステップと、
前記取得ステップにより取得された各々の前記機能の動作履歴に関する情報を当該機能毎に解析し、その解析結果に基づいて各々の前記機能の順位付けを行い、その順位付けの結果を不正なソフトウェアの入力経路の危険度合を示す情報として出力する入力経路解析ステップと
を有することを特徴とする解析方法。
【請求項８】
監視の対象となるソフトウェアである監視対象ソフトウェアを実行するコンピュータに、
当該コンピュータの外部から提供される情報を取得可能な複数の機能の各々について、当該機能の動作履歴を記録する記録ステップと、
前記監視対象ソフトウェアを実行したときの挙動を表す挙動情報を取得する挙動情報取得ステップと、
前記挙動情報取得ステップにより取得された前記挙動情報が、前記監視対象ソフトウェアを正常に実行した場合の挙動を表す挙動情報として予め記憶された挙動モデルと適合するか否かを判定する判定ステップと、
前記判定ステップにより前記挙動情報が前記挙動モデルに適合しないと判定された場合に、前記記録ステップにより各々の前記機能について記録された動作履歴を解析し、不正なソフトウェアの入力経路に該当するための条件を満たす動作履歴が記録されている前記機能を特定する動作履歴解析ステップと、
前記動作履歴解析ステップにより特定された前記機能と、当該機能の動作履歴に関する情報とを、不正なソフトウェアの入力経路について解析する解析装置に通知する通知ステップと
を実行させるためのプログラム。
【請求項９】
監視の対象となるソフトウェアである監視対象ソフトウェアを実行する１又は複数の実行装置に対する不正なソフトウェアの入力経路について解析するコンピュータに、
前記１又は複数の実行装置から、当該実行装置が有する複数の機能のうち、不正なソフトウェアの入力経路に該当するための条件を満たす動作履歴が記録されている機能と、当該機能の動作履歴に関する情報とを取得する取得ステップと、
前記取得ステップにより取得された各々の前記機能の動作履歴に関する情報を当該機能毎に解析し、その解析結果に基づいて各々の前記機能の順位付けを行い、その順位付けの結果を不正なソフトウェアの入力経路の危険度合を示す情報として出力する入力経路解析ステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不正なソフトウェアの入力経路を推定する技術に関する。
【背景技術】
【０００２】
ウィルス、ワーム、スパイウェア等の不正なソフトウェアプログラムは、マルウェアと総称されている。このマルウェアの挙動を自動解析するマルウェア挙動解析システムが下記特許文献１に開示されている。この特許文献１のマルウェア挙動解析システムは、マルウェアを実行する実行端末とマルウェアの挙動に関するログデータを解析するダミーサーバとを擬似インターネット環境で接続して構成し、実行端末においてマルウェアがＡＰＩ呼び出しを行う毎にＡＰＩ呼び出しログを収集してダミーサーバに送信し、ダミーサーバにおいては、マルウェア実行端末からのサーバアクセスに関するアクセスログやパケットログを収集する。ダミーサーバは、実行端末からのログと、自身が収集したログ及びビヘイビア定義ファイルとに基づいてマルウェアの振る舞いを抽出する。また、悪意のあるコードの実行を検知するための具体的な方法として、例えばプロセスがカーネルに対して処理を依頼する際に行う命令であるシステムコールの発行順の正当性を検証する方法（例えば、非特許文献1）や、システムコール発行時のコールスタックの状況を検証するもの(例えば、非特許文献２及び特許文献２)が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３３４５３６号公報
【特許文献２】特開２００７−１７９１３１号公報
【非特許文献１】S. Forrest et al, "Intrusion Detection using Sequences of System Calls", Journal of Computer Security Vol. 6, pp.151-180, 1998
【非特許文献２】H.Feng, "Anomaly Detection Using Call Stack Information", The proc. of IEEE Symposium on Security and Privacy, pp.62, 2003
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、マルウェアに対する対応策としては、そのマルウェアに感染したことを検知することに加え、どのような経路でマルウェアに感染したかを知ることが必要であるが、上述した従来技術では、感染経路を特定することは困難である。
【０００５】
本発明は、ソフトウェアを実行する実行装置に対する不正なソフトウェアの入力経路を推定することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る解析システムは、  監視の対象となるソフトウェアである監視対象ソフトウェアを実行する１又は複数の実行装置と、当該実行装置に対する不正なソフトウェアの入力経路について解析する解析装置とを備え、各々の前記実行装置は、前記監視対象ソフトウェアを実行する実行手段と、前記監視対象ソフトウェアを正常に実行させた場合の挙動を表す挙動情報を挙動モデルとして記憶する挙動モデル記憶手段と、自装置の外部から提供される情報を取得可能な複数の機能の各々について、当該機能の動作履歴を記録する記録手段と、前記実行手段が前記監視対象ソフトウェアを実行したときの挙動を表す挙動情報を取得する挙動情報取得手段と、前記挙動情報取得手段により取得された前記挙動情報が前記挙動モデル記憶手段に記憶された前記挙動モデルと適合するか否かを判定する判定手段と、前記判定手段により前記挙動情報が前記挙動モデルに適合しないと判定された場合に、前記記録手段により各々の前記機能について記録された動作履歴を解析し、不正なソフトウェアの入力経路に該当する条件を満たす動作履歴が記録されている前記機能を特定する動作履歴解析手段と、前記動作履歴解析手段により特定された前記機能と、当該機能の動作履歴に関する情報とを、前記解析装置に通知する通知手段とを備え、前記解析装置は、１又は複数の前記実行装置から通知された前記動作履歴に関する情報を前記機能毎に解析し、その解析結果に基づいて各々の前記機能の順位付けを行い、その順位付けの結果を前記実行装置に対する不正なソフトウェアの入力経路の危険度合を示す情報として出力する入力経路解析手段を備える。
【発明の効果】
【０００７】
本発明によれば、ソフトウェアを実行する実行装置に対する不正なソフトウェアの入力経路を推定することができる。
また、前記実行装置において、前記動作履歴解析手段は、各々の前記機能の動作履歴に含まれる動作の回数、動作の期間、前記動作の回数及び前記動作の期間の組み合わせのうち、少なくとも一つを前記機能毎に集計し、その集計結果が閾値を超えている前記機能を、不正なソフトウェアの入力経路に該当する条件を満たす動作履歴が記録されている機能として特定することととしてもよい。
【０００８】
また、前記実行装置において、前記通知手段は、前記動作履歴解析手段により特定された前記機能の動作履歴に関する情報として、当該機能の前記集計結果が前記閾値を超えていることを示すフラグ情報を通知し、前記解析装置において、前記入力経路解析手段は、１又は複数の前記実行装置から通知された前記フラグ情報の数を前記機能毎に集計し、その集計結果の順に前記機能の順位付けを行うこととしてもよい。
【０００９】
また、前記実行装置において、前記動作履歴解析手段は、各々の前記機能の動作履歴に含まれる動作の回数、動作の期間、前記動作の回数及び前記動作の期間の組み合わせのうち、少なくとも一つが閾値を超えるたびに、当該機能を、不正なソフトウェアの入力経路に該当する条件を満たす動作履歴が記録されている機能として特定し、前記通知手段は、前記動作履歴解析手段により特定された前記機能の動作履歴に関する情報として、当該機能の回数又は動作の期間が前記閾値を超えていることを示すフラグ情報を前記解析装置に通知し、前記解析装置において、前記入力経路解析手段は、１又は複数の前記実行装置から通知された前記動作履歴に関する情報が含まれるフラグ情報の数を前記機能毎に集計し、その集計結果の順に前記機能の順位付けを行うこととしてもよい。
【００１０】
また、本発明に係る解析装置は、監視対象となるソフトウェアである監視対象ソフトウェアを実行する実行手段と、前記監視対象ソフトウェアを正常に実行させた場合の挙動を表す挙動情報を挙動モデルとして記憶する挙動モデル記憶手段と、自装置の外部から提供される情報を取得可能な複数の機能の各々について、当該機能の動作履歴を記録する記録手段と、前記実行手段が前記監視対象ソフトウェアを実行したときの挙動を表す挙動情報を取得する挙動情報取得手段と、前記挙動情報取得手段により取得された前記挙動情報が前記挙動モデル記憶手段に記憶された前記挙動モデルと適合するか否かを判定する判定手段と、前記判定手段により前記挙動情報が前記挙動モデルに適合しないと判定された場合に、前記記録手段により各々の前記機能について記録された動作履歴を解析し、不正なソフトウェアの入力経路に該当する条件を満たす動作履歴が記録されている前記機能を特定する動作履歴解析手段と、前記動作履歴解析手段により特定された前記機能の前記動作履歴に関する情報を前記機能毎に解析し、その解析結果に基づいて各々の前記機能の順位付けを行い、その順位付けの結果を前記実行装置に対する不正なソフトウェアの入力経路の危険度合を示す情報として出力する入力経路解析手段を備える。
【００１１】
また、本発明に係る検知方法は、監視の対象となるソフトウェアである監視対象ソフトウェアを実行する実行装置が行う不正なソフトウェアの検知方法であって、当該実行装置の外部から提供される情報を取得可能な複数の機能の各々について、当該機能の動作履歴を記録する記録ステップと、前記監視対象ソフトウェアを実行したときの挙動を表す挙動情報を取得する挙動情報取得ステップと、前記挙動情報取得ステップにより取得された前記挙動情報が、前記監視対象ソフトウェアを正常に実行した場合の挙動を表す挙動情報として予め記憶された挙動モデルと適合するか否かを判定する判定ステップと、前記判定ステップにより前記挙動情報が前記挙動モデルに適合しないと判定された場合に、前記記録ステップにより各々の前記機能について記録された動作履歴を解析し、不正なソフトウェアの入力経路に該当するための条件を満たす動作履歴が記録されている前記機能を特定する動作履歴解析ステップと、前記動作履歴解析ステップにより特定された前記機能と、当該機能の動作履歴に関する情報とを、不正なソフトウェアの入力経路について解析する解析装置に通知する通知ステップとを有する。
【００１２】
また、本発明に係る解析方法は、監視の対象となるソフトウェアである監視対象ソフトウェアを実行する１又は複数の実行装置に対する不正なソフトウェアの入力経路について解析する解析装置が行う解析方法であって、前記１又は複数の実行装置から、当該実行装置が有する複数の機能のうち、不正なソフトウェアの入力経路に該当する条件を満たす動作履歴が記録されている機能と、当該機能の動作履歴に関する情報とを取得する取得ステップと、前記取得ステップにより取得された各々の前記機能の動作履歴に関する情報を当該機能毎に解析し、その解析結果に基づいて各々の前記機能の順位付けを行い、その順位付けの結果を不正なソフトウェアの入力経路の危険度合を示す情報として出力する入力経路解析ステップとを有する。
【００１３】
また、本発明に係るプログラムは、監視の対象となるソフトウェアである監視対象ソフトウェアを実行するコンピュータに、当該コンピュータの外部から提供される情報を取得可能な複数の機能の各々について、当該機能の動作履歴を記録する記録ステップと、前記監視対象ソフトウェアを実行したときの挙動を表す挙動情報を取得する挙動情報取得ステップと、前記挙動情報取得ステップにより取得された前記挙動情報が、前記監視対象ソフトウェアを正常に実行した場合の挙動を表す挙動情報として予め記憶された挙動モデルと適合するか否かを判定する判定ステップと、前記判定ステップにより前記挙動情報が前記挙動モデルに適合しないと判定された場合に、前記記録ステップにより各々の前記機能について記録された動作履歴を解析し、不正なソフトウェアの入力経路に該当するための条件を満たす動作履歴が記録されている前記機能を特定する動作履歴解析ステップと、前記動作履歴解析ステップにより特定された前記機能と、当該機能の動作履歴に関する情報とを、不正なソフトウェアの入力経路について解析する解析装置に通知する通知ステップとを実行させる。
【００１４】
また、本発明に係るプログラムは、監視の対象となるソフトウェアである監視対象ソフトウェアを実行する１又は複数の実行装置に対する不正なソフトウェアの入力経路について解析するコンピュータに、前記１又は複数の実行装置から、当該実行装置が有する複数の機能のうち、不正なソフトウェアの入力経路に該当するための条件を満たす動作履歴が記録されている機能と、当該機能の動作履歴に関する情報とを取得する取得ステップと、前記取得ステップにより取得された各々の前記機能の動作履歴に関する情報を当該機能毎に解析し、その解析結果に基づいて各々の前記機能の順位付けを行い、その順位付けの結果を不正なソフトウェアの入力経路の危険度合を示す情報として出力する入力経路解析ステップとを実行させる。
【図面の簡単な説明】
【００１５】
【図１】実施形態に係るソフトウェア解析システムの構成図である。
【図２】実施形態における実行装置１００の構成を示すブロック図である。
【図３】（ａ）は、実施形態のログ情報の例を示す図である。(ｂ)は、実施形態の閾値テーブルの例を示す図である。(ｃ)は、実施形態の挙動モデル情報の例を示す図である。
【図４】実施形態の実行装置１００の機能ブロック図である。
【図５】実施形態の異常機能情報８０の例を示す図である。
【図６】実施形態の解析装置２００の構成図である。
【図７】実施形態の解析装置２００の機能ブロック図である。
【図８】実施形態の感染経路危険度情報の例を示す図である。
【図９】実施形態の実行装置１００及び解析装置２００の動作フロー図である。
【図１０】変形例に係るログ情報の例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明の実施形態に係るソフトウェア解析システムについて説明する。以下の説明において、ソフトウェアプログラムとは、コンピュータプログラムやデータの総称である。
＜実施形態＞
＜構成＞
図１は、本実施形態に係るソフトウェア解析システムの構成例を示す図である。ソフトウェア解析システム１は、複数の実行装置１００ａ〜１００ｃ(以下、各々の実行装置を区別する必要がない場合には、実行装置１００と言う)と解析装置２００とで構成され、実行装置１００と解析装置２００は、ＬＡＮ(Local  Area  Network)、ＷＡＮ(World  Area  Network)、インターネット等のネットワークを介して接続されている。
【００１７】
本実施形態では、監視対象となるソフトウェアプログラム(以下、監視対象プログラムと言う)が実行装置１００において実行される。この実行装置１００には、電子メールの送受信機能やＢｌｕｅｔｏｏｔｈ(登録商標)規格に従った通信機能等のように、実行装置１００の外部から提供される情報を取得可能な機能が複数設けられている。これらの機能を介して実行装置１００に対し外部からウィルスなどが入力され、実行装置１００そのもの又はこの実行装置１００内の監視対象ソフトウェアがウィルスに感染することになる。そこで、このようなウィルス感染の入力経路となりうる機能を、以下では、感染原因機能と言う。ウィルスに感染することよって監視対象ソフトウェアの挙動が異常となったと判定された場合には、その判定結果が実行装置１００から解析装置２００に通知される。解析装置２００は、その通知に応じて、実行装置１００における感染原因機能の動作履歴に基づき、ウィルス感染経路（つまり実行装置１００に対してウィルスが入力された経路）を推定する。以下、実行装置１００と解析装置２００の詳細について説明する。
【００１８】
＜実行装置１００の構成＞
図２は、実行装置１００の構成を示すブロック図である。実行装置１００は、携帯電話機、パーソナルコンピュータ、又はＰＤＡ（Personal Digital Assistants）等で実現され、以下の各部を含んで構成されている。
ＣＰＵ１１０は、ＲＯＭ（Read Only Memory）１１１又は後述の記憶部１１３に記憶されている監視対象プログラムを含む各種プログラムを、ＲＡＭ（Random Access Memory）１１２をワークエリアとして実行することによって、ＣＰＵ１１０に接続されている各部を制御する。実行装置１００は、例えばＷｉｎｄｏｗｓ（登録商標）系のＯＳ(Operating  System)を用いており、各プログラムはこのＯＳのＡＰＩ(Application  Program  Interface)を介して外部割込みや内部割込みを行い、割込み種別に応じた各処理を行う。なお、ＯＳは、Ｗｉｎｄｏｗｓ系ＯＳに限らず、Ｌｉｎｕｘ等のＵｎｉｘ（登録商標）系の任意のＯＳを用いてもよい。
【００１９】
記憶部１１３は、ハードディスク等の不揮発性記憶媒体で構成されており、監視対象プログラム、この監視対象プログラムの挙動が異常か否か判断するための検知プログラムや、電子メール用プログラム(不図示)等のアプリケーションソフトウェアプログラムを記憶している。また、記憶部１１３は、感染原因機能のログ情報、このログ情報に対する閾値が記述された閾値テーブル、及び挙動モデル情報等の各種データを記憶している。監視対象プログラムの挙動とは、ＣＰＵ１１０がその監視対象プログラムに記述された手順に従って処理を行うときの、そのＣＰＵ１１０による処理内容のことである。
【００２０】
入力部１１４は、キーボードやマウス等を含んで構成されており、ユーザからの入力操作を受付け、入力操作に応じた入力信号をＣＰＵ１１０へ供給する。表示部１１５は、液晶等のディスプレイで構成されており、実行装置１００を起動した際の画面や各プログラムにより規定されている画面等、各種画像を表示する。ネットワーク通信部１１６は、ＣＰＵ１１０の制御の下、ネットワークを介して接続された解析装置２００との間でデータ通信を行う。外部メモリ接続部１１７は、ＵＳＢ(Universal  Serial  Bus)メモリやＳＤメモリカード等の外部メモリを接続するコネクタを有し、コネクタに接続された外部メモリとの間でデータの受け渡しを行う。Ｂｌｕｅｔｏｏｔｈ(登録商標)通信部１１８は、Ｂｌｕｅｔｏｏｔｈ(登録商標)規格に対応した機器との間で通信を確立し、当該機器との間でデータの送受信を行う。
【００２１】
次に、記憶部１１３に記憶されているデータについて説明する。
図３(ａ)は、ログ情報の一例を示している。ログ情報５０は、外部メモリ接続部１１７、Ｂｌｕｅｔｏｏｔｈ(登録商標)通信部１１８及び入力部１１４が実現する各機能や、電子メール用プログラムが実行されることで実現されるメール送受信機能といった、各感染原因機能における動作履歴を表す情報であり、例えば、各々の感染原因機能による動作の回数又は動作の期間が含まれている。
例えば、図３(ａ)に示す「メール送受信」の機能に関しては、電子メール用プログラムを実行して送受信された送信メールの送信日時及び受信メールの受信日時がログ情報として記憶される。本実施形態では、ログ情報５０の種別は２種類あり、ここでは、送信メールの送信日時がログ種別１で、受信メールの受信日時がログ種別２である。「送信日時」の記録数が集計されることにより、「メール送受信」の機能による電子メールの送信回数が特定される。なお、メールの受信日時としては、全ての受信メールの受信日時を記憶するようにしてもよいし、電子メールのアドレス帳に登録されていないアドレスからの電子メールの受信日時のみを記録するようにしてもよい。
【００２２】
また、「Ｂｌｕｅｔｏｏｔｈ(登録商標)」の機能に関しては、Ｂｌｕｅｔｏｏｔｈ(登録商標)の規格に従って通信が行われた日時と、Ｂｌｕｅｔｏｏｔｈ(登録商標)の規格に従って連続して通信可能となっている状態(以下、連続ＯＮ時間と言う)の時間がログ情報として記憶される。Ｂｌｕｅｔｏｏｔｈ(登録商標)規格による通信(以下、Ｂｌｕｅｔｏｏｔｈ(登録商標)通信と言う)を介して感染する“ｃａｂｉｒ”等のウィルスは、Ｂｌｕｅｔｏｏｔｈ(登録商標)通信が長時間連続して可能になっている場合に感染しやすいため、連続ＯＮ時間は感染経路を特定する際の有用な情報となる。
【００２３】
また、「外部メモリ」の機能に関しては、外部メモリ接続部１１７に外部メモリが着脱された着脱日時と、外部メモリとの間でアクセスが行われたアクセス日時がログ情報として記憶される。外部メモリは、実行装置１００以外の他の機器で使用されることがあり、他の機器においてウィルスに感染したファイルが記憶された状態の外部メモリを実行装置１００に接続して使用した場合には、実行装置１００がウィルスに感染する可能性があるため、外部メモリの着脱頻度が多いほどウィルスに感染する可能性が高くなる。また、「キーボード入力」の機能に関しては、記号を連続して所定文字数以上入力する操作が行われた日時、及び所定回数以上の同一キー連続操作が行われた日時がログ情報として記憶される。このキーボードにおける入力操作によって、実行装置１００にウィルスが入力される可能性もある。
【００２４】
図３(ｂ)は、閾値テーブルの一例を示している。同図に示すように、閾値テーブル６０には、予め定められた所定期間分の図３(ａ)のログ情報５０をログ種別1・２毎に集計した結果に対する閾値が記憶されている。ログ情報５０を集計した結果がこの閾値を超えた場合、そのログ情報に対応する感染原因機能が頻繁に使用されたことを意味するから、その感染原因機能がウィルスの感染経路に該当する可能性は高い。つまり、閾値を超えるようなログ情報の集計結果は、ウィルスの入力経路に該当する条件を満たす動作履歴と言える。
【００２５】
図３(ｃ)は、挙動モデル情報の一例を示している。挙動モデル情報７０は、監視対象プログラム３０を正常に実行した場合の挙動を表す挙動情報であり、ここでは、監視対象プログラム３０から呼び出されるシステムコールの列をモデル化した情報である。本実施形態では、挙動モデル情報７０は記憶部１１３に予め記憶されているものとして説明を行うが、外部から挙動モデル情報７０を取得して記憶部１１３に記憶するようにしてもよい。具体的には、挙動モデル情報７０には、監視対象プログラム３０を識別するプログラムＩＤと、システムコールの種別と、そのシステムコールの呼び出し順とが含まれている。同図の例において、プログラムＩＤ“００１”の監視対象プログラム３０を正常に動作させた場合のシステムコールの呼び出し順は、システムコールＡ→Ｂ→Ａ→Ｃ・・・となる。本実施形態においては、説明の便宜上、監視対象プログラム３０は１つであるものとして説明を行うが、複数の監視対象プログラム３０がある場合には、各々の監視対象プログラム３０について挙動モデル情報７０が記憶されている。そして、上記のように記憶されている挙動モデルのシステムコール列と、監視対象プログラム３０を実行させたときのシステムコール列とが適合するか否かが判断されることにより、監視対象プログラム３０の挙動が異常か否かが判断される。
【００２６】
次に、図４を用いて、本実施形態における実行装置１００の機能の説明を行う。実行装置１００においては、ＣＰＵ１１０が記憶部１１３に記憶されている検知プログラムを読み出して実行することにより、図４に示す、プログラム実行部１１、ログ記録部１２、挙動情報取得部１３、異常判定部１４、ログ解析部１５、及び異常通知部１６の各機能が実現される。
プログラム実行部１１は、ＯＳの機能を含んでおり、記憶部１１３に記憶されている監視対象プログラム３０を遂次読み出して実行する。本実施形態は、シングルプロセッサで構成されているため、プログラム実行部１１が、監視対象プログラム３０以外に、検知プログラムや他のアプリケーションプログラムの実行制御も行うが、マルチプロセッサで構成されている場合には、プログラム毎にプログラム実行部１１を設けるようにしてもよい。
【００２７】
ログ記録部１２は、ＯＳ４０を介して上述した感染原因機能のログ種別１・２の動作履歴を遂次取得し、記憶部１１３にログ情報５０として記憶する。
挙動情報取得部１３は、検知プログラムの起動後に、ＯＳ４０で用意されているシステムコールをフックするフック処理を行い、監視対象プログラム３０からＡＰＩを介して呼び出したシステムコールの種別を順次取得し、取得したシステムコールの種別を監視対象プログラムの挙動情報として異常判定部１４に供給する。
【００２８】
ここで、システムコールのフック処理について説明する。本実施形態の検知プログラムは、ＯＳの起動と同時に起動し、特権モードで動作するデバイスドライバを含んで構成されている。このデバイスドライバにより、システムコールの入口の命令、例えば、システムコールのアドレス等が配列されたテーブルから該当するシステムコールのアドレスを特定し、該当するシステムコールに制御を移行する命令を、システムコールをフックするコードが記述されたフック処理ルーチンにジャンプする命令に書き換えられる。この書き換えによって、フック処理ルーチンが実行され、監視対象プログラム３０から呼び出したシステムコールが取得される。なお、フック処理ルーチンの実行により、命令の書き換え前に元の命令が保存され、フック処理ルーチンに移行した後の最初にレジスタ群の値を保存される。そして、フック処理ルーチンの最後に、呼び出し元の監視対象プログラム３０のアドレスが、戻しアドレス用として予め設定されたレジスタに設定され、保存した命令とレジスタ群の値を書き戻す処理が行われ、監視対象プログラム３０から呼び出された本来のシステムコールの処理に制御が移行される。
【００２９】
異常判定部１４は、挙動情報取得部１３から供給された挙動情報と記憶部１１３に記憶されている挙動モデル情報７０とを照合し、挙動モデル情報７０に含まれるシステムコール列の順にシステムコールが呼び出されていない場合には監視対象プログラムが異常であると判断し、その判断結果をログ解析部１５へ供給する。この異常であるか否かの判断は、本実施形態においては、挙動情報、即ちシステムコールを取得する毎に行う。
【００３０】
ログ解析部１５は、異常判定部１４から異常である旨の判断結果を受付けた場合に、ウィルスに感染経路の可能性のある感染原因機能を特定する。具体的には、ログ解析部１５は、記憶部１１３に記憶されているログ情報５０のうち、所定期間分のログ情報をログ種別1・２ (以下、ログ種別１・２を特に区別しない場合にはログ種別と言う)について集計する。なお、図３(ａ)の各感染原因機能のログ種別毎にログ情報５０が集計されることにより得られる集計内容は、図３(ｃ)に示す各感染原因機能のログ集計種別１・２の各々で示される内容である。例えば、メールの機能の場合には、ログ種別１「送信日時」の記録数が集計されることによりログ集計種別１「送信件数」が求められ、ログ種別２「受信日時」の記録数が集計されることによりログ集計種別２「受信件数」が求められる。そして、ログ解析部１５は、上記した集計結果が記憶部１１３に記憶されている閾値テーブル６０の閾値を超えているログ集計種別１・２(以下、ログ集計種別1・２を区別しない場合にはログ集計種別と言う)に対応する感染原因機能を特定する。つまり、このとき特定された感染原因機能は、ウィルスの入力経路に該当する条件を満たす動作履歴が記録されている感染原因機能と言える。そして、ログ解析部１５は、特定した感染原因機能のログ集計種別と、ログ集計種別毎の集計結果とを異常通知部１６へ供給する。なお、異常が検知された後もユーザは実行装置１００を継続して利用しているため、上記所定期間は、例えば、異常が検知された異常検知時点より前の一定期間や、異常検知時点より後の一定期間でもよいし、異常検知時点の前後一定期間であってもよく、ログ情報５０の最小記録単位以上であればどのような期間であってもよい。
【００３１】
異常通知部１６は、異常判定部１４から集計されたログ情報５０を受付け、図５に示すように、閾値を超えている各感染原因機能の各ログ集計種別に対するフラグを１、閾値を超えていない各ログ集計種別に対するフラグを０に設定し、監視対象プログラム３０のプログラムＩＤと対応付けた異常機能情報８０を生成する。つまり、このフラグ情報は、ログ情報の集計結果が閾値を超えることを表すフラグ情報であり、感染原因機能の動作履歴に関する情報である。そして、異常通知部１６は、生成した異常機能情報８０をネットワーク通信部１１６を介して解析装置２００へ送信する。これにより、感染原因機能の動作履歴に関する情報が、解析装置２００に通知されることになる。
【００３２】
＜解析装置２００の構成＞
図６は、解析装置２００の構成を示すブロック図である。解析装置２００は、パーソナルコンピュータやサーバ装置等で実現され、以下の各部を含んで構成されている。
ＣＰＵ２１０は、ＲＯＭ２１１や後述する記憶部２１３に記憶されているプログラムを、ＲＡＭ２１２をワークエリアとして実行することによって、ＣＰＵ２１０に接続されている各部を制御する。記憶部２１３は、ハードディスク等の不揮発性記憶媒体で構成されており、実行装置１００から送信された異常機能情報８０などの各種データや制御プログラムを記憶している。入力部２１４は、キーボードやマウス等を含んで構成されており、ユーザからの入力操作を受付け、入力操作に応じた入力信号をＣＰＵ２１０へ供給する。表示部２１５は、液晶等のディスプレイで構成されており、解析装置２００を起動した際の画面や制御プログラムにより規定されている画面等、各種画像を表示する。ネットワーク通信部２１６は、ＣＰＵ２１０の制御の下、ネットワークを介して接続された実行装置１００との間でデータ通信を行う。
【００３３】
次に、解析装置２００の機能について図７を用いて説明する。図７において、解析装置２００のＣＰＵ２１０が記憶部２１３に記憶されている制御プログラムを読み出して実行することにより、情報抽出部２１及び危険解析部２２の機能が実現される。情報抽出部２１は、ネットワーク通信部２１６を介して実行装置１００から受信した異常機能情報８０に含まれている各監視対象プログラムのフラグを感染原因機能毎に抽出し、抽出した各監視対象プログラムの感染原因機能毎のフラグを危険解析部２２へ供給する。危険解析部２２は、情報抽出部２１から供給された各監視対象プログラムの感染原因機能毎のフラグを受け取り、各監視対象プログラムの感染原因機能毎のフラグの数を集計する。そして、感染原因機能毎の集計結果の降順で順位付けを行い、順位付けた結果を、実行装置１００に対するウィルスの入力経路の危険度合を示す感染経路危険度情報として図８に示すようにして表示部２１５に表示する。図８の例では、Ｂｌｕｅｔｏｏｔｈ通信に関する機能が、ウィルスの感染経路に該当する可能性が最も高く、キーボード入力に関する機能が、ウィルスの感染経路に該当する可能性が最も低いことを意味している。なお、フラグの集計値が同値である感染原因機能がある場合には、予め定めた感染原因機能の優先順位に従って順位付けを行うようにしてもよいし、ユーザが任意に選択して順位付けを行うようにしてもよい。
【００３４】
（動作）
次に、ソフトウェア解析システム１の動作について説明する。図９は、実行装置１００の動作フロー図である。実行装置１００において、ユーザにより電源がＯＮにされると、ＣＰＵ１１０は、記憶部１１３のブートセクタを読み込んでＯＳを起動し(ステップＳ１１１)、記憶部１１３に記憶されている検知プログラムを読み出して起動し、システムコールの入口の命令をＲＡＭ１１２に保存してフック処理ルーチンのアドレスにジャンプする命令に書き換える(ステップＳ１１２)。次に、ＣＰＵ１１０は、各感染原因機能のログ情報５０の記録を開始し(ステップＳ１１３)、ＯＳと検知プログラムが起動した後に、ユーザが、入力部１１４を介して監視対象プログラム３０を実行する操作を行うと、ＣＰＵ１１０は、記憶部１１３に記憶されている監視対象プログラム３０を読み出して実行する(ステップＳ１１４)。
【００３５】
ＣＰＵ１１０は、ユーザが入力部１１４を介して行う操作に応じて、監視対象プログラム３０に従った各処理を行い、監視対象プログラム３０からシステムコールが呼び出される毎に、フック処理ルーチンを実行して現在のレジスタ値をＲＡＭ１１２に保存してシステムコールをフックし、フックしたシステムコールの種別を示す挙動情報をＲＡＭ１１２に順次記憶する(ステップＳ１１５)。なお、ＣＰＵ１１０は、フック処理ルーチンの最後に、監視対象プログラム３０のアドレスを戻しアドレス用レジスタに設定し、保存した命令とレジスタ値とを書き戻して本来のシステムコールの処理を行う。
【００３６】
ＣＰＵ１１０は、ステップＳ１１６においてＲＡＭ１１２に順次記憶された挙動情報を読み出し、記憶部１１３に記憶されている挙動モデル情報７０と照合する(ステップＳ１１６)。ＣＰＵ１１０は、取得した挙動情報のシステムコール列が挙動モデル情報７０で示されるシステムコール列の順に含まれていなければ(ステップＳ１１６：ＮＯ)、監視対象プログラム３０が異常であると判定し、記憶部１１３に遂次記録されているログ情報５０を読み出し、所定期間分の各感染原因機能のログ情報５０をログ種別毎に集計する(ステップＳ１１７)。なお、この所定期間が、異常であると判定された判定時点後の一定期間である場合や、判定時点を含む前後一定期間である場合には、判定時点の時刻情報を記憶部１１３の所定領域に記憶しておき、判定時点から一定期間が経過したときにステップＳ１１７以下の処理を行う。また、所定期間が判定時点以前の一定期間である場合には、ステップＳ１１７に続いて以下の処理を行う。
【００３７】
ＣＰＵ１１０は、記憶部１１３に記憶されている閾値テーブル６０を読み出し、各感染原因機能のログ種別毎に集計されたログ情報５０について、閾値を超えているか否か判断する (ステップＳ１１８)。ＣＰＵ１１０は、各感染原因機能について集計されたログ情報５０が閾値を超えていると判断した場合には(ステップＳ１１８：ＹＥＳ)、閾値を超えている感染原因機能のログ集計種別のフラグを１に設定し、閾値を超えていないログ集計種別のフラグを０に設定して異常機能情報８０を生成し、ネットワーク通信部１１６を介して解析装置２００へ送信する(ステップＳ１１９)。
【００３８】
なお、ステップＳ１１６において、ＣＰＵ１１０は、取得した挙動情報のシステムコール列が挙動モデル情報７０で示されるシステムコール列の順序で含まれていると判断した場合には(ステップＳ１１６：ＹＥＳ)、実行中の監視対象プログラム３０が終了するまでステップＳ１１５以下の処理を繰り返し行う(ステップＳ１２０：ＮＯ)。そして、監視対象プログラム３０が終了した場合(ステップＳ１２０：ＹＥＳ)、ＣＰＵ１１０は、ユーザによって実行装置１００の電源がオフにされるまで各感染原因機能のログ情報５０の記録を継続して行い(ステップ１２１：ＮＯ)、電源がオフにされたときに(ステップＳ１２１：ＹＥＳ)、ログ情報５０の記録を終了して検知プログラムを終了する(ステップＳ１２２)。
また、ステップＳ１１８において、ＣＰＵ１１０は、感染原因機能毎に集計されたログ情報５０が閾値を超えていなければ(ステップＳ１１８：ＮＯ)、ステップＳ１２０以下の処理を行う。
【００３９】
次に、解析装置２００の動作について説明する。ＣＰＵ２１０は、ネットワーク通信部２１６を介して実行装置１００から各監視対象プログラム３０の異常機能情報８０を受信すると(ステップＳ２１１)、監視対象プログラム３０毎に、異常機能情報８０に含まれている各感染原因機能のフラグデータを抽出する(ステップＳ２１２)。そして、ＣＰＵ２１０は、抽出した各監視対象プログラム３０の感染原因機能のフラグデータを感染原因機能毎に集計し(ステップＳ２１３)、各監視対象プログラム３０の集計結果の降順で感染原因機能に順位付けを行う(ステップＳ２１４)。ＣＰＵ２１４は、ステップＳ２１４で順位付けた順位が高いほど感染経路の危険度が高いものとして表した感染経路危険度情報９０を生成して表示部２１５に表示する(ステップＳ２１５)。
【００４０】
上記実施形態では、ユーザを含め異なる実行環境下におかれた実行装置１００毎に各監視対象プログラムを実行させて、監視対象プログラム３０が異常であるか否か判断し、異常である場合には、各実行装置１００において記録されている感染原因機能について集計したログ情報のうち閾値を超えている機能か否かを示す異常機能情報８０を解析装置２００へ通知することができる。また、解析装置２００では、各実行装置１００からの通知を集計することにより、ウィルスの感染経路の危険度を推定することができる。これにより、特に、未知のウィルス感染による監視対象プログラムの挙動に関する情報を幅広く収集することができる。また、ウィルスの種類に応じて感染経路が異なる場合があるが、その場合であっても、ウィルスの感染経路として考えられる感染原因機能の危険度合を順位で示すことができるので、ウィルスを特定した場合にどの機能が感染経路として危険であるかを確認することができ、ウィルスの特性を更に解析する場合やウィルスを除去する場合の対策が取りやすくなる。
【００４１】
＜変形例＞
以下、本発明の変形例について説明する。
（１）上述した実施形態では、実行装置１００において、監視対象プログラム３０が異常であると判断された場合、所定期間分の感染原因機能毎のログ情報５０を集計した結果が閾値を超えている感染原因機能を特定し、異常機能情報８０を解析装置２００へ通知する例であったが、以下のように構成してもよい。例えば、実行装置１００のＣＰＵ１１０は、各感染原因機能の所定期間分のログ情報５０を一定期間単位に累計し、累計値が閾値を超える毎に、実施形態と同様に、各感染原因機能のログ種別毎のフラグデータを含む異常機能情報８０を解析装置２００へ通知し、解析装置２００において、実施形態と同様に、通知された異常機能情報８０を感染原因機能毎に集計して順位付けを行うようにしてもよい。
【００４２】
（２）また、上述した実施形態では、異常機能情報８０として感染原因機能のログ集計種別毎に設定されたフラグデータを解析装置２００へ出力する例であったが、実行装置１００のＣＰＵ１１０は、異常機能情報８０として、閾値を超えていると判断されたログ情報５０の集計結果を出力してもよいし、上記変形例(１)のように一定期間単位に累計した累計値が閾値超えたか否かを判断する場合には、閾値を超えた各感染経路機能の回数を異常機能情報８０として出力するようにしてもよい。
【００４３】
（３）また、上述した実施形態では、実行装置１００は、所定期間分のログ情報５０を集計した集計結果が閾値を超えている感染原因機能を特定する例であったが、例えば、実行装置１００のＣＰＵ１１０は、所定期間内において２つの期間を設定し、各期間における感染原因機能毎のログ情報５０の累計値を求め、各期間の累計値の増加率が所定の閾値以上である感染原因機能を特定するように構成してもよい。
【００４４】
（４）また、上述した実施形態では、実行装置１００は、監視対象プログラム３０の挙動が異常であると判断した場合に、閾値を超えている感染原因機能を特定するものとして説明したが、以下のように構成してもよい。実行装置１００において、ＣＰＵ１１０は、監視対象プログラム３０の挙動が異常であると判断した場合に、所定期間分の感染原因機能のログ情報５０を解析装置２００に送信する。そして、解析装置２００において閾値テーブル６０を予め記憶しておき、実行装置１００から送信されたログ情報５０を用いて閾値を超えている感染原因機能を特定するようにしてもよい。
【００４５】
（５）上述した実施形態では、解析装置２００が複数の実行装置１００から受信した異常機能情報８０に基づいて感染原因機能の順位付けを行う構成であったが、各実行装置１００の異常機能情報８０から実行装置１００毎に感染原因機能の順位付けを行うようにしてもよい。この場合には、その異常機能情報８０の順位付けを行った感染経路危険度情報を解析装置２００が各実行装置１００に送信するように構成してもよい。
【００４６】
（６）上述した実施形態では、実行装置１００における閾値テーブル６０は共通であるものとして説明したが、実行装置１００毎に異なる閾値テーブル６０を設定するようにしてもよい。また、各実行装置１００のログ情報５０に基づいて、各感染原因機能のログ種別毎に求めた平均値等を各感染原因機能のログ種別毎の閾値として設定するようにしてもよい。また、１日単位で各感染原因機能のログ種別毎のログ情報５０を集計する場合には、休日と平日とで異なる閾値を設定する等、任意に閾値を設定するように構成してもよい。
【００４７】
（７）上述した実施形態では、異常機能情報８０には閾値を超えていない感染原因機能の情報も含むものとして説明したが、閾値を超えている感染原因機能と、その感染原因機能のログ種別毎に集計されたログ情報５０、その感染原因機能のフラグデータ、その感染原因機能を示す情報のいずれかを異常機能情報８０として送るようにしてもよいし、これらを組み合わせて異常機能情報８０に含ませてもよい。
【００４８】
（８）上述した実施形態では、実行装置１００において監視対象プログラム３０が異常であると判断されたときに、所定期間分の各感染原因機能のログ情報５０を集計するものとして説明したが、予め一定の時間又は日単位にログ情報５０をログ種別毎に累計した累計値を動作履歴として記憶するように構成してもよい。
【００４９】
（９）また、上述した実施形態では、実行装置１００は、挙動モデル情報７０として、システムコール列をモデル化したものを記憶している例であったが、監視対象プログラムにおけるサブルーチンが呼び出されたときのコールスタック内のリターンアドレスの列をモデル化して記憶するようにしてもよい。この場合には、実行装置１００において、監視対象プログラムを実行させた場合におけるサブルーチン呼び出し時にコールスタックの列を挙動情報として取得し、実施形態と同様に監視対象プログラム３０のプログラムＩＤと対応づけて記憶するように構成する。
【００５０】
（１０）また、上述した実施形態では、実行装置１００において、システムコールの入口の命令をフック処理ルーチンに制御を移行する命令に書き換えてシステムコールをフックする例であったが、システムコールのフックを以下のようにして行ってもよい。例えば、実行装置１００において、ソフトウェア割込み時のジャンプ先としてフック処理ルーチンのアドレスを割込みベクタテーブルに予め設定しておくことによりシステムコールをフックしてもよいし、監視対象プログラム３０と本来のｄｌｌファイルとの間にシステムコールをフックするためのフック用ｄｌｌファイルを設け、監視対象プログラム３０からのシステムコールの呼び出し要求をフック用ｄｌｌファイルを介して本来のｄｌｌファイルに渡し、フック用ｄｌｌファイルにより監視対象プログラム３０が呼び出したシステムコールを取得してもよい。また、Ｌｉｎｕｘ等のＵｎｉｘ系ＯＳの場合には、ｐｔｒａｃｅのシステムコールを用いて監視対象プログラム３０が呼び出したシステムコールをフックするようにしてもよい。
【００５１】
（１１）また、上述した実施形態では、実行装置１００は異常機能情報８０を解析装置２００へ送信する例であったが、異常機能情報８０以外に監視対象プログラム３０のバージョンやＯＳ等の動作環境、監視対象プログラム３０と同時に起動しているソフトウェア、時間、場所など、感染経路を解析するのに必要な各種情報を適宜送信してもよい。
【００５２】
（１２）また、上述した実施形態では、実行装置１００は、外部メモリ接続機能、Ｂｌｕｅｔｏｏｔｈ(登録商標)通信機能、電子メール送受信機能についてログ情報５０を記録するものとして説明したが、実行装置１００が、これら以外の機能、例えば、ＷＥＢページ閲覧機能、赤外線通信機能、パソコン接続機能、ＩＣチップによる通信機能等を有している場合には、図１０に示すように、上記各機能のログ種別１〜３の各ログ情報５０'を記憶部１１３に記録するようにしてもよい。なお、ＷＥＢページ閲覧機能におけるログ種別３「非公式ページアクセス日時」は、所定の公式ページに対応する非公式ページのＵＲＬを予めユーザにより設定し、設定されている非公式ページがアクセスされた日時を記録するようにする。また、実施形態では、ログ種別は２種類の例について説明したが、実施形態及び上記変形例で示した種類以上でもよいし、１種類であってもよい。
【００５３】
（１３）また、上述した実施形態の動作フロー(図９)において、実行装置１００は、所定期間内のログ情報５０を集計した結果のうち閾値を超えている感染原因機能がない場合にはステップＳ１２０の処理を移行する(ステップＳ１１８：ＮＯ)ものとして説明したが、実行装置１００は、ユーザから新たに所定期間を入力する操作を入力部１１４を介して受付けた場合には、入力された所定期間内のログ情報５０を集計してステップＳ１１８以下の処理を行うようにしてもよい。
【００５４】
（１４）上述した実施形態では、実行装置１００における挙動モデル情報７０は、監視プログラム３０を正常な状態で実行させた場合におけるシステムコール列の情報を予め記憶するものとして説明したが、正常ではないパターンのシステムコール列の情報を挙動モデル情報７０として予め記憶するようにしてもよいし、外部から取得するようにしてもよい。この場合には、実行装置１００は、監視プログラム３０の実行中に取得した挙動情報が挙動モデル情報７０で示されるシステムコール列の順に含まれていれば、監視プログラム３０は異常であると判断し、挙動情報が挙動モデル情報７０で示されるシステムコール列の順に含まれていなければ、監視プログラム３０は正常であると判断するようにする。
また、挙動モデル情報７０は、監視プログラム３０のソースコードを解析してシステムコール列をモデル化したものを予め記憶するように構成してもよい。
【００５５】
（１５）上述した実施形態では、監視プログラム３０を正常な状態で実行させた場合の挙動モデル情報７０と、監視プログラム３０の実行中に取得した挙動情報とを照合するものとして説明したが、既知のウィルスの挙動パターンと組み合わせて挙動情報を照合するようにしてもよい。
この場合には、実行装置１００において、既知のウィルスの挙動パターンを示すウィルスパターン情報を記憶部１１３に記憶しておく。そして、実行装置１００において、実施形態と同様に挙動情報と挙動モデル情報７０とを照合し、監視プログラム３０が異常であると判断した場合に、取得した挙動情報とウィルスパターン情報とを照合してウィルスパターンと一致した場合には、一致したウィルスパターンの情報を異常機能情報８０と共に解析装置２００へ出力し、一致しなかった場合には異常機能情報８０だけを解析装置２００へ出力するようにしてもよい。
（１６）また、上述した実施形態では、各実行装置１００において異常を検知した場合に解析装置２００に異常機能情報８０を送信し、解析装置２００において異常機能情報を集計して感染原因機能について順位付けを行う例であったが、各実行装置１００において、自装置における異常機能情報８０に対し解析装置２００と同様に感染原因機能毎にフラグの集計を行い、感染原因機能の順位付けを行うように構成してもよいし、順位づけた結果を解析装置２００へ送信するようにしてもよい。
【００５６】
（１７）上述の実施形態における実行装置１００及び解析装置２００のＣＰＵ１１０及びＣＰＵ２１０によって実行されるプログラムは、磁気記録媒体（磁気テープ、磁気ディスクなど）、光記録媒体（光ディスクなど）、光磁気記録媒体、半導体メモリなどのコンピュータが読取可能な記録媒体に記憶した状態で提供し得る。また、インターネットのようなネットワーク経由で実行装置１００及び解析装置２００にダウンロードさせることも可能である。なお、このような制御を行う制御手段としてはＣＰＵ以外にも種々の装置を適用することができ、例えば、専用のプロセッサなどを用いてもよい。
【符号の説明】
【００５７】
１・・・ソフトウェア解析システム、１１・・・プログラム実行部、１２・・・ログ記録部、１３・・・挙動情報取得部、１４・・・異常判定部、１５・・・ログ解析部、１６・・・異常通知部、２１・・・情報抽出部、２２・・・危険解析部、１００・・・実行装置、１１０，２１０・・・ＣＰＵ、１１３，２１３・・・記憶部、１１４，２１４・・・入力部、１１５，２１５・・・表示部、１１６，２１６・・・ネットワーク通信部、１１７・・・外部メモリ接続部、１１８・・・Ｂｌｕｅｔｏｏｔｈ(登録商標)通信部、２００・・・解析装置。
【図１】
2010267128.tif 000003
【図２】
2010267128.tif 000004
【図３】
2010267128.tif 000005
【図４】
2010267128.tif 000006
【図５】
2010267128.tif 000007
【図６】
2010267128.tif 000008
【図７】
2010267128.tif 000009
【図８】
2010267128.tif 000010
【図９】
2010267128.tif 000011
【図１０】
2010267128.tif 000012