JP4676499B2 - ネットワークフロー内のエクスプロイトコードの検出 - Google Patents

ネットワークフロー内のエクスプロイトコードの検出 Download PDF

Info

Publication number
JP4676499B2
JP4676499B2 JP2007540369A JP2007540369A JP4676499B2 JP 4676499 B2 JP4676499 B2 JP 4676499B2 JP 2007540369 A JP2007540369 A JP 2007540369A JP 2007540369 A JP2007540369 A JP 2007540369A JP 4676499 B2 JP4676499 B2 JP 4676499B2
Authority
JP
Japan
Prior art keywords
code
data flow
exploit
flow
legitimate
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.)
Expired - Fee Related
Application number
JP2007540369A
Other languages
English (en)
Other versions
JP2008519374A (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.)
Telcordia Licensing Co LLC
Original Assignee
Telcordia Licensing Co LLC
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 Telcordia Licensing Co LLC filed Critical Telcordia Licensing Co LLC
Publication of JP2008519374A publication Critical patent/JP2008519374A/ja
Application granted granted Critical
Publication of JP4676499B2 publication Critical patent/JP4676499B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • 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/1416Event detection, e.g. attack signature detection
    • 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

Description

本発明は、一般に、コンピュータシステムのエクスプロイト(exploit)を検出することに関し、より詳細には、ネットワークフロー内のエクスプロイトコードを検出することに関する。
(政府のライセンス所有権)
本発明は、米軍空軍研究所によって与えられたFA8750−04−C−0249の下、政府からの支援を受けて得られた。政府は、本発明に対する一定の権利を有する。
(関連出願)
本願は、2004年11月4日に出願された米国仮出願番号第60/624996号の利益を主張する。米国仮出願番号第60/624996号は、参照することにより本明細書に組み込まれる。
ネットワークコンピュータおよびコンピュータシステムに伴う重大な問題の1つとして、外部から攻撃を受けやすいことがあげられる。攻撃のタイプの1つは、ネットワークコンピュータ上で実行されているネットワークサービスにおける脆弱性の悪用である。コンピュータ上で実行されているネットワークサービスは、ネットワークポートに関連付けられており、このポートは、他のネットワークコンピュータとの接続のため、開かれたままであることがある。開いているネットワークポートを悪用するエクスプロイトコードの1つのタイプは、ワームと呼ばれる。ワームは自己増殖するエクスプロイトコードであり、一旦特定のホストコンピュータに定着すると、別のコンピュータを感染させるために、そのホストコンピュータを使用することがある。こうしたワームは、ネットワークコンピュータに重大な問題を与える。
コンピュータの脆弱性の源は、コンピュータを攻撃に対して無防備にする、ソフトウェアのバグまで遡れる場合がある。ソフトウェアの複雑性のため、ソフトウェアのリリースより前に全てのバグを検出して除去することはできず、従って、コンピュータを攻撃に対して脆弱なままにしておくことになる。
コンピュータ攻撃に対抗する既知の技術がいくつか存在する。1つの手法は、エクスプロイトコードが実行され始めたときに、ワームまたは他のエクスプロイトコードのコンピュータ上での実行を検出することである。この手法は通常、何らかのエクスプロイトコードが実行を試みたとき、そのエクスプロイトコードを検出して有害なコードが実行されることを防ぐように、何らかのタイプのソフトウェアモニタが常にホストコンピュータ上で実行されていることを必要とする。別の手法として侵入検出があるが、これにも、ネットワークポートへの好ましくない侵入を検出する、何らかのタイプのモニタリングソフトウェアがホストシステム上に必要である。これらの技術の両方に共通する問題は、貴重な処理リソースや他のコンピュータリソースを不必要に使用することであり、それによって、ホストコンピュータシステムに望ましくないオーバヘッドが課されることである。
コンピュータ攻撃に対抗する別の手法は、ネットワークフロー内の悪意のあるエクスプロイトコードを検出することを含む。この技術に従うと、悪意のあるエクスプロイトコードを検出するために、データトラヒックが、ネットワーク自体の中で分析される。この手法の利点は、この手法が未然の防止策であり、エクスプロイトコードがホストコンピュータに到達する前に対策をとることができることである。
1つのタイプのネットワークフロー分析は、パターンマッチングを含むが、このパターンマッチングでは、システムが、ネットワークデータパケット内で、シグネチャと呼ばれる既知のパターンを検出しようと試みる。シグネチャに基づく検出システムは、実装すること、および、うまく機能させることが比較的容易である一方、そのセキュリティ保証(security guarantee)は、シグネチャレポジトリ(signature repository)の強固さの程度に留まる。そのようなシステムを回避するには、エクスプロイトコードが、シグネチャレポジトリ内にある全てのパターンを避けるだけでよい。このような回避は、エクスプロイトコードまたはコードシーケンスを変更すること(メタモーフィズム(metamorphism)と呼ばれる)や、エクスプロイトコードを暗号化すること(ポリモーフィズム(polymorphism)と呼ばれる)や、新たな未知の脆弱性を発見してその新たに発見された脆弱性の弱点を突くのに必要なエクスプロイトコードを作成すること(ゼロデイエクスプロイト(zero-day exploit)と呼ばれる)によって、実現することができる。原則として、シグネチャは長くしなければならないが、それは、通常のデータがエクスプロイトコードのシグネチャと偶然一致したときに発生し得る誤検出(false positive)を低減できるくらいに特有であるようにしておくためである。また、シグネチャマッチングプロセスは、演算処理面およびストレージ面で重い負担になり得るので、スケーラビリティを達成するために、シグネチャの数は少なくしておかなければならない。これらの2つの目的は、メタモーフィズムおよびポリモーフィズムによって著しく妨害され、シグネチャに基づく検出システムに重大な問題をもたらす。
シグネチャに基づく技術に加えて、他のネットワークフロー分析技術も利用できる。これらの技術の多くは、典型的なエクスプロイトコードが一般に3つの異なるコンポーネント、すなわち、1)リターンアドレスブロック、2)NOOPスレッド、および、3)ペイロードから構成されているという事実に基づいている。この構造を有するエクスプロイトコードは、一般に、ホストコンピュータ内のバッファオーバフローの脆弱性を悪用するエクスプロイトのクラスを利用する。一般に、そして当該技術分野ではよく知られているように、バッファオーバフロー状態を引き起こすことによって、攻撃者は、しばしば、特定のリターンアドレスブロックにて、強制的にコードの実行をコンピュータに開始させることができる。一連のNOOP(ノーオペレーション)命令(NOOPスレッド)によって、結局、ペイロード内のエクスプロイトコードが実行され、その結果、ホストコンピュータは感染する。いくつかのフロー分析技術は、この既知の構造を利用して、ネットワークフローを分析し、これらの様々なコンポーネントを検出する。例えば、いくつかの先行技術は、NOOPスレッドに着目して、ネットワークフロー内でNOOPスレッドを検出しようと試みている。例えば、2003年10月16日から18日までスイスのチューリッヒで開催された「第5回侵入検出における最近の進歩(RAID:Recent Advances in Intrusion Detection)に関する国際シンポジウム」のプロシーディングの274ページ〜291ページに記載のT.TothおよびC.Krugelによる「Accurate Buffer Overflow Detection Via Abstract Payload Execution」には、ネットワークデータをディスアセンブルして、分岐命令または無効命令によって囲まれた実行命令のシーケンスを検出する手法が記述されている。この記述では、そのようなシーケンスが長くなれば長くなるほど、NOOPスレッドの証拠である可能性がより高いとされている。しかしながら、この検出手法の1つの問題は、通常のコードの間に分岐命令を散りばめ、その結果シーケンスを短くすることによって、この手法を無効化することができることである。
典型的なエクスプロイトコードの構造に基づく別の技術は、2004年5月に韓国のソウルで開催された「第9回IEEE/IFIPネットワーク運用および管理シンポジウム(NOMS2004:Network Operation and Management Symposium)」のA.Pasupulati、J.Coit、K.Levitt、S.Wu、S.Li、R.Kuo、およびK.Fanによる「Buttercup: On Network-Based Detection of Polymorphic Buffer Overflow Vulnerabilities」に記述されている。この論文には、リターンアドレスコンポーネントを候補バッファアドレス(candidate buffer addresses)と照合することによって、リターンアドレスコンポーネントを検出する手法が記述されている。この手法の1つの問題は、リターンアドレスコンポーネントが非常に小さい場合もあるということであり、従って、シグネチャとして使用されたときに、リターンアドレスコンポーネントが十分なほどに特有ではないため、誤検出が多すぎる結果となる場合があるということである。加えて、ソフトウェアのわずかな変更でさえ、メモリ内のバッファアドレスを変更する可能性が高く、それによって、シグネチャリストの頻繁な更新と、多量の管理オーバヘッドとが必要になる。
典型的なエクスプロイトコードの構造に基づくさらに別の技術が、2004年9月15日から17日までフランスで開催された「第7回侵入検出における最近の進歩(RAID)に関する国際シンポジウム」のプロシーディングの203ページ〜222ページに記載のK.WangおよびS.J.Stolfoによる「Anomalous Payload-Based Network Intrusion Detection」に記述されている。この記述では、まず通常のネットワークフロートラヒックを用いて準備し(train)、続いて、いくつかのバイトレベルの統計的手法を用いてエクスプロイトコードを検出することによって機能する、ペイロードに基づく異常検出システムが提案されている。この手法の1つの問題は、エクスプロイトコードが統計的に通常のトラヒックを模倣するような方法でエクスプロイトコードを実装することによって、検出を回避することができることである。
本発明は、ネットワークフロー内のエクスプロイトコードを検出する方法および装置を提供する。
一実施形態において、ネットワークデータパケットは、フローモニタによってインターセプトされ、フローモニタは、インターセプトされたデータパケットからデータフローを生成する。コンテンツフィルタは、データフローの少なくとも一部分をフィルタリングし、フィルタリングされていない部分は、コードレコグナイザ(code recognizer)に提供される。コードレコグナイザは、データフローのフィルタリングされていない部分の中の実行コードを検出する。コンテンツフィルタは、データフロー内の正規のプログラムをフィルタリングし、コードレコグナイザに提供されるフィルタリングされていない部分には実行コードが組み込まれていないと想定されるようにする。フィルタリングされていないデータフロー部分の中に組み込まれている実行コードは、ネットワークフロー内のエクスプロイトである疑いがある。従って、データフローのフィルタリングされていない部分の中の実行コードを認識することによって、本発明に従うエクスプロイトディテクタ(exploit detector)は、ネットワークフロー内のエクスプロイトコード候補(potential exploit code)を識別することができる。
一実施形態において、実行コードレコグナイザ(executable code recognizer)は、データフローのフィルタリングされていない部分に対してコンバージェント・バイナリ・ディスアセンブリ(convergent binary disassembly)を行うことによって、実行コードを認識する。次いで、実行コードレコグナイザは、実行コードを検出するために、制御フローグラフを作成して、制御フロー分析とデータフロー分析と制約強化(constraint enforcement)とを行う。検出した実行コードをエクスプロイト候補として識別することに加えて、その後、検出した実行コードは、エクスプロイトを検出する際に他のシステムによって使用されるように、エクスプロイト候補のシグネチャを生成するために利用することもできる。
本発明の上記の利点およびその他の利点は、以下の詳細な説明と添付の図面とを参照すれば、当業者には明らかであろう。
図1は、本発明の一実施形態による、ネットワークフロー内のエクスプロイトコードを検出するためのシステムを示している。図1は、フローモニタ104、コンテンツフィルタ106、コードレコグナイザ108、および悪意プログラムアナライザ(malicious program analyzer)110を備えたエクスプロイトディテクタ102を示している。また、図1は、3つのホストコンピュータ112、114、116にそれぞれ関連付けられた3つのネットワークフロー118、120、122を示している。エクスプロイトコードがネットワークフロー内にどのように組み込まれるかを例示するために、フロー122はワームコード124を含むものとして示されている。図1は、ホストへの着信フローとして3つのネットワークフローを示しているが、当業者であれば、本発明は、着信フローだけでなく発信フローも分析するのに使用できることが容易に理解されよう。ここでは、簡潔にするために、着信フローだけを示している。
図1は、本発明の一実施形態によるエクスプロイトディテクタ102の高レベルの機能ブロック図を示していることに留意されたい。エクスプロイトディテクタ102のコンポーネントは機能ブロックとして示されており、そのコンポーネントの各々が処理の一部分を実行する。エクスプロイトディテクタ102は、適切にプログラムされたコンピュータを用いて実装することができる。そのようなコンピュータは、当該技術分野では周知であり、例えば、周知のコンピュータプロセッサ、メモリユニット、ストレージデバイス、コンピュータソフトウェア、および、その他のコンポーネント群を用いて実装することができる。そのようなコンピュータの高レベルのブロック図を図2に示す。コンピュータ202はプロセッサ204を含んでおり、プロセッサ204は、コンピュータ202の全般的な動作を定義するコンピュータプログラム命令を実行することによって、コンピュータ202のそのような動作を制御する。コンピュータプログラム命令は、ストレージデバイス212(例えば、磁気ディスク)に格納することができ、コンピュータプログラム命令の実行が望まれるときに、メモリ210にロードすることができる。このようにして、コンピュータ202によって実行されるステップは、メモリ210および/またはストレージ212に格納されたコンピュータプログラム命令によって定義され、プロセッサ204によって実行されることになる。また、コンピュータ202は、ネットワークを介して他のデバイスと通信するための、1つまたは複数のネットワークインターフェース206を含んでいる。コンピュータ202は、入出力デバイス208も含んでおり、入出力デバイス208は、ユーザがコンピュータ202との対話を可能にするデバイス(例えば、ディスプレイ、キーボード、マウス、スピーカ、ボタンなど)を表している。当業者であれば、実際のコンピュータの実装には他のコンポーネント群も含まれること、および、図2は、例示の目的上、そのようなコンピュータのコンポーネント群の一部を高レベルで表していることが理解されよう。図1を参照すると、機能ブロックの各々は、例えば、必要に応じてプロセッサ204によって実行される様々なソフトウェアモジュールにより実装することができる。様々な実施形態において、エクスプロイトディテクタ102の各種の機能は、ハードウェア、ソフトウェア、およびハードウェアとソフトウェアとの様々な組合せによって実行することができる。
図1に戻ると、フローモニタ104は、ネットワークフロー112、114、116からのデータパケットをインターセプトし、ネットワークフロー内にある様々なデータフローを再構成する。本明細書で用いられるネットワークフローという用語は、特定のタイプのデータやエンドポイント間の特定の接続を指すものではなく、様々なネットワークデバイス間を流れる全てのネットワークトラヒックに対応する。データフローという用語は、2つのエンドポイント間の特定の接続に関連付けられたデータパケットに対応する。ネットワークフローは、一方向でもよいし、双方向でもよく、どちらの方向も、悪意のある実行コード(例えば、ワーム)を含む可能性がある。一実施形態において、フローモニタ104は、tcpflowを用いて実装することができる。tcpflowは、既知のソフトウェアユーティリティであり、ネットワークフローを捕捉して、そのネットワークパケットを実際のデータフローに対応するように再構成するものである。伝送制御プロトコル(TCP)データフローは、非常に容易に再構成することができる。というのは、TCPプロトコルは、データ配信を保証し、また、パケットが送信された順序と同じ順序で配信されることを保証するからである。ユーザ・データグラム・プロトコル(UDP)データフローは、それほど容易に再構成することができない。というのは、UDPは、コネクションレスプロトコルであり、信頼できる通信を保証しないからである。順序がばらばらな状態でUDPパケットが到達すると、(以下で説明するように、)データフローを分析しても、組み込まれた悪意のあるエクスプロイトコードをまったく識別することができない。しかしながら、UDPパケットがエクスプロイトコードの作成者の意図と違う順序で到達した場合には、ホストコンピュータへの感染がうまくいく可能性が低いため、これは重大な問題ではない。フローモニタ104によって再構成されたデータフローは、さらなる処理のため、コンテンツフィルタ106に送信される。
以下で詳述するように、コードレコグナイザ108は、ネットワークフロー内の実行コードを認識することによって、エクスプロイトコード候補を識別する。しかしながら、一部のネットワークフローは、(以下で説明するように、)コードレコグナイザ108のテストに通る正規のプログラムを含む場合があり、従って、エクスプロイトコード候補の誤検出をもたらす場合がある。従って、プログラムのようなコード(program-like code)と正規のプログラムとの区別を追加して行うことが必要となる。コンテンツフィルタ106は、コンテンツがコードレコグナイザ108に到達する前に、コンテンツをフィルタリングする。一実施形態において、コンテンツフィルタ106は、正規のプログラムであると識別され得るプログラムコードをフィルタリングする。従って、どのサービスおよびどの関連データフローが実行コードを含んでいるか否かを特定することが必要となる。この情報は、3−タプル(p,r,v)として表される。ここで、pは、サービスの標準ポート番号であり、rは、データのみ(dと表示される)の場合と、データおよび実行ファイル(dxと表示される)の場合とがあり得るネットワークフローコンテンツのタイプであり、vは、着信(iと表示される)または発信(oと表示される)のどちらかであるフローの方向である。例えば、(ftp,d,i)は、ftpポートを介する、データのみのコンテンツタイプを有する着信フローを表している。さらに詳細なルールが、ホストごとに基づいて規定されてもよい。しかしながら、数百台ものホストを有する大規模な組織では、このようなタプルの数は、非常に多くの数になり得る。それではシステム管理者に大きな負担を与えてしまうため、詳細なルールは望ましくない。ルールが規定されない場合、ほとんどのネットワークフローはデータのみを伝送するので、利便性の目的上、デフォルトでは、データのみのネットワークフローコンテンツが想定される。
図3において、コンテンツフィルタのフィルタリング機能について例示する。図3は、2つのタイプのデータフローを受信しているコンテンツフィルタ302を示している。データのみのフロー304と、データおよび実行ファイルのフロー306とが示されている。3−タプル・ルールにより、フロー306のようなデータおよび実行ファイルのフローであるデータフローが特定された場合、コンテンツフィルタ302は、そのフローが正規のプログラムを含んでいるか否かを判定しなければならない。フローが正規のプログラムを含んでいる場合、正規のプログラムコンテンツ308は、フィルタリングされ、(以下で詳述する)悪意プログラムアナライザに提供される。コンテンツが正規のプログラムでない場合、コンテンツ310は、さらなる分析のために、コードレコグナイザに送信される。3−タプル・ルールにより、フロー304のようなデータのみのフローが特定された場合、フローは、正規のプログラムを含まないと想定されるので、さらなる分析のために、コードレコグナイザに送信される。
正規のプログラムコンテンツ308に関して、一実施形態においては、コンテンツフィルタ106は、Linux(登録商標;以降同じ)およびMicrosoft(登録商標;以降同じ) Windows(登録商標;以降同じ)の実行プログラムを正規のプログラムコンテンツとして識別するように構成されている。通常、フロー内でプログラムが発生することはまれであり、一般には、プログラムの発生は、インターネットからのサードパーティソフトウェアのダウンロードに起因するものと考えられる(ただし、ピア・ツー・ピアのファイル共有ネットワークでは、プログラムの発生がもっと多くなり得るであろう)。LinuxプラットフォームおよびWindowsプラットフォーム向けのプログラムは一般に、標準の実行フォーマットに従う。Linuxプログラムは一般に、1995年に公開された、TIS(Tool Interface Standard)、ELF(Executable and Linking Format)仕様、バージョン1.2に記述されている、周知のELFに従う。Windowsプログラムは一般に、1999年に公開された、Microsoft Portable Executable and Common Object File Format仕様、改訂版6.0に記述されている、周知のPE(Portable Executable)フォーマットに従う。
Linux ELF実行ファイルを検出するプロセスについては、本明細書において以下で説明する。Windows PE実行ファイルを検出するプロセスも同様であり、当業者であれば、本明細書の説明から、容易に実装することができるであろう。コンテンツフィルタ106は、「ELF」という文字群、または、同等なものとして、連続バイト454C46(16進数)を探すために、フローモニタ104から受信したネットワークフローをスキャンする。このバイトシーケンスは通常、正当なELF実行ファイルの開始の印となるものである。次に、コンテンツフィルタ106は、正規のプログラムの以下のような指標を探す。
正規のプログラムの指標の1つは、ELFヘッダである。ELFヘッダは、プログラム全体のレイアウトを記述する情報を含むが、コンテンツフィルタ106の目的からすると、所定のフィールドしか必要ではない。一実施形態において、次のフィールドがチェックされる。1)e_identフィールドは正規のマシン独立型の情報(legitimate machine independent information)を含まなければならない、2)e_machineフィールドはEM_386を含まなければならない、3)e_versionフィールドは正規のバージョンを含まなければならない。ヘッダに関して、Windows PEヘッダのフォーマットは、ELFヘッダに非常に類似しており、Windowsヘッダに対して同様のチェックを実行することができることに留意されたい。Windows PE実行ファイルは、レガシーなDOS(登録商標)ヘッダで始まる。このDOSヘッダは、注目すべき2つのフィールド、すなわち、e_magicとe_lfanewとを含んでいる。e_magicは、文字群「MZ」、または、同等のものとして、バイト5A4D(16進数)でなければならず、e_lfanewは、PEヘッダのオフセットである。正規のプログラムを識別するには、一般にELFヘッダの分析で十分であるが、以下のチェックを行うことによって、さらに確認することができる。
別の正規のプログラムの指標として、ダイナミック・セグメントがある。ELFヘッダを用いることにより、プログラムヘッダのオフセットとダイナミック・セグメントのオフセットとが判定される。ダイナミック・セグメントが存在する場合、実行ファイルは、ダイナミック・リンケージを用いることになり、セグメントは、libc.so.6のような正規の外部共用ライブラリの名前を含まなければならない。ダイナミック・セグメント・フィールド内に正規の外部共用ライブラリの名前があれば、それは正規のプログラムのさらなる証拠である。
その他の正規のプログラムの指標は、シンボルテーブルおよびストリングテーブルである。この場合も、ELFヘッダを用いることにより、シンボルテーブルおよびストリングテーブルのオフセットが判定される。正規のプログラムにおいては、ストリングテーブルは、印刷可能な(printable)文字群のみを含む。また、正規のプログラム内のシンボルテーブルのエントリは、ストリングテーブルへの有効なオフセットを示す。
通常のネットワークデータが正規のプログラムの上述した証拠を全て含むということは、非常に可能性が低い。従って、全ての指標が満たされた場合には、正規の実行プログラムが発見されたと判定することは合理的である。上述した証拠の様々な組合せおよび他の証拠が、具体的な実施形態に応じて使用されてもよいことは言うまでもない。再度図3を参照すると、正規のプログラムコンテンツがコンテンツフィルタ302によって発見された場合、その正規のプログラムコンテンツは、悪意プログラムアナライザ110に送信される。以上、本明細書で、正規のLinuxプログラムおよびWindowsプログラムを識別するためのデータフローの具体的な分析について述べてきた。当業者であれば、データフロー内の正規のプログラムを識別するために、上記以外にも様々なテストを実施できることが理解されよう。
プログラムがたとえ正規のWindowsプログラムまたはLinuxプログラムであっても、そのプログラムが悪意なものであるか否かを判定するために、そのプログラムを分析するよう、そのプログラムが悪意プログラムアナライザ110に提供されてもよい。例えば、悪意プログラムアナライザ110は、当該技術分野では周知のウィルス対策ソフトウェアとすることができる。悪意プログラムアナライザ110の使用は任意であり、様々なタイプのそのようなプログラムは、当該技術分野では周知であるので、そのような悪意プログラムアナライザ110の詳細については本明細書では説明しないが、そのような悪意プログラムアナライザ110は、エクスプロイトディテクタ102と併せて使用することができる。
図3に示すように、データおよび実行ファイルのフロー306内に含まれるコンテンツであって、正規のプログラム308としてフィルタリングされないコンテンツは、コンテンツ310としてコードレコグナイザに送信される。データのみのフロー304内に含まれるコンテンツもまた、コードレコグナイザに送信される。この時点では、実行コードを含んでいてコードレコグナイザに送信されるいかなるコンテンツもエクスプロイトコード候補であり、そういうものとして識別される必要がある。このようにして、コンテンツはコードレコグナイザ108に送信され、コードレコグナイザ108は、以下のように、受信したコンテンツを分析して、その受信したコンテンツが実行コードセグメントを含むか否かを判定する。
バイナリプログラムの静的分析は通常、ディスアセンブリで始まり、続いてデータフロー分析および制御フロー分析が行われる。一般に、静的分析の実効性は、実行ストリーム(execution stream)がいかに正確に再構成されるか(すなわち、ディスアセンブルされるか)に大きく依存する。しかしながら、コードレコグナイザ108は、ネットワークフローが実行コードフラグメントを含んでいるかどうか分からないため、また、ネットワークフローが実行コードフラグメントを含んでいると分かったとしても、このようなコードフラグメントがデータストリーム内のどこにあるのか分からないため、ディスアセンブリは重大な問題であるということが分かる。次に、コンバージェント・バイナリ・ディスアセンブリと呼ばれる有効なディスアセンブリ技術について説明する。これは、静的分析を高速化するのに有効である。
Intel(登録商標;以降同じ)プロセッサに基づくコードのバイナリ・ディスアセンブリの特性として、わずかな命令の損失はあるものの、同一の命令ストリームに収束する(converge)傾向があるということがあげられる。バイトストリームが本質的にはデータであるにもかかわらず、また、ディスアセンブリが行われるときには別々のオフセットにて始まるにもかかわらず、収束(convergence)が生じるように見えるので、これは注目すべきことである。図4Aに示すバイトストリームについてみると、このバイトストリームは、ランダムなプリアンブルから構成され、その後にNOP(0x90)命令であるNOOPスレッドが続く。バイトストリームは、オフセット0、1、2、および3を開始点としてディスアセンブルされ、そのディスアセンブリの出力が、図4B、図4C、図4D、および図4Eにそれぞれ示されている。これらの図は、データストリームをIntelバイナリコードとして解釈する3つの側面を示している。第1に、ほとんど全てのデータバイトは、正当なIntel命令にディスアセンブルされる。第2に、全てのディスアセンブリストリームは、オフセットおよび先行する不要なデータに関わらず、急速にNOOPスレッドに収束する。第3に、NOOPスレッドからの若干の命令が失われるが、それにも関わらず、収束が生じる。
収束現象は、Intelの命令セットの性質によって説明することができる。Intelは、複雑な命令セットのコンピュータアーキテクチャを使用しているため、その命令セットは非常に密度が高い。ディスアセンブルを開始する所与の開始バイトとして可能な256個の値のうち、1つだけ(0xF1)が不正なものである。急速な収束についての別の関連する側面は、Intelが可変長の命令セットを使用していることである。図5は、IA−32アーキテクチャ向けの一般的な命令フォーマットの概要を示している。実際の復号された命令の長さは、1〜3バイトの長さであり得るオプコードだけでなく、適用可能であれば、プレフィックス、ModR/MバイトおよびSIBバイトによって与えられる指示にも依存する。また、全ての開始バイトがディスアセンブリの成功をもたらすわけではなく、そのような場合、それらは、図4Cおよび図4Dのオフセット0x00000006にて示されるように、データバイトとして復号されることに留意されたい。
収束現象のより正式な数学的分析を以下に示す。バイトストリームに対して、実際のエクスプロイトコードが、何らかのオフセットx=0,1,2,...にて組み込まれていると仮定する。理想的には、命令ストリームを復元するためのバイナリ・ディスアセンブリは、xにて始まるか、または、少なくともxにて一致する必要がある。しかしながら、出願人らはxを知らないので、バイトストリーム内の最初のバイトから開始する。出願人らは、xの後どれくらいでディスアセンブリがエクスプロイトコードの実際の命令ストリームと一致するのかを知ることに関心がある。
この疑問に答えるために、ディスアセンブリのプロセスを、バイトストリーム全体にわたるランダムウォークとしてモデル化する。このプロセスのモデルでは、各バイトが状態スペースにおける1個の状態に対応する。ディスアセンブリは、厳密に前方に進むランダムウォークであって、各ステップのサイズは、所与のバイトにて復号された命令の長さによって与えられる。2つのランダムウォークが存在し、一方は出願人らのディスアセンブリに対応し、他方は実際の命令ストリームに対応する。両方のランダムウォークが同時に進む必要はないし、両方のランダムウォークが一致するポイントに到達するのに同数のステップを取る必要もないことに留意されたい。
数学的用語に翻訳すると、L={1,.....,N}は、確率{p1,.....,pN}で生じる、考えられ得るステップのサイズまたは命令の長さの集合とする。第1のウォークについては、ステップのサイズを
Figure 0004676499
とし、
Figure 0004676499
と定義する。
同様に、第2のウォークについては、ステップのサイズを
Figure 0004676499
とし、
Figure 0004676499
とする。
出願人らは、ランダムウォーク{Zk}と、
Figure 0004676499
とが交差する確率を発見することに関心があり、もし交差するのであるならば、どのバイト位置で交差するかということに関心がある。
これを行う1つの方法は、次のように定義される「ギャップ(gap)」を詳しく調べることである。ここで、G0=0、
Figure 0004676499
とする。
Figure 0004676499
ならば、G1=0となり、この場合、両ウォークは1ステップ後に交差する。G1>0の場合、一般性を失うことなく、
Figure 0004676499
と仮定する。出願人らのアプリケーションの観点からすると、{Zk}は出願人らのディスアセンブリに対応するウォークであり、
Figure 0004676499
は実際の命令ストリームである。
Figure 0004676499
であり、
Figure 0004676499
であると定義する。一般に、Zと、
Figure 0004676499
とは、各「ギャップ」変数Gnの定義において、「先行部(leader)」と「遅行部(laggard)」との役割を交代する。{Gn}はマルコフ連鎖を形成する。マルコフ連鎖を単純化できない場合、ランダムウォークは正の確率(positive probability)で交差し、実際、第1回目では、ギャップのサイズは0である。ここで、
T=inf{n>0:Gn=0}
を両方のウォークが交差する最初の時間であるとする。この交差が生じるプログラムブロック内のバイト位置は、以下の式により与えられる。
Figure 0004676499
一般に、出願人らには、プログラムブロック内の出願人らの開始位置であるZ1は分からない。というのは、出願人らは、プログラムのエントリポイントを知らないからである。従って、出願人らは、一致が生じるディスアセンブリ開始ポイント後のバイト位置の数を表す量である、
Figure 0004676499
について、大いに関心がある。分配(partition)と多項分布とを用いて、
i,j∈{0,1,...,N−1}の各々について、
推移確率の行列pn(i,j)=P(Gn+1=j|Gn=i)を計算することができる。実際、pn(i,j)=p(i,j)は、nに依存しない、すなわち、マルコフ連鎖は一様である。この行列によって、例えば、2つのランダムウォークが、ディスアセンブリの開始後、nの位置で交差する確率を計算することができる。
上記の計算に必要な命令の長さの確率{p1,...,pN}は、ネットワークフローのバイトコンテンツに依存する。命令の長さの確率は、実証的分析の間に選択された同じネットワークフロー(HTTP、SSH、XII、CIFS)に対するディスアセンブリと統計的計算とによって得られた。図7において、ディスアセンブリ開始後、nバイトを過ぎて交差(一致)が生じる確率
Figure 0004676499
を、n=0,...,99についてプロットした。
この確率は急に低下することが明らかであり、実際、ディスアセンブリ開始後、それぞれ21番目(HTTP)、16番目(SSH)、15番目(XII)、および16番目(CIFS)のバイトの位置、または、それらより前の位置で、ディスアセンブリ「ウォーク」と「プログラムウォーク」とが、確率0.95で交差する。平均すると、両ウォークは、それぞれわずか6.3バイト(HTTP)、4.5バイト(SSH)、3.2バイト(XII)、および4.3バイト(CIFS)後に交差することになる。
セキュリティの観点から、静的分析は、プログラムコードの脆弱性と、それに関連したソフトウェアのバグとを発見するのに使用されることが多い。静的分析はまた、所与のプログラムが悪意のあるコードを含んでいるか否かを判定するためにも使用される。しかしながら、コード難読化技術およびエイリアシングの論証不能性のため、合理的な期限内に正確な静的分析を行うのは、非常に難しい問題である。一方では、表面的な静的分析は効率的であるが対象範囲が狭くなることがあり、他方では、高精度を追求すると、通常、非常に処理時間がかかる結果になりやすい。一般論として、出願人らの手法は、ネットワークフローに対して静的分析を用いるのであり、オンラインネットワークベースの実装を実現するためには、効率性が重要な設計目標となる。通常であれば、これは精度の悪さをもたらすことがあるが、出願人らの手法は、除外プロセスを工夫するためだけに静的分析を用いるのであり、この手法は、エクスプロイトコードが、エクスプロイトコードのサイズと制御フローとの点で、いくつかの制約を受けるという前提に基づいている。これらの制約は、その後、バイトストリームがデータであるか、または、プログラムのようなコードであるかを判定するのに役立つように用いられる。
復元され得る情報量に応じて、静的分析の観点から、エクスプロイトコードには2つの大きなカテゴリがある。第1のカテゴリは、既知のエクスプロイト、ゼロデイエクスプロイト、およびメタモーフィック(metamorphic)エクスプロイトなどの、露出されて送信されるタイプのエクスプロイトコードを含む。第2のカテゴリは、露出は最小限に抑えられるが、それでも制御フローの何らかの兆候を含むエクスプロイトコードを含む。ポリモーフィック(polymorphic)コードは、この第2のカテゴリに属する。この基本的な違いのため、出願人らは、ポリモーフィックエクスプロイトに対して、基本的な方法はやはり静的分析に基づいてはいるが、除去プロセスをいくらか異なる手法で行う。ポリモーフィズムおよびメタモーフィズムの両方が使用されている場合には、前者の方が主要な(dominant)難読化であることに留意されたい。次に、バイナリ・ディスアセンブリから始まる、出願人らの手法の詳細に移る。
ここで、コードレコグナイザ108の機能の詳細について、図8と関連させて説明する。図8は、コードレコグナイザ108によって実行されるステップの、高レベルのフローチャートを示している。第1ステップ802は、上述したように、データフローコンテンツのコンバージェント・バイナリ・ディスアセンブリである。しかしながら、収束に完全に頼ることには注意が必要である。第1に、この技術には損失が多い。NOOPスレッドに関する命令の損失は、それほど深刻ではないが、エクスプロイトコード内にある命令の損失は、深刻なものとなり得る。コードからできるだけ多くの分岐命令を復元することが望ましいが、これは多量の処理オーバヘッドを要する。従って、効率性か、または精度のどちらを重視するかに応じて、2つのディスアセンブリの方法を使用することができる。第1の方法は効率的であり、その方法は、追加の処理を何もせずに、最初のバイトから始めてバイナリ・ディスアセンブリを実行することである。上述した収束特性によって、分岐命令を含む少なくとも過半数の命令が復元されることが確実になる。しかしながら、この方法はデータインジェクション(data injection)に対する抵抗性は低い。データインジェクションとは、正当な命令の間にランダムなデータを意図的に挿入することによって、正確な命令ディスアセンブリを回避するのに用いられる手法である。第2の方法は精度を重視する。この方法を用いることにより、分岐命令に対応するオプコードを探すために、ネットワークフローがスキャンされ、これらの命令が最初に復元される。次いで、結果として生じるより小さなブロックに対して、完全なディスアセンブリが実行される。その結果、いかなる分岐命令も失われない。この方法は比較的時間がかかる。その原因は、ネットワークフローに対する追加のパスだけでなく、識別される可能性のある基本ブロックの数にもある。結果として生じるオーバヘッドは、ネットワークフローコンテンツによっては、かなりの量になり得る。例えば、HTTPトラヒックなどのASCIIテキストを伝送するネットワークフローに関しては、多量のオーバヘッドが予想され得る。というのは、条件分岐命令にも、例えば「t」および「u」のような印刷可能な文字がいくつかあり、バイナリ・ディスアセンブリは、それらをそれぞれ、「等しければ分岐(je:jump on equal)」および「等しくなければ分岐(jne:jump on not equal)」と解釈するからである。ディスアセンブリ技術の選択は、具体的な実装に依存することになる。
バイナリ・ディスアセンブリの後、コードレコグナイザ108は、制御フロー分析およびデータフロー分析を行う。まず、ステップ804において、コードレコグナイザ108は、制御フローグラフ(CFG:Control flow graph)を作成する。基本ブロックは、ブロックの先頭(block leader)を介して識別されるが、それによれば、最初の命令はブロックの先頭であり、分岐命令のターゲットはブロックの先頭であり、そして、分岐命令に続く命令もまたブロックの先頭である。基本ブロックは、本質的に命令のシーケンスであり、制御フローは、最初の命令にて入り、最後の命令を介して出て行くようになっている。各ブロックの先頭についてみると、その基本ブロックは、そのブロックの先頭と次のブロックの先頭までの全てのステートメントとから構成されるが、次のブロックの先頭は含まれない。各基本ブロックは、3つの状態のうちの1つと関連付けられる。ブロックの終わりにある分岐命令が有効な分岐ターゲットを有する場合には、基本ブロックは有効な状態と関連付けられる。ブロックの終わりにある分岐ターゲットが無効な分岐ターゲットを有する場合には、基本ブロックは無効な状態と関連付けられる。ブロックの終わりにある分岐ターゲットが未知である場合には、基本ブロックは未知の状態と関連付けられる。この情報は、CFGの余分な部分を除去するのに役立つ。CFGにおける各頂点(node)は基本ブロックであり、向きが付けられた辺(edge)は各々、見込まれる制御フローを示す。制御述語情報(control predicate information)(すなわち、条件分岐の出力辺における真または偽)は無視される。しかしながら、無効とタグ付けされた各基本ブロックについては、そのブロックは、いかなる実行パスにおいても出現できないので、全ての入力辺および出力辺が除去される。また、いかなるブロックについても、出力辺が1つしかなく、かつ、その出力辺が無効なブロックに入る場合には、そのブロックも無効であるとみなされる。全てのブロックが処理されると、必要とされるCFGが判明する。
典型的なCFGインスタンスの部分図を図6に602として示している。典型的なCFGでは、無効なブロックが、大多数のブロックを形成し、それら無効なブロックは、さらなる分析から除外される。ステップ804で制御フローグラフを作成した後、コードレコグナイザ108は、静的分析用に問題のサイズを低減させるために、ステップ806で制御フロー分析を実行する。CFG内の残りのブロックは、1つまたは複数のばらばらの連鎖(または、サブグラフ)を形成することができ、今度は、その各々が1つまたは複数のブロックから構成される。図6のCFG602において、ブロック604およびブロック612は無効であり、ブロック606は有効であって、有効なライブラリコールで終了する。ブロック608およびブロック610は連鎖を形成しているが、ブロック610における分岐命令のターゲットは未知である。CFG602は一意な入口頂点および出口頂点を有しておらず、各連鎖は別々に分析されることに留意されたい。
ステップ808において、プログラムスライシングに基づくデータフロー分析を用いて、除去プロセスを継続する。プログラムスライシングとは、特定の演算に関連するプログラムの部分だけを抽出する分解技術である。出願人らは、1981年に米国カリフォルニア州サンディエゴで開催された第5回ソフトウェアエンジニアリング国際会議のプロシーディングの439ページ〜449ページに記載された、Mark Weiserによる「Program Slicing」に記述された後方静的スライシング技術手法(backward static slicing technique approach)を用いている。このプロシーディングは、参照することにより本明細書に組み込まれる。この手法は、スライシングアルゴリズムの中間表示として、制御フローグラフを用いる。このアルゴリズムは、実行時間計算量(running time complexity)O(v×n×e)を有している。ここで、v、n、eはそれぞれ、CFG内の変数の数、頂点の数、辺の数である。Intelプラットフォームには固定数のレジスタしかなく、かつ、典型的なCFG内の頂点および辺の数はほぼ同じであると仮定すると、実行時間はO(n2)である。プログラム依存グラフ(PDG:Program Dependence Graph)やシステム依存グラフ(SDG:System Dependence Graph)などの様々な表現を用いて、グラフの到達可能性に基づく分析を実行するその他の手法もある。このようなアルゴリズムには追加の表現のオーバヘッドが伴うが、精度が最重要である場合には、このようなアルゴリズムの方が適切である。
一般に、削減されたCFG内のどの連鎖であっても、当てはまる特性は少ない。連鎖における最後のブロック以外のブロックは全て、ネットワークフローに対するオフセットである分岐ターゲットを有しており、その後続ブロック(successor block)を指示する。連鎖における最後のブロックについては、以下のようなケースで、データのみを含むフローと実行エクスプロイトコード候補を含むフローとを区別する除去プロセスが講じられる。
第1のケースは、明らかなライブラリコールのケースである。連鎖における最後の命令が分岐命令、特にcall/jmpで終わるが、明らかなターゲット(即値アドレス指定/絶対アドレス指定)を有する場合、そのターゲットはライブラリコールアドレスでなければならない。即値分岐ターゲットを有する有効な分岐命令が他にあるならば、その分岐命令は、連鎖においてもっと早く出現して、次の有効なブロックを指示するであろう。対応する連鎖は、スタックがライブラリコールより前の矛盾のない状態にある場合にのみ実行することができるので、出願人らは、最後の分岐命令より前にプッシュ命令があることを予想する。コードレコグナイザは、スライシング基準<s,v>を用いてプログラムスライスを計算する。ここで、sはプッシュ命令のステートメント番号であり、vはそのオペランドである。出願人らは、命令の中で用いられる以前にvが定義されると予想する。このような条件が満たされ、かつ、ライブラリコールが疑わしいものである場合には、警告が発せられる。また、最後の分岐命令およびプログラムスライスに対応するバイトシーケンスは、(以下でさらに詳述するように)シグネチャに変換される。
第2のケースは、明らかな割り込みのケースである。これは、分岐命令が明らかな分岐ターゲットを有する別のケースであり、その分岐ターゲットは有効な割り込み番号でなければならない。すなわち、割り込みの前に、レジスタeaxは有意義な値に設定される。int命令から後方に動作して、コードレコグナイザ108は、eaxレジスタの最初の使用を探し、そのポイントにてスライスを計算する。eaxレジスタに0から255までのいずれかの値が割り当てられている場合には、警告が発せられ、適切なシグネチャが生成される。
第3のケースは、ret命令のケースである。この命令は、スタックの状態に応じて制御フローを変更する。従って、出願人らは、retがコールされる前に、連鎖における早いポイントで、スタックフレームを生成するコール命令か、または、(プッシュ命令などの)スタックの状態を明確に設定する命令を発見すると予想する。そうでなければ、ret命令を実行すると、エクスプロイトの成功ではなく、クラッシュを引き起こすことがある。
第4のケースは、分岐ターゲットが隠されているケースである。分岐ターゲットがレジスタのアドレス指定によって隠されている場合には、上述した分岐ターゲットに対する制約が、対応する隠された分岐ターゲットを保持することを確実にするだけで十分である。このケースでは、コードレコグナイザ108は、オペランドに有効な分岐ターゲットが割り当てられているか否かを確認する目的で、スライスを計算する。オペランドに有効な分岐ターゲットが割り当てられている場合には、警告が発せられる。
ポリモーフィックエクスプロイトコードの場合も、ステップ808でテストされてもよいが、この場合は若干異なる方法で処理される。デクリプタ(decryptor)本体のみが可視であると予想でき、デクリプタ本体はループとして実装されることが多いので、コードレコグナイザ108は、削減されたCFG内でサイクルの証拠を探すが、これは、O(n)内に達成することができる。ここで、nは、有効な連鎖におけるステートメントの総数である。ここでもまた、使用されるアドレス指定モードに応じて、ループ自体が、明らかなこともあり得るし、隠されていることもあり得る。前者の場合、コードレコグナイザ108は、ループ本体の中で使用されている少なくとも1つのレジスタが本体の外側で初期化されたことを確認する。代替のチェック方法として、ループ本体の中の少なくとも1つのレジスタがネットワークフロー自体を参照することを確認することがあげられる。間接アドレス指定のためループが明らかでない場合には、状況は第4のケースと同様である。出願人らは、制御フローが元のネットワークフローを指示するように、分岐ターゲットに値が割り当てられることを予想する。
次いで、ステップ810において、コードレコグナイザ108は、次の3つの技法を用いて制約強化を行う。第1に、ホストコンピュータ内の全ての脆弱なバッファに対して、攻撃者はバッファの限度を超える任意の量のデータを書き込むおそれがあるが、書き込みは、マッピングされていないメモリまたは無効なメモリへと向けられ得るので、これはクラッシュという結果になる可能性が非常に高い。これがリモートエクスプロイトの目的であることはほとんどなく、成功させるためには、エクスプロイトコードは、バッファ内に収まるように、注意深く作成されなければならない。脆弱なバッファは各々、サイズが限られており、今度は、これが送信される感染ベクトル(infection vector)のサイズに制限を加える。
第2に、分岐ターゲットのタイプが、エクスプロイトコードに対して制限される。例えば、リモート感染中に伴う不確実性のため、制御フローが、任意のいかなるメモリ位置にも転送されることは不可能である。さらに、上述したサイズの制約のため、分岐ターゲットはペイロードコンポーネント内に存在することができ、従って、フローのサイズを上回るcall/jumpは無意味なものとなる。最後に、達成されなければならない目的のため、エクスプロイトコードは結局、制御をシステムコールに転送しなければならない。従って、注目すべき分岐命令は、jump(jmp)系、call/return(ret)系、loop系、および割り込みである。
第3に、攻撃者といえども、特権シェルなどの何らかの現実的な目的を達成するには、基礎をなすシステムコールサブシステムに目を向けなければならない。システムコールは、ライブラリインターフェース(Linuxではglibc、Windowsではkernel32.dll,ntdll.dll)を通じて、あるいは割り込みを直接発行することによって呼び出すことができる。前者が選択された場合、Linuxでは0x40、Windowsでは0x77である、ライブラリの好適なベースロードアドレス(base load address)を探す。同様に、後者については、対応する割り込み番号は、Linuxではint 0x80、Windowsではint 0x2eである。
エクスプロイトコードを検出する単純な手法は、分岐命令と、分岐命令のターゲットとを単に探して、上述した分岐ターゲット条件を確認することであろう。しかしながら、追加の分析を必要とする次の理由により、これだけでは十分でない。第1に、上記の条件を満たすバイトパターンがネットワークフローにおいて生じる確率は非常に低いが、それでも誤検出を回避するのに十分なほど低いわけではない。第2に、間接メモリアドレス指定のため、分岐ターゲットが明らかでない場合がある(例えば、「call 0x12345678」という形式の代わりに、「call eax」または「call[eax]」が使用される場合もある)。
エクスプロイトコード候補を識別するのに加えて、コードレコグナイザ108は、エクスプロイトコード候補のシグネチャを生成することもできる。制御フロー分析によって、余分な部分が除去されたCFGが生成され、データフロー分析によって、有効なブロック内の注目すべき命令が識別される。このような命令に対応するバイトに基づいて、シグネチャが生成される。コードレコグナイザ108は、CFG内の全てのブロックをシグネチャに変換することはしないことに留意されたい。というのは、バイナリ・ディスアセンブリからのノイズによって、エクスプロイトコードが誤って表現され、シグネチャが使用できなくなる可能性があるからである。シグネチャを生成している間に考慮すべき主な点は、制御フロー分析およびデータフロー分析は、違った角度で命令に注目してもよいが、シグネチャは、バイトを、ネットワークフローにおける発生順に含まなければならないことである。出願人らは、シグネチャについては、ワイルドカードを含む正規表現を用いる。というのは、関連する命令および対応するバイトシーケンスが、ネットワークフローにおいて切断されることがあるからである。
前述した本発明の詳細な説明は、あらゆる点で例示的なものにすぎず、限定的なものではないと理解されたい。本明細書で開示される本発明の範囲は、本発明の詳細な説明から判断されるべきでなく、特許法により認められる最大の広さに従って解釈される特許請求の範囲から判断されるべきである。本明細書に示して記述した実施形態は、本発明の原理を例示しているだけであり、当業者であれば、本発明の範囲および趣旨から逸脱することなく、様々な変形形態を実施できることが理解されよう。当業者であれば、本発明の範囲および趣旨から逸脱することなく、他の特徴の様々な組合せを実施することができよう。
本発明の一実施形態による、ネットワークフロー内のエクスプロイトコードを検出するためのシステムを示す図である。 本発明による機能を実行するようにプログラムすることができるコンピュータの高レベルのブロック図である。 コンテンツフィルタのフィルタリング機能を例示する図である。 例示的なバイトストリームを示す図である。 様々なオフセットにて開始される図4Aのバイトストリームのディスアセンブリを例示する図である。 様々なオフセットにて開始される図4Aのバイトストリームのディスアセンブリを例示する図である。 様々なオフセットにて開始される図4Aのバイトストリームのディスアセンブリを例示する図である。 様々なオフセットにて開始される図4Aのバイトストリームのディスアセンブリを例示する図である。 IA−32アーキテクチャ向けの一般的な命令フォーマットの概要を示す図である。 制御フローグラフのインスタンスの部分図である。 ディスアセンブリ開始後、nバイトを過ぎて一致が生じる確率をプロットしたグラフである。 コードレコグナイザによって実行されるステップの、高レベルのフローチャートである。

Claims (19)

  1. ネットワークトラヒックをモニタリングしてエクスプロイトコードを検出するエクスプロイト検出器における方法であって、
    ネットワークデータパケットをインターセプトするステップと、
    前記インターセプトしたデータパケットからデータフローを生成するステップと、
    正規の実行コードを含む前記データフローの少なくとも一部分をフィルタリングするステップであって、正規のプログラムコードを示す正規の実行コードを含む少なくとも1つの正規のプログラムの指標を識別することを含むステップと、
    正規のプログラムコードとして識別されないデータフローの一部分を含む前記データフローのフィルタリングされていない部分を、前記正規のプログラムコードを除いてコードレコグナイザに提供するステップと、
    前記コードレコグナイザが、前記データフローの前記フィルタリングされていない部分の中からエクスプロイト候補として実行コードを検出するステップと
    を備えることを特徴とする方法。
  2. 前記フィルタリングは、予め定められたルールのセットに基づくことを特徴とする請求項1に記載の方法。
  3. 前記正規のプログラムコードが悪意のあるコードを含むか否かを判定するステップをさらに備えることを特徴とする請求項に記載の方法。
  4. 前記実行コードを検出するステップは、前記データフローの前記フィルタリングされていない部分に対してコンバージェント・バイナリ・ディスアセンブリを行うことを含むことを特徴とする請求項1に記載の方法。
  5. 前記実行コードを検出するステップは、
    前記コンバージェント・バイナリ・ディスアセンブリの結果から制御フローグラフを作成し、この結果を前記コンバージェント・バイナリ・ディスアセンブリのブロックである見込まれる制御フローを示すエッジによって接続されたノードとして表すステップと、
    前記制御フローグラフを用いて制御フロー分析を行い、エクスプロイト候補実行コードを含まないブロックを削除することにより前記制御フローグラフを変更するステップと
    をさらに含むことを特徴とする請求項に記載の方法。
  6. 約強化を行うステップをさらに備えることを特徴とする請求項に記載の方法。
  7. 前記検出した実行コードからコードシグネチャを生成するステップをさらに備えることを特徴とする請求項1に記載の方法。
  8. ネットワークトラヒックをモニタリングするシステムであって、
    インターセプトされたネットワークデータパケットを受信するネットワークインターフェースと、
    前記インターセプトされたネットワークデータパケットからデータフローを生成するフローモニタと、
    前記データフローの少なくとも一部分をフィルタリングするコンテンツフィルタであって、前記データフローから正規のプログラムコードをフィルタリングするコンテンツフィルタと、
    前記正規のプログラムコードを除く、前記コンテンツフィルタにより解析された前記データフローの他の部分を受信し、
    前記データフローの前記他の部分の中からエクスプロイト候補として実行コードを検出する実行コードレコグナイザと
    を備えたことを特徴とするシステム。
  9. 前記コンテンツフィルタは、フィルタリングルールのセットを格納することを特徴とする請求項に記載のシステム。
  10. 前記正規のプログラムコードが悪意のあるコードを含むか否かを判定する悪意プログラムアナライザをさらに備えたことを特徴とする請求項に記載のシステム。
  11. 前記実行コードレコグナイザは、コンバージェント・バイナリ・ディスアセンブリを行うことを特徴とする請求項に記載のシステム。
  12. ネットワークトラヒックをモニタリングするシステムであって、
    ネットワークデータパケットをインターセプトする手段と、
    前記インターセプトしたデータパケットからデータフローを生成する手段と、
    正規の実行コードを含む前記データフローの少なくとも一部分をフィルタリングする手段であって、正規のプログラムコードを示す正規の実行コードを含む少なくとも1つの正規のプログラムの指標を識別することを含む手段と、
    正規のプログラムコードとして識別されないデータフローの一部分を含む前記データフローのフィルタリングされていない部分を、前記正規のプログラムコードを除いてコードレコグナイザに提供する手段と、
    前記データフローの前記フィルタリングされていない部分の中からエクスプロイト候補として実行コードを検出するコードレコグナイザ
    を備えたことを特徴とするシステム。
  13. 前記フィルタリングする手段は、予め定められたルールのセットを含むことを特徴とする請求項12に記載のシステム。
  14. 前記正規のプログラムコードが悪意のあるコードを含むか否かを判定する手段をさらに備えたことを特徴とする請求項12に記載のシステム。
  15. 前記コードレコグナイザは、前記データフローの前記フィルタリングされていない部分に対してコンバージェント・バイナリ・ディスアセンブリを行う手段を含むことを特徴とする請求項12に記載のシステム。
  16. 前記コードレコグナイザは、
    制御フローグラフを作成する手段と、
    前記制御フローグラフを用いて制御フロー分析を行う手段と
    をさらに含むことを特徴とする請求項15に記載のシステム。
  17. 約強化を行う手段をさらに備えたことを特徴とする請求項12に記載のシステム。
  18. 前記検出した実行コードからコードシグネチャを生成する手段をさらに備えたことを特徴とする請求項12に記載のシステム。
  19. コンピュータに、請求項1ないし7のいずれかに記載の各ステップを実行させるためのコンピュータプログラム。
JP2007540369A 2004-11-04 2005-10-28 ネットワークフロー内のエクスプロイトコードの検出 Expired - Fee Related JP4676499B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62499604P 2004-11-04 2004-11-04
PCT/US2005/039437 WO2007001439A2 (en) 2004-11-04 2005-10-28 Detecting exploit code in network flows

Publications (2)

Publication Number Publication Date
JP2008519374A JP2008519374A (ja) 2008-06-05
JP4676499B2 true JP4676499B2 (ja) 2011-04-27

Family

ID=37595608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007540369A Expired - Fee Related JP4676499B2 (ja) 2004-11-04 2005-10-28 ネットワークフロー内のエクスプロイトコードの検出

Country Status (5)

Country Link
US (1) US20090328185A1 (ja)
EP (1) EP1820099A4 (ja)
JP (1) JP4676499B2 (ja)
CA (1) CA2585145A1 (ja)
WO (1) WO2007001439A2 (ja)

Families Citing this family (200)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9027135B1 (en) 2004-04-01 2015-05-05 Fireeye, Inc. Prospective client identification using malware attack detection
US8566946B1 (en) 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US7587537B1 (en) 2007-11-30 2009-09-08 Altera Corporation Serializer-deserializer circuits formed from input-output circuit registers
US8528086B1 (en) 2004-04-01 2013-09-03 Fireeye, Inc. System and method of detecting computer worms
US9106694B2 (en) 2004-04-01 2015-08-11 Fireeye, Inc. Electronic message analysis for malware detection
US8171553B2 (en) 2004-04-01 2012-05-01 Fireeye, Inc. Heuristic based capture with replay to virtual machine
US8898788B1 (en) 2004-04-01 2014-11-25 Fireeye, Inc. Systems and methods for malware attack prevention
US8881282B1 (en) 2004-04-01 2014-11-04 Fireeye, Inc. Systems and methods for malware attack detection and identification
US8549638B2 (en) 2004-06-14 2013-10-01 Fireeye, Inc. System and method of containing computer worms
US8793787B2 (en) 2004-04-01 2014-07-29 Fireeye, Inc. Detecting malicious network content using virtual environment components
US8584239B2 (en) 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US20080134326A2 (en) * 2005-09-13 2008-06-05 Cloudmark, Inc. Signature for Executable Code
US8443442B2 (en) * 2006-01-31 2013-05-14 The Penn State Research Foundation Signature-free buffer overflow attack blocker
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US7895573B1 (en) 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
KR100922579B1 (ko) * 2006-11-30 2009-10-21 한국전자통신연구원 네트워크 공격 탐지 장치 및 방법
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
KR100850361B1 (ko) * 2007-03-14 2008-08-04 한국전자통신연구원 실행 가능한 코드 탐지 방법 및 장치
US8141055B2 (en) * 2007-12-31 2012-03-20 International Business Machines Corporation Method for dynamic discovery of code segments in instrumented binary modules
JP5009186B2 (ja) * 2008-02-12 2012-08-22 日本電信電話株式会社 逆アセンブル方法および逆アセンブル装置
US8869109B2 (en) * 2008-03-17 2014-10-21 Microsoft Corporation Disassembling an executable binary
US8234712B2 (en) * 2008-04-11 2012-07-31 International Business Machines Corporation Executable content filtering
US20110107314A1 (en) * 2008-06-27 2011-05-05 Boris Artashesovich Babayan Static code recognition for binary translation
CA2674327C (en) * 2008-08-06 2017-01-03 Trend Micro Incorporated Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor
US8850571B2 (en) 2008-11-03 2014-09-30 Fireeye, Inc. Systems and methods for detecting malicious network content
US8997219B2 (en) 2008-11-03 2015-03-31 Fireeye, Inc. Systems and methods for detecting malicious PDF network content
US9258217B2 (en) * 2008-12-16 2016-02-09 At&T Intellectual Property I, L.P. Systems and methods for rule-based anomaly detection on IP network flow
US20100205674A1 (en) * 2009-02-11 2010-08-12 Microsoft Corporation Monitoring System for Heap Spraying Attacks
US8402541B2 (en) * 2009-03-12 2013-03-19 Microsoft Corporation Proactive exploit detection
US8381284B2 (en) 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US8543974B2 (en) * 2009-08-31 2013-09-24 International Business Machines Corporation Plan-based program slicing
US8832829B2 (en) 2009-09-30 2014-09-09 Fireeye, Inc. Network-based binary file extraction and analysis for malware detection
JP5301411B2 (ja) * 2009-10-16 2013-09-25 日本電信電話株式会社 類似性算出装置、類似性算出方法、類似性算出プログラム、及び類似性解析装置
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8607351B1 (en) * 2010-11-02 2013-12-10 The Boeing Company Modeling cyberspace attacks
US8839428B1 (en) * 2010-12-15 2014-09-16 Symantec Corporation Systems and methods for detecting malicious code in a script attack
US8713679B2 (en) 2011-02-18 2014-04-29 Microsoft Corporation Detection of code-based malware
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
CN103299270B (zh) * 2011-04-29 2017-03-08 中天安泰(北京)信息技术有限公司 运行时指令重组方法及装置
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US8671397B2 (en) 2011-09-27 2014-03-11 International Business Machines Corporation Selective data flow analysis of bounded regions of computer software applications
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US9038185B2 (en) 2011-12-28 2015-05-19 Microsoft Technology Licensing, Llc Execution of multiple execution paths
US9519782B2 (en) 2012-02-24 2016-12-13 Fireeye, Inc. Detecting malicious network content
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
US9563424B2 (en) 2012-08-17 2017-02-07 Google Inc. Native code instruction selection
EP2909775B1 (en) * 2012-10-19 2022-01-26 McAfee, LLC Mobile application management
US9792432B2 (en) * 2012-11-09 2017-10-17 Nokia Technologies Oy Method and apparatus for privacy-oriented code optimization
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
US10572665B2 (en) 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US9824209B1 (en) 2013-02-23 2017-11-21 Fireeye, Inc. Framework for efficient security coverage of mobile software applications that is usable to harden in the field code
US9367681B1 (en) 2013-02-23 2016-06-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application
US9195829B1 (en) 2013-02-23 2015-11-24 Fireeye, Inc. User interface with real-time visual playback along with synchronous textual analysis log display and event/time index for anomalous behavior detection in applications
US9176843B1 (en) 2013-02-23 2015-11-03 Fireeye, Inc. Framework for efficient security coverage of mobile software applications
US9009823B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications installed on mobile devices
US9009822B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for multi-phase analysis of mobile applications
US9159035B1 (en) 2013-02-23 2015-10-13 Fireeye, Inc. Framework for computer application analysis of sensitive information tracking
US8990944B1 (en) 2013-02-23 2015-03-24 Fireeye, Inc. Systems and methods for automatically detecting backdoors
US9626509B1 (en) 2013-03-13 2017-04-18 Fireeye, Inc. Malicious content analysis with multi-version application support within single operating environment
US9565202B1 (en) 2013-03-13 2017-02-07 Fireeye, Inc. System and method for detecting exfiltration content
US9104867B1 (en) 2013-03-13 2015-08-11 Fireeye, Inc. Malicious content analysis using simulated user interaction without user involvement
US9355247B1 (en) 2013-03-13 2016-05-31 Fireeye, Inc. File extraction from memory dump for malicious content analysis
US9430646B1 (en) 2013-03-14 2016-08-30 Fireeye, Inc. Distributed systems and methods for automatically detecting unknown bots and botnets
US9311479B1 (en) 2013-03-14 2016-04-12 Fireeye, Inc. Correlation and consolidation of analytic data for holistic view of a malware attack
US9251343B1 (en) 2013-03-15 2016-02-02 Fireeye, Inc. Detecting bootkits resident on compromised computers
US10713358B2 (en) 2013-03-15 2020-07-14 Fireeye, Inc. System and method to extract and utilize disassembly features to classify software intent
US9413781B2 (en) 2013-03-15 2016-08-09 Fireeye, Inc. System and method employing structured intelligence to verify and contain threats at endpoints
US9495180B2 (en) 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9635039B1 (en) 2013-05-13 2017-04-25 Fireeye, Inc. Classifying sets of malicious indicators for detecting command and control communications associated with malware
US9536091B2 (en) 2013-06-24 2017-01-03 Fireeye, Inc. System and method for detecting time-bomb malware
US10133863B2 (en) 2013-06-24 2018-11-20 Fireeye, Inc. Zero-day discovery system
US9300686B2 (en) 2013-06-28 2016-03-29 Fireeye, Inc. System and method for detecting malicious links in electronic messages
US9888016B1 (en) 2013-06-28 2018-02-06 Fireeye, Inc. System and method for detecting phishing using password prediction
DE112013007287T5 (de) 2013-07-30 2016-04-28 Mitsubishi Electric Corporation Datenverarbeitungsvorrichtung, Datenkommunikationsvorrichtung, Kommunikationssystem, Datenverarbeitungsverfahren, Datenkommunikationsverfahren und Programm
US9690936B1 (en) 2013-09-30 2017-06-27 Fireeye, Inc. Multistage system and method for analyzing obfuscated content for malware
US9628507B2 (en) 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
US10515214B1 (en) 2013-09-30 2019-12-24 Fireeye, Inc. System and method for classifying malware within content created during analysis of a specimen
US9294501B2 (en) 2013-09-30 2016-03-22 Fireeye, Inc. Fuzzy hash of behavioral results
US9171160B2 (en) 2013-09-30 2015-10-27 Fireeye, Inc. Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses
US10192052B1 (en) 2013-09-30 2019-01-29 Fireeye, Inc. System, apparatus and method for classifying a file as malicious using static scanning
US9736179B2 (en) 2013-09-30 2017-08-15 Fireeye, Inc. System, apparatus and method for using malware analysis results to drive adaptive instrumentation of virtual machines to improve exploit detection
US10089461B1 (en) 2013-09-30 2018-10-02 Fireeye, Inc. Page replacement code injection
EP3061030A4 (en) 2013-10-24 2017-04-19 McAfee, Inc. Agent assisted malicious application blocking in a network environment
US9921978B1 (en) 2013-11-08 2018-03-20 Fireeye, Inc. System and method for enhanced security of storage devices
US9189627B1 (en) 2013-11-21 2015-11-17 Fireeye, Inc. System, apparatus and method for conducting on-the-fly decryption of encrypted objects for malware detection
US9747446B1 (en) 2013-12-26 2017-08-29 Fireeye, Inc. System and method for run-time object classification
US9756074B2 (en) 2013-12-26 2017-09-05 Fireeye, Inc. System and method for IPS and VM-based detection of suspicious objects
US9507935B2 (en) 2014-01-16 2016-11-29 Fireeye, Inc. Exploit detection system with threat-aware microvisor
US9262635B2 (en) 2014-02-05 2016-02-16 Fireeye, Inc. Detection efficacy of virtual machine-based analysis with application specific events
US9241010B1 (en) 2014-03-20 2016-01-19 Fireeye, Inc. System and method for network behavior detection
US10242185B1 (en) 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9591015B1 (en) 2014-03-28 2017-03-07 Fireeye, Inc. System and method for offloading packet processing and static analysis operations
US9459861B1 (en) 2014-03-31 2016-10-04 Terbium Labs, Inc. Systems and methods for detecting copied computer code using fingerprints
US9432389B1 (en) 2014-03-31 2016-08-30 Fireeye, Inc. System, apparatus and method for detecting a malicious attack based on static analysis of a multi-flow object
US9223972B1 (en) 2014-03-31 2015-12-29 Fireeye, Inc. Dynamically remote tuning of a malware content detection system
US8997256B1 (en) * 2014-03-31 2015-03-31 Terbium Labs LLC Systems and methods for detecting copied computer code using fingerprints
US9438623B1 (en) 2014-06-06 2016-09-06 Fireeye, Inc. Computer exploit detection using heap spray pattern matching
US9594912B1 (en) 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US9973531B1 (en) 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection
US10084813B2 (en) 2014-06-24 2018-09-25 Fireeye, Inc. Intrusion prevention and remedy system
US10805340B1 (en) 2014-06-26 2020-10-13 Fireeye, Inc. Infection vector and malware tracking with an interactive user display
US9398028B1 (en) 2014-06-26 2016-07-19 Fireeye, Inc. System, device and method for detecting a malicious attack based on communcations between remotely hosted virtual machines and malicious web servers
US10002252B2 (en) 2014-07-01 2018-06-19 Fireeye, Inc. Verification of trusted threat-aware microvisor
US9363280B1 (en) 2014-08-22 2016-06-07 Fireeye, Inc. System and method of detecting delivery of malware using cross-customer data
US10671726B1 (en) 2014-09-22 2020-06-02 Fireeye Inc. System and method for malware analysis using thread-level event monitoring
US10027689B1 (en) 2014-09-29 2018-07-17 Fireeye, Inc. Interactive infection visualization for improved exploit detection and signature generation for malware and malware families
US9773112B1 (en) 2014-09-29 2017-09-26 Fireeye, Inc. Exploit detection of malware and malware families
US9690933B1 (en) 2014-12-22 2017-06-27 Fireeye, Inc. Framework for classifying an object as malicious with machine learning for deploying updated predictive models
US10075455B2 (en) 2014-12-26 2018-09-11 Fireeye, Inc. Zero-day rotating guest image profile
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US9838417B1 (en) 2014-12-30 2017-12-05 Fireeye, Inc. Intelligent context aware user interaction for malware detection
US9680832B1 (en) 2014-12-30 2017-06-13 Juniper Networks, Inc. Using a probability-based model to detect random content in a protocol field associated with network traffic
KR101731022B1 (ko) 2014-12-31 2017-04-27 주식회사 시큐아이 익스플로잇 탐지 방법 및 장치
US9690606B1 (en) 2015-03-25 2017-06-27 Fireeye, Inc. Selective system call monitoring
US10148693B2 (en) 2015-03-25 2018-12-04 Fireeye, Inc. Exploit detection system
US9438613B1 (en) 2015-03-30 2016-09-06 Fireeye, Inc. Dynamic content activation for automated analysis of embedded objects
US9483644B1 (en) 2015-03-31 2016-11-01 Fireeye, Inc. Methods for detecting file altering malware in VM based analysis
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
US10417031B2 (en) 2015-03-31 2019-09-17 Fireeye, Inc. Selective virtualization for security threat detection
US9654485B1 (en) 2015-04-13 2017-05-16 Fireeye, Inc. Analytics-based security monitoring system and method
US9594904B1 (en) 2015-04-23 2017-03-14 Fireeye, Inc. Detecting malware based on reflection
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10715542B1 (en) 2015-08-14 2020-07-14 Fireeye, Inc. Mobile application risk analysis
US10176321B2 (en) 2015-09-22 2019-01-08 Fireeye, Inc. Leveraging behavior-based rules for malware family classification
US10033747B1 (en) 2015-09-29 2018-07-24 Fireeye, Inc. System and method for detecting interpreter-based exploit attacks
US9825989B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Cyber attack early warning system
US9825976B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Detection and classification of exploit kits
US10601865B1 (en) 2015-09-30 2020-03-24 Fireeye, Inc. Detection of credential spearphishing attacks using email analysis
US10706149B1 (en) 2015-09-30 2020-07-07 Fireeye, Inc. Detecting delayed activation malware using a primary controller and plural time controllers
US10210329B1 (en) 2015-09-30 2019-02-19 Fireeye, Inc. Method to detect application execution hijacking using memory protection
US10817606B1 (en) 2015-09-30 2020-10-27 Fireeye, Inc. Detecting delayed activation malware using a run-time monitoring agent and time-dilation logic
US10437998B2 (en) * 2015-10-26 2019-10-08 Mcafee, Llc Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection
US10284575B2 (en) 2015-11-10 2019-05-07 Fireeye, Inc. Launcher for setting analysis environment variations for malware detection
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10133866B1 (en) 2015-12-30 2018-11-20 Fireeye, Inc. System and method for triggering analysis of an object for malware in response to modification of that object
US10621338B1 (en) 2015-12-30 2020-04-14 Fireeye, Inc. Method to detect forgery and exploits using last branch recording registers
US10565378B1 (en) 2015-12-30 2020-02-18 Fireeye, Inc. Exploit of privilege detection framework
US10050998B1 (en) 2015-12-30 2018-08-14 Fireeye, Inc. Malicious message analysis system
US10581874B1 (en) 2015-12-31 2020-03-03 Fireeye, Inc. Malware detection system with contextual analysis
US9824216B1 (en) 2015-12-31 2017-11-21 Fireeye, Inc. Susceptible environment detection system
US11552986B1 (en) 2015-12-31 2023-01-10 Fireeye Security Holdings Us Llc Cyber-security framework for application of virtual features
US10671721B1 (en) 2016-03-25 2020-06-02 Fireeye, Inc. Timeout management services
US10616266B1 (en) 2016-03-25 2020-04-07 Fireeye, Inc. Distributed malware detection system and submission workflow thereof
US10785255B1 (en) 2016-03-25 2020-09-22 Fireeye, Inc. Cluster configuration within a scalable malware detection system
US10601863B1 (en) 2016-03-25 2020-03-24 Fireeye, Inc. System and method for managing sensor enrollment
US10893059B1 (en) 2016-03-31 2021-01-12 Fireeye, Inc. Verification and enhancement using detection systems located at the network periphery and endpoint devices
US10826933B1 (en) 2016-03-31 2020-11-03 Fireeye, Inc. Technique for verifying exploit/malware at malware detection appliance through correlation with endpoints
US10169585B1 (en) 2016-06-22 2019-01-01 Fireeye, Inc. System and methods for advanced malware detection through placement of transition events
US10462173B1 (en) 2016-06-30 2019-10-29 Fireeye, Inc. Malware detection verification and enhancement by coordinating endpoint and malware detection systems
US10592678B1 (en) 2016-09-09 2020-03-17 Fireeye, Inc. Secure communications between peers using a verified virtual trusted platform module
US10491627B1 (en) 2016-09-29 2019-11-26 Fireeye, Inc. Advanced malware detection using similarity analysis
IL266459B2 (en) 2016-11-07 2023-10-01 Perception Point Ltd A system and method for detecting and alerting the exploitation of security loopholes in computer systems
US10795991B1 (en) 2016-11-08 2020-10-06 Fireeye, Inc. Enterprise search
US10587647B1 (en) 2016-11-22 2020-03-10 Fireeye, Inc. Technique for malware detection capability comparison of network security devices
US10552610B1 (en) 2016-12-22 2020-02-04 Fireeye, Inc. Adaptive virtual machine snapshot update framework for malware behavioral analysis
US10581879B1 (en) 2016-12-22 2020-03-03 Fireeye, Inc. Enhanced malware detection for generated objects
US10523609B1 (en) 2016-12-27 2019-12-31 Fireeye, Inc. Multi-vector malware detection and analysis
US10904286B1 (en) 2017-03-24 2021-01-26 Fireeye, Inc. Detection of phishing attacks using similarity analysis
US10902119B1 (en) 2017-03-30 2021-01-26 Fireeye, Inc. Data extraction system for malware analysis
US10798112B2 (en) 2017-03-30 2020-10-06 Fireeye, Inc. Attribute-controlled malware detection
US10791138B1 (en) 2017-03-30 2020-09-29 Fireeye, Inc. Subscription-based malware detection
US10848397B1 (en) 2017-03-30 2020-11-24 Fireeye, Inc. System and method for enforcing compliance with subscription requirements for cyber-attack detection service
US11314862B2 (en) * 2017-04-17 2022-04-26 Tala Security, Inc. Method for detecting malicious scripts through modeling of script structure
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10601848B1 (en) 2017-06-29 2020-03-24 Fireeye, Inc. Cyber-security system and method for weak indicator detection and correlation to generate strong indicators
US10855700B1 (en) 2017-06-29 2020-12-01 Fireeye, Inc. Post-intrusion detection of cyber-attacks during lateral movement within networks
US10893068B1 (en) 2017-06-30 2021-01-12 Fireeye, Inc. Ransomware file modification prevention technique
US10747872B1 (en) 2017-09-27 2020-08-18 Fireeye, Inc. System and method for preventing malware evasion
US10805346B2 (en) 2017-10-01 2020-10-13 Fireeye, Inc. Phishing attack detection
US11108809B2 (en) 2017-10-27 2021-08-31 Fireeye, Inc. System and method for analyzing binary code for malware classification using artificial neural network techniques
US11005860B1 (en) 2017-12-28 2021-05-11 Fireeye, Inc. Method and system for efficient cybersecurity analysis of endpoint events
US11271955B2 (en) 2017-12-28 2022-03-08 Fireeye Security Holdings Us Llc Platform and method for retroactive reclassification employing a cybersecurity-based global data store
US11240275B1 (en) 2017-12-28 2022-02-01 Fireeye Security Holdings Us Llc Platform and method for performing cybersecurity analyses employing an intelligence hub with a modular architecture
US10826931B1 (en) 2018-03-29 2020-11-03 Fireeye, Inc. System and method for predicting and mitigating cybersecurity system misconfigurations
US11003773B1 (en) 2018-03-30 2021-05-11 Fireeye, Inc. System and method for automatically generating malware detection rule recommendations
US10956477B1 (en) 2018-03-30 2021-03-23 Fireeye, Inc. System and method for detecting malicious scripts through natural language processing modeling
US11558401B1 (en) 2018-03-30 2023-01-17 Fireeye Security Holdings Us Llc Multi-vector malware detection data sharing system for improved detection
US11314859B1 (en) 2018-06-27 2022-04-26 FireEye Security Holdings, Inc. Cyber-security system and method for detecting escalation of privileges within an access token
US11075930B1 (en) 2018-06-27 2021-07-27 Fireeye, Inc. System and method for detecting repetitive cybersecurity attacks constituting an email campaign
US11228491B1 (en) 2018-06-28 2022-01-18 Fireeye Security Holdings Us Llc System and method for distributed cluster configuration monitoring and management
US11316900B1 (en) 2018-06-29 2022-04-26 FireEye Security Holdings Inc. System and method for automatically prioritizing rules for cyber-threat detection and mitigation
US11182473B1 (en) 2018-09-13 2021-11-23 Fireeye Security Holdings Us Llc System and method for mitigating cyberattacks against processor operability by a guest process
US11763004B1 (en) 2018-09-27 2023-09-19 Fireeye Security Holdings Us Llc System and method for bootkit detection
US10776460B2 (en) 2018-10-15 2020-09-15 KameleonSec Ltd. Proactive security system based on code polymorphism
US10657025B2 (en) 2018-10-18 2020-05-19 Denso International America, Inc. Systems and methods for dynamically identifying data arguments and instrumenting source code
US11368475B1 (en) 2018-12-21 2022-06-21 Fireeye Security Holdings Us Llc System and method for scanning remote services to locate stored objects with malware
US11258806B1 (en) 2019-06-24 2022-02-22 Mandiant, Inc. System and method for automatically associating cybersecurity intelligence to cyberthreat actors
US11556640B1 (en) 2019-06-27 2023-01-17 Mandiant, Inc. Systems and methods for automated cybersecurity analysis of extracted binary string sets
US11392700B1 (en) 2019-06-28 2022-07-19 Fireeye Security Holdings Us Llc System and method for supporting cross-platform data verification
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
US11637862B1 (en) 2019-09-30 2023-04-25 Mandiant, Inc. System and method for surfacing cyber-security threats with a self-learning recommendation engine

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004054470A (ja) * 2002-07-18 2004-02-19 Sony Corp ネットワーク・セキュリティ・システム、情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
US20040093513A1 (en) * 2002-11-07 2004-05-13 Tippingpoint Technologies, Inc. Active network defense system and method
US20040181684A1 (en) * 2003-03-14 2004-09-16 Daewoo Educational Foundation Method for detecting malicious code patterns in consideration of control and data flows

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7463590B2 (en) * 2003-07-25 2008-12-09 Reflex Security, Inc. System and method for threat detection and response
WO2005062707A2 (en) * 2003-12-30 2005-07-14 Checkpoint Software Technologies Ltd. Universal worm catcher
US7555777B2 (en) * 2004-01-13 2009-06-30 International Business Machines Corporation Preventing attacks in a data processing system
US7624449B1 (en) * 2004-01-22 2009-11-24 Symantec Corporation Countering polymorphic malicious computer code through code optimization
US7966658B2 (en) * 2004-04-08 2011-06-21 The Regents Of The University Of California Detecting public network attacks using signatures and fast content analysis
EP1749382A1 (en) * 2004-05-25 2007-02-07 International Business Machines Corporation Filtering messages comprising spam and/or viruses in a wireless communication
US7971245B2 (en) * 2004-06-21 2011-06-28 Ebay Inc. Method and system to detect externally-referenced malicious data for access and/or publication via a computer system
US20060015940A1 (en) * 2004-07-14 2006-01-19 Shay Zamir Method for detecting unwanted executables
US8037535B2 (en) * 2004-08-13 2011-10-11 Georgetown University System and method for detecting malicious executable code

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004054470A (ja) * 2002-07-18 2004-02-19 Sony Corp ネットワーク・セキュリティ・システム、情報処理装置及び情報処理方法、並びにコンピュータ・プログラム
US20040093513A1 (en) * 2002-11-07 2004-05-13 Tippingpoint Technologies, Inc. Active network defense system and method
US20040181684A1 (en) * 2003-03-14 2004-09-16 Daewoo Educational Foundation Method for detecting malicious code patterns in consideration of control and data flows

Also Published As

Publication number Publication date
EP1820099A2 (en) 2007-08-22
CA2585145A1 (en) 2007-01-04
US20090328185A1 (en) 2009-12-31
WO2007001439A3 (en) 2007-12-21
WO2007001439A9 (en) 2007-02-22
EP1820099A4 (en) 2013-06-26
WO2007001439A2 (en) 2007-01-04
JP2008519374A (ja) 2008-06-05

Similar Documents

Publication Publication Date Title
JP4676499B2 (ja) ネットワークフロー内のエクスプロイトコードの検出
Chinchani et al. A fast static analysis approach to detect exploit code inside network flows
Cui et al. Tupni: Automatic reverse engineering of input formats
Polychronakis et al. Comprehensive shellcode detection using runtime heuristics
US7707635B1 (en) Script-based pattern for detecting computer viruses
US8769692B1 (en) System and method for detecting malware by transforming objects and analyzing different views of objects
US20100146623A1 (en) Method and apparatus for pattern matching for intrusion detection/prevention systems
US10594705B2 (en) Systems and methods for instructions-based detection of sophisticated obfuscation and packing
US8935782B2 (en) Malware detection via network information flow theories
Lee et al. INDAGO: A new framework for detecting malicious SDN applications
Wood et al. Keyloggers in Cybersecurity Education.
Polychronakis et al. Network-level polymorphic shellcode detection using emulation
Jacob et al. Malware behavioral detection by attribute-automata using abstraction from platform and language
Osorio et al. Segmented sandboxing-a novel approach to malware polymorphism detection
Li et al. ROPNN: Detection of ROP payloads using deep neural networks
Paul et al. Survey of polymorphic worm signatures
Kong et al. SAS: semantics aware signature generation for polymorphic worm detection
Zhang Polymorphic and metamorphic malware detection
Usui et al. Ropminer: Learning-based static detection of rop chain considering linkability of rop gadgets
Li et al. DeepReturn: A deep neural network can learn how to detect previously-unseen ROP payloads without using any heuristics
JP2005182187A (ja) 不正アクセス検知方法、不正アクセス検知システム及び不正アクセス検知プログラム
Todd et al. Alert verification evasion through server response forging
Lin et al. Automatic Analysis and Classification of Obfuscated Bot Binaries.
Liang et al. Automated, sub-second attack signature generation: A basis for building self-protecting servers
Gupta et al. Performance analysis of internal vs. external security mechanism in web applications

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20100618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101210

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110127

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140204

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140204

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140204

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees