JP6817469B2 - コンピュータシステムの脅威検出を改善するためのアプリケーション間依存性分析 - Google Patents

コンピュータシステムの脅威検出を改善するためのアプリケーション間依存性分析 Download PDF

Info

Publication number
JP6817469B2
JP6817469B2 JP2019565938A JP2019565938A JP6817469B2 JP 6817469 B2 JP6817469 B2 JP 6817469B2 JP 2019565938 A JP2019565938 A JP 2019565938A JP 2019565938 A JP2019565938 A JP 2019565938A JP 6817469 B2 JP6817469 B2 JP 6817469B2
Authority
JP
Japan
Prior art keywords
tracking
analysis
query
tdl
follow
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
JP2019565938A
Other languages
English (en)
Other versions
JP2020522799A (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.)
NEC Laboratories America Inc
Original Assignee
NEC Laboratories America Inc
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 NEC Laboratories America Inc filed Critical NEC Laboratories America Inc
Publication of JP2020522799A publication Critical patent/JP2020522799A/ja
Application granted granted Critical
Publication of JP6817469B2 publication Critical patent/JP6817469B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

(関連出願情報)
本出願は2017年8月9日に出願された仮出願シリアル番号62/543,032、2017年11月29日に出願された仮出願シリアル番号62/591,819、および2018年6月12日に出願された非仮出願シリアル番号16/006,164の優先権を主張し、これらは全て、その全体が参照により本明細書に組み込まれる。
本発明はデータ処理に関し、より詳細には、コンピュータシステムの脅威検出を改善するためのアプリケーション間依存性分析のためのシステムおよび方法に関する。
高度持続的脅威(APT)攻撃などのますます巧妙化する攻撃はそれらのステルスおよび複雑さのために、企業情報技術(IT)セキュリティにとって深刻な課題となっている。APT攻撃は、初期段階、内部調査、横方向移動、最終的にはミッション完了を含む複数の段階で行われる。多くの場合、APT攻撃は、企業ネットワーク内の複数のアプリケーションおよびホストを含むことが多いプロセスによって、企業ネットワークが徐々に侵害される可能性がある。
本発明の一態様によれば、コンピュータシステムのイベントに対してアプリケーション間依存性分析を実行することによって、コンピュータシステムにおける脅威検出を改善するためのシステムが提供される。このシステムは、プログラムコードを記憶するためのメモリ装置を含む。システムはまた、メモリ装置に動作可能に結合されたプロセッサを含む。プロセッサは追跡分析を実行するための追跡記述言語(TDL)クエリを受信するようにメモリ装置に格納されたプログラムコードを実行するように構成され、TDLクエリは追跡分析を実行するための一般的な制約を含み、追跡宣言は分析されるコンピュータシステムの少なくともイベントを指定し、出力仕様は追跡分析によって生成された追跡グラフを格納する位置を指定し、言語パーサを使用してTDLクエリを構文解析し、漸進的追跡方法を実施することによって構文解析されたTDLクエリに基づいて追跡分析を実行し、追跡分析の結果を生成し、TDLクエリの制約を満たさないすべてのノードを除去し、追跡分析の結果をクリーニングすることによって追跡グラフを生成し、追跡グラフに基いて、追跡グラフおよび追跡グラフの最適化されたバージョンのうちの少なくとも1つを含むクエリ結果を、インタフェースを介して出力する。
本発明の別の態様によれば、コンピュータシステムのイベントに対してアプリケーション間依存性分析を実行することによって、コンピュータシステムにおける脅威検出を改善するためのコンピュータで実施される方法が提供される。この方法は、メモリに動作可能に結合されたプロセッサによって、追跡分析を実行するための追跡記述言語(TDL)クエリと、追跡分析を実行するための一般的な制約を含むTDLクエリと、分析されるコンピュータシステムの少なくともイベントを指定する追跡宣言と、追跡分析によって生成された追跡グラフを格納する位置を指定する出力仕様と、を受信することと、プロセッサによって、言語パーサを使用してTDLクエリを構文解析することと、プロセッサによって、追跡分析の結果を生成するために漸進的追跡方法を実施することを含み、構文分析されたTDLクエリに基づいて追跡分析を実行することと、プロセッサによって、TDLクエリの制約を満たさないすべてのノードを除去することを含み、追跡分析の結果をクリーニングすることによって追跡グラフを生成することと、プロセッサによって、追跡グラフに基づいて、追跡グラフおよび追跡グラフの最適化されたバージョンのうちの少なくとも1つを含むクエリ結果を、インタフェースを介して出力することと、を含む。
本発明のさらに別の態様によれば、コンピュータプログラム製品が提供される。コンピュータプログラム製品は、プログラム命令によって具体化されたプログラム命令を有する非一時的なコンピュータ可読記憶媒体を含む。プログラム命令はコンピュータによって実行可能であり、コンピュータに、コンピュータシステムのイベントに対してアプリケーション間依存性分析を実行することによって、コンピュータシステムにおける脅威検出を改善する方法を実行させる。この方法は、追跡分析を実行するための追跡記述言語(TDL)クエリと、追跡分析を実行するための一般的な制約を含むTDLクエリと、分析されるコンピュータシステムの少なくともイベントを指定する追跡宣言と、追跡分析によって生成された追跡グラフを格納する位置を指定する出力仕様と、を受信することと、言語パーサを使用してTDLクエリを構文解析することと、追跡分析の結果を生成するために漸進的追跡方法を実施することを含み、構文解析されたTDLクエリに基づいて追跡分析を実行することと、TDLクエリの制約を満たさないすべてのノードを除去することを含み、追跡分析の結果をクリーニングすることによって追跡グラフを生成することと、追跡グラフに基づいて、追跡グラフおよび追跡グラフの最適化されたバージョンのうちの少なくとも1つを含むクエリ結果を、インタフェースを介して出力することと、を含む。
これらおよび他の特徴および利点は添付の図面に関連して読まれる、その例示的な実施形態の以下の詳細な説明から明らかになるであろう。
本開示は、以下の図面を参照して、好ましい実施形態の以下の説明において詳細を提供する。
本発明の一実施形態による、本発明を適用することができる例示的な処理システム100を示すブロック図である。 本発明の一実施形態による、攻撃例の例示的な依存性グラフを示すブロック図である。 本発明の一実施形態による、例示的なシステムアーキテクチャを示す高レベルブロック図である。 本発明の一実施形態による、例示的なTDLクエリを示す図である。 本発明の一実施形態による、実行ウィンドウの例示的な分割を示す図である。 本発明の一実施形態による、アプリケーション間依存性分析のための例示的なシステム/方法を示すブロック/フロー図である。
本明細書で説明する実施形態による追跡分析は、異なるアプリケーションとホストとの間のデータフロー(例えば、アプリケーション間データフローまたは情報フロー)に関連するシステムイベント(例えば、システムアクティビティを記録しているシステムアクティビティログ)を監視および追跡することによって、複数のプロセスまたはアプリケーション(例えば、APT攻撃)を含む巧妙なシステムレベルセキュリティ脅威に対して検出し、防御するために使用される。システムイベントはシステムオブジェクト(例えば、プロセス、ファイル、およびネットワーク通信インスタンス)間の対話である。システムイベントは(1)サブジェクト(例えば、対話を開始するプロセスインスタンス)、(2)サブジェクトが対話するシステムオブジェクト、(3)データフローの方向(サブジェクトからシステムオブジェクトへの、またはその逆の)、および(4)対話のタイムスタンプの4つの属性を含むことができる。
本明細書で説明される実施形態による、複数のセキュリティアラートを接続し、攻撃シナリオを再構築するために使用され得る1つの技術は、後戻り追跡である。後戻り追跡技術は、システムイベント間の後方イベント依存性を追跡することができる。事象Aは(1)Aの前にBが発生し、Bのデータフローの宛先がAのデータフローの源である場合、別の事象Bに後方依存するといわれる。後方追跡技術は、それらの依存性に基づいてシステム事象を接続する追跡グラフを生成することができる。例えば、システムイベントは有向グラフとして編成することができ、グラフのノードはシステムオブジェクトであり、エッジは開始タイムスタンプを有するシステムイベントであり、追跡分析は有向グラフを検索することによってデータフローを回復することができる。異常が検出された場合、異常の根本原因を回復し、脅威があるかどうかを判定するために追跡分析が使用され得る。
脅威を検出するために追跡分析を実行することに関連する様々な問題が生じる可能性があり、それによって、例えば企業環境において脅威を検出するための追跡分析の有用性が制約される。例えば、APT攻撃のような脅威を検出することは、いくつかの追跡分析の反復を含むことができる。各反復が実行するのに数時間(または数日)を要する場合、脅威は企業環境に既にかなりの損害を引き起こした後に検出され得る。したがって、追跡分析速度は複雑な攻撃(例えば、数時間または数日)に対して法外に長くなり得る。他の例として、追跡分析の結果は何十万ものアイテムを含むことができ、アイテムの多くは、セキュリティ脅威とは無関係である。したがって、追跡分析技術は多くの雑音を含む追跡グラフを生成することができ、これは、システム攻撃を発見するための追跡分析の結果の効果的な解釈を妨げることができる。したがって、追跡分析の結果は、システム攻撃のデータフローが非常に複雑になり得るので、解釈することが困難であり得る。
システム攻撃を検出するための追跡分析に関連する上記の問題(例えば、追跡分析速度および結果解釈の困難性)は、現代のオペレーティングシステムおよび企業環境の複雑さによって引き起こされる。例えば、企業環境では、攻撃に関連するデータフローが多くのアプリケーションおよびホストを含み得る。さらに、現代のオペレーティングシステムはアプリケーション全体にわたる多くのノイズデータフローを生成することができ、攻撃の足跡は、大量のシステムノイズの背後に隠すことができる。例えば、ユーザがフォルダを開くと、フォルダ内の各ファイルからデータフローパスを作成することができる(例えば、フォルダが10000のファイルを含む場合、10000のデータフローパスが作成される)。このようなデータフローパスは追跡分析中に追跡することもでき、これは、非常に遅いプロセスをもたらし、解釈不能な結果を生成する可能性がある。さらに、これらのデータフローパスは、セキュリティ脅威とは無関係であるため、攻撃を検出し防御する状況ではノイズである。
システムノイズを除去することは、追跡分析時間を著しく短縮し、はるかに解釈可能な結果を生成することができる。しかしながら、システムノイズを除去する(例えば、フィルタリングする)ための厳密に自動化された技術の使用は不利益に直面する。例えば、攻撃者は、そのような厳密に自動化された技術の利益を利用する新しい攻撃を設計することができる。さらに、追跡分析技術はシステムアクティビティに関する意味レベルの情報を欠いている可能性があり、これは、効果的に追跡分析に自動的に統合することができない。例えば、多くの場合、追跡はライブラリファイル(例えば、.dllファイル)に到達し得る。これらのファイルは、多くの場合、複数のアプリケーションによって共有され、したがって、攻撃に関係しないデータフローを導入する可能性がある。しかしながら、自動化された技術は、全ての.dllが危険にさらされる可能性があるため、追跡分析から全ての.dllファイルを直接除去することはできない。.dllを除去する前に、ファイルの追跡分析は、未だにマニュアル検査技術を利用して、.dllファイルに不審な変更がないことを確認する必要がある。
コンピュータシステム(例えば、企業環境)上の攻撃(例えば、APT)を検出するための追跡分析技術(例えば、後戻り追跡)に関連する少なくとも上記の懸念および問題に対処するために、本発明の態様は、攻撃検出を改善するためのアプリケーション間データフロークエリシステムおよび方法を提供する。例えば、本明細書で説明される実施形態は悪意のある行動(例えば、APT脅威)を良性の行動(例えば、通常の企業環境動作)から区別する能力を改善するために、知識(例えば、セキュリティの専門知識)を効果的に組み込むことができる。
本明細書に記載の実施形態は、追跡分析をカスタマイズする方法、ならびに追跡分析を「調整可能」にする方法を提供する。すなわち、本明細書で説明される実施形態による攻撃シナリオを再構築するために追跡分析技術を使用することは、「デバッギング」処理と見做すことができ、その結果、追跡分析処理を漸進的に監視することができ、データフローの中間結果を検査することができ、処理対話を統合して追跡分析への案内を提供することができる。したがって、本明細書に記載される実施形態は、セキュリティ専門家が追跡分析を対話的かつ漸進的にデバッグすることを可能にする。
追跡分析をカスタマイズするためのインタフェースを提供するために、本明細書で説明される実施形態は、本明細書で追跡記述言語(TDL)と呼ばれるドメイン固有言語(DSL)を利用する。TDLはセキュリティ専門家によって使用され、追跡分析をカスタマイズするために、それらのドメイン知識(例えば、無関係なデータフローを除外するか、または攻撃経路の一部を指定すること)を提供することができる。これらの仕様は、例えば、システムノイズを取り除くために、追跡分析に自動的に組み込まれ得る。例えば、追跡分析(例えば、追跡分析グラフ)の結果から偽陽性を取り除くことができる。
上記の課題にさらに対処するために、本明細書に記載の実施形態は追跡分析の結果を漸進的に報告し、追跡分析を対話型処理に変換することができる。例えば、追跡分析の実行を一時停止することができ、中間結果に基づいてTDLクエリを修正してノイズを除去することができ、修正されたTDLクエリに基づいて追跡分析の実行を再開することができる。
漸進的な追跡分析の滑らかさを確保するために、本明細書で説明される実施形態は追跡分析の各ステップをいくつかの部分に適切に分割し、各部分が終了するのに多くの時間を必要としないことを確保し、結果をリアルタイムまたは略リアルタイムで滑らかに更新することができる。そうすることによって、少なくともいくつかの結果を迅速に得ることができる。ヒントは追跡分析を加速するために発見することができ、追跡分析プロセス全体が終了する前に追跡仕様を最適化することを可能にする。
本明細書に記載される実施形態は追跡分析の速度を加速し、結果の簡潔さを高めることができる。例えば、本明細書に記載される実施形態はマルチスレッド追跡分析を可能にするための改善された並列化スキームを提供することができ、それによって追跡分析の速度を増加させる。したがって、本明細書で説明する実施形態によれば、追跡分析からのより簡潔かつ可読な結果が生成され得るし、それによって攻撃からの回復に関連するコストを低減し得る。
図1は、本発明の一実施形態による、本発明の原理を適用することができる例示的な処理システム100を示すブロック図である。処理システム100は、システムバス102を介して他の構成要素に動作可能に結合された少なくとも1つのプロセッサ(CPU)104を含む。キャッシュ106、読出し専用メモリ(ROM)108、ランダムアクセスメモリ(RAM)110、入出力(I/O)アダプタ120、サウンドアダプタ130、ネットワークアダプタ140、ユーザインタフェースアダプタ150、およびディスプレイアダプタ160が、システムバス102に動作可能に結合される。少なくとも1つのグラフィック処理ユニット(GPU)194は、システムバス102に動作可能に結合される。
第1の記憶装置122および第2の記憶装置124は、I/Oアダプタ120によってシステムバス102に動作可能に結合される。記憶装置122および124は、ディスク記憶装置(例えば、磁気または光ディスク記憶装置)、ソリッドステート磁気装置などの何れであってもよい。記憶装置122および124は、同じタイプの記憶装置であっても、異なるタイプの記憶装置であってもよい。
スピーカ132は、サウンドアダプタ130によってシステムバス102に動作可能に結合される。トランシーバ142は、ネットワークアダプタ140によってシステムバス102に動作可能に結合される。ディスプレイ装置162は、ディスプレイアダプタ160によってシステムバス102に動作可能に結合される。
第1のユーザ入力装置152、第2のユーザ入力装置154、および第3のユーザ入力装置156は、ユーザインタフェースアダプタ150によってシステムバス102に動作可能に結合される。ユーザ入力装置152、154、および156は、キーボード、マウス、キーパッド、画像キャプチャ装置、モーションセンシング装置、マイクロフォン、前述の装置のうちの少なくとも2つの機能を組み込んだ装置などの何れかとすることができる。もちろん、本発明の精神を維持しながら、他のタイプの入力装置を使用することもできる。ユーザ入力装置152、154、および156は、同じタイプのユーザ入力装置または異なるタイプのユーザ入力装置とすることができる。ユーザ入力装置152、154、および156は、システム100との間で情報を入出力するために使用される。
依存性アナライザ170は、システムバス102に動作可能に結合される。依存性アナライザ170は、本明細書で説明される動作のうちの1つまたは複数を実行するように構成される。依存性アナライザ170はスタンドアロンの専用ハードウェア装置として実現することができ、またはストレージ装置に格納されたソフトウェアとして実現することができる。依存性アナライザ170がソフトウェアで実現される実施形態では、コンピュータシステム100の別個の構成要素として示されているが、依存性アナライザ170は例えば、第1の記憶装置122および/または第2の記憶装置129に格納され得る。あるいは、依存性アナライザ170は別個の記憶装置(図示せず)に格納され得る。
もちろん、処理システム100は当業者によって容易に考えられるように、他の要素(図示せず)を含んでもよく、また、特定の要素を省略してもよい。例えば、当業者によって容易に理解されるように、様々な他の入力装置および/または出力装置が、処理システム100の特定の実現に応じて、処理システム100に含まれ得る。例えば、様々なタイプの無線および/または有線の入力および/または出力装置を使用することができる。さらに、様々な構成の追加のプロセッサ、コントローラ、メモリなども、当業者によって容易に認識されるように利用され得る。処理システム100のこれらおよび他の変形は、本明細書で提供される本発明の教示を与えられれば、当業者によって容易に考えられる。
さらに、図3に関して以下で説明するアーキテクチャ300は、本発明のそれぞれの実施形態を実現するためのアーキテクチャであることを認識されたい。処理システム100の一部または全部は、アーキテクチャ300の要素のうちの1つまたは複数において実現することができる。
さらに、処理システム100は、例えば、図6の方法600および図7の方法700の少なくとも一部を含む、本明細書で説明される方法の少なくとも一部を実行することができることを認識されたい。同様に、アーキテクチャ300の一部または全部を使用して、図6の方法600および図7の方法700の少なくとも一部を実行することができる。
図2を参照して、追跡グラフの動機付けの例を説明する。
図2を参照すると、フィッシング電子メール攻撃を示す例示的な追跡グラフ200が提供されている。この攻撃シナリオでは、攻撃者が不正プログラムを介してファイル(例えば、テキストファイル)をスキャンすることによって、被害者のホストから機密認証情報を盗んでいる。攻撃は、いくつかのステップを有している。第1に、攻撃者は、Microsoft Excel(登録商標)の添付ファイル(「excel.exe」)を含んでいるものとして示される電子メールを被害者に送信する。「excel.exe」ファイルは、不正プログラム(「dropper.exe」)を作成し実行することができる悪意のあるマクロを含み得る。被害者がMicrosoft Outlook(登録商標)(「outlook.exe」)で「excel.exe」を開くと、「dropper.exe」は「cmd.exe」を使用して「findstr.exe」を実行し、ホームディレクトリー上で、被害者のマシン内の重要な認証を検索し、認証を「findstr.out」としてダンプする。それからdropper.exeは、ネットワークを介して攻撃者に「findstr.out」をアップロードする。空間が限られているため、攻撃経路内の重要なオブジェクトのみが図2の追跡グラフに示されている。例えば、.dll、.iniなどのオブジェクトまたは「findstr.exe」によってスキャンされたファイルの詳細は省略され、追跡グラフ内の1つのノードのみがそれらのセットを表すために使用された。
図2に示す攻撃では「dropper.exe」が実行されると、システム(例えば、企業システム)の異常検出器は未知のプログラムの実行による警告を生成することができる。この警告に基づいて、セキュリティ専門家のチームは攻撃シナリオを再構築し、「dropper.exe」の根本原因を見つけるために後戻り追跡分析を開始することができる。しかしながら、この攻撃の追跡グラフは非常に大きく(例えば、30.75Kのイベントを含む)、このサイズの追跡グラフを生成するには、多くの時間がかかる可能性がある。このような大きな追跡グラフおよび長い生成時間は、チームが攻撃シナリオの根本原因を効果的に発見することを妨げる可能性がある。
図2の追跡グラフにおけるノードの99%以上は、無関係なシステムノイズに対応する。ノイズの1つの原因はライブラリ(例えば、.dllファイル)であり、これは、この例示的な例では危険にさらされておらず、攻撃と関係がない。もう1つの原因は、「findstr.exe」であり、色々なアプリケーションで作成された多くの(テキスト)ファイルを読み込み、そのファイルを作成したアプリケーションが、攻撃に無関係の数千のノードに繋がる可能性がある。この攻撃では、その根本的な原因とは対照的に、「findstr.exe」が不正プログラム「dropper.exe」によって使用されるツールである。したがって、この攻撃から「findstr.exe」を除いたものが、根本原因を見つけることから後戻り追跡分析を妨げることはない。
.dllファイルや「findstr.exe」の全てを除去することは、自動化された技術にとって非常に困難であり得る。例えば、.dllファイルを除去するために、後戻り追跡分析は、.dllファイルに不審な変更がないことを最初に確認する必要があり、「findstr.exe」を除去するために、後戻り追跡分析は、「findstr.exe」が根本原因ではなく不正プログラムによって引き起こされたものであることを知る必要がある。しかしながら、この情報を後戻り追跡分析に自動的に正確に組み込むことは非常に困難である。
攻撃では、セキュリティ専門家がプロセスを「デバッグ」することを可能にする対話型および漸進的な追跡分析(例えば、後戻り追跡分析)を実行することが有用であり得る。図2の追跡グラフの状況を読むことによって、セキュリティ専門家のチームは、本明細書に記載の実施形態によれば、「findstr.exe」が結果であり、「dropper.exe」の原因ではないことを確認することができ、また、後戻り追跡分析から「findstr.exe」も同様に除外することができる。本明細書に記載される実施形態によれば、.dllファイルと「findstr.exe」を除外することによって、図2の追跡グラフのサイズは99.8%を超えて削減することができ、セキュリティ専門家のチームによって、「dropper.exe」の根本原因を時間ではなく分単位で見つけることができる。
次に、本発明の一実施形態による、コンピュータシステムにおける脅威検出を改善するために対話型および漸進的な追跡分析を適用することができるシステムアーキテクチャについて説明する。
図3は、本発明の一実施形態による、例示的なシステムアーキテクチャ300を示す高レベルブロック図である。システム300は、大規模で同種の企業IT環境に配備されるように設計することができる。
図示のように、システム300は、言語パーサ320、実行部330、ホスト342およびデータベース(DB)344を有するデータ収集および記憶装置、ならびに結果ビューア350を含み得る。
言語パーサ320は追跡記述言語(TDL)クエリ310を受信し、TDLクエリ310を解析するように構成される。例えば、図示のように、言語パーサ320は、字句解析構成要素322および構文解析構成要素324を含むことができる。字句解析構成要素322は文字のシーケンスをトークンのシーケンス(例えば、意味が割り当てられた文字列)に変換することを含む語彙分析またはトークン化を実行する。構文解析324は入力としてトークンを受け取り、トークンの構造表現を提供するためにデータ構造(例えば、ツリー)を構築する。言語パーサ320は別個の字句解析および構文解析322および324を含むように示されているが、字句解析および構文解析322および324の機能は単一の構成要素(例えば、スキャナレス構文解析)として具現化され得る。
上述のように、TDLは、ユーザが追跡分析において条件および制約を簡潔に指定することを可能にするドメイン固有言語である。TDLクエリ310は、例えば、時間範囲、ホスト範囲、後戻り追跡の開始点、後戻り追跡の終了条件、および探索すべき経路を含む制約を指定することができる。TDLクエリ310の実行中に、漸進的に更新される後戻り追跡グラフが出力され得る。
TDLクエリ310は、(1)一般的な制約、(2)追跡宣言、および(3)出力仕様の3つの部分を含むものとして見ることができる。
一般的な制約は、例えば、追跡分析のための時間範囲制約およびホスト範囲制約を含み得る。時間範囲およびホスト範囲は、実際にはシステムログが時間的および特別な局所性を持つ性質を有するので、一般的な制約とみなされる。警報を受信すると、長い履歴を持つすべてのホストのシステムログを探索することが実用的になる。しかし、より現実的な方法は、時間およびホスト範囲の簡潔な表現をサポートする一般的な制約を提供することによって、最近の時間範囲で関連するホストを最初に研究することである。
追跡宣言は、どのイベントを分析すべきか、および追跡分析をいつ終了すべきかを指定する。追跡宣言は、「追跡」陳述および「何処」陳述を含み得る。
追跡陳述は、開始点、終了点、および任意の重要な中間点を含む点を指定する。多くの場合、特定のパターンのみを満たす経路を探索するために後戻り追跡を指定する必要があるため、中間点がサポートされる。追跡陳述は、例示的に以下のように宣言することができる:
backward (type var [condition _ list]) (->
type var [condition _ list]) +
この追跡陳述において、追跡陳述の開始を示すキーワード「backward」の後にノードのリストが続く。ノードはイベントのフィルタであり、「type var [condition _ list]」と宣言することができる。システムオブジェクトのタイプを宣言する語句「type」は、プロセスオブジェクトの「proc」、「ファイルオブジェクトの「file」、およびネットワーク接続オブジェクトの「ip」を含む値を有することができる。語句「var」は、ユーザ定義の変数名であり、語句「condition _ list」は、システムオブジェクトをフィルタリングする制約のリストである。制約は、論理演算によって接続され得る。「condition _ list」内の制約は「field op value」の形式において二項演算陳述とすることができ、「field」は変数の属性名である。「field」のオプションのタイプは、共有オプションおよびオブジェクト固有オプション(例えば、「file」オプション、「proc」オプションおよび「ip」オプション)を含む。「event _ id」および「event _ time」などの共有オプションは、すべてのタイプのシステムオブジェクト(例えば、「proc」、「file」および「ip」)で使用することができ、その手段は、ノードが指定されたIDおよび時間をそれぞれ有するイベントのみを含むべきである。「file」の場合、可能なオプションは、「filename」、「host」、「path」、「last _ modification _ time」、「last _ access time」、「creation _ time」を含む。「proc」の場合、可能なオプションは、「host」、「exename」、「pid」、および「starttime」を含む。「ip」の場合、可能なオプションは、「source _ ip」、「destination _ ip」、および「start _ time」を含む。操作「op」は、「<」、「<=」、「>」、「>=」、「=」、および「!=」を含む可能なオプションを有する二項演算である。「op」の後の「value」は、文字列、数値、または時間文字列とすることができる。「value」が文字列である場合、「=」および「!=」は、それぞれ正規表現(regex)の一致および不一致として解釈することができる。
例えば、ノードのリストがn→n→...→nのフォーマットを有するように、k個のノードがあると仮定する。このリストでは、nは開始点であり、nは終了点であり、n〜nk-1は中間点である。「」のような記号を終了点として使用して、終了点に関する特定の制約がないことを指定することができる。
where陳述はオプションであり、特定の条件を満たすイベントを除外する制約、または後戻り追跡の時間を制限する制約のような特定のシステムオブジェクトに関連付けられていない制約を定義する。これらの制約は、追跡分析中にシステムオブジェクトをフィルタリングするために使用することができる。where陳述内の制約を満たさないシステムオブジェクトは、さらに探索せずに追跡分析から削除される。where陳述は、以下のように例示的に宣言することができる:
where (type. field |hop| time) op value
このwhere陳述において、ユーザは、「type. field op value」の形式で制約のリストを指定することができる。制約はまた、論理演算によっても接続される。「type」、「field」、および「op」は、追跡陳述において同じ値のセットを有する。「type field」の他に、where陳述はまた、2つの特別なフィールド、すなわち、「time」および「hop」を受け入れる。これらのフィールドは追跡分析を終了するために使用することができ、「<=」操作と共に使用することができる。「time」フィールドは追跡分析の時間を制限するために使用することができ、「hop」フィールドは追跡分析における経路の最大長を制限するために使用することができる。追跡分析は「hop」フィールドによって指定された閾値よりも長い経路を見つけると、経路の探索を停止し、もしあれば、他のより短い経路に切り替えることができる。
出力仕様は、生成された追跡グラフをどこに記憶すべきかを指定する。
機密ファイルを盗み、それをネットワークに送る2つの悪意のあるアプリケーションの経路を追跡する例示的なTDLクエリ400が、図4を参照して示される。図示のように、TDLクエリ400の1〜2行は、一般的な制約を含む。時間範囲制約はTDLクエリ400の第1行に見られるように、「from」および「to」というキーワードによって指定することができる。ホスト範囲制約はTDLクエリ400の2行目に見られるように、キーワード「in」によって指定することができる。この例示的な例では、TDLクエリ400は、追跡分析が「01/02/2017」と「02/01/2017」の日付の間の「desktop1」および「desktop2」内のシステムイベントの追跡のみを追跡分析することを示す。TDLクエリ400の一般的な制約は、オプションの制約であることに留意されたい。一般的な制約が指定されていない場合、すべてのホストがデフォルトの時間範囲で検索される。
図示のように、TDLクエリ400の3〜7行は、追跡宣言を含む。追跡陳述は、TDLクエリ400の3行目における「backward」で開始する。実行中、システム(例えば、図3のシステム300)は、他の経路の前に中間点を通る経路を自動的に探索する。TDLクエリ400の3行目は、「C://Sensitive/important.doc」のファイルに、追跡分析の開始点として「01/16/2017:06:15:14」に書き込むイベントを定義する。TDLクエリ400の4行目は、追跡分析の開始点から終了点までの経路がすべて、名前が「malware1」または「malware2」であり、IDが12であるプロセスを通過すべきであることを示す。TDLクエリ400の5行目は、追跡分析の終了点を、IPアドレス「168.120.11.118」を有するネットワーク通信として定義する。あるいは、終了点に対する制約がない場合、記号(例えば、「」)を終了点として定義することができる。
TDLクエリ400の6行目の「where」で始まるこの陳述は、追跡分析が実行可能名「explorer」を有する処理を除外すべきであることを示し、実行が10分を超える場合、プロセス全体が終了されるべきであり、追跡グラフの直径(「hop」)は25未満であるべきである。
TDLクエリ400の8行目の出力仕様は、生成された追跡グラフがパス「./result.dot」に格納されるべきであることを指定する。
図4のTDLクエリ400などのTDLクエリはシステム(例えば、図3のシステム300)によって実行される対話型プロセスを反映する複数のバージョンを有することができる。例えば、作成されたTDLクエリ400の最初のバージョンv1は、4行目または7行目なしで作成された。第1のバージョンは、制限時間内に興味深いまたは有意義な結果を発見することができなかったことが決定された。しかし、システムとの対話を通じて情報を得ることによって、追跡分析を加速するための4行目を含むように第2のバージョンv2が作成された。同様に、第3のバージョンv3は、追跡分析からexplorerを除去するための7行目を含むように作成され、それによって、不審なIPを時間制限内に見つけられることを可能にした。
再び図3を参照すると、実行部330は言語パーサ320によって出力され構文解析されたTDLクエリ310に基づいて追跡分析を実行し、追跡分析の結果として追跡グラフを生成する。一般に、実行部330は、以下のように動作する。まず、実行部330はDB344からイベントを検索するためのクエリ(例えば、SQLクエリ)を生成する。クエリは、結果の更新を漸進的にサポートすることができる。次に、実行部330は中間点を追跡する優先順位付け方式を採用することができ、この優先順位付け方式は、指定された中間点を含む経路に優先順位を付けることによって達成することができる。実行部330は同じクエリを2回実行することを回避するために、インクリメンタル実行ソリューションを使用することができる。次に、実行部330はTDLクエリ310によって指定された要件を満たすように最終結果をフィルタリングすることができ、追跡分析処理を加速するために適応的並列化を利用することができる。
より具体的には、実行部330が漸進的な追跡分析を実施して追跡分析の結果を漸進的に記録する漸進的実行構成要素332を含み得る。これにより、追跡分析全体が完了するのを待つ必要なく、追跡分析の更新された結果を見ることができる。
漸進的実行構成要素332によって実施される漸進的な追跡分析は、実例として、実行ウィンドウを分割することによって達成され得る。一般に、システムイベントが多くの他のイベント(「従属」)に依存する場合、漸進的な追跡分析は、依存関係を、各々が従属関係の部分集合を含む複数の実行ウィンドウに分割することができる。追跡分析の結果は、実行ウィンドウの単位で漸進的に更新することができる。イベントが最近であるほど、結果は追跡グラフにより早く更新される。この実行ウィンドウベースのアプローチは、漸進的な追跡分析の滑らかさを改善し得る。例えば、現実世界の環境では、システムイベントが均等に分散されないことがあり、1つのイベントは多数(例えば、数百万)の他のイベントに依存し得る。
形式的には、実行ウィンドウが3−タプル<begin,finish,e>として定義することができ、ここで、beginは開始時点であり、finishは終了時点であり、eは探索される必要があるイベントである。イベントは、実行ウィンドウの単位でDB344から取り戻すことができる。
例示的な漸進的な追跡方法を提供する表1が、以下のように提供される。
Figure 0006817469
表1に示すように、現在のイベントのすべての依存関係をキューに追加する代わりに、現在のイベントの依存関係を含む実行ウィンドウが1〜6行に追加される。グラフ探索のwhileループ(2〜6行目)では、漸進的な追跡方法がキューから実行ウィンドウを引き出し、現在の実行ウィンドウ内のすべてのイベントを最終追跡グラフに追加する。イベントは、追跡グラフ(4行目)の端として使用される。次に、ループ(5〜7行目)において、漸進的な追跡方法はDB344から現在の実行ウィンドウ内で発生するすべてのイベントを列挙し、それらの実行ウィンドウを取得し、これらの実行ウィンドウを将来の探索のためにキューに追加する。関数gen Exe Window()は、イベントeを入力として受け入れ、イベントのすべての実行ウィンドウを返す。これを行うため、gen Exe Window()関数は、入力イベント(te)のタイムスタンプを取得し得る。次に、gen Exe Window()関数は<ts,te,e>として実行ウィンドウを生成することができ、ここでtsは(予め定義された)グローバル開始時間である。一実施形態では、実行ウィンドウはモノリシック実行ウィンドウである。そして、gen Exe Window()関数は、モノリシック実行ウィンドウをteからtsまでk個に切ることができる。第一実施形態ではkはユーザが構成可能なパラメータである。第1の実行ウィンドウは<ts,te,e>であり、ここで、ts=σおよびσ=(te−ts)/(2−1)である。モノリシック実行ウィンドウにさらに時間が残っている場合、第2の実行ウィンドウ<ts,ts,e>が生成され、ここで、ts=ts−2σである。この切断処理は、実行ウィンドウ全体がカバーされるまで繰り返される。したがって、各ステップにおいて、新たに生成された実行ウィンドウの長さは、最後の実行ウィンドウの2倍である。実行ウィンドウの生成を示す例示的なダイヤグラム500を、図5を参照して説明する。
図5を参照すると、ダイヤグラム500は6つの実行ウィンドウ(例えば、k=6)を描くことを示す。入力イベントは、ダイヤグラム500において端としてマークされている。仕切りは、時間の降順で左から右に始まる。図示されるように、2つの連続する実行ウィンドウの対は、前者の2倍の長さのウィンドウサイズを有する。
再び図3を参照すると、表1に示すように、生成された実行ウィンドウは、1行目および6行目で優先キュー、priキューに追加される。優先キューは、実行ウィンドウの終了時間に基づいて実行ウィンドウに優先する。例えば、ユーザは、より最近のデータを気にするので、より最近の終了時間を有する実行ウィンドウが、列内で優先され、より早い終了時間を有する実行ウィンドウの前に配置される。このように実行ウィンドウに優先順位を付けることによって、より最近の結果がより早く返される可能性が高い。同様の理由で、より小さい実行ウィンドウは、より最近のデータに割り当てられ得る。
追跡分析の速度を加速するために、追跡分析処理を並列化することができる。例えば、図示のように、実行部330は、追跡分析処理を並列化するために適応解を利用する適応並列化構成要素334を含み得る。言い換えれば、適応並列化構成要素334は、長期間続くと予想される追跡分析を並列化するだけである。追跡分析を並列化することは計算オーバヘッドを有するので、適応並列化を実行することができる。さらに、追跡分析が短期間内に終了する場合、並列化は実質的な利点をもたらさない。企業環境では、多くのTDLクエリが存在する可能性がある。短期間の追跡分析に過度に多くの計算資源が費やされるのであれば、複数のTDLクエリを適用することは拡張可能性がない。
より具体的には、現在の追跡分析が潜在的に長時間持続すると判定された場合、適応並列化構成要素334は漸進的な追跡方法(例えば、表1)を実行するn個のワーカースレッドを使用することができる。現在の追跡分析が潜在的に長時間持続することができるかどうかを判定するために、追跡経路内の深さdを有する多数のイベントをチェックすることができる。深さdを有するイベントの数が閾値Tを超える場合、現在の追跡分析が潜在的に長時間続き得ると判定される。一実施形態では、d=3およびT=10である。n個のワーカースレッドは同じ優先キューを共有することができ、キューから排他的実行ウィンドウを同時に読み込み、データベース342からイベントを取り戻し、出力を更新し、新しく生成された実行ウィンドウを優先キューに挿入することができる。
システム300は、中間点を順次通過する経路のみを探索すべきである。上述したように、システム300が全てのイベントの探索を終了することなく(例えば、先見性がない場合であってもイベントを取り除くために)各中間ポイントを順次進める方法を知るために、実行部330は、優先順位付け方式を活用して中間ポイントを追跡することができる。一般に、中間点のプレフィックスを含む追跡グラフのサブ経路が見つかると、そのサブ経路を他の方向の前に探索することができる。一実施形態では、状態伝播方法を使用して、優先順位付け方式を達成することができる。例えば、TDLクエリ310の追跡宣言声明において宣言されたノードのリストが、フォーマットn→n→…→nを有すると仮定する。このリストでは、nが始点であり、nが終点であり、n〜nk-1が中間点である。実行部330は、各ノードを対応する状態に割り当てることができる。追跡分析中に、状態siに関連付けられた現在のノードnがni+1(i+1<k)の制約を満たす後続ノードを有することを実行部330が見つけた場合、実行部330は、ni+1を状態si+1に割り当てることができる。
実行部330はユーザがTDLクエリ310の実行を一時停止して、ユーザがTDLクエリ310を更新し、更新されたTDLクエリに基づいて実行を再開することを可能にすることができる。実行部330は追跡分析における制約を自動的に更新し、更新されたTDLクエリに基づいて実行を継続することができる。この処理では、実行における増分更新が行われ、前回の実行は最初からやり直されない。したがって、実行部330は、更新されたTDLクエリの新しい制約を使用して、将来の探索をガイドする。
増分更新をサポートするために、実行部330は、以下の解決策を活用することができる。ある時点で、ユーザが実行を一時停止し、TDLクエリCを更新されたバージョンC´に更新し、その後、実行を再開すると仮定する。実行部330は更新されたC´の制約条件を受け取ると、C´で指定された開始点がCで指定された開始点と同じであるか否かを判定する。同じでない場合、ユーザが異なる開始点から新たな追跡分析を開始したいことを意味し、実行部330は、現在の分析を放棄する。開始点が変更されない場合、ユーザがいくつかの新しい条件を追加しただけであることを意味する。この場合、実行部330は、次いで、開始点から現在の探索された追跡グラフを精査し、上述の優先順位付け方式(例えば、状態伝播方法)をやり直すことによって、各ノードの状態を再計算する。このとき、追跡グラフは既にメモリにキャッシュされているので、優先順位付け方式は以前よりも高速に実行され得ることに留意されたい。状態が再計算された後、実行部330は検出されるが探索されないノードのセットである追跡分析の「フロンティア」内のノードを再順序付けし、フロンティア内のノードをフィルタリングするために新しい条件を使用する。フロンティアが更新された後、実行部330は、新しい制約に基づいて現在の実行を再開することができる。
追跡分析が終了した後、実行部330は(更新された)TDLクエリの制約を満たさないすべてのノードを除去するために、最終追跡グラフをクリーニングすることができる。これを行うために、実行部330はすべてのノードを解析し、TDLクエリのwhereステートメントにおける制約を満たさないノードを除去し、最終追跡グラフ(例えば、メモリ内にキャッシュされている)を精査して、開始点に接続されていないノードを除去し、中間点の制約を満たさないノードおよびエッジを除去することができる。例えば、DFS(Depth First Search)を適用して、始点から終点までのすべての経路を再帰的に見つけ、中間点の制約を満たす経路を最終結果に追加することができる。開始点と終了点との間の経路の数は追跡グラフのサイズに対して指数関数的であり得るが、全ての経路がリスト化される必要はない。パスを生成する間、実行部330は、それがどの中間点を通過するかを維持する。したがって、実行部330は経路が終点に到達したとき(例えば、O(1)時間の複雑さで)、経路が中間点の制約を満たすかどうかを迅速に判定することができる。したがって、実行部330は、DFSと同じ時間複雑性で最終追跡グラフをクリーニングすることができる。
結果ビューワ350は実行部330によって生成された追跡グラフを入力として受け取り、追跡グラフのグラフィカルビューを含むクエリ結果360を出力するインタフェース(例えば、グラフィカルユーザインターフェース(GUI))を提供する。結果ビューア350は追跡分析に関するユーザの見通しを助けるために、追跡グラフのフルバージョンに基づいて追跡グラフの最適化バージョンを作成し得る。追跡グラフの最適化されたバージョンは、追跡グラフのフルバージョン内のいくつかのノードを除去および/または併合することによって作成することができる。結果ビューワ350は、追跡グラフから如何なるノードも削除せず、ユーザからいくつかのノードを隠すことに留意されたい。したがって、ユーザは、結果ビューア350において、追跡グラフのフルバージョンと追跡グラフの最適化バージョンとの間で切り替えることができる。最適化の複数のタイプを結果ビューワ350に組み込むことができる。例えば、図示のように、結果ビューアは、除去構成要素352および要約構成要素354を含むことができる。
除去構成要素352は、実行部330によって出力された結果を取り除いて、データフローを他のノードに伝播しない「デッドエンド」ノードを排除する。一実施形態では、除去構成要素352が追跡グラフを取り除くために1つまたは複数のフィルタを使用する。例えば、1つ以上のフィルタは、分析されている期間内に読み出されたが書き込まれなかったファイルを排除する読み出し専用フィルタを含むことができる。しばしば、これらのファイルは、一般にセキュリティ攻撃に関係しないデフォルト構成または共通ライブラリである。他の例として、1つまたは複数のフィルタは、1つの処理によってのみ読み書きされたファイルを取り除く自己読み出し専用フィルタを含むことができる。このようなファイルは通常、ログであり、一般に、セキュリティ攻撃とは無関係である。
要約構成要素354は結果をより簡潔にするために、取り除かれた結果を要約する。例えば、要約構成要素354は、追跡グラフ内のノードを併合することができる。追跡グラフ内のノードを併合するために使用され得る方法は、(1)同様のノードを併合すること、(2)過渡的な処理を併合すること、および(3)同じリモートIPに接続されたソケットを併合することを含む。
同様のノードを併合する方法には以下の4つの記述が真である場合、ノードAおよびBは類似している:(1)AおよびBはそれぞれ、1つの先行および1つの後続のみを有する;(2)AおよびBの親は同じである;(3)AおよびBの子は同じである;および(4)AおよびBは同じタイプのシステムオブジェクトを表す。これらの類似のノードは、通常、バッチとして生成され、追跡グラフにおいて類似の意味を有する。要約構成要素354は、追跡グラフの最適化されたバージョン内の1つのノードとして類似のノードを併合することができる。
併合過渡的処理方法では追跡グラフ内のノードが以下の3つの条件を満たす場合、過渡処理ノードとして定義される:(1)ノードはプロセスを表し;(2)ノードは1つの先行ノードおよび1つの後続ノードのみを有し、先行ノードおよび後続ノードの両方は処理であり;(3)ノードの実行可能名は、その先行ノードの実行可能名と同じである。過渡処理は、その親に併合される。
リモートホストにアクセスするとき、ローカルホストは同じリモートIPアドレスおよびポートを有する同じ処理に接続するための、異なるソケットを生成することができる。同じ遠隔IP進入路に接続された併合ソケットでは、同じ入出力エッジを有するすべての隣接するソケットノードを単一の仮想ソケットノードに併合することができる。
図2の動機付けとなる例に戻って参照すると、この攻撃事例の攻撃シナリオを再構築するために、チームは、警告の根本原因についての考えを持っていないのであるが、例示的なセキュリティ専門家チームが、「dropper.exe」(例えば、異常検出器によって警告された後)を実行するイベントから後戻り追跡を開始した。したがって、現時点では如何なるガイダンスもなく、チームは基本的な後戻り追跡分析を実行することしかできなかった。そうするために、チームは、初期TDLクエリとして基本的な後戻り追跡のために以下のTDLクエリを実行した:
from "01/02/2017" to "02/01/2017"
backward proc alert [exename = "dropper.exe"
and event _ time = "01/17/2017:03:01:07"
and type="start"]-> *
output ="./result.dot"
初期TDLクエリは、与えられた時間に「dropper.exe」という名前の処理を開始するイベントから後戻り追跡が開始すること、および、追跡分析が、1行目の「from to」記述で与えられた開始点のデータ依存関係を1月以内に検索することを宣言した。初期TDLクエリはまた、追跡グラフを「result.dot」にファイルに格納するために、3行目に出力仕様を提供する。しかし、初期TDLクエリ内に他の制約は提供されなかった。
初期TDLクエリが実行されると、追跡グラフが漸進的に表示され始めた。1分以内に2つのイベントを見た後、チームは追跡グラフが「excel.exe」を含むことに気づき、これはたまたま多くの.dllファイルをロードした。この時点で、チームは追跡分析を一時停止し、異常検出器からの他の警報を検索し、.dllファイルに不審な変更がないことを見出した。したがって、チームは、攻撃は、.dllファイルに注入されたコードからのものではなく、追跡分析の焦点は、他のデータ依存関係に置かれるべきであると断定した。したがって、チームは、以下に示すwhere記述を含むことによって、すべての.dllファイルを除外するために初期TDLクエリを修正した。
from "01/02/2017" to "02/01/2017"
backward proc alert [exename = "dropper.exe"
and event time = "01/17/2017:03:01:07"
and type="start"] -> *
where file. path != ".dll"
output = "./result. dot"
この修正の後、チームは、更新されたTDLクエリを用いて追跡分析の実行を再開した。2分間でさらに8つのイベントを見た後、チームは追跡グラフが「findstr.out」を介して「findstr.exe」に到達したことに気づいた。「findstr.exe」の後の最初の100のイベントを見た後、チームは「findstr.exe」が多くのファイルをスキャンするために使用されること、および「findstr.exe」の後の依存関係グラフを完全に探索するのに長い時間がかかることに気付いた。チームはさらに、「findstr.exe」がその根本的な原因ではなく、むしろ「dropper.exe」によって使用される可能性が高いことに気づいた。したがって、セキュリティチームは追跡分析を再び一時停止し、以下のようにwhere記述を変更することによって、グラフから「findstr.exe」を除外するように更新されたTDLクエリを修正した。
from "01/02/2017" to "02/01/2017"
backward proc alert [exename = "dropper.exe"
and event time = "01/17/2017:03 :01 :07"
and type="start"] -> *
where file. path != ".dll" and proc. exename
!= "findstr.exe"
output = "./result. dot"
この修正の後、チームは、新たに更新されたTDLクエリを用いて追跡分析の実行を再開した。約4分後、チームは「outlook.exe」を見つけ、約30回以上のイベントをチェックすることによって、それに接続されたソケットを見つけた。この時点で、チームは、「outlook.exe」によって生成された「excel.exe」によって「dropper.exe」が生成されたことを発見した。このことから、彼らは「dropper.exe」の根本原因がフィッシング電子メールであることを確認した。この時点までに、チームは追跡分析を行い、合計約140のイベントをチェックするのに約7分間を費やした。したがって、本明細書で説明される実施形態に従って実行されるアプリケーション間依存性分析処理は、例えば、セキュリティ脅威または攻撃の根本原因を発見するための時間を低減することによって、コンピュータシステムにおける脅威検出を改善する。
図6は、本発明の一実施形態による、アプリケーション間依存性分析のための例示的な方法600を示す流れ図である。
ブロック610において、追跡分析を実行するためのTDLクエリが受信される。上述のように、TDLは、ユーザが追跡分析において条件および制約を簡潔に指定することを可能にするドメイン特有の言語である。TDLクエリ310は、例えば、時間範囲、ホスト範囲、後戻り追跡の開始点、後戻り追跡の終了条件、および探索すべき経路を含む制約を指定することができる。TDLクエリの実行中に、漸進的に更新される後戻り追跡グラフが出力され得る。TDLクエリは、(1)追跡分析を実行するための一般的な制約;(2)分析されるべきコンピュータシステムの少なくともイベントを指定する追跡宣言;および(3)追跡分析によって生成された追跡グラフを格納するための位置を指定する出力仕様の3つの部分を含んでいるものと見なすことができる。TDLクエリに関するさらなる詳細は、図3および図4を参照して上述されている。
ブロック620において、TDLクエリは、自然言語パーサを使用して構文解析される。TDLクエリの構文解析に関するさらなる詳細は、図3を参照して上述されている。
ブロック630において、追跡分析は、追跡分析の結果を生成するために漸進的な追跡方法を実施することによって、構文解析されたTDLクエリに基づいて実行される。例えば、1つまたは複数のクエリを実行して、データベースから1つまたは複数のイベントを取り戻すことができ、漸進的な追跡方法は、追跡分析の結果を漸進的に記録して、追跡分析全体が完了するのを待つ必要なく、追跡分析の更新された結果を見ることができるようにすることが可能である。一実施形態では、追跡分析の速度を加速するために(例えば、現在の追跡分析が長時間持続する可能性があると判定された場合)、複数のワーカースレッドを使用して漸進的な追跡方法を実行することによって、追跡分析を適応的に並列化することができる。追跡分析の実行はTDLクエリの更新を可能にするために一時停止することができ、更新されたTDLクエリに基づいて再開することができる。例えば、追跡分析における制約は更新されたTDLクエリに基づいて自動的に更新することができ、更新は、以前の実行が最初からやり直されないようなインクリメンタル更新とすることができる。ブロック630に関するさらなる詳細は、図3を参照して上述されている。
ブロック640において、追跡分析の結果をクリーニングすることによって追跡グラフが生成される。例えば、追跡グラフは、(更新された)TDLクエリの制約を満たさない全てのノードを除去することによってクリーニングすることができる。
ブロック650において、追跡グラフに基づくクエリ結果がインタフェースを介して出力される。一実施形態では、インタフェースはGUIを含む。追跡グラフの最適化されたバージョンは、追跡グラフのフルバージョンに基づいて、例えば追跡グラフのフルバージョン内のノードのいくつかを除去および/または併合することによって、作成することができる。例えば、ブロック630における追跡分析によって出力された結果は1つまたは複数のフィルタ(例えば、読み取り専用フィルタおよび/または自己読み取り専用フィルタ)を使用することによって「dead end」ノードを排除するように取り除くことができ、取り除かれた結果は、クエリ結果をより簡潔にするように要約され得る。ブロック640に関するさらなる詳細は、図3を参照して上述されている。
本明細書で説明される実施形態は、完全にハードウェアであってもよく、完全にソフトウェアであってもよく、またはハードウェア要素とソフトウェア要素の両方を含んでもよい。好ましい実施形態では、本発明がファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されないソフトウェアで実現される。
実施形態は、コンピュータまたは任意の命令実行システムによって、またはそれに関連して使用するためのプログラムコードを提供する、コンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品を含むことができる。コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれに関連して使用するためのプログラムを格納、通信、伝搬、または運搬する任意の装置を含むことができる。媒体は、磁気、光学、電子、電磁気、赤外線、または半導体システム(または装置またはデバイス)、または伝搬媒体とすることができる。媒体は、半導体またはソリッドステートメモリ、磁気テープ、リムーバブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、リジッド磁気ディスク、および光ディスクなどのコンピュータ可読媒体を含むことができる。
以下の「/」、「および/または」、および「例えば「A/B」、「Aおよび/またはB」および「AおよびBの少なくとも1つ」の場合の少なくとも1つの使用は、第1のリスト化されたオプション(A)のみの選択、または第2のリスト化されたオプション(B)のみの選択、または両方のオプション(AおよびB)の選択を包含することが意図されることを理解されたい。さらなる例として、「A、B、および/またはC」および「A、B、およびCのうちの少なくとも1つ」の場合において、このような句は、第1のリスト化されたオプション(A)のみの選択、または第2のリスト化されたオプション(B)のみの選択、または第3のリスト化されたオプション(C)のみの選択、または第1および第2のリスト化されたオプション(AおよびB)のみの選択、または第1および第3のリスト化されたオプション(AおよびC)のみの選択、または第2および第3のリスト化されたオプション(BおよびC)のみの選択、または3つすべてのオプション(AおよびBおよびC)の選択を包含することが意図される。これは、当業者には容易に明らかなように、列挙された項目の数だけ拡張することができる。
システムおよび方法の好ましい実施形態(これは例示的であり、限定的ではないことが意図される)を説明したが、上記の教示に照らして、当業者によって、修正および変形がなされ得ることに留意されたい。したがって、添付の特許請求の範囲によって概説されるような本発明の範囲および精神内にある、開示された特定の実施形態に変更を加えることができることを理解されたい。このように、本発明の態様を、特許法によって要求される詳細および特殊性と共に説明してきたが、特許証によって保護されることが請求され、望まれるものは添付の特許請求の範囲に記載されている。

Claims (20)

  1. コンピュータシステムのイベントに対してアプリケーション間依存性分析を実行することによって、コンピュータシステムにおける脅威検出を改善するためのシステムであって、
    プログラムコードを記憶するためのメモリ装置と、
    前記メモリ装置に動作可能に結合され、前記メモリ装置に格納されたプログラムコードを実行することによって前記アプリケーション間依存性分析を実行するように構成されたプロセッサと、を含み、
    追跡分析を実行するための追跡記述言語(TDL)クエリと、前記追跡分析を実行するための一般的な制約を含む前記TDLクエリと、分析される前記コンピュータシステムの少なくともイベントを指定する追跡宣言と、前記追跡分析によって生成された追跡グラフを格納する位置を指定する出力仕様と、を受信し、
    言語パーサを使用して前記TDLクエリを構文解析し、
    前記追跡分析の結果を生成するために漸進的追跡方法を実施することによって、前記構文解析されたTDLクエリに基づいて前記追跡分析を実行し、
    前記TDLクエリの制約を満たさないすべてのノードを除去し、前記追跡分析の前記結果をクリーニングすることによって追跡グラフを生成し、
    前記追跡グラフに基づいて、前記追跡グラフおよび前記追跡グラフの最適化されたバージョンのうちの少なくとも1つを含むクエリ結果を、インタフェースを介して出力する、システム。
  2. 前記メモリ装置に格納されたプログラムコードは、さらに、
    前記追跡分析の前記実行を一時停止し、
    更新されたTDLクエリを受信し、
    前記更新されたTDLクエリに基づいて前記追跡分析の前記実行を再開する、請求項1に記載のシステム。
  3. 前記メモリ装置に格納されたプログラムコードは、さらに、所与のコンピュータシステムイベントの依存関係を、それぞれが前記依存関係のサブセットを含む複数の実行ウィンドウに分割することによって、前記漸進的追跡方法を実施する、請求項1に記載のシステム。
  4. 実行ウィンドウは3タプル<begin,finish,e>として定義され、beginは開始時点であり、finishは終了時点であり、そしてeはコンピュータシステムイベントである、請求項3に記載のシステム。
  5. 前記メモリ装置に格納されたプログラムコードは、さらに、前記複数の実行ウィンドウを、それぞれの終了時点に基づいて優先順位付けすることによって前記漸進的追跡方法を実施する、請求項4に記載のシステム。
  6. 前記メモリ装置に格納されたプログラムコードは、さらに、複数のワーカースレッドを使用して前記漸進的追跡方法を適応的に並列化することによって前記追跡分析を実行する、請求項1に記載のシステム。
  7. 前記漸進的追跡方法は、所与の深さを有するイベントの数が閾値を超えるという決定に応答して、適応的に並列化される、請求項6に記載のシステム。
  8. 前記メモリ装置に格納されたプログラムは、さらに、前記追跡グラフを取り除くことによって前記追跡グラフの最適化されたバージョンを生成し、1または複数のフィルタを使用することによって取り除かれた結果を生成し、前記取り除かれた結果を要約する、請求項1に記載のシステム。
  9. 前記取り除かれた結果は、前記取り除かれた結果からノードを併合することによって要約される、請求項8に記載のシステム。
  10. コンピュータシステムのイベントに対してアプリケーション間依存性分析を実行することによって、コンピュータシステムにおける脅威検出を改善する方法をコンピュータに実行させるためのコンピュータによって実行可能なプログラム命令が具体化されたプログラム命令を有する非一時的なコンピュータ可読記憶媒体を含むコンピュータプログラム製品の前記方法は、
    追跡分析を実行するための追跡記述言語(TDL)クエリと、前記追跡分析を実行するための一般的な制約を含む前記TDLクエリと、分析される前記コンピュータシステムの少なくともイベントを指定する追跡宣言と、前記追跡分析によって生成された追跡グラフを格納する位置を指定する出力仕様と、を受信することと、
    言語パーサを使用して前記TDLクエリを構文解析することと、
    前記追跡分析の結果を生成するために漸進的追跡方法を実施することを含み、前記構文解析されたTDLクエリに基づいて前記追跡分析を実行することと、
    前記TDLクエリの制約を満たさないすべてのノードを除去することを含み、前記追跡分析の前記結果をクリーニングすることによって追跡グラフを生成することと、
    前記追跡グラフに基づいて、前記追跡グラフおよび前記追跡グラフの最適化されたバージョンのうちの少なくとも1つを含むクエリ結果を、インタフェースを介して出力することと、を含む。
  11. コンピュータシステムのイベントに対してアプリケーション間依存性分析を実行することによって、コンピュータシステムにおける脅威検出を改善するためのコンピュータで実施される方法であって、
    メモリに動作可能に結合されたプロセッサによって、追跡分析を実行するための追跡記述言語(TDL)クエリと、前記追跡分析を実行するための一般的な制約を含む前記TDLクエリと、分析されるコンピュータシステムの少なくともイベントを指定する追跡宣言と、前記追跡分析によって生成された追跡グラフを格納する位置を指定する出力仕様と、を受信することと、
    前記プロセッサによって、言語パーサを使用して前記TDLクエリを構文解析することと、
    前記プロセッサによって、前記追跡分析の結果を生成するために漸進的追跡方法を実施することを含み、前記構文解析されたTDLクエリに基づいて前記追跡分析を実行することと、
    前記プロセッサによって、前記TDLクエリの制約を満たさないすべてのノードを除去することを含み、前記追跡分析の前記結果をクリーニングすることによって追跡グラフを生成することと、
    前記プロセッサによって、前記追跡グラフに基づいて、前記追跡グラフおよび前記追跡グラフの最適化されたバージョンのうちの少なくとも1つを含むクエリ結果を、インタフェースを介して出力することと、を含む方法。
  12. 前記プロセッサによって、前記追跡分析の前記実行を一時停止することと、
    前記プロセッサによって、更新されたTDLクエリを受信することと、
    前記プロセッサによって、前記更新されたTDLクエリに基づいて前記追跡分析の前記実行を再開することと、をさらに含む、請求項11に記載のコンピュータで実施される方法。
  13. 前記漸進的追跡方法を実施する方法は、所与のコンピュータシステムイベントの依存関係を、それぞれが前記依存関係のサブセットを含む複数の実行ウィンドウに分割することをさらに含む、請求項11に記載のコンピュータで実施される方法。
  14. 実行ウィンドウは3タプル<begin,finish,e>として定義され、beginは開始時点であり、finishは終了時点であり、eはコンピュータシステムイベントである、請求項13に記載のコンピュータで実施される方法。
  15. 前記漸進的追跡方法を実施する方法は、前記複数の実行ウィンドウを、それぞれの終了時点に基づいて優先順位付けすることをさらに含む、請求項14に記載のコンピュータで実施される方法。
  16. 前記追跡分析を実行することは、複数のワーカースレッドを使用して前記漸進的追跡方法を適応的に並列化することをさらに含む、請求項11に記載のコンピュータで実施される方法。
  17. 前記漸進的追跡方法は、所与の深さを有するイベントの数が閾値を超えるという決定に応答して、適応的に並列化される、請求項16に記載のコンピュータで実施される方法。
  18. 前記追跡グラフの最適化されたバージョンを生成することをさらに含む、請求項11に記載のコンピュータで実施される方法。
  19. 前記追跡グラフの最適化されたバージョンを生成することは、1または複数のフィルタを使用することによって取り除かれた結果を生成し、前記追跡グラフを取り除くことをさらに含む、請求項18に記載のコンピュータで実施される方法。
  20. 前記追跡グラフの最適化されたバージョンを生成することは、前記取り除かれた結果を要約することをさらに含む、請求項19に記載のコンピュータで実施される方法。
JP2019565938A 2017-08-09 2018-06-13 コンピュータシステムの脅威検出を改善するためのアプリケーション間依存性分析 Active JP6817469B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762543032P 2017-08-09 2017-08-09
US62/543,032 2017-08-09
US201762591819P 2017-11-29 2017-11-29
US62/591,819 2017-11-29
US16/006,164 US11030308B2 (en) 2017-08-09 2018-06-12 Inter-application dependency analysis for improving computer system threat detection
US16/006,164 2018-06-12
PCT/US2018/037183 WO2019032180A1 (en) 2017-08-09 2018-06-13 ANALYSIS OF DEPENDENCE BETWEEN APPLICATIONS TO IMPROVE THE DETECTION OF THREATS IN A COMPUTER SYSTEM

Publications (2)

Publication Number Publication Date
JP2020522799A JP2020522799A (ja) 2020-07-30
JP6817469B2 true JP6817469B2 (ja) 2021-01-20

Family

ID=65272590

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019565938A Active JP6817469B2 (ja) 2017-08-09 2018-06-13 コンピュータシステムの脅威検出を改善するためのアプリケーション間依存性分析

Country Status (4)

Country Link
US (1) US11030308B2 (ja)
JP (1) JP6817469B2 (ja)
DE (1) DE112018004115T5 (ja)
WO (1) WO2019032180A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101990022B1 (ko) * 2018-11-28 2019-06-17 한국인터넷진흥원 악성코드에 감염된 디바이스를 포함하는 단말그룹에 대한 가상의 악성 트래픽 템플릿 생성 방법 및 그 장치
US11188228B1 (en) * 2019-03-25 2021-11-30 Amazon Technologies, Inc. Graphing transaction operations for transaction compliance analysis
JP7243837B2 (ja) * 2019-08-09 2023-03-22 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法、及びプログラム
GB2588822B (en) * 2019-11-11 2021-12-29 F Secure Corp Method of threat detection
US11556370B2 (en) * 2020-01-30 2023-01-17 Walmart Apollo, Llc Traversing a large connected component on a distributed file-based data structure
CN112071435B (zh) * 2020-09-09 2023-07-18 北京百度网讯科技有限公司 无向关系至有向关系转换方法、装置、设备以及存储介质
US20220092179A1 (en) * 2021-12-02 2022-03-24 Intel Corporation Detecting data oriented attacks using hardware-based data flow anomaly detection
JP2025525536A (ja) * 2022-07-15 2025-08-05 ブルーボヤント エルエルシー ネットワークセキュリティを強化するために、ネットワーク化されたコンピュータ支援脅威ハンティングプラットフォームを利用するデバイス、システム、および方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5689361B2 (ja) * 2011-05-20 2015-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation グラフデータの一部を準同型写像の像であるデータ構造に変換する方法、プログラム、および、システム
US7269850B2 (en) * 2002-12-31 2007-09-11 Intel Corporation Systems and methods for detecting and tracing denial of service attacks
US8813050B2 (en) * 2008-06-03 2014-08-19 Isight Partners, Inc. Electronic crime detection and tracking
US9542448B2 (en) * 2010-11-03 2017-01-10 Software Ag Systems and/or methods for tailoring event processing in accordance with boundary conditions
US20130091266A1 (en) * 2011-10-05 2013-04-11 Ajit Bhave System for organizing and fast searching of massive amounts of data
US9374359B2 (en) * 2012-05-23 2016-06-21 Red Hat, Inc. Generating a data display in view of user activities
EP2894587B1 (en) * 2014-01-09 2019-01-09 Fujitsu Limited Stored data access controller
US9519774B2 (en) * 2014-01-20 2016-12-13 Prevoty, Inc. Systems and methods for SQL query constraint solving
US9736173B2 (en) * 2014-10-10 2017-08-15 Nec Corporation Differential dependency tracking for attack forensics
US10230742B2 (en) * 2015-01-30 2019-03-12 Anomali Incorporated Space and time efficient threat detection
US20160308725A1 (en) * 2015-04-16 2016-10-20 Nec Laboratories America, Inc. Integrated Community And Role Discovery In Enterprise Networks
US10536357B2 (en) * 2015-06-05 2020-01-14 Cisco Technology, Inc. Late data detection in data center
US10860582B2 (en) * 2016-01-29 2020-12-08 Nec Corporation Risky behavior query construction and execution
CN107292169B (zh) * 2016-03-31 2021-04-16 阿里巴巴集团控股有限公司 恶意软件的威胁溯源方法及装置

Also Published As

Publication number Publication date
WO2019032180A1 (en) 2019-02-14
US20190050561A1 (en) 2019-02-14
JP2020522799A (ja) 2020-07-30
DE112018004115T5 (de) 2020-05-07
US11030308B2 (en) 2021-06-08

Similar Documents

Publication Publication Date Title
JP6817469B2 (ja) コンピュータシステムの脅威検出を改善するためのアプリケーション間依存性分析
US10860596B2 (en) Employing external data stores to service data requests
Palkar et al. Filter before you parse: Faster analytics on raw data with sparser
US9811556B2 (en) Source code search engine
Herfert et al. Automatically reducing tree-structured test inputs
US11042539B2 (en) Identifying field values based on user-selected extraction mode
CN110741354B (zh) 呈现代码实体调用之间的差异
EP2407887B1 (en) Solving hybrid constraints to validate specification requirements of a software module
JP7740839B2 (ja) マスタ・データ管理システムのデータ記録にアクセスするための方法
US20120072988A1 (en) Detection of global metamorphic malware variants using control and data flow analysis
WO2015077175A1 (en) Callpath finder
US10360004B2 (en) Using dynamic information to refine control flow graphs
US20150262127A1 (en) Generation and optimzation of in-memory database business rule logic
US20190303266A1 (en) String transformation based trace classification and analysis
US20170099343A1 (en) Mapping selections between a browser and the original fetched file from a web server
Gui et al. APTrace: A responsive system for agile enterprise level causality analysis
KR20210045122A (ko) 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법
CA3048876C (en) Retroreflective join graph generation for relational database queries
US9495459B2 (en) Optimizing web crawling through web page pruning
CN107810474B (zh) 大规模源代码存储库中的自动导入及依赖性
US11983223B2 (en) Finite automaton construction using regular expression derivatives to simulate behavior of a backtracking engine
US20150178075A1 (en) Enhancing understandability of code using code clones
Rinard et al. Inference and Regeneration of Programs that Store and Retrieve Data
Nembhard et al. Conversational code analysis: The future of secure coding
Shao et al. ProGQL: A Provenance Graph Query System for Cyber Attack Investigation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201207

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: 20201215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201224

R150 Certificate of patent or registration of utility model

Ref document number: 6817469

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350