悪意のあるソフトウェアマルウェアを検出するために行動シグネチャを生成するコンピュータ実装方法であって、コンピュータを使用して、マルウェアデータセットにマルウェアの挙動トレースを収集する工程であり、前記挙動トレースは、前記マルウェアによって実行された連続挙動について説明する、工程と、前記マルウェアに対する前記挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程と、同様のマルウェア挙動シーケンスをクラスタにまとめてクラスタリングする工程であり、前記クラスタ内の前記マルウェア挙動シーケンスは、マルウェアファミリの挙動について説明する、工程と、前記クラスタを分析して前記マルウェアファミリに共通の挙動サブシーケンスを特定する工程と、前記挙動サブシーケンスを使用して前記マルウェアファミリに対する行動シグネチャを作成する工程とを含む、方法。前記行動シグネチャを作成する工程の後に、新しいマルウェアの挙動トレースを収集する工程であって、前記新しいマルウェアは、以前は前記マルウェアデータセットのメンバーではない、工程と、前記新しいマルウェアに対する前記挙動トレースを正規化して前記新しいマルウェアに対する挙動シーケンスを生成する工程と、前記新しいマルウェアに対する前記挙動シーケンスが前記マルウェアファミリに対するマルウェア挙動シーケンスのクラスタと整合するかどうか判断する工程と、前記クラスタと整合する前記新しいマルウェアに対する前記挙動シーケンスに応じて、前記クラスタを分析して、前記クラスタ内の前記マルウェア挙動シーケンスおよび前記新しいマルウェアに対する前記挙動シーケンスに共通の新しい挙動サブシーケンスを特定する工程と、前記新しい挙動サブシーケンスを使用して前記マルウェアファミリに対する新しい行動シグネチャを作成する工程とをさらに含む、請求項1に記載の方法。グッドウェアデータセットにグッドウェアの挙動トレースを収集する工程であって、前記グッドウェアは悪意のないものとして知られているソフトウェアである、工程と、前記グッドウェア挙動トレースを正規化してグッドウェア挙動シーケンスを生成する工程とをさらに含み、前記クラスタリングする工程は、同様のグッドウェアおよびマルウェア挙動シーケンスを前記クラスタにまとめてクラスタリングし、前記分析する工程は、前記クラスタ内の前記マルウェア挙動シーケンスのみに共通の挙動サブシーケンスを特定する、請求項1に記載の方法。前記挙動トレースは、前記マルウェアによって実行されたアプリケーションプログラミングインターフェースAPI呼び出しについて説明する、請求項1に記載の方法。前記マルウェアに対する前記挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程は、マルウェア挙動トレース内の関連連続挙動をまとめて分類してオペレーションを形成する工程を含み、マルウェア挙動シーケンスは、1つまたは複数の連続挙動および1つまたは複数のオペレーションを含む、請求項1に記載の方法。同様のマルウェア挙動シーケンスをクラスタにまとめてクラスタリングする工程は、前記マルウェア挙動シーケンスの間で編集距離を決定する工程と、前記決定された編集距離に応じて前記マルウェア挙動シーケンスをクラスタリングする工程とを含む、請求項1に記載の方法。前記クラスタを分析して前記マルウェアファミリに共通の挙動サブシーケンスを特定する工程は、前記クラスタ内の前記マルウェア挙動シーケンスに共通の複数の候補サブシーケンスを特定する工程と、前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかを特定する工程と、前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかに応じて、前記候補サブシーケンスの中から前記挙動サブシーケンスを選択する工程とを含む、請求項1に記載の方法。前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかに応じて、前記候補サブシーケンスの中から前記挙動サブシーケンスを選択する工程は、他の候補サブシーケンスより早期に前記マルウェア挙動シーケンスに現れた前記挙動サブシーケンスに応じて前記挙動サブシーケンスを選択する工程を含む、請求項7に記載の方法。クライアントのセキュリティモジュールに前記行動シグネチャを分配する工程をさらに含み、前記セキュリティモジュールは、前記行動シグネチャを使用して前記クライアント側に存在するマルウェアを検出するよう適合される、請求項1に記載の方法。悪意のあるソフトウェアマルウェアを検出するために行動シグネチャを生成するコンピュータシステムであって、マルウェアデータセットにマルウェアの挙動トレースを収集する工程であり、前記挙動トレースは、前記マルウェアによって実行された連続挙動について説明する、工程と、前記マルウェアに対する前記挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程と、同様のマルウェア挙動シーケンスをクラスタにまとめてクラスタリングする工程であり、前記クラスタ内の前記マルウェア挙動シーケンスは、マルウェアファミリの挙動について説明する、工程と、前記クラスタを分析して前記マルウェアファミリに共通の挙動サブシーケンスを特定する工程と、前記挙動サブシーケンスを使用して前記マルウェアファミリに対する行動シグネチャを作成する工程とを含む工程を実行するために実行可能なコンピュータプログラムモジュールを格納する非一時的なコンピュータ可読記憶媒体と、前記コンピュータプログラムモジュールを実行するためのコンピュータプロセッサとを備える、コンピュータシステム。前記工程は、前記行動シグネチャを作成する工程の後に、新しいマルウェアの挙動トレースを収集する工程であって、前記新しいマルウェアは、以前は前記マルウェアデータセットのメンバーではない、工程と、前記新しいマルウェアに対する前記挙動トレースを正規化して前記新しいマルウェアに対する挙動シーケンスを生成する工程と、前記新しいマルウェアに対する前記挙動シーケンスが前記マルウェアファミリに対するマルウェア挙動シーケンスのクラスタと整合するかどうか判断する工程と、前記クラスタと整合する前記新しいマルウェアに対する前記挙動シーケンスに応じて、前記クラスタを分析して、前記クラスタ内の前記マルウェア挙動シーケンスおよび前記新しいマルウェアに対する前記挙動シーケンスに共通の新しい挙動サブシーケンスを特定する工程と、前記新しい挙動サブシーケンスを使用して前記マルウェアファミリに対する新しい行動シグネチャを作成する工程とをさらに含む、請求項10に記載のコンピュータシステム。前記工程は、グッドウェアデータセットにグッドウェアの挙動トレースを収集する工程であって、前記グッドウェアは悪意のないものとして知られているソフトウェアである、工程と、前記グッドウェア挙動トレースを正規化してグッドウェア挙動シーケンスを生成する工程とをさらに含み、前記クラスタリングする工程は、同様のグッドウェアおよびマルウェア挙動シーケンスを前記クラスタにまとめてクラスタリングし、前記分析する工程は、前記クラスタ内の前記マルウェア挙動シーケンスのみに共通の挙動サブシーケンスを特定する、請求項10に記載のコンピュータシステム。前記マルウェアに対する前記挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程は、マルウェア挙動トレース内の関連連続挙動をまとめて分類してオペレーションを形成する工程を含み、マルウェア挙動シーケンスは、1つまたは複数の連続挙動および1つまたは複数のオペレーションを含む、請求項10に記載のコンピュータシステム。前記クラスタを分析して前記マルウェアファミリに共通の挙動サブシーケンスを特定する工程は、前記クラスタ内の前記マルウェア挙動シーケンスに共通の複数の候補サブシーケンスを特定する工程と、前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかを特定する工程と、前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかに応じて、前記候補サブシーケンスの中から前記挙動サブシーケンスを選択する工程とを含む、請求項10に記載のコンピュータシステム。前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかに応じて、前記候補サブシーケンスの中から前記挙動サブシーケンスを選択する工程は、他の候補サブシーケンスより早期に前記マルウェア挙動シーケンスに現れた前記挙動サブシーケンスに応じて前記挙動サブシーケンスを選択する工程を含む、請求項14に記載のコンピュータシステム。悪意のあるソフトウェアマルウェアを検出するために行動シグネチャを生成するための実行可能なコンピュータプログラムモジュールを格納する非一時的なコンピュータ可読記憶媒体であって、前記モジュールは、マルウェアデータセットにマルウェアの挙動トレースを収集するためのモジュールであり、前記挙動トレースは、前記マルウェアによって実行された連続挙動について説明する、モジュールと、前記マルウェアに対する前記挙動トレースを正規化してマルウェア挙動シーケンスを生成するためのモジュールと、同様のマルウェア挙動シーケンスをクラスタにまとめてクラスタリングするためのモジュールであり、前記クラスタ内の前記マルウェア挙動シーケンスは、マルウェアファミリの挙動について説明する、モジュールと、前記クラスタを分析して前記マルウェアファミリに共通の挙動サブシーケンスを特定するためのモジュールと、前記挙動サブシーケンスを使用して前記マルウェアファミリに対する行動シグネチャを作成するためのモジュールとを含む、コンピュータ可読記憶媒体。前記行動シグネチャを作成する工程の後に、新しいマルウェアの挙動トレースを収集するためのモジュールであって、前記新しいマルウェアは、以前は前記マルウェアデータセットのメンバーではない、モジュールと、前記新しいマルウェアに対する前記挙動トレースを正規化して前記新しいマルウェアに対する挙動シーケンスを生成するためのモジュールと、前記新しいマルウェアに対する前記挙動シーケンスが前記マルウェアファミリに対するマルウェア挙動シーケンスのクラスタと整合するかどうか判断するためのモジュールと、前記クラスタと整合する前記新しいマルウェアに対する前記挙動シーケンスに応じて、前記クラスタを分析して、前記クラスタ内の前記マルウェア挙動シーケンスおよび前記新しいマルウェアに対する前記挙動シーケンスに共通の新しい挙動サブシーケンスを特定するためのモジュールと、前記新しい挙動サブシーケンスを使用して前記マルウェアファミリに対する新しい行動シグネチャを作成するためのモジュールとをさらに含む、請求項16に記載のコンピュータ可読記憶媒体。グッドウェアデータセットにグッドウェアの挙動トレースを収集するためのモジュールであって、前記グッドウェアは悪意のないものとして知られているソフトウェアである、モジュールと、前記グッドウェア挙動トレースを正規化してグッドウェア挙動シーケンスを生成するためのモジュールとをさらに含み、前記クラスタリングする工程は、同様のグッドウェアおよびマルウェア挙動シーケンスを前記クラスタにまとめてクラスタリングし、前記分析する工程は、前記クラスタ内の前記マルウェア挙動シーケンスのみに共通の挙動サブシーケンスを特定する、請求項16に記載のコンピュータ可読記憶媒体。前記マルウェアに対する前記挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程は、マルウェア挙動トレース内の関連連続挙動をまとめて分類してオペレーションを形成する工程を含み、マルウェア挙動シーケンスは、1つまたは複数の連続挙動および1つまたは複数のオペレーションを含む、請求項16に記載のコンピュータ可読記憶媒体。前記クラスタを分析して前記マルウェアファミリに共通の挙動サブシーケンスを特定する工程は、前記クラスタ内の前記マルウェア挙動シーケンスに共通の複数の候補サブシーケンスを特定する工程と、前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかを特定する工程と、前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかに応じて、前記候補サブシーケンスの中から前記挙動サブシーケンスを選択する工程とを含む、請求項16に記載のコンピュータ可読記憶媒体。マルウェアの検出が困難となるのに応じて、セキュリティソフトウェアは、ヒューリスティックベースの検出へ向けて発展している。このタイプの検出は、悪意のある挙動を示す挙動について説明する行動シグネチャなどの一連のヒューリスティックを使用してマルウェアを特定する。しかし、膨大な量の異なるマルウェアは、マルウェアに対する行動シグネチャの維持を困難にする。多くの行動シグネチャを有することにより、シグネチャの維持および使用が複雑化する。例えば、1つのソフトウェアが悪意のあるものであるかどうかを判断するために使用される分析は、より複雑性を増し、この判断を下すために消費される計算リソースは、行動シグネチャの数の増加に伴い増加する。上記のおよび他の問題は、マルウェアを検出するための行動シグネチャを生成するための方法、コンピュータシステムおよびコンピュータ可読記憶媒体によって対処される。本方法の実施形態は、コンピュータを使用して、マルウェアデータセットにマルウェアの挙動トレースを収集する工程を含む。挙動トレースは、マルウェアによって実行された連続挙動について説明する。本方法は、マルウェアに対する挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程と、同様のマルウェア挙動シーケンスをクラスタにまとめてクラスタリングする工程とをさらに含む。クラスタ内のマルウェア挙動シーケンスは、マルウェアファミリの挙動について説明する。それに加えて、本方法は、クラスタを分析してマルウェアファミリに共通の挙動サブシーケンスを特定する工程と、挙動サブシーケンスを使用してマルウェアファミリに対する行動シグネチャを作成する工程とを含む。コンピュータシステムの実施形態は、工程を実行するための実行可能なコンピュータプログラムモジュールを格納する非一時的なコンピュータ可読記憶媒体を備える。工程は、マルウェアデータセットにマルウェアの挙動トレースを収集する工程を含む。挙動トレースは、マルウェアによって実行された連続挙動について説明する。工程は、マルウェアに対する挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程と、同様のマルウェア挙動シーケンスをクラスタにまとめてクラスタリングする工程とをさらに含む。クラスタ内のマルウェア挙動シーケンスは、マルウェアファミリの挙動について説明する。それに加えて、工程は、クラスタを分析してマルウェアファミリに共通の挙動サブシーケンスを特定する工程と、挙動サブシーケンスを使用してマルウェアファミリに対する行動シグネチャを作成する工程とを含む。また、コンピュータシステムは、コンピュータプログラムモジュールを実行するためのコンピュータプロセッサも備える。媒体の実施形態は、マルウェアデータセットにマルウェアの挙動トレースを収集するための実行可能なコンピュータプログラムモジュールを格納する非一時的なコンピュータ可読記憶媒体を備える。挙動トレースは、マルウェアによって実行された連続挙動について説明する。また、モジュールは、マルウェアに対する挙動トレースを正規化してマルウェア挙動シーケンスを生成し、同様のマルウェア挙動シーケンスをクラスタにまとめてクラスタリングする。クラスタ内のマルウェア挙動シーケンスは、マルウェアファミリの挙動について説明する。それに加えて、モジュールは、クラスタを分析してマルウェアファミリに共通の挙動サブシーケンスを特定し、挙動サブシーケンスを使用してマルウェアファミリに対する行動シグネチャを作成する。図1は、一実施形態によるコンピューティング環境100の高レベルのブロック図である。図1は、ネットワーク114によって接続されたセキュリティサーバ110および3つのクライアント112を示す。説明を簡素かつ明確にするため、図1では3つのクライアント112のみが示される。コンピューティング環境100の実施形態は、数千または数百万ものクライアント112を有することができる。また、いくつかの実施形態は、複数のセキュリティサーバ110も有する。クライアント112は、悪意のあるソフトウェアをホストすることができる電子デバイスである。一実施形態では、クライアント112は、例えば、MicrosoftWindows互換オペレーティングシステムOS、AppleOSXおよび/またはLinuxの分配を実行する従来のコンピュータシステムである。また、クライアント112は、携帯情報端末PDA、携帯電話、テレビゲームシステムなどのコンピュータ機能性を有する別のデバイスでもあり得る。クライアント112は、通常、悪意のあるソフトウェアをホストすることができる多数のコンピュータファイルを格納する。マルウェアと呼ばれる場合がある悪意のあるソフトウェアは、一般に、クライアント112上でひそかに実行するソフトウェアまたは何らかの秘密の機能性を有するソフトウェアとして定義される。マルウェアは、多くの形態を取ることができ、正当なファイルに添付される寄生ウイルス、コンピュータを感染して他のコンピュータに広げるためにコンピュータのセキュリティの弱点を突くワーム、正当に見えるが実際は悪意のある隠しコードを含むトロイの木馬プログラム、ならびに、機密情報の取得もしくは広告の表示のためにキーストロークおよび/またはコンピュータ上の他の動作をモニタするスパイウェアなどが挙げられる。クライアント112は、クライアント上のマルウェアの存在を検出するためのセキュリティモジュール116を実行する。セキュリティモジュール116は、例えば、クライアント112のOSに組み込んでも、別々の包括的なセキュリティパッケージの一部であってもよい。一実施形態では、セキュリティモジュール116は、セキュリティサーバ110を動作する同じ実体によって提供される。セキュリティモジュール116は、ネットワーク114を介してセキュリティサーバ110と通信し、クライアント112側でマルウェアを検出するための検出データを入手する。セキュリティモジュール116によって入手された検出データは、行動シグネチャを含む。行動シグネチャは、マルウェアの特徴を示す挙動のシーケンスについて説明する。セキュリティモジュール116は、クライアント側で実行するソフトウェアの挙動を観察してその挙動が行動シグネチャのいずれかと一致するかどうか判断することによって、クライアント112側でマルウェアを検出する。また、検出データは、クライアント112側でマルウェアを検出する他の方法について説明するデータも含むことができる。例えば、検出データは、マルウェアの特徴を示す、コンピュータファイル内で見出されたデータのシーケンスを特定するシグネチャ文字列、ある所定のソフトウェアが悪意のあるものかどうか評価するためにセキュリティモジュール116が使用できるレピュテーション、および/または、マルウェア攻撃を示す可能性があるクライアント112の状態を特定するヒューリスティックを含むことができる。一実施形態では、セキュリティモジュール116は、検出データを使用してクライアント112をモニタし、マルウェアを検出した場合にレポートを生成する。レポートは、検出されたマルウェアについて、クライアント112のユーザおよび/またはクライアント112の管理者などの別の実体に通知する。また、セキュリティモジュール116は、悪意のある挙動を阻止する、マルウェアを隔離する、マルウェアを除去するなど、1つまたは複数の動作を実行してマルウェアを修復することもできる。セキュリティサーバ110は、検出データを生成してクライアント112に分配するよう構成されたハードウェアデバイスおよび/またはソフトウェアモジュールである。セキュリティサーバ110の一例としては、セキュリティソフトウェアおよびサービスをクライアント112のセキュリティモジュール116に提供するウェブベースのシステムが挙げられる。実施形態に応じて、セキュリティサーバ110の機能の1つまたは複数を、クラウドコンピューティング環境によって提供することができる。本明細書で使用される場合、クラウドコンピューティングは、ネットワーク114上のサービスとして、動的に拡張可能であり仮想化される場合が多いリソースが提供されるコンピューティングのスタイルを指す。クライアント112およびセキュリティモジュール116に属する機能もまた、クラウドコンピューティング環境によって提供することができる。セキュリティサーバ110の一実施形態は、セキュリティモジュール116がマルウェアの検出に使用する行動シグネチャを生成するためのシグネチャ生成モジュール118を含む。シグネチャ生成モジュール118は、同様の挙動を実行するソフトウェアのクラスタを特定する。所定のクラスタに対して、シグネチャ生成モジュール118は、クラスタ内でマルウェアを検出するために使用できる行動シグネチャを特定する。さらに、新しいマルウェアが特定されると、シグネチャ生成モジュール118は、可能であれば、新しいマルウェアを既存のクラスタに割り当てる。新しいマルウェアが割り当てられたクラスタに対する既存のシグネチャを使用して新しいマルウェアを検出できない場合は、シグネチャ生成モジュール118は、新しいマルウェアを含む、クラスタ内でマルウェアを検出するために使用できる新しい行動シグネチャを生成する。セキュリティサーバ110の動作は、一実施形態では自動化され、これにより、手動操作なしで行動シグネチャを生成することが可能になる。分配モジュール120は、クライアント112のセキュリティモジュール116に行動シグネチャおよび他の検出データを分配する。一実施形態では、分配モジュール120は、新しいシグネチャが作成されるとローリングベースで行動シグネチャを分配する。別の実施形態では、行動シグネチャは、既定のスケジュールでおよび/またはセキュリティモジュール116による要求と同時に提供される。セキュリティサーバ110によって実行されたクラスタリングベースのシグネチャ生成技法は、こうして個別の行動シグネチャを効果的に使用して、複数のマルウェアサンプルを検出する。その結果、セキュリティサーバ110は、それぞれのシグネチャが単一のマルウェアサンプルに特有である場合に必要とされるよりも少ない行動シグネチャをセキュリティモジュール116に分配する。さらに、マルウェアを検出するためにセキュリティモジュール116によって使用される行動シグネチャのセットのサイズは、従来の技法と比べて低減される。この効率は、新しく発見されたマルウェアに対して行動シグネチャが生成される場合でさえ、維持される。したがって、シグネチャ生成技法は、効果的で高性能のマルウェア検出を実現する。ネットワーク114は、ネットワーク上のセキュリティサーバ110と、クライアント112と、他の任意の実体との間の通信経路を表す。一実施形態では、ネットワーク114は、インターネットであり、標準の通信技術および/またはプロトコルを使用する。したがって、ネットワーク114は、イーサネット802.11、マイクロ波アクセスのための世界規模の相互運用WiMAX、3G、デジタル加入者線DSL、非同期転送モードATM、InfiniBand、PCIExpressAdvancedSwitchingなどの技術を使用してリンクを含むことができる。同様に、ネットワーク114上で使用されるネットワークプロトコルは、マルチプロトコルラベルスイッチングMPLS、伝送制御プロトコル/インターネットプロトコルTCP/IP、ユーザデータグラムプロトコルUDP、ハイパーテキスト転送プロトコルHTTP、簡易メール転送プロトコルSMTP、ファイル転送プロトコルFTPなどを含むことができる。ネットワーク114上で交換されるデータは、ハイパーテキストマークアップ言語HTML、拡張可能マークアップ言語XMLなどを含む技術および/または形式を使用して表すことができる。それに加えて、セキュアソケット層SSL、トランスポート層セキュリティTLS、仮想プライベートネットワークVPN、インターネットプロトコルセキュリティIPsecなどの従来の暗号化技術を使用して、リンクのすべてまたは一部を暗号化することができる。他の実施形態では、実体は、上記で説明されるものの代わりにまたはそれに加えて、カスタムおよび/または専用のデータ通信技術を使用する。図2は、セキュリティサーバ110またはクライアント112として使用するための典型的なコンピュータ200を示す高レベルのブロック図である。チップセット204と結合されたプロセッサ202が示される。また、チップセット204には、メモリ206と、記憶装置208と、キーボード210と、グラフィックスアダプタ212と、ポインティングデバイス214と、ネットワークアダプタ216も結合される。ディスプレイ218は、グラフィックスアダプタ212と結合される。一実施形態では、チップセット204の機能性は、メモリコントローラハブ220およびI/Oコントローラハブ222によって提供される。別の実施形態では、メモリ206は、チップセット204の代わりにプロセッサ202と直接結合される。記憶装置208は、ハードドライブ、コンパクトディスク読み取り専用メモリCD-ROM、DVDまたはソリッドステートメモリデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ206は、プロセッサ202によって使用される命令およびデータを保持する。ポインティングデバイス214は、マウス、トラックボールまたは他のタイプのポインティングデバイスであり、キーボード210と組み合わせて使用して、コンピュータシステム200にデータを入力する。グラフィックスアダプタ212は、ディスプレイ218上にイメージおよび他の情報を表示する。ネットワークアダプタ216は、ネットワーク116とコンピュータシステム200を結合する。当技術分野で公知の通り、コンピュータ200は、図2に示されるものとは異なるコンポーネントおよび/またはそれ以外のコンポーネントを有することができる。それに加えて、コンピュータ200は、示されるある特定のコンポーネントを欠くことがある。一実施形態では、セキュリティサーバとして機能するコンピュータ200は、複数のブレードコンピュータから形成され、キーボード210、ポインティングデバイス214、グラフィックスアダプタ212および/またはディスプレイ218を欠く。さらに、記憶装置208は、コンピュータ200からローカルおよび/またはリモート操作することができるストレージエリアネットワークSAN内で具体化されるなど。この説明では、指定の機能性を提供するためのコンピュータプログラム論理について言及する際に用語モジュールを使用する。モジュールは、ハードウェア、ファームウェアおよび/またはソフトウェアで実装することができる。モジュールは、通常、記憶装置208などのコンピュータ可読記憶媒体上に格納され、メモリ206にロードされ、プロセッサ202によって実行される。図3は、一実施形態によるセキュリティサーバ110のシグネチャ生成モジュール118の詳細な概観を示す高レベルのブロック図である。図3に示されるように、シグネチャ生成モジュール118自体が複数のモジュールを含む。いくつかの実施形態では、機能は、本明細書に記載されるものとは異なる様式でこれらのモジュールに分配される。格納モジュール310は、シグネチャ生成モジュール118によって使用されるデータを格納する。そのようなデータの例には、評価中のソフトウェア、シグネチャ生成プロセス中に作成され使用される中間データおよび作成された行動シグネチャが含まれる。データ格納モジュール310は、リレーショナルデータベースまたは別のタイプのデータベースを含み得る。図3に示されるように、格納モジュール310の実施形態は、異なるクラスのソフトウェアを保持するデータセットを格納する。マルウェアデータセット312は、既知のマルウェアのサンプルを格納する。データセット312内のマルウェアは、クライアント112からおよび/または他のソースから入手することができる。それに加えて、格納モジュール310は、既知のグッドウェアのサンプルを格納するグッドウェアデータセット314を格納する。グッドウェアは、悪意のないすなわち、正当なものとして知られているソフトウェアである。グッドウェアは、クライアント112上に存在する場合が多い、ありふれたおよび/または一般のソフトウェアプログラムを含むことができる。データセット内のマルウェア312およびグッドウェア314は、まとめてソフトウェアと呼ばれる。挙動収集モジュール316は、データセット312、314にソフトウェアに挙動トレースを収集する。ソフトウェアのサンプルに対する挙動トレースは、ソフトウェアが実行される際に行う挙動のシーケンスである。一実施形態では、挙動収集モジュール316は、データセット312、314内の各ソフトウェアサンプルを適切な環境で実行する。環境は、実際のものでもシミュレートされたものでもよい。例えば、特定のソフトウェアサンプルが、MicrosoftWindowsOSを改変したものを有するコンピュータ上で実行することを目的としたものであれば、挙動収集モジュール316は、Windowsベースのコンピュータをシミュレートする仮想コンピューティング環境でソフトウェアをエミュレートすることができる。挙動収集モジュール316は、ソフトウェアによって実行される挙動のシーケンスを観察するのに十分長い時間、ソフトウェアを実行できるようにする。実行の長さは、例えば、実行される命令の数または実行時間の長さによって指定することができる。挙動収集モジュール316は、環境内で指定の実行量を実行するためにソフトウェアが必要とするいかなるパラメータおよび/または環境リソースもソフトウェアに提供する。挙動収集モジュール316は、実行する挙動のシーケンスを収集する記録するため、実行しているソフトウェアをモニタする。一実施形態では、挙動収集モジュール316は、実行しているソフトウェアによって行われる、OSへのアプリケーションプログラミングインターフェースAPI呼び出しを特にモニタし、したがって、ソフトウェアに対する挙動トレースは、そのAPI呼び出しシーケンスである。挙動収集モジュール316の他の実施形態は、モニタして、挙動トレースに異なるおよび/または追加のデータを含める。トレース正規化モジュール318は、実行されたソフトウェアの挙動トレースを正規化する。正規化により、異なるトレースを比較できるように挙動トレースを標準的な表現にする。一実施形態では、トレース正規化モジュール318は、API呼び出しで参照されるファイル経路、ドライブ名およびフォルダ位置などの異なる実行インスタンスにおいて異なり得るパラメータの標準的な表現によって挙動トレースを正規化する。例えば、パラメータは、挙動トレースから取り除く、および/または、ワイルドカードシンボルに置き換えることができる。正規化された挙動トレースは、挙動シーケンスと呼ばれる。また、トレース正規化モジュール318は、挙動トレース内の挙動を正規化の一環としてオペレーションに分類することもできる。オペレーションは、一緒に分類される一連の関連連続挙動である。例えば、ファイルからデータを入手するソフトウェアは、ファイルを開くというAPI呼び出しに続いてファイルを読むという呼び出しを行う場合が多い。トレース正規化モジュール318は、これらの2つの呼び出しをファイルへアクセスするという単一のオペレーションに組み合わせることができる。この様式でオペレーションを使用することにより、その中に含まれる情報内容を実質的に変更することなく、シーケンスのサイズを低減し、したがって、後段の分析の効率を高める。正規化モジュール318によって実行される正規化のタイプは実施形態ごとに異なり得、および/または、異なる実施形態では省略され得る。クラスタリングモジュール320は、同様の挙動シーケンスがまとめてクラスタリングされるように、ソフトウェアの挙動シーケンスをクラスタリングする。クラスタリングモジュール320は、各挙動シーケンスを他の挙動シーケンスと比較して、一連のクラスタを識別し、各クラスタは一連の同様の挙動シーケンスを含む。行動シーケンスはマルウェア312とグッドウェア314の両方から得られるため、結果として得られるクラスタは、単一のクラス例えば、すべてマルウェアのシーケンスからなるものでも、両方のクラスの組合せを含んでもよい。一実施形態では、クラスタリングモジュール320は、類似性の尺度として編集距離を使用してすなわち、距離測定、編集の閾値数値内の同一の挙動シーケンスをまとめてクラスタリングする。実施形態に応じて編集距離閾値は異なり得る。それに加えて、クラスタリングモジュール320の異なる実施形態は、異なるおよび/または追加のクラスタリング技法および類似性の尺度を使用して、挙動シーケンスをクラスタリングする。クラスタ分析モジュール322は、挙動シーケンスのクラスタを分析し、マルウェアに対する行動シグネチャとして使用することができるサブシーケンスを特定する。一実施形態では、クラスタ分析モジュール322は、各クラスタを分析し、クラスタ内の挙動シーケンスに代表されるソフトウェアのクラスを決定する。上記のように、クラスタは、マルウェア、グッドウェアまたは2つのクラスの組合せからのシーケンスを含むことができる。一実施形態では、クラスタ分析モジュール322は、大部分がソフトウェアの一クラスから得られたシーケンスを含むクラスタを特定する。例えば、モジュール322は、独占的にソフトウェアの一クラスから得られたシーケンスを含むクラスタおよび/またはソフトウェアの一クラスから得られた閾値量例えば、95を超えるシーケンスを含むクラスタを特定することができる。通常、関連ソフトウェアから得られた挙動シーケンスは、まとめてクラスタリングされる傾向にある。同じグッドウェアの異なるバージョン例えば、異なるパッチレベルは、実質的に同じ挙動を実行する場合が多く、したがって、異なるバージョンから得られたシーケンスは、まとめてクラスタリングされる傾向にあることになる。同様に、ポリモーフィックマルウェアファミリの異なるインスタンスから得られたシーケンスは、ポリモーフィズムにもかかわらずマルウェアの挙動が一貫した状態で維持されるため、まとめてクラスタリングされる傾向にある。したがって、大部分がマルウェアから得られたシーケンスを含むクラスタマルウェアクラスタと呼ばれるは、単一のマルウェアファミリ、例えば、ポリモーフィズム、共通のコードベースまたは別の関係性を通じて関連付けられる一連のマルウェアの挙動を説明するものと推定される。クラスタ分析モジュール322は、マルウェアクラスタを分析し、クラスタに代理されるファミリ内のマルウェアの検出に有用な挙動サブシーケンスを特定する。クラスタに代理されるマルウェアファミリに対するそのようなサブシーケンスを見出すため、モジュール322は、そのクラスタ内の挙動シーケンスのすべてに共通の1つまたは複数のサブシーケンスを特定する。言い換えれば、モジュール322は、クラスタ内の挙動シーケンスのすべてにおいて見出される挙動シーケンスの1つまたは複数の部分を特定する。あるいは、クラスタがマルウェアとグッドウェアの両方を含む実施形態では、クラスタ分析モジュール322は、クラスタ内のマルウェア挙動シーケンスのみに共通の1つまたは複数の挙動サブシーケンスを特定する。クラスタ内の挙動シーケンスに共通の挙動サブシーケンスは、行動シグネチャを作成できる候補対象を代表するため、本明細書では候補シーケンスと呼ばれる。一実施形態では、クラスタ析モジュール322は、サブシーケンスが閾値長さより長い場合にのみ、サブシーケンスを候補対象として特定する。例えば、モジュール322は、10を超える挙動を含む候補シーケンスを特定することができ、ここでの挙動はAPI呼び出しまたはオペレーションである。この方法では、クラスタ析モジュール322は、候補対象がマルウェアファミリに限ったことではないため、短過ぎて誤判定のマルウェア検出をもたらす可能性がある候補シーケンスを除外する。複数の候補シーケンスが存在する場合は、クラスタ分析モジュール322の実施形態は、候補対象を評価し、クラスタ内の挙動シーケンスの中で最も早期に起こる候補対象を特定する。異なる候補対象は、挙動シーケンスの異なる場所で起こり得る。ある候補対象がクラスタ内の挙動シーケンスの終了間近で起こる傾向にあり得る一方で、別の候補対象は挙動シーケンスの開始間近で起こる傾向にあり得る。この状況では、クラスタ分析モジュール322は、より早期に現れた候補シーケンスを、ファミリ内のマルウェアの検出に使用するシーケンスとして選択する。より早期のシーケンスを使用することは、クライアント116側でのマルウェアの早期検出を可能にするため、有利である。他の実施形態は、追加のおよび/または異なる基準を使用して、複数の候補シーケンスの中からシーケンスを選択する。シグネチャ作成モジュール324は、クラスタ分析モジュール322によって選択された候補シーケンスに基づいて行動シグネチャを作成する。所定のクラスタに対して選択された候補シーケンスの場合、シグネチャ作成モジュール324は、候補シーケンスをその挙動トレース形式に変換し返す。この変換は、場合によりパラメータの正規化を維持する一方で、候補シーケンス内の任意のオペレーションを拡大して、元の挙動シーケンスに戻す工程を伴う。シグネチャ作成モジュール324は、変換された候補シーケンスから行動シグネチャを生成する。行動シグネチャは、対応するクラスタに代表されるマルウェアファミリによって実行された挙動のシーケンスについて説明する。したがって、クライアント112のセキュリティモジュール116でシグネチャを使用して、クライアント側でマルウェアファミリのインスタンスを検出することができる。この様式では、シグネチャ作成モジュール324の実施形態は、マルウェアクラスタのすべてまたは選択されたサブセットに対応するシグネチャを作成する。シグネチャ更新モジュール326は、マルウェアデータセット312に追加された新しいマルウェアサンプルの観点から行動シグネチャを更新する。一実施形態では、シグネチャ更新モジュール326は、シグネチャ生成モジュール118の他のモジュールを使用して、新しいマルウェアをカバーするシグネチャを効果的に生成する。新しいマルウェアサンプルがマルウェアデータセット312に追加されると、シグネチャ更新モジュール326は、挙動収集モジュール316およびトレース正規化モジュール318を使用して、新しいマルウェアサンプルに対する挙動シーケンスを生成する。また、シグネチャ更新モジュール326は、クラスタリングモジュール320を使用して、新しい挙動シーケンスが既存のクラスタの1つと整合するクラスタリングするかどうか判断する。新しい挙動シーケンスが既存のクラスタと整合する場合、シグネチャ更新モジュール326は、クラスタ分析モジュール322モジュールを使用して、新しく追加された挙動シーケンスの観点からクラスタを分析し、必要ならば、新しい候補シーケンスを生成する。一実施形態では、この分析は、現行の選択された候補シーケンスすなわち、クラスタに対する行動シグネチャが生成された候補シーケンスが、新しいマルウェアサンプルに対する挙動シーケンスについても説明するかどうか判断する工程を伴う。説明する場合は、クラスタに対する既存の行動シグネチャを使用して新しいマルウェアを検出することができ、クラスタに対するシグネチャを更新する必要はない。現行の選択された候補シーケンスが新しい挙動シーケンスについて説明しない場合は、シグネチャ更新モジュール326は、クラスタ分析モジュール322を使用して、クラスタに対する新しい候補シーケンスを生成する。新しい候補シーケンスは、新しいマルウェアサンプルの挙動シーケンスおよび既にクラスタ内に存在していた挙動シーケンスに共通である。次いで、シグネチャ更新モジュール326は、クラスタ分析モジュール322を使用して、新しい候補シーケンスの中から選択し、シグネチャ作成モジュール324を使用して、選択された候補シーケンスに基づいてクラスタに対する新しい行動シグネチャを生成する。シグネチャ生成モジュール118は、クライアント112のセキュリティモジュール116にこの新しい行動シグネチャを分配する。新しい挙動シーケンスが既存のクラスタと整合しない場合、シグネチャ更新モジュール326の実施形態は、クラスタリングモジュール320を使用して挙動シーケンスに対する新しいクラスタを作成する。シグネチャ更新モジュール326は、クラスタ分析322およびシグネチャ作成324モジュールを使用して、新しいクラスタに対する候補シーケンスを特定し、候補対象の中から選択されたシーケンスに対する新しい行動シグネチャを作成する。シグネチャ生成モジュール118は、クライアント112のセキュリティモジュール116に新しいクラスタに対する行動シグネチャを分配する。一実施形態では、新しいマルウェアサンプルの挙動シーケンスを既存のクラスタとクラスタリングすることを試みるよりむしろ、シグネチャ更新モジュール326は、データセット312、314内のソフトウェアのすべての挙動シーケンス新しいマルウェアに対する挙動シーケンスを含むを再クラスタリングする。再クラスタリングは、カレンダーベースのスケジュールで、指定量の新しいマルウェアが特定されるとき例えば、最後のクラスタリング以降、50個の新しいマルウェアサンプルが特定されるときおよび/またはそれ以外のとき、新しいマルウェアが特定されるごとに実行することができる。それに加えて、シグネチャ更新技法を使用して、新しいグッドウェアの観点からおよび/またはマルウェア312もしくはグッドウェア314のデータセットからソフトウェアが取り除かれる際、更新されたシグネチャを生成することもできる。図4は、行動シグネチャを生成および分配するために、セキュリティサーバ110の一実施形態によって実行される工程を示すフローチャートである。他の実施形態は、異なるおよび/または追加の工程を実行することができる。さらに、他の実施形態は、異なる順番で工程を実行することができる。その上、セキュリティサーバ110以外の実体によって工程の一部またはすべてを実行することができる。初めに、ソフトウェアデータセットを確立する410。ソフトウェアデータセットは、マルウェアデータセット312およびグッドウェアデータセット314を含む。セキュリティサーバ110は、例えば、エミュレーション環境でソフトウェアを実行することによって、データセットにソフトウェアに対する挙動トレースを収集する412。セキュリティサーバ110は、トレースを標準的な表現にすることによって、ソフトウェアの挙動トレースを正規化する414。また、正規化の一環として、セキュリティサーバ110は、トレース内の関連連続挙動をオペレーションに分類して挙動シーケンスを形成する414。セキュリティサーバ110は、例えば、類似性の尺度として編集距離を使用して、同様の挙動シーケンスをまとめてクラスタリングする416。セキュリティモジュール110は、マルウェアの特定に使用できる挙動の候補シーケンスを特定するため、大部分がマルウェアから得られたシーケンスを含むクラスタを分析する418。セキュリティモジュール110は、マルウェアクラスタに対する候補シーケンスの中から選択し、選択された候補シーケンスを使用してクラスタに代表されるマルウェアファミリに対する行動シグネチャを生成する418。セキュリティサーバ110は、クライアント112のセキュリティモジュール116にマルウェアクラスタに対して生成されたシグネチャを分配する420。図5は、新しいマルウェアサンプルを検出するための更新された行動シグネチャを生成および分配するために、セキュリティサーバ110の一実施形態によって実行される工程を示すフローチャートである。図5に示される工程と同様に、他の実施形態は、異なるおよび/または追加の工程を実行することができ、工程は、異なる順番でまたは異なる実体によって実行することができる。初めに、新しいマルウェアサンプルを特定し、マルウェアデータセット312に追加する510。セキュリティサーバ110は、新しいマルウェアに対する挙動トレースを収集し、挙動トレースを正規化して挙動シーケンスを生成する512。セキュリティサーバ110は、可能であれば、この挙動シーケンスを既存のクラスタと整合させる514。挙動トレースはクラスタと整合することを想定すると、セキュリティサーバ110は、クラスタを分析し、新しいマルウェアサンプルおよび必要であればクラスタ内に既に存在していた他のマルウェアを包含するクラスタに対するシグネチャを再生成する516。セキュリティサーバ110は、クライアント112のセキュリティモジュール116に生成されたシグネチャを分配する518。新しいシグネチャは、クラスタに対する以前のシグネチャの代用として分配することができる。したがって、本明細書に記載される技法により、マルウェアのファミリを検出できる行動シグネチャの小さく有効なセットの自動生成が可能になる。さらに、本技法は新しいマルウェアおよびマルウェア亜種が発見されると、新しいシグネチャを効果的に生成する。上記の説明は、ある特定の実施形態の動作を示すために含まれるものであり、本発明の範囲を限定するためのものではない。本発明の範囲は、以下の特許請求の範囲によってのみ限定されるものとする。上記の論考から、当業者には、本発明の精神および範囲によってさらに包含されるであろう多くの変形形態が明らかになるであろう。