(58)【調査した分野】(Int.Cl.,DB名)
複数のコンピュータを有するシステムの空間で、アプリケーションプログラムの実行主体であるプロセスの一連のイベントで構成されるプロセス動作の開始時に、前記プロセスを時間的及び空間的に一意に識別する第1の識別情報を生成し、当該第1の識別情報を含んだプロセス情報を生成するプロセス情報生成部と、
前記イベント毎に、当該イベントの種別を示すイベント種別情報を生成し、当該イベント種別情報を含んだイベント情報を生成するイベント情報生成部と、
前記イベント毎に、前記プロセス情報生成部により生成された前記プロセス情報と、前記イベント情報生成部により生成された前記イベント情報と、を有するログ情報を生成するログ情報生成部と、
を備えたログ情報生成装置。
前記プロセス情報生成部は、前記プロセス動作の開始時に、前記プロセスの属性を示すプロセス属性情報を更に生成し、前記第1の識別情報と当該プロセス属性情報とを含んだ前記プロセス情報を生成し、
前記イベント情報生成部は、前記プロセス動作の開始時以降のイベント毎に、当該イベントの属性を示すイベント属性情報を更に生成し、前記イベント種別情報と当該イベント属性情報とを含んだ前記イベント情報を生成し、
前記ログ情報生成部は、前記プロセス動作の開始時のイベントについては、前記第1の識別情報と前記プロセス属性情報との両方を含んだ前記プロセス情報と、前記イベント情報と、を有するログ情報を生成し、前記プロセス動作の開始時以外のイベントについては、前記第1の識別情報のみを含んだ前記プロセス情報と、前記イベント情報と、を有するログ情報を生成する
請求項1に記載のログ情報生成装置。
前記ログ情報生成部は、前記プロセスの親のプロセスを時間的及び空間的に一意に識別する第2の識別情報を取得し、当該第2の識別情報を更に含んだ前記ログ情報を生成する
請求項1又は請求項2に記載のログ情報生成装置。
前記プロセス情報生成部は、1つ以上の異なるハッシュ値生成アルゴリズムに基づいて、前記第1の識別情報が示すプロセスのプロセス実行ファイルの1つ以上のハッシュ値を生成し、生成した1つ以上のハッシュ値を更に含んだ前記プロセス情報を生成する
請求項1から請求項5のいずれか1項に記載のログ情報生成装置。
【発明を実施するための形態】
【0017】
以下、本発明を実施するための形態について、図面を参照しながら詳細に説明する。
図1は、マルウェア特定システム1全体の概略構成を示す図である。
【0018】
マルウェア特定システム1は、各々のユーザによって直接操作される複数のクライアント端末10と、クライアント端末10から送信されるログ情報を一旦保存する複数のスプール装置20と、スプール装置20から送信されるログ情報を解析してマルウェアを特定するためのログ情報を抽出するログ情報抽出装置30と、を備えている。
【0019】
クライアント端末10は、アプリケーションプログラムの実行主体としてのプロセスが実行される毎に、そのプロセスの動作を示すログであるプロセス動作ログを生成する。また、クライアント端末10は、ユーザログオン等、プロセスに依存しない操作も操作ログとして生成する。これらクライアント端末10で生成されるプロセス動作ログ及び操作ログを含むすべてのログをログ情報と呼ぶ。そして、クライアント端末10は、定期的あるいはログ情報のデータサイズが所定の値に達した段階で、当該ログ情報を所定のスプール装置20へ送信する。
【0020】
図2は、クライアント端末10の機能的な構成を示すブロック図である。クライアント端末10は、例えば、記録媒体に記録されたプログラム又は外部から送信されたプログラムをコンピュータにインストールすることにより実現される。
クライアント端末10は、システムが稼動するために割り当てられたメモリ空間であるシステム領域と、各々のユーザがアプリケーションプログラムの稼動に利用できるメモリ空間である1つ以上のユーザ領域と、に分けられる。1つのクライアント端末10には、システム領域は1つだけあるが、ユーザ領域はログオンしているユーザの数だけある。
【0021】
クライアント端末10は、当該クライアント端末10において実行中のプロセスの動作を監視するプロセス監視部11と、デバイスドライバの動作を監視するドライバ監視部12と、プロセス監視部11を制御し、その出力情報を利用するプロセス監視制御部13と、を備えている。
【0022】
なお、デバイスドライバとは、クライアント端末10にインストールされたOSが、当該クライアント端末10に接続された周辺装置(デバイス)を制御するためのプログラムをいう。デバイスドライバは、例えばファイル入出力ドライバの場合、OSからの制御に基づいて、新規ファイルの生成、既存ファイルを開く、既存ファイルの削除等、後述するファイル操作関連の動作(イベント)を行う。
【0023】
これより、あるプロセスがファイル操作関連の動作などを実施する場合は、最初に、当該プロセスがOSに所望の処理を依頼し、次に、OSが所定のデバイスドライバを制御して当該処理を実施する。このため、デバイスドライバは、依頼元のプロセスを直接には把握することなく、当該プロセスが所望する処理を行う。
【0024】
さらに、クライアント端末10は、プロセス監視部11及びドライバ監視部12の監視結果並びに後述の全体制御部16からのプロセスに依存しない操作ログ関連情報の受信に基づいてログ情報を生成するログ情報生成部14と、定期的あるいはログ情報のデータサイズが所定の値に達した段階で、当該ログ情報をスプール装置20に送信するログ情報送信部15と、クライアント端末10におけるプロセス及びデバイスドライバ動作の監視並びにログ情報の生成に関する全体的な制御を行う全体制御部16と、を備えている。また、全体制御部16は、ユーザログオン等、プロセスに依存しない操作に起因した操作ログに関する情報も生成する。
【0025】
プロセス監視部11は、システム領域及びユーザ領域内の監視対象となるすべてのプロセスに対して設けられている。プロセス監視制御部13は、システム領域に1つ、各々のユーザ領域に1つずつ設けられている。
【0026】
図1に示すスプール装置20は、クライアント端末10から出力されたログ情報をログ情報抽出装置30へ送信するための中継サーバとして動作する。スプール装置20は、1つ以上のクライアント端末10から送信されたログ情報を受信して一旦蓄積し、所定のタイミングにおいて、蓄積したログ情報をまとめてログ情報抽出装置30へ送信する。
【0027】
ログ情報抽出装置30は、例えば、記録媒体に記録されたプログラム又は外部から送信されたプログラムをコンピュータにインストールすることにより実現される。
ログ情報抽出装置30は、全てのクライアント端末10からスプール装置20を介してログ情報を収集する。オペレータは、マルウェア感染等のセキュリティインシデントの発生の疑いを警告するサイバー攻撃アラートの発生を確認すると、図示しないオペレータ端末を介して、サイバー攻撃アラートの情報(発生日時、端末情報等)をログ情報抽出装置30へ出力する。ログ情報抽出装置30は、サイバー攻撃アラートの情報が入力されると、マルウェアの特定に必要なログ情報を抽出する。
【0028】
なお、ログ情報抽出装置30は、サイバー攻撃アラートの情報(発生日時、端末情報等)を受信して、受信した発生日時及び端末情報等に基づいて、マルウェアの特定に必要なログ情報を自動的に抽出することも可能である。
【0029】
具体的には、ログ情報抽出装置30は、スプール装置20からプロセス動作ログを受信するログ情報受信部31と、受信したログ情報を格納する記憶媒体であるデータベース32と、オペレータの操作入力に応じた情報を出力する操作部33と、マルウェア特定のために必要とされるログ情報を解析の上、抽出するログ情報解析部34と、ログ情報の解析結果及びその他の情報を表示する表示部35と、を備えている。
【0030】
データベース32には、マルウェア特定システム1内の各クライアント端末10から送信されたログ情報の他、例えば既知のマルウェアに関する各種の属性等、ログ情報の解析に必要とされる他の情報が蓄積される。
【0031】
図3は、プロセス動作ログレコードの構造を示す図である。
プロセス動作ログは、1つ以上のプロセス動作ログレコードから構成されている。プロセス動作ログレコードは、当該プロセス動作ログレコード生成の元となったプロセス動作が発生した順番を示す「シーケンス番号」と、当該プロセス動作が発生した日時を示す「発生日時」と、当該プロセスが動作した実行環境を示す「端末情報」と、当該プロセスを特定するための「プロセス情報」と、当該プロセスがその動作として何を実行したのかを示す「イベント情報」と、で構成されている。
【0032】
プロセス情報は、任意の時刻、実行環境において動作したプロセスを一意に識別する「プロセスGID(prsGID)」と、プロセスに関する様々な属性を記述した「プロセス属性情報」と、で構成されている。また、イベント情報は、プロセスが実行した動作の種類を表す「イベント種」と、イベント種が表したプロセス動作に関する様々な属性を記述した「イベント属性情報」と、で構成されている。
【0033】
シーケンス番号は、ログ情報生成部14で生成される。発生日時は、プロセス監視部11又はドライバ監視部12で生成される。端末情報は、ログ情報生成部14で生成される。プロセス情報は、プロセス監視制御部13で生成される。イベント情報は、プロセス監視部11又はドライバ監視部12で生成される。
【0034】
なお、本実施形態では、ログ情報生成部14が複数のプロセス監視制御部13からプロセス動作ログの構成要素を受信し、それらにまとめてシーケンス番号を生成する。しかし、シーケンス番号の生成は、この例に限定されるものではない。
例えば、あるプロセスにおけるプロセス動作ログの生成順の厳密な保証が求められる場合、プロセス監視部11が、当該プロセスにおけるプロセス動作順を示した仮のシーケンス番号を発生日時と共に生成することが可能である。この場合、ログ情報生成部14が、複数のプロセス監視部11からプロセス監視制御部13を通じて当該発生日時及び仮のシーケンス番号を受信して、当該発生日時を手掛かりに当該仮のシーケンス番号をソートして、クライアント端末10全体としてのログ情報に対するシーケンス番号を改めて生成する。
【0035】
一方、プロセスに依存しない操作ログは、
図3のプロセス動作ログレコードから、プロセス情報が省略された構造をとる。操作ログにおけるイベント情報は、全体制御部16で生成される。
【0036】
図4は、ある時刻、実行環境において動作したプロセスのプロセス開始からプロセス終了までの一連の動作に関するプロセス動作ログの構成を示す図である。
あるプロセスが開始されると、
図4(A)に示すように、シーケンス番号1、発生日時1、端末情報1、当該プロセスを大域的(時間的及び空間的)一意に識別するprsGID、当該プロセスに関するプロセス属性情報、プロセス開始を表すイベント種であるprsStartで構成されたプロセス動作ログレコードが生成される。ここでは、プロセス開始に関するイベント属性情報に相当する全ての情報はまとめてプロセス属性情報に記述されることから、イベント属性情報は省略されている。
【0037】
このプロセスが次の動作を実行すると、
図4(B)に示すように、シーケンス番号2、発生日時2、端末情報2、
図4(A)で用いられたのと同じprsGID、当該動作を表すイベント種であるイベント2、当該動作に関する様々な属性を記述したイベント属性情報2、で構成されたプロセス動作ログレコードが生成される。つまり、このプロセス動作ログレコードでは、プロセス属性情報が省略されている。
【0038】
このプロセスが終了すると、
図4(C)に示すように、シーケンス番号N、発生日時N、端末情報N、
図4(A)で用いられたのと同じprsGID、プロセス終了を表すイベント種であるprsStopで構成されたプロセス動作ログレコードが生成される。つまり、このプロセス動作ログレコードでも、プロセス属性情報が省略されている。また、本実施例では、プロセス終了に関するイベント属性情報は存在しないことから、イベント属性情報も省略されている。
【0039】
以上のように、プロセス属性情報は、プロセス開始時のプロセス動作ログレコードにはあるが、プロセス開始時以降のプロセス動作ログレコードでは省略されている。その理由は、プロセス属性情報は、prsGIDと1対1に対応する情報であり、プロセスの開始から終了に至るまで共通するパラメータであるため、プロセス開始時だけ存在すれば十分だからである。
【0040】
ただし、prsGIDは、理解しにくい文字列で構成されている。そこで、prsGIDが何のプロセスを示しているのかを容易に理解できるように、テキストで記述された当該プロセスのプロセス実行ファイルの名称がprsGIDに付加されることもある。
【0041】
ここで、発生日時の書式は、例えば次の通りである。
「MM/DD/YYYY hh:mm:ss.sss ±hhmm」
そして、当該書式の各パラメータは次の通りである。
MM:月
DD:日
YYYY:西暦
hh:時
mm:分
ss.sss:秒(msecオーダー)
hhmm:協定世界時との時差(hhは時間、mmは分)
【0042】
これより、例えば日本標準時(JST)において2015年7月15日20時52分18.033秒に発生したプロセス動作において、その発生日時の記述例は次の通りである。
「07/15/2015 20:52:18.033 +0900」
【0043】
シーケンス番号は、発生日時から独立したパラメータである。例えば、発生日時が同じであった場合でも、シーケンス番号は決して重複することはない。これより、シーケンス番号によって、結果的にmsec以下のプロセス動作の発生順を示すことができる。さらにシーケンス番号は、仮にOSの時刻設定に変更が発生したとしても、時刻設定の変更に影響されることなく、プロセス動作の絶対的な発生順を示すことができる。
【0044】
端末情報は、例えば、「user:(ログオン)ユーザ名」が該当する。端末情報は、他に、コンピュータ名、コンピュータドメイン名、端末管理ID、ホストのIPアドレス、MACアドレス等が該当する。
【0045】
端末情報は、プロセスから独立したパラメータである。端末情報は、一般的にはプロセス動作ログレコード毎に大きく変化することはない。しかし、例えばDHCP(Dynamic Host Configuration Protocol)を用いてホストのIPアドレスを動的に変更した場合等、プロセスの動作とは独立して、端末情報が変化する可能性がある。これより、全てのプロセス動作ログレコードに対して、端末情報が付与されている。
【0046】
prsGID(プロセスGID)は、任意の時刻、実行環境で生成、動作したプロセスに対して一意に割り当てられる識別子である。prsGIDは、例えば、マイクロソフト社のWindows(登録商標)で用いられるGUID(Globally Unique Identifier)や、ISO/IEC 11578で規定されたUUID(Universally Unique Identifier)等が該当する。
prsGIDは、例えば、「F6C32025−DC83−4126−A1B7−7D6E6FCBB10C」等と記述される。
【0047】
プロセス属性情報は、任意の動作の実行主体であるプロセスに関する様々な属性を記述する。プロセス属性情報は、例えば次の通りである。
name:プロセス実行ファイルの名称(フルパス)
hash:プロセス実行ファイルのハッシュ値
parentGID:本プロセスを起動した親プロセスのprsGID
pid:システムが本プロセスに付与したシステム(実行環境)内一意な識別子
parentPid:本プロセスを起動した親プロセスのpid
productName:プロセスが所属するソフトウェア製品の製品名
【0048】
プロセス属性情報には、他に、当該親プロセスのプロセス実行ファイルの名称、当該プロセスのバージョン番号、当該プロセス実行ファイルのファイルサイズ、当該プロセス実行ファイルの著作権者名、当該ソフトウェア製品の製造元、製品説明や証明書関連情報等がある。
【0049】
イベント種及びそのイベント属性情報は、例えば次の通りである。
1.プロセス関連のイベント種
【0050】
(1)prsStart(プロセスの起動)
なお、prsStartは、イベント属性情報を持たない。
(2)prsStop(プロセスの終了)
なお、prsStopは、イベント属性情報を持たない。
(3)その他
プロセス関連のその他のイベント種としては、例えば毎00:00時に、prsGIDで識別されたプロセスが実行中であることを示すprsRun、等がある。
【0052】
(1)tcpOpen(TCP(Transmission Control Protocol)ネットワーク接続の開始)
tcpOpenのイベント属性情報は、例えば次の通りである。
dstIP:接続先IPアドレス
tcpGID:任意の時刻、実行環境で開始したネットワーク接続に対して一意に割り当てられる識別子
tcpOpenのイベント属性情報には、他に、接続先ホスト名、ポート番号、等がある。
【0053】
(2)tcpClose(TCPネットワーク接続の終了)
tcpCloseのイベント属性情報は、例えば次の通りである。
tcpGID:対応するtcpOpenにて付与されたtcpGID
tcpCloseのイベント属性情報には、他に、接続開始日時等がある。
【0054】
(3)その他
ネットワーク関連のその他のイベント種としては、例えば毎00:00時に、prsGID及びtcpGIDの少なくとも一方で識別されたプロセスのTCPネットワーク接続が継続していることを示すtcpRun、当該プロセスがTCPネットワーク接続の受付待ち状態になったことを示すtcpListen、TCPネットワーク接続においてデータ送信が実施されたことを示すtcpSend、同データ受信が実施されたことを示すtcpReceive、等がある。さらに、UDP(User Datagram Protocol)関連での同様のイベント種等もある。
【0056】
(1)fileCreate(新規ファイルの生成)
fileCreateのイベント属性情報は、例えば次の通りである。
file:生成ファイル名
pid:依頼元プロセスのpid
fileCreateのイベント属性情報には、他に、生成先のデバイス名、同ドライブ名等がある。
【0057】
(2)fileOpen(既存ファイルを開く)
fileOpenのイベント属性情報は、例えば次の通りである。
file:対象ファイル名
pid:依頼元プロセスのpid
fileOpenのイベント属性情報には、他に、対象ファイルが存在するデバイス名、同ドライブ名等がある。
【0058】
(3)fileClose(読み書き後、ファイルを閉じる)
fileCloseのイベント属性情報は、例えば次の通りである。
file:対象ファイル名
hash:対象ファイルを閉じた時の当該対象ファイルのハッシュ値
rByte:読み込み総バイト数
wByte:書き出し総バイト数
pid:依頼元プロセスのpid
fileCloseのイベント属性情報には、他に、対象ファイルのファイルサイズ、同ファイルの生成日時等がある。
【0059】
(4)fileDelete(既存ファイルの削除)
fileDeleteのイベント属性情報は、例えば次の通りである。
file:対象ファイル名
pid:依頼元プロセスのpid
fileDeleteのイベント属性情報には、他に、対象ファイルが存在していたデバイス名、同ドライブ名等がある。
【0060】
(5)その他
ファイル操作関連のその他のイベント種としては、例えばprsGIDで識別されたプロセスによる既存ファイルのファイル名変更を示すfileRename、当該プロセスによる既存ファイルのコピー動作を示すfileCopy等がある。さらに、フォルダ関連での同様のイベント種等もある。
【0062】
(1)regValSet(指定したサブキーへの(何らかの値を持つ)所定のエントリの設定)
regValSetのイベント属性情報は、例えば次の通りである。
key:エントリ設定対象サブキー名
entry:設定されるエントリ名
【0063】
(2)その他
レジストリ操作関連のその他のイベント種としては、例えばprsGIDで識別されたプロセスによる所定のエントリ削除を示すregValReset、当該プロセスによるサブキーの新規生成を示すregKeyCreate、当該プロセスによる所定サブキーの削除を示すregKeyDelete等がある。
【0064】
5.ユーザセッション関連のイベント種
【0065】
(1)logon(ユーザのログオン検出)
logonのイベント属性情報は、例えば次の通りである。
user:ログオンユーザ名
usrGID:任意の時刻、実行環境で開始したユーザセッションに対して一意に割り当てられる識別子
logonのイベント属性情報には、他に、ログオンユーザドメイン名、システムが当該ユーザセッションに付与したシステム内一意なユーザセッションID等がある。
なお、logonログレコードは、OSからの通知を受けて生成されるもので、厳密にはプロセス動作ログレコードではない。
【0066】
(2)その他
ユーザセッション関連のその他のイベント種としては、ユーザのログオフを検出したlogoff、ユーザセッションがロック状態に入ったことを検出したlock、ユーザセッションのロック状態が解除されたことを検出したunlock等がある。さらに、リモートログオン関連での同様のイベント種等もある。
【0067】
6.その他のイベント種
その他のイベント種としては、ログ情報生成部動作関連、OSメンテナンス関連、接続デバイス(周辺機器)関連のイベント種等がある。
【0068】
図5及び
図6は、クライアント端末10の動作ルーチンを示すフローチャートである。
ステップS1では、クライアント端末10のOSが起動する。
ステップS2では、デバイスドライバへ
図2に示すドライバ監視部12を読み込ませる。
【0069】
ステップS3では、ログ情報送信部15が起動する。ログ情報送信部15は、起動後、他の部位からは独立して動作する。具体的には、ログ情報送信部15は、定期的あるいはログ情報のデータサイズが所定の値に達した段階で、当該ログ情報をスプール装置20に送信する。
【0070】
ステップS4では、
図2に示す全体制御部16が起動する。
ステップS5では、
図2に示す全体制御部16が、システム領域におけるプロセス監視制御部13を起動する。
ステップS6では、ログ情報生成部14が起動する。
【0071】
ステップS7では、システム領域におけるプロセスの動作が監視され、プロセス動作ログが生成される。なお、ステップS7の詳細については後述する。
【0072】
図6に示すステップS8では、全体制御部16は、あるユーザからのログオンを検出したかを判定し、ログオンを検出した場合はその旨をログ情報生成部14へ通知後、ステップS9へ進み、ログオンを検出していない場合はステップS11へ進む。
【0073】
ステップS9では、全体制御部16は、ログオンが検出されたユーザのユーザ領域におけるプロセス監視制御部13を起動する。
ステップS10では、ログオンが検出されたユーザのユーザ領域におけるプロセスの動作が監視され、プロセス動作ログが生成される。なお、ステップS10の詳細については後述する。そして、ステップS8へ戻る。
【0074】
一方、ステップS11では、全体制御部16は、あるユーザからのログオフを検出したかを判定し、ログオフを検出した場合はその旨をログ情報生成部14へ通知後、ステップS12へ進み、ログオフを検出していない場合はステップS13へ進む。
【0075】
ステップS12では、全体制御部16は、ログオフが検出されたユーザのユーザ領域におけるプロセス監視制御部13を停止させる。そして、ステップS8へ戻る。
【0076】
ステップS13では、全体制御部16は、システムのシャットダウンを検出したかを判定し、シャットダウンを検出した場合はステップS14へ進み、シャットダウンを検出していない場合はステップS8へ戻る。
【0077】
ステップS14では、ログ情報生成部14が停止する。
ステップS15では、全体制御部16は、システム領域におけるプロセス監視制御部13を停止させる。
ステップS16では、全体制御部16が停止する。
ステップS17では、ログ情報送信部15が停止する。
ステップS18では、OSが停止する。そして、本ルーチンが終了する。
【0078】
図7は、ステップS7及びステップS10におけるプロセス監視制御部13の動作ルーチンを示すフローチャートである。
【0079】
ステップS21では、プロセス監視制御部13は、OSから、あるプロセス(以下「本プロセス」という。)が起動されたことを示すプロセス起動信号を受信したかを判定し、プロセス起動信号を受信したと判定した場合はステップS22へ進み、プロセス起動信号を受信していないと判定した場合はステップS28へ進む。
【0080】
ステップS22では、プロセス監視制御部13は、本プロセスにプロセス監視部11を読み込ませる。これにより、プロセス監視部11は、本プロセスを監視して、本プロセスの動作状況に応じたイベント情報等をプロセス監視制御部13へ出力する。
【0081】
ステップS23では、プロセス監視制御部13は、プロセス起動信号から、本プロセスをシステム内で一意に識別したpid(プロセスID)及び当該プロセスを起動した親プロセスをシステム内一意に識別したparentPid(親プロセスID)を抽出する。
ステップS24では、プロセス監視制御部13は、本プロセスが起動した日時を示す「発生日時」を取得する。
【0082】
ステップS25では、プロセス監視制御部13は、本プロセスを大域的一意に識別するためのpreGID(プロセスGID)を生成する。
ステップS26では、プロセス監視制御部13は、本プロセスのプロセス実行ファイルのハッシュ値を生成する。
【0083】
なお、本実施形態では、ステップS26において、1つのハッシュ値が生成されているが、後述する脅威データベースでのマルウェア照合において、異なる複数の脅威データベースで照合できるように、生成アルゴリズムの異なる複数のハッシュ値が生成されてもよい。つまり、例えばMD5、SHA1、及びSHA256等の異なるハッシュ値生成アルゴリズムに基づいて、複数のハッシュ値が生成されてもよい。
【0084】
ステップS27では、プロセス監視制御部13は、発生日時、プロセス情報(prsGID、pid及びparentPid等を含む)と、prsStartなるイベント種を含むイベント情報とをログ情報生成部14へ送信する。そして、ステップS21へ戻る。
【0085】
ステップS28では、プロセス監視制御部13は、あるプロセス(以下、「本プロセス」という。)のプロセス監視部11から発生日時及びイベント情報を受信したかを判定し、受信したと判定したときはステップS29へ進み、受信していないと判定したときはステップS31へ進む。
【0086】
ステップS29では、プロセス監視制御部13は、本プロセスの起動時に自らが生成した本プロセスのprsGIDを取得する。
ステップS30では、プロセス監視制御部13は、発生日時、本プロセスのprsGID、イベント情報をログ情報生成部14へ送信する。そして、ステップS21へ戻る。
【0087】
ステップS31では、プロセス監視制御部13は、OSから、あるプロセス(以下、「本プロセス」という。)が終了したことを示すプロセス停止信号を受信したかを判定し、プロセス停止信号を受信したと判定した場合はステップS32へ進み、プロセス停止信号を受信していないと判定した場合はステップS21へ戻る。
【0088】
ステップS32では、プロセス監視制御部13は、本プロセスの起動時に自らが生成した本プロセスのprsGIDを取得する。
ステップS33では、プロセス監視制御部13は、発生日時、本プロセスのprsGID、prsStopなるイベント種を含むイベント情報をログ情報生成部14へ送信する。そして、ステップS21へ戻る。
【0089】
図8は、ステップS7及びステップS10におけるプロセス動作ログの生成に関するログ情報生成部14の動作ルーチンを示すフローチャートである。
【0090】
ステップS41では、ログ情報生成部14は、ドライバ監視部12又はプロセス監視制御部13から、発生日時及びイベント情報を受信する。またプロセス監視制御部13からは、プロセス情報も併せて受信する。
すなわち、ログ情報生成部14は、プロセス監視制御部13からは、
図7に示すステップS21〜S33までの処理を経た発生日時、プロセス情報及びイベント情報を受信する。また、ログ情報生成部14は、ドライバ監視部12から、発生日時及びイベント情報を受信する。
【0091】
ステップS42では、ログ情報生成部14は、ステップS41で受信したイベント情報に含まれるイベント種がprsStartであるかを判定し、prsStartであると判定した場合はステップS43へ進み、prsStartではないと判定した場合はステップS46へ進む。
【0092】
ステップS43では、ログ情報生成部14は、ステップS41で受信したプロセス情報内のプロセス属性情報から、このプロセスを起動した親プロセスのparentPidを抽出してステップS44へ進む。
【0093】
ステップS44では、ログ情報生成部14は、当該親プロセスの対応表を参照して、ステップS44で抽出したparentPidに対応する当該親プロセスのprsGIDを取り出し、取り出したprsGIDを当該プロセス情報内のプロセス属性情報のparentGIDに設定し、ステップS45へ進む。
【0094】
ここで、親プロセスは、このプロセスよりも先に開始され、このプロセスのプロセス開始に伴うステップ44の処理の時点では終了していない。このため、parentPidと親プロセスのprsGIDとの対応関係を示す当該親プロセスの対応表は必ず存在する。
【0095】
ステップS45では、ログ情報生成部14は、プロセス情報に含まれるprsGIDと、当該プロセス情報内のプロセス属性情報に含まれるpidの対応関係を一時的に対応表に保存して、ステップS46へ進む。
【0096】
ステップS46では、ログ情報生成部14は、ステップS41においてプロセス情報を受信したかを判定し、プロセス情報を受信したと判定した場合はステップS49へ、受信していないと判定した場合はステップS47へ進む。つまり、ログ情報生成部14は、ステップS41において、ドライバ監視部12からイベント情報等を受信した場合は、ステップS47へ進む。
【0097】
ドライバ監視部12から送信されたイベント情報内のイベント属性情報には、デバイスドライバに処理を依頼したプロセスのpidが含まれている。そこで、ステップS47では、ログ情報生成部14は、ステップS41で受信したイベント情報内のイベント属性情報からpidを抽出してステップS48へ進む。
【0098】
ステップS48では、ログ情報生成部14は、このプロセスの対応表を参照して、ステップS47で抽出したpidに対応するprsGIDを取り出し、取り出したprsGIDをこのイベントのプロセス情報に設定して、ステップS49へ進む。すなわち、このプロセスがデバイスドライバに処理を依頼した場合は、このプロセスの対応表が用いられて、デバイスドライバに処理を依頼した当該イベント情報の実行主体であるこのプロセスのpidから、このプロセスを大域的一意に特定するprsGIDが得られる。
【0099】
ステップS49では、ログ情報生成部14は、OSから端末情報を取得して、ステップS50へ進む。
ステップS50では、ログ情報生成部14は、これから生成するプロセス動作ログレコードのシリアル番号を生成して、ステップS51へ進む。
【0100】
ステップS51では、ログ情報生成部14は、ステップS41で受信した各種情報、ステップS49で取得した端末情報、ステップS50で生成したシリアル番号、ステップS44、ステップS48で設定された情報を用いて、プロセス動作ログレコードを所定のログフォーマットに基づいて整形し、既存のプロセス動作ログ(ファイル)に追加出力し、ステップS52へ進む。
【0101】
ここで、プロセス動作ログレコードの改ざんを検出できるようにすべく、ログ情報生成部14は、整形された1つあるいは複数のプロセス動作ログレコードが生成される度に、1つあるいは複数のプロセス動作ログレコードのハッシュ値を生成することも可能である。生成されたハッシュ値は、例えばシーケンス番号、生成日時、端末情報等と対応付けて、安全な場所に保存される。なお、ログ情報生成部14の代わりに、スプール装置20が、ログ情報を受信した段階で、整形された1つあるいは複数のプロセス動作ログレコードのハッシュ値を生成することも可能である。
【0102】
なお、ログ情報送信部15は、ステップS3での起動後、他の部位からは独立して動作する。具体的には、ログ情報送信部15は、定期的あるいはログ情報のデータサイズが所定の値に達した段階で、当該ログ情報をスプール装置20に送信する。
【0103】
ステップS52では、ログ情報生成部14は、ステップS41で受信したイベント情報に含まれるイベント種がprsStopであるかを判定し、prsStopであると判定した場合はステップS53へ進み、prsStopではないと判定した場合はステップS41へ戻る。
【0104】
ステップS53では、ログ情報生成部14は、ステップS44の処理を考慮し、本プロセスが起動したすべての子プロセスの開始を示すプロセス動作ログレコードの生成を確認後、対応表から、ステップS45で一時的に保存したprsGIDとpidの対応関係を削除して、ステップS41へ戻る。
【0105】
ところで、ログ情報生成部14は、ここまで説明したプロセス動作ログの生成に加えて、プロセスに依存しない操作に起因した操作ログも生成する。具体的には、ログ情報生成部14は、ステップS41において、ドライバ監視部12やプロセス監視制御部13の替わりに全体制御部16から、操作ログを構成する発生日時及びイベント情報を受信した場合、ステップS49以降の処理を実施する。
【0106】
以上のように、
図5から
図8に示すルーチンが実行されることによって、クライアント端末10は、プロセス動作ログ及び操作ログ等から構成されるログ情報を生成して、スプール装置20へ送信する。
【0107】
図9は、マルウェア(ドロッパー)の実行状況を表すプロセス動作ログを示す図である。
図10は、マルウェア(ドロッパー)の実行状況を表すタイムチャートである。
ドロッパーとは、マルウェアの中でも、特に別のマルウェア、例えばRAT型のマルウェアを作成・実行してユーザのシステムに感染させる機能をもつプログラムをいう。また、RAT(Remote Access Trojan)とは、サイバー攻撃において、外部からネットワーク経由でコンピュータに接続し任意の操作を行うことができるプログラムをいう。
図9に示すプロセス動作ログの内容は次の通りである。
【0108】
時刻t10:User1が、例えばスパムメールの添付ファイルを誤ってクリックして、マルウェア(ドロッパー)であるReadMe.txt.exeを起動する。
時刻t11:ReadMe.txt.exeは、C&C(Command&Control)サーバ(サイバー攻撃において、クライアント端末に侵入させたマルウェアに対して、外部から情報を提供したり命令を出したりする役割を担うサーバコンピュータ)から、カムフラージュのためのReadMe.txtのダウンロードを開始する。
時刻t14:ReadMe.txt.exeが、当該ReadMe.txtのダウンロードを終了する。
【0109】
時刻t40:ReadMe.txt.exeは、ダウンロードしたReadMe.txtを指定して、その内容を表示するアプリケーションプログラムであるNOTEPAD.EXE(「メモ帳」)を、カムフラージュのために起動する。
時刻t41:NOTEPAD.EXEが、当該ReadMe.txtを開く。これよりUser1は、NOTEPAD.EXEによって当該ReadMe.txtを閲覧する。
時刻t15:ReadMe.txt.exeは、C&Cサーバから、マルウェア(RAT)の一種であるtrHorse.exeのダウンロードを開始する。
時刻t18:ReadMe.txt.exeが、当該trHorse.exeのダウンロードを終了する。
【0110】
時刻t19:ReadMe.txt.exeは、システムの立上げ時にtrHorse.exeが自動的に起動するよう、レジストリのRunサブキーに当該trHorse.exeを登録する。
時刻t20:ReadMe.txt.exeは、User1が再度のログオンの際にtrHorse.exeが自動的に起動するよう、User1のStartupフォルダに、当該trHorse.exeのリンクファイルの生成を開始する。
時刻t21:ReadMe.txt.exeは、当該リンクファイルの生成を終了する。
【0111】
時刻t22:ReadMe.txt.exeは、Tempフォルダ内にあった自らのプロセス実行ファイルであるReadMe.txt.exeファイルを削除する。
時刻t23:ReadMe.txt.exeが終了する。
時刻t42:User1は、ReadMe.txtの閲覧後、これを閉じる。
時刻t43:User1が、NOTEPAD.EXEを終了する。
【0112】
図11は、マルウェア(RAT)の実行状況を表すプロセス動作ログを示す図である。
図12は、マルウェア(RAT)の実行状況を表すタイムチャートである。
図11に示すプロセス動作ログの内容は次の通りである。
【0113】
時刻t60:User1が、trHorse.exeに感染したクライアント端末にログオンする。
時刻t70:ユーザセッションの実行環境構築の一環としてタスクマネージャであるExplorer.EXE(「エクスプローラ」)が起動する。
時刻t80:Explorer.EXEが、ユーザセッション開始時の自動起動プロセス(スタートアップ・プロセス)としてtrHorse.exeを起動する。
時刻t81:trHorse.exeは、前出とは異なるC&Cサーバとの制御ネットワーク接続を開始する。
時刻t82:trHorse.exeは、前出の二者とはさらに異なるC&Cサーバへ、Documentsフォルダに格納されていた機密情報ファイルである「決算情報.docx」のアップロードを開始する。
【0114】
時刻t85:trHorse.exeが、当該「決算情報.docx」のアップロードを終了する。
時刻t86:trHorse.exeは、前出と同じC&Cサーバへ、Documentsフォルダに格納されていた機密情報ファイルである「顧客リスト.xlsx」のアップロードを開始する。
時刻t89:trHorse.exeが、当該「顧客リスト.xlsx」のアップロードを終了する。
時刻t90:trHorse.exeが、制御ネットワーク接続を終了する。
時刻t91:trHorse.exeが終了する。
【0115】
図13及び
図14は、マルウェア特定を目的に、データベース32に蓄積された膨大なログ情報の中から直接の解析対象とすべきプロセス動作ログレコードの抽出と、そこで検出されたプロセスが既知のマルウェアか否かを特定するための脅威データベースへの照会とを実施するための、ログ情報解析部34の処理を示すフローチャートである。
ステップS51では、ログ情報解析部34は、図示しないサイバー攻撃アラート信号受信部を介してサイバー攻撃アラート信号を受信したかを判定し、サイバー攻撃アラート信号を受信するまで待機する。そして、ログ情報解析部34は、サイバー攻撃アラート信号を受信したと判定すると、ステップS52へ進む。
【0116】
ここで、サイバー攻撃アラート信号とは、例えばマルウェア特定システム1の振る舞いをモニタリングする外部のモニタリング部(図示しない)によって、マルウェア特定システム1がサイバー攻撃を受けた蓋然性が高いと判断されたときに発信される信号をいう。サイバー攻撃アラート信号は、サイバー攻撃を受けたときの時刻であるインシデント発生日時、サイバー攻撃を受けた端末のホストIPアドレス、当該端末の通信先のIPアドレス(dstIP)等の情報を有している。
【0117】
ステップS52では、ログ情報解析部34は、データベース32に記憶されているプロセス動作ログと、サイバー攻撃アラート信号に含まれる情報とを用いて、サイバー攻撃を受けたクライアント端末10で動作していた、インシデント発生元の蓋然性が高いプロセスのprsGIDを特定し、当該プロセスの任意のプロセス動作ログレコードを抽出する。
【0118】
例えば、サイバー攻撃アラート信号に含まれるインシデント発生時刻がt81、dstIPが“55...201”である場合、
図11に示すシーケンス番号622におけるプロセス動作ログレコードのprsGID=“gid4”が特定され、当該プロセス動作ログレコードが抽出される。
【0119】
ステップS53では、ログ情報解析部34は、ステップS52で特定したprsGIDを変数gidVarに設定する。
ステップS54では、ログ情報解析部34は、変数gidVarと同じ値のprsGIDを含んだすべてのプロセス動作ログレコードを抽出する。例えば、変数gidVar←“gid4”の場合、prsGID=“gid4”である、シーケンス番号621から632のすべてのプロセス動作ログレコードが抽出される。
【0120】
ステップS55では、ログ情報解析部34は、抽出されたプロセス動作ログレコードの中からイベント種がprsStartであるプロセス動作ログレコードを抽出する。例えば、prsGID=“gid4”の場合、prsStartを含んだシーケンス番号621のプロセス動作ログレコードが抽出される。
【0121】
ステップS56では、ログ情報解析部34は、ステップS55で抽出したプロセス動作ログレコードのプロセス属性情報から、当該プロセスのプロセス実行ファイルのハッシュ値を抽出して、脅威データベースと照合する。
【0122】
脅威データベースとは、過去に発見されたマルウェアの名称、種類、発見日、危険度、実行ファイルのハッシュ値等の脅威情報を記憶しているデータベース装置である。脅威データベースは、クライアント端末10からハッシュ値の照合要求があった際、そのハッシュ値をもつマルウェアが記憶されていた場合には当該マルウェアの脅威情報をクライアント端末10へ送信する。
【0123】
例えば、シーケンス番号621では、マルウェア(RAT)であるプロセス“trHorse.exe”のハッシュ値“hsh11”が抽出される。脅威データベースは、クライアント端末10からハッシュ値“hsh11”の照合要求があった場合、マルウェア(RAT)“trHorse.exe”の脅威情報を保持していれば、その脅威情報をクライアント端末10へ送信する。
【0124】
なお、脅威データベースが異なれば、異なる生成アルゴリズムに基づくプロセス実行ファイルのハッシュ値が求められる。このため、プロセス属性情報に生成アルゴリズムの異なる複数のハッシュ値が保持されていた場合は、対象となる脅威データベースが求めるアルゴリズムに基づいて生成されたハッシュ値が選択され、照合されてもよい。
【0125】
ステップS57では、ログ情報解析部34は、ステップS55で抽出したプロセス動作ログレコードのプロセス属性情報から、当該プロセスのプロセス実行ファイルの名称であるnameを抽出する。
【0126】
ステップS58では、ログ情報解析部34は、ステップS57で抽出したプロセス実行ファイルの名称が所定の名称に一致するか否かを判定し、一致した場合は
図14に示すステップS61へ進む。一方、ステップS58の否定判定、つまり、当該プロセス実行ファイルの名称が所定の名称に一致していない場合は、ステップS59へ進む。
【0127】
ここで所定の名称には、例えばプロセス起動の親子関係を表した一連のプロセス起動ツリーの最上位に位置付けられるルートプロセス等の名称等が指定される。本実施形態の場合では、所定の名称は“Explorer.EXE”である。
【0128】
ステップS59では、ログ情報解析部34は、当該プロセスを起動した親プロセスのプロセス動作ログを調べるために、ステップS55で抽出したプロセス動作ログレコードのプロセス属性情報から、parentGIDを抽出する。例えば、シーケンス番号621のプロセス属性情報から、ParentGID=“gid3”が抽出される。
【0129】
ステップS60では、ログ情報解析部34は、ステップS59で抽出したparentGIDを変数gidVarに設定して、ステップS54へ戻る。そして、再びステップS54以降の処理が実行される。
【0130】
例えば、ステップS60において、変数gidVarにparentGID=“gid3”が設定された場合、ステップS54以降の処理を通じて、ステップS57ではプロセスのnameとして“Explorer.EXE”が抽出される。そこで、ステップ58にてそれが所定の名称であると判定されることから、本ループを抜け出して、
図14のステップ61へと進む。
【0131】
なお、
図13では、ステップS51において、サイバー攻撃アラート信号は外部のモニタリング部から発信された場合を前提としたが、このような前提に限定されることはない。例えばログ情報解析部34が、ログ情報受信部31で受信されるプロセス動作ログを受信する毎に解析を実行し、過去のインシデント発生パターンと照合して、照合結果が所定の条件と一致した場合に、自らがサイバー攻撃アラート信号を発信することも可能である。
【0132】
図14に示すステップS61では、ログ情報解析部34は、OS再起動あるいはユーザログオン前のプロセス動作ログから、“trHorse.exe”に関連するマルウェアの疑いがあるプロセスのプロセス動作ログを特定すべく、ステップS56で抽出したプロセス実行ファイルのハッシュ値と同じ値のハッシュ値をいずれかに含むプロセス動作ログレコードを抽出する。
【0133】
例えば、シーケンス番号621のプロセス属性情報には、parentGID=“gid3”がある。そこで、prsGID=“gid3”であるプロセス動作ログの中でそのイベント種がprsStartであるプロセス動作ログレコード(シーケンス番号520)をみると、時刻t70において、name=“...¥Explore.EXE”なるプロセスが起動されていることから、ユーザがログオンして、新たなユーザセッションが開始されたことが分かる。
【0134】
そこで、ログ情報解析部34は、ユーザログオン前、つまり時刻t60以前のプロセス動作ログの中から、ステップS56で抽出済みのハッシュ値“hsh11”と同じ値のハッシュ値をイベント属性情報に含む、シーケンス番号110のプロセス動作ログレコードを抽出する。
【0135】
ステップS62では、ログ情報解析部34は、ハッシュ値が“hsh11”であるファイルのダウンロードを実行したプロセスのprsGIDを特定する。例えば、ステップS61でシーケンス番号110のプロセス動作ログレコードが抽出された場合、シーケンス番号110の発生日時t17、prsGID=“gid1”及びイベント属性情報(ダウンロードされたファイルのファイル名である“trHorse.exe”等)が特定される。
【0136】
ステップS63では、ログ情報解析部34は、ステップS62で特定したprsGIDを変数gidVarに設定する。
ステップS64では、ログ情報解析部34は、変数gidVarと同じ値のprsGIDを含んだすべてのプロセス動作ログレコードを抽出する。例えば、変数gidVar←“gid1”の場合、prsGID=“gid1”である、シーケンス番号101から116(但し、シーケンス番号106及び107を除く。)のすべてのプロセス動作ログレコードが抽出される。
【0137】
ステップS65では、ログ情報解析部34は、ステップS64で抽出されたプロセス動作ログレコードの中からイベント種がprsStartであるプロセス動作ログレコードを抽出する。例えば、prsGID=“gid1”の場合、prsStartを含んだシーケンス番号101のプロセス動作ログレコードが抽出される。
【0138】
ステップS66では、ログ情報解析部34は、ステップS65で抽出したプロセス動作ログレコードのプロセス属性情報から、当該プロセスのプロセス実行ファイルのハッシュ値を抽出して、脅威データベースと照合する。
【0139】
例えば、シーケンス番号101では、マルウェア(ドロッパー)であるプロセス“ReadMe.txt.exe”のハッシュ値“hsh10”が抽出される。脅威データベースは、クライアント端末10からハッシュ値“hsh10”の照合要求があった場合、マルウェア(ドロッパー)“ReadMe.txt.exe”の脅威情報を保持していれば、その脅威情報をクライアント端末10へ送信する。
【0140】
ステップS67では、ログ情報解析部34は、ステップS65で抽出したプロセス動作ログレコードのプロセス属性情報から、当該プロセスのプロセス実行ファイルの名称であるnameを抽出する。
【0141】
ステップS68では、ログ情報解析部34は、ステップS67で抽出したプロセス実行ファイルの名称が所定の名称に一致するか否かを判定し、一致した場合は本ルーチンを終了する。一方、ステップS68の否定判定、つまり、当該プロセス実行ファイルの名称が所定の名称に一致していない場合は、ステップS69へ進む。
【0142】
例えば、シーケンス番号101のプロセス属性情報では、nameは“Explorer.EXE”ではない。このため、ステップS68の否定判定を経て、ステップS69へ進む。
【0143】
ステップS69では、ログ情報解析部34は、当該プロセスを起動した親プロセスのプロセス動作ログを調べるために、ステップS65で抽出したプロセス動作ログレコードのプロセス属性情報から、parentGIDを抽出する。
【0144】
ステップS70では、ログ情報解析部34は、ステップS69で抽出したparentGIDを変数gidVarに設定して、ステップS64へ戻る。そして、再びステップS64以降の処理が実行される。その結果、ステップS67において、nameとして“Explorer.EXE”が抽出された場合、ステップS68にてそれが所定の名称であると判定されることから、本ループを抜け出して、本ルーチンを終了する。
【0145】
なお、本処理では、ログ情報解析部34は、各々のプロセスをタスクと見立て、当該タスクを大域的一意に識別するprsGIDを手掛かりに、当該タスクを構成する一連の動作を記録したプロセス動作ログレコードを抽出する。そして、ログ情報解析部34は、抽出したプロセス動作ログレコードの中から、プロセスの開始を示す動作種別情報としてのイベント種であるprsStartを有するプロセス動作ログレコードを選択し、それに含まれるプロセス属性情報をタスク属性情報とみなして当該タスクを特定する。さらに、ログ情報解析部34は、抽出したプロセス動作ログレコードに含まれ、異なるタスクを大域的一意に識別した例えばparentGID等を手掛かりに、当該異なるタスクを構成する一連の動作を記録したプロセス動作ログレコードを抽出する。しかし、本発明はこれらの処理に限定されるものではない。
【0146】
すなわち、ログ情報解析部34は、例えば各々のTCPネットワーク通信をタスクと見立て、当該タスクを大域的一意に識別するtcpGIDを手掛かりに、当該タスクを構成する一連の動作を示す動作種別情報としてのイベント種、例えばtcpOpen,tcpListen,tcpSend,tcpReceive、tcpClose等を有して記録されたプロセス動作ログレコードを抽出することも可能である。そして、ログ情報解析部34は、抽出したプロセス動作ログレコードの中から、TCPネットワーク通信の開始を示すイベント種であるtcpOpenを有するプロセス動作ログレコードを選択し、それに含まれるイベント属性情報から、当該tcpGID以外のイベント属性情報をタスク属性情報とみなして当該タスクを特定できる。さらに、ログ情報解析部34は、抽出したプロセス動作レコードに含まれ、異なるタスクを大域的一意に識別した例えばprsGID等を手掛かりに、当該異なるタスクを構成する一連の動作を記録したプロセス動作ログレコードを抽出してもよい。
【0147】
また、プロセスに依存しない操作ログについても、例えば任意のユーザセッションを大域的一意に識別するusrGIDを手掛かりに類似の処理を実施しても良い。
【0148】
図15は、ログ情報解析の一例として、抽出されたプロセス動作ログレコードからマルウェアのプロファイリングをおこなうための、ログ情報解析部34の処理を示すフローチャートである。
【0149】
ステップS81では、ログ情報解析部34は、
図13及び
図14の処理によって、本ログ情報解析の直接の解析対象とすべきプロセス動作ログレコードを抽出する。
【0150】
ステップS82では、ログ情報解析部34は、ステップS81で抽出されたすべてのプロセス動作ログレコードからイベント種を抽出する。
ステップS83では、ログ情報解析部34は、ステップS81で抽出されたプロセス動作ログレコードのいずれかにおいてファイルを作成したものがあるかを判定する。
【0151】
ここでは、ログ情報解析部34は、ステップS82で抽出されたイベント種の中に、ファイルの作成を示す“fileCreate”がある場合にファイルを作成したと判定して、ステップS84へ進む。また、ログ情報解析部34は、上記のイベント種の中に、“fileCreate”がない場合にファイルを作成していないと判定して、ステップS86へ進む。
【0152】
例えば、シーケンス番号101から116(但し、シーケンス番号106及び107を除く。)までにおいては、シーケンス番号103、109及び113のプロセス動作ログレコードに “fileCreate”がある。したがって、ステップS84へ進む。
【0153】
ステップS84では、ログ情報解析部34は、ファイルを作成したことを示すプロセス動作ログレコードを抽出する。例えば、“fileCreate”があるのはシーケンス番号103、109及び113のプロセス動作ログレコードであるので、シーケンス番号103、109及び113のプロセス動作ログレコードが抽出される。
【0154】
ステップS85では、ログ情報解析部34は、抽出したプロセス動作ログレコードから、生成したファイル名を同定する。
【0155】
この結果、発生日時t12でReadMe.txtなるファイルが作成され、発生日時t16でtrHorse.exeなるファイルが作成され、さらに、発生日時t20でtrHorse.exeのショートカットファイルが作成されていたことが分かる。
【0156】
ステップS86では、ログ情報解析部34は、ステップS81で抽出されたプロセス動作ログレコードのいずれかにおいてレジストリを操作したものがあるかを判定する。
ここでは、ログ情報解析部34は、ステップS82で抽出されたイベント種の中に、レジストリの操作を示す“regValSet”がある場合にレジストリを操作したと判定して、ステップS87へ進む。また、ログ情報解析部34は、上記のイベント種の中に、“regValSet”がない場合にレジストリを操作していないと判定して、ステップS89へ進む。
【0157】
例えば、シーケンス番号101から116(但し、シーケンス番号106及び107を除く。)までにおいては、シーケンス番号112のプロセス動作ログレコードに、“regValSet”がある。したがって、ステップS87へ進む。
【0158】
ステップS87では、ログ情報解析部34は、レジストリを操作したことを示すプロセス動作ログレコードを抽出する。例えば、“regValSet”があるのはシーケンス番号112のプロセス動作ログレコードであるので、シーケンス番号112のプロセス動作ログレコードが抽出される。
【0159】
ステップS88では、ログ情報解析部34は、抽出したプロセス動作ログレコードから、レジストリ操作の対象となったサブキー等を同定する。
【0160】
この結果、発生日時t19でレジストリのRunサブキーに、システムの起動時にtrHorse.exeを自動起動させるためのエントリが作成されたことが分かる。
【0161】
ステップS89では、ログ情報解析部34は、ステップS81で抽出されたプロセス動作ログレコードのいずれかにおいて外部とのネットワーク通信をおこなったものがあるかを判定する。
ここでは、ログ情報解析部34は、ステップS82で抽出されたイベント種の中に、TCPネットワーク接続の開始を示す“tcpOpen”がある場合に外部とのネットワーク通信があったと判定して、ステップS90へ進む。また、ログ情報解析部34は、上記のイベント種の中に、“tcpOpen”がない場合に外部とのネットワーク通信がなかったと判定して、ステップS93へ進む。
【0162】
例えば、シーケンス番号621から632までにおいては、シーケンス番号622、623及び627のプロセス動作ログレコードに、“tcpOpen”がある。したがって、ステップS90へ進む。
【0163】
ステップS90では、ログ情報解析部34は、外部とのネットワーク通信をおこなったことを示すプロセス動作ログレコードを抽出する。例えば、シーケンス番号621から632までにおいては、“tcpOpen”があるのはシーケンス番号622、623及び627のプロセス動作ログレコードであるので、シーケンス番号622、623及び627のプロセス動作ログレコードが抽出される。
【0164】
ステップS91では、ログ情報解析部34は、抽出したプロセス動作ログレコードのイベント属性情報からtcpGIDの値を抽出し、同じtcpGIDの値を持つ他の全てのプロセス動作ログレコードを抽出してグループ化をおこなう。
【0165】
例えば、シーケンス番号621から632までにおいては、シーケンス番号622、623及び627のプロセス動作ログレコードの各々のイベント属性情報から、tcpGIDの値として、“gid101”、“gid102”及び“gid103”が抽出される。そこで、その各々と同じtcpGIDの値を持つ他の全てのプロセス動作ログレコードとして、それぞれ、シーケンス番号631、626及び630のプロセス動作ログレコードが抽出されるから、その各々が、シーケンス番号622、623及び627のプロセス動作ログレコードと、それぞれグループ化される。
【0166】
ステップS92では、ログ情報解析部34は、グループ化されたプロセス動作ログレコードから発生日時及びdstIPの値を抽出し、各ネットワーク通信の通信時間帯及び接続先IPアドレスを同定する。
【0167】
この結果、tcpGIDが“gid101”として識別されるネットワーク通信は、発生日時t81からt90の時間帯においてIPアドレス“55...201”を接続先としておこなわれ、tcpGIDが“gid102”として識別されるネットワーク通信は、発生日時t82からt85の時間帯においてIPアドレス“55...202”を接続先としておこなわれ、そしてtcpGIDが“gid103”として識別されるネットワーク通信は、発生日時t86からt89の時間帯において前出と同じくIPアドレス“55...202”を接続先としておこなわれていたことが分かる。
【0168】
なお、ステップS83、S86及びS89で挙げたイベントは、一例に過ぎない。すなわち、ログ情報解析部34は、マルウェアの一連の動作を調べるために、その他のイベントの有無を判定することも可能である。
【0169】
ステップS93では、ログ情報解析部34は、ステップS84、ステップS87あるいはステップS90で抽出されたプロセス動作ログレコードがあるかを判定し、抽出されたプロセス動作ログレコードがある場合はステップS94へ進み、抽出されたプロセス動作ログレコードがない場合は本ルーチンを終了する。
【0170】
ステップS94では、ログ情報解析部34は、ステップS85で同定された生成ファイル名、ステップS88で同定されたレジストリ操作対象サブキー、ステップS92で同定された外部ネットワーク通信の通信時間帯及び接続先IPアドレス等を用いてマルウェアのプロファイリングを実施して、本ルーチンを終了する。
【0171】
ここでプロファイリングとは、サイバー攻撃におけるマルウェアの調査において、侵入、諜報、拡散、攻撃(情報漏洩、破壊工作)といったマルウェアの動作を同定したり、未知のマルウェアの動き方の特徴を推論したりすることをいう。本実施形態では、プロファイリングは、ステップS84、ステップS87及びステップS90等で得られたプロセス動作ログレコードを、ステップS85、ステップS88及びステップS92等で同定された情報を手掛かりにマルウェアの動作を統計的に推論したり、当該プロセス動作ログレコードの、シーケンス番号419のログオンに代表される操作ログや過去のマルウェア情報等との相互参照によって必要な情報を整理したりすることで、マルウェアの動作を同定等することである。
【0172】
なお、本実施形態では、アプリケーションプログラムの実行主体としてのプロセスの動作に関するプロセス動作ログの収集、分析から、いわゆる悪意のあるアプリケーションプログラムとしてのマルウェアを特定することを中心に説明した。しかし、本発明は、上述した実施形態に限定されることはない。
【0173】
本発明は、プロセスに限らず、ユーザの端末操作、記録媒体の接続等の一連の動作で構成される任意のタスクにも適用可能である。つまり、本発明は、プログラム(プロセス)単位・ユーザ単位・コンピュータ単位ですべてのタスクのログ情報を生成して、その中から、解析に必要なログ情報を効率よく抽出することができる。
【0174】
例えば、ユーザによるログオン、記録媒体の接続、OSの設定時刻の変更等もログ情報として記録される。このため、悪意のあるユーザを特定することや、ユーザの無実を証明することが可能になる。さらに、所望のアプリケーションプログラムの実行主体としてのプロセスのプロセス動作ログレコードに着目すれば、当該アプリケーションプログラムの利用状況を、ユーザあるいは端末単位で把握するも可能になる。
【0175】
その他、本発明は、機密ファイル(特定のファイル)の保持調査、コンピュータ利用状況から業務遂行ノウハウの可視化、クラウドサービスにアップロードされたファイルのリスト化、誤操作で行方不明になったファイルの発見、プログラムの動作確認(デバッグ的なもの)、勤怠管理(労務管理)、勤務状況の調査(業務外アプリケーション、業務外Webサイトの利用状況)、ファイル持ち出し監査に利用することも可能である。
【解決手段】クライアント端末10は、関連する一連のイベントを実行するプロセスの開始時に、当該プロセスを時間的及び空間的に一意に識別するプロセスGIDを含んだプロセス情報を生成し、さらに、プロセスが実行するイベント毎に、イベント種を含んだイベント情報をプロセス監視部11から受信するプロセス監視制御部13と、プロセスが実行するイベント毎に、プロセス監視制御部13から提供されたプロセス情報とイベント情報とを有するプロセス動作ログレコードを生成するログ情報生成部14と、を備えている。