(57)【要約】  履歴出力装置（２０００）は、対象システム（１００）において発生した異常イベントを表す情報である異常イベント履歴（１０）を取得し、その異常イベント履歴（１０）によって表される異常イベントの種類を特定する。特定した異常イベントの種類が第１種である場合、履歴出力装置（２０００）は、その異常イベントが発生した端末（１１０）を、出力対象端末として特定する。さらに、履歴出力装置（２０００）は、その異常イベントが発生した時点以前に、その異常イベントが発生した端末（１１０）と通信を行っていた他の端末（１１０）も、出力対象端末として特定する。履歴出力装置（２０００）は、取得した異常イベント履歴（１０）によって表される異常イベントが出力対象端末で発生したものである場合に、その異常イベントに関する情報を出力する。
2020170345.tif 000002
【特許請求の範囲】
【請求項１】
端末において発生した異常イベントを表す異常イベント履歴を取得する取得部と、
前記取得した前記異常イベント履歴が表す前記異常イベントの種類が所定の種類であるか否かを判定する種類判定部と、
前記異常イベントの種類が前記所定の種類である場合、その異常イベントが発生した端末と、その異常イベントが発生した時点以前にその端末と通信した他の端末とを、出力対象端末として特定する端末特定部と、
前記取得した異常イベント履歴によって表される前記異常イベントが前記出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力部と、を有する、履歴出力装置。
【請求項２】
前記所定の種類の異常イベントは、安全性が担保されていないプログラム又はコマンドの実行によって生じた異常なイベントである、請求項１に記載の履歴出力装置。
【請求項３】
安全性が担保されていないプログラムは、オペレーティングシステムと一緒にインストールされないプログラム、認証されていないプログラム、及びそのプログラムを利用している端末が所定数若しくは所定割合以下であるプログラムのいずれか１つ以上であり、
安全性が担保されていないコマンドは、安全性が担保されていないプログラムによって提供されるコマンドである、請求項１又は２に記載の履歴出力装置。
【請求項４】
前記端末特定部は、前記出力対象端末として特定されている端末が他の端末と通信したら、当該他の端末をさらに前記出力対象端末として特定する、請求項１乃至３いずれか一項に記載の履歴出力装置。
【請求項５】
前記出力部は、或る端末が前記出力対象端末として特定されたら、その特定よりも前にその端末で生じた異常イベントに関する出力情報をさらに出力する、請求項１乃至４いずれか一項に記載の履歴出力装置。
【請求項６】
端末において発生した異常イベントを表す異常イベント履歴を取得する取得部と、
前記取得した前記異常イベント履歴が表す前記異常イベントの種類が所定の種類であるか否かを判定する種類判定部と、
前記異常イベントの種類が前記所定の種類である場合、その異常イベントが発生した端末を出力対象端末として特定する端末特定部と、
前記取得した異常イベント履歴によって表される前記異常イベントが前記出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力部と、を有し、
前記出力部は、或る端末が前記出力対象端末として特定されたら、その特定よりも前にその端末で生じた異常イベントに関する出力情報をさらに出力する、履歴出力装置。
【請求項７】
前記出力部は、或る端末が前記出力対象端末として特定されたら、その特定よりも前の第１所定期間にその端末で生じた異常イベントを表す前記異常イベント履歴をさらに出力する、請求項６に記載の履歴出力装置。
【請求項８】
前記第１所定期間の長さは、異常イベントを発生させたプログラム又はコマンドの種類に応じて異なる、請求項７に記載の履歴出力装置。
【請求項９】
前記出力部は、前記第１所定期間に前記端末で異常イベントが発生していたら、前記第１所定期間よりも長い第２所定期間にその端末で生じた異常イベントに関する出力情報をさらに出力する、請求項７又は８に記載の履歴出力装置。
【請求項１０】
コンピュータによって実行される制御方法であって、
端末において発生した異常イベントを表す異常イベント履歴を取得する取得ステップと、
前記取得した前記異常イベント履歴が表す前記異常イベントの種類が所定の種類であるか否かを判定する種類判定ステップと、
前記異常イベントの種類が前記所定の種類である場合、その異常イベントが発生した端末と、その異常イベントが発生した時点以前にその端末と通信した他の端末とを、出力対象端末として特定する端末特定ステップと、
前記取得した異常イベント履歴によって表される前記異常イベントが前記出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力ステップと、を有する、制御方法。
【請求項１１】
前記所定の種類の異常イベントは、安全性が担保されていないプログラム又はコマンドの実行によって生じた異常なイベントである、請求項１０に記載の制御方法。
【請求項１２】
安全性が担保されていないプログラムは、オペレーティングシステムと一緒にインストールされないプログラム、認証されていないプログラム、及びそのプログラムを利用している端末が所定数若しくは所定割合以下であるプログラムのいずれか１つ以上であり、
安全性が担保されていないコマンドは、安全性が担保されていないプログラムによって提供されるコマンドである、請求項１０又は１１に記載の制御方法。
【請求項１３】
前記端末特定ステップにおいて、前記出力対象端末として特定されている端末が他の端末と通信したら、当該他の端末をさらに前記出力対象端末として特定する、請求項１０乃至１２いずれか一項に記載の制御方法。
【請求項１４】
前記出力ステップにおいて、或る端末が前記出力対象端末として特定されたら、その特定よりも前にその端末で生じた異常イベントに関する出力情報をさらに出力する、請求項１０乃至１３いずれか一項に記載の制御方法。
【請求項１５】
コンピュータによって実行される制御方法であって、
端末において発生した異常イベントを表す異常イベント履歴を取得する取得ステップと、
前記取得した前記異常イベント履歴が表す前記異常イベントの種類が所定の種類であるか否かを判定する種類判定ステップと、
前記異常イベントの種類が前記所定の種類である場合、その異常イベントが発生した端末を出力対象端末として特定する端末特定ステップと、
前記取得した異常イベント履歴によって表される前記異常イベントが前記出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力ステップと、を有し、
前記出力ステップにおいて、或る端末が前記出力対象端末として特定されたら、その特定よりも前にその端末で生じた異常イベントに関する出力情報をさらに出力する、制御方法。
【請求項１６】
前記出力ステップにおいて、或る端末が前記出力対象端末として特定されたら、その特定よりも前の第１所定期間にその端末で生じた異常イベントを表す前記異常イベント履歴をさらに出力する、請求項１５に記載の制御方法。
【請求項１７】
前記第１所定期間の長さは、異常イベントを発生させたプログラム又はコマンドの種類に応じて異なる、請求項１６に記載の制御方法。
【請求項１８】
前記出力ステップにおいて、前記第１所定期間に前記端末で異常イベントが発生していたら、前記第１所定期間よりも長い第２所定期間にその端末で生じた異常イベントに関する出力情報をさらに出力する、請求項１６又は１７に記載の制御方法。
【請求項１９】
請求項１０乃至１８いずれか一項に記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシステムで発生した異常に関する情報を管理する技術に関する。
【背景技術】
【０００２】
システムで発生した異常なイベントに関する情報を出力するための技術が開発されている。例えば特許文献１は、システムで実行されたコマンドのうち、システムの状態に影響を及ぼすものを記録しておき、システムにおいて異常が検知されたら、その異常の発生前所定時間内に実行されたコマンドを出力する技術を開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１０７６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
システムで発生した異常に関して出力される情報の量が多すぎると、その情報の解析作業が煩雑になる。その結果、重要な異常を見逃しやすくなるといった問題が生じる。この点、特許文献１の技術では、異常なイベントが検知されると、その異常が軽微なものなのか重大なものなのかにかかわらず、過去のコマンドのログが出力される。そのため、出力される情報（コマンドのログ）が多くなると考えられる。【０００５】
本発明は、上述の課題に鑑みてなされたものであり、その目的の一つは、異常なイベントに関する情報の扱いを容易にする技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明の第１の履歴出力装置は、１）端末において発生した異常イベントを表す異常イベント履歴を取得する取得部と、２）取得した異常イベント履歴が表す異常イベントの種類が所定の種類であるか否かを判定する種類判定部と、３）異常イベントの種類が所定の種類である場合、その異常イベントが発生した端末と、その異常イベントが発生した時点以前にその端末と通信した他の端末とを、出力対象端末として特定する端末特定部と、４）取得した異常イベント履歴によって表される異常イベントが出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力部と、を有する。【０００７】
本発明の第２の履歴出力装置は、１）端末において発生した異常イベントを表す異常イベント履歴を取得する取得部と、２）取得した異常イベント履歴が表す異常イベントの種類が所定の種類であるか否かを判定する種類判定部と、３）異常イベントの種類が所定の種類である場合、その異常イベントが発生した端末を出力対象端末として特定する端末特定部と、４）取得した異常イベント履歴によって表される異常イベントが出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力部と、を有する。
出力部は、或る端末が出力対象端末として特定されたら、その特定より前にその端末で生じた異常イベントに関する出力情報をさらに出力する。【０００８】
本発明の第１の制御方法は、コンピュータによって実行される。当該制御方法は、１）端末において発生した異常イベントを表す異常イベント履歴を取得する取得ステップと、２）取得した異常イベント履歴が表す異常イベントの種類が所定の種類であるか否かを判定する種類判定ステップと、３）異常イベントの種類が所定の種類である場合、その異常イベントが発生した端末と、その異常イベントが発生した時点以前にその端末と通信した他の端末とを、出力対象端末として特定する端末特定ステップと、４）取得した異常イベント履歴によって表される異常イベントが出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力ステップと、を有する。【０００９】
本発明の第２の制御方法は、コンピュータによって実行される。当該制御方法は、１）端末において発生した異常イベントを表す異常イベント履歴を取得する取得ステップと、２）取得した異常イベント履歴が表す異常イベントの種類が所定の種類であるか否かを判定する種類判定ステップと、３）異常イベントの種類が所定の種類である場合、その異常イベントが発生した端末を出力対象端末として特定する端末特定ステップと、４）取得した異常イベント履歴によって表される異常イベントが出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力ステップと、を有する。
出力ステップにおいて、或る端末が出力対象端末として特定されたら、その特定より前にその端末で生じた異常イベントに関する出力情報をさらに出力する。【００１０】
本発明の第１プログラムは、本発明の第１の制御方法が有する各ステップをコンピュータに実行させる。【００１１】
本発明の第２プログラムは、本発明の第２の制御方法が有する各ステップをコンピュータに実行させる。
【発明の効果】
【００１２】
本発明によれば、異常なイベントに関する情報の扱いを容易にする技術が提供される。
【図面の簡単な説明】
【００１３】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
【図１】本実施形態の履歴出力装置の動作の概要を例示する図である。
【図２】実施形態１の履歴出力装置の構成を例示する図である。
【図３】履歴出力装置を実現するための計算機を例示する図である。
【図４】実施形態１の履歴出力装置の利用環境を例示する図である。
【図５】実施形態１の履歴出力装置によって実行される処理の流れを例示するフローチャートである。
【図６】イベント履歴をテーブル形式で例示する図である。
【図７】出力情報を例示する図である。
【図８】実施形態２の履歴出力装置の概要を例示する図である。
【図９】実施形態２の履歴出力装置によって実行される処理の流れを例示するフローチャートである。
【図１０】コマンド等の種類に応じて出力対象の期間が異なるケースを例示する図である。
【図１１】所定期間を延長するケースを例示する図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００１５】
＜概要＞
図１は、本実施形態の履歴出力装置２０００の動作の概要を例示する図である。図１は、履歴出力装置２０００の動作についての理解を容易にするための概念的な説明を表す図であり、履歴出力装置２０００の動作を具体的に限定するものではない。
【００１６】
履歴出力装置２０００は、対象のコンピュータシステム（対象システム１００）において発生した異常イベントを表す情報である異常イベント履歴１０を取得する。異常イベントとは、１）正常なプログラムならば発生させないイベントや、２）正常にプログラムを使用したならば発生しないイベントである。１）に当てはまる異常イベントとしては、例えば、或るプログラムが正常な状態であればアクセスしないファイルへアクセスしたことを表すイベントや、或るプログラムが正常な状態であれば通信しない通信相手と通信したことを表すイベントなどがある。例えばマルウエアに感染したプログラムは、そのプログラムが正常な状態であればアクセスしないファイルへアクセスしたりする。そのため、そのような動作を表すイベントが異常イベントとして検出される。
【００１７】
２）に当てはまる異常イベントは、例えば、プログラムの正しい使用方法が定められている場合において、プログラムの使用者がその使用方法に反してプログラムを使用した結果として発生するイベントである。例えば、ping コマンドの正しい使用方法として、「特定のマシン（例えばサーバマシン）に対して ping コマンドを送信して、そのマシンが動作していることを確かめる」という使用方法を定めておく。この場合に、マシンの管理者が誤って、特定のマシン以外のマシンを宛先として ping コマンドを使用したとする。これによって発生するイベント（特定のマシン以外のマシンとの通信を表すイベント）は、上述した ping コマンドの正しい使用方法に反しているため、異常なイベントとして扱われる。
【００１８】
対象システム１００は、１つ以上の任意の端末１１０で構成される。端末１１０は、物理マシンであってもよいし、仮想マシンであってもよい。物理マシンは、PC（Personal Computer）などの据え置き型のマシンであってもよいし、スマートフォンなどの可搬型のマシンであってもよい。イベントは、例えば、対象システムに含まれるマシンで動作するプロセスが行った活動（ファイルや他のプロセスへのアクセスなど）を表す。
【００１９】
履歴出力装置２０００は、対象システム１００で発生した異常イベントの種類に基づいて、異常イベント履歴１０の出力（例えばディスプレイ装置への表示）を制御する。ここで、異常イベントの種類には、少なくとも第１種という種類が存在するとする。また、異常イベントには、第１種に属するものと属さないものが存在するとする。第１種の異常イベントは、例えば、重大な異常を表す蓋然性が高い異常イベントである。より具体的には、例えば第１種の異常イベントは、安全性が担保されていないコマンドやプログラムの実行によって生じたイベントである。以下、「コマンドやプログラム」のことを「コマンド等」とも表記する。
【００２０】
履歴出力装置２０００は、異常イベント履歴１０を取得したら、その異常イベント履歴１０によって表される異常イベントの種類を特定する。特定した異常イベントの種類が第１種である場合、履歴出力装置２０００は、その異常イベントが発生した端末１１０を、出力対象端末として特定する。さらに、履歴出力装置２０００は、その異常イベントが発生した時点以前に、その異常イベントが発生した端末１１０と通信を行っていた他の端末１１０も、出力対象端末として特定する。履歴出力装置２０００は、取得した異常イベント履歴１０によって表される異常イベントが出力対象端末で発生したものである場合に、その異常イベントに関する情報（以下、出力情報）を出力する。
【００２１】
＜作用効果＞
システムにおける重大な異常の見逃しを防ぐためには、重大な異常を表す蓋然性が高いイベントだけでなく、重大な異常を表す蓋然性がある程度低いイベントについても、異常イベントとして検出しておく必要がある。一方で、このように重大な異常を表す蓋然性がある程度低い異常イベントに関する情報についても無条件に出力（例えば、管理者等へ出力）してしまうと、異常イベントに関する情報が大量に出力されることになってしまい、情報の扱いが難しくなってしまう。その結果、重大な異常の見逃しが発生しやすい、異常イベントを解析する解析者の作業負担が大きい、解析作業に要する時間が長いといった問題が生じうる。
【００２２】
このような問題の発生を防ぐためには、出力される情報をある程度絞り込むことが好適である。この点、履歴出力装置２０００によれば、端末１１０で発生した異常イベントに関する情報のうち、第１種に属さない異常イベントについての情報は、第１種の異常イベントが検出されるまで出力されない。そのため、例えば、重大な異常を表す蓋然性が高い異常イベントを第１種のイベントとして扱うことにより、重大な異常を表す蓋然性がある程度低い異常イベントに関する情報は、重大な異常を表す蓋然性が高い異常イベントが発生するまで出力されない。一方で、重大な異常を表す蓋然性が高い異常イベントが発生した後は、重大な異常を表す蓋然性がある程度低い異常イベントについての情報も出力されるようになる。このように、重大な異常を表す蓋然性がある程度低い異常イベントに関する情報は、無条件に出力されるわけでなく、重大な異常を表す蓋然性が高い異常イベントの発生に付随して出力されるようになる。
【００２３】
この手法によれば、異常イベントに関する情報が無条件に出力される場合と比較し、出力される情報が適切に絞り込まれるため、異常イベントに関する情報の扱いが容易になる。そのため、重大な異常の見逃しが発生しにくくなる（すなわち、解析精度の向上）、異常イベントを解析する解析者の作業負担が軽減される、及び解析作業に要する時間が削減されるといった効果が生じる。
【００２４】
例えば安全性が担保されていないコマンド等の実行によって生じる異常イベントを第１種の異常イベントとして扱うとする。この場合、安全性が担保されている異常イベントに関する情報は、安全性が担保されていない異常イベントの発生に付随して出力されるようになる。こうすることで、安全性が担保されている異常イベントについての情報が適切に絞り込まれて出力されるため、異常イベントに関する情報の扱いが容易になる。
【００２５】
本発明が特に効果的なケースの例として、OS（Operating System）の標準コマンドを使用したサイバー攻撃の解析が挙げられる。ここでいう、OS の標準コマンドとは、OS をインストールした際に一緒にインストールされる所定のプログラム（例えばシェルプログラム）によって提供されるコマンドである。例えば、端末１１０にインストールされたマルウエアが、端末１１０上で動作している OS が提供している標準コマンドを利用して種々の活動（探索活動や感染拡大など）を行うとする。このようなサイバー攻撃を解析するためには、標準コマンドの実行によって生じた異常イベントに関する情報も出力する必要がある。
【００２６】
一方で、標準コマンドの実行によって生じた異常イベントの全てがサイバー攻撃を表すわけでない。例えば、ユーザが誤った使用方法で標準コマンドを実行してしまうケースなどが考えられる。そのため、標準コマンドの実行によって生じた異常イベントに関する情報を全て出力してしまうと、上述のサイバー攻撃に関する情報の解析が難しくなるという問題が生じる。
【００２７】
そこで例えば、履歴出力装置２０００において、サイバー攻撃を表す蓋然性が高い異常イベントを、第１種の異常イベントとして扱うようにする。例えば、「文書作成ソフトウエアがパスワードファイルを読み出す」などといったイベントを、第１種の異常イベントとして扱う。一方で、標準コマンドの実行によって生じた異常イベントについては、サイバー攻撃を表す蓋然性がある程度低いと考えられるため、第１種の異常イベントとしては扱わないようにする。こうすることで、標準コマンドの実行によって生じた異常イベントについては、サイバー攻撃を表す蓋然性が高い異常イベントに付随するもののみが出力されるようになる。よって、サイバー攻撃に関する異常イベントの情報が適切に絞り込まれて出力されるため、サイバー攻撃に関する情報の扱いが容易になる。そのため、サイバー攻撃に関する解析の精度が向上する、サイバー攻撃の解析を行う解析者の作業負担が軽減される、及びサイバー攻撃の解析作業に要する時間が削減されるといった効果が生じる。
【００２８】
以下、本実施形態の履歴出力装置２０００についてさらに詳細に説明する。
【００２９】
＜履歴出力装置２０００の機能構成の例＞
図２は、実施形態１の履歴出力装置２０００の構成を例示する図である。履歴出力装置２０００は、取得部２０２０、種類判定部２０４０、端末特定部２０６０、及び出力部２０８０を有する。取得部２０２０は異常イベント履歴１０を取得する。種類判定部２０４０は、取得した異常イベント履歴１０によって表される異常イベントの種類が所定の種類（第１種）であるか否かを判定する。端末特定部２０６０は、特定した異常イベントの種類が所定の種類である場合に、その異常イベントが発生した端末１１０、及びその異常イベントが発生した時点以前にその端末１１０と通信していた他の端末１１０を、出力対象端末として特定する。出力部２０８０は、取得した異常イベント履歴１０によって表される異常イベントが出力対象端末で発生したものである場合に、その異常イベントに関する出力情報を出力する。
【００３０】
＜履歴出力装置２０００のハードウエア構成＞
履歴出力装置２０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。以下、履歴出力装置２０００の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
【００３１】
図３は、履歴出力装置２０００を実現するための計算機１０００を例示する図である。計算機１０００は任意の計算機である。例えば計算機１０００は、Personal Computer（PC）、サーバマシン、タブレット端末、又はスマートフォンなどである。計算機１０００は、履歴出力装置２０００を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
【００３２】
計算機１０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０を有する。バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、入出力インタフェース１１００、及びネットワークインタフェース１１２０が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ１０４０などを互いに接続する方法は、バス接続に限定されない。プロセッサ１０４０は、CPU（Central Processing Unit）、GPU（Graphics Processing Unit）、又は FPGA（Field-Programmable Gate Array）などのプロセッサである。メモリ１０６０は、RAM（Random Access Memory）などを用いて実現される主記憶装置である。ストレージデバイス１０８０は、ハードディスクドライブ、SSD（Solid State Drive）、メモリカード、又は ROM（Read Only Memory）などを用いて実現される補助記憶装置である。ただし、ストレージデバイス１０８０は、RAM など、主記憶装置を構成するハードウエアと同様のハードウエアで構成されてもよい。
【００３３】
入出力インタフェース１１００は、計算機１０００と入出力デバイスとを接続するためのインタフェースである。ネットワークインタフェース１１２０は、計算機１０００を通信網に接続するためのインタフェースである。この通信網は、例えば LAN（Local Area Network）や WAN（Wide Area Network）である。ネットワークインタフェース１１２０が通信網に接続する方法は、無線接続であってもよいし、有線接続であってもよい。
【００３４】
ストレージデバイス１０８０は、履歴出力装置２０００の機能構成部を実現するプログラムモジュールを記憶している。プロセッサ１０４０は、これら各プログラムモジュールをメモリ１０６０に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
【００３５】
＜利用環境の例＞
図４は、実施形態１の履歴出力装置２０００の利用環境を例示する図である。図４において、対象システム１００には、複数の端末１１０が含まれている。端末１１０では、種々のコマンド等が実行される。端末１１０では、コマンド等の実行によって発生したプロセスの動作を表すイベントの履歴が記録される。この履歴を、イベント履歴２０と呼ぶ。イベント履歴２０は、異常検知装置１２０に収集される。イベント履歴２０の収集は、例えば、端末１１０がイベント履歴２０を定期的に又はリアルタイムで異常検知装置１２０へ送信することで実現される。
【００３６】
異常検知装置１２０は、イベント履歴２０によって表されるイベントが、異常イベントであるか否かを判定する。そして、イベント履歴２０によって表されるイベントが異常イベントである場合、そのイベント履歴２０は、異常イベント履歴１０として扱われる。
【００３７】
例えば、対象システム１００で（対象システム１００に含まれる端末１１０で）発生する正常なイベントを定義したモデルを予め生成しておく。異常検知装置１２０は、各イベント履歴２０に示されるイベントが上記モデルから逸脱しているか否かを判定する。異常検知装置１２０は、上記モデルから逸脱しているイベントを、異常イベントとして検知する。なお、正常なイベントのモデルを生成する技術や、正常なイベントのモデルから逸脱したイベントを異常イベントとして検出する技術には、既存の技術を利用することができる。
【００３８】
履歴出力装置２０００は、異常イベント履歴１０を取得して、取得した異常イベント履歴１０を処理する。ここで、履歴出力装置２０００がイベント履歴２０のうち、異常イベント履歴１０を取得する方法は様々である。例えば異常検知装置１２０は、イベント履歴２０に対し、異常イベント履歴１０であるか否かを示すフラグを付加して記憶装置に記憶させる。取得部２０２０は、この記憶装置に記憶されているイベント履歴２０のうち、異常イベント履歴１０であることを示すフラグに対応づけられているものを取得する。その他にも例えば、異常検知装置１２０が異常イベント履歴１０を取得部２０２０へ出力（例えば送信）してもよい。取得部２０２０は、異常検知装置１２０によって出力された異常イベント履歴１０を取得する。
【００３９】
異常検知装置１２０は、履歴出力装置２０００と別途設けられてもよいし、履歴出力装置２０００の中に設けられてもよい。後者の場合、履歴出力装置２０００は、イベント履歴２０を収集して、各イベント履歴２０が異常イベントを表すか否かを判定する。そして、履歴出力装置２０００は、異常イベントを表すイベント履歴２０を、異常イベント履歴１０として扱う。なお、図４では、異常検知装置１２０と履歴出力装置２０００が別々に設けられている。
【００４０】
＜処理の流れ＞
図５は、実施形態１の履歴出力装置２０００によって実行される処理の流れを例示するフローチャートである。取得部２０２０は異常イベント履歴１０を取得する（Ｓ１０２）。種類判定部２０４０は、取得した異常イベント履歴１０によって表される異常イベントの種類が第１種であるか否かを判定する（Ｓ１０４）。異常イベントの種類が第１種でない場合（Ｓ１０４：ＮＯ）、図５の処理はＳ１１０に進む。異常イベントの種類が第１種である場合（Ｓ１０４：ＹＥＳ）、端末特定部２０６０は、その異常イベントが発生した端末１１０と、その異常イベントが発生した時刻以前にその端末１１０と通信していた他の端末１１０を、出力対象端末として特定する（Ｓ１０６）。
【００４１】
出力部２０８０は、取得した異常イベント履歴１０によって表される異常イベントが出力対象端末で発生したものである場合、その異常イベントについての出力情報を出力する（Ｓ１０８）。異常イベント履歴１０によって示される異常イベントの種類が第１種である場合（Ｓ１０４：ＹＥＳ）、その異常イベントは必ず出力対象端末で発生したものであるため、出力部２０８０は、その異常イベントに関する出力情報を出力する（Ｓ１０８）。
【００４２】
一方、異常イベント履歴１０によって示される異常イベントの種類が第１種でない場合（Ｓ１０４：ＮＯ）、出力部２０８０は、その異常イベントが出力対象端末で発生したものであるか否かを判定する（Ｓ１１０）。異常イベントが出力対象端末で発生したものである場合（Ｓ１１０：ＹＥＳ）、出力部２０８０は、その異常イベントについての出力情報を出力する（Ｓ１０８）。一方、異常イベントが出力対象端末で発生したものでない場合（Ｓ１１０：ＮＯ）、出力部２０８０は、その異常イベントについての出力情報を出力しない。
【００４３】
ここで、履歴出力装置２０００は複数の異常イベント履歴１０を取得し、異常イベントの発生時刻が早い異常イベント履歴１０から順に、図５に示す一連の処理を行う。そのため、或る端末１１０が出力対象端末として特定された後は、その端末１１０で発生した異常イベントを表す各異常イベント履歴１０が出力部２０８０によって出力されるようになる。
【００４４】
ただし、或る端末１１０が出力対象端末として扱われるようになった後、履歴出力装置２０００は、所定の条件に基づいて、その端末１１０を出力対象端末として扱わないようにしてもよい。例えば、或る端末１１０が出力対象端末として特定された後、その端末１１０で第１種の異常イベントが所定時間以上発生しなかったら、その端末１１０を出力対象端末として扱わないようにする。
【００４５】
その他にも例えば、履歴出力装置２０００は、出力対象端末として扱われている端末１１０の中から、出力対象端末として扱わないようにする端末１１０を選択する入力操作を、ユーザから受け付けてもよい。例えば対象システム１００の管理者が、或る端末１１０について出力された異常イベント履歴１０を閲覧・解析した結果、その端末１１０については問題がない（異常イベント履歴１０を出力しなくてもよい）と判断したとする。この場合、その管理者は問題がないと判断した端末１１０を出力対象端末から除外する入力操作を行う。
【００４６】
＜イベント履歴２０について＞
イベント履歴２０は、過去の或る時点において対象システム１００で（対象システム１００に含まれる端末１１０で）発生したイベントに関する情報である。例えばイベント履歴２０は、イベントが発生した端末１１０の識別情報、イベントの発生時刻、及びイベントの内容を対応づけて示す。
【００４７】
例えばイベント履歴２０は、対象システム１００で動作するプロセスの活動の履歴を表す。例えばプロセスの活動は、システムコール単位で記録される。或るプロセスが他のプロセスを客体として活動する場合、これらのプロセスは互いに同一の OS（Operating System）上で動作するものであってもよいし、互いに異なる OS 上で動作するものであってもよい。後者の例としては、例えば、ソケットインタフェースを利用することで、或るプロセスが他の OS 上で動作する別のプロセスと通信を行うことが考えられる。
【００４８】
イベント履歴２０は、１つ以上の項目に関する情報を示す。ここで、例えばイベントは、イベントが発生した端末１１０の識別情報、イベントの主体、イベントの客体、活動内容、及び発生時刻という５つの要素を表す情報によって識別される。そこで例えば、イベント履歴２０は、大別して、端末１１０の識別情報、主体を表す主体情報、客体を表す客体情報、活動の内容を表す内容情報、及び発生時刻という５つの項目で構成される。
【００４９】
端末１１０の識別情報は、端末１１０を識別できる任意の情報である。例えば、端末１１０のネットワークアドレス（IP アドレスや MAC アドレス）や UUID（Universally Unique Identifier）などを端末１１０の識別情報として利用できる。
【００５０】
主体情報は、例えば、その主体の種類及び識別情報である。主体の種類は、例えば、プロセス又はソケットなどである。主体がプロセスである場合、主体情報には、そのプロセスを識別する情報が含まれる。以下、プロセスを識別する情報をプロセス識別情報と呼ぶ。具体的には、プロセス識別情報は、プロセスＩＤ（Identifier）を含む。ただし、複数のスレッドが動作するプロセスについてのプロセス識別情報は、プロセスＩＤに加え、スレッドＩＤをさらに含む。
【００５１】
また、プロセス識別情報は、プロセスの実行ファイルに関する情報をさらに含む。プロセスの実行ファイルに関する情報とは、例えば、実行ファイルの名称やパス、実行ファイルのハッシュ値、実行ファイルのデジタル署名、又は実行ファイルで実現されるアプリケーションの名称などである。
【００５２】
主体がソケットである場合、例えば主体情報には、ソケットに割り当てられた識別子が含まれる。
【００５３】
客体情報は、例えば、その客体の種類及び識別情報である。客体の種類は、例えば、プロセス、ファイル、又はソケットなどである。客体がプロセスである場合、客体情報にはそのプロセスのプロセス識別情報が含まれる。
【００５４】
客体がファイルである場合、客体情報には、そのファイルを識別する情報（以下、ファイル識別情報）が含まれる。ファイル識別情報は、例えばファイルの名称やパスなどである。また、客体がファイルである場合、客体情報には、そのファイルのハッシュ値や、ファイルシステムの識別子とファイルシステム上でのファイルを構成するディスクブロックの識別子（inode 番号やオブジェクトID）の組み合わせなどが含まれていてもよい。
【００５５】
客体がソケットである場合、例えば客体情報には、ソケットに割り当てられた識別子が含まれる。
【００５６】
内容情報は、例えば、種々ある活動内容に割り当てられた識別情報である。例えば、「指定されたコマンドを実行する」、「プロセスを起動する」、「プロセスを停止する」、「ファイルをオープンする」、「ファイルからデータを読み込む」、「ファイルにデータを書き込む」、「ソケットをオープンする」、「ソケットからデータを読み込む」、「ソケットにデータを書き込む」、及び「ソケットから別のソケットへデータを送信する」などといった活動の内容に、互いに異なる識別子を割り当てておく。なお、ソケットに対するアクセスは、そのソケットに対応づけられた他の装置へのアクセスを意味する。
【００５７】
ここで、内容情報がコマンドの実行を表す場合には、実行されるコマンドの識別情報も内容情報に含める。例えば、ls というコマンドが実行されたことを表すイベント履歴２０では、内容情報として、「活動内容の識別情報：コマンドの実行、コマンドの識別情報：ls」などと示すようにする。
【００５８】
なお、コマンドの識別は、内容情報ではなく主体情報や客体情報を用いて行われてもよい。例えば、或るコマンドの実行が１つのプログラムの実行によって実現される場合、そのプログラムの識別情報が主体情報又は客体情報に示されているイベントを、そのコマンドの実行を表すコマンドとして扱うことができる。この場合、コマンドの識別情報は内容情報に含まれなくてもよい。
【００５９】
システムコール単位でイベントが記録される場合、内容情報は、システムコールの識別情報を示してもよい。システムコールの識別情報は、例えば、システムコール名やシステムコール番号である。また、内容情報には、システムコールに与えた引数の内容（引数自体の値や、引数として与えたポインタが指し示すメモリ領域に格納されているデータ）など、システムコールがどのような条件下で実行されたかを表す情報がさらに示されてもよい。
【００６０】
図６は、イベント履歴２０をテーブル形式で例示する図である。以下、図６のテーブルをイベントテーブル２００と呼ぶ。イベントテーブル２００の各レコードは、１つのイベント履歴２０を表す。イベントテーブル２００は、大別して、端末識別情報２０１、主体情報２０２、客体情報２０４、内容情報２０６、及び発生時刻２０７という５つの項目を含む。主体情報２０２は、プロセスＩＤ２０８、スレッドＩＤ２０９、及びパス２１０という３つの項目を含む。客体情報２０４は、種類２１２及び識別情報２１４という２つの項目を含む。発生時刻２０７は、イベントが発生した時刻を示す。
【００６１】
ここで、イベント履歴２０は、対象システム上におけるプロセスの活動を記録することで生成される。プロセスの活動を記録する技術には、既存の技術を利用することができる。
【００６２】
＜異常イベント履歴１０について＞
異常イベント履歴１０は、異常イベントを表すイベント履歴２０である。異常イベント履歴１０には、イベント履歴２０の内容に加え、異常の内容（どのような異常が発生したのか）を示す情報が含まれてもよい。
【００６３】
イベント履歴２０が異常イベントを示すか否かは、例えば前述した異常検知装置１２０によって判定される。ここで、イベントの履歴によって表されるイベントが異常なイベントであるか否かを判定する方法は、前述した通りである。
【００６４】
＜異常イベント履歴１０の取得：Ｓ１０２＞
取得部２０２０は異常イベント履歴１０を取得する（Ｓ１０２）。取得部２０２０が異常イベント履歴１０を取得する方法は様々である。例えば取得部２０２０は、異常検知装置１２０によって送信された異常イベント履歴１０を受信することで、異常イベント履歴１０を取得する。その他にも例えば、取得部２０２０は、異常イベント履歴１０が記憶されている記憶装置にアクセスすることで、異常イベント履歴１０を取得する。なお、取得部２０２０が異常イベント履歴１０を取得するより具体的な方法については、図４を用いて前述した通りである。
【００６５】
＜異常イベントの種類について＞
例えば第１種の異常イベントは、重要な異常を表す蓋然性が高い異常イベントである。重要な異常を表す蓋然性が高い異常イベントの例としては、例えば、安全性が担保されていないコマンド等の実行によって生じる異常イベントがある。ここで、コマンド等について、安全性が担保されているものとそうでないものを区別する基準には、様々なものを採用できる。まず、プログラムについて説明する。例えば、対象システム１００の管理者によって安全であると判断されたプログラムを、安全性が担保されているプログラムとして扱う。その他にも例えば、OS をインストールした際に一緒にインストールされるプログラムを、安全性が担保されているプログラムとして扱う。その他にも例えば、所定の認証を受けているプログラムを、安全性が担保されているプログラムとして扱う。所定の認証を受けているプログラムは、例えば、所定の認証機関による認証を受けたことを証明する電子署名が付与されたプログラムである。
【００６６】
その他にも例えば、プログラムが安全であるか否かは、対象システム１００における利用者の多さに基づいて決められてもよい。例えば、対象システム１００に含まれる端末１１０の総数に対し、或るプログラムがインストールされている端末１１０の数の割合が所定値以上である場合、そのプログラムを、安全性が担保されているプログラムとして扱う。その他にも例えば、端末１１０にグループが定められている場合、或るプログラムがインストールされている端末１１０の数の、その端末１１０が属するグループに含まれる端末１１０の総数に対する割合が所定値以上である場合に、そのプログラムを、安全性が担保されているプログラムとして扱う。
【００６７】
コマンドの安全性については、例えば、安全性が担保されているプログラムによって提供されているコマンドを、安全性が担保されているコマンドとして扱うことができる。例えば、前述した標準コマンドを、安全性が担保されているコマンドとして扱うことが考えられる。すなわち、標準コマンドの実行によって発生した異常イベントは第１種の異常イベントとして扱わないようにする。こうすることで、標準コマンドの実行によって発生した異常イベントに関する情報は、第１種の異常イベントが検出されるまで出力されないようになる。
【００６８】
ただし、コマンドの安全性は、前述した基準とは別の基準で判断されてもよい。例えば、対象システム１００の管理者によって安全であると判断されたコマンドを、安全性が担保されたコマンドとして扱う。
【００６９】
＜異常イベントの種類の判定：Ｓ１０４＞
種類判定部２０４０は、異常イベント履歴１０によって表される異常イベントの種類が第１種であるか否かを判定する（Ｓ１０４）。例えば種類判定部２０４０は、異常イベントが第１種に分類される条件を示す情報（以下、種類特定情報）を利用する。種類特定情報は、種類判定部２０４０からアクセス可能な記憶装置に予め記憶させておく。
【００７０】
前述した第１種の異常イベントは、例えば前述したように、安全性が担保されていないコマンド等の実行によって生じた異常イベントである。そこで例えば、種類特定情報は、安全性が担保されているコマンド等の識別情報を示す。そして、種類特定情報に示されていないコマンド等の実行によって生じた異常イベントを、第１種のイベントとして扱う。
【００７１】
プログラムの識別情報は、例えば、そのプログラムの実行ファイルの名称やパスなどである。異常イベント履歴１０において、実行されたプログラムの識別情報は、前述した主体情報に含まれている。
【００７２】
コマンドの識別情報は、例えば、コマンドの名称である。異常イベント履歴１０において、実行されたコマンドの識別情報は、前述した主体情報、客体情報、又は内容情報に含まれている。ただし、同じ名称のコマンドが互いに異なるプログラム（例えば、互いに異なるシェル）によって提供されるケースもある。この場合、コマンドの識別情報は、そのコマンドを提供するプログラムの識別情報とそのコマンドの名称などとの組み合わせを、コマンドの識別情報として利用する。この場合、異常イベント履歴１０において、実行されたコマンドは、主体情報に示されるプログラムの識別情報と、内容情報に示されるコマンドの名称などとの組み合わせによって特定される。
【００７３】
種類判定部２０４０は、異常イベント履歴１０を種類特定情報と比較することにより、異常イベント履歴１０によって表される異常イベントの種類が第１種の異常イベントであるか否かを判定する。例えば種類判定部２０４０は、異常イベント履歴１０の主体情報によって特定されるプログラムが、種類特定情報に示されているプログラムのいずれとも合致しない場合、その異常イベント履歴１０によって表される異常イベントの種類が第１種の異常イベントであると判定する。一方、異常イベント履歴１０の主体情報によって特定されるプログラムが、種類特定情報に示されているプログラムのいずれかと合致する場合、種類判定部２０４０は、その異常イベント履歴１０によって表される異常イベントの種類が第１種の異常イベントでないと判定する。
【００７４】
その他にも例えば、種類判定部２０４０は、異常イベント履歴１０によって特定されるコマンドが、種類特定情報に示されているコマンドのいずれとも合致しない場合、その異常イベント履歴１０によって表される異常イベントの種類が第１種の異常イベントであると判定する。一方、異常イベント履歴１０によって特定されるコマンドが、種類特定情報に示されているコマンドのいずれかと合致する場合、種類判定部２０４０は、その異常イベント履歴１０によって表される異常イベントの種類が第１種の異常イベントでないと判定する。
【００７５】
＜出力対象端末の特定：Ｓ１０６＞
端末特定部２０６０は、出力対象端末を特定する（Ｓ１０６）。具体的には、異常イベント履歴１０によって表される異常イベントの種類が第１種であった場合に、その異常イベントが発生した端末１１０と、その異常イベントが発生した時刻以前にその端末と通信していた端末１１０が、出力対象端末として特定される。以下、記載を明瞭にするため、前者を第１端末と呼び、後者を第２端末と呼ぶ。
【００７６】
第１端末の識別情報は、取得部２０２０によって取得された異常イベント履歴１０によって示されている。そのため、端末特定部２０６０は、異常イベント履歴１０によって表される異常イベントの種類が第１種であった場合、その異常イベント履歴１０によって示されている端末１１０の識別情報によって、出力対象端末の１つ（第１端末）を特定する。
【００７７】
第２端末は、端末１１０同士の通信の履歴を用いて特定する。例えば端末１１０が他の端末１１０と通信を行ったら、その通信を表すイベントがイベント履歴２０として記録されるようにしておく。端末特定部２０６０は、イベント履歴２０が記録されているデータベースを検索することで、第２端末の識別情報を取得する。具体的には、「イベントの発生時刻が、取得部２０２０によって取得された異常イベント履歴１０によって示されている異常イベントの発生時刻以前である」及び「通信元又は通信先の端末１１０の識別情報が、第１端末の識別情報である」という２つの条件の両方を満たすイベント履歴２０を検索する。この検索によって取得されたイベント履歴２０は、通信元又は通信先の一方に第１端末を示し、他方に第２端末を示す。そのため、端末特定部２０６０は、第２端末を特定することができる。
【００７８】
端末特定部２０６０は、上述した方法で特定した各出力対象端末の識別情報を記憶装置に記憶させる。こうすることで、出力対象端末の識別情報を後の処理で利用できるようにする。
【００７９】
なお、第１種の異常イベントが発生した時刻以前の期間の全てでは無く、第１種の異常イベントが発生した時刻以前の所定期間に第１端末と通信していた端末１１０のみを、第２端末として扱うようにしてもよい。この所定期間の長さは、端末特定部２０６０からアクセス可能な記憶装置に予め記憶させておく。
【００８０】
この所定期間の長さは、第１種の異常イベント全てで共通であってもよいし、第１種の異常イベントの種類に応じて異なっていてもよい。後者の場合、例えば、第１種の異常イベントの主体（プログラムやコマンドなど）の種類に応じて、所定期間の長さを定めておく。例えば、潜伏期間が長い（感染してから具体的な被害が生じるまでの期間が長い）マルウエアほど長い所定期間を設定する。潜伏期間が長いマルウエアとしては、例えば、機密情報を探索して搾取するようなマルウエアが挙げられる。一方で、潜伏期間が短い（感染してから具体的な被害が生じるまでの期間が短い）マルウエアとしては、例えば、ランサムウエアなどが挙げられる。
【００８１】
＜出力対象端末で発生した異常イベントであるか否かの判定：Ｓ１１０＞
出力部２０８０は、取得部２０２０によって取得された異常イベント履歴１０によって表される異常イベントが、出力対象端末で発生したものであるか否かを判定する（Ｓ１１０）。具体的には、出力部２０８０は、異常イベント履歴１０に示される端末１１０の識別情報が、いずれかの出力対象端末の識別情報と合致するか否かを判定する。異常イベント履歴１０に示される端末１１０の識別情報がいずれかの出力対象端末の識別情報と合致する場合、出力部２０８０は、異常イベントが出力対象端末で発生したものであると判定する（Ｓ１１０：ＹＥＳ）。一方、異常イベント履歴１０に示される端末１１０の識別情報がいずれの出力対象端末の識別情報とも合致しない場合、出力部２０８０は、異常イベントが出力対象端末で発生したものでないと判定する（Ｓ１１０：ＮＯ）。
【００８２】
＜異常イベント履歴１０の出力：Ｓ１０８＞
出力部２０８０は、取得部２０２０によって取得された異常イベント履歴１０によって表される異常イベントが出力対象端末で発生したものである場合（Ｓ１１０：ＹＥＳ）、その異常イベントに関する出力情報を出力する（Ｓ１０８）。出力情報は、取得した異常イベント履歴１０そのものであってもよいし、異常イベント履歴１０の内容に基づいて生成される情報であってもよい。例えば出力情報は、異常イベントの発生時刻、異常イベントが発生した端末１１０の識別情報、異常イベントを発生させたコマンド等の識別情報、及び異常の内容（どのような異常が発生したか）を含む。
【００８３】
図７は、出力情報を例示する図である。この例では、履歴出力装置２０００に接続されているディスプレイ装置に出力情報が出力されるケースを例示している。また、この例では前提として、プログラムＸは種類特定情報に示されていないプログラム（安全性が担保されていないプログラム）である一方、コマンドＡとコマンドＢは種類特定情報に示されているコマンド（安全性が担保されているコマンド）であるとする。さらに、端末ＡでプログラムＸが実行される前から、端末Ａと端末Ｂが通信を行っていたとする。
【００８４】
図７に示す出力情報の１行目には、端末Ａにおいて発生したプログラムＸの実行という異常イベントが示されている。プログラムＸは種類特定情報に示されていないため、端末Ａにおいて発生したプログラムＸの実行という異常イベントは、第１種の異常イベントであると判定される。そのため、この異常イベントに関する出力情報が出力される。なお、第１種の異常イベントの発生前にコマンドＡやコマンドＢの異常な実行が行われたとしても、その異常な実行についての出力は行われない。
【００８５】
上記プログラムＸの実行により、プログラムＸの実行が行われた端末Ａが出力対象端末として特定される。また、その発生時刻以前に端末Ａと通信していた端末Ｂも、出力対象端末として特定される。そこで出力部２０８０は、上記プログラムＸの実行という異常イベント以降に発生する各異常イベントについても、出力情報を出力する。その結果、コマンドＡやコマンドＢの異常実行についての出力情報が、ディスプレイ装置に追加で表示されていく。
【００８６】
なお、出力情報の出力先は、履歴出力装置２０００に接続されているディスプレイ装置に限定されない。例えば出力部２０８０は、所定の記憶されているログファイルに対して出力情報を出力（追記）してもよい。また、履歴出力装置２０００に接続されているディスプレイ装置以外のディスプレイ装置に、出力情報が表示されるようにしてもよい。例えば履歴出力装置２０００は、他の装置に対して出力情報を送信する。その結果、当該他の装置に接続されているディスプレイ装置において、出力情報が表示される。
【００８７】
＜変形例＞
履歴出力装置２０００は、別途の方法で出力対象端末をさらに増やしてもよい。例えば履歴出力装置２０００は、いずれかの出力対象端末と通信した端末１１０を、さらに出力対象端末として扱ってもよい。こうすることで、特定の異常（例えば、セキュリティ上の危険）が通信を介して伝播していく場合に、その異常の伝播を見逃さないようにすることができる。
【００８８】
［実施形態２］
図８は、実施形態２の履歴出力装置２０００の概要を例示する図である。図８は、履歴出力装置２０００の動作についての理解を容易にするための概念的な説明を表す図であり、履歴出力装置２０００の動作を具体的に限定するものではない。以下で特に説明する点を除き、実施形態２の履歴出力装置２０００は、実施形態１の履歴出力装置２０００と同様の機能を有する。
【００８９】
実施形態２の履歴出力装置２０００は、出力対象端末についてのみ異常イベント履歴１０が出力されるという点で、実施形態１の履歴出力装置２０００と共通する。
【００９０】
一方で、実施形態２の履歴出力装置２０００は、以下の点で実施形態１の履歴出力装置２０００と異なる。まず、実施形態２の履歴出力装置２０００では、少なくとも、第１種の異常イベントが発生した端末１１０（第１端末）を出力対象端末とすればよく、その端末と通信を行っていた端末１１０（第２端末）については、出力対象端末としなくてもよい。ただし、実施形態２の履歴出力装置２０００では、或る端末１１０が出力対象端末として特定されたら、その端末１１０において発生した異常イベントに関する異常イベント履歴１０を過去に遡って出力する。すなわち、或る端末１１０が出力対象端末として特定されたら、その特定以降にその端末１１０で発生する異常イベントに関する出力情報が出力されるようになるだけでなく、その端末１１０においてその特定よりも前に発生した異常イベントに関する出力情報も出力される。
【００９１】
＜作用効果＞
前述した様に、重大な異常を表す蓋然性が高いイベントだけでなく、重大な異常を表す蓋然性がある程度低いイベントについても異常イベントとして検出しておく必要がある一方で、異常イベントについて出力される情報をある程度絞り込むことが好適である。この点、本実施形態の履歴出力装置２０００によれば、端末１１０で発生した異常イベントに関する情報のうち、第１種に属さない異常イベントについての情報は、第１種の異常イベントが検出されるまで出力されない。ただし、第１種の異常イベントが端末１１０で発生したら、その発生前まで遡って、異常イベントに関する情報が出力される。よって、重大な異常を表す蓋然性がある程度低い異常イベントに関する情報は、無条件に出力されるわけでなく、重大な異常を表す蓋然性が高い異常イベントの発生に付随して出力されるようになる。
【００９２】
この手法によれば、異常イベントに関する情報が無条件に出力される場合と比較し、出力される情報が適切に絞り込まれるため、異常イベントに関する情報の扱いが容易になる。そのため、重大な異常の見逃しが発生しにくくなる（すなわち、解析精度の向上）、異常イベントを解析する解析者の作業負担が軽減される、及び解析作業に要する時間が削減されるといった効果が生じる。
【００９３】
なお、本実施形態の履歴出力装置２０００についても、特に効果的なケースの例として、OS の標準コマンドを使用したサイバー攻撃の解析が挙げられる。標準コマンドに起因する異常が発生したとしても、それ単体では、サイバー攻撃の一環で生じた異常であるのかどうかを判別することが難しい。しかし、サイバー攻撃を表す蓋然性が高い異常イベントが検出されたら、それ以前に発生した標準コマンドに起因する異常がサイバー攻撃に関連する蓋然性が高いと考えられる。
【００９４】
そこで、本実施形態の履歴出力装置２０００において、サイバー攻撃を表す蓋然性が高い異常イベントを第１種の異常イベントとして扱うようにする。こうすることで、サーバ攻撃を表す蓋然性が高い異常イベントが発生したら、それよりも前に発生した標準コマンドに起因する異常イベントに関する情報も出力されるようになる。よって、標準コマンドに起因する異常についての情報が、適切に絞り込まれて出力されるようになる。
【００９５】
以下、本実施形態の履歴出力装置２０００についてさらに詳細に説明する。
【００９６】
＜履歴出力装置２０００の機能構成の例＞
実施形態２の履歴出力装置２０００の機能構成は、実施形態１の履歴出力装置２０００の構成と同様に、図２で表される。ただし、実施形態２の端末特定部２０６０は、種類判定部２０４０によって特定された異常イベントの種類が第１種である場合に、その異常イベントが発生した端末１１０を出力対象端末として特定する。また、出力部２０８０は、その特定以降に出力対象端末で発生する異常イベントに関する出力情報を出力することに加え、その特定よりも前に出力対象端末で生じた異常イベントに関する出力情報も出力する。
【００９７】
＜ハードウエア構成の例＞
実施形態２の履歴出力装置２０００のハードウエア構成は、例えば、実施形態１の履歴出力装置２０００のハードウエア構成と同様に、図３で表される。ただし、実施形態２の履歴出力装置２０００のストレージデバイス１０８０には、実施形態２の履歴出力装置２０００の機能を実現するプログラムモジュールが記憶される。
【００９８】
＜処理の流れ＞
図９は、実施形態２の履歴出力装置２０００によって実行される処理の流れを例示するフローチャートである。取得部２０２０は異常イベント履歴１０を取得する（Ｓ２０２）。種類判定部２０４０は、取得した異常イベント履歴１０によって表される異常イベントの種類が第１種であるか否かを判定する（Ｓ２０４）。異常イベントの種類が第１種でない場合（Ｓ２０４：ＮＯ）、図９の処理はＳ２１０に進む。異常イベントの種類が第１種である場合（Ｓ２０４：ＹＥＳ）、端末特定部２０６０は、その異常イベントが発生した端末１１０を出力対象端末として特定する（Ｓ２０６）。出力部２０８０は、出力対象端末として特定された端末１１０について、その特定よりも前にその端末１１０で生じた異常イベントに関する出力情報を出力する（Ｓ２０７）。
【００９９】
出力部２０８０は、取得した異常イベント履歴１０によって表される異常イベントが出力対象端末で発生したものである場合、その異常イベントについての出力情報を出力する（Ｓ２０８）。異常イベント履歴１０によって示される異常イベントの種類が第１種である場合（Ｓ２０４：ＹＥＳ）、その異常イベントは必ず出力対象端末で発生したものであるため、出力部２０８０は、その異常イベントに関する出力情報を出力する（Ｓ２０８）。
【０１００】
一方、異常イベント履歴１０によって示される異常イベントの種類が第１種でない場合（Ｓ２０４：ＮＯ）、出力部２０８０は、その異常イベントが出力対象端末で発生したものであるか否かを判定する（Ｓ２１０）。異常イベントが出力対象端末で発生したものである場合（Ｓ２１０：ＹＥＳ）、出力部２０８０は、その異常イベントについての出力情報を出力する（Ｓ２０８）。一方、異常イベントが出力対象端末で発生したものでない場合（Ｓ２１０：ＮＯ）、出力部２０８０は、その異常イベントについての出力情報を出力しない。
【０１０１】
＜過去の異常イベントに関する出力情報を出力する条件＞
出力部２０８０は、出力対象端末として特定された端末１１０について、その特定よりも前にその端末１１０で生じた異常イベントに関する出力情報を出力する（Ｓ２０７）。ここで、出力部２０８０は、上記特定よりも前の全ての期間で発生した異常イベントを出力対象としてもよいし、上記特定よりも前の所定期間内に発生した異常イベントのみを出力対象としてもよい。後者の場合、出力部２０８０は、出力対象端末として特定された端末１１０で発生した異常イベントに関する異常イベント履歴１０の中から、発生時刻がその特定よりも前の所定期間（その特定時刻を終点とする所定の長さの期間）内に含まれるものを特定する。そして、出力部２０８０は、特定した異常イベント履歴１０について、出力情報を出力する。
【０１０２】
この所定期間の長さは、全ての異常イベントで共通であってもよいし、異常イベントに応じて異なっていてもよい。後者の場合、例えば、異常イベントを発生させたコマンド等の種類に応じて、所定期間の長さを定める。そのために、コマンド等の種類に対して所定期間の長さを対応づけた情報を、予め記憶装置に記憶させておく。
【０１０３】
コマンド等の種類には、種々の種類を定めることができる。例えば、マルウエアの活動には、初期調査、探索活動、及び感染拡大などといった種類の活動が考えられる。そこで、コマンド等の種類として、初期調査に利用されるコマンド等、探索活動に利用されるコマンド等、及び感染拡大に利用されるコマンド等などといった種類を定めておく。そして、これらの種類の識別情報と、その種類に分類されるコマンド等の識別情報とを対応づけた情報を用意しておく。履歴出力装置２０００は、この情報を利用して、各コマンド等の種類を把握する。
【０１０４】
図１０は、コマンド等の種類に応じて出力対象の期間が異なるケースを例示する図である。図１０では、出力する期間が長い順に、初期調査用のコマンド等、探索活動用のコマンド等、感染拡大用のコマンド等となっている。このようにする理由は、マルウエアの活動が、初期調査の活動、探索活動、感染拡大の活動の順に行われることが多いためである。
【０１０５】
このようにコマンド等の種類に応じて出力対象の期間を変えることにより、過去に発生した異常イベントについての出力を適切に制限することができる。すなわち、検出された第１種の異常イベントとの関連性が高いと考えられる過去の異常イベントが適切に絞り込まれるため、検出された第１種の異常イベントとの関連性が低い異常イベントまでもが出力対象となってしまうことを防ぎつつ、検出された第１種の異常イベントとの関連性が高い異常イベントが出力対象から外れてしまうことも防ぐことで、解析精度の向上や解析作業の負担削減を実現できる。
【０１０６】
＜所定期間の延長＞
上記所定期間の中で異常イベントが発生していたら、その所定期間を過去に向かってさらに長くしてもよい（所定期間を延長してもよい）。図１１は、所定期間を延長するケースを例示する図である。図１１では、端末Ａにおいて、時刻 t3 で第１種の異常イベントＣが発生している。そのため、出力部２０８０は、時刻 t3 よりも過去に遡って、端末Ａで発生した異常イベントに関する出力情報の出力を行う。この例では、所定期間 P1（t2 から t3）に発生した異常イベントを出力対象とする。ここで、期間 P1 において、端末Ａで異常イベントＢが発生している。そのため、異常イベントＢに関する出力情報が出力される。
【０１０７】
また、期間 P1 内で異常イベントが発生していたため、さらに過去に遡って出力情報の出力が行われる。具体的には、期間 P1 の長さをさらに長くした期間 P2（t1 から t3）を対象として、出力情報の出力が行われる。例えば図１１の例では、期間 P2 において、端末Ａで異常イベントＡが発生している。そのため、異常イベントＡを表す出力情報が出力される。
【０１０８】
なお、期間 P2 でも異常イベントが発生しているため、期間 P2 よりもさらに過去の期間に遡って、出力情報の出力が行われてもよい（図示せず）。例えば出力部２０８０は、「遡った期間の中で異常イベントが発生していたら、さらに過去の期間まで遡る（期間の長さをさらに長くする）」という処理を繰り返す。すなわち、「遡った期間において異常イベントが発生していない」という状況になるまで、繰り返し過去の期間に遡ることとなる。ただし、遡る回数（期間の長さを延長する回数）などに上限を設けてもよい。
【０１０９】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。例えば、実施形態１における各出力対象端末について、実施形態２で説明したように、過去に遡った出力情報の出力が行われてもよい。すなわち、第１種の異常イベントが発生した端末と、その発生以前にその端末と通信を行った他の端末とのそれぞれについて、過去（その発生よりも前）に発生した異常イベントについての出力情報が出力されてもよい。
【０１１０】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
１．  端末において発生した異常イベントを表す異常イベント履歴を取得する取得部と、
前記取得した前記異常イベント履歴が表す前記異常イベントの種類が所定の種類であるか否かを判定する種類判定部と、
前記異常イベントの種類が前記所定の種類である場合、その異常イベントが発生した端末と、その異常イベントが発生した時点以前にその端末と通信した他の端末とを、出力対象端末として特定する端末特定部と、
前記取得した異常イベント履歴によって表される前記異常イベントが前記出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力部と、を有する、履歴出力装置。
２．  前記所定の種類の異常イベントは、安全性が担保されていないプログラム又はコマンドの実行によって生じた異常なイベントである、１．に記載の履歴出力装置。
３．  安全性が担保されていないプログラムは、オペレーティングシステムと一緒にインストールされないプログラム、認証されていないプログラム、及びそのプログラムを利用している端末が所定数若しくは所定割合以下であるプログラムのいずれか１つ以上であり、
安全性が担保されていないコマンドは、安全性が担保されていないプログラムによって提供されるコマンドである、１．又は２．に記載の履歴出力装置。
４．  前記端末特定部は、前記出力対象端末として特定されている端末が他の端末と通信したら、当該他の端末をさらに前記出力対象端末として特定する、１．乃至３．いずれか一つに記載の履歴出力装置。
５．  前記出力部は、或る端末が前記出力対象端末として特定されたら、その特定よりも前にその端末で生じた異常イベントに関する出力情報をさらに出力する、１．乃至４．いずれか一つに記載の履歴出力装置。
【０１１１】
６．  端末において発生した異常イベントを表す異常イベント履歴を取得する取得部と、
前記取得した前記異常イベント履歴が表す前記異常イベントの種類が所定の種類であるか否かを判定する種類判定部と、
前記異常イベントの種類が前記所定の種類である場合、その異常イベントが発生した端末を出力対象端末として特定する端末特定部と、
前記取得した異常イベント履歴によって表される前記異常イベントが前記出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力部と、を有し、
前記出力部は、或る端末が前記出力対象端末として特定されたら、その特定よりも前にその端末で生じた異常イベントに関する出力情報をさらに出力する、履歴出力装置。
７．  前記出力部は、或る端末が前記出力対象端末として特定されたら、その特定よりも前の第１所定期間にその端末で生じた異常イベントを表す前記異常イベント履歴をさらに出力する、６．に記載の履歴出力装置。
８．  前記第１所定期間の長さは、異常イベントを発生させたプログラム又はコマンドの種類に応じて異なる、７．に記載の履歴出力装置。
９．  前記出力部は、前記第１所定期間に前記端末で異常イベントが発生していたら、前記第１所定期間よりも長い第２所定期間にその端末で生じた異常イベントに関する出力情報をさらに出力する、７．又は８．に記載の履歴出力装置。
【０１１２】
１０．  コンピュータによって実行される制御方法であって、
端末において発生した異常イベントを表す異常イベント履歴を取得する取得ステップと、
前記取得した前記異常イベント履歴が表す前記異常イベントの種類が所定の種類であるか否かを判定する種類判定ステップと、
前記異常イベントの種類が前記所定の種類である場合、その異常イベントが発生した端末と、その異常イベントが発生した時点以前にその端末と通信した他の端末とを、出力対象端末として特定する端末特定ステップと、
前記取得した異常イベント履歴によって表される前記異常イベントが前記出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力ステップと、を有する、制御方法。
１１．  前記所定の種類の異常イベントは、安全性が担保されていないプログラム又はコマンドの実行によって生じた異常なイベントである、１０．に記載の制御方法。
１２．  安全性が担保されていないプログラムは、オペレーティングシステムと一緒にインストールされないプログラム、認証されていないプログラム、及びそのプログラムを利用している端末が所定数若しくは所定割合以下であるプログラムのいずれか１つ以上であり、
安全性が担保されていないコマンドは、安全性が担保されていないプログラムによって提供されるコマンドである、１０．又は１１．に記載の制御方法。
１３．  前記端末特定ステップにおいて、前記出力対象端末として特定されている端末が他の端末と通信したら、当該他の端末をさらに前記出力対象端末として特定する、１０．乃至１２．いずれか一つに記載の制御方法。
１４．  前記出力ステップにおいて、或る端末が前記出力対象端末として特定されたら、その特定よりも前にその端末で生じた異常イベントに関する出力情報をさらに出力する、１０．乃至１３．いずれか一つに記載の制御方法。
【０１１３】
１５．  コンピュータによって実行される制御方法であって、
端末において発生した異常イベントを表す異常イベント履歴を取得する取得ステップと、
前記取得した前記異常イベント履歴が表す前記異常イベントの種類が所定の種類であるか否かを判定する種類判定ステップと、
前記異常イベントの種類が前記所定の種類である場合、その異常イベントが発生した端末を出力対象端末として特定する端末特定ステップと、
前記取得した異常イベント履歴によって表される前記異常イベントが前記出力対象端末で発生したものである場合、その異常イベントに関する出力情報を出力する出力ステップと、を有し、
前記出力ステップにおいて、或る端末が前記出力対象端末として特定されたら、その特定よりも前にその端末で生じた異常イベントに関する出力情報をさらに出力する、制御方法。
１６．  前記出力ステップにおいて、或る端末が前記出力対象端末として特定されたら、その特定よりも前の第１所定期間にその端末で生じた異常イベントを表す前記異常イベント履歴をさらに出力する、１５．に記載の制御方法。
１７．  前記第１所定期間の長さは、異常イベントを発生させたプログラム又はコマンドの種類に応じて異なる、１６．に記載の制御方法。
１８．  前記出力ステップにおいて、前記第１所定期間に前記端末で異常イベントが発生していたら、前記第１所定期間よりも長い第２所定期間にその端末で生じた異常イベントに関する出力情報をさらに出力する、１６．又は１７．に記載の制御方法。
【０１１４】
１９．  １０．乃至１８．いずれか一つに記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【図１】
2020170345.tif 000003
【図２】
2020170345.tif 000004
【図３】
2020170345.tif 000005
【図４】
2020170345.tif 000006
【図５】
2020170345.tif 000007
【図６】
2020170345.tif 000008
【図７】
2020170345.tif 000009
【図８】
2020170345.tif 000010
【図９】
2020170345.tif 000011
【図１０】
2020170345.tif 000012
【図１１】
2020170345.tif 000013
【手続補正書】
【提出日】令和3年7月30日(2021.7.30)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
【図１】本実施形態の履歴出力装置の動作の概要を例示する図である。
【図２】実施形態１の履歴出力装置の構成を例示する図である。
【図３】履歴出力装置を実現するための計算機を例示する図である。
【図４】実施形態１の履歴出力装置の利用環境を例示する図である。
【図５】実施形態１の履歴出力装置によって実行される処理の流れを例示するフローチャートである。
【図６】イベント履歴をテーブル形式で例示する図である。
【図７】出力情報を例示する図である。
【図８】実施形態２の履歴出力装置の動作の概要を例示する図である。
【図９】実施形態２の履歴出力装置によって実行される処理の流れを例示するフローチャートである。
【図１０】コマンド等の種類に応じて出力対象の期間が異なるケースを例示する図である。
【図１１】所定期間を延長するケースを例示する図である。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
対象システム１００は、１つ以上の任意の端末１１０で構成される。端末１１０は、物理マシンであってもよいし、仮想マシンであってもよい。物理マシンは、PC（Personal Computer）などの据え置き型のマシンであってもよいし、スマートフォンなどの可搬型のマシンであってもよい。イベントは、例えば、対象システム１００に含まれるマシンで動作するプロセスが行った活動（ファイルや他のプロセスへのアクセスなど）を表す。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００６１
【補正方法】変更
【補正の内容】
【００６１】
ここで、イベント履歴２０は、対象システム１００上におけるプロセスの活動を記録することで生成される。プロセスの活動を記録する技術には、既存の技術を利用することができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
＜異常イベントの種類について＞
例えば第１種の異常イベントは、重大な異常を表す蓋然性が高い異常イベントである。重大な異常を表す蓋然性が高い異常イベントの例としては、例えば、安全性が担保されていないコマンド等の実行によって生じる異常イベントがある。ここで、コマンド等について、安全性が担保されているものとそうでないものを区別する基準には、様々なものを採用できる。まず、プログラムについて説明する。例えば、対象システム１００の管理者によって安全であると判断されたプログラムを、安全性が担保されているプログラムとして扱う。その他にも例えば、OS をインストールした際に一緒にインストールされるプログラムを、安全性が担保されているプログラムとして扱う。その他にも例えば、所定の認証を受けているプログラムを、安全性が担保されているプログラムとして扱う。所定の認証を受けているプログラムは、例えば、所定の認証機関による認証を受けたことを証明する電子署名が付与されたプログラムである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７０
【補正方法】変更
【補正の内容】
【００７０】
前述した第１種の異常イベントは、例えば前述したように、安全性が担保されていないコマンド等の実行によって生じた異常イベントである。そこで例えば、種類特定情報は、安全性が担保されているコマンド等の識別情報を示す。そして、種類特定情報に示されていないコマンド等の実行によって生じた異常イベントを、第１種の異常イベントとして扱う。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００８８
【補正方法】変更
【補正の内容】
【００８８】
［実施形態２］
図８は、実施形態２の履歴出力装置２０００の動作の概要を例示する図である。図８は、履歴出力装置２０００の動作についての理解を容易にするための概念的な説明を表す図であり、履歴出力装置２０００の動作を具体的に限定するものではない。以下で特に説明する点を除き、実施形態２の履歴出力装置２０００は、実施形態１の履歴出力装置２０００と同様の機能を有する。
【国際調査報告】
2020170345.tif 000014
2020170345.tif 000015
2020170345.tif 000016
2020170345.tif 000017