(57)【要約】【課題】本発明は、コンピュータプログラムの悪意ある行為を見つける方法及び装置を提出する。【解決手段】本発明に係る方法及び装置によれば、監視されるプロセス集合の概念により悪意あるプログラムの行為特徴を分析する。本発明に係るコンピュータプログラムの悪意ある行為を見つける方法は、コンピュータプログラムが実行する動作を監視するステップと、監視されるプロセス集合のライブラリーに、監視される動作に関する、作成関係に互いに関連する少なくとも一つの不審なプロセスの情報を含む監視されるプロセス集合を捜索するステップと、監視される動作に関する前記監視されるプロセス集合を捜索した場合には、捜索された前記監視されるプロセス集合に記載の情報に基づき、関連性分析により監視される動作が悪意ある行為に属するか否かを判定するステップとを含む。【選択図】図１
2011501279.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータプログラムの悪意ある行為を見つける方法であって、
コンピュータプログラムが実行する動作を監視するステップと、
監視されるプロセス集合のライブラリーに、監視される動作に関する、作成関係に互いに関連する少なくとも一つの不審なプロセスの情報を含む監視されるプロセス集合を捜索するステップと、
監視される動作に関する前記監視されるプロセス集合を捜索した場合には、捜索された前記監視されるプロセス集合に記載の情報に基づき、関連性分析により監視される動作が悪意ある行為に属するか否かを判定するステップと、
を含むことを特徴とする方法。
【請求項２】
前記監視されるプロセス集合は、前記少なくとも一つの不審なプロセスのプロセス識別子と、前記少なくとも一つの不審なプロセスに対応するプログラムファイルと、前記少なくとも一つの不審なプロセスが実行する動作及び当該動作により発生するデータの履歴記録とを含むことを特徴とする請求項１記載の方法。
【請求項３】
プロセスを作成する際に、新たに作成されたプロセスの親プロセスが、監視されるプロセス集合における不審なプロセスである場合は、前記新たに作成されたプロセスが不審なプロセスとして確定されて、前記新たに作成されたプロセスを、前記親プロセスが所在の監視されるプロセス集合に追加することを特徴とする請求項１記載の方法。
【請求項４】
プロセスを作成する際に、新たに作成されたプロセスの親プロセスが不審なプロセスではない場合は、前記新たに作成されたプロセスがプロセスフィルタリングにより不審なプロセスとして確定される場合にのみ、前記新たに作成されたプロセスのために対応の監視されるプロセス集合を作成することを特徴とする請求項１記載の方法。
【請求項５】
前記プロセスフィルタリングは、
前記新たに作成されたプロセスに対応するプログラムファイルが既知の安全プロセスファイル、システムファイル、又はデフォルトの安全プログラムファイルであるか否かを判定するステップを含み、
否定であれば、不審なプロセスとして確定されることを特徴とする請求項４記載の方法。
【請求項６】
前記捜索された、監視される動作に関する前記監視されるプロセス集合は、監視される動作を発生させるプロセスの情報を含むことを特徴とする請求項２記載の方法。
【請求項７】
前記判定ステップは、
監視される動作の対象の情報と捜索された前記監視されるプロセス集合における前記履歴記録とを照合するステップと、
照合の結果に応じて、監視される動作が悪意ある行為に属するか否かを判定するステップと、
を含むことを特徴とする請求項６記載の方法。
【請求項８】
監視される動作の対象は、監視される動作で操作するファイルであり、
かつ、前記照合ステップは、監視される動作で操作するファイルと前記履歴記録における履歴ファイルのフルパス情報を照合するステップを含む、ことを特徴とする請求項７記載の方法。
【請求項９】
監視される動作の対象は、監視される動作で操作するファイルであり、
かつ、前記照合ステップは、監視される動作で操作するファイルと前記履歴記録における履歴ファイルのファイルコンテンツを照合するステップを含む、ことを特徴とする請求項７記載の方法。
【請求項１０】
前記照合されるファイルは、全て実行可能ファイルであり、かつ、前記ファイルコンテンツの照合ステップは、さらに、
監視される動作で操作するファイルと前記履歴記録における履歴ファイルのコードエリアのコンテンツを照合するステップを含むことを特徴とする請求項９記載の方法。
【請求項１１】
前記コードエリアのコンテンツを照合するステップは、
照合される２つの前記実行可能ファイルの構造を分析して、前記実行可能ファイルのプログラムエントリーポイントを取得するステップと、
実行可能ファイルのセクションテーブルを分析して、前記実行可能ファイルのプログラムエントリーポイントが所在のセクションをそれぞれ見つけるステップと、
見つけた２つの実行可能ファイルのセクションの大きさを照合するステップと、
２つの実行可能ファイルのプログラムエントリーポイントが所在のセクションのコンテンツを取得して、二進法照合を行うステップと、
を含み、
前記セクションのコンテンツが同一である場合は、２つの実行可能ファイルが同一のコードエリアを有すると認められることを特徴とする請求項１０記載の方法。
【請求項１２】
前記判定ステップは、さらに、
監視される動作が、悪意ある行為を発生させる可能性があるシステムコールに属するか否かを判定するステップを含むことを特徴とする請求項６記載の方法。
【請求項１３】
前記捜索された、監視される動作に関する前記監視されるプロセス集合は、監視される動作の対象の情報を含むことを特徴とする請求項２記載の方法。
【請求項１４】
監視される動作の対象は、監視される動作で操作するファイルであり、
かつ、前記捜索ステップは、
全ての監視されるプロセス集合の履歴記録中に、監視される動作で操作するファイルの情報を捜索するステップを含む、ことを特徴とする請求項７記載の方法。
【請求項１５】
前記コンピュータプログラムの動作を監視するステップは、さらに、アンチウイルスエンジンがウイルスを見つけた動作を含み、
前記捜索ステップは、前記見つけたウイルスのウイルスファイルの情報に基づき、履歴記録中に前記見つけたウイルスファイルの情報を含む、監視されるプロセス集合を捜索するステップを含む、ことを特徴とする請求項２記載の方法。
【請求項１６】
コンピュータプログラムの悪意ある行為を見つける装置であって、
コンピュータプログラムが実行する動作を監視する監視モジュールと、
監視されるプロセス集合のライブラリーに、監視される動作に関する、作成関係に互いに関連する少なくとも一つの不審なプロセスの情報を含む監視されるプロセス集合を捜索する捜索モジュールと、
監視される動作に関する前記監視されるプロセス集合を捜索した場合には、捜索された前記監視されるプロセス集合に記載の情報に基づき、関連性分析により監視される動作が悪意ある行為に属するか否かを判定する判定モジュールと、
を含むことを特徴とする装置。
【請求項１７】
前記監視されるプロセス集合は、前記少なくとも一つの不審なプロセスのプロセス識別子と、前記少なくとも一つの不審なプロセスに対応するプログラムファイルと、前記少なくとも一つの不審なプロセスが実行する動作及び当該動作により発生するデータの履歴記録とを含むことを特徴とする請求項１６記載の装置。
【請求項１８】
新たに作成されたプロセスの親プロセスが、監視されるプロセス集合における不審なプロセスである場合には、前記新たに作成されたプロセスが不審なプロセスとして確定されて、その監視されるプロセス集合を作成することを許可し、新たに作成されたプロセスの親プロセスが不審なプロセスではなく、かつそれに対応するプログラムファイルが安全ファイルである場合は、前記新たに作成されたプロセスをフィルタリングして排除し、その監視されるプロセス集合を作成することを許可しないプロセスフィルタリングモジュールをさらに含むことを特徴とする請求項１６記載の装置。
【請求項１９】
前記監視モジュールで監視される動作は、さらに、アンチウイルスエンジンがウイルスを見つけた動作を含み、
前記捜索モジュールは、前記見つけたウイルスのウイルスファイルの情報に基づき、履歴記録中に前記見つけたウイルスファイルの情報を含む、監視されるプロセス集合を捜索することを特徴とする請求項１７記載の装置。
【請求項２０】
前記捜索モジュールで捜索された、監視される動作に関する前記監視されるプロセス集合は、監視される動作を発生させるプロセスの情報を含むことを特徴とする請求項１６記載の装置。
【請求項２１】
前記捜索モジュールで捜索された、監視される動作に関する前記監視されるプロセス集合は、監視される動作の対象の情報を含むことを特徴とする請求項１６記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ保護方法及び装置に関し、特にコンピュータプログラムの行為の特徴に基づきコンピュータプログラムの悪意ある行為をリアルタイムで正確に見つける方法及び装置に関する。
【背景技術】
【０００２】
１９８３年に世界で１番目のコンピュータウイルスが出現してから、二十数年間で、コンピュータウイルスは、コンピュータ及びネットワーク技術の発展につれて絶えず進化し更新されつつある。現在、トロイの木馬、ウオーム、及びバックドアプログラムのようなコンピュータウイルスは、コンピュータシステムを破壊できるだけでなく、ユーザの口座、パスワードなどの重要な情報も盗むこともできるので、人々がコンピュータを正常に使用することを酷く脅かし、ひいては莫大な経済損失になる可能性もある。よって、ウイルスの攻撃をどのように防止するかは、人々が最も注目するポイントになってくる。
【０００３】
ウイルスの攻撃を防止するために、重要なステップとして、ウイルスが侵害を実施する前にウイルスを識別し、即ちウイルススキャンすることにより、適時に相応の措置を採取して更なるコンピュータシステムへの侵害を阻止する。従来のアンチウイルスソフトウェアに一般的に使用されているウイルススキャン方法は、シグニチャースキャン（signature scanning）である。即ち、ウイルスサンプルから抽出されたシグニチャーを用いて、チェックされるファイルをスキャンすることにより、ウイルス感染されたファイルを見つけて消去する。
【０００４】
しかし、このような従来のウイルススキャン方法は、ウイルスサンプルを捕獲した場合にのみ、ウイルスのシグニチャーを抽出することができるので、ウイルススキャンとアンチウイルスは、永遠にウイルスの発生に後れを取るものである。例えば、新しいウイルスが現れた時に、ユーザが従来のアンチウイルスソフトウェアをインストールしたとしても、被害を受けることになり、アンチウイルスソフトウェアをアップグレードし、ウイルスデータベースを更新した場合にのみ、その新しいウイルスを対応できるが、ウイルスの発生に酷く後れを取っている。
【０００５】
現在、新しい未知のウイルスと既存のウイルスの新しい変異は、次々と現れると共に、このような従来の方法に対応する幾つかのアンチアンチウイルス（anti-anti-virus）技術が現れてくる。よって、このような従来のウイルススキャン方法の遅れという欠点はますます顕著になり、また、この従来の方法に依存するリアルタイム監視プログラムは効果が効いていない。
【０００６】
近来、従来のシグニチャースキャンの欠点に対して、アンチウイルス分野では、ウイルスプログラムの行為の特徴に基づくコンピュータ保護方法が提案されてくる。このような方法では、あるコンピュータプログラムの動作を傍受することにより、当該動作がウイルスプログラムにより発生させられるか否かを分析する。このようなコンピュータ保護方法は、ある程度に既知のウイルスの新しい変異と一部の相対的に簡単な新しいウイルスを識別することができる。しかし、システムプログラム又は安全プログラムを呼び出すことにより攻撃行為を実現する隠蔽性のよいウイルスに対しては、このような保護方法の成功率は比較的に低い。
【０００７】
例えば、近来比較的に流行しているバックドアプログラムである「灰鳩子（Backdoor.Gpigeon）」は、隠蔽性のよいウイルスである。灰鳩子のメインプログラムc:\A.exeが実行した後、まず、それ自身をシステムディレクトリc:\windows（登録商標）\の下に複製し、そのレプリカ（replica）をwservices.exeに改名し、かつ、当該レプリカwservices.exeが起動した後、A.exeが終了する。wservices.exeが起動した後、システムに付いたiexplore.exe（システムファイル）を直接に起動させ、次に、wservices.exeのプロセスイメージをiexplore.exeのプロセススペースに書き込むことで実行権限が得られるため、iexplore.exeを用いて被害を加える。
【０００８】
灰鳩子プログラムでは、ウイルスプログラムは正常なシステムプログラムiexplore.exeに隠蔽して実行し、ウイルスは、被害を加える過程において、相次いでA.exeとwservices.exeとiexplore.exeとの三つのプロセスに及ぼし、真実の被害を加える行為を実行する前に、ウイルスのメインプログラムA.exeが終了する。よって、灰鳩子プログラムは、ウイルススキャンによる動作の監視をよくだますので、ウイルスコードをiexplore.exeのプロセススペースにうまく隠蔽する。このような隠蔽性のよいウイルスプログラムは、上記した従来の簡単な行為動作の分析方法を用いても識別することが難しい。
【０００９】
現在、コンピュータ技術の発展につれて、灰鳩子のような隠蔽性のよいウイルスプログラムはますます多くなってくるので、このような複数のプロセスを発生させることにより被害を加えることを実現する悪意あるプログラムを識別する新しいコンピュータ保護方法は必要である。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】ＣＮ１８４５１２０Ａ
【特許文献２】ＵＳ２００６１３６７２０Ａ１
【発明の概要】
【発明が解決しようとする課題】
【００１１】
本発明は、コンピュータプログラムの悪意ある行為を見つける方法及び装置を提出することを目的とする。本発明に係る方法及び装置によれば、複数のプロセスに及ぼす悪意プログラムの行為を識別することにより、どのプログラムがウイルスプログラムに属するかを、根源から見つけることができる。
また、本発明は、ウイルスをリリースするプロセスを効率的に捜索することができる、コンピュータプログラムの悪意ある行為を見つける方法及び装置を提出することを他の目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、本発明は、コンピュータプログラムの悪意ある行為を見つける方法であって、コンピュータプログラムが実行する動作を監視するステップと、監視されるプロセス集合のライブラリーに、監視される動作に関する、作成関係に互いに関連する少なくとも一つの不審なプロセスの情報を含む監視されるプロセス集合を捜索するステップと、監視される動作に関する前記監視されるプロセス集合を捜索した場合には、捜索された前記監視されるプロセス集合に記載の情報に基づき、関連性分析により監視される動作が悪意ある行為に属するか否かを判定するステップと、を含むものとした。
【００１３】
ここで、前記監視されるプロセス集合は、前記少なくとも一つの不審なプロセスのプロセス識別子と、前記少なくとも一つの不審なプロセスに対応するプログラムファイルと、前記少なくとも一つの不審なプロセスが実行する動作及び当該動作により発生するデータの履歴記録とを含むものとすることもできる。
また、プロセスを作成する際に、新たに作成されたプロセスの親プロセスが、監視されるプロセス集合における不審なプロセスである場合は、前記新たに作成されたプロセスが不審なプロセスとして確定されて、前記新たに作成されたプロセスを、前記親プロセスが所在の監視されるプロセス集合に追加することもできる。
【００１４】
また、プロセスを作成する際に、新たに作成されたプロセスの親プロセスが不審なプロセスではない場合は、前記新たに作成されたプロセスがプロセスフィルタリングにより不審なプロセスとして確定される場合にのみ、前記新たに作成されたプロセスのために対応の監視されるプロセス集合を作成することもできる。
さらに、前記プロセスフィルタリングは、前記新たに作成されたプロセスに対応するプログラムファイルが既知の安全プロセスファイル、システムファイル、又はデフォルトの安全プログラムファイルであるか否かを判定するステップを含み、否定であれば、不審なプロセスとして確定されることもできる。
【００１５】
また、前記捜索された、監視される動作に関する前記監視されるプロセス集合は、監視される動作を発生させるプロセスの情報を含むこともできる。
また、前記判定ステップは、監視される動作の対象の情報と捜索された前記監視されるプロセス集合における前記履歴記録とを照合するステップと、照合の結果に応じて、監視される動作が悪意ある行為に属するか否かを判定するステップと、を含むこともできる。
【００１６】
また、監視される動作の対象は、監視される動作で操作するファイルであり、かつ、前記照合ステップは、監視される動作で操作するファイルと前記履歴記録における履歴ファイルのフルパス情報を照合するステップを含むこともできる。
また、監視される動作の対象は、監視される動作で操作するファイルであり、かつ、前記照合ステップは、監視される動作で操作するファイルと前記履歴記録における履歴ファイルのファイルコンテンツを照合するステップを含むこともできる。
【００１７】
さらに、前記照合されるファイルは、全て実行可能ファイルであり、かつ、前記ファイルコンテンツの照合ステップは、さらに、監視される動作で操作するファイルと前記履歴記録における履歴ファイルのコードエリアのコンテンツを照合するステップを含むこともできる。
また、前記コードエリアのコンテンツを照合するステップは、照合される２つの前記実行可能ファイルの構造を分析して、前記実行可能ファイルのプログラムエントリーポイントを取得するステップと、実行可能ファイルのセクションテーブルを分析して、前記実行可能ファイルのプログラムエントリーポイントが所在のセクションをそれぞれ見つけるステップと、見つけた２つの実行可能ファイルのセクションの大きさを照合するステップと、２つの実行可能ファイルのプログラムエントリーポイントが所在のセクションのコンテンツを取得して、二進法照合を行うステップと、を含み、前記セクションのコンテンツが同一である場合は、２つの実行可能ファイルが同一のコードエリアを有すると認めることもできる。
【００１８】
また、前記判定ステップは、さらに、監視される動作が、悪意ある行為を発生させる可能性があるシステムコールに属するか否かを判定するステップを含むこともできる。
また、前記捜索された、監視される動作に関する前記監視されるプロセス集合は、監視される動作の対象の情報を含むこともできる。
また、監視される動作の対象は、監視される動作で操作するファイルであり、かつ、前記捜索ステップは、全ての監視されるプロセス集合の履歴記録中に、監視される動作で操作するファイルの情報を捜索するステップを含むこともできる。
【００１９】
また、前記コンピュータプログラムの動作を監視するステップは、さらに、アンチウイルスエンジンがウイルスを見つけた動作を含み、前記捜索ステップは、前記見つけたウイルスのウイルスファイルの情報に基づき、履歴記録中に前記見つけたウイルスファイルの情報を含む、監視されるプロセス集合を捜索するステップを含むこともできる。
また、本発明は、コンピュータプログラムの悪意ある行為を見つける装置であって、コンピュータプログラムが実行する動作を監視する監視モジュールと、監視されるプロセス集合のライブラリーに、監視される動作に関する、作成関係に互いに関連する少なくとも一つの不審なプロセスの情報を含む監視されるプロセス集合を捜索する捜索モジュールと、監視される動作に関する前記監視されるプロセス集合を捜索した場合には、捜索された前記監視されるプロセス集合に記載の情報に基づき、関連性分析により監視される動作が悪意ある行為に属するか否かを判定する判定モジュールと、を含むものとした。
【００２０】
ここで、前記監視されるプロセス集合は、前記少なくとも一つの不審なプロセスのプロセス識別子と、前記少なくとも一つの不審なプロセスに対応するプログラムファイルと、前記少なくとも一つの不審なプロセスが実行する動作及び当該動作により発生するデータの履歴記録とを含む構成とすることもできる。
また、新たに作成されたプロセスの親プロセスが、監視されるプロセス集合における不審なプロセスである場合には、前記新たに作成されたプロセスが不審なプロセスとして確定されて、その監視されるプロセス集合を作成することを許可し、新たに作成されたプロセスの親プロセスが不審なプロセスではなく、かつそれに対応するプログラムファイルが安全ファイルである場合は、前記新たに作成されたプロセスをフィルタリングして排除し、その監視されるプロセス集合を作成することを許可しないプロセスフィルタリングモジュールをさらに含むようにすることもできる。
【００２１】
また、前記監視モジュールで監視される動作は、さらに、アンチウイルスエンジンがウイルスを見つけた動作を含み、前記捜索モジュールは、前記見つけたウイルスのウイルスファイルの情報に基づき、履歴記録中に前記見つけたウイルスファイルの情報を含む、監視されるプロセス集合を捜索するようにすることもできる。
また、前記捜索モジュールで捜索された、監視される動作に関する前記監視されるプロセス集合は、監視される動作を発生させるプロセスの情報を含むようにすることもできる。
【００２２】
また、前記捜索モジュールで捜索された、監視される動作に関する前記監視されるプロセス集合は、監視される動作の対象の情報を含むようにすることもできる。
【発明の効果】
【００２３】
上記目的を実現するために、本発明に係る、コンピュータプログラムの悪意ある行為を見つける方法は、コンピュータプログラムが実行する動作を監視するステップと、監視されるプロセス集合のライブラリーに、監視される動作に関する、作成関係に互いに関連する少なくとも一つの不審なプロセスの情報を含む監視されるプロセス集合を捜索するステップと、監視される動作に関する前記監視されるプロセス集合を捜索した場合には、捜索された前記監視されるプロセス集合に記載の情報に基づき、関連性分析により監視される動作が悪意ある行為に属するか否かを判定するステップと、を含む。
【００２４】
本発明に係る方法によれば、プロセス集合という概念を用いているので、複数のプロセスを作成し又は呼び出すことによりウイルス攻撃を行う悪意プログラムは、適時で正確に識別できる。このため、隠蔽性の強い悪意プログラム、例えば灰鳩子などのバックドアプログラムを適時に見付けることができる。
また、上記目的を実現するために、本発明に係る上記方法は、さらに、アンチウイルスエンジンがウイルスを見つけた旨の通知を受信し、見つけられたウイルスファイルの情報を取得するステップを含み、上記捜索ステップは、プロセス集合の履歴記録中に前記見つけられたウイルスファイルの情報のプロセス集合を含むか否かを捜索するステップを含み、捜索した場合は、ウイルスをリリースするプロセスを見つけることができる。
【００２５】
本発明に係る上記方法は、アンチウイルスエンジンのアンチウイルスの結果とプロセスの行為監視とを組み合わせることにより、悪意ある行為をより正確で高効率に見つけることができる。
また、本発明は、上記方法に対応するコンピュータ保護装置を提供する。
【図面の簡単な説明】
【００２６】
【図１】本発明の一つの実施例に係るプログラムの悪意ある行為を見つける装置の全体の構造図である。
【図２】本発明の一つの実施例に係るプロセス集合の作成とメンテナンスの過程を示す図である。
【図３】本発明の一つの実施例に係るプロセスのフィルタリング過程を示す図である。
【図４】本発明の一つの実施例に係る、プロセス集合でウイルスファイルをリリースするプロセスを確定する過程を示す図である。
【図５】本発明の一つの実施例に係る、プロセス集合でファイル操作における悪意ある行為を確定する過程を示す図である。
【図６】本発明の一つの実施例に係る、プロセス集合でレジストリ操作における悪意ある行為を確定する過程を示す図である。
【図７】本発明の一つの実施例に係る、プロセス集合でシステムコールにおける悪意ある行為を確定する過程を示す図である。
【図８】本発明の一つの実施例に係る、プロセス集合でプログラムの悪意ある行為を確定する他の例示的な過程を示す図である。
【発明を実施するための形態】
【００２７】
以下、具体的な実施例に基づき本発明に係る、コンピュータプログラムの悪意ある行為を見つける方法及び装置について詳しく説明する。
理解のために、以下の実施例では、Windows（登録商標）オペレーションシステムだけを例として記述する。しかし、当業者にとって、本発明の構想と要旨は、Windows（登録商標）オペレーティングシステムに限らず、他のコンピュータオペレーティングシステムにおいても応用できると理解できる。
【００２８】
上述の「灰鳩子」プログラムのように、現在のウイルス又はスパイウェアは、もはや単一プロセスにおいてコンピュータに被害を加えるものではなく、複数のプロセスを作成及び／又は終了する過程において悪意ある行為を実施するので、アンチウイルスソフトウェアの監視をより騙し易い。
また、現在の数多くのコンピュータウイルスプログラム、スパイウェアを分析すると、悪意プログラムは基本的な悪意ある行為の要素からなる可能性がある。このため現在、一つの完全な悪意プログラムが複数のプロセスに及ぼす可能性があるだけでなく、これらの悪意ある行為の要素自身の実現も一つ以上のプロセスに及ぼす可能性があると考えられる。以下、分析により抽象化された幾つかの悪意ある行為の要素を例示的に挙げるが、本発明はこれに限られない。
【００２９】
ウイルスファイルのリリース：プロセスが、アンチウイルスエンジンにより識別できるコンピュータウイルスを直接に作成する（正常ファイルをそのコンピュータウイルスに変更する）ことをいう。ウイルスファイルは、ローカルコンピュータで生成される場合は、その直接的な作成者は、ウイルスリリーザ又はダウンローダである確率が高い。
自己複製：プロセスがレプリカを直接又は間接に作成することをいう。このレプリカは、悪意プログラムＡが直接に作成するものであっても、悪意プログラムＡが他の安全プログラム例えばＳＨＥＬＬプログラムを呼び出すことにより複製するものであってもよい。
【００３０】
自己変更の自己複製：プロセスがアプリケーションプログラムを作成し又は変更することをいう。変更されたアプリケーションプログラムのエントリーポイントが所在のコードエリアと当該プロセスに対応するプログラムファイルのエントリーポイントが所在のコードエリアとが同一であり、例えば、熊猫焼香（Worm.WhBoy）ウイルスである。
プログラムファイルのリリース：プロセスが現在のプロセスのレプリカでないプログラムファイルを直接にリリースすることをいう。プログラムファイルは、実行可能ファイル（ＥＸＥ）であっても、ダイナミックリンクライブラリ（ＤＬＬ）であってもよい。
【００３１】
自己リリースプログラムの起動：プロセスがプログラムファイルを直接又は間接に実行することをいう。当該プログラムファイルは、当該プロセス又は当該プロセスに関するプロセスで作成されるものであってもよい。例えば、悪意プログラムＡはプログラムＢをリリースし、ＳＨＥＬＬを呼び出してプログラムＢを起動させる。
自己起動の関連の作成：プロセスが、自己起動項目（例えばレジストリにおける起動項目）を直接又は間接に作成し又は変更することにより、当該プロセスのプログラムファイル又は関連のプログラムファイルはシステムに自動的に起動されることをいう。ここで、自己起動項目を作成するプロセスプログラムは、悪意プログラムＡであっても、システムに存在しているservices.exeであってもよい。
【００３２】
自己リリースサービスのインストール：プロセスがシステムサービスを直接又は間接にインストールすることをいう。例えば、悪意あるプログラムＡは複数の実行可能ファイルをリリースして、これらの実行可能ファイルをサービスとして登録する。
自己リリースドライバのロード：プロセスがドライバプログラムを直接又は間接にロードすることをいう。当該ドライバプログラムは、ロードプロセスで直接又は間接に作成するものである。例えば、悪意あるプログラムＡはドライバプログラムＢをリリースして、当該ドライバプログラムＢをサービス起動方式として登録し、かつシステムに存在しているプロセスservices.exeで当該ドライバプログラムＢをロードする。
【００３３】
プロセスの終了：プロセスが他の一般プロセスを直接又は間接に終了することをいう。同様に、プロセス終了を発生させるのは、悪意あるプログラムＡであっても、悪意あるプログラムＡが呼び出すオペレーションシステムで提供されるプロセス終了ツール（例えば、Windows（登録商標）システムにおけるTaskkill.exe）であってもよい。
リモートスレッドの作成：プロセスが他のプロセススペース内にリモートスレッドを直接又は間接に作成し、この方法で他のプロセスに侵入することをいう。
【００３４】
シミュレート入力（キーボード、マウスなど）：プロセスが他のプロセスのウインドウに対してシミュレート入力を直接又は間接に行うことをいう。例えば、絶えずＱＱメッセージを送信する。
WINDOWS（登録商標）メッセージの送信：プロセスが、ウインドウのコンテンツを得るために他のプロセスのウインドウに対してWINDOWS（登録商標）メッセージWM_GETTEXTを直接又は間接に送信することをいう。
【００３５】
自己リリースプログラムのフック（hook）の設定：プロセスがグローバル（global）のメッセージフックを設定することをいう。当該メッセージフックに対応するダイナミックリンクライブラリは、当該プロセスで直接又は間接に作成されるものである。例えば、悪意あるプログラムＡは、フック処理関数を有するダイナミックリンクライブラリＢとグローバルフックを設定するプログラムＣをリリースしてプログラムＣを実行する。プログラムＣは、ダイナミックリンクライブラリＢにおけるフック処理関数をパラメータとしてグローバルフックを設定する。
【００３６】
以上のようにまとめた複数種の悪意ある行為の要素から見ると、これらの行為の要素の各々は、相次いで作成された複数の関連プロセスに及ぼす可能性がある。この場合に、単一のプロセスにおける動作を傍受することにより、これらの悪意ある行為を正確に識別し難い。
そのために、本発明は、監視されるプロセス集合という概念を用いている。簡単のため、以下、「監視されるプロセス集合」を「プロセス集合」と略称するが、本願に言及するプロセス集合は、何れも保護ソフトウェアで監視されるプロセス集合を指す。
【００３７】
本発明の実施例では、各プロセス集合毎に、作成関係上に互いに関連する一つ又は複数の不審なプロセスの情報を含んでいる。上述の「プロセスの終了」という悪意ある行為を例として、悪意あるプロセスA.exeがプロセス集合αにあると仮定すれば、プロセスA.exeがオペレーションシステムにより提供されるツールTaskkill.exeを呼び出して他の一般プロセスを終了し、即ち、子プロセスTaskkill.exeを作成する。この時に、親プロセスA.exeと子プロセスTaskkill.exeは直接の関係を有し、両者は共同で「他のプロセスをわざと終了する」という行為を実行する。従って、本発明の原理に基づくと、子プロセスTaskkill.exeもプロセス集合αに含まれる。よって、プロセス集合αは、それに含まれる一つ又は複数の関連する不審なプロセスの共同の行為を論理的に表現している。プロセス集合により提供されるこのような論理的な関連性は、悪意ある行為の識別に非常に有利になる。
【００３８】
本発明の実施例によれば、本発明に提出されるプロセス集合は、論理的にシステムにおける各関連プロセスを区分する。各プロセス集合毎に、それに格納される不審なプロセスの識別子（プロセスＩＤ）と、当該プロセスに対応するプログラムファイルの情報、例えばプログラムファイル（ＰＥファイル）フルパス情報とを含む。また、ある悪意ある行為は、歴史データ、例えば親プロセスがリリースしたファイルの情報を遡って調べないと、発見することできないので、本発明に係るプロセス集合には、集合中の各プロセス動作の履歴記録を格納することもできる。例えば、履歴記録は、作成された子プロセスＩＤ、作成されたファイル、変更されたファイルなどを含んでもよい。しかし、本発明はこれに限られず、必要に応じて、履歴記録は、他の各種の情報、例えばネットワークアクセス動作などを含んでもよい。
【００３９】
よって、本発明に係るプロセス集合には、プロセス間の関連関係を表現するだけでなく、関連プロセスの履歴動作での内在関係も含めることができる。これらの情報は、監視される動作について関連性分析を行うことにより悪意ある行為を適時で正確に見つけることに役立つ。
以下、上述のように挙げた複数種の悪意ある行為を例として、具体的な悪意あるプログラムの実例に基づき、本発明に係るプロセス集合という概念の、監視される動作に対する関連性分析での応用を詳しく記述する。
【００４０】
図１は、本発明の実施例に係る、コンピュータプログラムの悪意ある行為を見つける装置の全体の構造図である。
図１に示すように、まず、コンピュータ保護ソフトウェアの監視モジュール１００は、各プログラムの動作を監視して、監視される動作に対して相応動作の通知、例えばプロセス作成／終了の通知、アンチウイルスエンジンのウイルススキャンの通知、ファイル操作の通知、レジストリ操作の通知、システムＡＰＩ呼び出しの通知などを送信する。次に、監視される動作に関する通知に基づき、各処理用サブモジュールは、それぞれ各通知に応答して相応のサブ流れを実行する。これらの処理用サブモジュールは、プロセス集合保守サブモジュール２００、アンチウイルスエンジンの通知処理サブモジュール４００、ファイル操作の通知処理サブモジュール５００、レジストリ操作の通知処理サブモジュール６００、システムコール動作の通知処理サブモジュール７００、及びプロセス作成の通知処理サブモジュール８００を含む。
【００４１】
本発明の実施例によれば、各プロセス作成／終了の時に、本発明に係るプロセス集合を保守する。例えば、プロセス集合を作成し又は取消すこと、既存の集合におけるプロセス情報を追加又は削除することなどである。プロセス集合保守サブモジュール２００が実行する具体的な過程について、下記のように図２、３を参照しながら詳しく説明する。
プロセス各々の実行過程において発生する動作の通知について（例えば、ファイル操作、システムコールの通知）、各相応するサブモジュール（４００〜８００）は、まず、プロセス集合ライブラリーに当該通知される動作に関するプロセス集合、例えば動作開始プログラムを含む集合又は履歴記録に動作対象の情報（例えば操作されるファイル）が含まれる集合、があるか否かを捜索する。集合ライブラリーから相応のプロセス集合を見つけた場合は、プロセス集合に提供される関係情報に基づき、上記抽象化された悪意ある行為の特徴と併せて、各動作毎に関連性分析を行うことにより、各悪意ある行為を識別する。これらのサブモジュールが実行する具体的な過程について、下記のように図４〜８を参照しながら詳しく説明する。
【００４２】
図２は、プロセス作成／終了の時に、本発明に係るプロセス集合を作成／保守する過程を示す図である。ここでは上述の「灰鳩子」プログラムを例として記述する。
図２に示すように、サブモジュール２００は、プロセス作成／終了の通知を受信した（ステップＳ２０１）後、まず、新たに作成した又は終了したプロセスのプロセスＩＤとその親プロセスＩＤを取得する。次に、受信した通知がプロセスの作成を示すか否かを判定する（ステップＳ２０３）。判定が肯定であれば、ステップＳ２１１に移行して、プロセス集合の作成及び／又は新しいプロセスの追加を行い、判定が否定であれば、ステップＳ２２２に移行して、終了したプロセス又は取消されたプロセス集合を削除する。
【００４３】
ここで、「灰鳩子」プロセスA.exeを作成する時に、監視モジュールがプロセス作成動作の通知を送信したと仮定する。この時に、ステップＳ２２１で、得られた親プロセスＩＤによって即有のプロセス集合ライブラリーを捜索することにより、親プロセスに対応するプロセス集合があるか否かを確定する。「灰鳩子」プロセスA.exeは最初に作成されたものであり、その親プロセスは安全プロセスとして、監視されていないものであるので、ステップＳ２２１の判定結果は否定であり、フィルタリングステップＳ２１３に移行する。
【００４４】
ステップＳ２１３は、選択項としてのステップであり、フィルタリングにより当該新たに作成したプログラムが不審なものであるか否か、即ち、そのためにプロセス集合を作成する必要があるか否かを確定することを目的とする。その具体的なフィルタリングの過程は、図３に示される。図３に示すように、まず、サブモジュール２００は、新たに作成したプロセスに対応する実行可能ファイルのフルパス情報を取得する（ステップＳ２１３１）。次に、当該実行可能ファイルのフルパスが外部安全プログラムリストに存在しているか否かを判定する（ステップＳ２１３３）。この安全プログラムリストは、システム又はユーザにより認証される安全プログラムのファイル情報を含んでおり、この安全プログラムリストに対して実際の状況に応じて編集、例えば拡張、削除などを行うことができる。ステップＳ２１３３の判定結果が肯定であれば、現在に新たに作成したプロセスが安全であり、監視する必要がないことを示すので、それをフィルタリングして除外する（ステップＳ２１３８）。判定が否定であれば、続いて当該実行可能ファイルがシステムファイルであるか否かを判定し（ステップＳ２１３５）、判定が肯定であれば、ステップＳ２１３８に移行する。前記実行可能ファイルがシステムファイルではない場合は、続いて当該実行可能ファイルがデフォルトに除外すべきと見なされる安全プログラムリストにあるか否かを判定し（ステップＳ２１３７）、判定が肯定であれば、ステップＳ２１３８に移行し、判定が否定であれば、ステップＳ２１３９に移行して、当該プロセスが不審なものであると確定し、そのためにプロセス集合を作成する必要を生じる。上述のように、フィルタリングステップＳ２１３では、一部の安全プログラムをフィルタリングして除外し、必要でないプロセス集合の作成を避けることにより、保護ソフトウェアの行為分析速度を速める。プロセスのフィルタリングステップは、他の方式、例えば、安全プログラムを確定する幾つかの規則を用いるなどの方式を用いてもいい。ある特殊な場合に、当該フィルタリングステップは省略してもよい。
【００４５】
ここで、フィルタリングにより、「灰鳩子」プロセスA.exeは、安全リストにもないし、システムファイル又はデフォルトな安全プログラムでないと判定される場合には、フィルタリングステップでは当該プロセスA.exeが不審なプロセスであると確定し、相応のプロセス集合を作成する必要がある。よって、ステップＳ２１５に移行して、新しいプロセス集合αを作成して、集合αにおける第１目の関連プロセスをA.exeのプロセスＩＤに設定し、関連ファイルをA.exeのＰＥファイルのフルパス情報c:\A.exeに設置する。その後、この集合保守は終了する。
【００４６】
ステップＳ２１１で親プロセスが所在のプロセス集合を見つけた場合には、ステップＳ２１７に移行する。例えば、監視モジュール１００は、「灰鳩子」プロセスA.exeがシステムディレクトリの下に複製されたそれ自身のレプリカwservices.exeファイルを起動すること、即ち、一つのプロセス作成動作を監視した。この時に、wservices.exeの親プロセスA.exeが既にプロセス集合αに存在しており、ステップＳ２１７に移行する。ステップＳ２１７では、wservices.exeのプロセスＩＤを集合αの履歴プロセスリストに書き込んで、当該集合の第２目の関連プロセスとすると共に、履歴プロセスリストに当該第２目の関連プロセスのファイル情報c:\windows（登録商標）\wservices.exeを格納し、次に、この集合保守は終了する。
【００４７】
ステップＳ２０３でプロセス終了の通知と判定され、例えば、「灰鳩子」プロセスA.exeがwservices.exeを起動した後に終了する動作を監視した場合には、ステップＳ２２２に移行する。ステップＳ２２２では、依然として、まず、当該終了したプロセスの親プロセスに対応するプロセス集合があるか否かを判定する。「灰鳩子」プロセスA.exeについては、親プロセスは所在するプロセス集合がない。よって、ステップＳ２２４に移行して、さらに終了したプロセスに対応する所在のプロセス集合を判定し、判定結果が否定であれば、処理が終了する。ここでは判定により、A.exeが所在のプロセス集合αが見つかる。従って次に、集合αから現在に終了したプロセスA.exeを削除する（ステップＳ２２６）。プロセスを削除した後、当該集合αにまだ不審なプロセスがあるか否かを再判定し（ステップＳ２２８）、不審なプロセスがなければ、当該集合αを取消し又は破棄する（ステップＳ２２９）。「灰鳩子」の例では、A.exeが終了する時に、wservices.exeがまだ実行しているので、ステップＳ２２８の判定結果が肯定である。従って、処理は終了する。
【００４８】
上述の図２、３に基づいた記述を参照すると、プロセス集合は、不審なプロセスを作成する初期に作成され、関連プロセスの作成と終了につれて集合内の関連情報を絶えず更新する。してみると、プロセス集合は、他の動作通知の処理サブモジュールに価値あるプロセス間の関連情報を提供することができる。同時に、他の動作通知の処理流れも、各々の処理中に発生する動作又はデータをプロセス集合における履歴記録に書き込んで、関連情報の量を増加することができる。
【００４９】
以下、図４〜８を参照しながら本発明に係るプロセス集合の各動作通知サブモジュールでの具体的な応用をそれぞれ説明する。
図４はアンチウイルスエンジンの通知処理サブモジュールの処理過程を示す図である。以下、トロイの木馬プログラムに基づいて図４に示す過程を述べる。
既知のトロイの木馬Ａが実行中に、既知のウイルスのダイナミックリンクライブラリＢをリリースする。トロイの木馬プログラムＡとダイナミックリンクライブラリＢは何れも既知のウイルスファイルであるので、従来のシグニチャースキャンによりそれらを正確に識別することができる。しかし、トロイの木馬プログラムＡは、変異と偽装し易く（例えばパッキング、暗号化、ＰＥＰａｔｃｈ、シグニチャー変更などの手段による）、従来のシグニチャースキャンは、偽装したトロイの木馬プログラムＡ’を見つけることができない。一方で、ダイナミックリンクライブラリＢは、一般的に偽装せず、アンチウイルスエンジンにより見つけられる。
【００５０】
以上のトロイの木馬の例では、偽装したトロイの木馬プログラムＡ’が実行しダイナミックリンクライブラリＢをリリースした後、アンチウイルスエンジンがウイルスシグニチャースキャンでダイナミックリンクライブラリＢを見つけて、ウイルスを見つけた旨の通知を送信すると仮定する。この時、サブモジュール４００は、ウイルスの通知を受信し、先ず、見つけたウイルスファイル、即ちダイナミックリンクライブラリＢのスルパスを取得し（ステップＳ４２０）、次に、サブモジュール２００で保守される全てのプロセス集合に捜索を行って、当該ウイルスファイルを含むプロセス集合を見つける（ステップＳ４３０）。この時、トロイの木馬プログラムＡ’が実行しているので、サブモジュール２００は、Ａ’が作成された時にプロセス集合Ｓを作成する。このため既に集合Ｓの履歴記録にはＡ’が作成したファイルであるダイナミックリンクライブラリＢが含まれている。よって、ステップＳ４３０では、当該ウイルスファイルであるダイナミックリンクライブラリＢのプロセス集合Ｓを見つけることができる。この判定に基づき、当該ウイルスファイルがプロセス集合ＳにおけるプロセスＡ’でリリースされるものであると確定し、即ち、ウイルスファイルをリリースする行為と確定できる（ステップＳ４４０）。これにより、偽装したトロイの木馬プログラムＡ’を見つけることができる。
【００５１】
図４に示すアンチウイルスエンジンの通知処理用子プロセスは、従来のシグニチャースキャンに基づくファイルのリアルタイム監視に対し、本発明に係るプロセス集合に基づく悪意ある行為の特徴分析とを組合わせている。このような処理は、従来の精確なウイルス走査技術を非常に有効に利用できるだけでなく、プロセス集合に提供されるプロセスとファイルとの間の関連関係を十分に利用できる。よって、このような処理は、悪意ある行為をより高速度で正確に見つけると共に、コンピュータウイルスの派生物（derivatives）をより多く見つけることに役立つ。
【００５２】
図５は、ファイル操作の通知処理サブモジュール５００の処理過程を示す図である。以下、「熊猫焼香」を例として、ファイル操作の通知処理の全過程を記述する。「熊猫焼香」ウイルスは、ウォームウイルスであり、正常な実行可能ファイルに感染する。具体的に言えば、「熊猫焼香」ウイルスは、それ自身のコードでオリジナル実行可能プログラムに代わった後、オリジナルプログラムをそれ自身のコードの後に添付し、オリジナルプログラムのプログラムアイコンをそれ自身のプログラムアイコンとすることにより、ユーザに混乱させ、それ自身を隠蔽する。このような行為は、上述の「自己変更の自己複製」と抽象化することができる。
【００５３】
実際の実行では、「熊猫焼香」ウイルスはメインプログラムPanda.exeが起動した後、実行可能ファイルE.exeに対して上述のような変更を行う。即ち、ファイル変更の動作を行うので、監視モジュール１００により監視される。図５に示すように、サブモジュール５００は、ファイルを作成又は変更するファイル操作の通知を受信した後、まず、現在のファイル操作という動作の開始プログラムのプロセスＩＤ、即ちPanda.exeのプロセスＩＤを取得する（ステップＳ５１０）。次に、取得されたプロセスＩＤに基づき、全てのプロセス集合中に現在のプロセスPanda.exeが所在する集合を捜索する（ステップＳ５２０）。この集合が見つからない場合には、現在のプロセスが安全であり、行われるファイル操作も信頼できるものであることを示すので、現在の処理を終了する。この例では、サブモジュール２００がPanda.exeを作成する初期において、プロセス集合βを作成したと仮定すれば、ステップＳ５３０に移行する。ステップＳ５３０では、作成／変更されたファイルE.exeの情報を、捜索したプロセス集合βの履歴記録に書き込むことにより、当該監視されるプロセスの履歴動作を記述する。ここで、集合の履歴ファイルの格納スペースがいっぱいとなって又は書き込みが失敗した（図示せず）場合には、処理を直接的に終了する（ステップＳ５８０）。
【００５４】
次に、サブモジュール５００は、当該作成／変更されたファイルが実行可能ファイル（ステップＳ５４１）又は自動実行ファイル（ステップＳ５４３）であるか否かを判定する。自動実行ファイルAutorun.infであれば、捜索したプロセス集合βの履歴記録中に、Autorun.infに記述されるファイルが含まれるか否かを判定し（ステップＳ５４５）、即ち、履歴ファイルが自動実行プログラムに関連付けられたか否かを判定する。判定が肯定であれば、当該プロセス集合が「自己起動の関連」という行為を実現したことを示し（ステップＳ５７０）、判定が否定であれば、ファイル操作が安全であることを示し、処理を終了する（ステップＳ５８０）。
【００５５】
「熊猫焼香」の例では、変更されたファイルE.exeが実行可能ファイルであるため、ステップＳ５５１に移行する。ステップＳ５５１では、続いて現在のプロセスのプログラムファイルが作成されたものであるか否かを判定する。否定であれば、現在のプロセスはウイルスにより呼び出されたシステムファイルである可能性があることを示す。この時に、作成／変更されたファイルを、現在のプロセスが所在のプロセス集合における同類型のファイルの各々のコンテンツと照合して、マッチング結果を取得する（ステップＳ５５２）。「熊猫焼香」の例では、ステップＳ５５１の判定により、現在のプロセスPanda.exeも作成されたプログラムファイルであるので、ステップＳ５５３に移行して、作成／変更されたファイルを、現在のプロセスに対応するプログラムファイルのコンテンツと照合して、マッチング結果を取得する。
【００５６】
ステップＳ５５２とＳ５５３で行われるマッチングは、ファイルの全てのコンテンツをマッチングするだけでなく、コードエリアを単独にマッチングする。このようにして初めて、「熊猫焼香」というウイルスを検出することができる。Windows（登録商標）システムでのＰＥファイルフォーマットを例として、２つのプログラムファイルの間にコードエリアマッチングを行う具体的なステップは以下の通りである。即ち、
ＰＥファイルの構造を分析して、２つのプログラムファイルのプログラムのエントリーポイントを取得する。
【００５７】
ＰＥファイルのセクションテーブル（Section Table）を分析して、２つのプログラムのエントリーポイントが所在のセクションをそれぞれ見つける。
セクション内のセクション情報（セクション大きさ）を照合する。
２つのプログラムのエントリーポイントが所在のセクションのコンテンツを取得して、二進法照合を行い、同一であれば、２つのプログラムが同一のコードエリアを有すると認める。
【００５８】
ステップＳ５５２とＳ５５３でのマッチングにより、三種のマッチング結果を取得することができる。即ち、ファイルのコンテンツが全く同一である結果、コードエリアだけが同一である結果、及びファイルが異なる結果である。次に、サブモジュール５００は、ステップＳ５５２とＳ５５３でのマッチング結果に基づき識別を行う。マッチングの結果、異なる場合は、自己リリースファイルの行為と確定する（ステップＳ５５８）。マッチング結果、全く同一である場合は（ステップＳ５５４）、自己複製の行為と確定する（ステップＳ５５６）。「熊猫焼香」の例では、マッチング結果、コードだけが全く同一である場合は（ステップＳ５５５）、自己変更の自己複製の行為と確定する（ステップＳ５５７）。次に、ステップＳ５５６〜Ｓ５５８で確定した結果を基に、作成／変更されたファイルが「起動」のディレクトリにあるか否かをさらに判定することもでき（ステップＳ５６０）、起動のディレクトリにある場合は、自己起動の関連行為と確定することができる（ステップＳ５７０）。
【００５９】
図５に示すサブフローでは、プロセスが実行するファイル操作を相応のプロセス集合の履歴記録に記述して、次の関連性分析の使用に供する。同時に、現在のプロセスで操作するファイルを、プロセス集合に記述した同類型の履歴ファイルと照合することにより、現在のプロセスの行為が悪意ある行為であるか否かを見つけることができる。ここで、プロセス集合は、監視されるプロセス間のファイルの相互の関連性を提供しているので、図５に示す方法を用いて、悪意ある行為を識別する正確性と識別速度を向上することができる。
【００６０】
図６はレジストリ操作処理サブモジュールの処理フローを示す図である。ここで、ウイルスＡを例として、サブモジュール６００の所定過程を説明する。ウイルスＡが起動した後、悪意あるプログラムファイルB.exeをリリースし、次に、レジストリを変更することにより、自己起動項目にプログラムＢを追加して、プログラムＢが自動に起動する。上述のプロセス集合保守サブモジュールの処理に従って、ウイルスＡのプロセス作成時に、サブモジュール２００は、ウイルスＡのためにプロセス集合γを作成する。かつ、ファイル操作の通知サブモジュールの処理に従って、ウイルスＡがリリースしたプログラムＢも、履歴ファイルとして集合γに記録する。次に、ウイルスＡがレジストリを変更する場合に、監視モジュールは、この動作を監視してレジストリ操作の通知を送信する。
【００６１】
図６に示すように、サブモジュール６００は、レジストリ操作の通知を受信した後、まず、操作されるレジストリのパスを取得する（ステップＳ６１０）。次に、当該レジストリのパスに基づきシステムサービスキーであるか否かを判定する（ステップＳ６２０）。判定が否定であれば、ウイルスプログラム自身により発生させられるレジストリ変更動作である可能性があり、ステップＳ６３２に移行する。判定が肯定であれば、システムサービスを起動する可能性があるが、この時に、起動されるサービスが安全であるか否かをさらに識別する必要があり、ステップＳ６３１に移行する。
【００６２】
ステップＳ６３１では、更新しようとするレジストリの値から一つ又は複数のファイルのフルパスを解析し、即ち、起動しようとするファイルを取得する。次に、全てのプロセス集合の履歴記録中に捜索を行うことにより、直前のステップで取得されたファイルがプロセス集合に含まれているか否かを判定する（ステップＳ６３３）。判定が否定であれば、ファイルを起動することは安全であることを示し、処理を終了する（ステップＳ６５０）。判定結果が肯定であれば、起動しようとするファイルは、プロセス集合における不審なプロセスによりリリースされたものであることを示し、ステップＳ６４１に移行する。ステップＳ６４１では、当該ファイルが直前のステップで取得されたプロセス集合の第１目のファイルであるか否かをさらに判定する。判定結果が肯定であれば、自己リリースサービスをインストールする行為であると確定することができる（ステップＳ６４３）。
【００６３】
ウイルスＡの例では、レジストリのパスがシステムサービスキーではないため、ステップＳ６３２に移行する。ステップＳ６３２では、サブモジュール６００は現在のレジストリの変更動作の開始プログラムのプロセスＩＤ、即ちウイルスＡのプロセスＩＤを取得する。次に、取得されたプロセスＩＤに基づき、全てのプロセス集合中に現在のプロセスが所在する集合を捜索することにより（ステップＳ６３４）、ウイルスＡを含んでいるプロセス集合γが見つかる。よって、ステップＳ６３６に移行して、起動しようとする一つ又は複数のファイルのフルパスを取得する。次に、ステップＳ６４２での判定により、取得された起動しようとするファイルB.exeが集合γに含まれていることが見つかる。よって、現在のレジストリ操作が、ウイルスＡにより発生する、自己起動の関連を作成する行為であると確認することができる（ステップＳ６４４）。
【００６４】
図６に示す処理過程において、一部の操作の開始プログラムが、システムが自動に実行するプログラムである場合に、現在のプロセスＩＤに基づきそれに関するプロセス集合を取得できない可能性がある。しかし、本発明に係るプロセス集合にそのプロセス動作の履歴記録が含まれるので、全てのプロセス集合の履歴ファイル中にこれらの操作の対象ファイルを捜索することにより、関連するプロセス集合を取得することができる。その後、取得されたプロセス集合に基づき更なる分析を行う。
【００６５】
図７はシステムコールの通知処理サブモジュール７００を示す図である。以下、トロイの木馬プログラムＡを例として、システムコールの通知処理の過程を記述する。トロイの木馬A.exeは、「自己リリースドライバのロード」によりコンピュータに被害を加える悪意あるプログラムであると仮定する。トロイの木馬A.exeが起動した後、サブモジュール２００は、そのためにプロセス集合Ｓを作成する。A.exeが実行した後、ドライバプログラムＣをリリースし、ドライバプログラムＣのフルパスの情報は、サブモジュール５００により監視プロセス集合Ｓに記述する。次に、A.exeは、サービスに関するＡＰＩを呼び出して、プログラムＣのためにサービスレジストリ項目を作成してこのサービスを起動する。このレジストリの作成、起動サービスの操作は、システムに既に存在するシステムプロセスservices.exeにより発生する。この時に、監視モジュールは、このドライバロード動作を監視して、相応の通知を送信することができる。
【００６６】
システムコールの通知を受信した後、サブモジュール７００は、まず、ドライバロードの通知であるか否かを判定する（ステップＳ７１０）。この判定により、ドライバプログラムＣをロードする通知であることが確定する。よって、通知からドライバプログラムＣのフルパスを取得し（ステップＳ７１２）、ドライバプログラムＣのフルパスに基づき、全てのプロセス集合の履歴記録中に同一のファイルを捜索する。これにより（ステップＳ７１４）、ドライバプログラムＣが相応のプロセス集合Ｓに含まれていることが見つかる（ステップＳ７１６）。よって、集合ＳにおけるA.exeが実行する時に「自己リリースドライバのロード」という行為を実行したと判定される（ステップS７１８）。
【００６７】
このトロイの木馬の例では、ドライバロードの動作の開始プログラムが既に実行しているシステムプロセスであるので、開始プログラムのプロセスＩＤにより相応の監視プロセス集合が既に存在しているか否かを判定することができない。そのために、本発明は、監視プロセス集合の履歴記録中にロード動作の対象情報、即ちドライバプログラムＣの情報を捜索することにより、関連するプロセス集合を見つけることを提案する。
【００６８】
上述のドライバロードのシステムコールのほか、図６に示すシステムコール処理サブモジュールは、その他の悪意ある行為である可能性があるシステムコールの通知を処理することもできる。例えば、図６に示すように、受信したシステムコール通知がドライバロード動作ではない場合に、現在の動作の開始プログラムのプロセスＩＤを取得し（ステップＳ７２０）、次に、取得されたプロセスＩＤに基づき相応のプロセス集合を見つける（ステップＳ７３０）。相応のプロセス集合を見つけた場合は、これらのシステムコールは、当該プロセス集合における不審なプロセスにより発生させられるものであることを示す。次に、システムコールの具体的な動作（ステップＳ７４１〜７４５）に基づき、相応の悪意ある行為を確定する（ステップＳ７５１〜７５５）。例えば、システムコールは、グローバルのメッセージフックを設定する操作である場合に（ステップＳ７４５）、さらに、フック処理関数に対応するダイナミックリンクライブラリが現在のプロセスが所在の監視プロセス集合にあるか否かを判定する（ステップＳ７４６）。判定が肯定であれば、肯定的に自己リリースフックを設定する行為であると判定する（ステップＳ７５５）。
【００６９】
以上、図面を参照しながら、サブモジュール４００〜７００が、プロセス集合に提供されるプロセスの間、及びプロセスとファイルとの間の相関関係に基づき、悪意ある行為を見つける過程を説明した。以上のように示したこれらのサブモジュールの操作は、孤立したものではなく、それらは互いに重なる可能性もある。言い換えれば、同一の悪意ある行為は、上述の複数のモジュールにおいて見つける可能性がある。例えば、図５には、「自己リリース起動」という行為の判別方法が示されているが、この行為を、プロセス作成の通知に基づき識別することもできる。例えば、保護ソフトウェアがプロセス作成の通知を送信する場合に、図２に示すようにプロセス集合の保守を完成した後、作成されたプロセスに対応するプログラムファイルが、作成されたプロセスの親プロセスが所在のプロセス集合にあるか否かをさらに判定することができる。判定が肯定であれば、「自己リリース起動」という行為であると確定することができる（具体的な過程は、図８を参照する）。
（有益な効果）
【００７０】
以上、具体的な実施例に基づき、本発明に係るプロセス集合の作成、保守及び利用を詳しく述べた。本発明に係るプロセス集合は、作成関係に互いに関連する複数のプロセスをまとめ、集合中の各プロセスの履歴データを記録する。よって、本発明に係るプロセス集合の概念は、プロセス間の互いの関連性を表現するだけでなく、プロセスとファイル操作などの動作との間の互いの関連性を表現している。これらの関連の情報は、例えばプロセス作成、システムコード及びファイル操作などの複数の分散的な動作を関連付けることにより、その中の悪意ある行為を識別することができる。よって、プロセス集合は、実際的に、論理的に一つの悪意ある行為を表現する個体である。よって、プロセス集合を用いて悪意ある行為を見つけることは、より正確になる。
【００７１】
また、本発明に係るプロセス集合は、フィルタリングされた後に作成されたものである。このように、フィルタリング処理を行った後、システムにより提供されるオリジナルな親プロセス―子プロセスの関係は無視され、直接に不審な子プロセスに対して相応のプロセス集合を作成することが可能になる。
例えば、ユーザインタフェースプログラムexplorer.exeは、a.exeとb.exeを作成する。システムにより提供されるプロセスの世代関係から見ると、a.exeとb.exeは兄弟関係である。しかし、本発明に係るプロセス集合の作成原則に応じて、親プロセスexplorer.exeは安全なプロセスであり、監視されていないものであり、それにより作成されたa.exeとb.exeは、それぞれ異なる悪意ある行為に及ぼす可能性があるので、それぞれ２つの互いに独立したプロセス集合に属する。よって、a.exeとb.exeとの間は、何の関係もない。このように、プロセスのフィルタリングにより、オリジナルなプロセス間の世代関係は、論理機能上の関連関係に転化される。
【００７２】
また、プロセス集合中の複数の関連プロセスの地位は互いに平等である。このような簡単な構造により、プロセス集合の保守が簡単になっており、捜索が高速度になっている。これらの利点は、特に、リアルタイム監視システムの要求に適合し、行為分析が複雑すぎるのでコンピュータの性能に悪影響を及ぼしてユーザの正常な利用を妨害することがない。
【００７３】
好ましい実施例に基づき本発明を例示したが、当業者であれば、添付される特許請求の範囲に規定される発明の主旨と範囲から離脱しない限り、様々な変更をすることができる。
【図１】
2011501279.tif 000003
【図２】
2011501279.tif 000004
【図３】
2011501279.tif 000005
【図４】
2011501279.tif 000006
【図５】
2011501279.tif 000007
【図６】
2011501279.tif 000008
【図７】
2011501279.tif 000009
【図８】
2011501279.tif 000010
【国際調査報告】
2011501279.tif 000011
2011501279.tif 000012
2011501279.tif 000013
2011501279.tif 000014