(57)【要約】  いくつかの実施形態では、アンチマルウェアシステムは、コンパイラおよび他の多相性によって導入される差などの、悪意のないデータオブジェクト間の良性の差を反映する。ターゲットオブジェクトは複数のコードブロックに分離され、それぞれのコードブロックについてハッシュが計算される。得られるターゲットハッシュのセットは、その後、ホワイトリスト化済みオブジェクトから抽出されるコードブロックに対応するハッシュのデータベースと比較される。ターゲットオブジェクトは、ホワイトリスト化済みオブジェクトと共通にかなりの数のハッシュを有する場合、ホワイトリスト化されている（トラステッドである、悪意がない）としてラベル付けされることができる。知られているホワイトリスト化済みオブジェクトとわずかに異なるオブジェクトは、ホワイトリスト化ステータスを依然として受信することができる。別個のオブジェクトのハッシュのセット間に、ある程度の不一致を許可することによって、本発明のいくつかの実施形態は、安全性を許容できないほどに減少させることなく、ホワイトリスト化の効率を増加させる。
2014534531.tif 000002
【特許請求の範囲】
【請求項１】
クライアントコンピュータシステムにおいて、前記クライアントコンピュータシステムの複数のターゲットオブジェクトの初期マルウェアスキャンを実施するステップと、
前記ターゲットオブジェクトは悪意があると疑われるという、前記初期マルウェアスキャンによる仮の判定に応答するステップであって、
前記クライアントコンピュータシステムにおいて、前記ターゲットオブジェクトの複数のターゲットハッシュを生成するステップであって、それぞれのターゲットハッシュは前記ターゲットオブジェクトの別個のコードブロックを示し、それぞれの別個のコードブロックは前記ターゲットオブジェクトのプロセッサ命令のシーケンスを含む、生成するステップと、
ワイドエリアネットワークを通じて前記クライアントコンピュータシステムから前記クライアントコンピュータシステムに接続されるサーバコンピュータシステムへ前記複数のターゲットハッシュを送信するステップと、
前記クライアントコンピュータシステムにおいて前記サーバコンピュータシステムから前記ターゲットオブジェクトは悪意があるかどうかについてのサーバサイド指示子を受信するステップと
を含むステップと
を含む方法であって、前記サーバサイド指示子は、前記サーバコンピュータシステムによって生成され、該生成は、
前記複数のターゲットハッシュの少なくとも１つのターゲットハッシュについて、該ターゲットハッシュに従って、ホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出し、前記複数のターゲットハッシュが前記複数の参照ハッシュと同一でないとき、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを求めること、および、
前記類似性スコアが所定の閾値を超えるとき、前記ターゲットオブジェクトを悪意がないとして指定すること
による、方法。
【請求項２】
請求項１に記載の方法であって、前記コンピュータサーバシステムによる前記サーバサイド指示子の生成は、
前記類似性スコアが前記所定の閾値を超えないときに、前記ターゲットオブジェクトの前記複数のターゲットハッシュからのクリーンハッシュのデータベースに現れる全てのターゲットハッシュをフィルタリングすることによって前記ターゲットオブジェクトのターゲットハッシュのフィルタリング済みセットを生成するステップと、
ターゲットハッシュの前記フィルタリング済みセットを、マルウェア固有のマルウェア識別ハッシュのデータベースと比較するステップと
を含む、方法。
【請求項３】
請求項１に記載の方法であって、前記コンピュータサーバシステムによる前記サーバサイド指示子の生成は、
前記類似性スコアが前記所定の閾値を超えないときに、前記ターゲットオブジェクトの前記複数のターゲットハッシュからのクリーンハッシュのデータベースに現れる全てのターゲットハッシュをフィルタリングすることによって前記ターゲットオブジェクトのターゲットハッシュのフィルタリング済みセットを生成するステップと、
前記サーバコンピュータシステムに接続される複数の別個のクライアントコンピュータシステムによって、ターゲットハッシュの前記フィルタリング済みセットを、所定の最近の期間内にレポートされる未知オブジェクトに固有のアウトブレーク検出ハッシュのデータベースと比較するステップと
を含む、方法。
【請求項４】
サーバコンピュータシステムにおいて、ワイドエリアネットワークを通じて、前記サーバコンピュータシステムに接続されるクライアントコンピュータシステムのターゲットオブジェクトの複数のターゲットハッシュを受信するステップであって、前記複数のターゲットハッシュは、前記ターゲットオブジェクトは悪意があると疑われるという、前記クライアントコンピュータシステムによる仮の判定に応答して、前記クライアントコンピュータシステムにおいて生成され、前記仮の判定は、前記クライアントコンピュータシステムの複数のターゲットオブジェクトの初期マルウェアスキャンから得られる、受信するステップと、
前記サーバコンピュータシステムにおいて前記ターゲットオブジェクトは悪意があるかどうかについてのサーバサイド指示子を生成するステップであって、該生成は、
前記複数のターゲットハッシュの少なくとも１つのターゲットハッシュについて、該ターゲットハッシュに従ってホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出し、前記複数のターゲットハッシュが前記複数の参照ハッシュと同一でないとき、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを求めること、および、
前記類似性スコアが所定の閾値を超えるとき、前記ターゲットオブジェクトを悪意がないとして指定すること
による、生成するステップと、
前記ターゲットオブジェクトは悪意があるかどうかについての前記サーバサイド指示子を前記クライアントコンピュータシステムに送信するステップと
を含む方法。
【請求項５】
請求項４に記載の方法であって、前記コンピュータサーバシステムによる前記サーバサイド指示子の生成は、
前記類似性スコアが前記所定の閾値を超えないときに、前記ターゲットオブジェクトの前記複数のターゲットハッシュからのクリーンハッシュのデータベースに現れる全てのターゲットハッシュをフィルタリングすることによって前記ターゲットオブジェクトのターゲットハッシュのフィルタリング済みセットを生成するステップと、
ターゲットハッシュの前記フィルタリング済みセットを、マルウェア固有のマルウェア識別ハッシュのデータベースと比較するステップと
を含む、方法。
【請求項６】
請求項４に記載の方法であって、前記コンピュータサーバシステムによる前記サーバサイド指示子の生成は、
前記類似性スコアが前記所定の閾値を超えないときに、前記ターゲットオブジェクトの前記複数のターゲットハッシュからのクリーンハッシュのデータベースに現れる全てのターゲットハッシュをフィルタリングすることによって前記ターゲットオブジェクトのターゲットハッシュのフィルタリング済みセットを生成するステップと、
前記サーバコンピュータシステムに接続される複数の別個のクライアントコンピュータシステムによって、ターゲットハッシュの前記フィルタリング済みセットを、所定の最近の期間内にレポートされる未知オブジェクトに固有のアウトブレーク検出ハッシュのデータベースと比較するステップと
を含む、方法。
【請求項７】
サーバコンピュータシステムにおいて、ターゲットオブジェクトの複数のターゲットハッシュを受信するステップであって、それぞれのターゲットハッシュは前記ターゲットオブジェクトの別個のコードブロックを示し、それぞれの別個のコードブロックは前記ターゲットオブジェクトのプロセッサ命令のシーケンスを含む、受信するステップと、
前記複数のターゲットハッシュの少なくとも１つのターゲットハッシュについて、前記サーバコンピュータシステムを用いて、
前記ターゲットハッシュに従って、ホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出し、
前記複数のターゲットハッシュが前記複数の参照ハッシュと同一でないとき、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを求める、
ステップと、
前記類似性スコアが所定の閾値を超えるとき、前記サーバコンピュータシステムを用いて前記ターゲットオブジェクトを悪意がないとしてラベル付けするステップと
を含む方法。
【請求項８】
請求項７に記載の方法であって、前記ターゲットハッシュは、オペコードパターンのハッシュを含み、前記オペコードパターンは、命令指示子のシーケンスを含み、それぞれの命令指示子は、前記別個のコードブロックのプロセッサ命令を示す、方法。
【請求項９】
請求項７に記載の方法であって、前記プロセッサ命令のシーケンスは、５と５０との間の連続的なプロセッサ命令を含む、方法。
【請求項１０】
請求項９に記載の方法であって、前記プロセッサ命令のシーケンスは、５と１５との間の連続的なプロセッサ命令を含む、方法。
【請求項１１】
請求項７に記載の方法であって、前記プロセッサ命令のシーケンスは、ＣＡＬＬ命令で開始する、方法。
【請求項１２】
請求項７に記載の方法であって、
正規化されたターゲットオブジェクトを生成するために、前記ターゲットオブジェクトに関してコード正規化プロシージャを実施するステップであって、それぞれの別個のコードブロックは、前記正規化されたターゲットオブジェクトのコンピュータ命令のシーケンスを含む、実施するステップと、
前記ターゲットハッシュを生成するために、前記別個のコードブロックにハッシュ関数を適用するステップと
をさらに含む方法。
【請求項１３】
請求項７に記載の方法であって、前記類似性スコアは、
Ｃ／ｍａｘ（ＮＴ，ＮＲ）
の関数として求められ、
Ｃは、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数を示し、ＮＴおよびＮＲは、前記複数のターゲットハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）および前記複数の参照ハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）をそれぞれ示す、方法。
【請求項１４】
請求項７に記載の方法であって、前記類似性スコアは、
Ｃ／（ＮＴ＋ＮＲ）
の関数として求められ、
Ｃは、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数を示し、ＮＴおよびＮＲは、前記複数のターゲットハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）および前記複数の参照ハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）をそれぞれ示す、方法。
【請求項１５】
請求項７に記載の方法であって、前記類似性スコアは、
Ｃ／ＮＴ＋Ｃ／ＮＲ
の関数として求められ、
Ｃは、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数を示し、ＮＴおよびＮＲは、前記複数のターゲットハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）および前記複数の参照ハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）をそれぞれ示す、方法。
【請求項１６】
請求項７に記載の方法であって、前記ターゲットオブジェクトはコンピュータファイルを含む、方法。
【請求項１７】
請求項７に記載の方法であって、前記ターゲットオブジェクトはコンピュータプロセスを含む、方法。
【請求項１８】
少なくとも１つのプロセッサを備えるコンピュータシステムであって、前記少なくとも１つのプロセッサは、
複数のターゲットハッシュであって、それぞれのターゲットハッシュはターゲットオブジェクトの別個のコードブロックを示し、それぞれの別個のコードブロックは前記ターゲットオブジェクトのプロセッサ命令のシーケンスを含む、複数のターゲットハッシュを受信するステップと、
前記複数のターゲットハッシュの少なくとも１つのターゲットハッシュについて、
該ターゲットハッシュに従って、ホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出し、
前記複数のターゲットハッシュが前記複数の参照ハッシュと同一でないとき、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを求める、
ステップと、
前記類似性スコアが所定の閾値を超えるとき、前記ターゲットオブジェクトを悪意がないとしてラベル付けするステップと
を実施するようにプログラムされる、システム。
【請求項１９】
請求項１８に記載のシステムであって、前記ターゲットハッシュは、オペコードパターンのハッシュを含み、前記オペコードパターンは、命令指示子のシーケンスを含み、それぞれの命令指示子は、前記別個のコードブロックのプロセッサ命令を示す、システム。
【請求項２０】
請求項１８に記載のシステムであって、前記プロセッサ命令のシーケンスは、５と５０との間の連続的なプロセッサ命令を含む、システム。
【請求項２１】
請求項２０に記載のシステムであって、前記プロセッサ命令のシーケンスは、５と１５との間の連続的なプロセッサ命令を含む、システム。
【請求項２２】
請求項１８に記載のシステムであって、前記プロセッサ命令のシーケンスは、ＣＡＬＬ命令で開始する、システム。
【請求項２３】
請求項１８に記載のシステムであって、前記プロセッサは、
正規化されたターゲットオブジェクトを生成するために、前記ターゲットオブジェクトに関してコード正規化プロシージャを実施し、それぞれの別個のコードブロックは、前記正規化されたターゲットオブジェクトのコンピュータ命令のシーケンスを含み、
ターゲットハッシュを生成するために、前記別個のコードブロックにハッシュ関数を適用する
ようにさらにプログラムされる、システム。
【請求項２４】
請求項１８に記載のシステムであって、前記類似性スコアは、
Ｃ／ｍａｘ（ＮＴ，ＮＲ）
の関数として求められ、
Ｃは、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数を示し、ＮＴおよびＮＲは、前記複数のターゲットハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）および前記複数の参照ハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）をそれぞれ示す、システム。
【請求項２５】
請求項１８に記載のシステムであって、前記類似性スコアは、
Ｃ／（ＮＴ＋ＮＲ）
の関数として求められ、
Ｃは、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数を示し、一方、ＮＴおよびＮＲは、前記複数のターゲットハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）および前記複数の参照ハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）をそれぞれ示す、システム。
【請求項２６】
請求項１８に記載のシステムであって、前記類似性スコアは、
Ｃ／ＮＴ＋Ｃ／ＮＲ
の関数として求められ、
Ｃは、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数を示し、ＮＴおよびＮＲは、前記複数のターゲットハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）および前記複数の参照ハッシュの濃度（ｃａｒｄｉｎａｌｉｔｙ）をそれぞれ示す、システム。
【請求項２７】
請求項１８に記載のシステムであって、前記ターゲットオブジェクトはコンピュータファイルを含む、システム。
【請求項２８】
請求項１８に記載のシステムであって、前記ターゲットオブジェクトはコンピュータプロセスを含む、システム。
【請求項２９】
複数のターゲットハッシュであって、それぞれのターゲットハッシュはターゲットオブジェクトの別個のコードブロックを示し、それぞれの別個のコードブロックは前記ターゲットオブジェクトのプロセッサ命令のシーケンスを含む、複数のターゲットハッシュを受信する手段と、
前記複数のターゲットハッシュの選択されたターゲットハッシュに従って、ホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出す手段と、
前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを求める手段と、
前記類似性スコアに従って、前記ターゲットオブジェクトを悪意がないとしてラベル付けする手段と
を備えるコンピュータシステム。
【請求項３０】
命令をエンコードする非一時的なコンピュータ可読記憶媒体であって、前記命令は、プロセッサ上で実行されると、前記プロセッサに、
複数のターゲットハッシュであって、それぞれのターゲットハッシュはターゲットオブジェクトの別個のコードブロックを示し、それぞれの別個のコードブロックは前記ターゲットオブジェクトのプロセッサ命令のシーケンスを含む、複数のターゲットハッシュを受信するステップと、
前記複数のターゲットハッシュの少なくとも１つのターゲットハッシュについて、
該ターゲットハッシュに従って、ホワイトリスト化済みオブジェクトのセットから選択される、参照オブジェクトの複数の参照ハッシュを取出し、
前記複数のターゲットハッシュが前記複数の参照ハッシュと同一でないとき、前記複数のターゲットハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを求める
ステップと、
前記類似性スコアが所定の閾値を超えるとき、前記ターゲットオブジェクトを悪意がないとしてラベル付けするステップと
を実施させる、記憶媒体。
【請求項３１】
サーバコンピュータシステムにおいて、複数のターゲットハッシュを受信するステップであって、それぞれのターゲットハッシュは、前記サーバコンピュータシステムに接続されるクライアントコンピュータシステムのターゲットオブジェクトの別個のデータブロックを示し、それぞれの別個のコードブロックは前記ターゲットオブジェクトのプロセッサ命令のシーケンスを含む、受信するステップと、
前記複数のターゲットハッシュを受信することに応答して、前記サーバコンピュータシステムを用いてホワイトリスト化済みデータオブジェクトを示す複数の参照ハッシュを取出すステップと、
前記複数のターゲットハッシュが前記複数の参照ハッシュと同一でないと判定すること、および、前記複数のターゲットハッシュおよび前記複数の参照ハッシュが大多数のアイテムを共有すると判定することに応答して、前記ターゲットオブジェクトを悪意がないとしてラベル付けするステップと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本出願は、２０１１年２月１１日に出願された米国仮特許出願第６１／５５４，８５９号の出願日の利益を主張し、その米国仮特許出願は、ここに参照によりその全体が組込まれる。
【０００２】
[0002]本発明は、悪意のあるソフトウェアからユーザを保護するためのシステムおよび方法に関し、特に、ソフトウェアホワイトリスト化に関する。
【背景技術】
【０００３】
[0003]マルウェアとしても知られる悪意のあるソフトウェアは、世界中で多数のコンピュータシステムに影響を及ぼす。コンピュータウイルス、ワーム、トロイの木馬、およびルートキットなどのその多くの形態で、マルウェアは、何百万のコンピュータユーザに深刻なリスクを呈し、とりわけ、データの喪失、アイデンティティ窃盗、および生産性損失に対してそれらのユーザを脆弱にさせる。
【０００４】
[0004]マルウェアスキャニングに専用のコンピュータプログラムは、ユーザコンピュータシステムからマルウェアを検出し削除する種々の方法を使用する。こうした方法は、挙動ベース技法およびコンテンツベース技法を含む。挙動ベース方法は、疑わしいプログラムが隔離された仮想環境で実行されることを可能にすること、悪意のある挙動を識別すること、および、問題のあるプログラムの実行を阻止することを含むことができる。コンテンツベース方法では、疑わしいファイルのコンテンツは、一般に、知られているマルウェア識別シグネチャと比較される。知られているマルウェアシグネチャが疑わしいファイル内で見出される場合、ファイルは、悪意があるとしてラベル付けされる。
【０００５】
[0005]マルウェアを除去しようと努める他の方法は、アプリケーションホワイトリスト化を使用し、アプリケーションホワイトリスト化は、ユーザのコンピュータシステム上で許可されるソフトウェアおよび挙動のリストを維持すること、および、全ての他のアプリケーションが実行されることを阻止することを含むことができる。こうした方法は、多相性マルウェアに対して特に効果的であり、多相性マルウェアは、そのマルウェア識別シグネチャをランダムに改変することができ、従来のコンテンツベース方法を無効にする。
【０００６】
[0006]いくつかのホワイトリスト化アプリケーションは、ハッシュ値を使用して、ホワイトリスト化済みソフトウェアを識別し、ホワイトリスト化済みソフトウェアの完全性を確保する。暗号学的ハッシュが、ホワイトリスト化済みアプリケーションと提携されるファイルまたはファイルのグループのために生成され、参照のために記憶されることができる。それぞれのアプリケーションは、その後、記憶されたハッシュを、ランタイムで生成される新しいハッシュと比較することによって認証される。
【０００７】
[0007]アンチマルウェアホワイトリスト化方法の性能は、効率的かつ柔軟にホワイトリストデータベースを維持し更新する能力に依存しうる。
【発明の概要】
【０００８】
[0008]一態様によれば、方法は、クライアントコンピュータシステムにおいて、クライアントコンピュータシステムの複数のターゲットオブジェクトの初期マルウェアスキャンを実施すること、ターゲットオブジェクトが、悪意があることが疑われるという、初期マルウェアスキャンによる仮の判定に応答して、クライアントコンピュータシステムにおいて、ターゲットオブジェクトの複数のターゲットハッシュを生成することであって、それぞれのターゲットハッシュはターゲットオブジェクトの別個のコードブロックを示し、それぞれの別個のコードブロックはターゲットオブジェクトのプロセッサ命令のシーケンスからなる、生成すること、ワイドエリアネットワークを通じてクライアントコンピュータシステムからクライアントコンピュータシステムに接続されるサーバコンピュータシステムへ複数のターゲットハッシュを送信すること、および、クライアントコンピュータシステムにおいてサーバコンピュータシステムからターゲットオブジェクトが、悪意があるかどうかについてのサーバサイド指示子を受信することを含む。サーバサイド指示子は、サーバコンピュータシステムによって、複数のターゲットハッシュの少なくとも１つのターゲットハッシュについて、ターゲットハッシュに従ってホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出し、複数のターゲットハッシュが複数の参照ハッシュと同一でないとき、複数のターゲットハッシュと複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを決定すること、および、類似性スコアが所定の閾値を超えるとき、ターゲットオブジェクトを悪意がないとして指定することによって生成される。
【０００９】
[0009]別の態様によれば、方法は、サーバコンピュータシステムにおいて、ワイドエリアネットワークを通じて、サーバコンピュータシステムに接続されるクライアントコンピュータシステムのターゲットオブジェクトの複数のターゲットハッシュを受信すること、サーバコンピュータシステムにおいて、ターゲットオブジェクトが悪意があるかどうかについてのサーバサイド指示子を生成すること、および、ターゲットオブジェクトが悪意があるかどうかについてのサーバサイド指示子をクライアントコンピュータシステムに送信することを含む。複数のターゲットハッシュは、ターゲットオブジェクトが悪意があることが疑われるというクライアントコンピュータシステムによる仮の判定に応答してクライアントコンピュータシステムにおいて生成され、仮の判定は、クライアントコンピュータシステムの複数のターゲットオブジェクトの初期マルウェアスキャンから得られる。サーバコンピュータシステムにおいてターゲットオブジェクトが悪意があるかどうかについてのサーバサイド指示子を生成することは、複数のターゲットハッシュの少なくとも１つのターゲットハッシュについて、ターゲットハッシュに従ってホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出し、複数のターゲットハッシュが複数の参照ハッシュと同一でないとき、複数のターゲットハッシュと複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを決定すること、および、類似性スコアが所定の閾値を超えるとき、ターゲットオブジェクトを悪意がないとして指定することを含む。
【００１０】
[0010]別の態様によれば、方法は、サーバコンピュータシステムにおいて、ターゲットオブジェクトの複数のターゲットハッシュを受信することであって、それぞれのターゲットハッシュはターゲットオブジェクトの別個のコードブロックを示し、それぞれの別個のコードブロックはターゲットオブジェクトのプロセッサ命令のシーケンスからなる、受信すること、複数のターゲットハッシュの少なくとも１つのターゲットハッシュについて、サーバコンピュータシステムを使用することであって、それにより、ターゲットハッシュに従ってホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出し、複数のターゲットハッシュが複数の参照ハッシュと同一でないとき、複数のターゲットハッシュと複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを決定する、使用すること、および、類似性スコアが所定の閾値を超えるとき、サーバコンピュータシステムを使用することであって、それにより、ターゲットオブジェクトを悪意がないとしてラベル付けする、使用することを含む。
【００１１】
[0011]別の態様によれば、少なくとも１つのプロセッサを備えるコンピュータシステムであって、少なくとも１つのプロセッサは、複数のターゲットハッシュであって、それぞれのターゲットハッシュはターゲットオブジェクトの別個のコードブロックを示し、それぞれの別個のコードブロックはターゲットオブジェクトのプロセッサ命令のシーケンスからなる、複数のターゲットハッシュを受信し、複数のターゲットハッシュの少なくとも１つのターゲットハッシュについて、ターゲットハッシュに従ってホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出し、複数のターゲットハッシュが複数の参照ハッシュと同一でないとき、複数のターゲットハッシュと複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを決定し、類似性スコアが所定の閾値を超えるとき、ターゲットオブジェクトを悪意がないとしてラベル付けするようにプログラムされる。
【００１２】
[0012]別の態様によれば、非一時的なコンピュータ可読記憶媒体であって、命令をエンコードし、その命令は、プロセッサ上で実行されると、プロセッサに、複数のターゲットハッシュであって、それぞれのターゲットハッシュはターゲットオブジェクトの別個のコードブロックを示し、それぞれの別個のコードブロックはターゲットオブジェクトのプロセッサ命令のシーケンスからなる、複数のターゲットハッシュを受信するステップと、複数のターゲットハッシュの少なくとも１つのターゲットハッシュについて、ターゲットハッシュに従ってホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出すステップと、複数のターゲットハッシュが複数の参照ハッシュと同一でないとき、複数のターゲットハッシュと複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを決定するステップとを実施させる。類似性スコアが所定の閾値を超えるとき、ターゲットオブジェクトは悪意がない。
【００１３】
[0013]別の態様によれば、コンピュータシステムは、複数のターゲットハッシュであって、それぞれのターゲットハッシュはターゲットオブジェクトの別個のコードブロックを示し、それぞれの別個のコードブロックはターゲットオブジェクトのプロセッサ命令のシーケンスからなる、複数のターゲットハッシュを受信する手段と、複数のターゲットハッシュの選択されたターゲットハッシュに従ってホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出す手段と、複数のターゲットハッシュと複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを決定する手段と、類似性スコアに従って、ターゲットオブジェクトを悪意がないとしてラベル付けする手段とを備える。
【００１４】
[0014]別の態様によれば、方法は、サーバコンピュータシステムにおいて、複数のターゲットハッシュを受信するステップであって、それぞれのターゲットハッシュは、ターゲットオブジェクトの別個のデータブロックを示し、それぞれの別個のコードブロックはターゲットオブジェクトのプロセッサ命令のシーケンスからなる、受信すること、ホワイトリスト化済みデータオブジェクトを示す複数の参照ハッシュを取出すこと、複数のターゲットハッシュが複数の参照ハッシュと同一でないときで、かつ、複数のターゲットハッシュおよび複数の参照ハッシュが大多数のアイテムを共有するとき、ターゲットオブジェクトを悪意がないとしてラベル付けすることを含む。
【００１５】
[0015]本発明の先の態様および利点は、以下の詳細な説明を読み、図面を参照するとよりよく理解されるであろう。
【図面の簡単な説明】
【００１６】
【図１】[0016]本発明のいくつかの実施形態による例示的なアンチマルウェアシステムを示す図である。
【図２】[0017]本発明のいくつかの実施形態によるクライアントコンピュータシステムの例示的なハードウェア構成を示す図である。
【図３】[0018]本発明のいくつかの実施形態によるアンチマルウェアサーバシステムの例示的なハードウェア構成を示す図である。
【図４】[0019]本発明のいくつかの実施形態によるクライアントコンピュータシステム上で実行される例示的なアンチマルウェアアプリケーションの図である。
【図５】[0020]本発明のいくつかの実施形態によるアンチマルウェアサーバシステム上で実行される例示的なアプリケーションを示す図である。
【図６】[0021]本発明のいくつかの実施形態による図４のクライアントアンチマルウェアアプリケーションによって実施される例示的なステップのシーケンスを示す図である。
【図７】[0022]本発明のいくつかの実施形態によるコード正規化の例を示す図である。
【図８】[0023]本発明のいくつかの実施形態による例示的なプロセッサ命令のメモリ表現を示す図である。
【図９】[0024]本発明のいくつかの実施形態による例示的なコードブロックおよびコードブロックに対応する例示的なオペコードパターンを示す図である。
【図１０】[0025]本発明のいくつかの実施形態による、複数のコードブロックを含む例示的なコードのフラグメントおよびコードのフラグメントに対応する例示的なオブジェクトデータ指示子（ＯＤＩ）を示す図である。
【図１１】[0026]本発明のいくつかの実施形態による図５のサーバアンチマルウェアアプリケーションによって実施される例示的なステップのシーケンスを示す図である。
【発明を実施するための形態】
【００１７】
[0027]以下の説明では、構造間の全ての挙げられる構造が、中間構造を通して直接的動作可能接続または間接的動作可能接続でありうることが理解される。要素のセットは１つまたは複数の要素を含む。要素のいずれの列挙も、少なくとも１つの要素を参照すると理解される。複数の要素は少なくとも２つの要素を含む。別途必要されない限り、述べられるどの方法ステップも、必ずしも示す特定の順序で実施される必要はない。第２の要素から導出される第１の要素（たとえば、データ）は、第２の要素と同じ第１の要素、ならびに、第２の要素および任意選択で他のデータを処理することによって生成される第１の要素を包含する。パラメータに従って判定または決定を行うことは、パラメータに従ってまた任意選択で他のデータに従って判定または決定を行うことを包含する。別途指定されない限り、何らかの量／データの指示子は、その量／データ自体またはその量／データ自体と異なる指示子であるとすることができる。本発明の幾つかの実施形態で述べるコンピュータプログラムは、他のコンピュータプログラムのスタンドアローンソフトウェアエンティティまたはサブエンティティ（たとえば、サブルーチン、コードオブジェクト）であるとすることができる。別途指定しない限り、ターゲットオブジェクトは、クライアントコンピュータシステム上に存在するファイルまたはプロセスである。ターゲットオブジェクトの識別子は、単にクライアントコンピュータシステムのメモリ全体などの、より大きなデータ構造の一部としてではなく、ターゲットオブジェクト自体の選択的な識別および取出しを可能にするデータを含む。別途指定されない限り、ターゲットオブジェクトのオブジェクトデータ指示子（object data indicator）（ＯＤＩ）は、ターゲットオブジェクトが、悪意がある、たとえばマルウェアに感染しているかどうかを判定するのに助けになるターゲットオブジェクトデータ（たとえば、コードブロック、オペコードパターン、ハッシュ）の特徴を含む。別途指定されない限り、ハッシュはハッシュ関数の出力である。ハッシュ関数は、シンボル（たとえば、文字、ビット）のシーケンスを数またはビットストリングのより短いシーケンスにマッピングする数学的変換である。ターゲットハッシュは、ターゲットオブジェクトのデータに関して計算されたハッシュである。別途指定されない限り、ホワイトリスト化済みという用語は、クリーンであると信頼される、すなわち、マルウェアを含んでいないことを意味すると理解される。第１のセットは、第１のセットの全ての要素が第２のセットに含まれ、かつ、第２のセットの全ての要素が第１のセットに含まれるときに第２のセットと同一である。コンピュータ可読媒体は、磁気記憶媒体、光記憶媒体、および半導体記憶媒体（たとえば、ハードドライブ、光ディスク、フラッシュメモリ、ＤＲＡＭ）、ならびに、導電性ケーブルおよび光ファイバリンクなどの通信リンクを包含する。いくつかの実施形態によれば、本発明は、特に、本明細書で述べる方法を実施するようにプログラムされるハードウェア（たとえば、１つまたは複数のプロセッサ）を備えるコンピュータシステム、ならびに、本明細書で述べる方法を実施する命令をエンコードするコンピュータ可読媒体を提供する。
【００１８】
[0028]以下の説明は、本発明の実施形態を例として示し、必ずしも制限として示すわけではない。
[0029]図１は、本発明のいくつかの実施形態による例示的なマルウェア検出システム１０を示す。システム１０は、アンチマルウェア（ＡＭ）サーバシステム２０ａ〜２０ｃのセットおよびクライアントコンピュータシステム３０ａ〜３０ｂのセットを備える。クライアントコンピュータシステム３０ａ〜３０ｂは、エンドユーザコンピュータを示すことができ、それぞれが、プロセッサ、メモリ、およびストレージを有し、また、Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ（登録商標）、またはＬｉｎｕｘ（登録商標）などのオペレーティングシステムを実行する。いくつかのクライアントコンピュータシステム３０ａ〜３０ｂは、タブレットＰＣおよび携帯電話などのモバイルコンピューティングデバイスおよび／または電気通信デバイスを示すことができる。いくつかの実施形態では、クライアントコンピュータシステム３０ａ〜３０ｂは、個々の顧客を示すことができる、または、いつかのクライアントコンピュータシステムは、同じ顧客に属することができる。いくつかの実施形態では、システム３０ａ〜３０ｂの一方は、メールサーバなどのサーバコンピュータであるとすることができ、その場合、マルウェア検出サービスが、使用されて、複数のクライアントに送信された電子メールまたは他のメッセージ内に存在するマルウェアを識別し、そのメッセージがクライアントに送出される前に適切な処置をとる（たとえば、マルウェアに感染したアイテムを除去または隔離する）ことができる。ネットワーク１２は、クライアントコンピュータシステム３０ａ〜３０ｃとアンチマルウェアサーバシステム２０ａ〜２０ｃを接続する。ネットワーク１２は、インターネットなどのワイドエリアネットワークであるとすることができる。ネットワーク１２の一部、たとえばクライアントコンピュータシステム３０ａ〜３０ｂに相互接続するネットワーク１２の一部はまた、ローカルエリアネットワーク（ＬＡＮ）を含むことができる。
【００１９】
[0030]図２は、クライアントコンピュータシステム３０の例示的なハードウェア構成を示す。いくつかの実施形態では、システム３０は、プロセッサ２４、メモリユニット２６、入力デバイス２８のセット、出力デバイス３２のセット、記憶デバイス３４のセット、および通信インタフェースコントローラ３６を備え、全てがバス３８のセットによって接続される。
【００２０】
[0031]いくつかの実施形態では、プロセッサ２４は、信号および／またはデータに関する計算オペレーションおよび／または論理オペレーションを実行するように構成される物理デバイス（たとえば、マルチコア集積回路）を備える。いくつかの実施形態では、こうした論理オペレーションは、プロセッサ命令（たとえば、マシンコードまたは他のタイプのソフトウェア）のシーケンスの形態でプロセッサ２４に送出される。メモリユニット２６は、命令を実施する過程でプロセッサ２４によってアクセスまたは生成されるデータ／信号を記憶する揮発性コンピュータ可読媒体（たとえば、ＲＡＭ）を備えることができる。入力デバイス２８は、ユーザがシステム３０にデータおよび／または命令を導入することを可能にする、とりわけ、コンピュータキーボードおよびマウスを含むことができる。出力デバイス３２は、モニタなどのディスプレイデバイスを含むことができる。いくつかの実施形態では、入力デバイス２８および出力デバイス３２は、タッチスクリーンデバイスの場合と同様に、ハードウェアの共通部品を共有することができる。記憶デバイス３４は、ソフトウェア命令および／またはデータの不揮発性記憶、読出し、および書込みを可能にするコンピュータ可読媒体を含む。例示的な記憶デバイス３４は、磁気ディスクおよび光ディスクおよびフラッシュメモリ、ならびに、ＣＤおよび／またはＤＶＤディスクおよびドライブなどの取外し可能媒体を含む。通信インタフェースコントローラ３６は、システム３０がコンピュータネットワークおよび／または他のマシン／コンピュータシステムに接続することを可能にする。典型的な通信インタフェースコントローラ３６は、ネットワークアダプタを含む。バス３８は、複数のシステムバス、周辺バス、およびチップセットバス、および／または、コンピュータシステム３０のデバイス２４〜３６の相互通信を可能にする全ての他の回路要素を全体的に示す。たとえば、バス３８は、とりわけ、プロセッサ２４をメモリ２６に接続するノースブリッジバスおよび／またはプロセッサ２４をデバイス２８〜３６に接続するサウスブリッジバスを備えることができる。
【００２１】
[0032]図３は、本発明のいくつかの実施形態によるシステム２０ａ〜２０ｃの例示的なＡＭサーバシステム２０のハードウェア構成を示す。ＡＭサーバシステム２０は、全てがサーババス１３８のセットによって互いに接続される、サーバプロセッサ１２４、サーバメモリ１２６、サーバ記憶デバイス１３４のセット、およびサーバ通信インタフェースコントローラ１３６を備えるコンピュータシステムであるとすることができる。ハードウェア構成のいくつかの詳細は、サーバシステム２０とクライアントコンピュータシステム３０との間で異なる場合がありうるが、デバイス１２４、１２６、１３４、１３６、および１３８の範囲は、上述したデバイス２４、２６、３４、３６、および３８の範囲と同様であるとすることができる。
【００２２】
[0033]クライアントコンピュータシステム３０は、図４に示すように、クライアントアンチマルウェア（ＡＭ）アプリケーション４０およびクライアントサイドキャッシュ５６を含むことができる。いくつかの実施形態では、クライアントＡＭアプリケーション４０は、スタンドアロンアプリケーションであるとすることができる、または、アンチウイルス、ファイヤウォール、アンチスパムを有するセキュリティスイートのアンチマルウェアモジュール、および他のモジュールであるとすることができる。クライアントＡＭアプリケーションは、アクティブＡＭスキャナ４２、スタティックＡＭスキャナ４４、スタティックＡＭスキャナ４４に接続されるエミュレータ４６、スキャナ４２および４４に接続されるコード正規化エンジン４８、クライアントＡＭ通信マネージャ５２、ならびに、通信マネージャ５２およびコード正規化エンジン４８に接続されるハッシュ法（hashing）エンジン５４を備えることができる。
【００２３】
[0034]いくつかの実施形態では、クライアントＡＭアプリケーション４０は、クライアントコンピュータシステム３０の一部を形成するコンピュータ可読媒体（たとえば、メモリ、ハードドライブ）上に、または、システム３０に接続されるコンピュータ可読媒体（たとえば、メモリスティック、外部ハードドライブネットワークドライブなど）上に記憶されるマルウェアを検出するために、クライアント−サーバ協調スキャンのクライアントサイド部分を実施するように構成される。クライアント−サーバ協調スキャンの一部として、クライアントＡＭアプリケーション４０は、ターゲットオブジェクトデータ指示子（ＯＤＩ）１００をＡＭサーバシステム２０ａ〜２０ｃに送信し、システム２０ａ〜２０ｃからスキャンレポート５０を受信するように構成される。
【００２４】
[0035]ＡＭアプリケーション４０によってスキャンされるターゲットオブジェクトは、コンピュータファイルおよびプロセスを含む。それぞれのプロセスは、ロードされるメモリモジュール（ターゲット実行可能ファイルのロードされるイメージおよびその参照されるダイナミックリンク式ライブラリ）のセット、ならびに、ロードされるメモリモジュールに対応する任意のさらなるファイルを含むことができる。ターゲットオブジェクトは、少なくとも悪意のあるソフトウェアエンティティ（たとえば、ウイルス、ワーム、トロイの木馬）の一部を含む場合、マルウェアであると考えられることができる。
【００２５】
[0036]いくつかの実施形態では、ＯＤＩ１００は、複数のコードブロック指示子を含み、それぞれのコードブロック指示子は、ターゲットブロックの別個のコードブロックを示す。ＯＤＩ１００の例示的なコンテンツおよびフォーマットは、図７〜９に関して詳細に論じられることになる。
【００２６】
[0037]いくつかの実施形態では、スキャンレポート５０は、ターゲットオブジェクトの識別子（たとえば、タグ、ファイルＩＤ）、ターゲットオブジェクトのマルウェアステータス指示子（たとえば、感染済み、クリーン、未知）、ならびに／または、個々のマルウェアエージェントの名前（たとえば、Ｗｉｎ３２．Ｗｏｒｍ．Ｄｏｗｎａｄｕｐ．Ｇｅｎ）、マルウェアクラス指示子（ウイルス、ルートキットなど）、またはマルウェア知識ベース内のそれぞれのエージェントに対するポインタなどの、ターゲットオブジェクトに感染するマルウェアエージェントの識別子のセットを含む。いくつかの実施形態では、単一のスキャンレポートは、ターゲットオブジェクトのバッチについてコンパイルされることができる。
【００２７】
[0038]いくつかの実施形態では、サーバ通信マネージャ５２は、サーバＡＭシステム２０ａ〜２０ｂとの通信を管理するように構成される。たとえば、ネットワーク１２を通じた接続を確立し、ＡＭサーバ２０ａ〜２０ｃへ／からデータを送信／受信し、進行中のスキャントランザクションのリストを維持し、ターゲットＯＤＩ１００を、サーバサイドスキャニングを実施するＡＭサーバに関連付けることができる。
【００２８】
[0039]アクティブＡＭスキャナ４２およびスタティックＡＭスキャナ４４は、以下でより詳細に示すように、クライアントＡＭアプリケーション４０が、ターゲットオブジェクトの予備アンチマルウェアスキャンを実行することを可能にする。予備スキャンが、悪意のあるコンテンツを検出する場合、問題のあるターゲットオブジェクトは、クライアントーサーバスキャニングを経験する必要なく、ユーザに直接レポートされ、したがって、時間およびコンピュータ資源を節約する。いくつかの実施形態では、ファイルターゲットオブジェクトは、スタティックＡＭスキャナ４４によって処理され、一方、プロセスターゲットオブジェクトは、アクティブＡＭスキャナ４２によって処理される。いくつかの実施形態では、スタティックＡＭスキャナ４４は、エミュレータ４６を使用して、ファイルをアンパック（unpack）し、それを、主メモリ以外の保護された環境で実行することができる。スキャナ４２、４４は、挙動ベース方法、種々のヒューリスティック、コンテンツベース方法（たとえば、シグネチャ照合）、またはその組合せを使用して、ターゲットオブジェクトがマルウェアであるかどうかを判定することができる。ターゲットオブジェクトが、悪意があるかどうかを判定するためのヒューリスティック基準の例は、とりわけ、ターゲットオブジェクトのポータブル実行可能（portable executable）（ＰＥ）ファイル内の種々のセクションの相対的サイズ、それぞれのセクション内の情報密度、ＰＥヘッダ内の特定のフラグおよびフラググループの存在、（もしあれば）パッカ／プロテクタに関する情報、ならびに、実行可能ファイル（executable）の内部における一定のテキストパターンの存在を含む。
【００２９】
[0040]クライアントＡＭアプリケーション４０は、コード正規化エンジン４８およびハッシュ法エンジン５４を使用して、ターゲットＯＤＩ１００を生成することができる。コード正規化エンジン４８のオペレーションは、図７に関して以下で論じられることになる。ハッシュ法エンジン５４は、図８〜９に示すように、オペコードパターンを受信し、それぞれのオペコードパターンのハッシュを生成するように構成される。いくつかの実施形態では、ハッシュは、ハッシュ関数、シンボル（たとえば、文字、ビット）のシーケンスを数またはビットストリングのシーケンスにマッピングする数学的変換の出力である。ハッシュ法エンジン５４によって使用される例示的なハッシュ関数は、とりわけ、循環冗長検査（cyclic redundancy check）（ＣＲＣ）、メッセージダイジェスト（message digest）（ＭＤ）、またはセキュアハッシュ法（secure hashing）（ＳＨＡ）を含む。例示的なハッシュは、４バイトＣＲＣ３２である。
【００３０】
[0041]クライアント−サーバキャッシュ５６のいくつかの実施形態は、任意の所与の時間に、それぞれのクライアントシステム３０上に存在するターゲットオブジェクトに対応するＯＤＩのレポジトリを備え、オブジェクトはマルウェアについて既にスキャンされている。いくつかの実施形態では、キャッシュ５６は、ターゲットオブジェクトＯＤＩのハッシュのセットを備えることができ、クライアントシステム３０から受信されるそれぞれのＯＤＩはハッシュ処理されることができ、二重のハッシュは除去され、結果得られるハッシュは、それぞれのＯＤＩの一意の指示子として記憶される。キャッシュ５６は、マルウェアスキャニングの迅速化を可能にする。それぞれのターゲットオブジェクトが少なくとも１回既にスキャンされていることを示すターゲットオブジェクトのＯＤＩまたはそのハッシュがクライアントキャッシュ５６において見出される場合、ターゲットオブジェクトのマルウェアステータスが、キャッシュ５６から直接取出され、ユーザにレポートされることができ、プロセスは、ターゲットオブジェクトの新しいスキャンよりかなり速い。全てのＯＤＩについて、キャッシュ５６のいくつかの実施形態は、オブジェクト識別子（たとえば、タグ、ファイルＩＤ）およびそれぞれのターゲットオブジェクトのマルウェアステータスの指示子を含むことができる。
【００３１】
[0042]図５は、本発明のいくつかの実施形態によるＡＭサーバシステム２０上で実行される例示的なアプリケーションを示す。いくつかの実施形態では、システム２０は、サーバＡＭアプリケーション６０、サーバサイドキャッシュ６８、ホワイトリストデータベース６５、マルウェアデータベース６６、およびアウトブレークデータベース６７ｂを備え、全てがＡＭサーバアプリケーション６０に接続される。
【００３２】
[0043]いくつかの実施形態では、ＡＭサーバアプリケーション６０は、クライアントコンピュータシステム３０ａ〜３０ｂによって複数のマルウェア検出トランザクションを実施するように構成される。それぞれのこうしたトランザクションについて、サーバＡＭアプリケーション６０は、以下で詳細に述べるように、それぞれのクライアントコンピュータシステム上に存在するマルウェアを検出するために協調スキャンのサーバサイド部分を実施するように構成される。クライアント−サーバトランザクションの一部として、アプリケーション６０は、ターゲットＯＤＩ１００をクライアントコンピュータシステムから受信し、スキャンレポート５０をそれぞれのクライアントコンピュータシステムに送信する。サーバＡＭアプリケーション６０は、サーバＡＭ通信マネージャ６２および通信マネージャ６２に接続されるコード比較器６４を備えることができる。
【００３３】
[0044]いくつかの実施形態では、サーバ通信マネージャ６２は、クライアントコンピュータシステム３０ａ〜３０ｂとの通信を管理するように構成される。たとえば、マネージャ６２は、ネットワーク１２を通じた接続を確立し、クライアントへ／からデータを送信／受信し、進行中のスキャントランザクションのリストを維持し、ターゲットＯＤＩ１００を、発信元のクライアントコンピュータシステム３０ａ〜３０ｂに関連付けることができる。コード比較器６４は、以下で詳細に述べるように、ターゲットオブジェクトと、データベース６５〜６７に記憶される参照オブジェクトのセットとの間の類似性の程度を示す類似性スコアを計算するように構成される。
【００３４】
[0045]いくつかの実施形態では、サーバサイドキャッシュ６８は、マルウェアについて既にスキャンされているターゲットオブジェクトのＯＤＩのリポジトリを含み、ＯＤＩは、以前のクライアントーサーバ協調スキャンの過程で種々のクライアントコンピュータシステム３０ａ〜３０ｂから受信される。以下でさらに論じるように、ターゲットオブジェクトのＯＤＩがサーバキャッシュ６８において見出され、それぞれのターゲットオブジェクトが少なくとも１回既にスキャンされていることを示す場合、ターゲットオブジェクトのマルウェアステータス（たとえば、クリーン、感染済みなど）が、ターゲットオブジェクトの新しいスキャンなしでキャッシュ６８から取出されることができる。ターゲットＯＤＩと共に、サーバキャッシュ６８のいくつかの実施形態は、それぞれのターゲットオブジェクトのマルウェアステータス（たとえば、クリーン、感染済み）を記憶することができる。
【００３５】
[0046]データベース６５〜６７は、現在のマルウェア関連知識のリポジトリとして維持される。いくつかの実施形態では、それぞれのデータベース６５〜６７は、知られているマルウェアステータスの参照オブジェクト（ファイルおよびプロセス）の集合に対応するデータ指示子のセットを含む。いくつかの実施形態では、データベース６５〜６７は、オペコードパターンハッシュ（図７〜１０に関して以下でさらに述べる）の形態でデータを記憶する。ホワイトリストデータベース６５は、クリーンであると信頼されるオブジェクト（すなわち、ホワイトリスト化アイテム）から取出されるハッシュのセットを含む。マルウェアデータベース６６は、マルウェアとして知られているオブジェクトから取出されるマルウェア識別ハッシュを含む。いくつかの実施形態では、アウトブレークデータベース６７は、未知のマルウェアステータスである（マルウェアかまたはクリーンであるとしてまだ認識されていない）オブジェクトについて計算されるハッシュを含む。
【００３６】
[0047]いくつかの実施形態では、データベース６５〜６７に記憶される全てのオペコードパターンハッシュは同じサイズ（たとえば、４バイト）を有する。それらのハッシュは、サーバシステム２０ａ〜２０ｃのメモリおよび／またはコンピュータ可読媒体に順次記憶される。いくつかの実施形態では、オブジェクト識別子（たとえば、ファイルＩＤもまた、４バイトの数として示される）を含む第２のデータ構造は、参照ハッシュのセットと共に記憶される。それぞれのＡＭサーバのメモリに記憶される双方向マッピングが使用されて、それぞれのハッシュを、そのハッシュが取出されたオブジェクトのファイルＩＤに関連付ける。これは、サーバＡＭアプリケーションが、参照ハッシュを選択的に取出し、クライアントコンピュータシステムから受信されるターゲットオブジェクトが、データベース６５〜６７に記憶される任意の参照オブジェクトと類似であるかどうか判定することを可能にする。データベース６５〜６７は、以下でさらに述べるように、クライアントコンピュータシステム３０ａ〜３０ｂから受信されるターゲットオブジェクトを追加することによって最新に維持され続ける。
【００３７】
[0048]図６は、本発明のいくつかの実施形態によるクライアントＡＭアプリケーション４０によって実施される例示的なステップのシーケンスを示す。ステップ２０２にて、アプリケーション４０はターゲットオブジェクトを選択して、マルウェアについてスキャンする。いくつかの実施形態では、ターゲットオブジェクトは、ユーザによって直接的または間接的に指定されることができる（オンデマンドスキャニング）。たとえば、ユーザは、ＡＭアプリケーション４０に、あるファイルか、あるファイルのコンテンツか、または、あるコンピュータ可読媒体（たとえば、ＣＤＲＯＭ、フラッシュメモリデバイス）上に記憶されたコンテンツをスキャンするよう指示することができる。他の例示的なターゲットオブジェクトは、オンアクセススキャニング中に選択され、アプリケーション４０は、あるタイプのファイルまたはプロセスを、それらを読出し／ロードし／起動する前にスキャンするように構成される。いくつかの実施形態では、ターゲットオブジェクトのセットは、アプリケーション４０を実行するクライアントコンピュータシステムのスケジュールされたスキャンのためにコンパイルされることができる。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）を実行するクライアントシステム上に存在するこうした例示的なターゲットオブジェクトのセットは、とりわけ、ＷＩＮＤＩＲフォルダ、ＷＩＮＤＩＲ／システム３２フォルダからの実行可能ファイル、現在実行しているプロセスの実行可能ファイル、現在実行しているプロセスによってインポートされるダイナミックリンクライブラリ（dynamic link library）（ＤＬＬ）、およびインストール済み全てのシステムサービスの実行可能ファイルを含むことができる。いくつかの実施形態では、ターゲットオブジェクトはまた、関心のマルウェアプログラム、たとえば、それぞれのマルウェアスキャンの始動時に最もよく知られかつアクティブであると考えられるマルウェアプログラムによって標的にされるファイル／プロセスを含むことができる。
【００３８】
[0049]いくつかの実施形態では、識別子（たとえば、ファイルＩＤ）は、それぞれのターゲットオブジェクトを一意にタグ付けするために使用される。識別子は、たとえばそれぞれのクライアントコンピュータシステムのメモリ全体などの、より大きな構造の一部としてではなく、ターゲットオブジェクト自体（たとえば、ファイルまたはプロセス）の選択的な識別を可能にするデータを含み、たとえばそれぞれのクライアントコンピュータシステムのメモリ全体などの、より大きな構造の一部としてデータを含まない。例示的なターゲットオブジェクト識別子は、とりわけ、ファイルパスおよびメモリアドレスを含む。識別子はまた、クライアントＡＭアプリケーション４０がターゲットオブジェクトを選択的に取出して、ターゲットＯＤＩ１００を計算すると共に複数のターゲットオブジェクトに関してクライアントーサーバスキャントランザクションを明白に実施することを可能にする。
【００３９】
[0050]ステップ２０４（図６）にて、クライアントＡＭアプリケーション４０は、ターゲットオブジェクトの予備アンチマルウェアスキャンを実行することができる。いくつかの実施形態では、ファイルターゲットオブジェクトはスタティックＡＭスキャナ４４によって処理され、一方、プロセスターゲットオブジェクトはアクティブＡＭスキャナ４２によって処理される。スキャナ４２、４４は、挙動方法（たとえば、エミュレーション）、種々のヒューリスティック（たとえば、ターゲットオブジェクトのポータブル実行可能ヘッダのジオメトリ）、コンテンツベース方法（たとえば、シグネチャ照合）、またはその組合せを使用して、ターゲットオブジェクトがマルウェアであるかどうかを判定することができる。いくつかの実施形態では、スキャナ４２、４４は、ターゲットオブジェクトのマルウェアステータスの指示子を生成することができる。例示的なステータス指示子は、とりわけ、悪意がある、悪意があることが疑われる、およびクリーンである、を含む。
【００４０】
[0051]いくつかの実施形態では、ターゲットオブジェクトは、知られている悪意のあるオブジェクトと共通しているが、マルウェアであると考えるのに十分ではないいくつかの特徴を有するときに、悪意があることが疑われる場合がある。例示的な疑わしい特徴は、とりわけ、ある値／ある対のターゲットオブジェクトのＰＥヘッダ内での存在、あるコードシーケンス（ターゲットオブジェクトが仮想環境内で実行されているかどうかをチェックするコード）のターゲットオブジェクト内での存在、ならびに、アンチマルウェアソフトウェアの共通のパスワードおよび名前および／またはパス指示子などのマルウェア識別テキストパターン（シグネチャ）の存在を含む。他の疑わしい特徴は、ターゲットオブジェクトの、あるマルウェア識別挙動パターンを備える場合がある。
【００４１】
[0052]いくつかの実施形態では、スキャナ４２、４４は、それぞれのターゲットオブジェクトについてマルウェアスコアを計算し、それぞれのマルウェア識別特徴が、特定の重みを与えられることができる。マルウェアスコアが第１の閾値を超えると、それぞれのターゲットオブジェクトは、悪意があることを疑われる場合があり、スコアが第２のより高い閾値を超えると、ターゲットオブジェクトが、マルウェアとしてラベル付けされることができる。ＩＲＣプロトコルに固有のストリング、アンチウイルスプログラムの名前、共通のＷｉｎｄｏｗｓ(登録商標)パスワード、および開発に固有のコードシーケンスを含む例示的なターゲットオブジェクトは、かなり高いマルウェアスコアを受信し、したがって、マルウェアであるとラベル付けされることができ、一方、いくつかのアンチマルウェアアプリケーションの名前を含むだけである別の例示的なターゲットオブジェクトは、比較的低いスコアを受信するが、悪意があることを依然として疑われる場合がある。
【００４２】
[0053]ステップ２０６にて、アプリケーション４０は、ターゲットオブジェクトが、予備マルウェアスキャンに従って悪意があるかどうかを判定する。いいえの場合、アプリケーション４０のオペレーションは、以下に述べるステップ２１０に進む。ステップ２０８にて、はいの場合、ＡＭアプリケーション４０は、ターゲットオブジェクトをマルウェアとしてラベル付けし、ステップ２３０にて、クライアントサイドキャッシュ５６を相応して更新する。次に、クライアントＡＭアプリケーション４０は、ステップ２３２にて、マルウェアスキャンの結果を出力する。
【００４３】
[0054]いくつかの実施形態では、ステップ２３２は、それぞれのクライアントコンピュータシステムが感染する可能性があることをユーザに知らせる警報（たとえば、ポップアップウィンドウ）を発することを含むことができる。代替的に、アプリケーション４０は、システムログ内でマルウェアスキャンを文書化することができる。ＡＭアプリケーション４０のいくつかの実施形態は、スキャンレポートをユーザに表示することができ、レポートは、とりわけ、ターゲットオブジェクトの名前（またはオブジェクト識別子）、検出されたマルウェアのタイプの指示子、およびそれぞれのマルウェアに関するさらなる情報（たとえば、考えられるクリーンアップ方法）を含む。
【００４４】
[0055]ステップ２１０にて、クライアントＡＭアプリケーション４０は、ターゲットオブジェクトが、予備スキャン（上記ステップ２０４参照）の結果に従って悪意があることを疑われるかどうかを判定することができる。はいの場合、オペレーションは、以下で論じるステップ２１２に進む。いいえの場合、ステップ２２８にて、アプリケーション４０は、ターゲットオブジェクトを悪意がない（クリーンである）としてラベル付けし、ステップ２３０に進むことができる。
【００４５】
[0056]ステップ２１２にて、ターゲットオブジェクトがファイルである場合、アプリケーション４０は、エミュレータ４６によって提供される保護済み環境内にターゲットファイルをロードして、ターゲットオブジェクトのコードを保護するパッキングおよび／または暗号化の任意の層を除去することができる。ターゲットオブジェクトがプロセスである場合、アプリケーション４０のオペレーションは、ターゲットオブジェクトがシステムメモリ内に既にロードされていることになるため、ステップ２１２をスキップすることができる。
【００４６】
[0057]ステップ２１４にて、コード正規化エンジン４８は、ターゲットオブジェクトのコード正規化を実施する。コンパイラは、特にコード最適化によって、使用されるコンパイルパラメータに応じて、ソースコードの同じブロックから異なるマシンコードを生成しうる。さらなるコード変形が、プロテクタ／多相性マルウェアによって導入されることができる。いくつかの実施形態では、コード正規化は、コンパイルおよび／または他の多相性によって導入されるコンピュータコードの変形を除去するために、ターゲットオブジェクトを形成するプロセッサ命令のセットをプロセッサ命令の標準化セットに変換することを含む。例示的なコード正規化オペレーションは、以下のように進むことができる。
【００４７】
[0058]１．  ターゲットオブジェクトを構築するために使用されるコンパイラは、ターゲットオブジェクトのある特徴に従って検出される。コンパイラがわかっているとき、ターゲットオブジェクトのメモリイメージの内部のオブジェクト固有のコードのロケーションが決定される。コンパイラを確定することができないとき、コード抽出のためのターゲットエリアが、できる限り多くの考えられるオブジェクト固有のコードロケーション（たとえば、エントリ点、第１のセクションの始め、全てのセクションの始めなど）をカバーするように選択される。
【００４８】
[0059]２．  コード逆アセンブルは、前のステップで見出されたロケーションで始まる。いくつかの実施形態では、コード逆アセンブルは、コード分岐（たとえば、ｘ８６コードにおけるＪＭＰ／Ｊｘｘ／ＣＡＬＬ）に従う。逆アセンブルされる命令は、シーケンスで処理される。正規化プロセスの一部として、いくつかの命令は、不変のままにされ、他の命令は変更される。例示的な変更は、
ａ．  レジスタＩＤが、レジスタＩＤが関数ブロックの内部で現れる順序に基づいて置換される；
ｂ．  一定値およびオフセットが削除される；
ｃ．  ＰＵＳＨとそれに続くＰＯＰシーケンスは、ＭＯＶ命令で置換される；
ｄ．  変数／レジスタ／メモリアドレスの値を０にセットするシーケンス（たとえば、ＸＯＲ＜アイテム＞，＜アイテム＞）は、ＭＯＶ＜アイテム＞，０で置換される；
ｅ．  １または２の加算／減算は、１つまたは２つのＩＮＣ／ＤＥＣ命令で、それぞれ置換される；
ｆ．  ＪＺ／ＪＮＺ命令は、ＪＥ／ＪＮＥ命令で、それぞれ置換される；
ｇ．  関数プロローグおよびエピローグが除去される；
ｈ．  命令クラスＣＭＰ、ＭＯＶ、およびＴＥＳＴが除去される；
ｉ．  非オペレーション（０とのＡＤＤおよびＳＵＢ；ＮＯＰなど）が除去される
を含む。
【００４９】
[0060]図７は、本発明のいくつかの実施形態によるコード正規化の例を示す。例示的なターゲットオブジェクトから逆アセンブルされるコードのフラグメントは、関数ブロック７０を含む。いくつかの実施形態では、関数ブロックは、ＰＵＳＨ  ＥＢＰ；ＭＯＶ  ＥＢＰ，ＥＳＰ命令シーケンスで始まり、ＰＯＰ  ＥＢＤで終わる。関数ブロック７０からのコード（プロセッサ命令）のそれぞれのラインは、右に挙げる指示に従って修正されて、対応する正規化済み関数ブロック７２を生成する。
【００５０】
[0061]ステップ２１６（図６）にて、クライアントＡＭアプリケーション４０は、ターゲットオブジェクトのオブジェクトデータ指示子（ＯＤＩ）を計算する。いくつかの実施形態では、ＯＤＩは、複数のコードブロック指示子を含み、それぞれのコードブロック指示子は、ターゲットオブジェクトの別個のコードブロックを示す。例示的なコードブロック指示子は、それぞれのコードブロックのオペコードパターンを含む。
【００５１】
[0062]いくつかの実施形態では、コードブロックは、連続的なプロセッサ命令のシーケンスを含み、シーケンスは、ターゲットオブジェクトの正規化コードから抽出される。いくつかの実施形態では、コードブロックは、コードに無関係の所定の数の命令を含む。代替的に、コードブロック内の命令の計数は、所定の範囲内で変動する。例示的なコードブロックは、５と５０との間の連続的な命令を含む。いくつかの実施形態では、コードブロックのサイズ（たとえば、命令の数）は、関数ブロックが２つ以上のコードブロックを含むように、関数ブロックのサイズより実質的に小さい。いくつかの実施形態では、コードブロックは、関数ブロックの開始時にまたはＣＡＬＬ命令で開始する。例示的なコードブロック７４は図７に示される。
【００５２】
[0063]いくつかの実施形態では、ステップ２１６は、ターゲットオブジェクトをコードブロックに分離すること、および、こうしたそれぞれのコードブロックからオペコード指示子のセットを抽出することを含む。図８は、プロセッサ命令８０の例示的な２値メモリ表現を示す（Ｉｎｔｅｌ（登録商標）ｘ８６、プロセッサの３２ビットファミリについて示す）。いくつかの実施形態では、それぞれのプロセッサ命令は、バイトのシーケンスとしてメモリに記憶され、そのシーケンスは、Ｐｒｅｆｉｘフィールド８２ａ、Ｏｐｃｏｄｅ（オペコード）フィールド８２ｂ〜８２ｃのカップル、Ｍｏｄ／Ｒｅｇ／Ｒ／Ｍフィールド８２ｄ、およびＤｉｓｐｌａｃｅｍｅｎｔ／Ｄａｔａフィールド８２ｅなどの命令フィールドのセットを含む。いくつかの実施形態では、Ｏｐｃｏｄｅフィールド８２ｂ〜８２ｃは、命令のタイプ（たとえば、ＭＯＶ、ＰＵＳＨなど）をエンコードし、一方、フィールド８２ａ、８２ｄ〜８２ｅは、種々の命令パラメータ（たとえば、レジスタ名、メモリアドレスなど）をエンコードする。ｘ８６フォーマットなどのいくつかの実施形態では、命令フィールドのバイトサイズおよびコンテンツは、命令依存性があり、したがって、ｘ８６アーキテクチャ用の命令は、いろいろな長さである。図８に示す命令（ＸＯＲ  ＣＬ，１２Ｈ）は、第１のＯｐｃｏｄｅバイト（ＸＯＲについて１０００００００）、Ｍｏｄ／Ｒｅｇ／Ｒ／Ｍバイト（レジスタＣＬについて１１１１０００１）、およびＤｉｓｐｌａｃｅｍｅｎｔ／Ｄａｔａバイト（０００１００１０は、１２Ｈについて２値である）だけを含み、一方、他の命令は、両方のＯｐｃｏｄｅフィールド、あるいは、Ｐｒｅｆｉｘ、Ｏｐｃｏｄｅ、Ｍｏｄ、Ｒｅｇ、および／またはＤａｔａフィールドの他の組合せを含むことができる。
【００５３】
[0064]図９は、コードブロック７４に対応する例示的なオペコードパターン９０を示す。いくつかの実施形態では、オペコードパターン９０は、オペコード指示子９２のセットを含むデータ構造（たとえば、バイトシーケンス、リストなど）であり、それぞれのオペコード指示子は正規化コードブロック７４のプロセッサ命令に対応する。例示的なオペコード指示子９２は、それぞれのプロセッサ命令のＯｐｃｏｄｅフィールドのコンテンツを含み、その場合、オペコードパターン９０は、それぞれのコードブロックを構成する命令タイプのシーケンスを含む。図９に示す実施形態では、それぞれのオペコード指示子９２は、オペコードバイトおよびパラメータバイトの組合せを含む（たとえば、命令ＰＵＳＨ  ＥＤＸについてのオペコード指示子は、１６進数で５２である）。
【００５４】
[0065]図１０は、本発明のいくつかの実施形態による、正規化コードのフラグメントおよびフラグメントの例示的なＯＤＩ１００を示す。ＯＤＩ１００は、複数のコードブロック指示子１０４ａ〜１０４ｃを含み、それぞれのコードブロック指示子はそれぞれのコードブロック７４ａ〜７４ｃのダイジェスト（たとえば、指紋、シグネチャ）を提供する。例示的なコードブロック指示子１０４ａ〜１０４ｃはそれぞれのオペコードパターン９０ａ〜９０ｃを含む。いくつかの実施形態では、コードブロック指示子１０４ａ〜１０４ｃは、図１０に示すように、オペコードパターン９０ａ〜９０ｃのハッシュを含む。コードブロック指示子１０４ａ〜１０４ｃ以外に、ＯＤＩ１００のいくつかの実施形態は、それぞれのターゲットオブジェクトをタグ付けするオブジェクト識別子（たとえば、ファイルＩＤ）および／またはターゲットオブジェクトのオブジェクト特徴指示子１０６のセットを含むことができる。例示的なオブジェクト特徴指示子は、とりわけ、ファイルサイズ（たとえば、１３０ｋＢ）、ファイルタイプ（たとえば、ファイルが、実行可能ファイルであるかどうか、ＤＬＬであるかどうかなど）の指示子、ターゲットオブジェクのメモリアドレス、および、アンチマルウェアヒューリスティック試験のセットの結果（たとえば、ターゲットオブジェクトが、あるマルウェア固有の挙動またはコンテンツを表示するかどうか）を示す数のセットを含む。いくつかの実施形態では、オブジェクト特徴指示子１０６は、たとえばターゲットオブジェクトの予備スキャン（ステップ２０２）中にＡＭスキャナ４２〜４４によって計算される。
【００５５】
[0066]簡単にするために、本明細書の残りは、コードブロック指示子１０４ａ〜１０４ｃがオペコードパターン９０ａ〜９０ｃのハッシュを含むと仮定することになる。ステップ２１６（図６）の実行は、その後、以下のように進む。クライアントＡＭアプリケーション４０は、ターゲットオブジェクトを別個のコードブロック（図１０においてコードブロック７４ａ〜７４ｃで示す）に分離することができる。それぞれのコードブロック７４ａ〜７４ｃについて、アプリケーション４０は、図９に示すように、それぞれ、引き続きオペコードパターン９０ａ〜９０ｃを計算することができる。アプリケーション４０は、その後、ハッシュ法（hashing）エンジン５４を呼出して、オペコードパターン９０ａ〜９０ｃのハッシュを計算し、それにより、それぞれのコードブロック指示子（たとえば、ターゲットハッシュ）１０４ａ〜１０４ｃを生成することができる。ハッシュ法エンジン５４は、とりわけ、循環冗長検査（ＣＲＣ）、メッセージダイジェスト（ＭＤ）、またはセキュアハッシュ法（ＳＨＡ）などのハッシュ法アルゴリズムを使用することができる。
【００５６】
[0067]ターゲットＯＤＩ１００を計算した後、ステップ２１８（図６）にて、クライアントＡＭアプリケーション４０は、クライアントサイドキャッシュ５６内でＯＤＩの探索を実施する。ＯＤＩがキャッシュレコード（キャッシュヒット）に一致し、それぞれのターゲットオブジェクトがマルウェアについて少なくとも１回、既にスキャンされていることを示す場合、アプリケーション４０は、ステップ２２０に進んで、キャッシュレコード（たとえば、クリーンまたはマルウェア）に従ってターゲットオブジェクトをラベル付けし、先に論じたステップ２３２に進む。
【００５７】
[0068]ターゲットＯＤＩ１００がクライアントサイドキャッシュ５６内で照合されない場合、ステップ２２２にて、アプリケーション４０は、クライアントーサーバスキャニングトランザクションを始動するためにクライアントＡＭ通信マネージャ５２を呼出すことができる。通信マネージャ５２は、ターゲットＯＤＩ１００をＡＭサーバ２０ａ〜２０ｃに送信し、ステップ２２４にて、サーバ２０ａ〜２０ｃからスキャンレポート５０を受信する。いくつかの実施形態ではそれぞれのＯＤＩが、別個のクライアントーサーバスキャニングトランザクションの一部を形成することができる、または、複数のＯＤＩが、同じトランザクション（バッチ処理）内で同時に送信されることができる。
【００５８】
[0069]ステップ２２６にて、アプリケーション４０は、スキャンレポート５０に従ってターゲットオブジェクトがホワイトリスト化済み（クリーン）であるかどうかを判定する。はいの場合、ターゲットオブジェクトは、悪意がないとしてラベル付けされる（ステップ２２８）。ターゲットオブジェクトが、スキャンレポート５０に従って悪意がある場合、アプリケーション４０は、ターゲットオブジェクトをマルウェアとしてラベル付けする（ステップ２０８）。
【００５９】
[0070]図１１は、本発明のいくつかの実施形態によるサーバＡＭアプリケーション６０（図５）によって実施される例示的なステップのシーケンスを示す。ステップ３０２にて、サーバＡＭ通信マネージャ６２は、ターゲットＯＤＩ１００をクライアントコンピュータシステム３０から受信する。ステップ３０４にて、アプリケーション６０は、サーバサイドキャッシュ６８内でＯＤＩ１００の探索を実施する。ＯＤＩがキャッシュレコード（キャッシュヒット）に一致し、それぞれのターゲットオブジェクトがマルウェアについて少なくとも１回、既にスキャンされていることを示す場合、アプリケーション６０は、ステップ３０６に進んで、キャッシュレコード（たとえば、クリーンまたはマルウェア）に従ってターゲットオブジェクトをラベル付けする。ステップ３０８にて、通信マネージャ６２は、スキャンレポート５０をコンパイルし、レポート５０をそれぞれのクライアントコンピュータシステム３０に送信する。
【００６０】
[0071]ＯＤＩ１００のレコードがサーバサイドキャッシュ６８内で見出されない場合、ステップ３１０にて、サーバＡＭアプリケーション６０は、ＯＤＩ１００のハッシュをフィルタリングして、関連するハッシュのサブセットを生成する。いくつかの実施形態では、オブジェクト固有でないオペコードパターンのハッシュは、ＯＤＩ１００から廃棄されて、マルウェアスキャニングの性能を改善することができる。こうした非固有のオペコードパターンは、たとえばアンパッカコード（たとえば、インストーラ、セルフエクストラクタ）および／またはライブラリコードに対応するかまたはクリーンオブジェクトとマルウェアオブジェクトの両方の中に存在する。
【００６１】
[0072]ステップ３１２にて、ＯＤＩ１００のそれぞれのハッシュについて、サーバＡＭアプリケーション６０は、ホワイトリストデータベース６５に照会して、それぞれのハッシュを含むホワイトリスト化参照オブジェクトのセットを取出すことができる。いくつかの実施形態では、ヒープベースアルゴリズムが使用されて、取出された参照オブジェクトを、ターゲットオブジェクトとのそれらの類似性に従ってランク付けする。
【００６２】
[0073]ステップ３１４にて、サーバＡＭアプリケーション６０は、ステップ３１２にて取出したそれぞれのホワイトリスト化参照オブジェクトにターゲットオブジェクトがどれほど類似しているかを特徴付ける類似性スコアを計算するためにコード比較器６４を呼出す。いくつかの実施形態では、類似性スコアは、公式
【００６３】
【数１】
2014534531.tif 000003
【００６４】
に従って計算される。ここで、Ｃは、ターゲットオブジェクトとそれぞれの参照オブジェクトの両方に共通するハッシュの数（計数）を示し、ＮＴは、上記ステップ３１０で論じたようにフィルタリングされたターゲットＯＤＩのハッシュの数（計数）を示し、ＮＲは、参照オブジェクトのハッシュの数（計数）を示す。
【００６５】
[0074]代替の実施形態は、
Ｓ＝２００＊Ｃ／（ＮＴ＋ＮＲ）                  ［２］
または
Ｓ＝５０＊（Ｃ／ＮＴ＋Ｃ／ＮＲ）                ［３］
などの公式に従って類似性スコアを計算することができる。
【００６６】
[0075]ステップ３１６にて、アプリケーション６０は、類似性スコア（たとえば、公式［１］）を所定の閾値と比較する。類似性スコアが閾値を超え、ターゲットオブジェクトが少なくとも１つのホワイトリスト化オブジュエクトと類似であることを示すとき、サーバＡＭアプリケーション６０のいくつかの実施形態は、ステップ３１８にて、ターゲットオブジェクトを悪意がない（クリーンである）としてラベル付けすることができる。ホワイトリスト化閾値の例示的な値は５０であり、ターゲットオブジェクトがホワイトリスト化済みオブジェクトとそのオペコードパターンの５０％より多くを共有するとき、ターゲットオブジェクトがホワイトリスト化されていることを示す。
【００６７】
[0076]次に、ステップ３２０は、ホワイトリストデータベース６５を現在のターゲットオブジェクトによって更新し、ステップ３２２は、サーバサイドキャッシュ６８を、ターゲットオブジェクトのレコードおよびスキャン結果（たとえば、クリーン）の指示子によって更新する。
【００６８】
[0077]ホワイトリスト化類似性スコア（ステップ３１８）が閾値を超えず、ターゲットオブジェクトが、知られている任意のホワイトリスト化済みオブジェクトに十分に類似しないことを示すとき、サーバＡＭアプリケーションは、引き続きステップ３２４に移動し、ターゲットＯＤＩ１００が、マルウェアオブジェクトのレコードのセットと比較される。いくつかの実施形態では、ＯＤＩ１００のハッシュのセットがさらにフィルタリングされて、ホワイトリストデータベース６５からのレコード（上記ステップ３１２参照）に一致した全てのハッシュを除去し、したがって、知られている任意のホワイトリスト化済みオブジェクト内で見出されないハッシュのサブセットを保持する。ターゲットオブジェクトの認識されないそれぞれのこうしたハッシュについて、コード比較器６４は、マルウェアおよび／またはアウトブレークデータベース６６〜６７に照会して、それぞれのハッシュを含むマルウェアオブジェクトのセットを取出すことができる。ステップ３２６にて、コード比較器６４は、その後、それぞれのこうしたマルウェアオブジェクトにターゲットオブジェクトがどれほど類似しているかを示すマルウェア類似性スコアを引き続き計算することができる。いくつかの実施形態では、コード比較器６４は、上述した公式［１〜３］の任意の公式を使用して、マルウェア類似性スコアを計算する。
【００６９】
[0078]ステップ３２８は、マルウェア類似性スコアをプリセット閾値と比較する。マルウェア類似性スコアが閾値を超え、ターゲットオブジェクトが、データベース、６６〜６７に記憶された少なくとも１つのマルウェアオブジェクトと類似であることを示すとき、ステップ３３０にて、ターゲットオブジェクトはマルウェアとしてラベル付けされる。マルウェアとしての分類のための例示的な値は７０である（すなわち、ターゲットオブジェクトは、知られているマルウェアブジェクトとオペコードパターンの７０％より多くを共有する）。次に、マルウェアおよび／またはアウトブレークデータベース６６〜６７は、ターゲットオブジェクトのレコードを含むように更新される。サーバサイドキャッシュ６８は、ターゲットオブジェクトのレコードおよびそのマルウェアステータス（たとえば、感染済み）の指示子を含むように更新され、スキャンレポートは、コンパイルされ、クライアントコンピュータシステムに送信される（ステップ３０８）。
【００７０】
[0079]マルウェア類似性スコアが閾値を超えず、ターゲットオブジェクトが、知られているマルウェアオブジェクトに類似しないことを示すとき、サーバＡＭアプリケーションのいくつかの実施形態は、ターゲットオブジェクトをホワイトリスト化済み／悪意がないとしてラベル付けし（ステップ３１８）、ホワイトリスト化データベース６５を相応して更新することができる。
【００７１】
[0080]ターゲットＯＤＩ１００はまた、アルウェアアウトブレーク警報をトリガすることができる。いくつかの実施形態では、サーバＡＭアプリケーション６０は、アウトブレークデータベース６７からの参照オブジェクトを計数し、オブジェクトは、ターゲットオブジェクトに類似であり、また、所定の時間枠（たとえば、最新の６時間）内でＡＭサーバシステム２０ａ〜２０ｃによって受信されている。その計数が閾値（たとえば、１０）を超えるとき、マルウェアアウトブレークが仮定され、ターゲットオブジェクトならびにそれと類似である全ての参照オブジェクトが、感染済みであるとしてマーキングされる。マルウェアおよび／またはアウトブレークデータベース６６〜６７は、その後、相応して更新される。
【００７２】
[0081]上述した例示的なシステムおよび方法は、アンチマルウェアシステムが、柔軟性のあるホワイトリストデータベースを維持し、ホワイトリストデータベースを使用して、マルウェア検出性能を改善することを可能にする。
【００７３】
[0082]従来のホワイトリスト化アプリケーションでは、ターゲットオブジェクト（コンピュータファイルまたはプロセス）のハッシュは、ホワイトリスト化済みオブジェクト（クリーンであると信頼されるオブジェクト）に対応するハッシュのセットと比較される。ターゲットオブジェクトのハッシュがホワイトリスト化ハッシュに一致し、ターゲットオブジェクトが、ホワイトリスト化済みオブジェクトの少なくとも１つのホワイトリスト化済みオブジェクトと同一であることを示すとき、ターゲットオブジェクトは、トラステッドであり、たとえば、実行することを許可される。ハッシュ関数の数学的なある特性のために、従来のホワイトリスト化は、ホワイトリスト化済みオブジェクトのコードの変動を可能にしない。すなわち、２つのオブジェクトが、わずか１ビットだけ異なる場合、２つのオブジェクトのハッシュはもはや一致しない。一方、正当なコンピュータファイルおよびプロセスは、たとえば、コンパイラ間のまたは同じソフトウェアの連続するバージョン間の差によって、かなりの変動を表示することができる。
【００７４】
[0083]上述したシステムおよび方法のいくつかの実施形態は、アンチマルウェアシステムが、コンパイラおよび他の多相性によって導入される差などのデータオブジェクト間の良性の差（benign difference）を反映することを可能にする。ターゲットオブジェクトは複数のコードブロックに分離され、それぞれのコードブロックについてハッシュが計算される。得られるターゲットハッシュのセットは、その後、ホワイトリスト化済みオブジェクトから抽出されるコードブロックに対応するハッシュのデータベースと比較される。ターゲットオブジェクトは、ホワイトリスト化済みオブジェクトと共通にかなりの数のハッシュを有する場合、ホワイトリスト化済み（トラステッドである）としてラベル付けされることができる。知られているホワイトリスト化済みオブジェクトとわずかに異なるオブジェクトは、ホワイトリスト化ステータスを依然として受信することができる。別個のオブジェクトのハッシュのセット間に、ある程度の不一致を許可することによって、本発明のいくつかの実施形態は、データ安全性を許容できないほどに減少させることなく、ホワイトリスト化の効率を増加させる。
【００７５】
[0084]コードブロックのサイズは、いくつかの基準に従って決定されることができる。小さなコードブロックは（たとえば、少数のプロセッサ命令はそれぞれ）、ターゲットオブジェクトについて多数のハッシュをもたらす場合があり、それが、アンチマルウェアサーバの記憶および処理負荷を増加させ、スキャニングを減速させる場合がある。一方、小さなコードブロックは、かなりの程度の柔軟性を提供する。すなわち、２つのオブジェクトがほんのわずかに異なる場合、その差は、ハッシュのごく一部によって取上げられ、高い類似性スコアを生成することになる。大きなコードブロック（たとえば、数百のプロセッサ命令）は、平均して、ターゲットオブジェクトについて少数の（たとえば、いくつかの）ハッシュを生成し、したがって、記憶および処理の観点から有利である。しかし、大きなコードブロックは、従来のハッシュ処理と同じ欠点にさらされる。すなわち、２つのオブジェクト間の小さな差は、ハッシュの大部分によって取上げられ、低い類似性スコアを生成する場合がある。試験が明らかにしたところによれば、いくつかの実施形態では、最適なコードブロックサイズは、５と５０との間のプロセッサ命令、特に約５〜１５（たとえば、約１０）の命令であるということである。
【００７６】
[0085]上述した例示的なシステムおよび方法は、アンチマルウェアシステムが、協調的クライアントーサーバスキャニングトランザクションを実施し、ターゲットオブジェクトのサーバサイドスキャンの結果に従ってターゲットオブジェクトのマルウェアステータスにアクセスすることを可能にする。リモートアンチマルウェアサーバ上でマルウェアスキャンの一部を実施することは、クライアントコンピュータシステム上でのターゲットオブジェクトのローカルスキャニングに優るいくつかの利点を有する。
【００７７】
[0086]マルウェアエージェントおよびソフトウェアの急増は、一般に、ホワイトリストおよびマルウェアハッシュデータベースのサイズの着実な増加に寄与してきており、それは、数メガバイトから数ギガバイトのデータになる。上述した例示的な方法およびシステムは、アンチマルウェアサーバ上にハッシュデータベースを記憶することを可能にし、したがって、コーポレートサーバから多数の顧客への、データが重いソフトウェアの定期的ベースでの更新の送出を回避する。
【００７８】
[0087]マルウェアスキャニングのかなりの部分を主にサーバ上で実施することによって、上述したシステムおよび方法は、新たに検出されたマルウェアおよび新しい正当なソフトウェアについてのハッシュの時宜を得た組込みを可能にする。対照的に、スキャニングがクライアントコンピュータシステムに主に分配される従来のマルウェア検出では、新しいセキュリティ脅威および新しいホワイトリスト化済みソフトウェアに関する情報収集は、アンチマルウェアソフトウェア製作者に達するのにかなり長い時間かかる間接的な方法を含む場合がある。
【００７９】
[0088]上述したクライアントシステムとアンチマルウェアサーバシステムとの間で交換されるファイルのサイズは最小に維持される。サーバサイドスキャニングのために、クライアントからサーバにターゲットオブジェクト全体を送信する代わりに、上述した例示的な方法およびシステムは、ターゲットオブジェクトについて数バイトから数キロバイトになる場合があるハッシュを交換するように構成され、したがって、ネットワークトラフィックを大幅に低減する。
【００８０】
[0089]上記実施形態が、本発明の範囲から逸脱することなく多くの方法で変更されることができることが当業者に明らかになる。したがって、本発明の範囲は、添付特許請求の範囲およびそれらの法的な均等物によって決定されるべきである。
【図１】
2014534531.tif 000004
【図２】
2014534531.tif 000005
【図３】
2014534531.tif 000006
【図４】
2014534531.tif 000007
【図５】
2014534531.tif 000008
【図６】
2014534531.tif 000009
【図７】
2014534531.tif 000010
【図８】
2014534531.tif 000011
【図９】
2014534531.tif 000012
【図１０】
2014534531.tif 000013
【図１１】
2014534531.tif 000014
【国際調査報告】
2014534531.tif 000015
2014534531.tif 000016