JP2016533564A - システムコンポーネントの状態を相関させるイベントモデル - Google Patents

システムコンポーネントの状態を相関させるイベントモデル Download PDF

Info

Publication number
JP2016533564A
JP2016533564A JP2016520139A JP2016520139A JP2016533564A JP 2016533564 A JP2016533564 A JP 2016533564A JP 2016520139 A JP2016520139 A JP 2016520139A JP 2016520139 A JP2016520139 A JP 2016520139A JP 2016533564 A JP2016533564 A JP 2016533564A
Authority
JP
Japan
Prior art keywords
event
state
event model
model
events
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016520139A
Other languages
English (en)
Inventor
ティー.マーティン ダニエル
ティー.マーティン ダニエル
エフ.ディール デイビット
エフ.ディール デイビット
Original Assignee
クラウドストライク インコーポレイテッド
クラウドストライク インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クラウドストライク インコーポレイテッド, クラウドストライク インコーポレイテッド filed Critical クラウドストライク インコーポレイテッド
Publication of JP2016533564A publication Critical patent/JP2016533564A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Testing And Monitoring For Control Systems (AREA)
  • Alarm Systems (AREA)

Abstract

複数のシステムコンポーネントのイベントに関連付けられた通知を受信するように構成された計算デバイスが開示される。応じて、計算デバイスはイベントモデルで指定されたこれらのシステムコンポーネントの1つの状態に基づいて、システムコンポーネントの状態を決定する。イベントモデルで指定された状態は以前に発生した別のイベントを反映している。

Description

本願は、システムコンポーネントの状態を相関させるイベントモデルに関する。
(関連出願)
本特許出願は、2013年10月8日に出願された「Event Model forCorrelating System Component States」と題する米国特許出願第14/048,920号明細書の優先権を主張し、その開示内容は、参照により本明細書に完全に組み込まれる。
インターネットの使用が日常生活でますます大きな部分を占めるにつれ、システム資源、データ、および個人情報を盗むまたは破壊するセキュリティエクスプロイトの問題が深刻化している。政府および企業は、このようなセキュリティエクスプロイトに関係する侵入および盗用を防ぐためにかなりの量の資源を投入している。セキュリティエクスプロイトは、コンピュータウイルス、ワーム、トロイの木馬、スパイウェア、キーストロークロガー、アドウェア、およびルートキットといったさまざまな形で現れる。これらのエクスプロイトは、スピアフィッシュ電子メール、クリッカブルリンク、ドキュメント、実行ファイル、またはアーカイブといったいくつかの機構に送られるまたはそれらの機構を介して送られる。セキュリティエクスプロイトによってもたらされる一部の脅威は、サイバーテロまたは産業スパイと言われる重大なものである。
このような脅威に立ち向かうために、政府、企業、および個人は、広範なセキュリティアプリケーションおよびサービスを使用する。典型的には、このようなアプリケーションおよびサービスは、デバイスをスキャンしてセキュリティエクスプロイトの署名または他の種類の表示を探す。署名または表示の発見に応答して、セキュリティアプリケーションおよびサービスは、セキュリティエクスプロイトを隔離するまたは削除する。しかしながら、セキュリティアプリケーションおよびサービスは、より巧妙なセキュリティエクスプロイトを見逃すことが多い。例えば、セキュリティアプリケーションおよびサービスは、検出されたイベントを相関させる能力に欠けている。このような各イベントは、そのままでは無害であるが、一緒にまたはあるシーケンスで観察される場合、そのイベントは、セキュリティエクスプロイトのアクティビティを示している可能性がある。
米国特許出願第13/492,672号明細書
詳細な説明は、添付図面を参照して示される。図面において、参照番号の左端の数字(複数)は、参照番号が最初に現れる図面と同一である。異なる図面における同じ参照番号の使用は、同様または同一の項目または特徴を示す。
システムコンポーネントの状態を保持する例示的なイベントモデルを示し、その状態は、システムコンポーネントと関連付けられたイベントに応答して決定されることを示す図である。 システムコンポーネントの状態を保持する(maintain)イベントモデルと、システムコンポーネントと関連付けられたイベントをイベントモデルマネージャに通知するイベントバスと、イベントに応答してイベントモデルの状態を決定して指定するイベントモデルマネージャとを含む例示的なセキュリティエージェントを示す図である。 イベントモデルとイベントモデルマネージャで構成された計算デバイスのコンポーネントレベルの一覧を示す図である。 複数のシステムコンポーネントと関連付けられたイベントの通知を受信し、それに応答して、以前に発生した別のイベントを反映している状態を指定したイベントモデルで指定されたシステムコンポーネントの1つの状態に基づいてシステムコンポーネントの状態を決定する例示的なプロセスを示す図である。
(概略)
本開示は、一部において、共通の関連付け(association)を少なくとも1つのシステムコンポーネントと共有する複数のイベントを相関させるイベントモデルを説明する。イベントを相関させるために、イベントモデルは、システムコンポーネントがそのシステムコンポーネントと関連付けられた第1のイベントに応答して決定された状態を保持する。システムコンポーネントと別のシステムコンポーネントとの両方と関連付けられたイベントといった第2のイベントが発生すると、システムコンポーネントと別のシステムコンポーネントとの組み合わせに対する状態は、第2のイベントとイベントモデルに保持されているシステムコンポーネントの状態との両方に基づいて決定される。従って、プロセスに作用するイベント、そのプロセスと関連付けられた後のイベント(a later event)、ファイルといった、結合されていない可能性のあるイベントは、イベントモデルによって相関される。
さまざまな実施形態において、イベントモデルは、複数の状態とそれらの状態間の遷移を備える状態マシンとすることができる。各遷移は、1つまたは複数のイベントと関連付けられ得る。さらにイベントモデルは、複数の状態表現と関連付けられ得る。状態表現は、スパーステーブルまたはスパース行列といったテーブルまたは行列とすることができる。各状態表現は、1つのタイプのシステムコンポーネントまたは複数のタイプのシステムコンポーネントと関連付けられ得る。例えば、ある状態表現は、ファイルと関連付けられた一次元テーブルまたは行列とすることができ、別の状態表現は、ファイルとプロセスに関連付けられた二次元テーブルまたは行列とすることができる。一次元テーブルの各エントリの状態(本明細書ではイベントモデルの「インスタンス」とも呼ばれる)は、エントリに対応する固有のファイルと関連付けられたイベントの通知を受信することに応答して指定され得る。二次元テーブルの各エントリの状態は、エントリに対応する固有のファイルと固有のプロセスに関連付けられたイベントの通知を受信することに応答して指定され得る。二次元テーブルのエントリと関連付けられた固有のファイルもまた、一次元テーブルで指定された状態と関連付けられていれば、二次元テーブルの状態は、少なくとも一部は一次元テーブルで指定された状態に基づいて決定される。
いくつかの実施形態において、状態表現の各可能なエントリは、初期ではデフォルト状態に設定され得る。他の実施形態において、状態表現がスパーステーブルである場合、各エントリは、初期ではデフォルト状態を示すエントリのヌル値を有するヌルである。デフォルト状態から別の状態への遷移と関連付けられたイベントの通知が受信されると、スパーステーブルの対応するエントリが作成されて、他の状態に設定される。
いくつかの実施形態において、単一のイベントは、状態表現のいくつかのインスタンスに作用することができる。例えば、プロセスIDのみを有するイベントは、プロセスIDとファイルIDとの両方でインデックスされた状態表現のインスタンスの全てまたは一部に作用することができる。そのイベントは、ファイルIDの有無にかかわらずマッチングプロセスIDを有する一部または全てのインスタンスに作用することができる。このようなアクションを容易にするために、ゼロ以上の次元で状態表現のエントリをインデックスする「ワイルドカードテーブル」を作成できる(「ゼロ次元」のワイルドカードテーブルは、本明細書で使用される場合、単一のみのエントリを有し、関連付けられた状態表現の全てのエントリをインデックスする)。このようなワイルドカードテーブルは、イベントに関係のあるインスタンスを集めるために使用することができ、エントリが状態表現に追加または除去されるたびに更新される。いくつかの実施形態では、イベントが単一の状態表現の全てのインスタンスに作用しなければならない場合、ゼロ次元でインデックスされたワイルドカードテーブルを含むことができる(例えば、通常のタイミングイベントは、状態表現の全てのインスタンスの状態を進行させることができる)ことに留意されたい。
イベントモデルのインスタンス(即ち、イベントモデルの状態表現のエントリ)はまた、それぞれがアキュムレータまたはname_valueペア(複数)のいずれかまたはその両方と関連付けられることもできる。アキュムレータは、イベントおよび閾値の発生のカウントを含むことができる。いくつかの実施形態において、アキュムレータのカウントがアキュムレータの閾値を満たすまたは超える場合のみ、インスタンスの状態を設定または更新できる。付加的または代替的には、アキュムレータは、1つまたは複数のイベントの発生に基づいて更新可能である値を保持することができ、そしてその状態は、アキュムレータによって保持された値に基づいて設定または更新され得る。name_valueペア(複数)は、インスタンスの状態の設定がname_valueペアを有するように導くイベントといったイベントと関連付けられた情報を記述できる。
1つまたは複数の状態表現に加え、イベントモデルはさらに、遷移テーブルを含むことができる。遷移テーブルは、各遷移の識別子および各遷移と関連付けられたターゲット/結果として生じる状態を含むことができる。いくつかの実施形態において、1つまたは複数の遷移識別子は、アクションリストと関連付けられ得る。各アクションリストは、イベントの生成および送出といった遷移の発生に応答して遂行する1つまたは複数のアクションを含むことができる。代替的または付加的には、アクションリストは、エントリが指定された状態に設定されると、アクションリストのアクションが遂行される(例えば、イベントを生成して送出する)といった、状態表現の状態と関連付けられ得る。
さまざまな実施形態において、イベントモデルは、イベントモデルマネージャによって管理され得る。イベントモデルマネージャは、イベントの通知を受信することができ、それらの通知は、各イベントと関連付けられた1つまたは複数のシステムコンポーネントを特定し、イベントモデルマネージャの振る舞いを指示するパラメータを含む。通知を受信すると、イベントモデルマネージャは、パラメータを読み出して、そのパラメータを使用して、A)複数のイベントモデルの中の固有のイベントモデルと、B)更新される固有のイベントモデルの状態表現(複数)のエントリと、C)イベントと関連付けられた遷移とを特定する。イベントモデルマネージャはその後、固有のイベントモデルの状態表現、ワイルドカードテーブル、および遷移テーブルをそれらのパラメータと共に使用して、固有のイベントモデルの状態表現(複数)の1つまたは複数のエントリの状態を決定して、それらの状態を設定または更新する。パラメータによって指定された遷移と関連付けられたアクションリストがあれば、イベントモデルマネージャは、そのアクションリストによって指定されたアクションを遂行できる。例えば、イベントモデルマネージャは、イベントを生成して送出できる。いくつかの実施形態において、イベントモデルマネージャは、同じイベントの通知を複数の異なるパラメータを用いて複数回受信できる。
いくつかの実施形態において、イベントモデルマネージャおよびそのイベントモデルマネージャによって管理される1つまたは複数のイベントモデルは、カーネルレベルのセキュリティエージェントといったセキュリティエージェントのコンポーネントとすることができる。セキュリティエージェントは、イベントの通知をイベントモデルマネージャに送出してセキュリティエージェントの構成に基づいてそれらのイベントの通知のパラメータを設定する、イベントバスを含むことができる。その構成は、計算デバイス(computing device)の再起動またはセキュリティエージェントの再コンパイルを用いずに更新されて、イベントモデルまたはイベントモデルの1つまたは複数のコンポーネント(例えば、遷移テーブル)の更新を行わせることができる。イベントバスはさらに、イベントモデルマネージャからイベントを受信して、それらのイベントをセキュリティエージェントの他のコンポーネントに送出できる。セキュリティエージェントは、計算デバイス上のイベントのモニタリング、計算デバイス上のイベントの一部または全てに関する状態の保持、セキュリティサービスに計算デバイス上の1つまたは複数のイベントを通知すること、または計算デバイス上の1つまたは複数のイベントと関連付けられたセキュリティエクスプロイトに応答してアクションを起こす(措置を講じる)ことの中から少なくとも1つを遂行するように構成され得る。
(イベントモデルの例)
図1は、システムコンポーネントの状態を保持する例示的なイベントモデルを示しており、その状態は、システムコンポーネントと関連付けられたイベントに応答して決定される。イベントモデル102は、イベントモデル104の表現で示すように、複数の状態106および遷移108を備える状態マシンとすることができる。イベントモデル102はさらに、状態表現110および112といった異なる数の次元を有し得る複数の状態表現を含むことができる。状態表現110または112のいずれかの次元は、その状態表現110または112が状態表現の全ての次元よりも少ない次元でアクセスする場合、その状態表現110または112のどのエントリに作用されなければならないかを指定できる、ワイルドカードテーブル114と関連付けられ得る。さらに、状態表現110または112の1つまたは複数のエントリは、アキュムレータ116またはname_valueペア118と関連付けられ得る。状態表現110および112に加え、イベントモデル102は、遷移108をターゲット状態106にマップする遷移テーブル120、および各アクションが遷移テーブル120にリストされた遷移108の1または複数と関連付けられ得るアクションリスト122を含むことができる。
図示したように、イベントモデルマネージャ124は、イベント通知126を受信して、イベント通知126に応答してイベントモデル102を更新できる。128において、イベントモデルマネージャ124は、状態表現110のシステムコンポーネントの組み合わせを指定する状態を少なくとも一部は状態表現112のシステムコンポーネントの1つに指定された状態に基づいて決定できる。
さまざまな実施形態において、イベントモデル102は、プロセス、ファイル、スレッド、モジュール、ツリーなどといったシステムコンポーネントまたはシステムコンポーネントの組み合わせの状態を表すデータ構造またはデータ構造の集合とすることができる。表された状態(複数)は次に、1つのシステムコンポーネントまたは複数のシステムコンポーネントと関連付けられたイベントの発生(複数)を反映することができる。すでに述べたように、各イベントモデル102は、状態表現110および112といった1つまたは複数の状態表現、遷移テーブル120、およびアクションリスト(複数)を含むことができる。状態表現110または112のいずれかは、1つまたは複数のワイルドカードテーブル114と関連付けられ、そして状態表現110または112のエントリ(複数)は、アキュムレータ116またはname_valueペア118のいずれかまたはその両方と関連付けられ得る。イベントモデル104の表現で示すように、イベントモデル102は、複数の状態106および遷移108を有する状態マシンとすることができる。例えば、イベントモデル102のインスタンスを値‘0’の状態106などのデフォルト状態106に設定できる。第1の遷移108と関連付けられた第1のイベントが発生したという通知に応答して、イベントモデルマネージャ124は、そのインスタンスの状態106を値‘1’に設定できる。イベントモデル102の各インスタンスは、1つまたは複数のシステムコンポーネントと関連付けられ、そして状態表現110または112の1つのエントリで表され得る。
状態表現110または112のいずれかは、スパーステーブルまたはスパース行列といったテーブルまたは行列とすることができる。図1において、状態表現110は、二次元スパーステーブルとして示され、状態表現112は、一次元のテーブルまたはスパーステーブルとして示されている。状態表現110および112がスパーステーブルまたはスパース行列である実施形態において、エントリは、初期ではイベントモデル102のデフォルト状態106(例えば、‘0’状態)を示すヌルである。他の実施形態において、エントリは、初期ではデフォルト状態106に設定され得る。
いくつかの実施形態において、状態表現110および112のどのエントリがヌルであり、どのエントリが状態106に設定されるかを追跡するために、状態表現110および112の各次元(例えば、各行または列)は、ワイルドカードテーブル114と関連付けられ得る。ワイルドカードテーブル114はそれぞれ、ゼロ次元と対応する状態表現110または112の次元の数との間のテーブルまたはアレイである。各ワイルドカードテーブル114は、どのインデックスが状態106に設定されるか、そしてどのインデックスがヌルであるかを示す、その状態表現110または112のインデックスとして機能する。これらのワイルドカードテーブル114は次に、単一のイベントによって変更される複数のエントリを状態表現110および112から選択するイベントモデルマネージャ124によって使用され得る。単一のイベントは、単一の状態表現110または112だけでなく、複数の表現における複数のエントリに作用することができる。
状態表現110および112の一部または全てのエントリは、アキュムレータ116またはname_valueペア118と関連付けられ得る。アキュムレータ116は、イベントおよび閾値の発生のカウントを含むことができる。いくつかの実施形態において、状態106は、アキュムレータ116のカウントがアキュムレータ116の閾値を満たすまたは超える場合のみ、イベントモデル102のインスタンス(アキュムレータ116と関連付けられるエントリで表される)に設定または更新され得る。付加的または代替的には、アキュムレータ116は、1つまたは複数のイベントの発生に基づいて更新可能である値を保持することができ、そしてその状態106は、アキュムレータ116によって保持された値に基づいて設定または更新され得る。name_valueペア(複数)118は、インスタンスの状態106の設定がname_valueペア118を有するように導くイベントといった、イベントと関連付けられた情報を記述できる。
アキュムレータ116のコンテンツは、遷移のアクションリスト122で指定された時に算術演算(例えば、「インクリメント」演算であるが、可能性として任意の加算、減算、浮動小数点乗算なども含む)を用いてクエリまたは更新が行われ得る。アキュムレータ116に格納された値を使用して、例えば、アクション専用の閾値の値を要求することによってアクションリスト122内のどのアクションが遂行されるかを指示できる。いくつかの実施形態において、name_valueペア(複数)118に格納された情報は、アクションリスト122のアクションによって設定され、変更され、または使用され得る。代替的に、いくつかの実施形態において、name_valueペア(複数)118に格納された情報は、アクションリスト122の外部の構成か、または外部の構成とアクションリスト122のアクションとの組み合わせにおいて指定され得る。
さまざまな実施形態において、遷移テーブル120は、各遷移108の識別子および各遷移108と関連付けられたターゲット/結果として生じる状態106を含むことができる。いくつかの実施形態において、1つまたは複数の遷移識別子は、アクションリスト122と関連付けられ得る。各アクションリスト122は、そのアクションリスト122と関連付けられた遷移108の発生に応答して、または状態表現110または112のうちの1つの固有の状態106に設定することに応答して遂行するイベントモデルマネージャ124の1つまたは複数のアクションを含むことができる。このようなアクションは、イベントの生成および送出を含むことができる。
いくつかの実施形態において、イベントモデルマネージャ124は、任意の種類のモジュールまたは実行可能なコンポーネントとすることができる。図2について以下に詳細に説明するように、イベントモデルマネージャ124は、カーネルレベルのセキュリティエージェント106のコンポーネントとすることができ、そしてイベントの通知をイベントバス218から受信して、イベントをイベントバス218に提供できる。イベントモデルマネージャ124は、イベントモデル102といった、カーネルレベルのセキュリティエージェント206の複数のイベントモデルの管理を受け持つことができる。
いくつかの実施形態において、イベントモデルマネージャ124によって受信されるイベント通知126は、1つまたは複数のシステムコンポーネントのパラメータおよび識別子を含むことができる。パラメータは、イベントモデル102といったイベントモデルを特定する第1の部分と、イベントモデルのどのインスタンス(即ち、状態表現110/112のエントリ(複数))を更新するかを特定する第2の部分(この第2の部分は、「検索タイプ」とも呼ばれ得る)と、イベントと関連付けられている遷移108を特定する第3の部分とを含むマルチパートの文字列または数字の値とすることができる。他の実施形態において、パラメータは、追加部分または削減部分を含むことができる。イベントモデルマネージャ124は、イベント通知126の受信に応答してパラメータから異なる部分を読み出すことができる。いくつかの実施形態において、イベントモデルマネージャ124は、複数の異なるパラメータを用いて同じイベントの複数の通知126を受信できる。パラメータの第1の部分に基づいて、イベントモデルマネージャ124は、イベントモデルマネージャ124によって管理される複数のイベントモデルから成るイベントモデル102を特定する。各イベントモデルは、例えば、数値で表すことができる。
イベントモデル102を特定すると、イベントモデルマネージャ124は、状態表現110および112のいずれかまたはその両方、またはそれらの一部を読み出すことができる。いくつかの実施形態において、イベントモデルマネージャ124は、イベント通知126に含まれるシステムコンポーネントの識別子に基づいて、パラメータの第2の部分に含まれる検索タイプに基づいて、またはその両方に基づいて状態表現110および112のエントリを特定する。検索タイプは、状態表現110または112またはワイルドカードテーブル114、およびワイルドカードテーブル114を通じて状態表現110または112の1つまたは複数のエントリまでのいずれかまたはその両方のインデックスとすることができる。例えば、イベント通知126は、単一のシステムコンポーネント(例えば、Proc_A)を特定することができ、そして検索タイプは、システムコンポーネントのエントリ(例えば、状態表現112のエントリ)が設定または更新されなければならないこと、および単一のシステムコンポーネントと他のシステムコンポーネントとの組み合わせと関連付けられた非ヌルエンティティが更新されなければならないことを指定できる。これは、Proc_Aと関連付けられた状態表現110の行の全てではないが一部のエントリを含むであろう。イベントモデルマネージャ124は、Proc_Aと関連付けられた状態表現110の行に対してワイルドカードテーブル114を利用して、その行のどのエントリが非ヌルであるかを特定する。イベントモデルマネージャ124はその後、特定されたエントリを読み出すであろう。
いくつかの実施形態において、イベントモデルマネージャ124はまた、遷移108を特定するパラメータの第3の部分を利用して遷移テーブル120からターゲット状態106を読み出す。イベントモデルマネージャ124はその後、状態表現110および112の読み出されたエントリを遷移テーブル120から読み出されたターゲット状態106に設定または更新する。読み出されたエントリの設定または更新に加え、イベントモデルマネージャ124は、ワイルドカードテーブル114を更新する。例えば、すでにヌルエントリがターゲット状態106に設定されていれば、そのエントリを含むことに関連付けられたワイルドカードテーブル114は、そのエントリが現在非ヌルであることを反映するように更新される。さまざまな実施形態において、ターゲット状態106がデフォルト状態(例えば、値‘0’)であれば、イベントモデルマネージャ124は、読み出された1つまたは複数のエントリをヌルに設定して(即ち、エントリを削除する)、ワイルドカードテーブル(複数)114の対応する任意のエントリをヌルに設定できる。
いくつかの実施形態において、読み出されたエントリの1つがアキュムレータ116と関連付けられて、そのエントリに関連するイベント通知126が受信されるたびに、イベントモデルマネージャ124は、アキュムレータ116のカウントまたは値を更新する。そのカウントがアキュムレータ116の閾値を満たすまたは超える場合、−それ以前には満たすまたは超えていなかった場合−イベントモデルマネージャ124は、そのエントリの状態106をターゲット状態106に設定または更新する。代替的には、イベントモデルマネージャは、アキュムレータ116によって保持された更新可能な値に基づいて状態106を設定または更新する。一実施形態において、アキュムレータ116は、アキュムレータ116と関連付けられたエントリを設定または更新するために、カウントがイベントモデルマネージャ124の時間期間において閾値を満たすまたは超えるはずの閾値と時間期間の両方を含むことができる。
さらなる実施形態において、128において示すように、イベントモデルマネージャ124は、別の状態表現(例えば、状態表現112)の第2のエントリに対して指定された状態に基づいて1つの状態表現(例えば、状態表現110)の第1のエントリの状態106を決定して、第1のエントリを決定された状態106に設定または更新することができる。例えば、状態表現112は、Proc_Aと関連付けられたイベントに基づいてすでに設定または更新されたプロセスProc_Aのエントリを含むことができる。状態表現110は、Proc_AとファイルFile_Yとの両方に関連付けられたエントリを含むことができる。イベントモデルマネージャ124は、Proc_AとFile_Yとの両方に関連付けられたイベントのイベント通知126を受信でき、そしてイベント通知126のパラメータは、状態表現110のProc_AおよびFile_Yのエントリが更新されることを指定できる。エントリが設定または更新されるターゲット状態の決定において、イベントモデルマネージャ124は、遷移テーブル120と、アキュムレータ116がエントリと関連付けられていれば、そのアキュムレータ116とを利用できる。イベントモデルマネージャ124はまた、別の状態表現(例えば、状態表現112)がProc_A単独またはFile_Y単独のエントリを含むかどうかを決定することもできる。このような状態のいずれかまたはその両方はその後、ターゲット状態106を決定する時に使用され得る。
さまざまな実施形態において、イベントモデルマネージャ124はまた、パラメータで特定された遷移108がアクションリスト122と関連付けられているかどうかを決定することもできる。例えば、遷移テーブル120の遷移識別子は、アクションリスト122をポイントすることができる。イベントモデルマネージャ124はその後、アクションリスト122にリストされたアクションの一部または全てを遂行できる。例えば、アクションリストは、イベントが生成されて送出されなければならない(例えば、イベントバス118に送出される)ことを命令できる。このような1つのイベントは、例えば、name_valueペア118を含む可能性があり、このペアは、name_valueペア118と関連付けられた所与のエントリの状態を導いた1つまたは複数のイベントに関する情報を格納する。いくつかの実施形態において、リスト122のアクションの遂行は、アキュムレータ116のステータスが条件となり得る。例えば、アキュムレータ116のカウントがアキュムレータ116の閾値を満たさないまたは超えない場合、イベントモデルマネージャ124は、そのアキュムレータ116と関連付けられたエントリに結合されたアクションの遂行を止めることができる。アクションリスト122にリストされた他のアクションは、アキュムレータ116の操作(例えば、アクションを設定値でインクリメントする、または浮動小数点乗算を行う)または新しい情報をname_valueペア(複数)118に格納することを含むことができる。
(例示的なセキュリティエージェント)
図2は、システムコンポーネントの状態を保持するイベントモデルと、システムコンポーネントと関連付けられたイベントをイベントモデルマネージャに通知するイベントバスと、イベントに応答してイベントモデルの状態を決定して指定するイベントモデルマネージャとを含む例示的なセキュリティエージェントを示している。図示したように、計算デバイス202は、リモートセキュリティデバイス(複数)204からセキュリティサービスを受信して、計算デバイス202にインストールされたカーネルレベルのセキュリティエージェント206と協働することができる。計算デバイス202は、プロセス(複数)210、ファイル(複数)212、およびスレッド(複数)214といった複数のシステムコンポーネント208を含むことができる。カーネルレベルのセキュリティエージェント206は、システムコンポーネント(複数)208と関連付けられたイベントを集めてそれらのイベントをカーネルレベルのセキュリティエージェント206のイベントバス218に送出する、イベントコレクタ216を含む。イベントバス218のフィルタおよびディスパッチコンポーネント220に基づいて、イベントバス218は、1つまたは複数のイベントモデル224を管理するイベントモデルマネージャ222にイベント通知を提供する。イベントバス218はまた、イベントまたはイベント通知をカーネルレベルのセキュリティエージェント206の他のイベントジェネレータおよびコンシューマ226に送出するか、またはカーネルレベルのセキュリティエージェント206の通信モジュール228を介してセキュリティサービスデバイス(複数)204に送出することもできる。
さまざまな実施形態において、計算デバイス202およびセキュリティサービスデバイス(複数)204はそれぞれ、サーバまたはサーバファーム、複数の分散サーバファーム、メインフレーム、ワークステーション、パーソナルコンピュータ(PC)、ラップトップコンピュータ、タブレットコンピュータ、携帯情報端末(PDA)、携帯電話、メディアセンター、組み込みシステム、またはその他の種類の1つまたは複数のデバイスにすることができるまたは含むことができる。一実施形態において、セキュリティサービスデバイス(複数)204は、クラウドコンピューティングネットワークのノードといった、通信において協働する複数の計算デバイスを表す。いくつかの実施形態において、計算デバイス202およびセキュリティサービスデバイス(複数)204の1または複数は、1つまたは複数の計算デバイスで実施される1つまたは複数の仮想マシンを表す。計算デバイス202として機能する能力がある例示的な計算デバイスを図3に示し、その図面を参照して以下に説明する。
いくつかの実施形態において、計算デバイス202およびセキュリティサービスデバイス(複数)204は、1つまたは複数のネットワークによって接続され得る。1つまたは複数のネットワークは、ワイヤードネットワーク、ワイヤレスネットワーク、およびワイヤードネットワークとワイヤレスネットワークの組み合わせといった1つまたは複数のネットワークを含むことができる。さらに、1つまたは複数のネットワークは、複数の異なるタイプのパブリックまたはプライベートネットワーク(例えば、ケーブルネットワーク、インターネット、ワイヤレスネットワークなど)の任意の1つまたは組み合わせを含むことができる。例えば、1つまたは複数のネットワークは、プライベートネットワークとすることができる。いくつかの事例では、計算デバイスは、セキュアなプロトコル(例えば、https)および/または伝送制御プロトコル/インターネットプロトコル(TCP/IP)といったその他のプロトコルまたはプロトコルのセットを使用して1つまたは複数のネットワーク上で通信する。
さまざまな実施形態において、セキュリティサービスデバイス(複数)204は、セキュリティサービスを実施できる。セキュリティサービスは、計算デバイス202のカーネルレベルのセキュリティエージェント206からの関心のあるイベント、ならびに関心のあるイベントと関連付けられたフォレンシック(forensic)データの通知を受信できる。セキュリティサービスデバイス(複数)204は、関係する通知が他の計算デバイス202から受信されたかどうかを決定し、および/または1つまたは複数のルールまたはヒューリスティクス(heuristics)に基づいて関心のあるイベントを評価できる。セキュリティサービスデバイス(複数)204はさらに、イベントを生成してそのイベントを(例えば、診断または回復する目的で)計算デバイス202に提供すること、構成更新を生成すること、関心のあるイベントと関連付けられた計算デバイス202を回復すること、悪意のあるコードと関連付けられた敵対者を欺くこと、または他の計算デバイス202と関連付けられたエンティティまたは人に潜在的な悪意のあるコードを通知することの一部または全てを遂行できる。構成更新を生成すると、セキュリティサービスデバイス(複数)204は、構成更新を1つまたは複数の計算デバイス202に提供できる。セキュリティサービスデバイス(複数)204はまた、個々の計算デバイス202、計算デバイスのタイプ、エンティティ、または汎用デバイスに固有のモデルといった1つまたは複数のモデルを保持して利用することもできる。セキュリティサービスデバイス(複数)204は、受信した通知に基づいてこれらのモデルを更新して、関心のあるイベントを解析する時にこれらのモデルを利用できる。
いくつかの実施形態において、システムコンポーネント208は、プロセッサ(複数)210、ファイル(複数)212、およびスレッド(複数)214といった、計算デバイス202の任意の種類のコンポーネントを含むことができる。システムコンポーネント208はまた、ツリー、モジュール、またはその他の種類のコンポーネントを含むこともできる。例えば、プロセス210は、セキュリティエクスプロイトの実行ファイル212で開始される悪意のあるプロセス210である場合もあり、そのファイルは、悪意のあるプロセス210によってそのプロセスが開始された後に削除される。
図示したように、カーネルレベルのセキュリティエージェント206は、イベントコレクタ216、イベントバス218とフィルタおよびディスパッチ220、イベントモデルマネージャ222、イベントモジュール(複数)224、イベントジェネレータ(複数)およびコンシューマ(複数)、および通信モジュール228を含むことができる。カーネルレベルのセキュリティエージェント206は、カーネルレベルのセキュリティエージェント206のコンポーネントが生で再構成される間、セキュリティサービスデバイス(複数)204のリモートセキュリティサービスによって受信されて適用されることによってインストールされて構成可能にされることができる。このような再構成によってイベントモデル102または遷移テーブル120といったイベントモデル102のコンポーネントを更新させることができる。上述したように、カーネルレベルのセキュリティエージェント206は、計算デバイス上のイベントのモニタリング、計算デバイス上のイベントの一部または全てに関する状態の保持、セキュリティサービスに計算デバイス上の1つまたは複数のイベントを通知すること、または計算デバイス上の1つまたは複数のイベントと関連付けられたセキュリティエクスプロイトに応答してアクションを起こすことの中から少なくとも1つを遂行できる。例示的なカーネルレベルのセキュリティエージェント206は、2012年6月8日に出願された「Kernel−Level Security Agent」と題する米国特許出願第13/492,672号明細書においてより詳細に説明されている。
さまざまな実施形態において、カーネルレベルのセキュリティエージェント206は、イベントコレクタ216を含む。これらのイベントコレクタ216は、カーネルモードまたはユーザモードのコンポーネントにすることができる、システムコンポーネント208と関連付けられたイベントを観察する。イベントは、システムコンポーネント208によって遂行されるアクションと、そのアクションまたは期待されるアクションと関連付けられたアクタとの両方を含むことができる。例えば、イベントコレクタ216は、ファイルの作成、読み取りおよび書き込み、および実行ファイルの読み込みといったあるイベントの発生または非発生の通知を受信するフックまたはフィルタを登録することができる。イベントコレクタ216はまた、メモリまたはログファイルのロケーションをモニタし、またはそれを行うスレッドを生成(spawn)して、ログファイルまたはメモリのロケーションと関連付けられたイベントを観察することもできる。イベントコレクタ216は、複数の種類のイベントを観察することができるか、またはイベントの各タイプは、異なるイベントコレクタ216と関連付けられ得る。イベントコレクタ216によって観察されるイベントは、カーネルレベルのセキュリティエージェント206の構成によって指定され得る。いくつかの実施形態において、イベントコレクタ216は、計算デバイス202上の全てのイベントを観察し、そしてイベントバス218経由でそれらのイベントをフィルタリングして送出するための構成可能フィルタ220を指定する。
さまざまな実施形態において、それぞれがイベントコレクタ216の1または複数と関連付けられた構成可能フィルタ220を表すフィルタリングおよびディスパッチコンポーネント220、イベントバス218、イベントモデルマネージャ222、イベントモデル(複数)224、イベントジェネレータ(複数)およびコンシューマ(複数)226、および/または通信モジュール228は、観察されたイベントをイベントコレクタ216から受信する。図2では、フィルタリングおよびディスパッチコンポーネント220を論理上イベントバス218部として示しているが、そうする代わりにフィルタリングおよびディスパッチコンポーネント220は、イベントバス218から分離している1つまたは複数のコンポーネント(例えば、構成可能フィルタ220)を備えることができる。イベントを受信すると、フィルタリングおよびディスパッチコンポーネント220は、カーネルレベルのセキュリティエージェント206の構成によって指定される任意のフィルタリングを遂行できる。例えば、その構成は、どのイベントモデル(複数)224を更新するかを決定して、イベントモデル(複数)224の更新時にイベントモデルマネージャ222に指示するパラメータを指定できる。フィルタリングはまた、構成の1つまたは複数のルールまたはヒューリスティクスの適用を伴うこともある。
イベントをフィルタリングすると、フィルタリングおよびディスパッチコンポーネント220は、スローフォワード(throw-forward)バスまたは他のタイプのバスにすることができる、イベントバス218を使用してイベントまたはイベント通知を送出できる。イベントバス218は次に、イベントまたはイベント通知をイベントモデルマネージャ222、イベントジェネレータ(複数)およびコンシューマ(複数)226、または通信モジュール228の一部または全てに送信できる。いくつかの実施形態において、分離に重要であるまたはイベントと関連付けられた関連データをコピーするカーネルレベルのセキュリティエージェント206を必要とするイベントは、イベントモデルマネージャ222、イベントジェネレータ(複数)およびコンシューマ(複数)226、または通信モジュール228への配信をスケジュールするカーネルレベルのセキュリティエージェント206のスケジューラにイベントバス218経由で送出される。これらのイベントがスケジューラに送出される時、これらのイベントは、非同期イベントとすることができる。さらなる実施形態において、フィルタおよびディスパッチコンポーネント220としてよりはむしろイベントバス218として、どのイベントモデル(複数)224を更新するかを決定して、イベントモデル(複数)224の更新時にイベントモデルマネージャ222に指示するパラメータを指定するように構成され得る。このような決定および指定は、カーネルレベルのセキュリティエージェント206の構成に基づいて遂行され得る。
さまざまな実施形態において、イベントマネージャモジュール222は、図1について上述したイベントモデルマネージャモジュール124の例とすることができる。イベントモデル(複数)224はまた、図1について上述したイベントモデル102の例とすることもできる。米国特許出願第13/492,672号明細書において、イベントモデル(複数)224と同様のコンポーネントは、コリレータと呼ばれる。
イベントジェネレータ(複数)およびコンシューマ(複数)226は、アクションを起こすモジュールおよび状況モデル(situational model)といったデータを格納するモデルを含むことができる。状況モデルは、計算デバイス202のオブジェクトまたはプロセスの属性、振る舞い、および/またはパターンを追跡する1つまたは複数の任意のデータベース、ファイル、テーブル、または他の構造を備えることができる。イベントジェネレータ(複数)およびコンシューマ(複数)226のこのようなモジュールは、状況モデルを利用して状態情報を認証する時、および状況モデルをキャッシュとして利用する時の状況モデルの構築に関与することができる。イベントをフィルタおよびイベントバス218から受信すると、イベントジェネレータ(複数)およびコンシューマ(複数)226は、セキュリティサービスデバイス(複数)204から受信した構成およびイベントのタイプに基づいて、イベントを含むまたは生成した実行アクティビティまたはシステムコンポーネント(複数)208から状態情報を読み出すかどうかを決定できる。このような状態情報は、プロセス210のコピー、ファイル212、またはスレッド、プロセスのメモリから引き出された情報、そのプロセスと関連付けられたコールスタックのコンテンツ、そのプロセスによって書き込まれたまたは読み取られたデータなどを備えることができる。イベントジェネレータ(複数)およびコンシューマ(複数)226はその後、イベントおよび状態情報のいずれかまたはその両方を状況モデルに提供できる。
さらに、イベントジェネレータ(複数)およびコンシューマ(複数)226は、イベントと関連付けられた属性、振る舞い、および/またはパターンまたは他のディスクリプションを決定するために状況モデルをクエリすることができる。カーネルレベルのセキュリティエージェント206の構成によって指定された属性、振る舞い、および/またはパターン、ディスクリプション、または他のルールまたはヒューリスティクスに基づいて、イベントジェネレータ(複数)およびコンシューマ(複数)226は、ある方法によってイベントに関心があると決定することができ、および/または悪意のあるコードと関連付けられ得る。潜在的に悪意のあるコードと関連付けられたイベントに関心があると決定すると、またはセキュリティサービスデバイス(複数)204によって生成されたイベントを受信すると、イベントジェネレータ(複数)およびコンシューマ(複数)226は、状況モデルを更新することができ、セキュリティサービスデバイス(複数)204にイベントを通知することができ、または計算デバイス202を回復することができる。回復処理(healing)は、イベントと関連付けられたプロセス(例えば、プロセス210)を停止すること、イベントと関連付けられたプロセス(またはそのプロセスと関連付けられた悪意のあるコード(例えば、ファイル212))を削除すること、またはイベントと関連付けられている悪意のあるコードと関連付けられた敵対者を欺くことを伴う。このような欺きは、悪意のあるコードによって獲得されたデータを改ざんすることによってまたは敵対者に送信されるデータを改ざんすることによって実現され得る。起こるアクションは、カーネルレベルのセキュリティエージェント206の構成によって決定され得る。いくつかの実施形態において、イベントジェネレータ(複数)およびコンシューマ(複数)226は、セキュリティサービスデバイス(複数)204から回復処理を遂行する命令を受信することに応答して回復を遂行できる。
さまざまな実施形態において、カーネルレベルのセキュリティエージェント206は、通信モジュール228を含む。通信モジュール228は、1つまたは複数のネットワークを介してセキュリティサービスデバイス(複数)204と通信するためにカーネルレベルのセキュリティエージェント206によって利用されるネットワークプロトコルスタック(複数)、ネットワークインタフェースドライバ(複数)、およびその他のネットワークインタフェースコンポーネントを表すことができる。通信モジュール228は、計算デバイス202のカーネルモードのコンポーネントとすることができる。さらに、通信モジュール228は、カーネルレベルのセキュリティエージェント206からのイベント、他の通知、およびイベントと関連付けられたデータをセキュリティサービスデバイス(複数)204に送信できる。通信モジュール228はまた、セキュリティサービスデバイス(複数)204から受信した構成更新をカーネルレベルのセキュリティエージェント206の構成マネージャに送信し、そしてセキュリティサービスデバイス(複数)204からの回復命令および/またはイベントをフィルタリングおよびディスパッチのイベントバス218に送信することもできる。
(例示的なシステム)
図3は、イベントモデルとイベントモデルマネージャで構成された計算デバイスといった計算デバイス300のコンポーネントレベルの一覧を示している。図示したように、計算デバイス300は、モジュールおよびデータ304を格納しているシステムメモリ304を備える。さらに、計算デバイス300は、プロセッサ(複数)306、リムーバブルストレージ308およびノンリムーバブルストレージ310、入力デバイス(複数)312、出力デバイス(複数)314および他の計算デバイス318と通信するための通信接続316を含む。
さまざまな実施形態において、システムメモリ302は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリ他など)またはその2つのある組み合わせである。システムメモリ302に格納されたモジュールまたはデータ304は、メソッド、スレッド、プロセス、アプリケーション、または計算デバイス202の動作またはイベントモデルマネージャ124およびイベントモデル102で構成された任意の計算デバイスの動作を遂行するために利用される命令といったその他の種類の実行命令を備えることができる。モジュールおよびデータ304はまた、イベントモデル102と関連付けられたデータを格納しているファイルおよびデータベースといった、ファイルおよびデータベースを含むこともできる。
いくつかの実施形態において、プロセッサ(複数)306は、中央処理装置(CPU)、画像処理装置(GPU)、またはCPUとGPUの両方、または当業者には周知である他の処理装置またはコンポーネントである。
計算デバイス300はまた、例えば、磁気ディスク、光ディスク、または光テープといった付加的なデータ記憶デバイス(リムーバブルおよび/またはノンリムーバブル)も含む。このような付加的な記憶装置は、図3のリムーバブルストレージ308およびノンリムーバブルストレージ310で図示されている。有形のコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータといった情報を記憶するための任意の方法または技術によって実施される揮発性および不揮発性、リムーバブルおよびノンリムーバブルの媒体を含むことができる。システムメモリ302、リムーバブルストレージ308およびノンリムーバブルストレージ310は、コンピュータ可読記憶媒体の全ての例である。コンピュータ可読媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、または所望の情報を記憶するために使用されることができおよび計算デバイス300によってアクセスされることができるその他の媒体を含むが、これらに限定されない。このような任意の有形のコンピュータ可読媒体は、計算デバイス300の一部とすることができる。
計算デバイス300はまた、キーボード、マウス、接触感応ディスプレイ、音声入力デバイスなどといった入力デバイス(複数)312、およびディスプレイ、スピーカ、プリンタなどといった出力デバイス(複数)314も有する。このようなデバイスは、当業者には周知であり、ここでは詳しく論じる必要がない。
計算デバイス300はまた、計算デバイス300に他の計算デバイス202またはセキュリティサービスデバイス(複数)204といった他の計算デバイス318と通信させる通信接続316も包含する。
(例示的なプロセス)
図4は、例示的なプロセスを示している。このプロセスは、各動作がハードウェア、ソフトウェア、またはその組み合わせにおいて実施されることができる動作のシーケンスを表す、論理フローグラフとして示されている。ソフトウェアの文脈において、動作は、1つまたは複数のコンピュータ可読記憶媒体に格納されたコンピュータ実行可能命令を表し、1つまたは複数のプロセッサによって実行されると、記載した動作を遂行する。一般に、コンピュータ実行可能命令は、特定の機能を遂行するまたは特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が記述されている順序は、限定と見なされることを意図せず、そして記述された動作のいずれの数字も任意の順序で組み合わせるおよび/または並行してプロセスを実施することができる。
図4は、複数のシステムコンポーネントと関連付けられたイベントの通知を受信し、およびそれに応答して、状態が以前に発生した別のイベントを反映するように指定された、イベントモデルで指定されたシステムコンポーネントのうちの1つの状態に基づいてシステムコンポーネントの状態を決定する例示的なプロセスを示している。いくつかの実施形態において、イベントモデルマネージャは、少なくとも一部のプロセスを遂行するように構成される。
402においてプロセスは、システムコンポーネントと関連付けられた第1のイベントの第1の通知を計算デバイスによって受信することを含む。いくつかの実施形態において、第1のイベントは、第1の複数のシステムコンポーネントと関連付けられている。システムコンポーネントは、プロセス、ファイル、またはスレッドとすることができる。第1の通知は、カーネルレベルのセキュリティエージェントのイベントバスから受信され得る。
404において、第1の通知を受信することに応答して、計算デバイスは、イベントモデルのシステムコンポーネントの状態を指定する。イベントモデルは、状態マシンとすることができ、そして複数の状態表現と関連付けられている。406においてその指定は、第1の通知に含まれるパラメータに基づいて指定された状態への遷移を決定することを含む。パラメータは、イベントモデル、更新されなければならないイベントモデルの状態表現部分、および遷移を指定できる。計算デバイスはその後、イベントモデルの遷移テーブル内の遷移を見つけて、イベントモデルの1つまたは複数の状態表現のシステムコンポーネントのエントリを見つける。408において、指定はさらに、遷移テーブルおよび状態表現(複数)に基づいて状態を決定することを含む。この決定された状態は、404においてイベントモデルで指定された状態である。いくつかの実施形態において、状態表現の少なくとも1つは、イベントと関連付けられているシステムコンポーネントまたはシステムコンポーネントの組み合わせの状態のみを指定するスパーステーブルである。410において、指定は、第1のイベントの通知を受信することに応答してスパーステーブルの状態を更新することを含む。更新は、スパーステーブルの行または列の状態を更新することを含み、その行または列は、システムコンポーネントと関連付けられている。
412において、計算デバイスは、複数のシステムコンポーネントと関連付けられた第2のイベントの第2の通知を受信する。第1の通知で特定されたシステムコンポーネントは、第2の通知で特定された複数のシステムコンポーネントのうちの1つである。その複数のシステムコンポーネントは、いくつかの実施形態において、第1の複数のシステムコンポーネントよりも小さくすることができる。第2の通知はまた、セキュリティエージェントのイベントバスから受信されることもできる。
414において、計算デバイスは、少なくとも一部はシステムコンポーネントの指定された状態に基づいて複数のシステムコンポーネントの状態を決定する。416において、決定は、第2の通知に含まれるパラメータに基づいてそのシステムコンポーネントの状態への遷移を決定することを含む。パラメータは、イベントモデル、更新されなければならないイベントモデルの状態表現部分、および遷移を指定できる。計算デバイスはその後、イベントモデルの遷移テーブル内の遷移を見つけて、イベントモデルの1つまたは複数の状態表現のシステムコンポーネントの組み合わせに対するエントリを見つける。418において、決定はさらに、遷移テーブルおよび状態表現(複数)に基づいて状態を決定することを含む。さらに、420において、決定は、アキュムレータに基づいて状態を決定することを含むことができる。アキュムレータは、状態表現のうちの1つによってイベントモデルのインスタンスと関連付けられ、次にそのインスタンスは、システムコンポーネントの組み合わせと関連付けられ得る。アキュムレータは、受信した第2のイベントの通知のカウントを維持し、そしてそのカウントが閾値を満たすまたは超える時の状態を決定できる。代替的には、アキュムレータは、1つまたは複数のイベントの発生に基づいて更新可能である値を保持することができ、そしてその状態は、アキュムレータによって保持された値に基づいて設定または更新され得る。422において、計算デバイスはその後、イベントモデルの状態表現で決定された状態を指定する。
424において、計算デバイスは、イベントモデルの状態表現と関連付けられた1つまたは複数のワイルドカードテーブルを更新する。各ワイルドカードテーブルは、状態表現の次元(複数)のサブセットに固有であり、そして指定された状態と関連付けられたそのサブセットのインデックスを含む。例えば、状態表現がスパーステーブルであれば、行の一部のエントリが指定された状態を含むこともあり、残りのエントリがヌルであることもある。ワイルドカードテーブル内のこのような行のエントリは、指定された状態を含むエントリのインデックスを特定する。以前にヌルであったエントリの状態を指定する場合、または以前にヌルでなかったエントリを除去する/ヌルに設定する場合、計算デバイスは、ワイルドカードテーブルを更新してその変更を反映する。
426において、計算デバイスは、第1のイベントまたは第2のイベントに応答してイベントを生成し、そして生成したイベントをセキュリティエージェントのイベントバスに送出する。イベントの生成は、アクションリストに含まれるアクションとすることができる。アクションリストは、第1のイベントまたは第2のイベントから生じた遷移またはその遷移で設定された状態と関連付けられ得る。
(結論)
発明の主題を構造的特徴および/または方法論的動作に固有の言葉で説明しているが、テンプの特許請求の範囲において定義される発明の主題は、上記の固有の特徴または動作に必ずしも限定されないことが理解されよう。むしろ、それらの固有の特徴または動作は、特許請求の範囲を実施する例示的な形として開示されている。

Claims (26)

  1. コンピュータで実施される方法であって、
    システムコンポーネントに関連付けられた第1のイベントの第1の通知を受信することと、
    イベントモデルの前記システムコンポーネントの状態を指定することと、
    前記システムコンポーネントを含む複数のシステムコンポーネントに関連付けられた第2のイベントの第2の通知を受信することと、
    前記システムコンポーネントの前記指定された状態に少なくとも部分的に基づいて、前記複数のシステムコンポーネントの状態を決定することと
    を含む、方法。
  2. 前記システムコンポーネントは、プロセス、ファイルまたはスレッドの少なくとも1つを含む、請求項1に記載の方法。
  3. 前記第1のイベントは他の複数のシステムコンポーネントに関連付けられており、前記他の複数のシステムコンポーネントは前記複数のシステムコンポーネントよりも大きい、請求項1に記載の方法。
  4. 前記イベントモデルは、状態マシンであり、複数の状態表現に関連付けられる、請求項1に記載の方法。
  5. 前記状態表現の少なくとも1つは多次元テーブルであり、各次元はシステムコンポーネントのタイプに関連付けられ、前記多次元テーブル中の少なくとも1つのエントリはシステムコンポーネントの組み合わせの状態を指定する、請求項4に記載の方法。
  6. 前記第1のイベントおよび前記第2のイベントの少なくとも1つは、第1の状態から第2の状態への遷移に関連付けられている、請求項4に記載の方法。
  7. 前記イベントモデルと関連付けられた遷移テーブルを参照照することにより、遷移が前記第1のイベントから前記第2のイベントへのものとなると決定することをさらに含む、請求項6に記載の方法。
  8. 前記イベントモデルは、イベントに関連付けられたシステムコンポーネントの状態またはイベントに関連付けられたシステムコンポーネントの組み合わせの状態を指定するのみのスパーステーブルまたはスパース行列に関連付けられている、請求項1に記載の方法。
  9. 前期イベントモデルの状態表現は、前記イベントモデルのインスタンスのインデックスでありイベントの発生に応じて更新されるインデックスを識別するワイルドカードテーブルに関連付けられている、請求項8に記載の方法。
  10. 以前にイベントに関連付けられていなかった、システムコンポーネントまたはシステムコンポーネントの組み合わせのスパーステーブルまたはスパース行列の状態を指定することに応じて、前記ワイルドカードテーブルを更新することをさらに含む、請求項9に記載の方法。
  11. 前記第1のイベントの前記通知を受信することに応じて、前記スパーステーブルの状態を更新することをさらに含み、更新することは前記スパーステーブルの行または列の状態を更新することを含む、請求項8に記載の方法。
  12. 前記決定することは、前記イベントモデルの状態表現および前記イベントモデルに関連付けられた遷移テーブルを参照することを含む、請求項1に記載の方法。
  13. コンピュータ実行可能命令を記憶した1つまたは複数の非一時的コンピュータ可読媒体であって、前記コンピュータ実行可能命令は計算デバイスにより実行されると、前記計算デバイスに、
    システムコンポーネントに関連付けられた第1のイベントの第1の通知を受信することと、
    イベントモデルの前記システムコンポーネントの状態を指定することと、
    前記システムコンポーネントを含む複数のシステムコンポーネントに関連付けられた第2のイベントの第2の通知を受信することと、
    前記システムコンポーネントの前記指定された状態に少なくとも部分的に基づいて、前記複数のシステムコンポーネントの状態を決定することと
    を含む動作を生じさせる、1つまたは複数の非一時的コンピュータ可読媒体。
  14. 前記動作は、前記第1のイベントまたは前記第2のイベントに応じて、イベントを生成して、生成した前記イベントを送出することをさらに含む、請求項13に記載の1つまたは複数の非一時的コンピュータ可読媒体。
  15. 前記動作は、前記第1のイベントまたは前記第2のイベントに関連付けられた遷移を識別することと、前記イベントモデルの遷移テーブルで前記遷移に関連付けられアクションリストを得ることと、前記アクションリストで指定された少なくとも1つのアクションを実行することとをさらに含む、請求項13に記載の1つまたは複数の非一時的コンピュータ可読媒体。
  16. システムであって、
    1つまたは複数のプロセッサと、
    前記1つまたは複数のプロセッサにより実行されるよう構成されたカーネルレベルセキュリティエージェントと
    を備え、前記カーネルレベルセキュリティエージェントは
    システムコンポーネントに関連付けられたイベントを受信および送出するよう構成されたイベントバスと、
    システムコンポーネントおよびシステムコンポーネントの組み合わせの状態を保持するよう構成されたイベントモデルと、
    前記イベントバスからイベントの通知を受信するよう、並びにイベントおよび前記イベントモデルより維持されているシステムコンポーネントの1つの状態に少なくとも部分的に基づいて、コンポーネントの組み合わせの状態を決定するよう構成されたイベントモデルマネージャと
    を含む、システム。
  17. 前記イベントバスは、前記イベントモデルマネージャにイベントを送出するときそのイベントとともにパラメータを提供する、請求項16に記載のシステム。
  18. 前記パラメータは、A)イベントモデル、B)前記イベントに基づいて前記イベントモデルのどのインスタンスが更新されることになるか、および、C)前記イベントモデルにおけるある状態から他の状態への遷移を指定する、請求項17に記載のシステム。
  19. 前記イベントモデルマネージャは、前記パラメータに基づいて前記状態を決定するよう構成されている、請求項17に記載のシステム。
  20. 前記イベントバスは、前記カーネルレベルセキュリティエージェントの構成に基づいて前記パラメータを決定する、請求項17に記載のシステム。
  21. 前記イベントバスは、1つまたは複数のフィルタを通過した前記イベントに基づいて前記パラメータをさらに決定し、前記イベントモデルマネージャへ前記イベントを複数の異なるパラメータとともに複数回送出する、請求項20に記載のシステム。
  22. 前記カーネルレベルセキュリティエージェントの更新された構成に応じて、前記システムの再起動および前記カーネルレベルセキュリティエージェントの再コンパイルをともなうこと無く、前記イベントモデルの少なくともあるコンポーネントが更新される、請求項20に記載のシステム。
  23. 前記カーネルレベルセキュリティエージェントは、
    計算デバイス上のイベントのモニタリングすること、計算デバイス上の前記イベントの一部または全てに関する状態を保持すること、セキュリティサービスに計算デバイス上の1つまたは複数のイベントを通知すること、または、計算デバイス上の1つまたは複数のイベントと関連付けられたセキュリティエクスプロイトに応じて措置を講じることの少なくとも1つを実行するように構成されている、請求項16に記載のシステム。
  24. 前記イベントモデルの前記状態は、イベントと関連付けられた情報を記述するname_valueペアに関連付けられている、請求項16に記載のシステム。
  25. 前記イベントモデルに関連付けられたアキュムレータをさらに備え、前記アキュムレータは、特定のイベントの発生のカウントを維持し、前記イベントモデルマネージャは、前記アキュムレータにより維持された前記カウントに少なくとも部分的に基づいて前記状態を決定するようさらに構成されている、請求項16に記載のシステム。
  26. 前記イベントモデルに関連付けられたアキュムレータをさらに備え、前記アキュムレータは、1つまたは複数のイベントの発生に応じて更新される値を維持し、前記イベントモデルマネージャは、前記アキュムレータにより維持された前記値に少なくとも部分的に基づいて前記状態を決定するようさらに構成されている、

    、請求項16に記載のシステム。
JP2016520139A 2013-10-08 2014-09-15 システムコンポーネントの状態を相関させるイベントモデル Pending JP2016533564A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/048,920 2013-10-08
US14/048,920 US9477835B2 (en) 2013-10-08 2013-10-08 Event model for correlating system component states
PCT/US2014/055660 WO2015053906A1 (en) 2013-10-08 2014-09-15 Event model for correlating system component states

Publications (1)

Publication Number Publication Date
JP2016533564A true JP2016533564A (ja) 2016-10-27

Family

ID=52778074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016520139A Pending JP2016533564A (ja) 2013-10-08 2014-09-15 システムコンポーネントの状態を相関させるイベントモデル

Country Status (8)

Country Link
US (1) US9477835B2 (ja)
EP (1) EP3055808B1 (ja)
JP (1) JP2016533564A (ja)
AU (1) AU2014332477A1 (ja)
CA (1) CA2923611A1 (ja)
IL (1) IL244790A0 (ja)
SG (1) SG11201601800WA (ja)
WO (1) WO2015053906A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9043903B2 (en) * 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
US9292881B2 (en) 2012-06-29 2016-03-22 Crowdstrike, Inc. Social sharing of security information in a group
US10409980B2 (en) 2012-12-27 2019-09-10 Crowdstrike, Inc. Real-time representation of security-relevant system state
US10289405B2 (en) 2014-03-20 2019-05-14 Crowdstrike, Inc. Integrity assurance and rebootless updating during runtime
US9798882B2 (en) * 2014-06-06 2017-10-24 Crowdstrike, Inc. Real-time model of states of monitored devices
US11924018B2 (en) * 2015-01-27 2024-03-05 Dell Products L.P. System for decomposing events and unstructured data
US10339316B2 (en) 2015-07-28 2019-07-02 Crowdstrike, Inc. Integrity assurance through early loading in the boot phase
WO2017147236A1 (en) 2016-02-23 2017-08-31 Carbon Black, Inc. Cybersecurity systems and techniques
CA3018368A1 (en) 2016-03-24 2017-09-28 Carbon Black, Inc. Systems and techniques for guiding a response to a cybersecurity incident
US10243972B2 (en) * 2016-04-11 2019-03-26 Crowdstrike, Inc. Correlation-based detection of exploit activity
US20170339100A1 (en) * 2016-05-18 2017-11-23 Empire Technology Development Llc Device address update based on event occurrences
US10681059B2 (en) 2016-05-25 2020-06-09 CyberOwl Limited Relating to the monitoring of network security
US10242187B1 (en) * 2016-09-14 2019-03-26 Symantec Corporation Systems and methods for providing integrated security management
US10387228B2 (en) 2017-02-21 2019-08-20 Crowdstrike, Inc. Symmetric bridge component for communications between kernel mode and user mode
US10740459B2 (en) 2017-12-28 2020-08-11 Crowdstrike, Inc. Kernel- and user-level cooperative security processing
US10728034B2 (en) * 2018-02-23 2020-07-28 Webroot Inc. Security privilege escalation exploit detection and mitigation
US10333977B1 (en) * 2018-08-23 2019-06-25 Illusive Networks Ltd. Deceiving an attacker who is harvesting credentials
US10951649B2 (en) * 2019-04-09 2021-03-16 Arbor Networks, Inc. Statistical automatic detection of malicious packets in DDoS attacks using an encoding scheme associated with payload content
US10977152B2 (en) * 2019-04-16 2021-04-13 Oracle International Corporation Rule-based continuous diagnosing and alerting from application logs
US11886585B1 (en) * 2019-09-27 2024-01-30 Musarubra Us Llc System and method for identifying and mitigating cyberattacks through malicious position-independent code execution

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003100619A1 (fr) * 2002-05-28 2003-12-04 Fujitsu Limited Dispositif, programme et procede de detection d'acces non autorise
JP2004287810A (ja) * 2003-03-20 2004-10-14 Nec Corp 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
JP2005222216A (ja) * 2004-02-04 2005-08-18 Mitsubishi Electric Corp システム監査方法、およびシステム監査装置
WO2009037897A1 (ja) * 2007-09-20 2009-03-26 Nec Corporation セキュリティ運用管理システム、セキュリティ運用管理方法およびセキュリティ運用管理プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463565B1 (en) 1999-01-05 2002-10-08 Netspeak Corporation Method for designing object-oriented table driven state machines
US7275250B1 (en) * 2001-05-01 2007-09-25 Microsoft Corporation Method and apparatus for correlating events
WO2003015000A1 (en) 2001-08-08 2003-02-20 Trivium Systems Inc. Workflow engine for automating business processes in scalable multiprocessor computer platforms
SE523140C2 (sv) 2002-07-02 2004-03-30 Telia Ab Skyddsanordning i datorsystem avsedd att skydda en fil med en säkerhetspolicy i ett system för tillämpning av säkerhetspolicy
US7668953B1 (en) * 2003-11-13 2010-02-23 Cisco Technology, Inc. Rule-based network management approaches
US7421546B2 (en) 2004-02-12 2008-09-02 Relaystar Sa/Nv Intelligent state engine system
US7974800B2 (en) * 2006-12-12 2011-07-05 International Business Machines Corporation Method, apparatus, and program for detecting the correlation between repeating events
US8631468B2 (en) 2008-11-10 2014-01-14 Samsung Electronics Co., Ltd. Active access monitoring for safer computing environments and systems
KR20100078081A (ko) 2008-12-30 2010-07-08 (주) 세인트 시큐리티 커널 기반 시스템 행위 분석을 통한 알려지지 않은 악성코드 탐지 시스템 및 방법
US20120137367A1 (en) * 2009-11-06 2012-05-31 Cataphora, Inc. Continuous anomaly detection based on behavior modeling and heterogeneous information analysis
CN101958897B (zh) * 2010-09-27 2013-10-09 北京系统工程研究所 一种安全事件关联分析方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003100619A1 (fr) * 2002-05-28 2003-12-04 Fujitsu Limited Dispositif, programme et procede de detection d'acces non autorise
JP2004287810A (ja) * 2003-03-20 2004-10-14 Nec Corp 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
JP2005222216A (ja) * 2004-02-04 2005-08-18 Mitsubishi Electric Corp システム監査方法、およびシステム監査装置
WO2009037897A1 (ja) * 2007-09-20 2009-03-26 Nec Corporation セキュリティ運用管理システム、セキュリティ運用管理方法およびセキュリティ運用管理プログラム

Also Published As

Publication number Publication date
WO2015053906A1 (en) 2015-04-16
IL244790A0 (en) 2016-04-21
US20150101044A1 (en) 2015-04-09
EP3055808A4 (en) 2017-04-26
AU2014332477A1 (en) 2016-03-24
EP3055808A1 (en) 2016-08-17
EP3055808B1 (en) 2020-08-26
SG11201601800WA (en) 2016-04-28
WO2015053906A8 (en) 2015-07-02
CA2923611A1 (en) 2015-04-16
US9477835B2 (en) 2016-10-25

Similar Documents

Publication Publication Date Title
US9477835B2 (en) Event model for correlating system component states
Hassan et al. Tactical provenance analysis for endpoint detection and response systems
US9787706B1 (en) Modular architecture for analysis database
US10409980B2 (en) Real-time representation of security-relevant system state
JP6212548B2 (ja) カーネルレベル・セキュリティ・エージェント
US9798882B2 (en) Real-time model of states of monitored devices
JP2018073423A (ja) ファイル変更マルウェア検出
EP3399455B1 (en) Parametric behavioral pattern definition
JP2017527931A (ja) マルウェア検出の方法及びそのシステム
Piplai et al. Knowledge enrichment by fusing representations for malware threat intelligence and behavior
US10574683B1 (en) Methods and system for detecting behavioral indicators of compromise in infrastructure
JP2018028907A (ja) 要求オリジネータを識別するためのリモートプロシージャリンケージにわたるシステム動作のトレーシング
US10630704B1 (en) Methods and systems for identifying infrastructure attack progressions
EP3232358B1 (en) Correlation-based detection of exploit activity
CN111183620B (zh) 入侵调查
Liu et al. A system call analysis method with mapreduce for malware detection
US20180115570A1 (en) System and method for categorizing malware
D’Arco et al. On the file recovery in systems infected by Ransomware
Nawaz et al. Metamorphic malware behavior analysis using sequential pattern mining
Bumanglag An Application of Machine Learning to Analysis of Packed Mac Malware

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170817

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180724

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20190312