(57)【特許請求の範囲】
【請求項１】
マルウェアを自動的に識別する方法であって、
コンピューティング装置のエキスパートシステム知識ベースがコード解析コンポーネントによって提供されるバイナリファイルからアセンブリ言語シーケンスを受け入れる工程と、
前記エキスパートシステム知識ベースが前記受け入れたアセンブリ言語シーケンスから命令シーケンスを特定する工程と、
前記エキスパートシステム知識ベースが当該エキスパートシステム知識ベースの１若しくは２以上の所定のルールを前記命令シーケンスに適用して、前記エキスパートシステム知識ベース内で当該命令シーケンスを脅威的、非脅威的、または分類不可に分類する工程であって、
前記所定のルールは、前記命令シーケンスを開始から終了までトラバースすることが
できない場合に前記命令シーケンスを脅威的と分類するルールを含むものである、
前記工程と、
前記命令シーケンスが脅威的と分類された場合、前記エキスパートシステム知識ベースが所定の情報を前記コード解析コンポーネントに送信する工程であって、
前記情報は、前記バイナリファイルから受け取った１もしくはそれ以上の他のアセン
ブリ言語シーケンスについて前記命令シーケンスの少なくとも一部を含むかを検索する
要求及び、１若しくはそれ以上の以下の；
脅威的であると判断された前記命令シーケンスと、
前記命令シーケンスが脅威的であることを表示するラベルと、
を含むものである、
前記送信する工程と、
前記エキスパートシステム知識ベースがユーザーに前記バイナリファイルがマルウェアを含むことを通知する工程と、
を有する、
方法。
【請求項２】
請求項１記載の方法において、前記１若しくは２以上の所定のルールを適用する工程は、前記エキスパートシステム知識ベースがＣ言語統合型プロダクションシステム言語で書かれた１若しくは２以上の所定のルールを適用するものである方法。
【請求項３】
請求項１記載の方法において、前記命令シーケンスを分類する工程は、
１若しくは２以上の以下の工程であって、
前記エキスパートシステム知識ベースが１若しくは２以上のワームを定義する命令を
適用して前記命令シーケンスが前記アセンブリ言語シーケンスを反復する１若しくは２
以上の命令を有するかを決定する工程と、
前記エキスパートシステム知識ベースが１若しくは２以上のトロイの木馬を定義する
命令を適用して前記命令シーケンスが１若しくは２以上のトロイの木馬に関連する１若
しくは２以上の命令を有するかを決定する工程と、
前記エキスパートシステム知識ベースが１若しくは２以上のウイルスを定義する命令
を適用して前記命令シーケンスが１若しくは２以上の自己反復する命令を有するかを決
定する工程と、
を有するものである、
方法。
【請求項４】
請求項１記載の方法において、前記１若しくは２以上の所定のルールを適用する工程は、前記エキスパートシステム知識ベースが一組の順位のつけられたルールを前記命令シーケンスに適用する工程を有し、
この一組の順位のつけられたルールは、複数の順位のつけられたルールを有し、
各順位のつけられたルールは、当該組の他の順位のつけられたルールの順位と関連
付られているものである、
方法。
【請求項５】
請求項４記載の方法において、前記一組の順位のつけられたルールを適用する工程は、前記エキスパートシステム知識ベースが前記命令シーケンスが分類されるまで又は各順位のつけられたルールが適用されるまで、順位に従って前記順位のつけられたルールを前記命令シーケンスに適用する工程を有するものである方法。
【請求項６】
請求項４記載の方法において、前記一組の順位のつけられたルールを適用する工程は、前記エキスパートシステム知識ベースが前記命令シーケンスと高いマッチ数を有するルールを優先させるよう前記順位のつけられたルールを順位付けする工程を有するものである方法。
【請求項７】
請求項１記載の方法において、前記命令シーケンスを分類する工程は、前記エキスパートシステム知識ベースが前記命令シーケンスの各ノードに対して、前記ノードをトラバースし、前記ノードが既にトラバースされているかを決定し、前記ノードが既にトラバースされている場合、前記命令シーケンスを脅威的として分類する工程と、を有する方法。
【請求項８】
請求項１記載の方法において、前記命令シーケンスを分類する工程は、暗号化ルーチンと、暗号解読ルーチンと、前記命令シーケンスの少なくとも一部を反復する１若しくは２以上の命令と、の１若しくは２以上を含む場合に、前記エキスパートシステム知識ベースが前記命令シーケンスを脅威的として分類する方法。
【請求項９】
マルウェアを自動的に識別する方法であって、
コンピューティング装置のエキスパートシステム知識ベースがコード解析コンポーネントによって提供されるバイナリファイルからアセンブリ言語シーケンスを受け入れる工程と、
前記エキスパートシステム知識ベースが前記受け入れたアセンブリ言語シーケンスから命令シーケンスを特定する工程と、
前記エキスパートシステム知識ベースが当該エキスパートシステム知識ベースの１若しくは２以上の所定のルールを前記命令シーケンスに適用して当該命令シーケンスを脅威的、非脅威的、または分類不可に分類する工程であって、
前記所定のルールには、前記命令を全体にわたってトラバースさせることができるこ
とを決定するルールが含まるものである、
前記分類する工程と、
前記命令シーケンスが非脅威的と分類された場合、前記エキスパートシステム知識ベースが、前記命令シーケンスと、前記命令シーケンスが非脅威的であることを表示するラベルと、の内の１若しくは２以上の情報を前記コード解析コンポーネントに送信する工程と、
前記エキスパートシステム知識ベースが第２の命令シーケンスを要求する工程と、
を有する、
方法。
【請求項１０】
マルウェアを自動的に識別する方法であって、
コンピューティング装置のエキスパートシステム知識ベースがコード解析コンポーネントによって提供されるバイナリファイルからアセンブリ言語シーケンスを受け入れる工程と、
前記エキスパートシステム知識ベースが前記受け入れたアセンブリ言語シーケンスから命令シーケンスを特定する工程と、
前記エキスパートシステムの知識ベースが当該エキスパートシステム知識ベースの１若しくは２以上のルールを前記命令シーケンスに適用して、当該命令シーケンスを脅威的、非脅威的、または分類不可に分類する工程と、
前記命令シーケンスが分類不可として分類された場合：
前記エキスパートシステム知識ベースが前記アセンブリ言語シーケンスを再解析させ
る要求を前記コード解析コンポーネントに送信する工程と、
前記エキスパートシステム知識ベースが前記再解析されたアセンブリ言語シーケンス
に応じた新規の命令シーケンスを受け入れる工程と、
前記エキスパートシステム知識ベースが前記新規の命令シーケンスを脅威的、非脅威
的、または分類不可に分類する工程と、
を有する、
方法。
【請求項１１】
マルウェアを自動的に識別する方法であって、
コンピューティング装置のコード解析コンポーネントがバイナリファイルを解析してアセンブリ言語シーケンスおよび対応する命令シーケンスを生成するものである工程と、
前記コード解析コンポーネントが前記命令シーケンスをエキスパートシステム知識ベースに送信する工程と、
前記コード解析コンポーネントが前記エキスパートシステム知識ベースから前記命令シーケンスに関連する分類情報を受け入れる工程と、
前記分類情報が前記命令シーケンスを脅威的として特定した場合：
前記コード解析コンポーネントが前記バイナリファイルから、前記命令シーケンスの
少なくとも一部を有する１若しくは２以上の他のアセンブリ言語シーケンスを特定し、
前記コード解析コンポーネントが前記特定識別されたアセンブリ言語シーケンスの少
なくとも１つを前記エキスパートシステム知識ベースに送信する、
工程と、
前記分類情報が前記命令シーケンスを非脅威的として特定した場合：
前記コード解析コンポーネントが第２の命令シーケンスを前記エキスパートシステム
知識ベースに送信する、
工程と、
前記分類情報が前記命令シーケンスを分類不可として特定した場合：
前記コード解析コンポーネントが前記アセンブリ言語シーケンスを再解析して、新規
の命令シーケンスを生成し、
前記コード解析コンポーネントが前記新規の命令シーケンスを前記エキスパートシス
テム知識ベースに送信する、
工程と、
を有する方法。
【請求項１２】
請求項１１記載の方法において、前記バイナリファイルを解析する工程は、前記コード解析コンポーネントが１若しくは２以上の前記バイナリファイルを静的解析する工程および前記バイナリファイルを動的解析する工程を有するものである方法。
【請求項１３】
マルウェアを自動的に特定するシステムであって、
バイナリファイルからアセンブリ言語シーケンスを識別するように構成されたコード解析コンポーネントであって、
このアセンブリ言語シーケンスは、１若しくは２以上の命令シーケンスを有するもの
である、
前記コード解析コンポーネントと、
前記コード解析コンポーネントと通信するエキスパートシステム知識ベースであって、
このエキスパートシステム知識ベースは、１若しくは２以上のルールを使用して、前
記命令シーケンスを脅威的、非脅威的、または分類不可に分類するように構成されてい
るものであり、
前記エキスパートシステム知識ベースは、前記命令シーケンスを開始から終了までト
ラバースさせることができない決定への応答として前記命令シーケンスを脅威的と分類
するよう構成され、
前記エキスパートシステム知識ベースは、前記命令を開始から終了までトラバースす
ることができる決定への応答として前記命令シーケンスを非脅威的と分類するように構
成されているものである、
前記エキスパートシステム知識ベースと、
を有するシステム。
【請求項１４】
請求項１３記載のシステムにおいて、このシステムは、さらに、
前記コード解析コンポーネントおよびエキスパートシステム知識ベースと通信するコネクタ論理コンポーネント（ｃｏｎｎｅｃｔｏｒ  ｌｏｇｉｃ  ｃｏｍｐｏｎｅｎｔ）を有し、
このコネクタ論理コンポーネントは、前記コード解析コンポーネントと前記エキスパ
ートシステム知識ベースとの間で通信を可能にする構成である、
システム。
【請求項１５】
請求項１４記載のシステムにおいて、前記コネクタ論理コンポーネントは、１若しくは２以上の以下の；
前記命令シーケンスの、前記エキスパートシステム知識ベースで処理できるフォーマットへの変換と、
前記エキスパートシステム知識ベースから受け入れた情報の、前記コード解析コンポーネントで処理できるフォーマットへの変換と、
を実行するものである、
システム。
【請求項１６】
請求項１３記載のシステムにおいて、前記エキスパートシステム知識ベースは、１若しくは２以上の以下の；
Ｃ言語統合型プロダクションシステムのルールと、
バイナリファイル構造と、
ワームを定義する命令と、
トロイの木馬を定義する命令と、
ウイルスを定義する命令と、
が事前設定されている、
システム。
【請求項１７】
請求項１３記載のシステムにおいて、前記エキスパートシステム知識ベースは、１若しくは２以上の以下の；
１若しくは２以上のルールを前記命令シーケンスに適用して、前記バイナリファイル
のバイナリファイル構造が適切であるかを決定する工程と、
１若しくは２以上のワームを定義する命令を適用して、前記命令シーケンスが前記ア
センブリ言語シーケンスを反復する１若しくは２以上の命令を有するかを決定する工程
と、
１若しくは２以上のトロイの木馬を定義する命令を適用して、前記命令シーケンスが
１若しくは２以上のトロイの木馬に関連する１若しくは２以上の命令を有するかを決定
する工程と、
１若しくは２以上のウイルスを定義する命令を適用して、前記命令シーケンスが１若
しくは２以上の自己反復命令を有するかを決定する工程と、
によって前記命令シーケンスを分類するように構成されているものである、
システム。
【請求項１８】
請求項１３記載のシステムにおいて、前記エキスパートシステム知識ベースは、一組の順位の付られたルールを前記命令シーケンスに適用するように構成されており、
この一組の順位の付けられたルールは複数の順位の付けられたルールを有し、
各順位の付けられたルールは当該組の他の順位の付けられたルールの順位と関連付
られているものである、
システム。
【請求項１９】
請求項１８記載のシステムにおいて、前記エキスパートシステム知識ベースはさらに、前記命令シーケンスが分類されるまで又は各順位の付けられたルールが適用されるまで、順位に従って前記順位の付けられたルールを前記命令シーケンスに適用するように構成されているものであるシステム。
【請求項２０】
請求項１８記載のシステムにおいて、前記エキスパートシステム知識ベースは、前記命令シーケンスとより高いマッチ数を有するルールを優先させるように前記順位の付けられたルールを順位付けするよう構成されるものであるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２００８年８月２９日付け出願の米国仮特許出願第６１／０９２，８４８号に対して優先権を主張する２００９年８月２８日付け出願の米国特許出願第１２／５５０，０２５号の出願日の利益を主張する。
【背景技術】
【０００２】
バイナリファイルは、しばしば多くのコンピューティング装置間で転送される。バイナリファイルを受け取るコンピューティング装置は、普通はファイルの発信元（出所）についてまたはそれが受け取るコードが安全かどうかを認識していない。コンピューティング装置の安全を確認するため、バイナリファイルを分解してマルウェア（例えば、ウイルス、ワーム、トロイの木馬、および／または同類のもの）が含まれていないかを見極めることができる。
一般的に、逆アセンブラは、バイナリファイルをマシン語からアセンブリ言語に変換する。いくつかの逆アセンブラは双方向性であり、専門のプログラマが注釈、修正、説明、または前記逆アセンブラがファイルをどのように解析するかの決定を行うことができる。例えば、逆アセンブラは、コードの新規機能または特別なセクションが現れたら信号を送ることができる。識別された動作が起こった場合、前記コードの特定のセクションは、後の参照用のためにラベル付けされる。しかしながら、既知の実行形式の解析は、通常、特別に訓練を受けた人員によって手動で、または統計的方法で自動的に実行される、時間のかかるプロセスであることがある。
この出願の発明に関連する先行技術文献情報としては、以下のものがある（国際出願日以降国際段階で引用された文献及び他国に国内移行した際に引用された文献を含む）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】  米国特許出願公開第２００８／０００５７９６号明細書
【特許文献２】  米国特許出願公開第２００８／０２０１７７９号明細書
【特許文献３】  米国特許出願公開第２００５／００８６５２６号明細書
【特許文献４】  米国特許出願公開第２００６／００７５５０４号明細書
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明の方法およびシステムの説明の前に、特定のシステム、方法論、またはプロトコルは変化するものであるため、本発明はこれらに限定されるものではないことは、理解されるべきである。また、本明細書で使用される用語は、特定の実施形態を説明することのみを目的としたものであり、添付の特許請求の範囲によってのみ限定される本明細書の開示の範囲を限定することを目的としたものではないことは、理解されるべきである。
【０００５】
本明細書および添付の特許請求の範囲で使用される単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、別段文脈において指示されていない場合には、複数の参照も含むものであることは留意しなければならない。別段の定義がなされていない場合には、本明細書で使用される全ての技術的および科学的用語は、当業者によって一般に理解されるものと同じ意味を有する。本明細書で使用される用語「有する」は、「含むがこれに限定されない」ことを意味する。
【０００６】
１実施形態において、マルウェアを自動的に識別する方法は、エキスパートシステムの知識ベースによって、バイナリファイルからアセンブリ言語シーケンスを受け取る工程と、前記受け取ったアセンブリ言語シーケンスから命令シーケンスを識別する工程と、前記エキスパートシステムの知識ベースによって、当該エキスパートシステムの知識ベースの１若しくはそれ以上のルールを前記命令シーケンスに適用して、当該命令シーケンスを脅威的、非脅威的、または分類不可に分類する工程とを含む。前記命令シーケンスが脅威的として分類される場合、情報がコード解析コンポーネントに転送され、前記バイナリファイルはマルウェアを含むことがユーザーに通知される。前記情報は、１若しくはそれ以上の次のものを含む：前記命令シーケンス、前記命令シーケンスが脅威的であることを表示するラベル、および前記バイナリファイルからの１若しくはそれ以上の他のアセンブリ言語シーケンスで前記命令シーケンスの少なくとも一部を検索させる要求。
【０００７】
１実施形態において、マルウェアを自動的に識別する方法は、エキスパートシステムの知識ベースによって、バイナリファイルからアセンブリ言語シーケンスを受け取る工程と、前記受け取ったアセンブリ言語シーケンスから命令シーケンスを識別する工程と、前記エキスパートシステムの知識ベースによって、当該エキスパートシステムの知識ベースの１若しくはそれ以上のルールを前記命令シーケンスに適用して、当該命令シーケンスを脅威的、非脅威的、または分類不可に分類する工程とを含む。前記命令シーケンスが非脅威的として分類される場合、情報はコード解析コンポーネントに転送され、第２の命令シーケンスが要求される。前記情報は、１若しくはそれ以上の次のものを含む：前記命令シーケンス、および前記命令が非脅威的であることを表示するラベル。
【０００８】
１実施形態において、マルウェアを自動的に識別する方法は、エキスパートシステムの知識ベースによって、バイナリファイルからアセンブリ言語シーケンスを受け取る工程と、前記受け取ったアセンブリ言語シーケンスから命令シーケンスを識別する工程と、前記エキスパートシステムの知識ベースによって、当該エキスパートシステムの知識ベースの１若しくはそれ以上のルールを前記命令シーケンスに適用して、当該命令シーケンスを脅威的、非脅威的、または分類不可に分類する工程とを含む。前記命令シーケンスが分類不可として分類される場合、前記方法は、前記アセンブリ言語シーケンスで再解析させる要求をコード解析コンポーネントに転送する工程と、前記再解析されたアセンブリ言語シーケンスに応じた新規の命令シーケンスを受け取る工程と、前記新規の命令シーケンスを脅威的、非脅威的、または分類不可に分類する工程とを含む。
【０００９】
１実施形態において、マルウェアを自動的に識別する方法は、コード解析コンポーネントによって、バイナリファイルを解析してアセンブリ言語シーケンスおよび対応する命令シーケンスを生成する工程と、前記命令シーケンスをエキスパートシステムの知識ベースに転送する工程と、前記エキスパートシステムの知識ベースから前記命令シーケンスに関連する分類情報を受け取る工程とを含む。前記分類情報が前記命令シーケンスを脅威的として識別する場合、前記バイナリファイルから、前記命令シーケンスの少なくとも一部を有する１若しくはそれ以上の他のアセンブリ言語シーケンスを識別する工程と、前記識別されたアセンブリ言語シーケンスの少なくとも１つを前記エキスパートシステムの知識ベースに転送する工程とを含む。前記分類情報が前記命令シーケンスを非脅威的として識別する場合、前記方法は、第２の命令シーケンスを前記エキスパートシステムの知識ベースに転送する工程を含む。前記分類情報が前記命令シーケンスを分類不可として識別する場合、前記方法は、前記アセンブリ言語シーケンスを再解析して、新規の命令シーケンスを生成するものである再解析する工程と、前記新規の命令シーケンスを前記エキスパートシステムの知識ベースに転送する工程とを含む。
【００１０】
１実施形態において、マルウェアを自動的に識別するシステムは、バイナリファイルから、１若しくはそれ以上の命令シーケンスを含むアセンブリ言語シーケンスを識別するコード解析コンポーネントと、前記コード解析コンポーネントと連通するエキスパートシステムの知識ベースとを含む。前記エキスパートシステムの知識ベースは、１若しくはそれ以上のルールを使用して、前記命令シーケンスを脅威的、非脅威的、または分類不可に分類するように構成されている。
【図面の簡単な説明】
【００１１】
本明細書に記載された実施形態の特徴、機能、利益、および利点は、以下の記載、添付の請求項の範囲、および添付の図面とともに明白であろう。
【図１】図１は、１実施形態に従った例示的なマルウェア検知システムを図示する。
【図２】図２は、１実施形態に従った例示的なエキスパートシステムの知識ベースを図示する。
【図３】図３は、１実施形態に従ったマルウェアを検知および解析する例示的な方法の流れ図を図示する。
【図４】図４は、１実施形態に従ったプログラム命令を含むまたは実施するのに使用される例示的なシステムのブロック図を図示する。
【図５】図５および６は、１実施形態に従った例示的な命令シーケンスを図示する。
【図６】図５および６は、１実施形態に従った例示的な命令シーケンスを図示する。
【発明を実施するための形態】
【００１２】
本発明の方法およびシステムの説明の前に、特定のシステム、方法論、またはプロトコルは変化するものであるため、本発明はこれらに限定されるものではないことは、理解されるべきである。また、本明細書で使用される用語は、特定の実施形態を説明することのみを目的としたものであり、添付の特許請求の範囲によってのみ限定される本明細書の開示の範囲を限定することを目的としたものではないことは、理解されるべきである。
【００１３】
本明細書および添付の特許請求の範囲で使用される単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、別段文脈において指示されていない場合には、複数の参照も含む。別段の定義がなされていない場合には、本明細書で使用される全ての技術的および科学的用語は、当業者によって一般に理解されるものと同じ意味を有する。本明細書で使用される用語「有する」は、「含むがこれに限定されない」ことを意味する。
【００１４】
以下の記載の目的で、「ノード」は、プロセッサによって実行されるアセンブリ言語シーケンス内の命令のシーケンスを言及している。
【００１５】
「アセンブリ言語」は、数値マシンコードの象徴を実装するコンピュータプログラミング言語を言及している。
【００１６】
「アセンブリ言語シーケンス」は、アセンブリ言語で書かれたノードのシーケンスを言及している。
【００１７】
「バイナリファイル」は、バイナリフォーマットでエンコードされたデータを含むコンピュータファイルを言及する。実行ファイルはバイナリファイルのタイプである。
【００１８】
「マルウェア」は、コンピュータシステムを崩壊させ、に浸透し、または打撃を与える悪意のあるソフトウェアである。マルウェアの例としては、ウイルス、ワーム、トロイの木馬、アドウェア、スパイウェア、ルートキット、および／または同類のものを含む。
【００１９】
「エキスパートシステム」は、特定の問題領域において人の意思決定過程をシミュレートするように設計された人工知能ソフトウェアおよび／またはファームウェアである。
【００２０】
図１は、１実施形態に従ったマルウェア検知システムを図示している。マルウェア検知システムは、コード解析コンポーネント１００、エキスパートシステムの知識ベース２００、および／またはコネクタ論理コンポーネント（ｃｏｎｎｅｃｔｏｒ  ｌｏｇｉｃ  ｃｏｍｐｏｎｅｎｔ）１５０を含む。１実施形態において、前記コード解析コンポーネント１００、エキスパートシステムの知識ベース２００、および／またはコネクタ論理コンポーネント１５０は、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアの組み合わせを使用して実装される。１実施形態において、前記コード解析コンポーネント１００、エキスパートシステムの知識ベース２００、および／またはコネクタ論理コンポーネント１５０は、同一のコンピューティング装置にある。或いは、前記コード解析コンポーネント１００、エキスパートシステムの知識ベース２００、および／またはコネクタ論理コンポーネント１５０は、お互いに連通した異なるコンピューティング装置にある。
【００２１】
１実施形態において、コード解析コンポーネント１００は、バイナリファイル（これに限定されるものではないが、例えば実行形式）を解析する。１実施形態において、コード解析コンポーネント１００は、静的または動的にバイナリファイルを解析する。静的解析は、現在実行されていないバイナリファイルを解析することを含む。これに比べて、動的解析は、バイナリファイルが実行されている間、バイナリファイルを解析することを含む。
【００２２】
１実施形態において、コード解析コンポーネントは、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアの組み合わせを使用して実装される。１実施形態において、コード解析コンポーネント１００は、逆アセンブラ、デバッガ、逆コンパイラ、および／または同類のものを含む。例えば、前記コード解析コンポーネント１００は、例えばＩＤＡ  Ｐｒｏなどの逆アセンブラである。
【００２３】
コード解析コンポーネントは、バイナリファイルを解析してアセンブリ言語シーケンスを作成する。１実施形態において、前記アセンブリ言語シーケンスは、前記バイナリファイルの人間が読み取れる表示を含む。前記コード解析コンポーネント１００は、前記バイナリファイルからアセンブリ言語シーケンスを作成するのに使用される内部ルールおよび／または演算を含む。前記コード解析コンポーネント１００は、前記アセンブリ言語シーケンスを解析して命令シーケンスを決定する。
【００２４】
１実施形態において、コード解析コンポーネント１００は、バイナリファイルを解析する外部装置と相互に作用する。例えば、以下に記載するように、前記コード解析コンポーネント１００は、エキスパートシステムの知識ベース２００と交信する。
【００２５】
図１に図示するように、マルウェア検知システムは、エキスパートシステムの知識ベース２００を含む。１実施形態において、エキスパートシステムの知識ベース２００は、特定の領域の人間の専門知識の表現を含む。例えば、エキスパートシステムの知識ベース２００は、経験豊かなコンピュータ分析者の知識と実践をモデル化する情報、データ、ルール、および／または同類のものを含む。
【００２６】
実施例において、エキスパートシステムの知識ベース２００は、Ｃ言語統合化プロダクションシステム（「ＣＬＩＰＳ」）を使用して実装される。ＣＬＩＰＳは、エキスパートシステムを作成するために用いられるプログラミング言語およびソフトウェアツールである。
【００２７】
図２は、１実施形態に従ったエキスパートシステムの知識ベースを図示する。前記エキスパートシステムの知識ベース２００は、内部ルールおよび／または演算を含む。１実施形態において、これらの内部ルールおよび／または演算をアセンブリ言語シーケンスからの命令シーケンスに適用して、アセンブリ言語シーケンスがマルウェアを含むのかを決定する。１実施形態において、内部ルールおよび／または演算は、人間の専門知識のエンコーディングを表す。
【００２８】
実施例において、特定分野の専門家２０５は、エキスパートシステムの知識ベース２００を投入することができる。分野の専門家は、これに限定されるものではないが、マルウェアを分析するための専門知識を有する人間である。１実施形態において、分野の専門家２０５は、エキスパートシステムの知識ベース２００に人間の専門知識のエンコーディングを表す内部ルールおよび／または演算を提供するように構成されるコンピューティング装置である。例えば、前記コンピューティング装置は、自動的に、前記エキスパートシステムの知識ベース２００に１若しくはそれ以上の内部ルールおよび／または演算の更新、強化、または同種のものを提供する。
【００２９】
１実施形態において、前記エキスパートシステムの知識ベース２００に、バイナリファイル構造２１０が投入される。バイナリファイル構造は、バイナリファイルの１若しくはそれ以上の部分および／またはバイナリファイルの当該部分のシーケンスを表すテンプレートである。前記バイナリファイル構造２１０は、ファイル構造が適切であるかを解析するのに使用される。例えば、バイナリファイル構造２１０は、前記ファイルのヘッダーがプロトコルと一致しているのかを決定するため、解析される。
【００３０】
１実施形態において、前記エキスパートシステムの知識ベース２００にワームを定義する演算２１５が投入される。ワームを定義する演算２１５は、アセンブリ言語シーケンスを繰り返す命令シーケンスを識別する。
【００３１】
１実施形態において、前記エキスパートシステムの知識ベース２００にトロイの木馬を定義する演算２２０が投入される。トロイの木馬を定義する演算２２０は、１若しくはそれ以上のトロイの木馬に関連する、アセンブリ言語シーケンスの中の命令シーケンスを識別する。
【００３２】
１実施形態において、前記エキスパートシステムの知識ベース２００にウイルスを定義する演算２２５が投入される。ウイルスを定義する演算２２５は、アセンブリ言語シーケンスの命令シーケンスが自己反復することを識別する。追加のおよび／または代替の演算が、前記エキスパートシステムの知識ベース２００に含まれる。
【００３３】
図１に戻って参照すると、このマルウェア検知システムは、コネクタ論理コンポーネント１５０を含む。前記コネクタ論理コンポーネント１５０は、前記コード解析コンポーネントと前記エキスパートシステムの知識ベース２００との間での交信を可能にする。
【００３４】
１実施形態において、前記コード解析コンポーネント１００から送られた前記アセンブリ言語シーケンスは、前記エキスパートシステムの知識ベース２００によって直接処理することができないフォーマットである。前記コード解析コンポーネント１００は、前記アセンブリ言語シーケンスを前記コネクタ論理コンポーネント１５０に伝える。前記コネクタ論理コンポーネント１５０は、前記命令シーケンスを前記エキスパートシステムの知識ベース２００が処理できるフォーマットに変換する。前記コード解析コンポーネント１００は、新しく変換された命令シーケンスを前記エキスパートシステムの知識ベース２００に送る。
【００３５】
同様に、前記コネクタ論理コンポーネントは、前記エキスパートシステムの知識ベース２００から情報を得る。前記コネクタ論理コンポーネントは、前記エキスパートシステムの知識ベース２００からの情報を前記コード解析コンポーネント１００によって読み取り可能なフォーマットに変換して、この変換された情報を前記コード解析コンポーネントに転送する。
【００３６】
図３は、１実施形態に従ったマルウェアを検知および識別する方法の流れ図である。バイナリファイルは、前記コード解析コンポーネントによって受け取られる。前記コード解析コンポーネントは、前記ファイルを解析してアセンブリ言語シーケンスおよび命令シーケンスを得る。前記コード解析コンポーネントは、前記アセンブリ言語シーケンスを前記命令シーケンスと共に前記コネクタ論理コンポーネントを介して前記エキスパートシステムの知識ベースに送る。
【００３７】
前記エキスパートシステムの知識ベースは、前記アセンブリ言語シーケンスを受け取る３００。１実施形態において、前記エキスパートシステムの知識ベースは、前記アセンブリ言語シーケンスからの前記命令シーケンスを識別する３０５。
【００３８】
前記エキスパートシステムの知識ベースは、内部演算および／またはルールを適用して前記命令シーケンスを分類する。１実施形態において、前記分類は、前記命令シーケンスがマルウェアを含むのかを決定するために使用される。例えば、１実施形態において、前記エキスパートシステムの知識ベースは、前記命令シーケンスを非脅威的３１５、脅威的３３０、または分類不可３４５に分類する。追加および／または代替の分類の使用は、本明細書の開示の範囲内である。
【００３９】
１実施形態において、前記エキスパートシステムの知識ベースは、１若しくはそれ以上の内部ルールおよび／または演算を使用して、受け取られた命令シーケンスのノードおよびブランチを通ってトラバースする。１実施形態において、前記エキスパートシステムの知識ベースは、一群の優先ルールを前記受け取られた命令シーケンスに適用する。前記優先ルールセット内の各ルールは、当該セット内の他の優先ルールに対する優先順位を有する。１実施形態において、前記ルールは、各ルールと前記命令シーケンスとの間のマッチ数に基づいて順位付けされる。例えば、ルールのマッチ基準に最も類似している命令シーケンスにより、このルールには所与のトラバースに最高優先度が与えられる。或いは、ルールのマッチ基準に最も類似していない命令シーケンスにより、このルールには所与のトラバースに最下位優先度が与えられる。
【００４０】
ＣＬＩＰＳは、競合解消戦略（ｃｏｎｆｌｉｃｔ  ｒｅｓｏｌｕｔｉｏｎ  ｓｔｒａｔｅｇｉｅｓ）を提供し、例えば複雑戦略（ｃｏｍｐｌｅｘｉｔｙ  ｓｔｒａｔｅｇｙ）および単純戦略（ｓｉｍｐｌｉｃｉｔｙ  ｓｔｒａｔｅｇｙ）は、それぞれ特に最もマッチしたものおよび特に最もマッチしなかったものに優先権を与える。１実施形態において、このような戦略は、前記命令シーケンスに特に最もマッチするものに関して前記ルールを順位付けするのに用いられる。
【００４１】
１実施形態において、前記エキスパートシステムの知識ベースは、最も高い優先権に関連するルールを前記命令ーケンスに適用する。１実施形態において、前記群からの１若しくはそれ以上の追加の優先ルールは、前記命令シーケンスが分類されるまで又は全ての優先ルールが適用されるまで、それらの優先順位に基づいて、前記命令シーケンスに適用される。
【００４２】
ルールを適用した時、前記エキスパートシステムの知識ベースが前記命令を開始から終了までトラバースさせる場合には、前記命令シーケンスは非脅威的として分類される３１５。例えば、図５は、１実施形態に従った例示的命令シーケンスを図示する。前記エキスパートシステムの知識ベースが開始（命令１  ５０５）から終了（命令８  ５１０）まで全体の命令シーケンス５００をトラバースさせることが可能な場合には、前記命令シーケンス５００は、非脅威的として分類される。
【００４３】
１実施形態において、前記エキスパートシステムの知識ベースは、前記命令シーケンスが非脅威的であることを示す情報を前記コード解析コンポーネントに転送する３２０。１実施形態において、前記情報は、前記命令シーケンスに取り付けられた、前記命令シーケンスが非脅威的であることを示すラベルを含む。
【００４４】
１実施形態において、命令シーケンスを非脅威的と分類することに応答して、前記エキスパートシステムの知識ベースは、前記コード解析コンポーネントから、解析する新規の命令シーケンスを有する新規のアセンブリシーケンスを要求する。
【００４５】
１実施形態において、前記エキスパートシステムの知識ベースが前記命令シーケンスの各命令をトラバースさせることができない場合、前記エキスパートシステムの知識ベースは命令シーケンスを脅威的として分類する３３０。例えば、前記エキスパートシステムの知識ベースは、前記命令シーケンスの命令をトラバースさせることによって前記命令シーケンスを解析して、マルウェアがあるかを決定する。例えば、ループはマルウェアの指標である。前記トラバースの間、前記エキスパートシステムの知識ベースが既に解析された命令に達した場合、前記エキスパートシステムの知識ベースは、前記命令シーケンスがループを形成しているのかを決定する。１実施形態において、前記エキスパートシステムの知識ベースは、１若しくはそれ以上のループを有する命令シーケンスを脅威的として分類する。図６は、１実施形態に従った例示的な命令シーケンスを図示している。図６に図示されているように、前記命令シーケンス６００は、命令６  ６０５から命令４  ６１０へのループを含んでいるので、脅威的として分類される。
【００４６】
１実施形態において、マルウェアまたは他の不正な振る舞いを示す他の活動は、暗号化／暗号解読ルーチン、反復コード、キーロギング、ネットワークコミュニケーションの独立した開始、既知の敵対的または悪意のあるネットワークホスト、および／または同類のものを含む。このように、１若しくはそれ以上のこれらの活動を含む命令シーケンスは、脅威的として分類される。追加のおよび／または代替の活動が示すマルウェアは、本明細書の開示の範囲内である。
【００４７】
１実施形態において、前記エキスパートシステムの知識ベースは、前記命令シーケンスが脅威的であることを示す情報を前記コード解析コンポーネントに転送する３３５。前記情報は、前記コネクタ論理コンポーネントを介して前記コード解析コンポーネントに送られる。１実施形態において、前記情報は、前記命令シーケンスに取り付けられた、前記命令シーケンスが脅威的であることを示すラベルを含む。
【００４８】
１実施形態において、前記情報は、前記コード解析コンポーネントが既に解析された命令シーケンスの少なくとも一部を他のアセンブリ言語シーケンスで検索する要求３４０を含む。例えば、前記コード解析コンポーネントは、前出の実施例で説明したループを他のアセンブリ言語シーケンスで検索する。１実施形態において、前記コード解析コンポーネントは、命令シーケンスの少なくとも一部が前記アセンブリ言語シーケンスの内部に存在しているのかを決定するため、その内部演算および／またはルールを使用して前記情報を翻訳および／または解析する。前記コード解析コンポーネントがそれと同一の命令シーケンスまたは部分を発見した場合、前記コード解析コンポーネントは、関連するアセンブリ言語シーケンスおよび命令シーケンスを前記エキスパートシステムの知識ベースに送る。
【００４９】
１実施形態において、前記エキスパートシステムの知識ベースは、命令シーケンスが分類不可であるのかを決定する３４５。前記エキスパートシステムの知識ベースが前記命令シーケンスが脅威的であるのかを決定できない場合、前記命令シーケンスは分類不可であるとして識別される。例えば、バイナリファイルを作成したプログラマーは、前記コード解析コンポーネントが正しい命令シーケンスを発行するのを防ぐことにより、ファイルの働きを難読化する方法を意図的に使用していた。このように、前記コード解析コンポーネントは、前記コネクタ論理コンポーネントを介して、不完全なまたは無意味な命令シーケンスを前記エキスパートシステムの知識ベースに送る。
【００５０】
前記エキスパートシステムの知識ベースは、その内部ルールおよび／または演算を使用して前記命令シーケンスの各ノードを解析する。この解析に基づいて、前記エキスパートシステムの知識ベースは、特定のノードまたは一連のノードを再解釈する要求を前記コード解析コンポーネントに転送する３５０。例えば、前記エキスパートシステムの知識ベースは、前記コード解析コンポーネントが特定のノードに対する新規の命令シーケンスを生成することを要求する。
【００５１】
１実施形態において、前記要求は、前記コード解析コンポーネントへの、前記アセンブリシーケンスの解析における代替の考慮を含む。例えば、幾つかの例では、前記コード解析コンポーネントは、アセンブリシーケンスを適切に解析することができない。このように、前記エキスパートシステムの知識ベースが、前記解析の継続を可能にする情報を前記コード解析コンポーネントに提供することが必要である。例えば、前記エキスパートシステムの知識ベースは、不正な命令シーケンスが修正または無視されるべきであることを検知して、前記解析の継続を可能にする。１実施形態において、この情報は、前記コード解析コンポーネントへの要求に含まれる。
【００５２】
１実施形態において、前記コード解析コンポーネントは、その内部ルールおよび／または演算を使用して、前記アセンブリ言語シーケンスおよび命令シーケンスを再解析する。前記エキスパートシステムの知識ベースは、前記コネクタ論理コンポーネントを介して前記コード解析コンポーネントから前記再解析されたアセンブリ言語シーケンスおよび新規の命令シーケンスを受け取る。前記エキスパートシステムの知識ベースは、前記新規の命令シーケンスをトラバースさせて、前記新規の命令シーケンスの分類を決定する。
【００５３】
図４は、１実施形態に従ったプログラム命令を含むまたは実装するのに使用される例示的システムのブロック図である。図４を参照して、バス４００は、他の図示されたハードウェアのコンポーネントと相互接続するメイン情報ハイウェイとしての機能を果たす。ＣＰＵ４０５はシステムの中央処理装置であって、プログラムを実行するのに必要な計算および論理演算を実行する。読取り専用メモリ（ＲＯＭ）４１０およびランダムアクセスメモリ（ＲＡＭ）４１５は、例示的な記憶装置または記憶媒体を構成する。
【００５４】
ディスク制御装置４２０は、１若しくはそれ以上の光ディスク駆動装置とインタフェースで接続して、前記システムバス４００と連結させる。これらのディスク駆動装置は、例えば外付け若しくは内蔵ＤＶＤドライブ４２５、ＣＤ  ＲＯＭドライブ４３０、またはハードドライブ４３５がある。前述したように、これらの様々なディスク駆動装置（ドライブ）およびディスク制御装置は光学装置である。
【００５５】
プログラム命令は、前記ＲＯＭ  ４１０および／またはＲＡＭ  ４１５に格納される。任意選択として、プログラム命令は、コンピュータ可読記憶媒体（例えば、ハードドライブ、コンパクトディスク、デジタルディスク、メモリ、または他の有形可読媒体）に格納される。
【００５６】
随意の表示インタフェース４４０は、前記バス４００からの情報をオーディオ形式、グラフィック形式、または英数字形式で表示部４４５で表示させる。外部装置との交信は、様々な通信ポート４５０を使用して行われる。
【００５７】
標準のコンピュータ型コンポーネントに加えて、前記ハードウェアはまた、例えばキーボード４６０または他の入力装置４６５（例えば、マウス、リモートコントロール、タッチパッド若しくはスクリーン、ポインター、および／またはジョイスティック）の入力装置からのデータの受け取りを可能にするインタフェース４５５を含む。
【００５８】
上記で開示されたおよび他の様々な特徴および機能（またはその代替）は、多くの他の異なるシステムまたはアプリケーションに望ましい形で結合することができることは、理解されるであろう。また、様々な現在予見できないまたは予期しない代替、修正、変更、または改善が、後に当業者によって行うことができ得るものであり、それらはまた以下の実施形態に包含されることを目的としている。
【図１】
0005562961.tif 000002
【図２】
0005562961.tif 000003
【図３】
0005562961.tif 000004
【図４】
0005562961.tif 000005
【図５】
0005562961.tif 000006
【図６】
0005562961.tif 000007