JP6726706B2 - コンボリューションのポピュラリティに基づいて異常なイベントを検出するシステムおよび方法 - Google Patents

コンボリューションのポピュラリティに基づいて異常なイベントを検出するシステムおよび方法 Download PDF

Info

Publication number
JP6726706B2
JP6726706B2 JP2018131263A JP2018131263A JP6726706B2 JP 6726706 B2 JP6726706 B2 JP 6726706B2 JP 2018131263 A JP2018131263 A JP 2018131263A JP 2018131263 A JP2018131263 A JP 2018131263A JP 6726706 B2 JP6726706 B2 JP 6726706B2
Authority
JP
Japan
Prior art keywords
event
context
popularity
client
detected
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.)
Active
Application number
JP2018131263A
Other languages
English (en)
Other versions
JP2019079492A (ja
Inventor
ヴィー. モナスティルスキー アレクセイ
ヴィー. モナスティルスキー アレクセイ
エー. パヴリュシク ミハイル
エー. パヴリュシク ミハイル
エム. ロマネンコ アレクセイ
エム. ロマネンコ アレクセイ
ワイ. ゴロフキン マキシム
ワイ. ゴロフキン マキシム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
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 Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of JP2019079492A publication Critical patent/JP2019079492A/ja
Application granted granted Critical
Publication of JP6726706B2 publication Critical patent/JP6726706B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/561Virus type analysis
    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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
    • 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/1441Countermeasures against malicious traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • H04W12/128Anti-malware arrangements, e.g. protection against SMS fraud or mobile malware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • 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/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Description

本開示は、概してコンピュータセキュリティの分野に関し、特に、デバイスソフトウェアに存在する脆弱性の悪用からコンピュータ装置を防御するシステムおよび方法に関する。
今日の技術界において多様なソフトウェアアプリケーションが広く利用されている中で、悪性ソフトウェアによってコンピュータ装置に侵入する最も普及している方法の一つとして、特定の装置にインストールされたソフトウェアに存在する脆弱性の悪用がある。
脆弱性の悪用を回避するために、企業および/または個人は、脆弱性自体を除去する形式の受動的方法、および、実際の脆弱性の悪用を検出する形式の能動的方法の両方を使用する。受動的方法は既知の脆弱性に対して使用し、能動的方法は既知及び不明の脆弱性の両方に対して使用する。
従来の検出技術は、事実、既知の技術やメカニズムを使用して脆弱性の現実の悪用を検出することができる。ただし、これらの方法では残念ながら新たな悪用の原理やメカニズムを用いた新たな脆弱性の悪用技術を検出して回避することはできない。たとえば、シェルコード(ソフトウェアの脆弱性を悪用する際にペイロードとして使用されるコードの小さな断片)を実行不可能にするため、スタック内での実行を阻止する技術が開発されてきた。しかし、これに代わってreturn-oriented programming技術が出現してきた。一般的に、return-oriented programmingとは、実行不可能メモリやコード署名などのセキュリティ防御が存在する場合に攻撃者がコードを実行できるようにするコンピュータセキュリティ悪用技術である。
既存の防御技術はreturn-oriented programmingに対して無力であることが証明されている。そこで、こうした攻撃からの防御のため、米国特許出願公開第2016/0196428号明細書等に記載されている新たな解決法が開発されている。これらの新たな解決法を鑑みると、コンピュータシステムの機能の通常動作からの逸脱を検出するというニーズが依然として残っている。かかる逸脱は、ソフトウェアの脆弱性を悪用した技術によってコンピュータシステムが攻撃されたことを示している可能性がある。この課題を解決できれば、常に変化し進化する脆弱性悪用技術から離れて、技術が変化しても変わらない攻撃の外的兆候に注目できる。
本開示では、コンピュータ装置のオペレーティングシステムで発生する異常なイベントを検出するための例示的なシステムおよび方法を提供する。具体的には、本開示におけるシステムおよび方法は、ソフトウェアの実行プロセス中にクライアント装置のオペレーティングシステムで発生する異常なイベントを検出する。
例示的一側面では、コンピュータ装置のオペレーティングシステムで発生する異常なイベントを検出する方法を提供する。この側面では、当該方法は、ソフトウェアプロセスの実行中にコンピュータ装置のオペレーティングシステムで発生する少なくとも一つのイベントを検出し、ソフトウェアプロセスの実行中にオペレーティングシステムで発生した、当該少なくとも一つの検出されたイベントのコンテキストを判定し、判定された当該少なくとも一つの検出されたイベントのコンテキストについて選択された特徴に基づいて、当該少なくとも一つの検出されたイベントのコンボリューションを生成し、複数のクライアント装置で発生し検出される、当該少なくとも一つの検出されたイベントに対応する複数のイベントの頻度に関するデータを含むデータベースをポーリングすることにより、当該少なくとも一つの検出されたイベントについて生成されたコンボリューションのポピュラリティを判定し、判定されたポピュラリティが閾値以下の場合、当該少なくとも一つの検出されたイベントが異常なイベントであると判定する。
例示的方法の別の側面では、少なくとも一つの検出されたイベントのコンテキストを判定する処理において、少なくとも一つの検出されたイベントの発生時のコールスタックを判定する。ここで、コールスタックは、現在実行されている処理および機能のリスト、処理および機能を含むモジュールのリスト、および、モジュールに転送されているデータの種類や全パラメータの値のうち少なくとも一つを提供する。
例示的方法の別の側面では、少なくとも一つの検出されたイベントのコンテキストを判定する処理において、少なくとも一つの検出されたイベントの発生時に実行されているコードを含むソフトウェアプロセスのアドレス空間のダンプ、少なくとも最終分岐レコード(Last Branch Record)および分岐トレースストア(Branch Trace Store)からのジャンプに関連するデータ、および、少なくとも一つの検出されたイベントが発生する前にソフトウェアプロセスにロードされたモジュールのリストのうち少なくとも一つを判定する。
例示的方法の別の側面では、少なくとも一つの検出されたイベントのコンボリューションを生成する処理は、判定されたコンテキストについて選択された特徴の量子化、判定されたコンテキストについて選択された特徴のソート、判定されたコンテキストについて選択された特徴の結合、判定されたコンテキストについて選択された特徴のグループ化、判定されたコンテキストについて選択された特徴のデータセットの設定、判定されたコンテキストについて選択された特徴の値の表形式化、判定されたコンテキストについて選択された特徴の値の算出、判定されたコンテキストについて選択された特徴のデータ符号化、判定されたコンテキストについて選択された特徴の正規化のうち、少なくとも一つの処理を含む。
別の例示的側面では、当該方法は、判定されたコンテキストについて選択された特徴を文字列にコンボリューションしてハッシュ値を作成することによって、少なくとも一つの検出されたイベントのコンボリューションを生成し、作成したハッシュ値をデータベース内のハッシュ値のリストと比較することによって、生成されたコンボリューションのポピュラリティを判定して、複数のクライアント装置で発生している複数の検出されたイベントの頻度を判定する処理を含む。
別の例示的側面では、当該方法は、判定されたコンテキストについて選択された特徴を座標値にコンボリューションしてベクトルを作成することにより、少なくとも一つの検出されたイベントのコンボリューションを生成し、作成されたベクトル値をデータベース内のベクトルのリストと比較することによって、生成されたコンボリューションのポピュラリティを判定して、複数のクライアント装置で発生している複数の検出されたイベントの頻度を判定する処理を含む。
別の例示的側面では、当該方法は、少なくとも一つの検出されたイベントについて生成されたコンボリューションを、予め生成された安全なイベントのコンボリューションのリストと比較し、少なくとも一つの検出されたイベントについて生成されたコンボリューションが予め生成された安全なイベントのコンボリューションのリストにない場合、少なくとも一つの検出されたイベントを異常なイベントと判定する処理を含む。
当該方法の別の例示的側面では、複数の検出されたイベントの頻度は、少なくとも一つのイベントが検出された現時点での複数の検出されたイベントの合計数、および、各々少なくとも一つの検出されたイベントが発生したクライアント装置の現時点での合計数のうち少なくとも一つを含む。
当該方法の別の例示的側面では、データベースのポーリング処理は、アクセス可能なすべてのサブネットワーク内の第1の複数のクライアント装置に関連付けられるグローバルデータベースのポーリング処理、および、複数装置を含む一つのサブネットワーク内の第2の複数のクライアント装置に関連付けられるローカルデータのポーリング処理のうち少なくとも一つを含む。
別の例示的側面では、当該方法は、少なくとも一つの検出されたイベントが異常なイベントであると判定された場合にソフトウェアプロセスを削除する処理、および、隔離する処理のうち少なくとも一つを含む。
例示的一側面において、コンピュータ装置のオペレーティングシステムで発生する異常なイベントを検出するためのシステムを提供する。例示的一側面では、システムは、複数のクライアント装置内で発生する複数の検出されたイベントの頻度に関連するデータを含むデータベースとソフトウェアエージェントとを含む。ソフトウェアエージェントは、コンピュータ処理装置によって実行された場合、ソフトウェアプロセスの実行中にコンピュータ装置のオペレーティングシステムで発生する少なくとも一つのイベントを検出し、ソフトウェアプロセスの実行中にオペレーティングシステムで発生した少なくとも一つの検出されたイベントのコンテキストを判定し、判定された少なくとも一つの検出されたイベントのコンテキストの選択された特徴に基づいて、少なくとも一つの検出されたイベントのコンボリューションを生成し、複数のクライアント装置で発生する少なくとも一つの検出されたイベントに対応する複数の検出されたイベントの頻度に関するデータを含むデータベースをポーリングすることにより、少なくとも一つの検出されたイベントの生成されたコンボリューションのポピュラリティを判定し、判定されたポピュラリティが閾値以下の場合、少なくとも一つの検出されたイベントが異常なイベントであると判定する。
別の例示的側面では、コンピュータ装置で発生する異常なイベントを検出するための方法を提供する。この側面では、当該方法は、安全なコンピュータ装置のオペレーティングシステムで発生する少なくとも一つの安全なイベントを検出し、安全なコンピュータ装置のオペレーティングシステムで発生する少なくとも一つの検出された安全なイベントのコンテキストを判定し、判定された少なくとも一つの検出された安全なイベントのコンテキストの選択された特徴に基づいて、少なくとも一つの検出された安全なイベントの少なくとも一つのコンボリューションを生成し、少なくとも一つのデータベースに、少なくとも一つの検出された安全なイベントの少なくとも一つの生成されたコンボリューションを格納し、ソフトウェアプロセスの実行中にコンピュータ装置のオペレーティングシステムで発生している少なくとも一つの未分類のイベントを検出し、ソフトウェアプロセスの実行中にオペレーティングシステムで発生した少なくとも一つの検出された未分類のイベントのコンテキストを判定し、少なくとも一つの検出された未分類のイベントの判定されたコンテキストについて選択された特徴に基づいて、少なくとも一つの検出された未分類のイベントのコンボリューションを生成し、少なくとも一つの検出された未分類のイベントの生成されたコンボリューションを、少なくとも一つのデータベースに格納されている少なくとも一つの検出された安全なイベントの少なくとも一つの生成されたコンボリューションと比較することによって、少なくとも一つの検出された未分類のイベントが異常なイベントであるか判定する処理を含む。
別の例示的側面では、コンピュータ装置で発生する異常なイベントを検出するためのシステムを提供する。この側面では、システムは、少なくとも一つのデータベースと第1のソフトウェアエージェントを含む。第1のソフトウェアエージェントは、コンピュータ処理装置によって実行された場合、安全なコンピュータ装置のオペレーティングシステムで発生する少なくとも一つの安全なイベントを検出し、安全なコンピュータ装置のオペレーティングシステムで発生した少なくとも一つの検出された安全なイベントのコンテキストを判定し、判定された少なくとも一つの検出された安全なイベントのコンテキストの選択された特徴に基づいて、少なくとも一つの検出された安全なイベントの少なくとも一つのコンボリューションを生成し、少なくとも一つのデータベースに、少なくとも一つの検出された安全なイベントの少なくとも一つの生成されたコンボリューションを格納する。当該システムはさらに第2のソフトウェアエージェントを含む。第2のソフトウェアエージェントは、コンピュータ処理装置によって実行された場合、ソフトウェアプロセスの実行中にコンピュータ装置のオペレーティングシステムで発生している少なくとも一つの未分類のイベントを検出し、ソフトウェアプロセスの実行中にオペレーティングシステムで発生した少なくとも一つの検出された未分類のイベントのコンテキストを判定し、少なくとも一つの検出された未分類のイベントの判定されたコンテキストについて選択された特徴に基づいて、少なくとも一つの検出された未分類のイベントのコンボリューションを生成し、少なくとも一つの検出された未分類のイベントの生成されたコンボリューションを、少なくとも一つのデータベースに格納されている少なくとも一つの検出された安全なイベントの少なくとも一つの生成されたコンボリューションと比較することによって、少なくとも一つの検出された未分類のイベントが異常なイベントであるか判定する。
上記の例示的側面の簡単な概要により、本開示の基本的な理解が得られるであろう。この概要は、想定されるすべての側面の包括的な概観ではなく、全ての側面の主要または必要不可欠な要素を特定するものでも、本開示の側面の一部または全部の範囲を画するものでもない。本概要は、単に、以下の本開示の詳細な説明の前置きとして、1以上の側面を簡単に述べるものである。本開示の1以上の側面は、請求の範囲において説明され例示的に提示されている特徴を含む。
本明細書に組み込まれて本明細書の一部を構成する添付の図面は、本開示の1以上の例示的側面を図示するものであり、詳細な説明とともにその原理および実施形態を説明するものである。
図1は、例示的一側面に係る、クライアントにインストールされたソフトウェアの実行を監視するシステムを示すブロック図である。 図2は、例示的一側面に係る、イベントのコンボリューションのポピュラリティの評価に基づいて異常なイベントを検出する方法のフローチャートである。 図3は、例示的一側面に係る、安全なイベントのコンボリューションセットを生成する方法のフローチャートである。 図4は、例示的一側面に係る、安全なイベントのコンボリューションセットに基づいて異常なイベントを検出する方法のフローチャートである。 図5は、例示的一側面により本開示のシステムおよび方法が実行される汎用コンピュータシステム(パーソナルコンピュータまたはサーバでもよい)の例を示す図である。
以下、図を用いて複数の側面を説明する。全体を通して、同一の構成要素については同一の参照符号を使用する。以下では、説明のため、1以上の側面を十分に理解できるよう具体的な内容を数多く記載している。ただし、一部またはすべての例において、以下の側面は、以下で詳しく説明されている具体的な設計上の内容を採用しなくとも実行可能であることは明らかであろう。他の例では、1以上の側面を説明しやすくするため、周知の構造や装置をブロック図の形式で示している。以下に、これらの側面の基本的な理解が得られるよう1以上の側面の簡単な概要を記載する。この概要は、想定されるすべての側面の包括的な概観ではなく、全ての側面の主要または必要不可欠な要素を特定するものでも、本開示の側面の一部または全部の範囲を画するものでもない。
本明細書において、「モジュール」(またはプログラムモジュール)は、オペレーティングシステム・カーネルモジュールまたはダイナミック・ライブラリなど、実行されているプロセスの機能を拡張するコードを含むプログラムオブジェクトとみなしてもよい。
本明細書において、「コンボリューション」は、たとえば、イベントの特徴が文字列にコンボリューションされたインテリジェントハッシュ、あるいは、イベントの特徴が座標などにコンボリューションされたベクトルとみなしてもよい。大まかにいって、数学的および論理的演算を実行するためにイベントの特徴(以下、「特徴」)がコンボリューションされる対象であればどのようなものでもよい。たとえば、特徴のコンボリューションとは、特徴を文字列表示、ベクトル表示、あるいはこれらの組合せに任意に変換することである。
本明細書において、「イベント」は、オペレーティングシステム、サービスまたはネットワークの一定の状態について特定された現象でもよい。イベントに関する情報は、何が起こったかを示す、たとえばオペレーティングシステム(またはその一部)からの、ソフトウェアメッセージ等に含まれていてもよい。つまり、オペレーティングシステムからのイベントには、プログラムの挙動に影響するプログラム「外」のものも含まれる。このようなイベントは、順序に関係なく、プログラム実行中にいつでも発生し得ることが理解されるであろう。また、例示的側面では、システム内のイベントには、プロセスの起動、モジュールのロード、ファイル操作、レジストリ操作など、通常多くの種類やタイプが含まれる。さらに、例示的一側面では、イベントのコンテキストは、イベント発生時にその発生に直接影響するオペレーティングシステムの状態全体のことをいう。コンテキスト内容の例は以下に記載する。
一般的に、「異常な」イベントとは、これまでに知られていない状態の発生を示す、オペレーティングシステム、サービスまたはネットワークの一定の状態について特定された現象のことをいう。特定の例では、異常なイベントとは、安全なイベント(すなわち、想定される情報セキュリティポリシーの違反や防止手段の不良、または、セキュリティに関連する可能性がある、まだ知られていない状態の発生を示す、システム、サービスまたはネットワークの一定の状態について特定された現象)である。
図1は、例示的一側面に係る、クライアントにインストールされたソフトウェアの実行を監視するシステムを示すブロック図である。図示するように、ソフトウェアエージェント110(「エージェント」)は、クライアント100側にインストールされている。また、クライアント100のオペレーティングシステムには、エージェント110に接続される1以上のインタセプタ120をインストールできる。特定の側面では、当業者に知られているevent tracing for windows(ETW)120aがインタセプタとして使用できる。インタセプタ120は、オペレーティングシステム内で発生するイベントを検出し、エージェント110に直接通知を送信したり、エージェント110がアクセスするイベントログ(図1には図示されていないが、ローカルデータベース160に格納されている)にエントリしたりすることによって、この検出をエージェント110に通知する。
さらに、エージェント110は、インタセプタ120によって検出され得るシステム内の想定されるすべてのイベント、あるいは、1種類の特定イベントのみ(たとえば、プロセスの起動のみ)のいずれかについての通知を受信してもよい。エージェント110は、インタセプタ120が検出した特定イベントをエージェントが登録した後に使用される収集モジュール130を含んでもよい。収集モジュール130は、登録されたイベントのコンテキストを取得する。特定の例では、イベントのコンテキストは、イベント発生前のコールスタックおよびイベント発生時に実行されていたコードを格納するメモリ部のダンプを含む。コールスタックを使用することにより、少なくとも、所定の時点で実行されている処理および機能のリスト、当該処理および機能を格納するモジュールのリスト、ならびに、モジュールによってエクスポートされた関数呼び出し時などにモジュールに転送されているすべてのパラメータの種類および値のうち、1以上が得られる。また、コンテキストは、少なくとも最終分岐レコード(LBR)および分岐トレースストア(BTS)(参照によって本明細書に内容を取り入れている、Intel(登録商標)Microarchitecture Codename Nehalem Performance Monitoring Unit Programming Guideで説明されている)といったメモリバッファやレジスタからのジャンプに関する情報を含んでもよい。この側面では、LBRおよびBTSは、プログラム実行に関する情報(すなわち、ジャンプや実行分岐などのアドレス)を格納している(あるいは、所定のトレースを保持している)。特定の側面では、インタセプタ120はイベントを検知するとそのコンテキストを保持し、それが後にエージェント110の収集モジュール130によって取得される(たとえば、収集モジュール130に転送、あるいは、収集モジュール130からリクエストされる)。この場合、収集モジュール130は要求されたコンテキストすべてまたはコンテキストの特定の部分を独立して受信する必要はない。
例示的側面では、クライアント110およびサーバ200の一方または両方は、コンボリューション生成モジュール140をさらに備えることができる。この側面では、収集モジュール130が取得したコンテキストは、コンボリューション生成モジュール140に送信される。一例では、コンテキストは、クライアント100にあるコンボリューション生成モジュール140に送信されてもよく、別の例では、サーバ200に送信されてもよい。コンボリューション生成モジュール140は、受信したコンテキストから特徴(特徴の例については以下に記載)を抽出し、コンボリューションを生成する。同様に、コンボリューション生成モジュール140は、イベントのコンテキストを変換する(以下参照)。上述したとおり、例示的側面におけるコンボリューションは、(特徴が文字列にコンボリューションされる)特定のハッシュだけでなく(特徴が座標にコンボリューションされる)ベクトルなどを対象としたコンボリューションを含む最も広い意味に解釈される。つまり、数学的および論理的演算を実行するためにイベントの特徴がコンボリューションされるあらゆる対象のコンボリューションを含む。任意のアルゴリズムでのイベントのコンボリューションの生成を使用できる。たとえば、ロシア特許出願公開第2,580,036号等に記載されているように、取得された特徴からファイルのハッシュを生成したり、ロシア特許出願公開第2,614,557号等に記載されているように、ファイルに対してベクトルを生成したり、HTMLページに対して使用できる。ロシア特許出願公開第2,580,036号および第2,614,557号は、全体が参照によって本明細書に組み込まれている。
さらに、例示的一側面では、比較モジュール150がサーバ200および/またはクライアント110のいずれかに設置されていてもよい。比較モジュール150は、生成されたイベントのコンボリューションのポピュラリティを判定し、生成されたコンボリューションを他のコンボリューション(ローカルデータベース160又はサーバ200と通信するリモートデータベース170に保持されている安全なコンボリューションセットに含まれるコンボリューション等)と比較する。ローカルデータベース160は、イベントログや、特に、モジュールをプロセスにロードするイベントなど以前に検出されたイベントのコンテキストも保持する。
上述したシステムは、クライアント100にインストールされたソフトウェアの実行を監視するために使用される。監視の結果、クライアント100にインストールされているソフトウェアの脆弱性が悪用されたことによって起こり得る異常なイベントがオペレーティングシステムで検出される。なお、本開示における「クライアント」100という用語は、クライアント−サーバパラダイムの中で使用される(すなわち、コンピュータアーキテクチャの要素であってネットワークの要素ではない)。本開示において、クライアント100とは、サーバ200のインタフェースによって提供されるエージェント110サービスを介してリクエストする、ネットワーク内の任意のコンピュータ装置を指す。サーバ200とは、クライアント100のエージェント110と通信し、収集されたデータをエージェント110から取得し、メッセージおよび命令を送信する(よって、クライアント100にサービスを提供する)コンピュータ装置を指す。次に、クライアント100にインストールされたソフトウェアの実行を監視するために、本開示により実現できる方法について説明する。
図2は、例示的一側面に係る、イベントのコンボリューションのポピュラリティの評価に基づいて異常なイベントを検出する方法のフローチャートである。図示するように、ステップ210では、クライアント100側のオペレーティングシステムにおいて、プロセスの実行中にクライアント100のオペレーティングシステムで発生するイベントを登録するエージェント110が起動される。次に、ステップ220において、クライアント100のオペレーティングシステムにインストールされエージェント110に接続されたインタセプタ120は、オペレーティングシステムで発生しているイベントを検出してエージェント110に報告する。エージェント110は、ステップ230において、発生しているイベントを登録し、収集モジュール130によって当該イベントのコンテキストを受信する。
例示的一側面では、コンテキストは、たとえば、少なくともイベントの発生時点のコールスタックを含んでもよい。コールスタックからは、少なくとも、所定の時点で実行されている処理および機能のリスト、当該処理および機能を格納するモジュールのリスト、ならびに、モジュールに転送されているデータの種類およびすべてのパラメータの値が取得される。さらに、コールスタックは、イベントの発生時に実行されていたコードを格納するプロセスのメモリ部(アドレス空間)のダンプ、少なくともLBRおよびBTSからのジャンプに関する情報、および/または、ローカルデータベース160に保持されているイベントログなどにおいて情報がアクセス可能なイベントの発生前にプロセスにロードされたモジュールのリストなどを含んでもよい。
コンテキストを取得すると、ステップ240において、コンボリューション生成モジュール140は、この中から、これらの特徴に基づきイベントのコンボリューションを生成するための特徴を選択する。特定の例では、特徴を選択する前に、取得したコンテキストを変換する必要がある。コンテキストの変換は、解決しようとする課題や解析の目的の観点からデータの表現および形式を最適化することを目的として複数の方法およびアルゴリズムを組み合わせて行う。コンテキストの変換自体は、コンテキストを含むデータの情報コンテンツを変更することを目的としていない。変換は、データが最も効果的に使用されるような形式でコンテキストを表示するために実行される(変換の例は以下に記載)。
例示的側面において、コンボリューションを行うためのデータの変換とは、たとえば、量子化、ソート、結合(貼付)、グループ化、データセットの設定、値の表形式化、値の算出、データ符号化、正規化(スケーリング)などでもよい。
たとえば、コールスタック(ダンプについても同様;以下に例示)は以下の方法で変換される。デバッグシンボルは、コールスタックに含まれるモジュール用に取得され、コールスタックは、デバッグシンボルの使用によって正規化される。
デバッグシンボルをダンプの逆アセンブル結果に適用する前:
Figure 0006726706
デバッグシンボルを適用した後:
Figure 0006726706
逆アセンブルおよびエミュレーションによって、取得したダンプに関する一連の特徴(間接呼び出しの有無、位置独立コード、自己書き換えコードなど)が得られる。変換後、特徴が選択されコンボリューションが生成される。上述したように、使用された特徴は、ロードされたモジュールの名称およびロードの順序(イベントログから得られる);所定時間に実行される処理および機能の名称;これらのモジュールによってエクスポートされる処理および機能の呼び出し前にモジュールに転送されるパラメータの値(コールスタックから得られる);ジャンプに関する情報(ダンプ、LBR、BTSから得られる);間接呼び出しの有無、位置独立コード、自己書き換えコード(ダンプ)である。コンボリューションは、従来技術で知られているどのような方法でも生成され得る。コンテキストの変換およびコンボリューションの生成は、クライアント100側またはサーバ200側のいずれでも実行できる(これは、ソフトウェアの実行を監視するシステムによって実行される方法すべてについて言えることである)。なぜなら、これらの操作をサーバ200側で実行する場合、(変換については)コンテキストおよび(コンボリューションの生成については)特徴が最初にクライアント100によってサーバ200に送信されるからである。ステップ250において、所定の時点におけるイベントのコンボリューションのポピュラリティが判定される。例示的側面では、ポピュラリティはデータベース(ローカルデータベース160またはリモートデータベース170)をポーリングすることによって判定される。
さらに、例示的側面では、クライアント上での検出数に関係なく、コンボリューションのポピュラリティが判定されている現時点でのイベントの合計検出数、および/または、現時点でコンボリューションのポピュラリティが判定されている所定のイベントが検出されたクライアント100の数を特定の方法で算出したものを、ポピュラリティとして考慮する。つまり、たとえば一群の複数の装置におけるイベントの発生頻度を判定するため、クライアント装置100において検出されたイベントに対応する複数の検出されたイベントの頻度により、ポピュラリティを考慮する。現時点とは、特定の時点であってもよく、所定の長さの期間(1マイクロ秒、1秒など)であってもよいことが理解できるであろう。
ポピュラリティは、たとえば調査対象であるイベントが検出されたサブネットワーク内において、グローバル(アクセス可能なすべてのサブネットワーク内)またはローカル(特定のサブネットワーク内のみのポピュラリティ)であってよい。よって、イベントのコンボリューションのポピュラリティを判定するためにアクセスされるデータベース160および170は特定の数を記憶し、この数は特定の例ではサーバ200によって算出される。ステップ260では、クライアント100で検出されたイベントは、検出されたイベントのコンボリューションのポピュラリティが現時点で閾値を下回る場合、異常であると判断される。この判定は、たとえば、クライアント装置100のエージェント(比較モジュール150等)および/またはサーバ200上の比較モジュール150によって実行することができる。ステップ260の判定においてポピュラリティが閾値を越えている場合、ステップ270においてイベントは安全であると判定される。あるいは、ポピュラリティが閾値より低い場合、ステップ280においてイベントは異常であるとみなされる。以下で詳しく説明するように、検出されたイベントが異常かどうかの判定に基づき、クライアント100によって適切な措置がとられてもよい。
例示的側面では、検出されたイベントが異常か否かを判定するために使用する方法は複数あってもよい。たとえば、イベントのコンボリューションのローカル・ポピュラリティが閾値以下の場合、イベントのコンボリューションのグローバル・ポピュラリティが閾値以下の場合、および/または、イベントのコンボリューションのローカル・ポピュラリティおよびグローバル・ポピュラリティが閾値以下の場合は、検出されたイベントは異常であると判定されてもよい。
イベントのコンボリューションのグローバル・ポピュラリティおよびサブネットワークにおける(ローカル)ポピュラリティに対する閾値は別々に割り当てられる。異常と判断されたイベントは、後にさらに詳しく調査され、必要に応じてエージェント110によってクライアント100においてブロックされる。たとえば、検出されたイベントが異常と判定された場合、クライアント装置100(および/またはエージェント110)は、異常なイベントを実行したソフトウェアプロセスを削除し、ソフトウェアプロセスを隔離し、ソフトウェアプロセスが悪性であるおそれがあるとしてクライアント装置110のユーザに警告するなど、救済措置をとる。
ソフトウェアの実行を監視するシステムは、安全なイベントのコンボリューション(この結果、当該システムはいずれかの所定のイベントのコンボリューションを取得するために使用される)および安全なイベントのコンボリューションセットを生成するためにも使用される。セットが既に存在していることもあり、その場合、方法を実行する際に単に補足される。あるいは、存在しない場合もあり、方法を実行する過程で生成されて補充が開始される。
図3は、例示的一側面に係る、安全なイベントのコンボリューションセットを生成する方法のフローチャートである。ここで使用されている「安全な(secure)イベント」は、脆弱性の悪用や悪性ソフトウェアの実行によって発生したわけではない「安全な(safe)」イベントであるとみなすことができる。ステップ300では、安全であるとして知られている少なくとも一つのクライアント100側(安全なクライアントとは、悪性なソフトウェアを含んでおらず、脆弱性の悪用によって方法を実行する過程で攻撃ができないクライアントである)において、クライアント100のオペレーティングシステムで発生する少なくとも1種類のイベントを登録するエージェント110(第1のソフトウェアエージェント等)がオペレーティングシステムで起動される。ここで、イベントの種類とは、プロセスの起動、モジュールのロード、ファイル操作、レジストリ操作のうちの1以上でもよい。
ステップ310では、クライアント100のオペレーティングシステムにインストールされてエージェント110に接続されているインタセプタ120は、オペレーティングシステムで発生しているイベントを検出する。次に、ステップ320では、エージェント110は、発生しているイベントを登録し、エージェント110の収集モジュール130によってそのイベントのコンテキストを取得する。想定されるコンテキストの構成は上記に示したとおりである。ステップ330では、コンボリューション生成モジュール140がこのコンテキストから特徴を選択し、選択した特徴に基づいてイベントのコンボリューションを生成する。そして、ステップ340において、当該イベントのコンボリューションを安全なイベントのコンボリューションセットに追加する。特定の例では、ステップ330から340はサーバ200上で実行され(ステップ320においてクライアント100から取得されたコンテキストは「未処理(raw)」または既に変換された形式でサーバに送られる)、安全なイベントのコンボリューションセットはリモートデータベース170に保持されて後にいずれかの所定のクライアント100にロードされてもよい。あるいは、クライアント100は全セットをローカルデータベース160にロードすることなくデータベース170のポーリングを構成してもよい。
安全なイベントのコンボリューションセットは、クライアント100で異常なイベントを検出するために使用される。セットそのものはデータベース160内にローカルに、あるいは、リモートデータベース170内にリモートに格納されてもよく、クライアント100によってアクセスされ得る。
図4は、例示的一側面に係る、安全なイベントのコンボリューションセットに基づいて異常なイベントを検出する方法のフローチャートである。他のすべての方法と同様、ステップ400では、クライアント100側のオペレーティングシステムにおいて、クライアント100のオペレーティングシステムで発生するイベントを登録する別のエージェント110(第2のソフトウェアエージェントなど)が起動され、ステップ410では、オペレーティングシステムにインストールされてエージェント110に接続されているインタセプタ120が、オペレーティングシステムで発生したイベントを検出する。たとえば、例示的側面では、これらの新たなイベントは異常か安全かの判定がまだされていないため、「未分類(unclassified)」とみなされる。次に、ステップ420では、エージェント110は発生している未分類のイベントを登録し、そのイベントのコンテキストを取得する。想定されるコンテキストの構成は上記に示したとおりである。ステップ430では、このコンテキストから特徴が選択され、選択された特徴に基づいて未分類のイベントのコンボリューションが生成される。ステップ440では、取得された未分類のイベントのコンボリューションは、上記の方法によって生成されたセットのうち予め生成された安全なイベントのコンボリューション群と比較される。次に、ステップ450では、比較した結果、検出されたイベントの生成されたコンボリューションが、提示された安全なイベントセットのうちのイベントのコンボリューション群内のイベントのコンボリューションのいずれとも一致しない場合、未分類のイベントは異常であると判断される。そうでない場合は、未分類のイベントは、たとえばステップ460に示すように安全であるとみなされる。一側面では、未分類のイベントが異常であると判定された場合、未分類のイベントに対応するソフトウェアプロセスはクライアント装置から削除または隔離される。
本開示では、概して、エージェント110、インタセプタ120、収集モジュール130、コンボリューション生成モジュール140、および比較モジュール150は、特定用途向け集積回路(ASIC)やフィールドプログラマブルゲートアレイ(FPGA)などのハードウェアを用いて、または、マイクロプロセッサシステムやプログラム命令セット、ならびにニューロシナプティック・チップなどソフトウェアとハードウェアの組合せの形式で実現される実装置、システム、コンポーネント、コンポーネントグループを使用して実行することができる。エージェント110、インタセプタ120、収集モジュール130、コンボリューション生成モジュール140、および比較モジュール150の機能は、ハードウェアのみによって実現される場合と、機能の一部をソフトウェアで実現し一部をハードウェアで実現するという組み合わせの形式で実現することもできる。一部の変形側面では、エージェント110、インタセプタ120、収集モジュール130、コンボリューション生成モジュール140、および比較モジュール150の一部は、クライアント100およびサーバ200の両方にも適用される汎用コンピュータの処理装置(図5に図示、および、以下に記載)上で実行されてもよい。
具体的には、図5は、例示的一側面により本開示のシステムおよび方法が実行される汎用コンピュータシステム(パーソナルコンピュータまたはサーバでもよい)の例を示す図である。図示されているとおり、コンピュータシステム20は、中央処理装置21、システムメモリ22、および、中央処理装置21に対応するメモリを含む様々なシステムコンポーネントを接続するシステムバス23を備える。システムバス23は、バスメモリまたはバスメモリ制御部、周辺バス、および他のバスアーキテクチャと相互作用可能なローカルバスを含む、先行技術で周知のいずれかのバス構造のように実現される。システムメモリは、永久メモリ(ROM)24およびランダムアクセスメモリ(RAM)25を含む。基本入力/出力システム(basic input/output system;BIOS)26は、ROM24を使用してオペレーティングシステムをロードする時などの、パーソナルコンピュータ20の要素間の情報転送を確実に行う基本的な処理を含む。
パーソナルコンピュータ20は、データの読み取りおよび書き込みを行うハードディスク27、取り外し可能な磁気ディスク29の読み取りおよび書き込みを行う磁気ディスクドライブ28、ならびに、CD−ROM、DVD−ROMおよびその他の光学情報媒体等の取り外し可能な光学ディスク31の読み取りおよび書き込みを行う光学ドライブ30を含む。ハードディスク27、磁気ディスクドライブ28、および光学ドライブ30は、それぞれ、ハードディスクインタフェース32、磁気ディスクインタフェース33、および光学ドライブインタフェース34を介して、システムバス23に接続されている。ドライブおよびそれに対応するコンピュータ情報媒体は、コンピュータ命令、データ構造、プログラムモジュールおよびその他のパーソナルコンピュータ20のデータを記憶するための独立電源型モジュールである。
本開示は、ハードディスク27、取り外し可能な磁気ディスク29、および取り外し可能な光学ディスク31を使用するシステムを実行するものであるが、コントローラ55を介してシステムバス23に接続されるコンピュータによって読み取り可能な形式でデータを記憶できる他の種類の媒体56(ソリッド・ステート・ドライブ、フラッシュメモリカード、デジタルディスク、ランダムアクセスメモリ(RAM)等)も利用できることを理解されたい。
コンピュータ20は、記録されたオペレーティングシステム35が保持されているファイルシステム36、ならびに、追加プログラムアプリケーション37、その他のプログラムモジュール38およびプログラムデータ39を有する。ユーザは、入力装置(キーボード40、マウス42)を使用してパーソナルコンピュータ20に命令と情報を入力することができる。マイク、ジョイスティック、ゲームコントローラ、スキャナ等の他の入力装置(図示せず)を使用することもできる。これらの入力装置は、通常、シリアルポート46を介してコンピュータシステム20に差し込まれ、システムバスに接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などによって他の方法で接続することもできる。モニタ47やその他のタイプの表示装置も、ビデオアダプタ48などのインタフェースを介してシステムバス23に接続されている。モニタ47に加え、パーソナルコンピュータは、ラウドスピーカやプリンタ等のその他の周辺出力装置(図示せず)を装備していてもよい。
パーソナルコンピュータ20は、1以上のリモートコンピュータ49へのネットワーク接続を使用して、ネットワーク環境で動作してもよい。一台(または複数)のリモートコンピュータ49は、上述のパーソナルコンピュータ20の性質で説明した要素の大部分もしくはすべてを含むパーソナルコンピュータまたはサーバでもある。ルータ、ネットワークステーション、ピア装置またはその他のネットワークノードなど他の装置も、コンピュータネットワーク内に存在してもよい。
ネットワーク接続により、有線および/または無線ネットワークなどのローカルエリア・コンピュータネットワーク(LAN)50およびワイドエリア・コンピュータネットワーク(WAN)が形成される。これらのネットワークは、企業コンピュータネットワークおよび社内ネットワークで使用され、通常はインターネットにアクセスできる。LANまたはWANネットワークでは、パーソナルコンピュータ20は、ネットワークアダプタまたはネットワークインタフェース51を介して、ローカルエリア・ネットワーク50に接続されている。ネットワークが使用されると、パーソナルコンピュータ20は、インターネットなどのワイドエリア・コンピュータネットワークによって通信を行うモデム54やその他のモジュールを利用することができる。内部装置または外部装置であるモデム54は、シリアルポート46によってシステムバス23に接続される。なお、ネットワーク接続は単なる例示であり、ネットワークの正確な構成を示す必要はない。つまり、実際は、Bluetooth(登録商標)などの技術的通信モジュールなどによって一つのコンピュータを別のコンピュータに接続させる他の方法もある。
種々の側面において、ここに記載するシステムおよび方法は、ハードウェア、ソフトウェア、ファームウェアまたはその組み合わせで実行され得る。ソフトウェアで実行される場合、この方法は1以上の命令またはコードとして非一時的なコンピュータ可読媒体に記憶されてもよい。コンピュータ可読媒体はデータ記憶装置も含む。一例では、このコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROM、フラッシュメモリ、その他の電気、磁気または光学記憶媒体、あるいは、命令やデータ構造の形式で所望のプログラムコードを伝達または記憶するために使用し、汎用コンピュータのプロセッサからアクセス可能な、その他の媒体を含んでもよいが、これらに限定されない。
なお、明瞭化のため、各側面の一般的な特徴すべてについては開示しない。本開示の実際の実装を開発する際、開発者の具体的な目的を達成するためには実装に応じた数々の決定を行わなければならず、具体的な目的は実装や開発者によって異なることに留意されたい。こうした開発上の取り組みは、複雑で時間を要するものであるが、本発明の利益を享受する当業者にとっては日常の作業であることを理解されたい。
更に、ここで使用する用語又は表現は、あくまでも説明のためであり、限定するものではないことを理解されたい。よって、本明細書の用語又は表現は、関連技術の熟練者の知識と組み合わせて、本明細書に示す教示及び指針に照らして当業者によって解釈されたい。明細書又は特許請求の範囲における用語はいずれも、特に明記していない限り、一般的でない意味や特別な意味をもつものではない。
本明細書で開示した様々な側面は、本明細書で例示した既知のモジュールの、現在及び将来の既知の均等物を包含する。本明細書では、複数の側面及び応用例を示して説明したが、本明細書に開示した発明の概念の範囲内で、上記よりも多くの変形例が可能であることは、本発明の利益を享受する当業者にとって明らかであろう。

Claims (23)

  1. 少なくとも一つのインタセプタによって、ソフトウェアプロセスの実行に関連付けられるオペレーティングシステムで発生するイベントを検出し、
    ソフトウェアエージェントによって、前記検出されたイベントを登録前記ソフトウェアプロセスの実行に関連付けられるイベントのコンテキストであって、前記イベントの発生時のコールスタックを含む、イベントのコンテキストを取得し、
    前記イベントのコンテキストを変換して、前記コールスタックから、所定の時点で実行されているプロセスおよび機能のリスト、前記プロセスおよび機能を含むモジュールのリスト、ならびに、当該モジュールのリスト内の各モジュールに転送されているデータの種類およびすべてのパラメータの値を取得し、
    前記イベントの特定された1以上の特徴および前記変換されたイベントのコンテキストに基づいて、前記イベントのハッシュサムを生成し、
    比較モジュールを用いて、前記生成されたイベントのハッシュサムのポピュラリティを判定し、
    前記生成されたハッシュサムのポピュラリティが閾値以下であると判定された場合、前記検出されたイベントを異常として分類する
    ことを含む、オペレーティングシステムとハードウェアプロセッサとを含む少なくとも一つのコンピュータ装置によって実行される、当該オペレーティングシステムにおける異常なイベントを検出する方法。
  2. 前記イベントのコンテキストは、前記オペレーティングシステムでソフトウェアプロセスを実行する際に発生する前記イベントの発生に直接影響する、イベント発生時のオペレーティングシステムの状態全体を含む、請求項1に記載の方法
  3. 前記イベントのコンテキストは、前記イベントの発生前にソフトウェアプロセスにロードされたモジュールのリストをさらに含む、請求項に記載の方法。
  4. 前記モジュールのリストのうち少なくとも一つのモジュールが、実行開始されたプロセスの機能を拡張するコードを含むソフトウェアオブジェクトである、請求項に記載の方法。
  5. 前記モジュールのリストは、オペレーティングシステム・カーネルモジュールおよびダイナミック・ライブラリを含む、請求項に記載の方法。
  6. 前記イベントのコンテキストは、前記イベントの発生時に実行されたコードを含む前記ソフトウェアプロセスのメモリ部のダンプをさらに含む、請求項1に記載の方法。
  7. 前記イベントの特定された特徴として、前記ソフトウェアプロセスのメモリ部のダンプから、間接呼び出しの有無、位置独立コード、および自己書き換えコードを含む1以上の特徴を取得することをさらに含む、請求項に記載の方法。
  8. 前記イベントのコンテキストは、最終分岐レコード(LBR:Last Branch Record)ファシリティおよび分岐トレースストア(BTS: Branch Trace Store)の少なくとも一つからのジャンプに関する情報をさらに含む、請求項1に記載の方法。
  9. 前記インタセプタは少なくともイベント追跡モジュールを含む、請求項1に記載の方法。
  10. 前記エージェントによって、前記検出されたイベントを登録して、前記ソフトウェアプロセスの実行に関連付けられる前記イベントのコンテキストを取得する処理においてさらに、
    前記イベントの特徴の特定が可能な形でコンテキストを表示するよう、前記取得したコンテキストを変換することを含む、請求項1に記載の方法。
  11. 前記変換は、前記特定された特徴の量子化、前記特定された特徴のソート、前記特定された特徴の結合、貼付、前記特定された特徴のグループ化、前記特定された特徴のデータセットの設定、値の表置換、前記特定された特徴の値の算出、前記特定された特徴のデータ符号化、前記特定された特徴の正規化のうち少なくとも一つを含む、請求項10に記載の方法。
  12. 前記変換は、前記特定された特徴の正規化を含み、コールスタックに含まれるモジュール用のデバッグシンボルおよび前記ソフトウェアプロセスに関連付けられるメモリ部のダンプに関する情報を前記正規化のために取得する、請求項10に記載の方法。
  13. 前記コンテキストは、逆アセンブルおよびエミュレーションによって変換される、請求項10に記載の方法。
  14. 前記特定された特徴は、間接呼び出しの有無、位置独立コード、および自己書き換えコードのうち少なくとも一つを含む、請求項13に記載の方法。
  15. 前記イベントが検出されたコンピュータ装置が存在するサブネットワークのコンテキストにおいてハッシュサムのポピュラリティを判定する、請求項1に記載の方法。
  16. 前記イベントのハッシュサムのグローバル・ポピュラリティを判定することをさらに含む、請求項1に記載の方法。
  17. 前記イベントのハッシュサムのポピュラリティ判定処理は、
    前記イベントのハッシュサムのポピュラリティに関する情報を含むデータベースをクエリし、
    前記ポピュラリティに関する情報がデータベースにないと判定された場合、現時点で収集されている検出イベント数およびクライアント総数についてネットワークから情報を収集し、ポピュラリティを算出することを含む請求項1に記載の方法。
  18. (a)前記ソフトウェアプロセスの実行に関連付けられる前記オペレーティングシステムで発生する前記イベントを検出し、(b)前記検出されたイベントを登録して、前記ソフトウェアプロセスの実行に関連付けられる前記イベントのコンテキストを取得するステップが、クライアントサーバシステムのクライアントとして前記コンピュータ装置によって行われ、
    前記イベントの特定された1以上の特徴に基づ、前記イベントのハッシュサムの生成、前記比較モジュールを用い、前記生成されたイベントのハッシュサムのポピュラリティの判定、および、前記生成されたハッシュサムのポピュラリティが閾値以下であると判定された場合、前記検出されたイベントを異常とする類が、前記クライアントサーバシステムのサーバによって行われ、
    前記イベントの特定された1以上の特徴に基づ前記イベントのハッシュサムの生成は、前記サーバによって前記クライアントの前記エージェントから前記イベントのコンテキストを取得することをさらに含む、
    請求項1に記載の方法。
  19. 記ソフトウェアプロセスの実行に対応し前記オペレーティングシステムで発生する前記イベント出、前記検出されたイベント登録および前記ソフトウェアプロセスの実行に関連付けられるイベントのコンテキスト得、ならびに、前記イベントの特定された1以上の特徴に基づ、前記イベントのハッシュサムの成が、クライアントサーバシステムのクライアントとして前記コンピュータ装置によって行われ、
    記比較モジュールを用い、前記生成されたイベントのハッシュサムのポピュラリティ定、および、前記生成されたハッシュサムのポピュラリティが閾値以下であると判定された場合、前記検出されたイベントを異常とする類が、前記クライアントサーバシステムのサーバによって行われ、
    前記生成されたハッシュサムは、前記サーバによって前記クライアントの前記エージェントから取得する、請求項1に記載の方法。
  20. 前記ハッシュサムは、前記イベントのハッシュおよびユークリッド空間内の前記イベントのベクトルのうち少なくとも一つを含む、請求項1に記載の方法。
  21. エージェントおよびオペレーティングシステムにインストールされた少なくとも一つのインタセプタを含むクライアント装置を備え、該クライアント装置は、
    少なくとも一つのインタセプタによって、ソフトウェアプロセスの実行に関連付けられるイベントであって、前記クライアント装置のオペレーティングシステムで発生するイベントを検出し、
    前記クライアント装置のエージェントによって、前記検出されたイベントを登録して、前記ソフトウェアプロセスの実行に関連付けられて前記イベントの発生時のコールスタックを含むイベントのコンテキストを取得し、
    サーバは、
    前記コールスタックから、所定の時点で実行されているプロセスおよび機能のリスト、前記プロセスおよび機能を含むモジュールのリスト、ならびに、当該モジュールのリスト内の各モジュールに転送されているデータの種類およびすべてのパラメータの値を取得するため、前記イベントのコンテキストを変換し、
    前記イベントの特定された1以上の特徴および前記変換されたイベントのコンテキストに基づいて生成された前記イベントのハッシュサムを取得し、
    比較モジュールを用いて、前記生成されたイベントのハッシュサムのポピュラリティを判定し、
    前記生成されたハッシュサムのポピュラリティが閾値以下であると判定された場合、前記検出されたイベントを異常として分類する、
    ハードウェアプロセッサを含むコンピュータ装置のオペレーティングシステムにおける異常なイベントを検出するシステム。
  22. 前記イベントのハッシュサムは、前記イベントの特定された1以上の特徴に基づいて前記クライアント装置によって生成され、前記エージェントを用いて前記クライアント装置から取得されることを含む、請求項21に記載のシステム。
  23. 前記イベントのハッシュサムは、前記イベントの特定された1以上の特徴に基づいて前記サーバによって生成され、前記イベントのコンテキストは前記クライアント装置の前記エージェントから前記サーバによって取得されることを含む、請求項21に記載のシステム。
JP2018131263A 2017-06-16 2018-07-11 コンボリューションのポピュラリティに基づいて異常なイベントを検出するシステムおよび方法 Active JP6726706B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
RU2017121120A RU2651196C1 (ru) 2017-06-16 2017-06-16 Способ обнаружения аномальных событий по популярности свертки события
US15/720,334 2017-09-29
US15/720,334 US10489586B2 (en) 2017-06-16 2017-09-29 System and method of detecting anomalous events
US16/015,654 US10558801B2 (en) 2017-06-16 2018-06-22 System and method for detection of anomalous events based on popularity of their convolutions
US16/015,654 2018-06-22

Publications (2)

Publication Number Publication Date
JP2019079492A JP2019079492A (ja) 2019-05-23
JP6726706B2 true JP6726706B2 (ja) 2020-07-22

Family

ID=61976793

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017198983A Active JP6698056B2 (ja) 2017-06-16 2017-10-13 異常な事象を検出するシステム及び方法
JP2018131263A Active JP6726706B2 (ja) 2017-06-16 2018-07-11 コンボリューションのポピュラリティに基づいて異常なイベントを検出するシステムおよび方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017198983A Active JP6698056B2 (ja) 2017-06-16 2017-10-13 異常な事象を検出するシステム及び方法

Country Status (5)

Country Link
US (5) US10489586B2 (ja)
EP (1) EP3416083B1 (ja)
JP (2) JP6698056B2 (ja)
CN (2) CN109145592B (ja)
RU (1) RU2651196C1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2574209B (en) * 2018-05-30 2020-12-16 F Secure Corp Controlling Threats on a Computer System by Searching for Matching Events on other Endpoints
WO2019236088A1 (en) * 2018-06-07 2019-12-12 Hewlett-Packard Development Company, L.P. Comparing a generated event with a received record
US10911479B2 (en) 2018-08-06 2021-02-02 Microsoft Technology Licensing, Llc Real-time mitigations for unfamiliar threat scenarios
US10826756B2 (en) * 2018-08-06 2020-11-03 Microsoft Technology Licensing, Llc Automatic generation of threat remediation steps by crowd sourcing security solutions
CN109886016B (zh) * 2018-12-27 2021-01-12 慧安金科(北京)科技有限公司 用于检测异常数据的方法、设备和计算机可读存储介质
US11055405B1 (en) * 2019-04-30 2021-07-06 Splunk Inc. Anomaly event detection using frequent patterns
WO2021144978A1 (ja) * 2020-01-17 2021-07-22 三菱電機株式会社 攻撃推定装置、攻撃推定方法及び攻撃推定プログラム
CN112364284B (zh) * 2020-11-23 2024-01-30 北京八分量信息科技有限公司 基于上下文进行异常侦测的方法、装置及相关产品
US12039017B2 (en) 2021-10-20 2024-07-16 Palo Alto Networks (Israel Analytics) Ltd. User entity normalization and association
US20230269256A1 (en) * 2022-02-21 2023-08-24 Palo Alto Networks (Israel Analytics) Ltd. Agent prevention augmentation based on organizational learning

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5023341A (en) * 1989-09-19 1991-06-11 Allergan, Inc. Compounds having a disubstituted acetylene moiety and retinoic acid-like biological activity
US7448084B1 (en) * 2002-01-25 2008-11-04 The Trustees Of Columbia University In The City Of New York System and methods for detecting intrusions in a computer system by monitoring operating system registry accesses
US7246156B2 (en) * 2003-06-09 2007-07-17 Industrial Defender, Inc. Method and computer program product for monitoring an industrial network
US8549638B2 (en) * 2004-06-14 2013-10-01 Fireeye, Inc. System and method of containing computer worms
WO2008055156A2 (en) * 2006-10-30 2008-05-08 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
JP5081480B2 (ja) 2007-03-28 2012-11-28 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法
US8732825B2 (en) * 2008-05-28 2014-05-20 Symantec Corporation Intelligent hashes for centralized malware detection
US8566943B2 (en) * 2009-10-01 2013-10-22 Kaspersky Lab, Zao Asynchronous processing of events for malware detection
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
US8584235B2 (en) * 2011-11-02 2013-11-12 Bitdefender IPR Management Ltd. Fuzzy whitelisting anti-malware systems and methods
US8839435B1 (en) 2011-11-04 2014-09-16 Cisco Technology, Inc. Event-based attack detection
CN107103238A (zh) * 2012-02-29 2017-08-29 卡巴斯基实验室封闭式股份公司 用于保护计算机系统免遭恶意对象活动侵害的系统和方法
US9378390B2 (en) * 2012-03-30 2016-06-28 Nokia Technologies Oy Method and apparatus for policy adaption based on application policy compliance analysis
CA2809516C (en) 2013-03-13 2016-11-08 Khalid Nawaf Alharbi Preventing stack buffer overflow attacks
US9355247B1 (en) 2013-03-13 2016-05-31 Fireeye, Inc. File extraction from memory dump for malicious content analysis
RU2580036C2 (ru) 2013-06-28 2016-04-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ создания гибкой свертки для обнаружения вредоносных программ
US9166997B1 (en) 2013-09-19 2015-10-20 Symantec Corporation Systems and methods for reducing false positives when using event-correlation graphs to detect attacks on computing systems
US9652362B2 (en) * 2013-12-06 2017-05-16 Qualcomm Incorporated Methods and systems of using application-specific and application-type-specific models for the efficient classification of mobile device behaviors
US10284591B2 (en) 2014-01-27 2019-05-07 Webroot Inc. Detecting and preventing execution of software exploits
US9977897B2 (en) 2014-07-16 2018-05-22 Leviathan Security Group, Inc. System and method for detecting stack pivot programming exploit
US9710648B2 (en) * 2014-08-11 2017-07-18 Sentinel Labs Israel Ltd. Method of malware detection and system thereof
RU2614557C2 (ru) * 2015-06-30 2017-03-28 Закрытое акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносных файлов на мобильных устройствах
US9817971B2 (en) 2015-10-29 2017-11-14 International Business Machines Corporation Using call stack snapshots to detect anomalous computer behavior
RU2634173C1 (ru) 2016-06-24 2017-10-24 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения приложения удалённого администрирования

Also Published As

Publication number Publication date
JP6698056B2 (ja) 2020-05-27
US20200104487A1 (en) 2020-04-02
JP2019079492A (ja) 2019-05-23
CN109583194B (zh) 2023-08-22
EP3416083B1 (en) 2020-01-15
EP3416083A1 (en) 2018-12-19
CN109145592B (zh) 2022-09-13
US10489586B2 (en) 2019-11-26
US20180365419A1 (en) 2018-12-20
US10528727B2 (en) 2020-01-07
JP2019003598A (ja) 2019-01-10
CN109583194A (zh) 2019-04-05
RU2651196C1 (ru) 2018-04-18
US11366896B2 (en) 2022-06-21
US20180365415A1 (en) 2018-12-20
US20180365416A1 (en) 2018-12-20
US10558801B2 (en) 2020-02-11
CN109145592A (zh) 2019-01-04
US20200125726A1 (en) 2020-04-23
US11216555B2 (en) 2022-01-04

Similar Documents

Publication Publication Date Title
JP6726706B2 (ja) コンボリューションのポピュラリティに基づいて異常なイベントを検出するシステムおよび方法
US11277423B2 (en) Anomaly-based malicious-behavior detection
RU2706896C1 (ru) Система и способ выявления вредоносных файлов с использованием модели обучения, обученной на одном вредоносном файле
US10133866B1 (en) System and method for triggering analysis of an object for malware in response to modification of that object
CN114787805A (zh) 系统事件的自动语义建模
US20210200870A1 (en) Performing threat detection by synergistically combining results of static file analysis and behavior analysis
RU2617654C2 (ru) Система и способ формирования набора антивирусных записей, используемых для обнаружения вредоносных файлов на компьютере пользователя
US10216934B2 (en) Inferential exploit attempt detection
JP2020115320A (ja) 悪意あるファイルを検出するためのシステムおよび方法
US10839074B2 (en) System and method of adapting patterns of dangerous behavior of programs to the computer systems of users
RU2706883C1 (ru) Система и способ снижения количества ложных срабатываний классифицирующих алгоритмов
US8060577B1 (en) Method and system for employing user input for file classification and malware identification
CN109948335B (zh) 用于检测计算机系统中的恶意活动的系统和方法
US11003772B2 (en) System and method for adapting patterns of malicious program behavior from groups of computer systems
US8364776B1 (en) Method and system for employing user input for website classification
CN108156127B (zh) 网络攻击模式的判断装置、判断方法及其计算机可读取储存媒体
CN111183620A (zh) 入侵调查
WO2018213061A2 (en) Timely causality analysis in homegeneous enterprise hosts
US9785775B1 (en) Malware management
RU2673711C1 (ru) Способ обнаружения аномальных событий на основании набора сверток безопасных событий
Gupta et al. Developing a blockchain-based and distributed database-oriented multi-malware detection engine
EP3462354B1 (en) System and method for detection of anomalous events based on popularity of their convolutions
US20180341772A1 (en) Non-transitory computer-readable storage medium, monitoring method, and information processing apparatus
RU2652448C1 (ru) Система и способ адаптирования шаблонов опасного поведения программ к компьютерным системам пользователей
US20240220619A1 (en) Systems and methods for selecting client backup files for maliciousness analysis

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190129

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200212

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200623

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200629

R150 Certificate of patent or registration of utility model

Ref document number: 6726706

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250