(57)【特許請求の範囲】
【請求項１】
コンピュータのプロセッサによって実行される、エンティティの知的ハッシュを生成する方法であって、
前記プロセッサが、前記エンティティのプログラムコードの変換に基づいてメタ言語命令シーケンスを生成するステップと、
前記プロセッサが、前記メタ言語命令シーケンスの複数のサブシーケンスの複数の頻度値を特定するステップであって、ここで頻度値は、関連付けられたサブシーケンスが前記エンティティのプログラムコードの変換に基づいた前記メタ言語命令シーケンス内で発生する頻度を示す、ステップと、
前記プロセッサが、少なくとも部分的に前記複数の頻度値に基づいて、前記複数のサブシーケンスからサブシーケンスのセットを選択するステップと、
前記プロセッサが、前記エンティティの前記知的ハッシュを生成するステップであって、前記知的ハッシュは、前記選択されたサブシーケンスのセットを含む、ステップと、
前記プロセッサが、前記知的ハッシュを記憶装置に記憶するステップと
を含む、方法。
【請求項２】
前記選択されるサブシーケンスの頻度値は、前記サブシーケンスが前記メタ言語命令シーケンス内で、選択されないサブシーケンスよりも高頻度で発生することを示す、請求項１に記載の方法。
【請求項３】
前記エンティティの知的ハッシュを生成するステップは、
前記プロセッサが、前記エンティティの圧縮に使用された技法を識別するステップと、
前記プロセッサが、前記エンティティの圧縮に使用された前記技法を記述する情報を定義するステップと、
前記プロセッサが、少なくとも部分的に前記識別された技法を記述する情報に基づいて、前記エンティティの前記知的ハッシュを生成するステップと
をさらに含む、請求項１に記載の方法。
【請求項４】
前記エンティティの知的ハッシュを生成するステップは、
前記プロセッサが、前記エンティティに基づいて固有の文字列のセットを識別するステップと、
前記プロセッサが、前記固有の文字列のセットを記述する情報を定義するステップと、
前記プロセッサが、少なくとも部分的に前記固有の文字列のセットを記述する情報に基づいて、前記エンティティの前記知的ハッシュを生成するステップと
をさらに含む、請求項１に記載の方法。
【請求項５】
前記エンティティに基づいて前記固有の文字列のセットを識別するステップは、前記プロセッサが、前記エンティティとコンピュータシステムとの通信を示す文字列のセットを識別するステップを含む、請求項４に記載の方法。
【請求項６】
前記エンティティに基づいて前記固有の文字列のセットを識別するステップは、前記プロセッサが、ネットワークを通して前記エンティティにより行われた通信を示す文字列のセットを識別するステップを含む、請求項４に記載の方法。
【請求項７】
疑いのあるエンティティがマルウェアエンティティに該当するか否かを判断するコンピュータシステムであって、
実行可能なコードを記憶するコンピュータ可読記憶媒体と、
前記実行可能なコードを実行するためのプロセッサと
を備え、
前記実行可能なコードは、前記プロセッサに実行されることにより、
クライアントが直面した疑いのあるエンティティのプログラムコードの変換に基づいて生成されたメタ言語命令シーケンスのサブシーケンスのセットを含む知的ハッシュであって、生成された前記知的ハッシュを受信するように適合された報告モジュールであって、前記サブシーケンスのセットは、関連付けられたサブシーケンスが前記メタ言語命令シーケンス内で発生する頻度を示す複数の頻度値に少なくとも部分的に基づいて、前記メタ言語命令シーケンスの複数のサブシーケンスから選択される、報告モジュールと、
前記知的ハッシュに基づいて、前記疑いのあるエンティティが前記マルウェアエンティティに該当するか否かを判断するように構成された評価モジュールと
を当該コンピュータシステムに実現し、
前記報告モジュールは、前記疑いのあるエンティティハッシュが前記マルウェアエンティティに該当するか否かを前記クライアントに報告するようにさらに構成される
コンピュータシステム。
【請求項８】
複数の知的ハッシュを記憶するように構成された知的ハッシュデータベースをさらに備え、
前記評価モジュールは、
前記疑いのあるエンティティに基づいて生成された前記知的ハッシュおよび前記複数の知的ハッシュに基づいて、複数の類似性スコアを生成し、ここで類似性スコアは、前記疑いのあるエンティティに基づいて生成された前記知的ハッシュと前記複数の知的ハッシュのうちの１つの知的ハッシュとの類似性を示し、そして
前記複数の類似性スコアのうちの最高類似性スコアに関連付けられた知的ハッシュに基づいて、前記疑いのあるエンティティハッシュが前記マルウェアエンティティに該当するか否かを判断する
ようにさらに構成される、請求項７に記載のコンピュータシステム。
【請求項９】
前記実行可能なコードは、前記プロセッサに実行されることにより、
悪意のあるエンティティに基づいて、前記知的ハッシュを生成するように構成された知的ハッシュ生成モジュールを当該コンピュータシステムにさらに実現する、請求項７に記載のコンピュータシステム。
【請求項１０】
前記選択されるサブシーケンスの頻度値は、前記サブシーケンスが前記メタ言語命令シーケンス内で、選択されないサブシーケンスよりも高頻度で発生することを示す、請求項７に記載のコンピュータシステム。
【請求項１１】
前記知的ハッシュ生成モジュールは、
前記悪意のあるエンティティの圧縮に使用された技法を識別し、
前記悪意のあるエンティティの圧縮に使用された前記技法を記述する情報を定義し、そして
少なくとも部分的に前記識別された技法を記述する情報に基づいて、前記悪意のあるエンティティの前記知的ハッシュを生成する
ようにさらに構成される、請求項９に記載のコンピュータシステム。
【請求項１２】
前記知的ハッシュ生成モジュールは、
前記悪意のあるエンティティに基づいて固有の文字列のセットを識別し、
前記固有の文字列のセットを記述する情報を定義し、そして
少なくとも部分的に前記固有の文字列のセットを記述する情報に基づいて、前記悪意のあるエンティティの前記知的ハッシュを生成する
ようにさらに構成される、請求項９に記載のコンピュータシステム。
【請求項１３】
プログラムコードをコンピュータに実行させて、疑いのあるエンティティがマルウェアエンティティに該当するか否かを判断させるコンピュータプログラムであって、前記プログラムコードは、
疑いのあるエンティティを識別するプログラムコードと、
前記疑いのあるエンティティのプログラムコードの変換に基づいてメタ言語命令シーケンスを生成するプログラムコードと、
前記メタ言語命令シーケンスの複数のサブシーケンスの複数の頻度値を特定するプログラムコードであって、ここで頻度値は、関連付けられたサブシーケンスが前記疑いのあるエンティティのプログラムコードの変換に基づいた前記メタ言語命令シーケンス内で発生する頻度を示す、プログラムコードと、
少なくとも部分的に前記複数の頻度値に基づいて、前記複数のサブシーケンスからサブシーケンスのセットを選択するプログラムコードと、
前記疑いのあるエンティティの知的ハッシュを生成するプログラムコードであって、前記知的ハッシュは、前記選択されたサブシーケンスのセットを含む、プログラムコードと、
前記知的ハッシュをサーバに送信して、前記疑いのあるエンティティがマルウェアエンティティに該当するか否かを評価するプログラムコードと、
前記疑いのあるエンティティが前記マルウェアエンティティに該当するか否かを特定した結果を前記サーバから受信するプログラムコードと
を含んでいる、コンピュータプログラム。
【請求項１４】
前記選択されるサブシーケンスの頻度値は、前記サブシーケンスが前記メタ言語命令シーケンス内で、選択されないサブシーケンスよりも高頻度で発生することを示す、請求項１３に記載のコンピュータプログラム。
【請求項１５】
前記疑いのあるエンティティの知的ハッシュを生成するプログラムコードは、
前記疑いのあるエンティティの圧縮に使用されたアルゴリズムを識別するプログラムコードと、
少なくとも部分的に前記アルゴリズムを示す情報に基づいて、前記疑いのあるエンティティの前記知的ハッシュを生成するプログラムコードと
をさらに含む、請求項１３に記載のコンピュータプログラム。
【請求項１６】
前記疑いのあるエンティティの知的ハッシュを生成するプログラムコードは、
前記疑いのあるエンティティに基づいて固有の文字列のセットを識別するプログラムコードと、
少なくとも部分的に前記固有の文字列のセットを示す情報に基づいて、前記疑いのあるエンティティの前記知的ハッシュを生成するプログラムコードと
をさらに含む、請求項１３に記載のコンピュータプログラム。
【請求項１７】
前記疑いのあるエンティティが前記マルウェアエンティティに該当することを特定する結果を受信したことに応答して、クライアントを修復するプログラムコードをさらに含む、請求項１３に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはコンピュータセキュリティに関し、特に、知的ハッシュ（ｉｎｔｅｌｌｉｇｅｎｔ  ｈａｓｈ）を使用したマルウェアの識別に関する。
【背景技術】
【０００２】
近代のコンピュータを攻撃可能な多種多様な悪意のあるソフトウェア（マルウェア）が存在する。マルウェアの脅威としては、コンピュータウィルス、ワーム、トロイの木馬プログラム、スパイウェア、アドウェア、クライムウェア、およびフィッシングウェブサイトが挙げられる。近代のマルウェアは多くの場合、攻撃者に金融的な利益を提供するように設計される。例えば、マルウェアは、ログイン、パスワード、銀行口座識別子、およびクレジットカード番号等の重要な情報を不正に捕捉することができる。同様に、マルウェアは、攻撃者が侵入先のコンピュータにアクセスし制御できるようにする隠れたインタフェースを提供することができる。
【０００３】
マルウェアに対抗するいくつかのセキュリティコンピュータシステムおよびソフトウェアは、コンピュータファイルまたはソフトウェアアプリケーション等のエンティティがマルウェアを含むか否かを判断するために、使用されるマルウェアの特徴を識別しようとすることにより動作する。本明細書では「ハッシュ」と呼ばれるハッシュ値は、暗号ハッシュ関数等の変換をマルウェアプログラム等のエンティティに適用することにより生成される値である。ハッシュ値は、マルウェアプログラムの固有の表現または「指紋」を形成し、プログラムを識別する特徴として使用することができる。ハッシュを生成する一般的な変換としては、ＭＤ５およびＳＨＡ−１が挙げられる。
【０００４】
暗号ハッシュ関数は、データの小さな変更（すなわち、多態性）の影響を受けやすい。したがって、同じマルウェアプログラムの変形（すなわち、ポリモーフィック型マルウェア）等の２つの同様のエンティティが、非常に異なるハッシュを有し得る。このように、ハッシュは、生成される元となるエンティティに特有である。マルウェアプログラムの一変形のハッシュの生成に使用されるデータは、多態性を受け得るため、この特有性は多くの場合、ポリモーフィック型マルウェアの検出漏れを生じさせる。
【０００５】
検出漏れを補償するために、エンティティがマルウェアであるか否かを識別する際に、エンティティのいくつかのハッシュが使用される。クライアントが曝される危険のある異なるマルウェアエンティティの数は、時間の経過に伴って増大し続けるため、エンティティがマルウェアであるか否かを判断するために使用されるハッシュの数は比例的に増大している。大きなハッシュセットを使用すると、ソフトウェアアプリケーションまたはファイル等のエンティティをスキャンして、マルウェアの存在を検出するにあたり、非効率的になり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
したがって、当分野には、クライアント側のマルウェア検出能力を損なわずに、マルウェアの識別に使用されるハッシュ数を低減する必要がある。
【課題を解決するための手段】
【０００７】
上記および他の必要性は、エンティティの知的ハッシュを生成する方法およびコンピュータ可読記憶媒体により満たされる。
【０００８】
一態様は、エンティティの知的ハッシュを生成する方法を提供する。アセンブリ言語命令シーケンスが、エンティティに基づいて生成される。アセンブリ言語命令シーケンスのサブシーケンスセットが識別される。エンティティの知的ハッシュが、少なくとも部分的に、識別されたサブシーケンスセットに基づいて生成され、記憶装置に記憶される。
【０００９】
別の態様は、疑いのあるエンティティがマルウェアエンティティに該当するか否かを判断するコンピュータシステムを提供する。このシステムは、クライアントが直面した疑いのあるエンティティに基づいて生成された知的ハッシュを受信するように構成された報告モジュールを備え、知的ハッシュは、疑いのあるエンティティに特有のメタデータセットを含み、そのメタデータのうちの少なくともいくつかは、疑いのあるエンティティが変更しても不変である。このシステムは、疑いのあるエンティティがマルウェアエンティティに該当するか否かを知的ハッシュに基づいて判断するように構成された評価モジュールをさらに備える。報告モジュールは、疑いのあるエンティティがマルウェアエンティティに該当するか否かをクライアントに対して報告するようにさらに構成される。
【００１０】
別の態様では、説明される実施形態は、疑いのあるエンティティがマルウェアエンティティに該当するか否かを判断するコンピュータプログラムコードが符号化されたコンピュータ可読記憶媒体を提供する。このプログラムコードは、疑いのあるエンティティを識別するプログラムコードを含む。プログラムコードは、疑いのあるエンティティの知的ハッシュを生成するプログラムコードをさらに含み、知的ハッシュは疑いのあるエンティティに特有のメタデータセットを含み、メタデータのうちの少なくともいくつかは、疑いのあるエンティティが変更されても不変である。プログラムコードは、疑いのあるエンティティがマルウェアエンティティに該当するか否かを評価するために、知的ハッシュをサーバに送信するプログラムコードをさらに含む。プログラムコードは、疑いのあるエンティティがマルウェアエンティティに該当するか否かを特定する結果をサーバから受信するプログラムコードをさらに含む。
【００１１】
この概要および以下の詳細な説明において説明される特徴および利点は、すべてを包含するものではない。多くの追加の特徴および利点が、図面、明細書、および特許請求の範囲に鑑みて当業者には明らかになるであろう。
【図面の簡単な説明】
【００１２】
【図１】一実施形態による計算環境１００の高レベルブロック図である。
【図２】セキュリティサーバ１１０またはクライアント１５０としての使用に典型的なコンピュータ２００を示す高レベルブロック図である。
【図３】一実施形態によるセキュリティサーバ１１０の詳細図を示す高レベルブロック図である。
【図４】一実施形態によるセキュリティモジュール１１６の詳細図を示す高レベルブロック図である。
【図５】一実施形態により、セキュリティサーバ１１０が知的ハッシュを生成するために実行するステップを示すフローチャートである。
【図６】一実施形態により、セキュリティサーバ１１０が疑いのあるエンティティハッシュを評価するために実行するステップを示すフローチャートである。
【図７】一実施形態により、セキュリティモジュール１１６が疑いのあるエンティティを識別し評価するために実行するステップを示すフローチャートである。
【００１３】
これら図は、単なる例示として本発明の実施形態を示す。本明細書に示される構造および方法の代替の実施形態を、本明細書に開示される本発明の原理から逸脱せずに利用し得ることを当業者は容易に認識するであろう。
【発明を実施するための形態】
【００１４】
図１は、一実施形態による計算環境１００の高レベルブロック図である。図１は、ネットワーク１１４により接続されたセキュリティサーバ１１０および３つのクライアント１５０を示す。説明を簡潔かつ明確にするために、３つのみのクライアント１５０が図１に示される。計算環境１００の実施形態は、ネットワーク１１４に接続された数千または数百万のクライアント１５０を有し得る。
【００１５】
セキュリティサーバ１１０は、ネットワーク１１４を介してクライアント１５０と対話する。セキュリティサーバ１１０は、マルウェアの検出に使用される知的ハッシュを記憶する知的ハッシュデータベース１７４を含む。「知的ハッシュ」は、エンティティに対して一意（すなわち、特有）であると共に、多態性等のエンティティへの小さな変更に対して大方不変（すなわち、ロバスト）であり、ファイルまたはソフトウェアアプリケーション等のエンティティに関連付けられたメタデータを識別することにより生成される。これらメタデータは、エンティティから抽出するか、または変換もしくは関数を使用して生成することができる。
【００１６】
これらメタデータを使用して、同じエンティティの変形である（例えば、少数の多態性により異なる）２つのエンティティから生成される知的ハッシュは、その類似性を反映することになる。同じエンティティの２つの変形の間の多態性により、同じエンティティの２つの変形の知的ハッシュで表されるメタデータのうちのいくらかが異なることになり得る。しかし、メタデータの大部分は、同じエンティティの２つの変形の類似性を反映して、同じままである。セキュリティサーバ１１０は、既知のマルウェア脅威の包括的集合のための知的ハッシュを生成し、この知的ハッシュを知的ハッシュデータベース１７４に記憶する。
【００１７】
セキュリティサーバ１１０は、知的ハッシュデータベース１７４を使用して、クライアント１５０において生成された知的ハッシュが、知的ハッシュデータベース１７４内の知的ハッシュに該当するか否かを評価する。未知のエンティティまたはマルウェアであることが疑われるエンティティ等の疑いのあるエンティティが識別された場合、クライアント１５０は、本明細書では「疑いのあるエンティティハッシュ」と呼ばれる疑いのあるエンティティの知的ハッシュを生成する。次に、クライアント１５０は、評価のために、疑いのあるエンティティハッシュをセキュリティサーバ１１０に送信する。クライアント１５０から疑いのあるエンティティハッシュを受信すると、セキュリティサーバ１１０は、データベース１７４内の知的ハッシュと比較して、疑いのあるエンティティハッシュが知的ハッシュデータベース１７４内の知的ハッシュと同じまたは同様であるか否かを判断することにより、知的ハッシュを評価する。セキュリティサーバ１１０は、評価の結果をクライアント１５０に報告する。
【００１８】
一実施形態では、クライアント１５０は、１人または複数のユーザが、ソフトウェアエンティティのダウンロード、インストール、および／または実行を含む動作を実行するために使用するコンピュータである。クライアント１５０は、例えば、ユーザがネットワーク１１４上のウェブサーバおよび他のコンピュータからコンテンツを検索し表示できるようにするＭＩＣＲＯＳＯＦＴ  ＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲ等のウェブブラウザを実行するパーソナルコンピュータであり得る。他の実施形態では、クライアント１５０は、個人情報端末（ＰＤＡ）、携帯電話、ページャ、テレビジョン「セットトップボックス」等の、コンピュータ以外のネットワーク対応装置である。この説明では、用語「クライアント」は、マルウェアまたは他の脅威を構成し得るソフトウェアエンティティまたは他のエンティティに直面するサーバおよびゲートウェイ等のコンピュータも含む。例えば、クライアント１５０は、企業ネットワークとインターネットとの間に配置されるネットワークゲートウェイであり得る。
【００１９】
知的ハッシュデータベース１７４およびセキュリティサーバ１１０に記憶された他の情報を使用して、疑いのあるエンティティハッシュを評価することにより、包括的なクライアント側マルウェア検出を相変わらず提供しながら、疑いのあるエンティティの評価を中央集中化するメカニズムが提供される。この手法は、知的ハッシュデータベース１７４を生成し、クライアント１５０から受信する知的ハッシュを評価するセキュリティサーバ１１０の処理力を利用する。したがって、この手法は、知的ハッシュデータベース１７４をクライアント１５０に送信することが実際的ではないか、または望ましくない計算環境によく適する。
【００２０】
さらに、この手法において知的ハッシュを使用することにより、多態性を含むように変更されたマルウェアエンティティの検出が可能であり、したがって、マルウェアの検出漏れ数を低減すると共に、各エンティティに複数のハッシュを生成する必要性をなくす。この「知的」検出により、さらに、２つの知的ハッシュの類似性を特定することが可能である。この類似値は、二進識別情報のみを提供する従来のハッシュ法とは対照的に、２つのエンティティの類似度を定量化する能力をユーザに提供する連続した、または割合に基づく値であり得る。例えば、ユーザは、２つのハッシュ間で一致するメタデータの割合を特定する類似値に基づいて、２つの知的ハッシュが９０％の類似性を有することを定量化可能であり得る。
【００２１】
ネットワーク１１４は、セキュリティサーバ１１０とクライアント１５０との通信路を表す。一実施形態では、ネットワーク１１４はインターネットである。ネットワーク１１４は、必ずしもインターネットの部分である必要はない専用または私設通信リンクを利用してもよい。一実施形態では、ネットワーク１１４は、標準通信技術および／またはプロトコルを使用する。したがって、ネットワーク１１４は、イーサネット、８０２．１１、デジタル総合サービス網（ＩＳＤＮ）、デジタル加入者回線（ＤＳＬ）、非同期転送モード（ＡＴＭ）等を使用するリンクを含み得る。同様に、ネットワーク１１４に使用されるネットワーク化プロトコルは、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ）、ファイル転送プロトコル（ＦＴＰ）等を含み得る。ネットワーク１１４を介して交換されるデータは、ハイパーテキストマークアップ言語（ＨＴＭＬ）、拡張可能マークアップ言語（ＸＭＬ）等を含む技術および／またはフォーマットを使用して表し得る。さらに、リンクのうちのすべてまたはいくつかは、セキュアソケットレイヤ（ＳＳＬ）、セキュアＨＴＴＰ、および／または仮想私設ネットワーク（ＶＰＮ）等の従来の暗号技術を使用して暗号化し得る。別の実施形態では、エンティティは、上述したものに代えて、または上述したものに加えて、カスタムかつ／または専用データ通信技術を使用し得る。
【００２２】
図２は、セキュリティサーバ１１０またはクライアント１５０としての使用に典型的なコンピュータ２００を示す高レベルブロック図である。バス２０４に結合されたプロセッサ２０２が示される。バス２０４には、メモリ２０６、記憶装置２０８、キーボード２１０、グラフィックスアダプタ２１２、ポインティングデバイス２１４、およびネットワークアダプタ２１６も結合される。ディスプレイ２１８が、グラフィックスアダプタ２１２に結合される。
【００２３】
プロセッサ２０２は、ＩＮＴＥＬｘ８６互換ＣＰＵ等の任意の汎用プロセッサであり得る。記憶装置２０８は、一実施形態では、ハードディスクドライブであるが、書き込み可能なコンパクトディスク（ＣＤ）もしくはＤＶＤ、または固体状態メモリ装置等のデータを記憶可能な他の任意の装置であってもよい。メモリ２０６は、例えば、ファームウェア、読み取り専用メモリ（ＲＯＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、および／またはＲＡＭであり得、プロセッサ２０２により使用される命令およびデータを保持する。ポインティングデバイス２１４は、マウス、トラックボール、または他の種類のポインティングデバイスであり得、キーボード２１０と組み合わせて使用されて、データをコンピュータ２００に入力する。グラフィックスアダプタ２１２は、画像および他の情報をディスプレイ２１８上に表示する。ネットワークアダプタ２１６は、コンピュータ２００をネットワーク１１４に結合する。
【００２４】
当分野において既知のように、コンピュータ２００は、コンピュータプログラムモジュールを実行するように構成される。本明細書において使用される用語「モジュール」は、指定された機能を提供するコンピュータプログラム論理および／またはデータを指す。モジュールは、ハードウェア、ファームウェア、および／またはソフトウェアに実装し得る。一実施形態では、モジュールは記憶装置２０８に記憶され、メモリ２０６内にロードされ、プロセッサ２０２により実行される。
【００２５】
図１のエンティティにより利用されるコンピュータ２００の種類は、実施形態およびエンティティにより利用される処理力に応じて様々であり得る。例えば、携帯電話であるクライアント１５０は通常、限られた処理力、小型ディスプレイ２１８を有し、ポインティングデバイス２１４がない場合がある。逆に、セキュリティサーバ１１０は、協働して本明細書において説明される機能を提供する複数のブレードサーバを含み得る。
【００２６】
図３は、一実施形態によるセキュリティサーバ１１０の詳細図を示す高レベルブロック図である。図３に示されるように、セキュリティサーバ１１０はいくつかのモジュールを含む。他の実施形態が、ここに示されるものとは異なり、かつ／または他のモジュールを有してもよいこと、および機能を異なる様式でモジュール間に分散させてもよいことを当業者は認識するであろう。さらに、セキュリティサーバ１１０に帰する機能を複数のサーバで実行してもよい。
【００２７】
評価報告モジュール３５２は、ネットワーク１１４を介してクライアント１５０と通信する。評価報告モジュール３５２は、疑いのあるエンティティハッシュをクライアント１５０から受信する。評価報告モジュール３５２は、疑いのあるエンティティハッシュ評価モジュール３４２と通信して、疑いのあるエンティティハッシュの評価結果を受信する。評価報告モジュール３５２はさらに、疑いのあるエンティティハッシュの評価結果をクライアント１５０に提供する。
【００２８】
知的ハッシュ生成モジュール３１２は、ソフトウェアアプリケーション等のエンティティを解析して、エンティティに関連付けられたメタデータを識別し、識別されたメタデータに基づいて知的ハッシュを生成する。知的ハッシュ生成モジュール３１２は、圧縮情報、頻繁に発生するメタ言語サブシーケンスセット、および固有の文字列セットを含む、エンティティから導出された異なる種類のメタデータに基づいて知的ハッシュを生成する。いくつかの実施形態では、知的ハッシュ生成モジュール３１２は、追加のメタデータおよびエンティティに関連付けられるか、またはエンティティから導出される他の情報に基づいて知的ハッシュを生成する。
【００２９】
知的ハッシュ生成モジュール３１２は、本明細書では「パッカー」と呼ばれる、エンティティを圧縮するために使用される１つまたは複数のアルゴリズムを指定する情報を含む、エンティティの圧縮情報を生成する。いくつかのマルウェアエンティティ（またはマルウェアエンティティファミリ）が同じパッカーを使用して圧縮されるため、この圧縮情報は、マルウェアの脅威を識別するのに役立つ。一実施形態では、知的ハッシュ生成モジュール３１２は、既知の圧縮解除アルゴリズムセット３０３をエンティティに適用することにより、エンティティを圧縮解除しようとする。知的ハッシュ生成モジュール３１２が、エンティティの圧縮解除に成功した場合、エンティティの圧縮情報は、エンティティの首尾よい圧縮解除に使用されたパッカーを含む。知的ハッシュ生成モジュール３１２がエンティティの圧縮解除に失敗した場合、エンティティの圧縮情報は、パッカーが未知であるという表示を含む。実施形態によれば、知的ハッシュ生成モジュール３１２により生成される圧縮情報は、圧縮解除前後のエンティティのサイズ、エミュレータまたはパッカーがエンティティの圧縮に使用されたか否か、およびエンティティに添付されたデータセットのセットのサイズを含むこともできる。
【００３０】
知的ハッシュ生成モジュール３１２は、エンティティに基づいてメタ言語命令をさらに生成する。メタ言語命令は、エンティティのプログラムコードの変換に基づいて生成される命令である。いくつかの実施形態では、知的ハッシュ生成モジュール３１２は、エンティティに基づいてメタ言語命令シーケンスを生成する。実施形態によれば、知的ハッシュモジュール３１２により生成されるメタ言語命令は、疑似コード命令等の高水準変換からアセンブリ言語命令までを範囲とし得る。知的ハッシュ生成モジュール３１２はさらに、メタ言語命令に基づいて、命令の各タイプの頻度等の情報を特定する。
【００３１】
一実施形態では、知的ハッシュ生成モジュール３１２は、エンティティ内で頻繁に発生するアセンブリ命令シーケンスのセットを特定する。知的ハッシュ生成モジュール３１２は、エンティティをアセンブリ言語命令シーケンスに変換する１つまたは複数の逆アセンブラプログラム３０９を備える。シーケンス内の各命令は、本明細書では、動作コードと呼ばれる。適した逆アセンブラプログラムとしては、Ｉｎｔｅｒａｃｔｉｖｅ  Ｄｉｓａｓｓｅｍｂｌｅｒ（ＩＤＡＰｒｏ）、Ｓｏｕｒｃｅｒ、およびＢＤＡＳＭを挙げることができるが、これらに限定されない。この変換に基づいて、知的ハッシュ生成モジュール３１２は、アセンブリ言語命令シーケンス内の命令の総数、アセンブリ言語命令シーケンス内の動作コードのブロック数、ブロック当たりの動作コードの平均数、およびアセンブリ言語命令シーケンス内に含まれる相互参照情報を含むメタデータを識別する。
【００３２】
知的ハッシュ生成モジュール３１２は、メタ言語命令シーケンスの最も頻繁に発生するサブシーケンスのセットを特定するためにメタ言語命令シーケンスを解析する。大半の実施形態では、セット内の各サブシーケンス内の命令数は固定サイズ（例えば、５つの命令）である。この固定サイズは１〜５０個の命令範囲であり得る。特定の実施形態では、各サブシーケンス内の命令数は５〜１０個の命令範囲であり得る。
【００３３】
知的ハッシュ生成モジュール３１２は、各サブシーケンスがメタ言語命令シーケンス内で発生する頻度を特定する。特定の実施形態では、知的ハッシュ生成モジュール３１２は、スライド窓法を使用して、各サブシーケンスがメタ言語命令シーケンス内で発生する頻度を計数する。スライド窓法では、固定サイズｎの窓が、シーケンスにわたって１命令または１動作コードずつ進められ、長さｎの各サブシーケンスが発生する回数を計数する。各サブシーケンスの頻度を計数する他の方法としては、文字列マッチングアルゴリズムおよびルックアップテーブルの構築が挙げられる。
【００３４】
知的ハッシュ生成モジュール３１２は、知的ハッシュ内に含めるために、メタ言語命令シーケンス内で最も頻繁に発生するサブシーケンスのセットを選択する。実施形態およびサブシーケンスの長さに従って、このサブシーケンスのセットは、１つのサブシーケンスからいくつかのサブシーケンスの範囲であり得る。通常、セットは５〜１５個のサブシーケンスの範囲になる。一実施形態では、知的ハッシュ生成モジュール３１２は、最高発生頻度を有するサブシーケンスのセットを選択する。他の実施形態では、知的ハッシュ生成モジュール３１２は、最高発生頻度を有するサブシーケンスのセットを選択する前に、マルウェアではない（すなわち、非有益な）エンティティを含む大きなエンティティの集合にわたって非常に高い頻度で発生するメタ言語命令サブシーケンスをフィルタリングして除去し得る。
【００３５】
知的ハッシュ生成モジュール３１２は、エンティティに基づいて固有の文字列をさらに識別する。これら固有の文字列は、エンティティがネットワーク、コンピュータプログラム、およびコンピュータシステムと通信するために使用される情報を表す。これら文字列は、通信に基づいてエンティティを特徴付けるために有用であり得る。固有の文字列は、エンティティが通信するライブラリまたはモジュールの名称、エンティティが通信するファイルの名称、ユニフォームリソースロケータ、インターネットプロトコルアドレス、電子メールアドレス、およびクラス識別子（ＣＬＳＩＤ）等のグローバル一意識別子（ＧＵＩＤ）を含み得る。
【００３６】
知的ハッシュ生成モジュール３１２は、エンティティが通信するライブラリまたはモジュールを示す拡張子（例えば、．ｄｌｌ拡張子は、ダイナミックリンクライブラリとの通信を示す）、エンティティが通信するファイルの名称を示す他のファイル拡張子（例えば、．ａｖｉ）、ユニフォームリソースロケータを示す情報、インターネットプロトコルアドレスを示す情報、電子メールアドレスを示す情報、およびグローバル一意識別子を示す情報等の構造化情報に基づいて固有の文字列を識別する。一実施形態では、知的ハッシュ生成モジュール３１２は、構造化情報を識別するように設計された通常の表現を使用して固有の文字列を識別する。
【００３７】
知的ハッシュ生成モジュール３１２は、知的ハッシュに含める固有の文字列セットを選択する。いくつかの実施形態では、知的ハッシュ生成モジュール３１２は、知的ハッシュに含めるものとして、すべての固有の文字列を選択する。他の実施形態では、知的ハッシュ生成モジュール３１２は、知的ハッシュの固定サイズ（例えば、７５０バイト）に基づいて固有の文字列の数を制限し得る。さらに、固有の文字列を、マルウェア内で頻繁に発生する固有の文字列および無害エンティティ（すなわち、マルウェアではないエンティティ）内で頻繁に発生する固有の文字列に基づいてフィルタリングまたは重み付けし得る。特定の実施形態では、頻繁に発生する文字列のセットが、無害エンティティのコーパスに基づいて生成され、固有の文字列は、頻繁に発生する文字列のセットを使用してフィルタリングされる。いくつかの実施形態では、固有の文字列には、マルウェアおよび／または無害エンティティの大きな集合での発生頻度に反比例するスコアが付与される。
【００３８】
知的ハッシュ生成モジュール３１２は、メタデータに基づいて知的ハッシュを生成する。知的ハッシュ生成モジュール３１２は、エンティティのメタデータを任意の方法で組み合わせて表現し、知的ハッシュを生成する。通常、知的ハッシュは、英数字データ文字列として表されることになる。実施形態によれば、知的ハッシュ生成モジュール３１２は、メタデータに関連付けられたスコア、確率値、または頻度等の数値を含む知的ハッシュを生成する。一実施形態では、知的ハッシュ生成モジュール３１２は、各サブシーケンスの発生頻度に関連して最も頻繁に発生するサブシーケンスのセットを含む知的ハッシュを生成する。いくつかの実施形態では、知的ハッシュ生成モジュール３１２は、固有の文字列のセットに関連付けられた重みまたは頻度値のセットを含む。
【００３９】
特定の実施形態では、ハッシュ生成モジュール３１２は、
42323|1-PECOMPACT-w|123423|32233|I=017253 B=297 M=31 X=1953 |A=1925 C=1154 D=51 G=2221 J=2246 L=789 M=3917 P=4180 R=44 S=125 T=780
V=5 PPPPP=171 LPPPM=111 PPPPG=110 MMMMM=91 PPPMP=88 PAAPA=73 APAAP=71
PPGCJ=69 JCJCJ=68 CJCJC=63 |4233|ntoskrnl.ex ntoskrnl.exe  
V2.3.9.0.Demo.CracKed.By is4q.1ih|user32.dll drv＼objfre＼i386＼driver.pdb  objfre＼i386＼driver.sys kernel32.dll ntdll.dll ws2_32.dll advapi32.dl
等の英数字文字列として知的ハッシュを表す。
【００４０】
上記例では、異なる種類のメタデータが、区切り文字「｜」で隔てられている。知的ハッシュ内の１番目の種類のメタデータは、圧縮解除前のエンティティのバイト単位でのサイズである。知的ハッシュ内の２番目の種類のメタデータは、エンティティの圧縮に使用されたパッカーを記述する。この例では、「ｗ」が、エミュレータが従来の圧縮アルゴリズムに代えて使用されたことを示すために使用される。知的ハッシュ内の３番目の種類のメタデータは、圧縮解除後のエンティティのサイズである。知的ハッシュ内の４番目の種類のメタデータは、ファイルに添付されたデータのサイズである。知的ハッシュ内の５番目の種類のメタデータは、アセンブリ言語命令シーケンスの合計命令計数（「Ｉ」で示される）、アセンブリ言語命令シーケンス内のブロック数（「Ｂ」で示される）、各ブロック内の命令の平均数（「Ｍ」で示される）、および相互参照数（「Ｘ」で示される）を含む。知的ハッシュ内の６番目の種類のメタデータは、異なる動作コードまたは命令およびアセンブリ言語命令シーケンス内のそれぞれの発生頻度を表す。この例では、「Ａ＝１９２５」は、命令Ａｄｄがアセンブリ言語命令シーケンス内で１９２５回発生したことを表す。知的ハッシュ内の７番目の種類のメタデータは、アセンブリ言語命令サブシーケンスのうちの最も頻繁に発生する１０個およびアセンブリ言語命令シーケンス内のそれぞれの発生頻度を表す。知的ハッシュ内の８番目のメタデータは、エンティティに基づいて識別された固有の文字列の数を表す。知的ハッシュ内の９番目のメタデータは、識別された固有の文字列を表す。
【００４１】
知的ハッシュデータベース１７４は、既知のマルウェアエンティティの包括的集合に基づいて生成された知的ハッシュセットを記憶する。知的ハッシュデータベース１７４は、知的ハッシュのセットを、ハッシュが表すエンティティに関連付けて記憶する。いくつかの実施形態では、知的ハッシュデータベース１７４は、マルウェアではないエンティティ（すなわち、無害エンティティ）に基づいて生成された知的ハッシュも記憶する。
【００４２】
疑いのあるエンティティハッシュ評価モジュール３４２は、クライアント１５０により報告された疑いのあるエンティティハッシュを評価して、疑いのあるエンティティがマルウェアであるエンティティを表すか否かを判断する。疑いのあるエンティティハッシュ評価モジュール３４２は、疑いのあるエンティティハッシュを知的ハッシュデータベース１７４内のハッシュと比較して、エンティティハッシュが知的ハッシュデータベース１７４内の知的ハッシュと同じまたは同様であるか否かを判断する。
【００４３】
一実施形態では、疑いのあるエンティティハッシュ評価モジュール３４２は、疑いのあるエンティティハッシュおよび知的ハッシュデータベース１７４内のハッシュ等の２つの知的ハッシュを比較する際、類似性スコアを生成する。類似性スコアは、ハッシュが同様であるか否かを示す二進スコアであってもよく、または類似性割合等の類似値の範囲を示す連続数スコアであってもよい。疑いのあるエンティティハッシュ評価モジュール３４２は、２つの知的ハッシュ内のメタデータに基づいて類似性スコアを生成する。一実施形態では、疑いのあるエンティティハッシュ評価モジュール３４２は、ユークリッド距離関数または余弦距離関数（ｃｏｓｉｎｅ  ｄｉｓｔａｎｃｅ  ｆｕｎｃｔｉｏｎ）等のすべてのメタデータの１回での比較を提供する関数に基づいて、類似性スコアを生成する。いくつかの実施形態では、疑いのあるエンティティハッシュ評価モジュール３４２は、決定木アルゴリズム等の異なる種類のメタデータの一連の比較に基づいて、類似性スコアを生成する。いくつかの実施形態では、疑いのあるエンティティハッシュ評価モジュール３４２は、ニューラルネットワークまたはブースティング等の機械学習法を使用して、類似性スコアを生成し得る。
【００４４】
特定の実施形態では、疑いのあるエンティティハッシュ評価モジュール３４２は、異なる種類のメタデータ値の所定順の比較を通して、類似性スコアを生成する。この実施形態では、疑いのあるエンティティハッシュ評価モジュール３４２は、最も頻繁に発生するアセンブリ言語サブシーケンスのセット、２つの知的ハッシュ内で示される最も頻繁に発生するアセンブリ言語サブシーケンスのセットの頻度、知的ハッシュ内で示されるパッカー、および知的ハッシュ内で示される固有の文字列の順に比較する。一実施形態では、疑いのあるエンティティハッシュ評価モジュール３４２は、閾値を使用して、比較の次のステップに進むべきか否かを判断する。例えば、疑いのあるエンティティハッシュ評価モジュール３４２は、最も頻繁に発生するアセンブリ言語サブシーケンスのセットの一致率が８０％未満であることに基づいて、２つのハッシュが類似しないと判断し得る。
【００４５】
疑いのあるエンティティハッシュ評価モジュール３４２は、知的ハッシュデータベース１７４内で最高類似性スコアを有する知的ハッシュおよびその知的ハッシュに関連付けられたエンティティを特定する。疑いのあるエンティティハッシュ評価モジュール３４２は、評価の結果を評価報告モジュール３５２に伝達し、その結果は、最高スコアの知的ハッシュに関連付けられたエンティティ、最も高い類似性スコアが類似性カットオフ値を超えるか否か、および最高スコアの知的ハッシュに関連付けられたエンティティがマルウェアエンティティであるか、それとも無害エンティティであるかを含む。いくつかの実施形態では、疑いのあるエンティティハッシュ評価モジュール３４２は、さらに評価するために、評価の結果をセキュリティサーバ１１０の管理者に報告し得る。
【００４６】
図４は、一実施形態よるクライアント１５０のセキュリティモジュール１１６の詳細図を示す高レベルブロック図である。いくつかの実施形態では、セキュリティモジュール１１６は、クライアント１５０で実行中のオペレーティングシステム内に組み込まれるが、他の実施形態では、セキュリティモジュール１１６は、独立したエンティティまたは別の製品の部分である。図４に示されるように、セキュリティモジュール１１６は複数のモジュールを含む。セキュリティモジュール１１６の他の実施形態が、ここで説明されるものと異なり、かつ／または他のモジュールを有してもよいこと、および機能を異なる様式でモジュールに分散させてもよいことを当業者は認識するであろう。
【００４７】
疑いのあるエンティティ検出モジュール４５０は、疑いのあるエンティティを検出する。一実施形態では、疑いのあるエンティティ検出モジュール４５０は、クライアント１５０に関連付けられた記憶装置２０８またはメモリ２０６をスキャンして、記憶装置２０８またはメモリ２０６にインストールまたは記憶された疑いのあるエンティティを検出する。別の実施形態では、疑いのあるエンティティ検出モジュール４５０は、ユーザがエンティティにアクセスした場合、またはエンティティを実行した場合のみ、疑いのあるエンティティを検出することができる。
【００４８】
実施形態によれば、疑いのあるエンティティ検出モジュール４５０は、異なる方法を使用して疑いのあるエンティティを検出することができる。一実施形態では、疑いのあるエンティティ検出モジュール４５０は、以前に評価されているか、または他の様式で無害であると判断されているエンティティのリストにアクセスすることにより、エンティティが未知であることを識別し得る。別の実施形態では、疑いのあるエンティティ検出モジュール４５０は、マルウェア署名またはハッシュのセットを使用してクライアント１５０をスキャンし、疑いのあるエンティティを検出し得る。いくつかの実施形態では、疑いのあるエンティティ検出モジュール４５０は、クライアント１５０でのエンティティの挙動を監視して、何らかの挙動がマルウェア指紋セット内に指定された挙動を満たすか否かを判断する。
【００４９】
エンティティが疑いのあるエンティティであると判断された場合、疑いのあるエンティティ検出モジュール４５０の実施形態は、疑いのあるエンティティを隔離して、エンティティがクライアント１５０にダメージを与えるのを阻止する。疑いのあるエンティティは、例えば、そのエンティティの実行を禁止するようにクライアント１５０を構成することにより、かつ／または別の動作を行うことにより、疑いのあるエンティティ内のどの悪意のあるコードも被害を生じさせないように隔離し得る。
【００５０】
疑いのあるエンティティハッシュ生成モジュール４７０は、疑いのあるエンティティの知的ハッシュ（すなわち、疑いのあるエンティティハッシュ）を生成するように機能する。疑いのあるエンティティハッシュ生成モジュール４７０は、知的ハッシュ生成モジュール３１２を参照して概説した方法に従って導出されたメタデータを含む疑いのあるエンティティハッシュを生成する。疑いのあるエンティティハッシュ生成モジュール４７０は、生成された疑いのあるエンティティハッシュを疑いのあるエンティティハッシュ報告モジュール４６０に伝達する。
【００５１】
疑いのあるエンティティハッシュ報告モジュール４６０は、ネットワーク１１４を介してセキュリティサーバ１１０と通信する。疑いのあるエンティティハッシュ報告モジュール４６０は、疑いのあるエンティティハッシュをセキュリティサーバ１１０に報告する。疑いのあるエンティティハッシュ報告モジュール４６０は、セキュリティサーバ１１０から疑いのあるエンティティハッシュの評価結果を受信する。疑いのあるエンティティハッシュの評価結果は、最高スコアの知的ハッシュに関連付けられたエンティティ、最高類似性スコアが類似性カットオフ値を超えるか否か、および最高スコアの知的ハッシュに関連付けられたエンティティがマルウェアエンティティであるか、それとも無害エンティティであるかを含む。評価により、署名検出イベントがマルウェアではない（すなわち、最高スコアの知的ハッシュが類似性カットオフ値を超え、マルウェアエンティティに関連付けられない）ことが示される場合、疑いのあるエンティティハッシュ報告モジュール４６０は、署名検出イベントを抑制（例えば、無視）する命令を疑いのあるエンティティ検出モジュール４５０に伝達する。したがって、疑いのあるエンティティハッシュ報告モジュール４６０は、隔離からエンティティを解放し、かつ／またはエンティティが疑いがあるものとして宣言された際に行われた他の動作を取り消す。
【００５２】
疑いのあるエンティティハッシュ評価により、エンティティがマルウェアである（すなわち、最高スコアの知的ハッシュが類似性カットオフ値を超え、マルウェアエンティティに関連付けられる）ことが示される場合、疑いのあるエンティティハッシュ報告モジュール４６０は、例えば、疑いのあるエンティティを削除し、かつ／またはクライアント１５０の破損したエンティティを修正することにより、クライアント１５０を修復する。疑いのあるエンティティハッシュ報告モジュール４６０は、クライアント１５０のユーザへの警告および疑いのあるエンティティのログ記録等の追加の動作を実行し得る。
【００５３】
図５は、一実施形態により、知的ハッシュを生成するためにセキュリティサーバ１１０が実行するステップを示すフローチャートである。他の実施形態は、示されるステップを異なる順に実行し、かつ／または異なるもしくは追加のステップを実行する。さらに、ステップのうちのいくつかは、セキュリティサーバ１１０以外のエンジンまたはモジュールにより実行してもよい。
【００５４】
セキュリティサーバ１１０は、ソフトウェアアプリケーションまたはファイル等のエンティティを識別する（５１２）。セキュリティサーバ１１０は、圧縮解除アルゴリズムセット３０３をエンティティに適用することにより、エンティティの圧縮情報を生成する（５１４）。セキュリティサーバ１１０は、１つまたは複数の逆アセンブラアルゴリズム３０９をエンティティに適用することにより、アセンブリ言語命令シーケンスを生成する（５１６）。セキュリティサーバ１１０は、アセンブリ言語命令シーケンスの最も頻繁に発生するサブシーケンスのセットを特定する（５１８）。セキュリティサーバ１１０は、エンティティに基づいて固有の文字列のセットを識別する（５２０）。セキュリティサーバ１１０は、圧縮情報、アセンブリ言語命令シーケンスの頻繁に発生するサブシーケンスのセット、および固有の文字列のセットに基づいてエンティティの知的ハッシュを生成する（５２２）。
【００５５】
図６は、一実施形態により、疑いのあるエンティティハッシュの評価をクライアント１５０に提供するためにセキュリティサーバ１１０が実行するステップを示すフローチャートである。他の実施形態は、示されるステップを異なる順に実行し、かつ／または異なるもしくは追加のステップを実行する。さらに、ステップのうちのいくつかは、セキュリティサーバ１１０以外のエンジンまたはモジュールにより実行してもよい。
【００５６】
セキュリティサーバ１１０は、知的ハッシュデータベース１７４を生成する（６１２）。セキュリティサーバ１１０は、クライアント１５０から疑いのあるエンティティハッシュを受信する（６１４）。セキュリティサーバ１１０は、疑いのあるエンティティハッシュが知的ハッシュデータベース１７４内のハッシュに該当するか否かを評価する（６１６）。セキュリティサーバ１１０は、この評価の結果をクライアント１５０に提供する（６１８）。
【００５７】
図７は、一実施形態による、疑いのあるエンティティを検出し評価するためにクライアント１５０上のセキュリティモジュール１１６が実行するステップを示すフローチャートである。他の実施形態は、示されるステップを異なる順に実行し、かつ／または異なるもしくは追加のステップを実行する。さらに、ステップのうちのいくつかは、セキュリティモジュール１１６以外のエンジンまたはモジュールにより実行してもよい。
【００５８】
セキュリティモジュール１１６は、疑いのあるエンティティを識別する（７１２）。セキュリティモジュール１１６は、疑いのあるエンティティハッシュを生成する（７１４）。セキュリティモジュール１１６は、疑いのあるエンティティハッシュをセキュリティサーバ１１０に送信する（６１６）。セキュリティモジュール１１６は、セキュリティサーバ１１０から疑いのあるエンティティハッシュの評価を受信し（６１８）、評価は、疑いのあるエンティティハッシュが、マルウェアエンティティの知的ハッシュと高い類似性を有するか、それとも無害エンティティの知的ハッシュと高い類似性を有するかを示す。７２０において、評価により、疑いのあるエンティティが無害であること、すなわち、既知のマルウェアに類似しないことが示される場合、セキュリティモジュール１１６は、疑いのあるエンティティを識別すること（７１２）に続く。７２０において、評価により、疑いのあるエンティティがマルウェアであることが示される場合、セキュリティモジュール１１６は、疑いのあるエンティティをクライアントから削除するなどのクライアント１５０の修復を実行する（７２４）。
【００５９】
上記説明は、特定の実施形態の動作を説明するために含まれており、本発明の限定を意味しない。本発明の範囲は、以下の特許請求の範囲によってのみ限定されるべきである。上記考察から、本発明の主旨および範囲に包含される多くの変形が当業者には明らかとなろう。
【図１】
0005511097.tif 000002
【図２】
0005511097.tif 000003
【図３】
0005511097.tif 000004
【図４】
0005511097.tif 000005
【図５】
0005511097.tif 000006
【図６】
0005511097.tif 000007
【図７】
0005511097.tif 000008