(58)【調査した分野】(Int.Cl.,DB名)
サーバコンピュータシステムにおいて、ターゲットオブジェクトの複数のターゲットハッシュを受信するステップであって、それぞれのターゲットハッシュは前記ターゲットオブジェクトに含まれる別個のコードブロックから計算され、それぞれの別個のコードブロックは前記ターゲットオブジェクトのプロセッサ命令のシーケンスを含む、受信するステップと、
前記複数のターゲットハッシュの少なくとも1つのターゲットハッシュについて、前記サーバコンピュータシステムを用いて、
前記ターゲットハッシュに従って、ホワイトリスト化済みオブジェクトのセットから選択される参照オブジェクトの複数の参照ハッシュを取出し、
前記複数のターゲットハッシュが前記複数の参照ハッシュと同一でないとき、前記複数のターゲットハッシュのフィルタリング済みセットにおけるハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを求める
ステップであって、前記フィルタリング済みセットは、前記ターゲットオブジェクトに固有でないターゲットハッシュを廃棄することにより得られた、ステップと、
前記類似性スコアが所定の閾値を超えるとき、前記サーバコンピュータシステムを用いて前記ターゲットオブジェクトを悪意がないとしてラベル付けするステップと
を含む方法。
複数のターゲットハッシュであって、それぞれのターゲットハッシュはターゲットオブジェクトに含まれる別個のコードブロックから計算され、それぞれの別個のコードブロックは前記ターゲットオブジェクトのプロセッサ命令のシーケンスを含む、複数のターゲットハッシュを受信する手段と、
前記複数のターゲットハッシュの選択されたターゲットハッシュに従って、ホワイトリスト化済みオブジェクトのセットから選択された参照オブジェクトの複数の参照ハッシュを取出す手段と、
前記複数のターゲットハッシュのフィルタリング済みセットにおけるハッシュと前記複数の参照ハッシュの両方に共通するハッシュの計数に従って類似性スコアを求める手段であって、前記フィルタリング済みセットは、前記ターゲットオブジェクトに固有でないターゲットハッシュを廃棄することにより得られた、手段と、
前記類似性スコアに従って、前記ターゲットオブジェクトを悪意がないとしてラベル付けする手段と
を備えるコンピュータシステム。
サーバコンピュータシステムにおいて、複数のターゲットハッシュを受信するステップであって、それぞれのターゲットハッシュは、前記サーバコンピュータシステムに接続されるクライアントコンピュータシステムのターゲットオブジェクトに含まれる別個のコードブロックから計算され、それぞれの別個のコードブロックは前記ターゲットオブジェクトのプロセッサ命令のシーケンスを含む、受信するステップと、
前記複数のターゲットハッシュを受信することに応答して、前記サーバコンピュータシステムを用いてホワイトリスト化済みデータオブジェクトの複数の参照ハッシュを取出すステップと、
前記複数のターゲットハッシュが前記複数の参照ハッシュと同一でないと判定すること、および、前記複数のターゲットハッシュのフィルタリング済みセットにおけるハッシュのうちの所定の割合より多くのハッシュを、前記複数の参照ハッシュが含むと判定することに応答して、前記ターゲットオブジェクトを悪意がないとしてラベル付けするステップであって、前記フィルタリング済みセットは、前記ターゲットオブジェクトに固有でないターゲットハッシュを廃棄することにより得られた、ステップと
を含む方法。
【発明を実施するための形態】
【0017】
[0027]以下の説明では、構造間の全ての挙げられる構造が、中間構造を通して直接的動作可能接続または間接的動作可能接続でありうることが理解される。要素のセットは1つまたは複数の要素を含む。要素のいずれの列挙も、少なくとも1つの要素を参照すると理解される。複数の要素は少なくとも2つの要素を含む。別途必要されない限り、述べられるどの方法ステップも、必ずしも示す特定の順序で実施される必要はない。第2の要素から導出される第1の要素(たとえば、データ)は、第2の要素と同じ第1の要素、ならびに、第2の要素および任意選択で他のデータを処理することによって生成される第1の要素を包含する。パラメータに従って判定または決定を行うことは、パラメータに従ってまた任意選択で他のデータに従って判定または決定を行うことを包含する。別途指定されない限り、何らかの量/データの指示子は、その量/データ自体またはその量/データ自体と異なる指示子であるとすることができる。本発明の幾つかの実施形態で述べるコンピュータプログラムは、他のコンピュータプログラムのスタンドアローンソフトウェアエンティティまたはサブエンティティ(たとえば、サブルーチン、コードオブジェクト)であるとすることができる。別途指定しない限り、ターゲットオブジェクトは、クライアントコンピュータシステム上に存在するファイルまたはプロセスである。ターゲットオブジェクトの識別子は、単にクライアントコンピュータシステムのメモリ全体などの、より大きなデータ構造の一部としてではなく、ターゲットオブジェクト自体の選択的な識別および取出しを可能にするデータを含む。別途指定されない限り、ターゲットオブジェクトのオブジェクトデータ指示子(object data indicator)(ODI)は、ターゲットオブジェクトが、悪意がある、たとえばマルウェアに感染しているかどうかを判定するのに助けになるターゲットオブジェクトデータ(たとえば、コードブロック、オペコードパターン、ハッシュ)の特徴を含む。別途指定されない限り、ハッシュはハッシュ関数の出力である。ハッシュ関数は、シンボル(たとえば、文字、ビット)のシーケンスを数またはビットストリングのより短いシーケンスにマッピングする数学的変換である。ターゲットハッシュは、ターゲットオブジェクトのデータに関して計算されたハッシュである。別途指定されない限り、ホワイトリスト化済みという用語は、クリーンであると信頼される、すなわち、マルウェアを含んでいないことを意味すると理解される。第1のセットは、第1のセットの全ての要素が第2のセットに含まれ、かつ、第2のセットの全ての要素が第1のセットに含まれるときに第2のセットと同一である。コンピュータ可読媒体は、磁気記憶媒体、光記憶媒体、および半導体記憶媒体(たとえば、ハードドライブ、光ディスク、フラッシュメモリ、DRAM)、ならびに、導電性ケーブルおよび光ファイバリンクなどの通信リンクを包含する。いくつかの実施形態によれば、本発明は、特に、本明細書で述べる方法を実施するようにプログラムされるハードウェア(たとえば、1つまたは複数のプロセッサ)を備えるコンピュータシステム、ならびに、本明細書で述べる方法を実施する命令をエンコードするコンピュータ可読媒体を提供する。
【0018】
[0028]以下の説明は、本発明の実施形態を例として示し、必ずしも制限として示すわけではない。
[0029]
図1は、本発明のいくつかの実施形態による例示的なマルウェア検出システム10を示す。システム10は、アンチマルウェア(AM)サーバシステム20a〜20cのセットおよびクライアントコンピュータシステム30a〜30bのセットを備える。クライアントコンピュータシステム30a〜30bは、エンドユーザコンピュータを示すことができ、それぞれが、プロセッサ、メモリ、およびストレージを有し、また、Windows(登録商標)、MacOS(登録商標)、またはLinux(登録商標)などのオペレーティングシステムを実行する。いくつかのクライアントコンピュータシステム30a〜30bは、タブレットPCおよび携帯電話などのモバイルコンピューティングデバイスおよび/または電気通信デバイスを示すことができる。いくつかの実施形態では、クライアントコンピュータシステム30a〜30bは、個々の顧客を示すことができる、または、いつかのクライアントコンピュータシステムは、同じ顧客に属することができる。いくつかの実施形態では、システム30a〜30bの一方は、メールサーバなどのサーバコンピュータであるとすることができ、その場合、マルウェア検出サービスが、使用されて、複数のクライアントに送信された電子メールまたは他のメッセージ内に存在するマルウェアを識別し、そのメッセージがクライアントに送出される前に適切な処置をとる(たとえば、マルウェアに感染したアイテムを除去または隔離する)ことができる。ネットワーク12は、クライアントコンピュータシステム30a〜30cとアンチマルウェアサーバシステム20a〜20cを接続する。ネットワーク12は、インターネットなどのワイドエリアネットワークであるとすることができる。ネットワーク12の一部、たとえばクライアントコンピュータシステム30a〜30bに相互接続するネットワーク12の一部はまた、ローカルエリアネットワーク(LAN)を含むことができる。
【0019】
[0030]
図2は、クライアントコンピュータシステム30の例示的なハードウェア構成を示す。いくつかの実施形態では、システム30は、プロセッサ24、メモリユニット26、入力デバイス28のセット、出力デバイス32のセット、記憶デバイス34のセット、および通信インタフェースコントローラ36を備え、全てがバス38のセットによって接続される。
【0020】
[0031]いくつかの実施形態では、プロセッサ24は、信号および/またはデータに関する計算オペレーションおよび/または論理オペレーションを実行するように構成される物理デバイス(たとえば、マルチコア集積回路)を備える。いくつかの実施形態では、こうした論理オペレーションは、プロセッサ命令(たとえば、マシンコードまたは他のタイプのソフトウェア)のシーケンスの形態でプロセッサ24に送出される。メモリユニット26は、命令を実施する過程でプロセッサ24によってアクセスまたは生成されるデータ/信号を記憶する揮発性コンピュータ可読媒体(たとえば、RAM)を備えることができる。入力デバイス28は、ユーザがシステム30にデータおよび/または命令を導入することを可能にする、とりわけ、コンピュータキーボードおよびマウスを含むことができる。出力デバイス32は、モニタなどのディスプレイデバイスを含むことができる。いくつかの実施形態では、入力デバイス28および出力デバイス32は、タッチスクリーンデバイスの場合と同様に、ハードウェアの共通部品を共有することができる。記憶デバイス34は、ソフトウェア命令および/またはデータの不揮発性記憶、読出し、および書込みを可能にするコンピュータ可読媒体を含む。例示的な記憶デバイス34は、磁気ディスクおよび光ディスクおよびフラッシュメモリ、ならびに、CDおよび/またはDVDディスクおよびドライブなどの取外し可能媒体を含む。通信インタフェースコントローラ36は、システム30がコンピュータネットワークおよび/または他のマシン/コンピュータシステムに接続することを可能にする。典型的な通信インタフェースコントローラ36は、ネットワークアダプタを含む。バス38は、複数のシステムバス、周辺バス、およびチップセットバス、および/または、コンピュータシステム30のデバイス24〜36の相互通信を可能にする全ての他の回路要素を全体的に示す。たとえば、バス38は、とりわけ、プロセッサ24をメモリ26に接続するノースブリッジバスおよび/またはプロセッサ24をデバイス28〜36に接続するサウスブリッジバスを備えることができる。
【0021】
[0032]
図3は、本発明のいくつかの実施形態によるシステム20a〜20cの例示的なAMサーバシステム20のハードウェア構成を示す。AMサーバシステム20は、全てがサーババス138のセットによって互いに接続される、サーバプロセッサ124、サーバメモリ126、サーバ記憶デバイス134のセット、およびサーバ通信インタフェースコントローラ136を備えるコンピュータシステムであるとすることができる。ハードウェア構成のいくつかの詳細は、サーバシステム20とクライアントコンピュータシステム30との間で異なる場合がありうるが、デバイス124、126、134、136、および138の範囲は、上述したデバイス24、26、34、36、および38の範囲と同様であるとすることができる。
【0022】
[0033]クライアントコンピュータシステム30は、
図4に示すように、クライアントアンチマルウェア(AM)アプリケーション40およびクライアントサイドキャッシュ56を含むことができる。いくつかの実施形態では、クライアントAMアプリケーション40は、スタンドアロンアプリケーションであるとすることができる、または、アンチウイルス、ファイヤウォール、アンチスパムを有するセキュリティスイートのアンチマルウェアモジュール、および他のモジュールであるとすることができる。クライアントAMアプリケーションは、アクティブAMスキャナ42、スタティックAMスキャナ44、スタティックAMスキャナ44に接続されるエミュレータ46、スキャナ42および44に接続されるコード正規化エンジン48、クライアントAM通信マネージャ52、ならびに、通信マネージャ52およびコード正規化エンジン48に接続されるハッシュ法(hashing)エンジン54を備えることができる。
【0023】
[0034]いくつかの実施形態では、クライアントAMアプリケーション40は、クライアントコンピュータシステム30の一部を形成するコンピュータ可読媒体(たとえば、メモリ、ハードドライブ)上に、または、システム30に接続されるコンピュータ可読媒体(たとえば、メモリスティック、外部ハードドライブネットワークドライブなど)上に記憶されるマルウェアを検出するために、クライアント−サーバ協調スキャンのクライアントサイド部分を実施するように構成される。クライアント−サーバ協調スキャンの一部として、クライアントAMアプリケーション40は、ターゲットオブジェクトデータ指示子(ODI)100をAMサーバシステム20a〜20cに送信し、システム20a〜20cからスキャンレポート50を受信するように構成される。
【0024】
[0035]AMアプリケーション40によってスキャンされるターゲットオブジェクトは、コンピュータファイルおよびプロセスを含む。それぞれのプロセスは、ロードされるメモリモジュール(ターゲット実行可能ファイルのロードされるイメージおよびその参照されるダイナミックリンク式ライブラリ)のセット、ならびに、ロードされるメモリモジュールに対応する任意のさらなるファイルを含むことができる。ターゲットオブジェクトは、少なくとも悪意のあるソフトウェアエンティティ(たとえば、ウイルス、ワーム、トロイの木馬)の一部を含む場合、マルウェアであると考えられることができる。
【0025】
[0036]いくつかの実施形態では、ODI100は、複数のコードブロック指示子を含み、それぞれのコードブロック指示子は、ターゲットブロックの別個のコードブロックを示す。ODI100の例示的なコンテンツおよびフォーマットは、
図7〜9に関して詳細に論じられることになる。
【0026】
[0037]いくつかの実施形態では、スキャンレポート50は、ターゲットオブジェクトの識別子(たとえば、タグ、ファイルID)、ターゲットオブジェクトのマルウェアステータス指示子(たとえば、感染済み、クリーン、未知)、ならびに/または、個々のマルウェアエージェントの名前(たとえば、Win32.Worm.Downadup.Gen)、マルウェアクラス指示子(ウイルス、ルートキットなど)、またはマルウェア知識ベース内のそれぞれのエージェントに対するポインタなどの、ターゲットオブジェクトに感染するマルウェアエージェントの識別子のセットを含む。いくつかの実施形態では、単一のスキャンレポートは、ターゲットオブジェクトのバッチについてコンパイルされることができる。
【0027】
[0038]いくつかの実施形態では、サーバ通信マネージャ52は、サーバAMシステム20a〜20bとの通信を管理するように構成される。たとえば、ネットワーク12を通じた接続を確立し、AMサーバ20a〜20cへ/からデータを送信/受信し、進行中のスキャントランザクションのリストを維持し、ターゲットODI100を、サーバサイドスキャニングを実施するAMサーバに関連付けることができる。
【0028】
[0039]アクティブAMスキャナ42およびスタティックAMスキャナ44は、以下でより詳細に示すように、クライアントAMアプリケーション40が、ターゲットオブジェクトの予備アンチマルウェアスキャンを実行することを可能にする。予備スキャンが、悪意のあるコンテンツを検出する場合、問題のあるターゲットオブジェクトは、クライアントーサーバスキャニングを経験する必要なく、ユーザに直接レポートされ、したがって、時間およびコンピュータ資源を節約する。いくつかの実施形態では、ファイルターゲットオブジェクトは、スタティックAMスキャナ44によって処理され、一方、プロセスターゲットオブジェクトは、アクティブAMスキャナ42によって処理される。いくつかの実施形態では、スタティックAMスキャナ44は、エミュレータ46を使用して、ファイルをアンパック(unpack)し、それを、主メモリ以外の保護された環境で実行することができる。スキャナ42、44は、挙動ベース方法、種々のヒューリスティック、コンテンツベース方法(たとえば、シグネチャ照合)、またはその組合せを使用して、ターゲットオブジェクトがマルウェアであるかどうかを判定することができる。ターゲットオブジェクトが、悪意があるかどうかを判定するためのヒューリスティック基準の例は、とりわけ、ターゲットオブジェクトのポータブル実行可能(portable executable)(PE)ファイル内の種々のセクションの相対的サイズ、それぞれのセクション内の情報密度、PEヘッダ内の特定のフラグおよびフラググループの存在、(もしあれば)パッカ/プロテクタに関する情報、ならびに、実行可能ファイル(executable)の内部における一定のテキストパターンの存在を含む。
【0029】
[0040]クライアントAMアプリケーション40は、コード正規化エンジン48およびハッシュ法エンジン54を使用して、ターゲットODI100を生成することができる。コード正規化エンジン48のオペレーションは、
図7に関して以下で論じられることになる。ハッシュ法エンジン54は、
図8〜9に示すように、オペコードパターンを受信し、それぞれのオペコードパターンのハッシュを生成するように構成される。いくつかの実施形態では、ハッシュは、ハッシュ関数、シンボル(たとえば、文字、ビット)のシーケンスを数またはビットストリングのシーケンスにマッピングする数学的変換の出力である。ハッシュ法エンジン54によって使用される例示的なハッシュ関数は、とりわけ、循環冗長検査(cyclic redundancy check)(CRC)、メッセージダイジェスト(message digest)(MD)、またはセキュアハッシュ法(secure hashing)(SHA)を含む。例示的なハッシュは、4バイトCRC32である。
【0030】
[0041]クライアント
サイドキャッシュ56のいくつかの実施形態は、任意の所与の時間に、それぞれのクライアントシステム30上に存在するターゲットオブジェクトに対応するODIのレポジトリを備え、オブジェクトはマルウェアについて既にスキャンされている。いくつかの実施形態では、キャッシュ56は、ターゲットオブジェクトODIのハッシュのセットを備えることができ、クライアントシステム30から受信されるそれぞれのODIはハッシュ処理されることができ、二重のハッシュは除去され、結果得られるハッシュは、それぞれのODIの一意の指示子として記憶される。キャッシュ56は、マルウェアスキャニングの迅速化を可能にする。それぞれのターゲットオブジェクトが少なくとも1回既にスキャンされていることを示すターゲットオブジェクトのODIまたはそのハッシュがクライアントキャッシュ56において見出される場合、ターゲットオブジェクトのマルウェアステータスが、キャッシュ56から直接取出され、ユーザにレポートされることができ、プロセスは、ターゲットオブジェクトの新しいスキャン
を実行するよりかなり速い。全てのODIについて、キャッシュ56のいくつかの実施形態は、オブジェクト識別子(たとえば、タグ、ファイルID)およびそれぞれのターゲットオブジェクトのマルウェアステータスの指示子を含むことができる。
【0031】
[0042]
図5は、本発明のいくつかの実施形態によるAMサーバシステム20上で実行される例示的なアプリケーションを示す。いくつかの実施形態では、システム20は、サーバAMアプリケーション60、サーバサイドキャッシュ68、ホワイトリストデータベース65、マルウェアデータベース66、およびアウトブレークデータベース67bを備え、全てがAMサーバアプリケーション60に接続される。
【0032】
[0043]いくつかの実施形態では、AMサーバアプリケーション60は、クライアントコンピュータシステム30a〜30bによって複数のマルウェア検出トランザクションを実施するように構成される。それぞれのこうしたトランザクションについて、サーバAMアプリケーション60は、以下で詳細に述べるように、それぞれのクライアントコンピュータシステム上に存在するマルウェアを検出するために協調スキャンのサーバサイド部分を実施するように構成される。クライアント−サーバトランザクションの一部として、アプリケーション60は、ターゲットODI100をクライアントコンピュータシステムから受信し、スキャンレポート50をそれぞれのクライアントコンピュータシステムに送信する。サーバAMアプリケーション60は、サーバAM通信マネージャ62および通信マネージャ62に接続されるコード比較器64を備えることができる。
【0033】
[0044]いくつかの実施形態では、サーバ通信マネージャ62は、クライアントコンピュータシステム30a〜30bとの通信を管理するように構成される。たとえば、マネージャ62は、ネットワーク12を通じた接続を確立し、クライアントへ/からデータを送信/受信し、進行中のスキャントランザクションのリストを維持し、ターゲットODI100を、発信元のクライアントコンピュータシステム30a〜30bに関連付けることができる。コード比較器64は、以下で詳細に述べるように、ターゲットオブジェクトと、データベース65〜67に記憶される参照オブジェクトのセットとの間の類似性の程度を示す類似性スコアを計算するように構成される。
【0034】
[0045]いくつかの実施形態では、サーバサイドキャッシュ68は、マルウェアについて既にスキャンされているターゲットオブジェクトのODIのリポジトリを含み、ODIは、以前のクライアントーサーバ協調スキャンの過程で種々のクライアントコンピュータシステム30a〜30bから受信される。以下でさらに論じるように、ターゲットオブジェクトのODIがサーバキャッシュ68において見出され、それぞれのターゲットオブジェクトが少なくとも1回既にスキャンされていることを示す場合、ターゲットオブジェクトのマルウェアステータス(たとえば、クリーン、感染済みなど)が、ターゲットオブジェクトの新しいスキャンなしでキャッシュ68から取出されることができる。ターゲットODIと共に、サーバキャッシュ68のいくつかの実施形態は、それぞれのターゲットオブジェクトのマルウェアステータス(たとえば、クリーン、感染済み)を記憶することができる。
【0035】
[0046]データベース65〜67は、現在のマルウェア関連知識のリポジトリとして維持される。いくつかの実施形態では、それぞれのデータベース65〜67は、知られているマルウェアステータスの参照オブジェクト(ファイルおよびプロセス)の集合に対応するデータ指示子のセットを含む。いくつかの実施形態では、データベース65〜67は、オペコードパターンハッシュ(
図7〜10に関して以下でさらに述べる)の形態でデータを記憶する。ホワイトリストデータベース65は、クリーンであると信頼されるオブジェクト(すなわち、ホワイトリスト化アイテム)から取出されるハッシュのセットを含む。マルウェアデータベース66は、マルウェアとして知られているオブジェクトから取出されるマルウェア識別ハッシュを含む。いくつかの実施形態では、アウトブレークデータベース67は、未知のマルウェアステータスである(マルウェアかまたはクリーンであるとしてまだ認識されていない)オブジェクトについて計算されるハッシュを含む。
【0036】
[0047]いくつかの実施形態では、データベース65〜67に記憶される全てのオペコードパターンハッシュは同じサイズ(たとえば、4バイト)を有する。それらのハッシュは、サーバシステム20a〜20cのメモリおよび/またはコンピュータ可読媒体に順次記憶される。いくつかの実施形態では、オブジェクト識別子(たとえば、ファイルIDもまた、4バイトの数として示される)を含む第2のデータ構造は、参照ハッシュのセットと共に記憶される。それぞれのAMサーバのメモリに記憶される双方向マッピングが使用されて、それぞれのハッシュを、そのハッシュが取出されたオブジェクトのファイルIDに関連付ける。これは、サーバAMアプリケーションが、参照ハッシュを選択的に取出し、クライアントコンピュータシステムから受信されるターゲットオブジェクトが、データベース65〜67に記憶される任意の参照オブジェクトと類似であるかどうか判定することを可能にする。データベース65〜67は、以下でさらに述べるように、クライアントコンピュータシステム30a〜30bから受信されるターゲットオブジェクトを追加することによって最新に維持され続ける。
【0037】
[0048]
図6は、本発明のいくつかの実施形態によるクライアントAMアプリケーション40によって実施される例示的なステップのシーケンスを示す。ステップ202にて、アプリケーション40はターゲットオブジェクトを選択して、マルウェアについてスキャンする。いくつかの実施形態では、ターゲットオブジェクトは、ユーザによって直接的または間接的に指定されることができる(オンデマンドスキャニング)。たとえば、ユーザは、AMアプリケーション40に、あるファイルか、あるファイルのコンテンツか、または、あるコンピュータ可読媒体(たとえば、CDROM、フラッシュメモリデバイス)上に記憶されたコンテンツをスキャンするよう指示することができる。他の例示的なターゲットオブジェクトは、オンアクセススキャニング中に選択され、アプリケーション40は、あるタイプのファイルまたはプロセスを、それらを読出し/ロードし/起動する前にスキャンするように構成される。いくつかの実施形態では、ターゲットオブジェクトのセットは、アプリケーション40を実行するクライアントコンピュータシステムのスケジュールされたスキャンのためにコンパイルされることができる。Microsoft Windows(登録商標)を実行するクライアントシステム上に存在するこうした例示的なターゲットオブジェクトのセットは、とりわけ、WINDIRフォルダ、WINDIR/システム32フォルダからの実行可能ファイル、現在実行しているプロセスの実行可能ファイル、現在実行しているプロセスによってインポートされるダイナミックリンクライブラリ(dynamic link library)(DLL)、およびインストール済み全てのシステムサービスの実行可能ファイルを含むことができる。いくつかの実施形態では、ターゲットオブジェクトはまた、関心のマルウェアプログラム、たとえば、それぞれのマルウェアスキャンの始動時に最もよく知られかつアクティブであると考えられるマルウェアプログラムによって標的にされるファイル/プロセスを含むことができる。
【0038】
[0049]いくつかの実施形態では、識別子(たとえば、ファイルID)は、それぞれのターゲットオブジェクトを一意にタグ付けするために使用される。識別子は、たとえばそれぞれのクライアントコンピュータシステムのメモリ全体などの、より大きな構造の一部としてではなく、ターゲットオブジェクト自体(たとえば、ファイルまたはプロセス)の選択的な識別を可能にするデータを含み、たとえばそれぞれのクライアントコンピュータシステムのメモリ全体などの、より大きな構造の一部としてデータを含まない。例示的なターゲットオブジェクト識別子は、とりわけ、ファイルパスおよびメモリアドレスを含む。識別子はまた、クライアントAMアプリケーション40がターゲットオブジェクトを選択的に取出して、ターゲットODI100を計算すると共に複数のターゲットオブジェクトに関してクライアントーサーバスキャントランザクションを明白に実施することを可能にする。
【0039】
[0050]ステップ204(
図6)にて、クライアントAMアプリケーション40は、ターゲットオブジェクトの予備アンチマルウェアスキャンを実行することができる。いくつかの実施形態では、ファイルターゲットオブジェクトはスタティックAMスキャナ44によって処理され、一方、プロセスターゲットオブジェクトはアクティブAMスキャナ42によって処理される。スキャナ42、44は、挙動方法(たとえば、エミュレーション)、種々のヒューリスティック(たとえば、ターゲットオブジェクトのポータブル実行可能ヘッダのジオメトリ)、コンテンツベース方法(たとえば、シグネチャ照合)、またはその組合せを使用して、ターゲットオブジェクトがマルウェアであるかどうかを判定することができる。いくつかの実施形態では、スキャナ42、44は、ターゲットオブジェクトのマルウェアステータスの指示子を生成することができる。例示的なステータス指示子は、とりわけ、悪意がある、悪意があることが疑われる、およびクリーンである、を含む。
【0040】
[0051]いくつかの実施形態では、ターゲットオブジェクトは、知られている悪意のあるオブジェクトと共通しているが、マルウェアであると考えるのに十分ではないいくつかの特徴を有するときに、悪意があることが疑われる場合がある。例示的な疑わしい特徴は、とりわけ、ある値/ある対のターゲットオブジェクトのPEヘッダ内での存在、あるコードシーケンス(ターゲットオブジェクトが仮想環境内で実行されているかどうかをチェックするコード)のターゲットオブジェクト内での存在、ならびに、アンチマルウェアソフトウェアの共通のパスワードおよび名前および/またはパス指示子などのマルウェア識別テキストパターン(シグネチャ)の存在を含む。他の疑わしい特徴は、ターゲットオブジェクトの、あるマルウェア識別挙動パターンを備える場合がある。
【0041】
[0052]いくつかの実施形態では、スキャナ42、44は、それぞれのターゲットオブジェクトについてマルウェアスコアを計算し、それぞれのマルウェア識別特徴が、特定の重みを与えられることができる。マルウェアスコアが第1の閾値を超えると、それぞれのターゲットオブジェクトは、悪意があることを疑われる場合があり、スコアが第2のより高い閾値を超えると、ターゲットオブジェクトが、マルウェアとしてラベル付けされることができる。IRCプロトコルに固有のストリング、アンチウイルスプログラムの名前、共通のWindows(登録商標)パスワード、および開発に固有のコードシーケンスを含む例示的なターゲットオブジェクトは、かなり高いマルウェアスコアを受信し、したがって、マルウェアであるとラベル付けされることができ、一方、いくつかのアンチマルウェアアプリケーションの名前を含むだけである別の例示的なターゲットオブジェクトは、比較的低いスコアを受信するが、悪意があることを依然として疑われる場合がある。
【0042】
[0053]ステップ206にて、アプリケーション40は、ターゲットオブジェクトが、予備マルウェアスキャンに従って悪意があるかどうかを判定する。いいえの場合、アプリケーション40のオペレーションは、以下に述べるステップ210に進む。
はいの場合、ステップ208にて
、AMアプリケーション40は、ターゲットオブジェクトをマルウェアとしてラベル付けし、ステップ230にて、クライアントサイドキャッシュ56を相応して更新する。次に、クライアントAMアプリケーション40は、ステップ232にて、マルウェアスキャンの結果を出力する。
【0043】
[0054]いくつかの実施形態では、ステップ232は、それぞれのクライアントコンピュータシステムが感染する可能性があることをユーザに知らせる警報(たとえば、ポップアップウィンドウ)を発することを含むことができる。代替的に、アプリケーション40は、システムログ内でマルウェアスキャンを文書化することができる。AMアプリケーション40のいくつかの実施形態は、スキャンレポートをユーザに表示することができ、レポートは、とりわけ、ターゲットオブジェクトの名前(またはオブジェクト識別子)、検出されたマルウェアのタイプの指示子、およびそれぞれのマルウェアに関するさらなる情報(たとえば、考えられるクリーンアップ方法)を含む。
【0044】
[0055]ステップ210にて、クライアントAMアプリケーション40は、ターゲットオブジェクトが、予備スキャン(上記ステップ204参照)の結果に従って悪意があることを疑われるかどうかを判定することができる。はいの場合、オペレーションは、以下で論じるステップ212に進む。いいえの場合、ステップ228にて、アプリケーション40は、ターゲットオブジェクトを悪意がない(クリーンである)としてラベル付けし、ステップ230に進むことができる。
【0045】
[0056]ステップ212にて、ターゲットオブジェクトがファイルである場合、アプリケーション40は、エミュレータ46によって提供される保護済み環境内にターゲットファイルをロードして、ターゲットオブジェクトのコードを保護するパッキングおよび/または暗号化の任意の層を除去することができる。ターゲットオブジェクトがプロセスである場合、アプリケーション40のオペレーションは、ターゲットオブジェクトがシステムメモリ内に既にロードされていることになるため、ステップ212をスキップすることができる。
【0046】
[0057]ステップ214にて、コード正規化エンジン48は、ターゲットオブジェクトのコード正規化を実施する。コンパイラは、特にコード最適化によって、使用されるコンパイルパラメータに応じて、ソースコードの同じブロックから異なるマシンコードを生成しうる。さらなるコード変形が、プロテクタ/多相性マルウェアによって導入されることができる。いくつかの実施形態では、コード正規化は、コンパイルおよび/または他の多相性によって導入されるコンピュータコードの変形を除去するために、ターゲットオブジェクトを形成するプロセッサ命令のセットをプロセッサ命令の標準化セットに変換することを含む。例示的なコード正規化オペレーションは、以下のように進むことができる。
【0047】
[0058]1. ターゲットオブジェクトを構築するために使用されるコンパイラは、ターゲットオブジェクトのある特徴に従って検出される。コンパイラがわかっているとき、ターゲットオブジェクトのメモリイメージの内部のオブジェクト固有のコードのロケーションが決定される。コンパイラを確定することができないとき、コード抽出のためのターゲットエリアが、できる限り多くの考えられるオブジェクト固有のコードロケーション(たとえば、エントリ点、第1のセクションの始め、全てのセクションの始めなど)をカバーするように選択される。
【0048】
[0059]2. コード逆アセンブルは、前のステップで見出されたロケーションで始まる。いくつかの実施形態では、コード逆アセンブルは、コード分岐(たとえば、x86コードにおけるJMP/Jxx/CALL)に従う。逆アセンブルされる命令は、シーケンスで処理される。正規化プロセスの一部として、いくつかの命令は、不変のままにされ、他の命令は変更される。例示的な変更は、
a. レジスタIDが、レジスタIDが関数ブロックの内部で現れる順序に基づいて置換される;
b. 一定値およびオフセットが削除される;
c. PUSHとそれに続くPOPシーケンスは、MOV命令で置換される;
d. 変数/レジスタ/メモリアドレスの値を0にセットするシーケンス(たとえば、XOR<アイテム>,<アイテム>)は、MOV<アイテム>,0で置換される;
e. 1または2の加算/減算は、1つまたは2つのINC/DEC命令で、それぞれ置換される;
f. JZ/JNZ命令は、JE/JNE命令で、それぞれ置換される;
g. 関数プロローグおよびエピローグが除去される;
h. 命令クラスCMP、MOV、およびTESTが除去される;
i. 非オペレーション(0とのADDおよびSUB;NOPなど)が除去される
を含む。
【0049】
[0060]
図7は、本発明のいくつかの実施形態によるコード正規化の例を示す。例示的なターゲットオブジェクトから逆アセンブルされるコードのフラグメントは、関数ブロック70を含む。いくつかの実施形態では、関数ブロックは、PUSH EBP;MOV EBP,ESP命令シーケンスで始まり、POP EB
Pで終わる。関数ブロック70からのコード(プロセッサ命令)のそれぞれのラインは、右に挙げる指示に従って修正されて、対応する正規化済み関数ブロック72を生成する。
【0050】
[0061]ステップ216(
図6)にて、クライアントAMアプリケーション40は、ターゲットオブジェクトのオブジェクトデータ指示子(ODI)を計算する。いくつかの実施形態では、ODIは、複数のコードブロック指示子を含み、それぞれのコードブロック指示子は、ターゲットオブジェクトの別個のコードブロックを示す。例示的なコードブロック指示子は、それぞれのコードブロックのオペコードパターンを含む。
【0051】
[0062]いくつかの実施形態では、コードブロックは、連続的なプロセッサ命令のシーケンスを含み、シーケンスは、ターゲットオブジェクトの正規化コードから抽出される。いくつかの実施形態では、コードブロックは、コードに無関係の所定の数の命令を含む。代替的に、コードブロック内の命令の計数は、所定の範囲内で変動する。例示的なコードブロックは、5と50との間の連続的な命令を含む。いくつかの実施形態では、コードブロックのサイズ(たとえば、命令の数)は、関数ブロックが2つ以上のコードブロックを含むように、関数ブロックのサイズより実質的に小さい。いくつかの実施形態では、コードブロックは、関数ブロックの開始時にまたはCALL命令で開始する。例示的なコードブロック74は
図7に示される。
【0052】
[0063]いくつかの実施形態では、ステップ216は、ターゲットオブジェクトをコードブロックに分離すること、および、こうしたそれぞれのコードブロックからオペコード指示子のセットを抽出することを含む。
図8は、プロセッサ命令80の例示的な2値メモリ表現を示す(Intel(登録商標)x86、プロセッサの32ビットファミリについて示す)。いくつかの実施形態では、それぞれのプロセッサ命令は、バイトのシーケンスとしてメモリに記憶され、そのシーケンスは、Prefixフィールド82a、Opcode(オペコード)フィールド82b〜82cのカップル、Mod/Reg/R/Mフィールド82d、およびDisplacement/Dataフィールド82eなどの命令フィールドのセットを含む。いくつかの実施形態では、Opcodeフィールド82b〜82cは、命令のタイプ(たとえば、MOV、PUSHなど)をエンコードし、一方、フィールド82a、82d〜82eは、種々の命令パラメータ(たとえば、レジスタ名、メモリアドレスなど)をエンコードする。x86フォーマットなどのいくつかの実施形態では、命令フィールドのバイトサイズおよびコンテンツは、命令依存性があり、したがって、x86アーキテクチャ用の命令は、いろいろな長さである。
図8に示す命令(XOR CL,12H)は、第1のOpcodeバイト(XORについて10000000)、Mod/Reg/R/Mバイト(レジスタCLについて11110001)、およびDisplacement/Dataバイト(00010010は、12Hについて2値である)だけを含み、一方、他の命令は、両方のOpcodeフィールド、あるいは、Prefix、Opcode、Mod、Reg、および/またはDataフィールドの他の組合せを含むことができる。
【0053】
[0064]
図9は、コードブロック74に対応する例示的なオペコードパターン90を示す。いくつかの実施形態では、オペコードパターン90は、オペコード指示子92のセットを含むデータ構造(たとえば、バイトシーケンス、リストなど)であり、それぞれのオペコード指示子は正規化コードブロック74のプロセッサ命令に対応する。例示的なオペコード指示子92は、それぞれのプロセッサ命令のOpcodeフィールドのコンテンツを含み、その場合、オペコードパターン90は、それぞれのコードブロックを構成する命令タイプのシーケンスを含む。
図9に示す実施形態では、それぞれのオペコード指示子92は、オペコードバイトおよびパラメータバイトの組合せを含む(たとえば、命令PUSH EDXについてのオペコード指示子は、16進数で52である)。
【0054】
[0065]
図10は、本発明のいくつかの実施形態による、正規化コードのフラグメントおよびフラグメントの例示的なODI100を示す。ODI100は、複数のコードブロック指示子104a〜104cを含み、それぞれのコードブロック指示子はそれぞれのコードブロック74a〜74cのダイジェスト(たとえば、指紋、シグネチャ)を提供する。例示的なコードブロック指示子104a〜104cはそれぞれのオペコードパターン90a〜90cを含む。いくつかの実施形態では、コードブロック指示子104a〜104cは、
図10に示すように、オペコードパターン90a〜90cのハッシュを含む。コードブロック指示子104a〜104c以外に、ODI100のいくつかの実施形態は、それぞれのターゲットオブジェクトをタグ付けするオブジェクト識別子(たとえば、ファイルID)および/またはターゲットオブジェクトのオブジェクト特徴指示子106のセットを含むことができる。例示的なオブジェクト特徴指示子は、とりわけ、ファイルサイズ(たとえば、130kB)、ファイルタイプ(たとえば、ファイルが、実行可能ファイルであるかどうか、DLLであるかどうかなど)の指示子、ターゲットオブジェクのメモリアドレス、および、アンチマルウェアヒューリスティック試験のセットの結果(たとえば、ターゲットオブジェクトが、あるマルウェア固有の挙動またはコンテンツを表示するかどうか)を示す数のセットを含む。いくつかの実施形態では、オブジェクト特徴指示子106は、たとえばターゲットオブジェクトの予備スキャン(ステップ202)中にAMスキャナ42〜44によって計算される。
【0055】
[0066]簡単にするために、本明細書の残りは、コードブロック指示子104a〜104cがオペコードパターン90a〜90cのハッシュを含むと仮定することになる。ステップ216(
図6)の実行は、その後、以下のように進む。クライアントAMアプリケーション40は、ターゲットオブジェクトを別個のコードブロック(
図10においてコードブロック74a〜74cで示す)に分離することができる。それぞれのコードブロック74a〜74cについて、アプリケーション40は、
図9に示すように、それぞれ、引き続きオペコードパターン90a〜90cを計算することができる。アプリケーション40は、その後、ハッシュ法(hashing)エンジン54を呼出して、オペコードパターン90a〜90cのハッシュを計算し、それにより、それぞれのコードブロック指示子(たとえば、ターゲットハッシュ)104a〜104cを生成することができる。ハッシュ法エンジン54は、とりわけ、循環冗長検査(CRC)、メッセージダイジェスト(MD)、またはセキュアハッシュ法(SHA)などのハッシュ法アルゴリズムを使用することができる。
【0056】
[0067]ターゲットODI100を計算した後、ステップ218(
図6)にて、クライアントAMアプリケーション40は、クライアントサイドキャッシュ56内でODIの探索を実施する。ODIがキャッシュレコード(キャッシュヒット)に一致し、それぞれのターゲットオブジェクトがマルウェアについて少なくとも1回、既にスキャンされていることを示す場合、アプリケーション40は、ステップ220に進んで、キャッシュレコード(たとえば、クリーンまたはマルウェア)に従ってターゲットオブジェクトをラベル付けし、先に論じたステップ232に進む。
【0057】
[0068]ターゲットODI100がクライアントサイドキャッシュ56内で照合されない場合、ステップ222にて、アプリケーション40は、クライアントーサーバスキャニングトランザクションを始動するためにクライアントAM通信マネージャ52を呼出すことができる。通信マネージャ52は、ターゲットODI100をAMサーバ20a〜20cに送信し、ステップ224にて、サーバ20a〜20cからスキャンレポート50を受信する。いくつかの実施形態ではそれぞれのODIが、別個のクライアントーサーバスキャニングトランザクションの一部を形成することができる、または、複数のODIが、同じトランザクション(バッチ処理)内で同時に送信されることができる。
【0058】
[0069]ステップ226にて、アプリケーション40は、スキャンレポート50に従ってターゲットオブジェクトがホワイトリスト化済み(クリーン)であるかどうかを判定する。はいの場合、ターゲットオブジェクトは、悪意がないとしてラベル付けされる(ステップ228)。ターゲットオブジェクトが、スキャンレポート50に従って悪意がある場合、アプリケーション40は、ターゲットオブジェクトをマルウェアとしてラベル付けする(ステップ208)。
【0059】
[0070]
図11は、本発明のいくつかの実施形態によるサーバAMアプリケーション60(
図5)によって実施される例示的なステップのシーケンスを示す。ステップ302にて、サーバAM通信マネージャ62は、ターゲットODI100をクライアントコンピュータシステム30から受信する。ステップ304にて、アプリケーション60は、サーバサイドキャッシュ68内でODI100の探索を実施する。ODIがキャッシュレコード(キャッシュヒット)に一致し、それぞれのターゲットオブジェクトがマルウェアについて少なくとも1回、既にスキャンされていることを示す場合、アプリケーション60は、ステップ306に進んで、キャッシュレコード(たとえば、クリーンまたはマルウェア)に従ってターゲットオブジェクトをラベル付けする。ステップ308にて、通信マネージャ62は、スキャンレポート50をコンパイルし、レポート50をそれぞれのクライアントコンピュータシステム30に送信する。
【0060】
[0071]ODI100のレコードがサーバサイドキャッシュ68内で見出されない場合、ステップ310にて、サーバAMアプリケーション60は、ODI100のハッシュをフィルタリングして、関連するハッシュのサブセットを生成する。いくつかの実施形態では、オブジェクト固有でないオペコードパターンのハッシュは、ODI100から廃棄されて、マルウェアスキャニングの性能を改善することができる。こうした非固有のオペコードパターンは、たとえばアンパッカコード(たとえば、インストーラ、セルフエクストラクタ)および/またはライブラリコードに対応するかまたはクリーンオブジェクトとマルウェアオブジェクトの両方の中に存在する。
【0061】
[0072]ステップ312にて、ODI100のそれぞれのハッシュについて、サーバAMアプリケーション60は、ホワイトリストデータベース65に照会して、それぞれのハッシュを含むホワイトリスト化参照オブジェクトのセットを取出すことができる。いくつかの実施形態では、ヒープベースアルゴリズムが使用されて、取出された参照オブジェクトを、ターゲットオブジェクトとのそれらの類似性に従ってランク付けする。
【0062】
[0073]ステップ314にて、サーバAMアプリケーション60は、ステップ312にて取出したそれぞれのホワイトリスト化参照オブジェクトにターゲットオブジェクトがどれほど類似しているかを特徴付ける類似性スコアを計算するためにコード比較器64を呼出す。いくつかの実施形態では、類似性スコアは、公式
【0063】
S=100*C/max(NT,NR) [1]
【0064】
に従って計算される。ここで、Cは、ターゲットオブジェクトとそれぞれの参照オブジェクトの両方に共通するハッシュの数(計数)を示し、N
Tは、上記ステップ310で論じたようにフィルタリングされたターゲットODIのハッシュの数(計数)を示し、N
Rは、参照オブジェクトのハッシュの数(計数)を示す。
【0065】
[0074]代替の実施形態は、
S=200*C/(N
T+N
R) [2]
または
S=50*(C/N
T+C/N
R) [3]
などの公式に従って類似性スコアを計算することができる。
【0066】
[0075]ステップ316にて、アプリケーション60は、類似性スコア(たとえば、公式[1])を所定の閾値と比較する。類似性スコアが閾値を超え、ターゲットオブジェクトが少なくとも1つのホワイトリスト化オブジュエクトと類似であることを示すとき、サーバAMアプリケーション60のいくつかの実施形態は、ステップ318にて、ターゲットオブジェクトを悪意がない(クリーンである)としてラベル付けすることができる。ホワイトリスト化閾値の例示的な値は50であり、ターゲットオブジェクトがホワイトリスト化済みオブジェクトとそのオペコードパターンの50%より多くを共有するとき、ターゲットオブジェクトがホワイトリスト化されていることを示す。
【0067】
[0076]次に、ステップ320は、ホワイトリストデータベース65を現在のターゲットオブジェクトによって更新し、ステップ322は、サーバサイドキャッシュ68を、ターゲットオブジェクトのレコードおよびスキャン結果(たとえば、クリーン)の指示子によって更新する。
【0068】
[0077]ホワイトリスト化類似性スコア(ステップ318)が閾値を超えず、ターゲットオブジェクトが、知られている任意のホワイトリスト化済みオブジェクトに十分に類似しないことを示すとき、サーバAMアプリケーションは、引き続きステップ324に移動し、ターゲットODI100が、マルウェアオブジェクトのレコードのセットと比較される。いくつかの実施形態では、ODI100のハッシュのセットがさらにフィルタリングされて、ホワイトリストデータベース65からのレコード(上記ステップ312参照)に一致した全てのハッシュを除去し、したがって、知られている任意のホワイトリスト化済みオブジェクト内で見出されないハッシュのサブセットを保持する。ターゲットオブジェクトの認識されないそれぞれのこうしたハッシュについて、コード比較器64は、マルウェアおよび/またはアウトブレークデータベース66〜67に照会して、それぞれのハッシュを含むマルウェアオブジェクトのセットを取出すことができる。ステップ326にて、コード比較器64は、その後、それぞれのこうしたマルウェアオブジェクトにターゲットオブジェクトがどれほど類似しているかを示すマルウェア類似性スコアを引き続き計算することができる。いくつかの実施形態では、コード比較器64は、上述した公式[1〜3]の任意の公式を使用して、マルウェア類似性スコアを計算する。
【0069】
[0078]ステップ328は、マルウェア類似性スコアをプリセット閾値と比較する。マルウェア類似性スコアが閾値を超え、ターゲットオブジェクトが、データベース、66〜67に記憶された少なくとも1つのマルウェアオブジェクトと類似であることを示すとき、ステップ330にて、ターゲットオブジェクトはマルウェアとしてラベル付けされる。マルウェアとしての分類のための例示的な値は70である(すなわち、ターゲットオブジェクトは、知られているマルウェアブジェクトとオペコードパターンの70%より多くを共有する)。次に、マルウェアおよび/またはアウトブレークデータベース66〜67は、ターゲットオブジェクトのレコードを含むように更新される。サーバサイドキャッシュ68は、ターゲットオブジェクトのレコードおよびそのマルウェアステータス(たとえば、感染済み)の指示子を含むように更新され、スキャンレポートは、コンパイルされ、クライアントコンピュータシステムに送信される(ステップ308)。
【0070】
[0079]マルウェア類似性スコアが閾値を超えず、ターゲットオブジェクトが、知られているマルウェアオブジェクトに類似しないことを示すとき、サーバAMアプリケーションのいくつかの実施形態は、ターゲットオブジェクトをホワイトリスト化済み/悪意がないとしてラベル付けし(ステップ318)、ホワイトリスト化データベース65を相応して更新することができる。
【0071】
[0080]ターゲットODI100はまた、アルウェアアウトブレーク警報をトリガすることができる。いくつかの実施形態では、サーバAMアプリケーション60は、アウトブレークデータベース67からの参照オブジェクトを計数し、オブジェクトは、ターゲットオブジェクトに類似であり、また、所定の時間枠(たとえば、最新の6時間)内でAMサーバシステム20a〜20cによって受信されている。その計数が閾値(たとえば、10)を超えるとき、マルウェアアウトブレークが仮定され、ターゲットオブジェクトならびにそれと類似である全ての参照オブジェクトが、感染済みであるとしてマーキングされる。マルウェアおよび/またはアウトブレークデータベース66〜67は、その後、相応して更新される。
【0072】
[0081]上述した例示的なシステムおよび方法は、アンチマルウェアシステムが、柔軟性のあるホワイトリストデータベースを維持し、ホワイトリストデータベースを使用して、マルウェア検出性能を改善することを可能にする。
【0073】
[0082]従来のホワイトリスト化アプリケーションでは、ターゲットオブジェクト(コンピュータファイルまたはプロセス)のハッシュは、ホワイトリスト化済みオブジェクト(クリーンであると信頼されるオブジェクト)に対応するハッシュのセットと比較される。ターゲットオブジェクトのハッシュがホワイトリスト化ハッシュに一致し、ターゲットオブジェクトが、ホワイトリスト化済みオブジェクトの少なくとも1つのホワイトリスト化済みオブジェクトと同一であることを示すとき、ターゲットオブジェクトは、トラステッドであり、たとえば、実行することを許可される。ハッシュ関数の数学的なある特性のために、従来のホワイトリスト化は、ホワイトリスト化済みオブジェクトのコードの変動を可能にしない。すなわち、2つのオブジェクトが、わずか1ビットだけ異なる場合、2つのオブジェクトのハッシュはもはや一致しない。一方、正当なコンピュータファイルおよびプロセスは、たとえば、コンパイラ間のまたは同じソフトウェアの連続するバージョン間の差によって、かなりの変動を表示することができる。
【0074】
[0083]上述したシステムおよび方法のいくつかの実施形態は、アンチマルウェアシステムが、コンパイラおよび他の多相性によって導入される差などのデータオブジェクト間の良性の差(benign difference)を反映することを可能にする。ターゲットオブジェクトは複数のコードブロックに分離され、それぞれのコードブロックについてハッシュが計算される。得られるターゲットハッシュのセットは、その後、ホワイトリスト化済みオブジェクトから抽出されるコードブロックに対応するハッシュのデータベースと比較される。ターゲットオブジェクトは、ホワイトリスト化済みオブジェクトと共通にかなりの数のハッシュを有する場合、ホワイトリスト化済み(トラステッドである)としてラベル付けされることができる。知られているホワイトリスト化済みオブジェクトとわずかに異なるオブジェクトは、ホワイトリスト化ステータスを依然として受信することができる。別個のオブジェクトのハッシュのセット間に、ある程度の不一致を許可することによって、本発明のいくつかの実施形態は、データ安全性を許容できないほどに減少させることなく、ホワイトリスト化の効率を増加させる。
【0075】
[0084]コードブロックのサイズは、いくつかの基準に従って決定されることができる。小さなコードブロックは(たとえば、少数のプロセッサ命令はそれぞれ)、ターゲットオブジェクトについて多数のハッシュをもたらす場合があり、それが、アンチマルウェアサーバの記憶および処理負荷を増加させ、スキャニングを減速させる場合がある。一方、小さなコードブロックは、かなりの程度の柔軟性を提供する。すなわち、2つのオブジェクトがほんのわずかに異なる場合、その差は、ハッシュのごく一部によって取上げられ、高い類似性スコアを生成することになる。大きなコードブロック(たとえば、数百のプロセッサ命令)は、平均して、ターゲットオブジェクトについて少数の(たとえば、いくつかの)ハッシュを生成し、したがって、記憶および処理の観点から有利である。しかし、大きなコードブロックは、従来のハッシュ処理と同じ欠点にさらされる。すなわち、2つのオブジェクト間の小さな差は、ハッシュの大部分によって取上げられ、低い類似性スコアを生成する場合がある。試験が明らかにしたところによれば、いくつかの実施形態では、最適なコードブロックサイズは、5と50との間のプロセッサ命令、特に約5〜15(たとえば、約10)の命令であるということである。
【0076】
[0085]上述した例示的なシステムおよび方法は、アンチマルウェアシステムが、協調的クライアントーサーバスキャニングトランザクションを実施し、ターゲットオブジェクトのサーバサイドスキャンの結果に従ってターゲットオブジェクトのマルウェアステータスにアクセスすることを可能にする。リモートアンチマルウェアサーバ上でマルウェアスキャンの一部を実施することは、クライアントコンピュータシステム上でのターゲットオブジェクトのローカルスキャニングに優るいくつかの利点を有する。
【0077】
[0086]マルウェアエージェントおよびソフトウェアの急増は、一般に、ホワイトリストおよびマルウェアハッシュデータベースのサイズの着実な増加に寄与してきており、それは、数メガバイトから数ギガバイトのデータになる。上述した例示的な方法およびシステムは、アンチマルウェアサーバ上にハッシュデータベースを記憶することを可能にし、したがって、コーポレートサーバから多数の顧客への、データが重いソフトウェアの定期的ベースでの更新の送出を回避する。
【0078】
[0087]マルウェアスキャニングのかなりの部分を主にサーバ上で実施することによって、上述したシステムおよび方法は、新たに検出されたマルウェアおよび新しい正当なソフトウェアについてのハッシュの時宜を得た組込みを可能にする。対照的に、スキャニングがクライアントコンピュータシステムに主に分配される従来のマルウェア検出では、新しいセキュリティ脅威および新しいホワイトリスト化済みソフトウェアに関する情報収集は、アンチマルウェアソフトウェア製作者に達するのにかなり長い時間かかる間接的な方法を含む場合がある。
【0079】
[0088]上述したクライアントシステムとアンチマルウェアサーバシステムとの間で交換されるファイルのサイズは最小に維持される。サーバサイドスキャニングのために、クライアントからサーバにターゲットオブジェクト全体を送信する代わりに、上述した例示的な方法およびシステムは、ターゲットオブジェクトについて数バイトから数キロバイトになる場合があるハッシュを交換するように構成され、したがって、ネットワークトラフィックを大幅に低減する。
【0080】
[0089]上記実施形態が、本発明の範囲から逸脱することなく多くの方法で変更されることができることが当業者に明らかになる。したがって、本発明の範囲は、添付特許請求の範囲およびそれらの法的な均等物によって決定されるべきである。