(57)【特許請求の範囲】
【請求項１】
複数のコンピュータを有するシステムの空間で、アプリケーションプログラムの実行主体であるプロセスの一連のイベントで構成されるプロセス動作の開始時に、前記プロセスを時間的及び空間的に一意に識別する第１の識別情報を生成し、当該第１の識別情報を含んだプロセス情報を生成するプロセス情報生成部と、
前記イベント毎に、当該イベントの種別を示すイベント種別情報を生成し、当該イベント種別情報を含んだイベント情報を生成するイベント情報生成部と、
前記イベント毎に、前記プロセス情報生成部により生成された前記プロセス情報と、前記イベント情報生成部により生成された前記イベント情報と、を有するログ情報を生成するログ情報生成部と、
を備えたログ情報生成装置。
【請求項２】
前記プロセス情報生成部は、前記プロセス動作の開始時に、前記プロセスの属性を示すプロセス属性情報を更に生成し、前記第１の識別情報と当該プロセス属性情報とを含んだ前記プロセス情報を生成し、
前記イベント情報生成部は、前記プロセス動作の開始時以降のイベント毎に、当該イベントの属性を示すイベント属性情報を更に生成し、前記イベント種別情報と当該イベント属性情報とを含んだ前記イベント情報を生成し、
前記ログ情報生成部は、前記プロセス動作の開始時のイベントについては、前記第１の識別情報と前記プロセス属性情報との両方を含んだ前記プロセス情報と、前記イベント情報と、を有するログ情報を生成し、前記プロセス動作の開始時以外のイベントについては、前記第１の識別情報のみを含んだ前記プロセス情報と、前記イベント情報と、を有するログ情報を生成する
請求項１に記載のログ情報生成装置。
【請求項３】
前記ログ情報生成部は、前記プロセスの親のプロセスを時間的及び空間的に一意に識別する第２の識別情報を取得し、当該第２の識別情報を更に含んだ前記ログ情報を生成する
請求項１又は請求項２に記載のログ情報生成装置。
【請求項４】
前記プロセスの前記第１の識別情報と、単一のコンピュータにおいて前記プロセスを一意に識別するための第３の識別情報と、の対応関係を記憶する記憶部と、
前記プロセスが所望の依頼先へ所定のイベントを依頼した際、当該所望の依頼先から前記プロセスの前記第３の識別情報のみが出力された場合に、前記記憶部に記憶された対応関係に基づいて、前記所望の依頼先から出力された前記第３の識別情報に対応する第１の識別情報を取得する取得部と、を更に備え、
前記ログ情報生成部は、当該取得部で取得された前記第１の識別情報を含むプロセス情報を用いて、前記ログ情報を生成する
請求項１又は請求項２に記載のログ情報生成装置。
【請求項５】
前記ログ情報生成部は、前記イベント毎に、コンピュータの状態を示す実行環境情報を更に有する前記ログ情報を生成する
請求項１から請求項４のいずれか１項に記載のログ情報生成装置。
【請求項６】
前記プロセス情報生成部は、１つ以上の異なるハッシュ値生成アルゴリズムに基づいて、前記第１の識別情報が示すプロセスのプロセス実行ファイルの１つ以上のハッシュ値を生成し、生成した１つ以上のハッシュ値を更に含んだ前記プロセス情報を生成する
請求項１から請求項５のいずれか１項に記載のログ情報生成装置。
【請求項７】
前記プロセス情報生成部は、前記第１の識別情報が示すプロセスのプロセス実行ファイルの名称を更に含んだ前記プロセス情報を生成する
請求項１から請求項５のいずれか１項に記載のログ情報生成装置。
【請求項８】
前記ログ情報生成部は、前記プロセスの開始から終了までのすべてのログ情報の全体又は一部のハッシュ値を生成する
請求項１から請求項７のいずれか１項に記載のログ情報生成装置。
【請求項９】
コンピュータを請求項１から請求項８のいずれか１項に記載のログ情報生成装置として機能させるためのプログラム。
【請求項１０】
複数のコンピュータを有するシステムの空間で、時間情報及び実行環境情報が入力される入力部と、
時間情報と、実行環境情報と、アプリケーションプログラムの実行主体であるプロセスの一連のイベントで構成されるプロセス動作の開始時に生成されたものであって前記プロセスを時間的及び空間的に一意に識別する第１の識別情報を含んだプロセス情報と、イベントの種別を示すイベント種別情報を含んだイベント情報と、を前記イベント毎に有するログ情報を記憶するログ情報記憶部と、
前記ログ情報記憶部に記憶された前記ログ情報から、前記入力部に入力された前記時間情報及び前記実行環境情報に対応するログ情報に含まれる第１の識別情報を特定し、特定した前記第１の識別情報を有する全部又は一部のログ情報を抽出するログ情報抽出部と、
を備えたログ情報抽出装置。
【請求項１１】
前記ログ情報記憶部に記憶された前記ログ情報は、前記プロセスの親のプロセスを時間的及び空間的に一意に識別する第２の識別情報を更に含み、
前記ログ情報抽出部は、特定した前記第１の識別情報を有する全部又は一部のログ情報を抽出し、抽出したログ情報の中から、前記親のプロセスの前記第２の識別情報を抽出し、抽出した前記第２の識別情報を有する全部又は一部のログ情報を更に抽出する
請求項１０に記載のログ情報抽出装置。
【請求項１２】
コンピュータを請求項１０又は請求項１１に記載のログ情報抽出装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ情報生成装置及びプログラム並びにログ情報抽出装置及びプログラムに関する。
【背景技術】
【０００２】
近年、サイバー攻撃により、コンピュータ等の各種の情報処理装置において、悪意のあるプログラムコードが実行され、その結果、個人情報や機密情報が流出する事件が後をたたず、大きな社会問題となっている。この悪意のあるプログラムコードを含むアプリケーションプログラムのことを「マルウェア」という。サイバー攻撃は日々巧妙化し、マルウェアの中には既知のみならず未知の手法を使って攻撃する種類もまた存在することから、マルウェアに対する完全な防御方法は解明されていない。
【０００３】
特開２０１３−２２２４２２号公報では、アプリケーションプログラムに関する情報をオペレーションシステム（ＯＳ）へ提供するためのマニフェストファイルに記載された各機能の使用許可情報に基づいて、アプリケーションプログラムのマルウェアらしさを解析する技術が開示されている（特許文献１参照）。
【０００４】
特開２０１０−１８２１９４号公報では、入退出ログ、ＰＣ操作ログ、複合機操作ログを記録して、それらのログデータを関連付けた統合ログを生成することが開示されている（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−２２２４２２号公報
【特許文献２】特開２０１０−１８２１９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の技術は、アプリケーションプログラムに含まれたマニフェストファイルに基づき、今まさにインストールしようとするアプリケーションプログラムがマルウェアか否かを解析するに過ぎない。つまり、特許文献１の技術は、ソフトウェアをインストールするタイミングのみで、マルウェアの有無を検出することができるが、そのソフトウェアのインストール前又はインストール後では、マルウェアの有無を検出できない問題がある。
【０００７】
また、特許文献１の技術は、マニフェストファイルに既に記載された情報に基づき、アプリケーションプログラムがマルウェアか否かを解析するので、既知のマルウェアのみ解析することができ、未知のマルウェアを検出することができない問題がある。
【０００８】
特許文献２の技術は、ログデータとして記録する情報として、ＰＣ識別するためのホスト名、操作主体を示すログオンユーザ名、操作内容を示す操作項目、操作対象を示すファイル名等の情報があるが、その操作を実行する際に関わったアプリケーションプログラムの情報が不足している。つまり、あるアプリケーションプログラムの動作が、正規のアプリケーションプログラムによる行為か、マルウェアによる行為かの判断ができない問題がある。
【０００９】
また、特許文献２の技術は、情報漏えい対策を目的としたシステムであり、ログオンユーザ操作を起点としたＰＣ操作ログを記録する仕組みである。しかしながら、ある種のマルウェアは、定常的に隠密行動をするために自発的に動作するアプリケーションプログラムとして動作し、明示的なユーザインターフェースを持たない場合も多い。この点を考慮すれば、マルウェアを検出するためには、ユーザインターフェースの有無、ＰＣ利用ユーザのアプリケーションの実行意図の有無に関係なく、すべてのアプリケーションプログラムの動作をログとして記録する必要がある。
【００１０】
また、コンピュータ等の各種の情報処理装置においては、アプリケーションプログラムだけでなく、ネットワーク通信単位やログインユーザ単位でも、一連の動作で構成されるタスクを記録したいという要請もある。
【００１１】
本発明は、このような実情を鑑みて提案されたものであり、任意の時刻、実行環境におけるタスクを容易に特定するためのログ情報を生成するログ情報生成装置及びプログラムを提供することを目的とする。
【００１２】
さらに、本発明は、生成されたログ情報から、任意の時刻、実行環境で実行されたタスクを容易に特定できるログ情報を抽出するログ情報抽出装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係るログ情報生成装置は、複数のコンピュータを有するシステムの空間で、アプリケーションプログラムの実行主体であるプロセスの一連のイベントで構成されるプロセス動作の開始時に、前記プロセスを時間的及び空間的に一意に識別する第１の識別情報を生成し、当該第１の識別情報を含んだプロセス情報を生成するプロセス情報生成部と、前記イベント毎に、当該イベントの種別を示すイベント種別情報を生成し、当該イベント種別情報を含んだイベント情報を生成するイベント情報生成部と、前記イベント毎に、前記プロセス情報生成部により生成された前記プロセス情報と、前記イベント情報生成部により生成された前記イベント情報と、を有するログ情報を生成するログ情報生成部と、を備えている。
【００１４】
本発明に係るログ情報抽出装置は、複数のコンピュータを有するシステムの空間で、時間情報及び実行環境情報が入力される入力部と、時間情報と、実行環境情報と、アプリケーションプログラムの実行主体であるプロセスの一連のイベントで構成されるプロセス動作の開始時に生成されたものであって前記プロセスを時間的及び空間的に一意に識別する第１の識別情報を含んだプロセス情報と、イベントの種別を示すイベント種別情報を含んだイベント情報と、を前記イベント毎に有するログ情報を記憶するログ情報記憶部と、前記ログ情報記憶部に記憶された前記ログ情報から、前記入力部に入力された前記時間情報及び前記実行環境情報に対応するログ情報に含まれる第１の識別情報を特定し、特定した前記第１の識別情報を有する全部又は一部のログ情報を抽出するログ情報抽出部と、を備えている。
【発明の効果】
【００１５】
本発明は、任意の時刻、実行環境で起動されたプロセスを容易に特定するためのログ情報を効率よく抽出することができる。
【図面の簡単な説明】
【００１６】
【図１】マルウェア特定システム全体の概略構成を示す図である。
【図２】クライアント端末の機能的な構成を示すブロック図である。
【図３】プロセス動作ログレコードの構造を示す図である。
【図４】プロセス開始からプロセス終了までのプロセス動作ログの構成を示す図である。
【図５】クライアント端末の動作ルーチンを示すフローチャートである。
【図６】クライアント端末の動作ルーチンを示すフローチャートである。
【図７】ステップＳ７及びステップＳ１０におけるプロセス監視制御部の動作ルーチンを示すフローチャートである。
【図８】ステップＳ７及びステップＳ１０におけるログ情報生成部の動作ルーチンを示すフローチャートである。
【図９】マルウェア（ドロッパー）の実行状況を表すプロセス動作ログを示す図である。
【図１０】マルウェア（ドロッパー）の実行状況を表すタイムチャートである。
【図１１】マルウェア（ＲＡＴ）の実行状況を表すプロセス動作ログを示す図である。
【図１２】マルウェア（ＲＡＴ）の実行状況を表すタイムチャートである。
【図１３】ログ情報解析部の処理を示すフローチャートである。
【図１４】ログ情報解析部の処理を示すフローチャートである。
【図１５】ログ情報解析部の処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本発明を実施するための形態について、図面を参照しながら詳細に説明する。
図１は、マルウェア特定システム１全体の概略構成を示す図である。
【００１８】
マルウェア特定システム１は、各々のユーザによって直接操作される複数のクライアント端末１０と、クライアント端末１０から送信されるログ情報を一旦保存する複数のスプール装置２０と、スプール装置２０から送信されるログ情報を解析してマルウェアを特定するためのログ情報を抽出するログ情報抽出装置３０と、を備えている。
【００１９】
クライアント端末１０は、アプリケーションプログラムの実行主体としてのプロセスが実行される毎に、そのプロセスの動作を示すログであるプロセス動作ログを生成する。また、クライアント端末１０は、ユーザログオン等、プロセスに依存しない操作も操作ログとして生成する。これらクライアント端末１０で生成されるプロセス動作ログ及び操作ログを含むすべてのログをログ情報と呼ぶ。そして、クライアント端末１０は、定期的あるいはログ情報のデータサイズが所定の値に達した段階で、当該ログ情報を所定のスプール装置２０へ送信する。
【００２０】
図２は、クライアント端末１０の機能的な構成を示すブロック図である。クライアント端末１０は、例えば、記録媒体に記録されたプログラム又は外部から送信されたプログラムをコンピュータにインストールすることにより実現される。
クライアント端末１０は、システムが稼動するために割り当てられたメモリ空間であるシステム領域と、各々のユーザがアプリケーションプログラムの稼動に利用できるメモリ空間である１つ以上のユーザ領域と、に分けられる。１つのクライアント端末１０には、システム領域は１つだけあるが、ユーザ領域はログオンしているユーザの数だけある。
【００２１】
クライアント端末１０は、当該クライアント端末１０において実行中のプロセスの動作を監視するプロセス監視部１１と、デバイスドライバの動作を監視するドライバ監視部１２と、プロセス監視部１１を制御し、その出力情報を利用するプロセス監視制御部１３と、を備えている。
【００２２】
なお、デバイスドライバとは、クライアント端末１０にインストールされたＯＳが、当該クライアント端末１０に接続された周辺装置（デバイス）を制御するためのプログラムをいう。デバイスドライバは、例えばファイル入出力ドライバの場合、ＯＳからの制御に基づいて、新規ファイルの生成、既存ファイルを開く、既存ファイルの削除等、後述するファイル操作関連の動作（イベント）を行う。
【００２３】
これより、あるプロセスがファイル操作関連の動作などを実施する場合は、最初に、当該プロセスがＯＳに所望の処理を依頼し、次に、ＯＳが所定のデバイスドライバを制御して当該処理を実施する。このため、デバイスドライバは、依頼元のプロセスを直接には把握することなく、当該プロセスが所望する処理を行う。
【００２４】
さらに、クライアント端末１０は、プロセス監視部１１及びドライバ監視部１２の監視結果並びに後述の全体制御部１６からのプロセスに依存しない操作ログ関連情報の受信に基づいてログ情報を生成するログ情報生成部１４と、定期的あるいはログ情報のデータサイズが所定の値に達した段階で、当該ログ情報をスプール装置２０に送信するログ情報送信部１５と、クライアント端末１０におけるプロセス及びデバイスドライバ動作の監視並びにログ情報の生成に関する全体的な制御を行う全体制御部１６と、を備えている。また、全体制御部１６は、ユーザログオン等、プロセスに依存しない操作に起因した操作ログに関する情報も生成する。
【００２５】
プロセス監視部１１は、システム領域及びユーザ領域内の監視対象となるすべてのプロセスに対して設けられている。プロセス監視制御部１３は、システム領域に１つ、各々のユーザ領域に１つずつ設けられている。
【００２６】
図１に示すスプール装置２０は、クライアント端末１０から出力されたログ情報をログ情報抽出装置３０へ送信するための中継サーバとして動作する。スプール装置２０は、１つ以上のクライアント端末１０から送信されたログ情報を受信して一旦蓄積し、所定のタイミングにおいて、蓄積したログ情報をまとめてログ情報抽出装置３０へ送信する。
【００２７】
ログ情報抽出装置３０は、例えば、記録媒体に記録されたプログラム又は外部から送信されたプログラムをコンピュータにインストールすることにより実現される。
ログ情報抽出装置３０は、全てのクライアント端末１０からスプール装置２０を介してログ情報を収集する。オペレータは、マルウェア感染等のセキュリティインシデントの発生の疑いを警告するサイバー攻撃アラートの発生を確認すると、図示しないオペレータ端末を介して、サイバー攻撃アラートの情報（発生日時、端末情報等）をログ情報抽出装置３０へ出力する。ログ情報抽出装置３０は、サイバー攻撃アラートの情報が入力されると、マルウェアの特定に必要なログ情報を抽出する。
【００２８】
なお、ログ情報抽出装置３０は、サイバー攻撃アラートの情報（発生日時、端末情報等）を受信して、受信した発生日時及び端末情報等に基づいて、マルウェアの特定に必要なログ情報を自動的に抽出することも可能である。
【００２９】
具体的には、ログ情報抽出装置３０は、スプール装置２０からプロセス動作ログを受信するログ情報受信部３１と、受信したログ情報を格納する記憶媒体であるデータベース３２と、オペレータの操作入力に応じた情報を出力する操作部３３と、マルウェア特定のために必要とされるログ情報を解析の上、抽出するログ情報解析部３４と、ログ情報の解析結果及びその他の情報を表示する表示部３５と、を備えている。
【００３０】
データベース３２には、マルウェア特定システム１内の各クライアント端末１０から送信されたログ情報の他、例えば既知のマルウェアに関する各種の属性等、ログ情報の解析に必要とされる他の情報が蓄積される。
【００３１】
図３は、プロセス動作ログレコードの構造を示す図である。
プロセス動作ログは、１つ以上のプロセス動作ログレコードから構成されている。プロセス動作ログレコードは、当該プロセス動作ログレコード生成の元となったプロセス動作が発生した順番を示す「シーケンス番号」と、当該プロセス動作が発生した日時を示す「発生日時」と、当該プロセスが動作した実行環境を示す「端末情報」と、当該プロセスを特定するための「プロセス情報」と、当該プロセスがその動作として何を実行したのかを示す「イベント情報」と、で構成されている。
【００３２】
プロセス情報は、任意の時刻、実行環境において動作したプロセスを一意に識別する「プロセスＧＩＤ（ｐｒｓＧＩＤ）」と、プロセスに関する様々な属性を記述した「プロセス属性情報」と、で構成されている。また、イベント情報は、プロセスが実行した動作の種類を表す「イベント種」と、イベント種が表したプロセス動作に関する様々な属性を記述した「イベント属性情報」と、で構成されている。
【００３３】
シーケンス番号は、ログ情報生成部１４で生成される。発生日時は、プロセス監視部１１又はドライバ監視部１２で生成される。端末情報は、ログ情報生成部１４で生成される。プロセス情報は、プロセス監視制御部１３で生成される。イベント情報は、プロセス監視部１１又はドライバ監視部１２で生成される。
【００３４】
なお、本実施形態では、ログ情報生成部１４が複数のプロセス監視制御部１３からプロセス動作ログの構成要素を受信し、それらにまとめてシーケンス番号を生成する。しかし、シーケンス番号の生成は、この例に限定されるものではない。
例えば、あるプロセスにおけるプロセス動作ログの生成順の厳密な保証が求められる場合、プロセス監視部１１が、当該プロセスにおけるプロセス動作順を示した仮のシーケンス番号を発生日時と共に生成することが可能である。この場合、ログ情報生成部１４が、複数のプロセス監視部１１からプロセス監視制御部１３を通じて当該発生日時及び仮のシーケンス番号を受信して、当該発生日時を手掛かりに当該仮のシーケンス番号をソートして、クライアント端末１０全体としてのログ情報に対するシーケンス番号を改めて生成する。
【００３５】
一方、プロセスに依存しない操作ログは、図３のプロセス動作ログレコードから、プロセス情報が省略された構造をとる。操作ログにおけるイベント情報は、全体制御部１６で生成される。
【００３６】
図４は、ある時刻、実行環境において動作したプロセスのプロセス開始からプロセス終了までの一連の動作に関するプロセス動作ログの構成を示す図である。
あるプロセスが開始されると、図４（Ａ）に示すように、シーケンス番号１、発生日時１、端末情報１、当該プロセスを大域的（時間的及び空間的）一意に識別するｐｒｓＧＩＤ、当該プロセスに関するプロセス属性情報、プロセス開始を表すイベント種であるｐｒｓＳｔａｒｔで構成されたプロセス動作ログレコードが生成される。ここでは、プロセス開始に関するイベント属性情報に相当する全ての情報はまとめてプロセス属性情報に記述されることから、イベント属性情報は省略されている。
【００３７】
このプロセスが次の動作を実行すると、図４（Ｂ）に示すように、シーケンス番号２、発生日時２、端末情報２、図４（Ａ）で用いられたのと同じｐｒｓＧＩＤ、当該動作を表すイベント種であるイベント２、当該動作に関する様々な属性を記述したイベント属性情報２、で構成されたプロセス動作ログレコードが生成される。つまり、このプロセス動作ログレコードでは、プロセス属性情報が省略されている。
【００３８】
このプロセスが終了すると、図４（Ｃ）に示すように、シーケンス番号Ｎ、発生日時Ｎ、端末情報Ｎ、図４（Ａ）で用いられたのと同じｐｒｓＧＩＤ、プロセス終了を表すイベント種であるｐｒｓＳｔｏｐで構成されたプロセス動作ログレコードが生成される。つまり、このプロセス動作ログレコードでも、プロセス属性情報が省略されている。また、本実施例では、プロセス終了に関するイベント属性情報は存在しないことから、イベント属性情報も省略されている。
【００３９】
以上のように、プロセス属性情報は、プロセス開始時のプロセス動作ログレコードにはあるが、プロセス開始時以降のプロセス動作ログレコードでは省略されている。その理由は、プロセス属性情報は、ｐｒｓＧＩＤと１対１に対応する情報であり、プロセスの開始から終了に至るまで共通するパラメータであるため、プロセス開始時だけ存在すれば十分だからである。
【００４０】
ただし、ｐｒｓＧＩＤは、理解しにくい文字列で構成されている。そこで、ｐｒｓＧＩＤが何のプロセスを示しているのかを容易に理解できるように、テキストで記述された当該プロセスのプロセス実行ファイルの名称がｐｒｓＧＩＤに付加されることもある。
【００４１】
ここで、発生日時の書式は、例えば次の通りである。
「ＭＭ／ＤＤ／ＹＹＹＹ  ｈｈ：ｍｍ：ｓｓ．ｓｓｓ  ±ｈｈｍｍ」
そして、当該書式の各パラメータは次の通りである。
ＭＭ：月
ＤＤ：日
ＹＹＹＹ：西暦
ｈｈ：時
ｍｍ：分
ｓｓ．ｓｓｓ：秒（ｍｓｅｃオーダー）
ｈｈｍｍ：協定世界時との時差（ｈｈは時間、ｍｍは分）
【００４２】
これより、例えば日本標準時（ＪＳＴ）において２０１５年７月１５日２０時５２分１８．０３３秒に発生したプロセス動作において、その発生日時の記述例は次の通りである。
「０７／１５／２０１５  ２０：５２：１８．０３３  ＋０９００」
【００４３】
シーケンス番号は、発生日時から独立したパラメータである。例えば、発生日時が同じであった場合でも、シーケンス番号は決して重複することはない。これより、シーケンス番号によって、結果的にｍｓｅｃ以下のプロセス動作の発生順を示すことができる。さらにシーケンス番号は、仮にＯＳの時刻設定に変更が発生したとしても、時刻設定の変更に影響されることなく、プロセス動作の絶対的な発生順を示すことができる。
【００４４】
端末情報は、例えば、「ｕｓｅｒ：（ログオン）ユーザ名」が該当する。端末情報は、他に、コンピュータ名、コンピュータドメイン名、端末管理ＩＤ、ホストのＩＰアドレス、ＭＡＣアドレス等が該当する。
【００４５】
端末情報は、プロセスから独立したパラメータである。端末情報は、一般的にはプロセス動作ログレコード毎に大きく変化することはない。しかし、例えばＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）を用いてホストのＩＰアドレスを動的に変更した場合等、プロセスの動作とは独立して、端末情報が変化する可能性がある。これより、全てのプロセス動作ログレコードに対して、端末情報が付与されている。
【００４６】
ｐｒｓＧＩＤ（プロセスＧＩＤ）は、任意の時刻、実行環境で生成、動作したプロセスに対して一意に割り当てられる識別子である。ｐｒｓＧＩＤは、例えば、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）で用いられるＧＵＩＤ（Ｇｌｏｂａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）や、ＩＳＯ／ＩＥＣ  １１５７８で規定されたＵＵＩＤ（Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）等が該当する。
ｐｒｓＧＩＤは、例えば、「Ｆ６Ｃ３２０２５−ＤＣ８３−４１２６−Ａ１Ｂ７−７Ｄ６Ｅ６ＦＣＢＢ１０Ｃ」等と記述される。
【００４７】
プロセス属性情報は、任意の動作の実行主体であるプロセスに関する様々な属性を記述する。プロセス属性情報は、例えば次の通りである。
ｎａｍｅ：プロセス実行ファイルの名称（フルパス）
ｈａｓｈ：プロセス実行ファイルのハッシュ値
ｐａｒｅｎｔＧＩＤ：本プロセスを起動した親プロセスのｐｒｓＧＩＤ
ｐｉｄ：システムが本プロセスに付与したシステム(実行環境)内一意な識別子
ｐａｒｅｎｔＰｉｄ：本プロセスを起動した親プロセスのｐｉｄ
ｐｒｏｄｕｃｔＮａｍｅ：プロセスが所属するソフトウェア製品の製品名
【００４８】
プロセス属性情報には、他に、当該親プロセスのプロセス実行ファイルの名称、当該プロセスのバージョン番号、当該プロセス実行ファイルのファイルサイズ、当該プロセス実行ファイルの著作権者名、当該ソフトウェア製品の製造元、製品説明や証明書関連情報等がある。
【００４９】
イベント種及びそのイベント属性情報は、例えば次の通りである。
１．プロセス関連のイベント種
【００５０】
（１）ｐｒｓＳｔａｒｔ（プロセスの起動）
なお、ｐｒｓＳｔａｒｔは、イベント属性情報を持たない。
（２）ｐｒｓＳｔｏｐ（プロセスの終了）
なお、ｐｒｓＳｔｏｐは、イベント属性情報を持たない。
（３）その他
プロセス関連のその他のイベント種としては、例えば毎００：００時に、ｐｒｓＧＩＤで識別されたプロセスが実行中であることを示すｐｒｓＲｕｎ、等がある。
【００５１】
２．ネットワーク関連のイベント種
【００５２】
（１）ｔｃｐＯｐｅｎ（ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）ネットワーク接続の開始）
ｔｃｐＯｐｅｎのイベント属性情報は、例えば次の通りである。
ｄｓｔＩＰ：接続先ＩＰアドレス
ｔｃｐＧＩＤ：任意の時刻、実行環境で開始したネットワーク接続に対して一意に割り当てられる識別子
ｔｃｐＯｐｅｎのイベント属性情報には、他に、接続先ホスト名、ポート番号、等がある。
【００５３】
（２）ｔｃｐＣｌｏｓｅ（ＴＣＰネットワーク接続の終了）
ｔｃｐＣｌｏｓｅのイベント属性情報は、例えば次の通りである。
ｔｃｐＧＩＤ：対応するｔｃｐＯｐｅｎにて付与されたｔｃｐＧＩＤ
ｔｃｐＣｌｏｓｅのイベント属性情報には、他に、接続開始日時等がある。
【００５４】
（３）その他
ネットワーク関連のその他のイベント種としては、例えば毎００：００時に、ｐｒｓＧＩＤ及びｔｃｐＧＩＤの少なくとも一方で識別されたプロセスのＴＣＰネットワーク接続が継続していることを示すｔｃｐＲｕｎ、当該プロセスがＴＣＰネットワーク接続の受付待ち状態になったことを示すｔｃｐＬｉｓｔｅｎ、ＴＣＰネットワーク接続においてデータ送信が実施されたことを示すｔｃｐＳｅｎｄ、同データ受信が実施されたことを示すｔｃｐＲｅｃｅｉｖｅ、等がある。さらに、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）関連での同様のイベント種等もある。
【００５５】
３．ファイル操作関連のイベント種
【００５６】
（１）ｆｉｌｅＣｒｅａｔｅ（新規ファイルの生成）
ｆｉｌｅＣｒｅａｔｅのイベント属性情報は、例えば次の通りである。
ｆｉｌｅ：生成ファイル名
ｐｉｄ：依頼元プロセスのｐｉｄ
ｆｉｌｅＣｒｅａｔｅのイベント属性情報には、他に、生成先のデバイス名、同ドライブ名等がある。
【００５７】
（２）ｆｉｌｅＯｐｅｎ（既存ファイルを開く）
ｆｉｌｅＯｐｅｎのイベント属性情報は、例えば次の通りである。
ｆｉｌｅ：対象ファイル名
ｐｉｄ：依頼元プロセスのｐｉｄ
ｆｉｌｅＯｐｅｎのイベント属性情報には、他に、対象ファイルが存在するデバイス名、同ドライブ名等がある。
【００５８】
（３）ｆｉｌｅＣｌｏｓｅ（読み書き後、ファイルを閉じる）
ｆｉｌｅＣｌｏｓｅのイベント属性情報は、例えば次の通りである。
ｆｉｌｅ：対象ファイル名
ｈａｓｈ：対象ファイルを閉じた時の当該対象ファイルのハッシュ値
ｒＢｙｔｅ：読み込み総バイト数
ｗＢｙｔｅ：書き出し総バイト数
ｐｉｄ：依頼元プロセスのｐｉｄ
ｆｉｌｅＣｌｏｓｅのイベント属性情報には、他に、対象ファイルのファイルサイズ、同ファイルの生成日時等がある。
【００５９】
（４）ｆｉｌｅＤｅｌｅｔｅ（既存ファイルの削除）
ｆｉｌｅＤｅｌｅｔｅのイベント属性情報は、例えば次の通りである。
ｆｉｌｅ：対象ファイル名
ｐｉｄ：依頼元プロセスのｐｉｄ
ｆｉｌｅＤｅｌｅｔｅのイベント属性情報には、他に、対象ファイルが存在していたデバイス名、同ドライブ名等がある。
【００６０】
（５）その他
ファイル操作関連のその他のイベント種としては、例えばｐｒｓＧＩＤで識別されたプロセスによる既存ファイルのファイル名変更を示すｆｉｌｅＲｅｎａｍｅ、当該プロセスによる既存ファイルのコピー動作を示すｆｉｌｅＣｏｐｙ等がある。さらに、フォルダ関連での同様のイベント種等もある。
【００６１】
４．レジストリ操作関連のイベント種
【００６２】
（１）ｒｅｇＶａｌＳｅｔ（指定したサブキーへの（何らかの値を持つ）所定のエントリの設定）
ｒｅｇＶａｌＳｅｔのイベント属性情報は、例えば次の通りである。
ｋｅｙ：エントリ設定対象サブキー名
ｅｎｔｒｙ：設定されるエントリ名
【００６３】
（２）その他
レジストリ操作関連のその他のイベント種としては、例えばｐｒｓＧＩＤで識別されたプロセスによる所定のエントリ削除を示すｒｅｇＶａｌＲｅｓｅｔ、当該プロセスによるサブキーの新規生成を示すｒｅｇＫｅｙＣｒｅａｔｅ、当該プロセスによる所定サブキーの削除を示すｒｅｇＫｅｙＤｅｌｅｔｅ等がある。
【００６４】
５．ユーザセッション関連のイベント種
【００６５】
（１）ｌｏｇｏｎ（ユーザのログオン検出）
ｌｏｇｏｎのイベント属性情報は、例えば次の通りである。
ｕｓｅｒ：ログオンユーザ名
ｕｓｒＧＩＤ：任意の時刻、実行環境で開始したユーザセッションに対して一意に割り当てられる識別子
ｌｏｇｏｎのイベント属性情報には、他に、ログオンユーザドメイン名、システムが当該ユーザセッションに付与したシステム内一意なユーザセッションＩＤ等がある。
なお、ｌｏｇｏｎログレコードは、ＯＳからの通知を受けて生成されるもので、厳密にはプロセス動作ログレコードではない。
【００６６】
（２）その他
ユーザセッション関連のその他のイベント種としては、ユーザのログオフを検出したｌｏｇｏｆｆ、ユーザセッションがロック状態に入ったことを検出したｌｏｃｋ、ユーザセッションのロック状態が解除されたことを検出したｕｎｌｏｃｋ等がある。さらに、リモートログオン関連での同様のイベント種等もある。
【００６７】
６．その他のイベント種
その他のイベント種としては、ログ情報生成部動作関連、ＯＳメンテナンス関連、接続デバイス（周辺機器）関連のイベント種等がある。
【００６８】
図５及び図６は、クライアント端末１０の動作ルーチンを示すフローチャートである。
ステップＳ１では、クライアント端末１０のＯＳが起動する。
ステップＳ２では、デバイスドライバへ図２に示すドライバ監視部１２を読み込ませる。
【００６９】
ステップＳ３では、ログ情報送信部１５が起動する。ログ情報送信部１５は、起動後、他の部位からは独立して動作する。具体的には、ログ情報送信部１５は、定期的あるいはログ情報のデータサイズが所定の値に達した段階で、当該ログ情報をスプール装置２０に送信する。
【００７０】
ステップＳ４では、図２に示す全体制御部１６が起動する。
ステップＳ５では、図２に示す全体制御部１６が、システム領域におけるプロセス監視制御部１３を起動する。
ステップＳ６では、ログ情報生成部１４が起動する。
【００７１】
ステップＳ７では、システム領域におけるプロセスの動作が監視され、プロセス動作ログが生成される。なお、ステップＳ７の詳細については後述する。
【００７２】
図６に示すステップＳ８では、全体制御部１６は、あるユーザからのログオンを検出したかを判定し、ログオンを検出した場合はその旨をログ情報生成部１４へ通知後、ステップＳ９へ進み、ログオンを検出していない場合はステップＳ１１へ進む。
【００７３】
ステップＳ９では、全体制御部１６は、ログオンが検出されたユーザのユーザ領域におけるプロセス監視制御部１３を起動する。
ステップＳ１０では、ログオンが検出されたユーザのユーザ領域におけるプロセスの動作が監視され、プロセス動作ログが生成される。なお、ステップＳ１０の詳細については後述する。そして、ステップＳ８へ戻る。
【００７４】
一方、ステップＳ１１では、全体制御部１６は、あるユーザからのログオフを検出したかを判定し、ログオフを検出した場合はその旨をログ情報生成部１４へ通知後、ステップＳ１２へ進み、ログオフを検出していない場合はステップＳ１３へ進む。
【００７５】
ステップＳ１２では、全体制御部１６は、ログオフが検出されたユーザのユーザ領域におけるプロセス監視制御部１３を停止させる。そして、ステップＳ８へ戻る。
【００７６】
ステップＳ１３では、全体制御部１６は、システムのシャットダウンを検出したかを判定し、シャットダウンを検出した場合はステップＳ１４へ進み、シャットダウンを検出していない場合はステップＳ８へ戻る。
【００７７】
ステップＳ１４では、ログ情報生成部１４が停止する。
ステップＳ１５では、全体制御部１６は、システム領域におけるプロセス監視制御部１３を停止させる。
ステップＳ１６では、全体制御部１６が停止する。
ステップＳ１７では、ログ情報送信部１５が停止する。
ステップＳ１８では、ＯＳが停止する。そして、本ルーチンが終了する。
【００７８】
図７は、ステップＳ７及びステップＳ１０におけるプロセス監視制御部１３の動作ルーチンを示すフローチャートである。
【００７９】
ステップＳ２１では、プロセス監視制御部１３は、ＯＳから、あるプロセス（以下「本プロセス」という。）が起動されたことを示すプロセス起動信号を受信したかを判定し、プロセス起動信号を受信したと判定した場合はステップＳ２２へ進み、プロセス起動信号を受信していないと判定した場合はステップＳ２８へ進む。
【００８０】
ステップＳ２２では、プロセス監視制御部１３は、本プロセスにプロセス監視部１１を読み込ませる。これにより、プロセス監視部１１は、本プロセスを監視して、本プロセスの動作状況に応じたイベント情報等をプロセス監視制御部１３へ出力する。
【００８１】
ステップＳ２３では、プロセス監視制御部１３は、プロセス起動信号から、本プロセスをシステム内で一意に識別したｐｉｄ（プロセスＩＤ）及び当該プロセスを起動した親プロセスをシステム内一意に識別したｐａｒｅｎｔＰｉｄ（親プロセスＩＤ）を抽出する。
ステップＳ２４では、プロセス監視制御部１３は、本プロセスが起動した日時を示す「発生日時」を取得する。
【００８２】
ステップＳ２５では、プロセス監視制御部１３は、本プロセスを大域的一意に識別するためのｐｒｅＧＩＤ（プロセスＧＩＤ）を生成する。
ステップＳ２６では、プロセス監視制御部１３は、本プロセスのプロセス実行ファイルのハッシュ値を生成する。
【００８３】
なお、本実施形態では、ステップＳ２６において、１つのハッシュ値が生成されているが、後述する脅威データベースでのマルウェア照合において、異なる複数の脅威データベースで照合できるように、生成アルゴリズムの異なる複数のハッシュ値が生成されてもよい。つまり、例えばＭＤ５、ＳＨＡ１、及びＳＨＡ２５６等の異なるハッシュ値生成アルゴリズムに基づいて、複数のハッシュ値が生成されてもよい。
【００８４】
ステップＳ２７では、プロセス監視制御部１３は、発生日時、プロセス情報（ｐｒｓＧＩＤ、ｐｉｄ及びｐａｒｅｎｔＰｉｄ等を含む）と、ｐｒｓＳｔａｒｔなるイベント種を含むイベント情報とをログ情報生成部１４へ送信する。そして、ステップＳ２１へ戻る。
【００８５】
ステップＳ２８では、プロセス監視制御部１３は、あるプロセス（以下、「本プロセス」という。）のプロセス監視部１１から発生日時及びイベント情報を受信したかを判定し、受信したと判定したときはステップＳ２９へ進み、受信していないと判定したときはステップＳ３１へ進む。
【００８６】
ステップＳ２９では、プロセス監視制御部１３は、本プロセスの起動時に自らが生成した本プロセスのｐｒｓＧＩＤを取得する。
ステップＳ３０では、プロセス監視制御部１３は、発生日時、本プロセスのｐｒｓＧＩＤ、イベント情報をログ情報生成部１４へ送信する。そして、ステップＳ２１へ戻る。
【００８７】
ステップＳ３１では、プロセス監視制御部１３は、ＯＳから、あるプロセス（以下、「本プロセス」という。）が終了したことを示すプロセス停止信号を受信したかを判定し、プロセス停止信号を受信したと判定した場合はステップＳ３２へ進み、プロセス停止信号を受信していないと判定した場合はステップＳ２１へ戻る。
【００８８】
ステップＳ３２では、プロセス監視制御部１３は、本プロセスの起動時に自らが生成した本プロセスのｐｒｓＧＩＤを取得する。
ステップＳ３３では、プロセス監視制御部１３は、発生日時、本プロセスのｐｒｓＧＩＤ、ｐｒｓＳｔｏｐなるイベント種を含むイベント情報をログ情報生成部１４へ送信する。そして、ステップＳ２１へ戻る。
【００８９】
図８は、ステップＳ７及びステップＳ１０におけるプロセス動作ログの生成に関するログ情報生成部１４の動作ルーチンを示すフローチャートである。
【００９０】
ステップＳ４１では、ログ情報生成部１４は、ドライバ監視部１２又はプロセス監視制御部１３から、発生日時及びイベント情報を受信する。またプロセス監視制御部１３からは、プロセス情報も併せて受信する。
すなわち、ログ情報生成部１４は、プロセス監視制御部１３からは、図７に示すステップＳ２１〜Ｓ３３までの処理を経た発生日時、プロセス情報及びイベント情報を受信する。また、ログ情報生成部１４は、ドライバ監視部１２から、発生日時及びイベント情報を受信する。
【００９１】
ステップＳ４２では、ログ情報生成部１４は、ステップＳ４１で受信したイベント情報に含まれるイベント種がｐｒｓＳｔａｒｔであるかを判定し、ｐｒｓＳｔａｒｔであると判定した場合はステップＳ４３へ進み、ｐｒｓＳｔａｒｔではないと判定した場合はステップＳ４６へ進む。
【００９２】
ステップＳ４３では、ログ情報生成部１４は、ステップＳ４１で受信したプロセス情報内のプロセス属性情報から、このプロセスを起動した親プロセスのｐａｒｅｎｔＰｉｄを抽出してステップＳ４４へ進む。
【００９３】
ステップＳ４４では、ログ情報生成部１４は、当該親プロセスの対応表を参照して、ステップＳ４４で抽出したｐａｒｅｎｔＰｉｄに対応する当該親プロセスのｐｒｓＧＩＤを取り出し、取り出したｐｒｓＧＩＤを当該プロセス情報内のプロセス属性情報のｐａｒｅｎｔＧＩＤに設定し、ステップＳ４５へ進む。
【００９４】
ここで、親プロセスは、このプロセスよりも先に開始され、このプロセスのプロセス開始に伴うステップ４４の処理の時点では終了していない。このため、ｐａｒｅｎｔＰｉｄと親プロセスのｐｒｓＧＩＤとの対応関係を示す当該親プロセスの対応表は必ず存在する。
【００９５】
ステップＳ４５では、ログ情報生成部１４は、プロセス情報に含まれるｐｒｓＧＩＤと、当該プロセス情報内のプロセス属性情報に含まれるｐｉｄの対応関係を一時的に対応表に保存して、ステップＳ４６へ進む。
【００９６】
ステップＳ４６では、ログ情報生成部１４は、ステップＳ４１においてプロセス情報を受信したかを判定し、プロセス情報を受信したと判定した場合はステップＳ４９へ、受信していないと判定した場合はステップＳ４７へ進む。つまり、ログ情報生成部１４は、ステップＳ４１において、ドライバ監視部１２からイベント情報等を受信した場合は、ステップＳ４７へ進む。
【００９７】
ドライバ監視部１２から送信されたイベント情報内のイベント属性情報には、デバイスドライバに処理を依頼したプロセスのｐｉｄが含まれている。そこで、ステップＳ４７では、ログ情報生成部１４は、ステップＳ４１で受信したイベント情報内のイベント属性情報からｐｉｄを抽出してステップＳ４８へ進む。
【００９８】
ステップＳ４８では、ログ情報生成部１４は、このプロセスの対応表を参照して、ステップＳ４７で抽出したｐｉｄに対応するｐｒｓＧＩＤを取り出し、取り出したｐｒｓＧＩＤをこのイベントのプロセス情報に設定して、ステップＳ４９へ進む。すなわち、このプロセスがデバイスドライバに処理を依頼した場合は、このプロセスの対応表が用いられて、デバイスドライバに処理を依頼した当該イベント情報の実行主体であるこのプロセスのｐｉｄから、このプロセスを大域的一意に特定するｐｒｓＧＩＤが得られる。
【００９９】
ステップＳ４９では、ログ情報生成部１４は、ＯＳから端末情報を取得して、ステップＳ５０へ進む。
ステップＳ５０では、ログ情報生成部１４は、これから生成するプロセス動作ログレコードのシリアル番号を生成して、ステップＳ５１へ進む。
【０１００】
ステップＳ５１では、ログ情報生成部１４は、ステップＳ４１で受信した各種情報、ステップＳ４９で取得した端末情報、ステップＳ５０で生成したシリアル番号、ステップＳ４４、ステップＳ４８で設定された情報を用いて、プロセス動作ログレコードを所定のログフォーマットに基づいて整形し、既存のプロセス動作ログ（ファイル）に追加出力し、ステップＳ５２へ進む。
【０１０１】
ここで、プロセス動作ログレコードの改ざんを検出できるようにすべく、ログ情報生成部１４は、整形された１つあるいは複数のプロセス動作ログレコードが生成される度に、１つあるいは複数のプロセス動作ログレコードのハッシュ値を生成することも可能である。生成されたハッシュ値は、例えばシーケンス番号、生成日時、端末情報等と対応付けて、安全な場所に保存される。なお、ログ情報生成部１４の代わりに、スプール装置２０が、ログ情報を受信した段階で、整形された１つあるいは複数のプロセス動作ログレコードのハッシュ値を生成することも可能である。
【０１０２】
なお、ログ情報送信部１５は、ステップＳ３での起動後、他の部位からは独立して動作する。具体的には、ログ情報送信部１５は、定期的あるいはログ情報のデータサイズが所定の値に達した段階で、当該ログ情報をスプール装置２０に送信する。
【０１０３】
ステップＳ５２では、ログ情報生成部１４は、ステップＳ４１で受信したイベント情報に含まれるイベント種がｐｒｓＳｔｏｐであるかを判定し、ｐｒｓＳｔｏｐであると判定した場合はステップＳ５３へ進み、ｐｒｓＳｔｏｐではないと判定した場合はステップＳ４１へ戻る。
【０１０４】
ステップＳ５３では、ログ情報生成部１４は、ステップＳ４４の処理を考慮し、本プロセスが起動したすべての子プロセスの開始を示すプロセス動作ログレコードの生成を確認後、対応表から、ステップＳ４５で一時的に保存したｐｒｓＧＩＤとｐｉｄの対応関係を削除して、ステップＳ４１へ戻る。
【０１０５】
ところで、ログ情報生成部１４は、ここまで説明したプロセス動作ログの生成に加えて、プロセスに依存しない操作に起因した操作ログも生成する。具体的には、ログ情報生成部１４は、ステップＳ４１において、ドライバ監視部１２やプロセス監視制御部１３の替わりに全体制御部１６から、操作ログを構成する発生日時及びイベント情報を受信した場合、ステップＳ４９以降の処理を実施する。
【０１０６】
以上のように、図５から図８に示すルーチンが実行されることによって、クライアント端末１０は、プロセス動作ログ及び操作ログ等から構成されるログ情報を生成して、スプール装置２０へ送信する。
【０１０７】
図９は、マルウェア（ドロッパー）の実行状況を表すプロセス動作ログを示す図である。図１０は、マルウェア（ドロッパー）の実行状況を表すタイムチャートである。
ドロッパーとは、マルウェアの中でも、特に別のマルウェア、例えばＲＡＴ型のマルウェアを作成・実行してユーザのシステムに感染させる機能をもつプログラムをいう。また、ＲＡＴ（Ｒｅｍｏｔｅ  Ａｃｃｅｓｓ  Ｔｒｏｊａｎ）とは、サイバー攻撃において、外部からネットワーク経由でコンピュータに接続し任意の操作を行うことができるプログラムをいう。
図９に示すプロセス動作ログの内容は次の通りである。
【０１０８】
時刻ｔ１０：Ｕｓｅｒ１が、例えばスパムメールの添付ファイルを誤ってクリックして、マルウェア（ドロッパー）であるＲｅａｄＭｅ．ｔｘｔ．ｅｘｅを起動する。
時刻ｔ１１：ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅは、Ｃ＆Ｃ（Ｃｏｍｍａｎｄ＆Ｃｏｎｔｒｏｌ）サーバ（サイバー攻撃において、クライアント端末に侵入させたマルウェアに対して、外部から情報を提供したり命令を出したりする役割を担うサーバコンピュータ）から、カムフラージュのためのＲｅａｄＭｅ．ｔｘｔのダウンロードを開始する。
時刻ｔ１４：ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅが、当該ＲｅａｄＭｅ．ｔｘｔのダウンロードを終了する。
【０１０９】
時刻ｔ４０：ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅは、ダウンロードしたＲｅａｄＭｅ．ｔｘｔを指定して、その内容を表示するアプリケーションプログラムであるＮＯＴＥＰＡＤ．ＥＸＥ（「メモ帳」）を、カムフラージュのために起動する。
時刻ｔ４１：ＮＯＴＥＰＡＤ．ＥＸＥが、当該ＲｅａｄＭｅ．ｔｘｔを開く。これよりＵｓｅｒ１は、ＮＯＴＥＰＡＤ．ＥＸＥによって当該ＲｅａｄＭｅ．ｔｘｔを閲覧する。
時刻ｔ１５：ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅは、Ｃ＆Ｃサーバから、マルウェア（ＲＡＴ）の一種であるｔｒＨｏｒｓｅ．ｅｘｅのダウンロードを開始する。
時刻ｔ１８：ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅが、当該ｔｒＨｏｒｓｅ．ｅｘｅのダウンロードを終了する。
【０１１０】
時刻ｔ１９：ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅは、システムの立上げ時にｔｒＨｏｒｓｅ．ｅｘｅが自動的に起動するよう、レジストリのＲｕｎサブキーに当該ｔｒＨｏｒｓｅ．ｅｘｅを登録する。
時刻ｔ２０：ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅは、Ｕｓｅｒ１が再度のログオンの際にｔｒＨｏｒｓｅ．ｅｘｅが自動的に起動するよう、Ｕｓｅｒ１のＳｔａｒｔｕｐフォルダに、当該ｔｒＨｏｒｓｅ．ｅｘｅのリンクファイルの生成を開始する。
時刻ｔ２１：ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅは、当該リンクファイルの生成を終了する。
【０１１１】
時刻ｔ２２：ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅは、Ｔｅｍｐフォルダ内にあった自らのプロセス実行ファイルであるＲｅａｄＭｅ．ｔｘｔ．ｅｘｅファイルを削除する。
時刻ｔ２３：ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅが終了する。
時刻ｔ４２：Ｕｓｅｒ１は、ＲｅａｄＭｅ．ｔｘｔの閲覧後、これを閉じる。
時刻ｔ４３：Ｕｓｅｒ１が、ＮＯＴＥＰＡＤ．ＥＸＥを終了する。
【０１１２】
図１１は、マルウェア（ＲＡＴ）の実行状況を表すプロセス動作ログを示す図である。図１２は、マルウェア（ＲＡＴ）の実行状況を表すタイムチャートである。図１１に示すプロセス動作ログの内容は次の通りである。
【０１１３】
時刻ｔ６０：Ｕｓｅｒ１が、ｔｒＨｏｒｓｅ．ｅｘｅに感染したクライアント端末にログオンする。
時刻ｔ７０：ユーザセッションの実行環境構築の一環としてタスクマネージャであるＥｘｐｌｏｒｅｒ．ＥＸＥ（「エクスプローラ」）が起動する。
時刻ｔ８０：Ｅｘｐｌｏｒｅｒ．ＥＸＥが、ユーザセッション開始時の自動起動プロセス（スタートアップ・プロセス）としてｔｒＨｏｒｓｅ．ｅｘｅを起動する。
時刻ｔ８１：ｔｒＨｏｒｓｅ．ｅｘｅは、前出とは異なるＣ＆Ｃサーバとの制御ネットワーク接続を開始する。
時刻ｔ８２：ｔｒＨｏｒｓｅ．ｅｘｅは、前出の二者とはさらに異なるＣ＆Ｃサーバへ、Ｄｏｃｕｍｅｎｔｓフォルダに格納されていた機密情報ファイルである「決算情報．ｄｏｃｘ」のアップロードを開始する。
【０１１４】
時刻ｔ８５：ｔｒＨｏｒｓｅ．ｅｘｅが、当該「決算情報．ｄｏｃｘ」のアップロードを終了する。
時刻ｔ８６：ｔｒＨｏｒｓｅ．ｅｘｅは、前出と同じＣ＆Ｃサーバへ、Ｄｏｃｕｍｅｎｔｓフォルダに格納されていた機密情報ファイルである「顧客リスト．ｘｌｓｘ」のアップロードを開始する。
時刻ｔ８９：ｔｒＨｏｒｓｅ．ｅｘｅが、当該「顧客リスト．ｘｌｓｘ」のアップロードを終了する。
時刻ｔ９０：ｔｒＨｏｒｓｅ．ｅｘｅが、制御ネットワーク接続を終了する。
時刻ｔ９１：ｔｒＨｏｒｓｅ．ｅｘｅが終了する。
【０１１５】
図１３及び図１４は、マルウェア特定を目的に、データベース３２に蓄積された膨大なログ情報の中から直接の解析対象とすべきプロセス動作ログレコードの抽出と、そこで検出されたプロセスが既知のマルウェアか否かを特定するための脅威データベースへの照会とを実施するための、ログ情報解析部３４の処理を示すフローチャートである。
ステップＳ５１では、ログ情報解析部３４は、図示しないサイバー攻撃アラート信号受信部を介してサイバー攻撃アラート信号を受信したかを判定し、サイバー攻撃アラート信号を受信するまで待機する。そして、ログ情報解析部３４は、サイバー攻撃アラート信号を受信したと判定すると、ステップＳ５２へ進む。
【０１１６】
ここで、サイバー攻撃アラート信号とは、例えばマルウェア特定システム１の振る舞いをモニタリングする外部のモニタリング部（図示しない）によって、マルウェア特定システム１がサイバー攻撃を受けた蓋然性が高いと判断されたときに発信される信号をいう。サイバー攻撃アラート信号は、サイバー攻撃を受けたときの時刻であるインシデント発生日時、サイバー攻撃を受けた端末のホストＩＰアドレス、当該端末の通信先のＩＰアドレス（ｄｓｔＩＰ）等の情報を有している。
【０１１７】
ステップＳ５２では、ログ情報解析部３４は、データベース３２に記憶されているプロセス動作ログと、サイバー攻撃アラート信号に含まれる情報とを用いて、サイバー攻撃を受けたクライアント端末１０で動作していた、インシデント発生元の蓋然性が高いプロセスのｐｒｓＧＩＤを特定し、当該プロセスの任意のプロセス動作ログレコードを抽出する。
【０１１８】
例えば、サイバー攻撃アラート信号に含まれるインシデント発生時刻がｔ８１、ｄｓｔＩＰが“５５．．．２０１”である場合、図１１に示すシーケンス番号６２２におけるプロセス動作ログレコードのｐｒｓＧＩＤ＝“ｇｉｄ４”が特定され、当該プロセス動作ログレコードが抽出される。
【０１１９】
ステップＳ５３では、ログ情報解析部３４は、ステップＳ５２で特定したｐｒｓＧＩＤを変数ｇｉｄＶａｒに設定する。
ステップＳ５４では、ログ情報解析部３４は、変数ｇｉｄＶａｒと同じ値のｐｒｓＧＩＤを含んだすべてのプロセス動作ログレコードを抽出する。例えば、変数ｇｉｄＶａｒ←“ｇｉｄ４”の場合、ｐｒｓＧＩＤ＝“ｇｉｄ４”である、シーケンス番号６２１から６３２のすべてのプロセス動作ログレコードが抽出される。
【０１２０】
ステップＳ５５では、ログ情報解析部３４は、抽出されたプロセス動作ログレコードの中からイベント種がｐｒｓＳｔａｒｔであるプロセス動作ログレコードを抽出する。例えば、ｐｒｓＧＩＤ＝“ｇｉｄ４”の場合、ｐｒｓＳｔａｒｔを含んだシーケンス番号６２１のプロセス動作ログレコードが抽出される。
【０１２１】
ステップＳ５６では、ログ情報解析部３４は、ステップＳ５５で抽出したプロセス動作ログレコードのプロセス属性情報から、当該プロセスのプロセス実行ファイルのハッシュ値を抽出して、脅威データベースと照合する。
【０１２２】
脅威データベースとは、過去に発見されたマルウェアの名称、種類、発見日、危険度、実行ファイルのハッシュ値等の脅威情報を記憶しているデータベース装置である。脅威データベースは、クライアント端末１０からハッシュ値の照合要求があった際、そのハッシュ値をもつマルウェアが記憶されていた場合には当該マルウェアの脅威情報をクライアント端末１０へ送信する。
【０１２３】
例えば、シーケンス番号６２１では、マルウェア（ＲＡＴ）であるプロセス“ｔｒＨｏｒｓｅ．ｅｘｅ”のハッシュ値“ｈｓｈ１１”が抽出される。脅威データベースは、クライアント端末１０からハッシュ値“ｈｓｈ１１”の照合要求があった場合、マルウェア（ＲＡＴ）“ｔｒＨｏｒｓｅ．ｅｘｅ”の脅威情報を保持していれば、その脅威情報をクライアント端末１０へ送信する。
【０１２４】
なお、脅威データベースが異なれば、異なる生成アルゴリズムに基づくプロセス実行ファイルのハッシュ値が求められる。このため、プロセス属性情報に生成アルゴリズムの異なる複数のハッシュ値が保持されていた場合は、対象となる脅威データベースが求めるアルゴリズムに基づいて生成されたハッシュ値が選択され、照合されてもよい。
【０１２５】
ステップＳ５７では、ログ情報解析部３４は、ステップＳ５５で抽出したプロセス動作ログレコードのプロセス属性情報から、当該プロセスのプロセス実行ファイルの名称であるｎａｍｅを抽出する。
【０１２６】
ステップＳ５８では、ログ情報解析部３４は、ステップＳ５７で抽出したプロセス実行ファイルの名称が所定の名称に一致するか否かを判定し、一致した場合は図１４に示すステップＳ６１へ進む。一方、ステップＳ５８の否定判定、つまり、当該プロセス実行ファイルの名称が所定の名称に一致していない場合は、ステップＳ５９へ進む。
【０１２７】
ここで所定の名称には、例えばプロセス起動の親子関係を表した一連のプロセス起動ツリーの最上位に位置付けられるルートプロセス等の名称等が指定される。本実施形態の場合では、所定の名称は“Ｅｘｐｌｏｒｅｒ．ＥＸＥ”である。
【０１２８】
ステップＳ５９では、ログ情報解析部３４は、当該プロセスを起動した親プロセスのプロセス動作ログを調べるために、ステップＳ５５で抽出したプロセス動作ログレコードのプロセス属性情報から、ｐａｒｅｎｔＧＩＤを抽出する。例えば、シーケンス番号６２１のプロセス属性情報から、ＰａｒｅｎｔＧＩＤ＝“ｇｉｄ３”が抽出される。
【０１２９】
ステップＳ６０では、ログ情報解析部３４は、ステップＳ５９で抽出したｐａｒｅｎｔＧＩＤを変数ｇｉｄＶａｒに設定して、ステップＳ５４へ戻る。そして、再びステップＳ５４以降の処理が実行される。
【０１３０】
例えば、ステップＳ６０において、変数ｇｉｄＶａｒにｐａｒｅｎｔＧＩＤ＝“ｇｉｄ３”が設定された場合、ステップＳ５４以降の処理を通じて、ステップＳ５７ではプロセスのｎａｍｅとして“Ｅｘｐｌｏｒｅｒ．ＥＸＥ”が抽出される。そこで、ステップ５８にてそれが所定の名称であると判定されることから、本ループを抜け出して、図１４のステップ６１へと進む。
【０１３１】
なお、図１３では、ステップＳ５１において、サイバー攻撃アラート信号は外部のモニタリング部から発信された場合を前提としたが、このような前提に限定されることはない。例えばログ情報解析部３４が、ログ情報受信部３１で受信されるプロセス動作ログを受信する毎に解析を実行し、過去のインシデント発生パターンと照合して、照合結果が所定の条件と一致した場合に、自らがサイバー攻撃アラート信号を発信することも可能である。
【０１３２】
図１４に示すステップＳ６１では、ログ情報解析部３４は、ＯＳ再起動あるいはユーザログオン前のプロセス動作ログから、“ｔｒＨｏｒｓｅ．ｅｘｅ”に関連するマルウェアの疑いがあるプロセスのプロセス動作ログを特定すべく、ステップＳ５６で抽出したプロセス実行ファイルのハッシュ値と同じ値のハッシュ値をいずれかに含むプロセス動作ログレコードを抽出する。
【０１３３】
例えば、シーケンス番号６２１のプロセス属性情報には、ｐａｒｅｎｔＧＩＤ＝“ｇｉｄ３”がある。そこで、ｐｒｓＧＩＤ＝“ｇｉｄ３”であるプロセス動作ログの中でそのイベント種がｐｒｓＳｔａｒｔであるプロセス動作ログレコード（シーケンス番号５２０）をみると、時刻ｔ７０において、ｎａｍｅ＝“．．．￥Ｅｘｐｌｏｒｅ．ＥＸＥ”なるプロセスが起動されていることから、ユーザがログオンして、新たなユーザセッションが開始されたことが分かる。
【０１３４】
そこで、ログ情報解析部３４は、ユーザログオン前、つまり時刻ｔ６０以前のプロセス動作ログの中から、ステップＳ５６で抽出済みのハッシュ値“ｈｓｈ１１”と同じ値のハッシュ値をイベント属性情報に含む、シーケンス番号１１０のプロセス動作ログレコードを抽出する。
【０１３５】
ステップＳ６２では、ログ情報解析部３４は、ハッシュ値が“ｈｓｈ１１”であるファイルのダウンロードを実行したプロセスのｐｒｓＧＩＤを特定する。例えば、ステップＳ６１でシーケンス番号１１０のプロセス動作ログレコードが抽出された場合、シーケンス番号１１０の発生日時ｔ１７、ｐｒｓＧＩＤ＝“ｇｉｄ１”及びイベント属性情報（ダウンロードされたファイルのファイル名である“ｔｒＨｏｒｓｅ.ｅｘｅ”等）が特定される。
【０１３６】
ステップＳ６３では、ログ情報解析部３４は、ステップＳ６２で特定したｐｒｓＧＩＤを変数ｇｉｄＶａｒに設定する。
ステップＳ６４では、ログ情報解析部３４は、変数ｇｉｄＶａｒと同じ値のｐｒｓＧＩＤを含んだすべてのプロセス動作ログレコードを抽出する。例えば、変数ｇｉｄＶａｒ←“ｇｉｄ１”の場合、ｐｒｓＧＩＤ＝“ｇｉｄ１”である、シーケンス番号１０１から１１６（但し、シーケンス番号１０６及び１０７を除く。）のすべてのプロセス動作ログレコードが抽出される。
【０１３７】
ステップＳ６５では、ログ情報解析部３４は、ステップＳ６４で抽出されたプロセス動作ログレコードの中からイベント種がｐｒｓＳｔａｒｔであるプロセス動作ログレコードを抽出する。例えば、ｐｒｓＧＩＤ＝“ｇｉｄ１”の場合、ｐｒｓＳｔａｒｔを含んだシーケンス番号１０１のプロセス動作ログレコードが抽出される。
【０１３８】
ステップＳ６６では、ログ情報解析部３４は、ステップＳ６５で抽出したプロセス動作ログレコードのプロセス属性情報から、当該プロセスのプロセス実行ファイルのハッシュ値を抽出して、脅威データベースと照合する。
【０１３９】
例えば、シーケンス番号１０１では、マルウェア（ドロッパー）であるプロセス“ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅ”のハッシュ値“ｈｓｈ１０”が抽出される。脅威データベースは、クライアント端末１０からハッシュ値“ｈｓｈ１０”の照合要求があった場合、マルウェア（ドロッパー）“ＲｅａｄＭｅ．ｔｘｔ．ｅｘｅ”の脅威情報を保持していれば、その脅威情報をクライアント端末１０へ送信する。
【０１４０】
ステップＳ６７では、ログ情報解析部３４は、ステップＳ６５で抽出したプロセス動作ログレコードのプロセス属性情報から、当該プロセスのプロセス実行ファイルの名称であるｎａｍｅを抽出する。
【０１４１】
ステップＳ６８では、ログ情報解析部３４は、ステップＳ６７で抽出したプロセス実行ファイルの名称が所定の名称に一致するか否かを判定し、一致した場合は本ルーチンを終了する。一方、ステップＳ６８の否定判定、つまり、当該プロセス実行ファイルの名称が所定の名称に一致していない場合は、ステップＳ６９へ進む。
【０１４２】
例えば、シーケンス番号１０１のプロセス属性情報では、ｎａｍｅは“Ｅｘｐｌｏｒｅｒ．ＥＸＥ”ではない。このため、ステップＳ６８の否定判定を経て、ステップＳ６９へ進む。
【０１４３】
ステップＳ６９では、ログ情報解析部３４は、当該プロセスを起動した親プロセスのプロセス動作ログを調べるために、ステップＳ６５で抽出したプロセス動作ログレコードのプロセス属性情報から、ｐａｒｅｎｔＧＩＤを抽出する。
【０１４４】
ステップＳ７０では、ログ情報解析部３４は、ステップＳ６９で抽出したｐａｒｅｎｔＧＩＤを変数ｇｉｄＶａｒに設定して、ステップＳ６４へ戻る。そして、再びステップＳ６４以降の処理が実行される。その結果、ステップＳ６７において、ｎａｍｅとして“Ｅｘｐｌｏｒｅｒ．ＥＸＥ”が抽出された場合、ステップＳ６８にてそれが所定の名称であると判定されることから、本ループを抜け出して、本ルーチンを終了する。
【０１４５】
なお、本処理では、ログ情報解析部３４は、各々のプロセスをタスクと見立て、当該タスクを大域的一意に識別するｐｒｓＧＩＤを手掛かりに、当該タスクを構成する一連の動作を記録したプロセス動作ログレコードを抽出する。そして、ログ情報解析部３４は、抽出したプロセス動作ログレコードの中から、プロセスの開始を示す動作種別情報としてのイベント種であるｐｒｓＳｔａｒｔを有するプロセス動作ログレコードを選択し、それに含まれるプロセス属性情報をタスク属性情報とみなして当該タスクを特定する。さらに、ログ情報解析部３４は、抽出したプロセス動作ログレコードに含まれ、異なるタスクを大域的一意に識別した例えばｐａｒｅｎｔＧＩＤ等を手掛かりに、当該異なるタスクを構成する一連の動作を記録したプロセス動作ログレコードを抽出する。しかし、本発明はこれらの処理に限定されるものではない。
【０１４６】
すなわち、ログ情報解析部３４は、例えば各々のＴＣＰネットワーク通信をタスクと見立て、当該タスクを大域的一意に識別するｔｃｐＧＩＤを手掛かりに、当該タスクを構成する一連の動作を示す動作種別情報としてのイベント種、例えばｔｃｐＯｐｅｎ，ｔｃｐＬｉｓｔｅｎ，ｔｃｐＳｅｎｄ，ｔｃｐＲｅｃｅｉｖｅ、ｔｃｐＣｌｏｓｅ等を有して記録されたプロセス動作ログレコードを抽出することも可能である。そして、ログ情報解析部３４は、抽出したプロセス動作ログレコードの中から、ＴＣＰネットワーク通信の開始を示すイベント種であるｔｃｐＯｐｅｎを有するプロセス動作ログレコードを選択し、それに含まれるイベント属性情報から、当該ｔｃｐＧＩＤ以外のイベント属性情報をタスク属性情報とみなして当該タスクを特定できる。さらに、ログ情報解析部３４は、抽出したプロセス動作レコードに含まれ、異なるタスクを大域的一意に識別した例えばｐｒｓＧＩＤ等を手掛かりに、当該異なるタスクを構成する一連の動作を記録したプロセス動作ログレコードを抽出してもよい。
【０１４７】
また、プロセスに依存しない操作ログについても、例えば任意のユーザセッションを大域的一意に識別するｕｓｒＧＩＤを手掛かりに類似の処理を実施しても良い。
【０１４８】
図１５は、ログ情報解析の一例として、抽出されたプロセス動作ログレコードからマルウェアのプロファイリングをおこなうための、ログ情報解析部３４の処理を示すフローチャートである。
【０１４９】
ステップＳ８１では、ログ情報解析部３４は、図１３及び図１４の処理によって、本ログ情報解析の直接の解析対象とすべきプロセス動作ログレコードを抽出する。
【０１５０】
ステップＳ８２では、ログ情報解析部３４は、ステップＳ８１で抽出されたすべてのプロセス動作ログレコードからイベント種を抽出する。
ステップＳ８３では、ログ情報解析部３４は、ステップＳ８１で抽出されたプロセス動作ログレコードのいずれかにおいてファイルを作成したものがあるかを判定する。
【０１５１】
ここでは、ログ情報解析部３４は、ステップＳ８２で抽出されたイベント種の中に、ファイルの作成を示す“ｆｉｌｅＣｒｅａｔｅ”がある場合にファイルを作成したと判定して、ステップＳ８４へ進む。また、ログ情報解析部３４は、上記のイベント種の中に、“ｆｉｌｅＣｒｅａｔｅ”がない場合にファイルを作成していないと判定して、ステップＳ８６へ進む。
【０１５２】
例えば、シーケンス番号１０１から１１６（但し、シーケンス番号１０６及び１０７を除く。）までにおいては、シーケンス番号１０３、１０９及び１１３のプロセス動作ログレコードに “ｆｉｌｅＣｒｅａｔｅ”がある。したがって、ステップＳ８４へ進む。
【０１５３】
ステップＳ８４では、ログ情報解析部３４は、ファイルを作成したことを示すプロセス動作ログレコードを抽出する。例えば、“ｆｉｌｅＣｒｅａｔｅ”があるのはシーケンス番号１０３、１０９及び１１３のプロセス動作ログレコードであるので、シーケンス番号１０３、１０９及び１１３のプロセス動作ログレコードが抽出される。
【０１５４】
ステップＳ８５では、ログ情報解析部３４は、抽出したプロセス動作ログレコードから、生成したファイル名を同定する。
【０１５５】
この結果、発生日時ｔ１２でＲｅａｄＭｅ．ｔｘｔなるファイルが作成され、発生日時ｔ１６でｔｒＨｏｒｓｅ.ｅｘｅなるファイルが作成され、さらに、発生日時ｔ２０でｔｒＨｏｒｓｅ.ｅｘｅのショートカットファイルが作成されていたことが分かる。
【０１５６】
ステップＳ８６では、ログ情報解析部３４は、ステップＳ８１で抽出されたプロセス動作ログレコードのいずれかにおいてレジストリを操作したものがあるかを判定する。
ここでは、ログ情報解析部３４は、ステップＳ８２で抽出されたイベント種の中に、レジストリの操作を示す“ｒｅｇＶａｌＳｅｔ”がある場合にレジストリを操作したと判定して、ステップＳ８７へ進む。また、ログ情報解析部３４は、上記のイベント種の中に、“ｒｅｇＶａｌＳｅｔ”がない場合にレジストリを操作していないと判定して、ステップＳ８９へ進む。
【０１５７】
例えば、シーケンス番号１０１から１１６（但し、シーケンス番号１０６及び１０７を除く。）までにおいては、シーケンス番号１１２のプロセス動作ログレコードに、“ｒｅｇＶａｌＳｅｔ”がある。したがって、ステップＳ８７へ進む。
【０１５８】
ステップＳ８７では、ログ情報解析部３４は、レジストリを操作したことを示すプロセス動作ログレコードを抽出する。例えば、“ｒｅｇＶａｌＳｅｔ”があるのはシーケンス番号１１２のプロセス動作ログレコードであるので、シーケンス番号１１２のプロセス動作ログレコードが抽出される。
【０１５９】
ステップＳ８８では、ログ情報解析部３４は、抽出したプロセス動作ログレコードから、レジストリ操作の対象となったサブキー等を同定する。
【０１６０】
この結果、発生日時ｔ１９でレジストリのＲｕｎサブキーに、システムの起動時にｔｒＨｏｒｓｅ.ｅｘｅを自動起動させるためのエントリが作成されたことが分かる。
【０１６１】
ステップＳ８９では、ログ情報解析部３４は、ステップＳ８１で抽出されたプロセス動作ログレコードのいずれかにおいて外部とのネットワーク通信をおこなったものがあるかを判定する。
ここでは、ログ情報解析部３４は、ステップＳ８２で抽出されたイベント種の中に、ＴＣＰネットワーク接続の開始を示す“ｔｃｐＯｐｅｎ”がある場合に外部とのネットワーク通信があったと判定して、ステップＳ９０へ進む。また、ログ情報解析部３４は、上記のイベント種の中に、“ｔｃｐＯｐｅｎ”がない場合に外部とのネットワーク通信がなかったと判定して、ステップＳ９３へ進む。
【０１６２】
例えば、シーケンス番号６２１から６３２までにおいては、シーケンス番号６２２、６２３及び６２７のプロセス動作ログレコードに、“ｔｃｐＯｐｅｎ”がある。したがって、ステップＳ９０へ進む。
【０１６３】
ステップＳ９０では、ログ情報解析部３４は、外部とのネットワーク通信をおこなったことを示すプロセス動作ログレコードを抽出する。例えば、シーケンス番号６２１から６３２までにおいては、“ｔｃｐＯｐｅｎ”があるのはシーケンス番号６２２、６２３及び６２７のプロセス動作ログレコードであるので、シーケンス番号６２２、６２３及び６２７のプロセス動作ログレコードが抽出される。
【０１６４】
ステップＳ９１では、ログ情報解析部３４は、抽出したプロセス動作ログレコードのイベント属性情報からｔｃｐＧＩＤの値を抽出し、同じｔｃｐＧＩＤの値を持つ他の全てのプロセス動作ログレコードを抽出してグループ化をおこなう。
【０１６５】
例えば、シーケンス番号６２１から６３２までにおいては、シーケンス番号６２２、６２３及び６２７のプロセス動作ログレコードの各々のイベント属性情報から、ｔｃｐＧＩＤの値として、“ｇｉｄ１０１”、“ｇｉｄ１０２”及び“ｇｉｄ１０３”が抽出される。そこで、その各々と同じｔｃｐＧＩＤの値を持つ他の全てのプロセス動作ログレコードとして、それぞれ、シーケンス番号６３１、６２６及び６３０のプロセス動作ログレコードが抽出されるから、その各々が、シーケンス番号６２２、６２３及び６２７のプロセス動作ログレコードと、それぞれグループ化される。
【０１６６】
ステップＳ９２では、ログ情報解析部３４は、グループ化されたプロセス動作ログレコードから発生日時及びｄｓｔＩＰの値を抽出し、各ネットワーク通信の通信時間帯及び接続先ＩＰアドレスを同定する。
【０１６７】
この結果、ｔｃｐＧＩＤが“ｇｉｄ１０１”として識別されるネットワーク通信は、発生日時ｔ８１からｔ９０の時間帯においてＩＰアドレス“５５．．．２０１”を接続先としておこなわれ、ｔｃｐＧＩＤが“ｇｉｄ１０２”として識別されるネットワーク通信は、発生日時ｔ８２からｔ８５の時間帯においてＩＰアドレス“５５．．．２０２”を接続先としておこなわれ、そしてｔｃｐＧＩＤが“ｇｉｄ１０３”として識別されるネットワーク通信は、発生日時ｔ８６からｔ８９の時間帯において前出と同じくＩＰアドレス“５５．．．２０２”を接続先としておこなわれていたことが分かる。
【０１６８】
なお、ステップＳ８３、Ｓ８６及びＳ８９で挙げたイベントは、一例に過ぎない。すなわち、ログ情報解析部３４は、マルウェアの一連の動作を調べるために、その他のイベントの有無を判定することも可能である。
【０１６９】
ステップＳ９３では、ログ情報解析部３４は、ステップＳ８４、ステップＳ８７あるいはステップＳ９０で抽出されたプロセス動作ログレコードがあるかを判定し、抽出されたプロセス動作ログレコードがある場合はステップＳ９４へ進み、抽出されたプロセス動作ログレコードがない場合は本ルーチンを終了する。
【０１７０】
ステップＳ９４では、ログ情報解析部３４は、ステップＳ８５で同定された生成ファイル名、ステップＳ８８で同定されたレジストリ操作対象サブキー、ステップＳ９２で同定された外部ネットワーク通信の通信時間帯及び接続先ＩＰアドレス等を用いてマルウェアのプロファイリングを実施して、本ルーチンを終了する。
【０１７１】
ここでプロファイリングとは、サイバー攻撃におけるマルウェアの調査において、侵入、諜報、拡散、攻撃（情報漏洩、破壊工作）といったマルウェアの動作を同定したり、未知のマルウェアの動き方の特徴を推論したりすることをいう。本実施形態では、プロファイリングは、ステップＳ８４、ステップＳ８７及びステップＳ９０等で得られたプロセス動作ログレコードを、ステップＳ８５、ステップＳ８８及びステップＳ９２等で同定された情報を手掛かりにマルウェアの動作を統計的に推論したり、当該プロセス動作ログレコードの、シーケンス番号４１９のログオンに代表される操作ログや過去のマルウェア情報等との相互参照によって必要な情報を整理したりすることで、マルウェアの動作を同定等することである。
【０１７２】
なお、本実施形態では、アプリケーションプログラムの実行主体としてのプロセスの動作に関するプロセス動作ログの収集、分析から、いわゆる悪意のあるアプリケーションプログラムとしてのマルウェアを特定することを中心に説明した。しかし、本発明は、上述した実施形態に限定されることはない。
【０１７３】
本発明は、プロセスに限らず、ユーザの端末操作、記録媒体の接続等の一連の動作で構成される任意のタスクにも適用可能である。つまり、本発明は、プログラム（プロセス）単位・ユーザ単位・コンピュータ単位ですべてのタスクのログ情報を生成して、その中から、解析に必要なログ情報を効率よく抽出することができる。
【０１７４】
例えば、ユーザによるログオン、記録媒体の接続、ＯＳの設定時刻の変更等もログ情報として記録される。このため、悪意のあるユーザを特定することや、ユーザの無実を証明することが可能になる。さらに、所望のアプリケーションプログラムの実行主体としてのプロセスのプロセス動作ログレコードに着目すれば、当該アプリケーションプログラムの利用状況を、ユーザあるいは端末単位で把握するも可能になる。
【０１７５】
その他、本発明は、機密ファイル（特定のファイル）の保持調査、コンピュータ利用状況から業務遂行ノウハウの可視化、クラウドサービスにアップロードされたファイルのリスト化、誤操作で行方不明になったファイルの発見、プログラムの動作確認（デバッグ的なもの）、勤怠管理(労務管理）、勤務状況の調査（業務外アプリケーション、業務外Webサイトの利用状況）、ファイル持ち出し監査に利用することも可能である。
【符号の説明】
【０１７６】
１    マルウェア特定システム
１０  クライアント端末
１１  プロセス監視部
１２  ドライバ監視部
１３  プロセス監視制御部
１４  ログ情報生成部
１５  ログ情報送信部
１６  全体制御部
２０  スプール装置
３０  ログ情報抽出装置
【要約】      （修正有）【課題】任意の時刻、実行環境で実行されたプロセスを容易に特定する。【解決手段】クライアント端末１０は、関連する一連のイベントを実行するプロセスの開始時に、当該プロセスを時間的及び空間的に一意に識別するプロセスＧＩＤを含んだプロセス情報を生成し、さらに、プロセスが実行するイベント毎に、イベント種を含んだイベント情報をプロセス監視部１１から受信するプロセス監視制御部１３と、プロセスが実行するイベント毎に、プロセス監視制御部１３から提供されたプロセス情報とイベント情報とを有するプロセス動作ログレコードを生成するログ情報生成部１４と、を備えている。【選択図】図２【図１】
0005933797.tif 000002
【図２】
0005933797.tif 000003
【図３】
0005933797.tif 000004
【図４】
0005933797.tif 000005
【図５】
0005933797.tif 000006
【図６】
0005933797.tif 000007
【図７】
0005933797.tif 000008
【図８】
0005933797.tif 000009
【図９】
0005933797.tif 000010
【図１０】
0005933797.tif 000011
【図１１】
0005933797.tif 000012
【図１２】
0005933797.tif 000013
【図１３】
0005933797.tif 000014
【図１４】
0005933797.tif 000015
【図１５】
0005933797.tif 000016