(57)【特許請求の範囲】
【請求項１】
各々が相互関連オブジェクトのセットを備える複数のアプリケーションがインストールされたコンピュータを分析する方法であって、
前記コンピュータのプロセッサにて、少なくとも１つの前記アプリケーションのローカルなアプリケーション依存関係ネットワークを特定するステップであって、前記ローカルなアプリケーション依存関係ネットワークは少なくとも前記相互関連オブジェクトのオブジェクトパスおよびオブジェクト間の関係のセットを備える、ステップと、
前記コンピュータと通信する中央サーバーのプロセッサにて、前記ローカルなアプリケーション依存関係ネットワークに関連付けられた前記アプリケーションが既知であるかどうかを判断するために、前記ローカルなアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較するステップと、
前記コンピュータの前記プロセッサにて、前記コンピュータ内のマルウェアおよび／またはオーファンオブジェクトを特定するために前記比較の結果を使用するステップと
を備える方法。
【請求項２】
前記相互関連オブジェクトは、実行可能ファイル、データファイル、レジストリキー、レジストリ値、レジストリデータ、および起動ポイントのうちの１つまたは複数を有する請求項１に記載の方法。
【請求項３】
前記コンピュータの前記プロセッサにて、ローカルなアプリケーション依存関係ネットワークの前記相互関連オブジェクトのオブジェクトパスを特定するステップと、前記コンピュータの前記プロセッサにて、前記特定されたパスをシステム非依存にするために正規化するステップとを更に備える請求項１または２に記載の方法。
【請求項４】
ローカルなアプリケーション依存関係ネットワークの前記相互関連オブジェクトのオブジェクトパスは、前記コンピュータでアプリケーションのインストールプログラムが起動されたときに、前記コンピュータの前記プロセッサにて、活動を追跡することにより特定される請求項１〜３のいずれか１項に記載の方法。
【請求項５】
ローカルなアプリケーション依存関係ネットワークの前記相互関連オブジェクトのオブジェクトパスは、前記コンピュータで前記アプリケーションのインストール前後にシステムのスナップショットを取得し、前記２つのスナップショット間の違いを前記コンピュータの前記プロセッサにて特定することにより特定される請求項１〜３のいずれか１項に記載の方法。
【請求項６】
ローカルなアプリケーション依存関係ネットワークは、
１）前記コンピュータの前記プロセッサにて、特定の入力オブジェクトに対して、前記入力オブジェクトに依存する他のすべてのオブジェクトの検索を行うステップと、
２）前記入力オブジェクトのパスおよび前記検索で見つかった他のすべてのオブジェクトのパス、並びにそれらのオブジェクト間の関係を前記コンピュータ内の結果ファイルに格納するステップと、
３）さらなる依存オブジェクトが見つからなくなるまで、それぞれの他のオブジェクトに対して再帰的に前記ステップ１）および前記ステップ２）を繰り返すステップと、
４）前記結果ファイル内の前記入力オブジェクトおよび前記検索で見つかった他のオブジェクトのパスを前記コンピュータの前記プロセッサにて正規化するステップと
により特定される請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記既知のアプリケーション依存関係ネットワークの前記データベースは、１以上のコンピュータでの既知のアプリケーションのインストールを前記中央サーバーの前記プロセッサで監視して、これらの既知のアプリーションに対応するアプリケーション依存関係ネットワークをキャプチャすることにより設定される請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記既知のアプリケーション依存関係ネットワークの前記データベースは、分散クライアントベースのローカルシステムからアプリケーション依存関係ネットワークを前記中央サーバーの前記プロセッサで収集することにより設定される請求項１〜６のいずれか１項に記載の方法。
【請求項９】
前記比較するステップで判明した未知のアプリケーションに対応する未知のローカルなアプリケーション依存関係ネットワークに対して、前記コンピュータの前記プロセッサにて、前記未知のローカルなアプリケーション依存関係ネットワークに属するオブジェクトのさらなるマルウェアのスキャンを行うステップを更に含む請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
前記さらなるマルウェアのスキャンは、
前記コンピュータの前記プロセッサにて、アプリケーションバイナリ証明書のチェックを行うステップ、および
前記コンピュータの前記プロセッサにて、前記未知のローカルなアプリケーション依存関係ネットワークで特定されたオブジェクトに対してヒューリスティック分析を実行するステップ
のいずれかまたは両方のステップと、
前記アプリケーションが悪意のあることが判明した場合、前記コンピュータの前記プロセッサにて、前記未知のローカルなアプリケーション依存関係ネットワークで特定された前記オブジェクトを前記コンピュータから除去するか、別な方法で安全にするステップと
を含む請求項９に記載の方法。
【請求項１１】
前記さらなるマルウェアのスキャンの後に正規品であることが判明した未知のローカルなアプリケーションの前記ローカルなアプリケーション依存関係ネットワークは、前記中央サーバーの前記プロセッサにて、前記既知のアプリケーション依存関係ネットワークの前記データベースに入力される請求項９または１０に記載の方法。
【請求項１２】
前記さらなるマルウェアのスキャンは、
前記コンピュータの前記プロセッサにて、アプリケーションバイナリ証明書のチェックを行うステップ、および
前記コンピュータの前記プロセッサにて、前記未知のローカルなアプリケーション依存関係ネットワークで特定されたオブジェクトに対してヒューリスティック分析を実行するステップ
のいずれかまたは両方のステップと、
前記アプリケーションが悪意のあることが判明した場合、前記コンピュータの前記プロセッサにて、他の既知のアプリケーション依存関係ネットワークと共有されたオブジェクトを除いて、前記未知のローカルなアプリケーション依存関係ネットワークで特定された前記オブジェクトを前記コンピュータから除去するか、別な方法で安全にするステップと
を備える請求項９に記載の方法。
【請求項１３】
各々が相互関連オブジェクトのセットを備える複数のアプリケーションがインストールされたコンピュータに記憶可能であって、前記コンピュータを、
前記コンピュータにインストールされた少なくとも１つのアプリケーションについてのローカルなアプリケーション依存関係ネットワークを特定するための手段であって、前記ローカルなアプリケーション依存関係ネットワークは少なくとも前記相互関連オブジェクトのオブジェクトパスおよびオブジェクト間の関係のセットを備える、特定するための手段と、
前記ローカルなアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較した結果である、前記ローカルなアプリケーション依存関係ネットワークに関連付けられた前記アプリケーションが既知であるかどうかを示す結果を、前記コンピュータと通信する中央サーバーから得るための手段と、
前記コンピュータ内のマルウェアおよび／またはオーファンオブジェクトを特定するために前記比較の結果を使用するための手段と
して機能させるためのコンピュータプログラム。
【請求項１４】
各々が相互関連オブジェクトのセットを備える複数のアプリケーションがインストールされたクライアントコンピュータであって、
前記クライアントコンピュータにインストールされた少なくとも１つのアプリケーションについてのローカルなアプリケーション依存関係ネットワークを特定するためのシステムスキャナであって、前記ローカルなアプリケーション依存関係ネットワークは少なくとも相互関連オブジェクトのオブジェクトパスおよびオブジェクト間の関係のセットを備える、システムスキャナと、
前記ローカルなアプリケーション依存関係ネットワークに関連付けられた前記アプリケーションが既知であるかどうかを判断するために、前記ローカルなアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較した結果を得るための結果ハンドラと、
前記クライアントコンピュータ内のマルウェアおよび／またはオーファンオブジェクトを特定するために前記比較の前記結果を使用するためのポリシングユニットと
を備えるクライアントコンピュータ。
【請求項１５】
多数のクライアントコンピュータにサービスを提供するためのサーバー・コンピュータ・システムであって、
既知のアプリケーション依存関係ネットワークのデータベースであって、各アプリケーション依存関係ネットワークが相互関連オブジェクトのオブジェクトパスおよびオブジェクト間の関係を含む、データベースと、
前記クライアントコンピュータの１つまたは複数からローカルなアプリケーション依存関係ネットワークを受信するための受信機と、
前記ローカルなアプリケーションが既知であるかどうかを判断するために、前記データベース内の前記既知のアプリケーション依存関係ネットワークに対して、前記受信したローカルなアプリケーション依存関係ネットワークを比較するための依存関係ネットワークコンパレータと、
前記クライアントコンピュータそれぞれに前記比較の結果を送信するための送信機と
を備えるサーバー・コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムを分析するための方法および装置、特にコンピュータシステムにインストールされているアプリケーションを分析するためのものに関する。具体的には、必ずしもそうではないが、本発明は、マルウェアの検出および除去、ならびにシステムの最適化で前記分析を利用するための方法および装置に関する。
【背景技術】
【０００２】
マルウェアは、悪意のあるソフトウェアの略であり、所有者の同意を得ることなくコンピュータシステムに潜入するか、または損害を与えるように設計された任意のソフトウェアを参照するための用語として使用される。マルウェアは、コンピュータウイルス、ワーム、トロイの木馬、ルートキット、およびスパイウェアを含むことができる。マルウェアの感染に関連する問題を防止するために、多くのエンドユーザーは、マルウェアを検出するとともにできる限り除去するアンチウイルスソフトウェアを使用している。
【０００３】
ユーザーのシステムへのインストール後に、マルウェアは、多くの場合人気のある、および／またはありふれた既存の正規のソフトウェアのファイル名を模倣することにより検出を回避する。この例としては、Ｔｒｏｊ／Ｔｏｒｐｉｄ−Ｃダウンローダのトロイの木馬があり、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄの典型的なプロセス名である名前「ｗｉｎｗｏｒｄ．ｅｘｅ」を使用している。したがって、トロイの木馬のプロセスがタスクマネージャ上で目立たなくなる。検出を回避するマルウェアが使用する別の技術は、その実行可能ファイルに対してランダムな名前を生成することである。ランダムな名前は曖昧であり、アンチウイルスソフトウェアがファイル名のパターンを使用してマルウェアを検出することを妨げる場合がある。同様のステルス手法は、レジストリのパスおよびキーにも当てはまる。マルウェアは、ランダムおよび共通の「ＲＵＮ」キーの値を選択する。
【０００４】
パターン認識に基づくアンチウイルスエンジン（すなわち、マルウェアの「指紋」を探索するエンジン）のために常に適切な環境があるべきである一方、マルウェアを示すパターンが既知またはアンチウイルスエンジンにより予測可能でなければならないので、相変わらず低速であり、事前対応性（ｐｒｏａｃｔｉｖｅ）というよりも事後対応性（ｒｅａｃｔｉｖｅ）であろう。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一目的は、コンピュータシステム上のマルウェアを検出するためのメカニズムを提供することであり、システム上でのオブジェクトのネットワークの検出に依存し、オブジェクトのネットワークはプログラム、アプリケーション、ファイル等に関連付けられている、または関連付けられていてもよい。これらのプログラム、アプリケーション、ファイル等のいくつかは、既知で信頼できる場合があり、いくつかは既知で信頼できない場合があり、いくつかは不明の場合がある。
【課題を解決するための手段】
【０００６】
本発明の第１の態様によれば、相互関連オブジェクトのセットをそれぞれが備える複数のアプリケーションがインストールされているコンピュータを分析する方法が提供される。この方法は、最初に前記アプリケーションの１つまたは複数ごとのローカルな依存関係ネットワークを特定することを備え、ローカルな依存関係ネットワークは少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える。次いで、当該（または各）ローカルなアプリケーション依存関係ネットワークは、ローカルな依存関係ネットワークに関連付けられたアプリケーションが既知であるかどうかを判定するために既知のアプリケーション依存関係ネットワークのデータベースと比較される。次いで、比較の結果は、マルウェアおよび／またはオーファンオブジェクトを特定するために使用される。
【０００７】
本発明の実施形態は、マルウェアのためにコンピュータをスキャンするより高速な方法を提供してもよく、従来のスキャン方法よりも大幅に少ない処理能力を必要としてもよい。加えて、本発明の実施形態は、コンピュータからマルウェアを除去するための改善された方法を提供してもよい。マルウェアアプリケーションのために依存関係ネットワーク全体が特定され、したがって、削除中に悪意のあるアプリケーションのコンポーネントのすべてが除去されることを確保することができる。
【０００８】
相互関連オブジェクトは、１つまたは複数の実行可能ファイル、データファイル、レジストリキー、レジストリ値、レジストリデータ、または起動ポイントであってもよい。
【０００９】
この方法は、ローカルなアプリケーション依存関係ネットワークのオブジェクトのパスを特定すること、およびパスをシステムから非依存にするために正規化することをさらに備えていてもよい。
【００１０】
ローカルなアプリケーション依存関係ネットワークのオブジェクトパスは、アプリケーションのインストールプログラムが起動されたときに活動を追跡することにより、またはアプリケーションのインストール前後にシステムスナップショットを取り、２つのスナップショット間の違いを特定することにより特定してもよい。あるいは、ローカルなアプリケーション依存関係ネットワークは：
特定の入力オブジェクトに対して、この入力オブジェクトに依存する他のオブジェクトのすべての検索を行うこと、
入力オブジェクトのパスおよび検索で見つかった他のオブジェクトのすべて、およびそれらのオブジェクト間の関係を結果ファイルに格納すること、
それ以上の依存オブジェクトが見つからなくなるまで、それぞれの他のオブジェクトに対してこれらのステップを再帰的に繰り返すこと、および、
結果ファイル内のオブジェクトパスを正規化すること、
により特定されてもよい。
【００１１】
既知のアプリケーション依存関係ネットワークのデータベースは、それらの依存関係ネットワークをキャプチャするために既知のアプリケーションのインストールを監視することにより、または代わりに分散クライアントベースのローカルシステムからアプリケーション依存関係ネットワークを収集することにより事前設定されてもよい。
【００１２】
この方法は、クライアントコンピュータで１つまたは複数の前記アプリケーションごとのローカルな依存関係ネットワークを特定する前記ステップを実行すること、および中央サーバーで当該または各ローカルなアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較する前記ステップを実行することを備えていてもよい。
【００１３】
この方法は、不明であるアプリケーション依存関係ネットワークに対して、未知のアプリケーション依存関係ネットワークに属するオブジェクトのさらなるマルウェアスキャンを行うことをさらに備えてもよい。このさらなるマルウェアスキャンは、従来のアンチウイルススキャン技術、例えば：
アプリケーションバイナリ証明書のチェックを行うこと、および
未知のローカルなアプリケーション依存関係ネットワークで特定されたオブジェクトに対してヒューリスティック分析を実行すること
のいずれか、または両方をさらに備えていてもよい。
【００１４】
未知のローカルなアプリケーション依存関係ネットワークで特定されたオブジェクトは、多分他の既知のアプリケーション依存関係ネットワークと共有されるオブジェクトを除いて、アプリケーションが悪意のあることが判明した場合、クライアントコンピュータから除去されるか、または別の方法で安全にされてもよい。
【００１５】
前記さらなるマルウェアスキャンの後に正規品であることが判明した未知のローカルなアプリケーションのアプリケーション依存関係ネットワークは、既知のアプリケーション依存関係ネットワークのデータベースに入力されてもよい。
【００１６】
本発明の第２の態様によれば、本発明の第１の態様の方法をコンピュータに行わせるためのコンピュータプログラムが提供される。
【００１７】
本発明の第３の態様によれば、クライアントコンピュータが提供される。クライアントコンピュータは、クライアントコンピュータにインストールされた１つまたは複数のアプリケーションごとにローカルな依存関係ネットワークを特定するためのシステムスキャナを備え、ローカルなアプリケーション依存関係ネットワークは、少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える。クライアントコンピュータはまた、ローカルなアプリケーション依存関係ネットワークに関連付けられたアプリケーションが既知であるかどうかを判定するために、当該または各ローカルなアプリケーション依存関係ネットワークを既知のアプリケーション依存関係ネットワークのデータベースと比較した結果を得るための結果ハンドラを備える。クライアントコンピュータは、マルウェアおよび／またはオーファンオブジェクトを特定するために比較の結果を使用するためのポリシングユニットをさらに備える。
【００１８】
本発明の第４の態様によれば、多数のクライアントコンピュータにサービスを提供するためのサーバー・コンピュータ・システムが提供される。サーバー・コンピュータ・システムは、既知のアプリケーション依存関係ネットワークのデータベースを備え、各アプリケーション依存関係ネットワークは、少なくともオブジェクトパスおよびオブジェクト間の関係のセットを備える。サーバーコンピュータはまた、前記クライアントコンピュータの１つまたは複数からローカルなアプリケーション依存関係ネットワークを受信するための受信機を備える。関連付けられているローカルなアプリケーションが既知であるかどうかを判定するために、受信したローカルなアプリケーション依存関係ネットワークをデータベース内の既知のアプリケーション依存関係ネットワークと比較するように依存関係ネットワークコンパレータが提供される。サーバーコンピュータはまた、それぞれのクライアントコンピュータに比較の結果を送信するための送信機を備える。
【図面の簡単な説明】
【００１９】
【図１】本発明の一実施形態による、アプリケーション依存関係ネットワークを特定するプロセスを示すフロー図である。
【図２】本発明の一実施形態による、悪意のあるソフトウェアの検出および除去を行うプロセスを示すフロー図である。
【図３】本発明の一実施形態による、失われたフラグメントを検出および除去をもする、悪意のあるソフトウェアの検出および除去を行う強化されたプロセスを示すフロー図である。
【図４】本発明の一実施形態によるコンピュータシステムを概略的に示す。
【発明を実施するための形態】
【００２０】
本明細書で説明するマルウェアスキャンのアプローチは、１つまたは複数の中央サーバーおよび多数のクライアントコンピュータを備えたコンピュータシステムの文脈で提示される。クライアントコンピュータは、インターネットを介して中央サーバー（複数可）と通信する。アプローチを採用され得る他のコンピュータ・システム・アーキテクチャは、当業者に容易に明らかであろう。
【００２１】
クライアントコンピュータ上のアプリケーションは、少なくともデータファイル、ディレクトリおよびレジストリ情報（後者はアプリケーションの構成や設定を含む）を含む関連するオブジェクトのセットから通常成る  −  アプリケーションの実行可能ファイルへのデスクトップ・ショートカット・ポイント；アプリケーションの実行可能ファイルは他のアプリケーションファイルおよびライブラリが置かれているディレクトリに格納される；アプリケーションを実行するのに必要なデータファイルおよび他の実行可能ファイルの場所へのアプリケーション・レジストリ・ポイント。関連するオブジェクトおよびその関係のセットは、アプリケーションのための「依存関係ネットワーク」と考えることができる。
【００２２】
オブジェクト名、絶対パス等に関係なく、特定のアプリケーションが、インストール時に、それがインストールされるクライアントコンピュータの構成に関係なく、特定のアプリケーション依存関係ネットワークを構築することが理解されるであろう（様々なクライアントコンピュータ上で同じオペレーティングシステムが使用されていると仮定して）。換言すれば、アプリケーションのためのアプリケーション依存関係ネットワークは、コンピュータに依存しない。したがって、アプリケーション依存関係ネットワークは、アンチウイルス・スキャン・エンジンでマルウェアを特定するのに有用であり得る。
【００２３】
特定のアプリケーションのための依存関係ネットワークを特定するためのいくつもの方法がある。アプリケーションのインストール中に使用することができるこのような２つの方法が最初に提示される。
【００２４】
第１の方法は、クライアントコンピュータ上でインストーラの活動を追跡することである。これを行うために、インストールプログラムは、フィルタドライバが任意の活動を監視し、インストーラまたはその子プロセスにより作成されたファイル、ディレクトリ、レジストリ情報など、オブジェクトのすべてを追跡できるように、管理対象環境内で起動される。フィルタドライバは、例えばファイル・システム・ドライバなどの低レベルコンポーネントであり、ファイルまたはディレクトリの作成およびファイルの修正または名称変更などのファイル操作をキャプチャおよび記録することができる。
【００２５】
第２の方法は、システムスナップショットの「差分抽出（ｄｉｆｆｉｎｇ）」を使用することである。この第２の方法では、システムスナップショットはアプリケーションのインストール前後にクライアントコンピュータ上で取得される。スナップショットは、ファイル、ディレクトリ、およびレジストリ情報を含むであろう。  ２つのスナップショット間の差分を特定することにより、インストールプロセス中にインストーラにより作成されたオブジェクトを特定することができる。新しくインストールされたオブジェクトが一旦特定されると、これを行うために採用される方法に関係なく、オブジェクト間の関係、例えばオブジェクトＡがオブジェクトＢを指し示すなどを判断することが必要である。オブジェクトパスは、オブジェクト間の関係と共に、アプリケーション依存関係ネットワークを定義する。
【００２６】
アプリケーション依存関係ネットワークを特定するためのすべての方法は、少なくとも、インストーラにより作成されるオブジェクトパスのリストを返す。パスをコンピュータに依存しないようにするために、他のコンピュータが異なる構成を有していてもよいように、それらがまず正規化されなければならない。正規化プロセスは、アプリケーション・インストール・フォルダ、ｔｅｍｐディレクトリ、ユーザー・プロファイル・ディレクトリ、システムディレクタ等に対するディレクトリを固定キーワードと置換する。例えば：
％ＩＮＳＴＡＬＬ＿ＤＩＲ％  −  は、アプリケーションがインストールされている正規化されたパスである。特定のコンピュータ上では、実際のインストールディレクトリ、例えば「ｃ：＼Ｐｒｏｇｒａｍ  Ｆｉｌｅｓ＼Ｍｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ」に変換することができる。
【００２７】
正規化後、アプリケーション依存関係ネットワークは次のようなオブジェクトパスを含む：
％ＩＮＳＴＡＬＬ＿ＤＩＲ％＼ｆｉｒｅｆｏｘ．ｅｘｅ
％ＩＮＳＴＡＬＬ＿ＤＩＲ％＼ｘｕｌ．ｄｌｌ
％ＩＮＳＴＡＬＬ＿ＤＩＲ％＼ＡｃｃｅｓｓｉｂｌｅＭａｒｓｈａｌ．ｄｌｌ
％ＩＮＳＴＡＬＬ＿ＤＩＲ％＼ａｐｐｌｉｃａｔｉｏｎ．ｉｎｉ
％ＵＳＥＲ＿ＰＲＯＦＩＬＥ％＼Ａｐｐｌｉｃａｔｉｏｎ  Ｄａｔａ＼Ｍｏｚｉｌｌａ＼Ｆｉｒｅｆｏｘ＼
【００２８】
さらに、以下のような、レジストリキー、起動ポイント、および値に関連する正規化されたオブジェクトパスを備えることができる：
ＨＫＥＹ＿ＣＬＡＳＳＥＳ＿ＲＯＯＴ＼．ｈｔｍ＼ＯｐｅｎＷｉｔｈＬｉｓｔ＼ｆｉｒｅｆｏｘ．ｅｘｅ
ＨＫＥＹ＿ＣＬＡＳＳＥＳ＿ＲＯＯＴ＼．ｘｈｔ
ＨＫＥＹ＿ＣＬＡＳＳＥＳ＿ＲＯＯＴ＼Ａｐｐｌｉｃａｔｉｏｎｓ＼ｆｉｒｅｆｏｘ．ｅｘｅ＼ｓ  ｈｅｌｌ＼ｏｐｅｎ＼ｃｏｍｍａｎｄ
（デフォルト値）、ＲＥＧ＿ＳＺ、  ”％ＩＮＳＴＡＬＬ＿ＤＩＲ％＼ｆｉｒｅｆｏｘ．ｅｘｅ  −ｒｅｑｕｅｓｔＰｅｎｄｉｎｇ  −ｏｓｉｎｔ  −ｕｒｌ  ”％１”
【００２９】
上記に示したように、オブジェクトはアプリケーション依存関係ネットワークを定義するのにも寄与する、それらの間の関係を有する。これらの関係を特定するために、オブジェクト依存関係情報が使用される。例えば、上記のオブジェクトの例を使用して、拡張子．ｘｈｔを持つファイルをユーザーがクリックするといつでもｆｉｒｅｆｏｘ．ｅｘｅが起動される。これはファイルがｆｉｒｅｆｏｘ．ｅｘｅに依存しているためである。したがってオブジェクト間の関係は、オブジェクト”％ＩＮＳＴＡＬＬ＿ＤＩＲ％＼ｆｉｒｅｆｏｘ．ｅｘｅおよびレジストリ・キー・オブジェクトＨＫＥＹ＿ＣＬＡＳＳＥＳ＿ＲＯＯＴ＼．ｘｈｔとの間で特定することができる。％ＩＮＳＴＡＬＬ＿ＤＩＲ％＼ｆｉｒｅｆｏｘ．ｅｘｅを含むがＨＫＥＹ＿ＣＬＡＳＳＥＳ＿ＲＯＯＴ＼．ｘｈｔと対応関係のないコンピュータ上のアプリケーション依存関係ネットワークがある場合、アプリケーションが正規のＦｉｒｅｆｏｘアプリケーションを模倣しようとしていることを、または正規のＦｉｒｅｆｏｘアプリケーションが正しくインストールまたはアンインストールされていないことを意味する場合がある。
【００３０】
アプリケーション依存関係ネットワークを特定するための上記の方法は、新しいアプリケーションがインストールされているときに、クライアントコンピュータ上でアンチウイルス・スキャン・エンジンがインストールされ実行される場合には、もちろん使用されることができる。以前にインストールしたアプリケーションをスキャンするためには、すなわち、スキャンエンジンをインストールする前にインストールした場合、またはアンチウイルススキャンを起動することなく巧く自分自身をインストールしたマルウェアを特定するためには、別のアプローチが必要であり、これは以前に作成されたアプリケーション依存関係ネットワークを判断することができる。また、この別のアプローチは、現在クライアントコンピュータ上でのオブジェクトのすべておよび関係を判断するために、クライアントコンピュータ上でシステムの完全スキャンを実行するようにアンチウイルス・スキャン・エンジンを有効にする（ｅｎａｂｌｅ）ことができる。このシステムの完全スキャンは、完全なアプリケーション依存関係ネットワークの一部ではない、残りのオブジェクトおよびオブジェクト間の関係だけでなく、クライアントコンピュータに既にインストールされているすべてのアプリケーションのためのアプリケーション依存関係ネットワーク（ローカルなアプリケーション依存関係ネットワーク）を返す。
【００３１】
図１は、この別の方法を示すフロー図である。この方法の主なステップは次のとおりである：
【００３２】
Ａ１．クライアントコンピュータは、（オブジェクトパスにより定義されている）入力オブジェクトで始まる。これはシステム上の任意のオブジェクト、または知的な方法で選択されたオブジェクト、例えば、ａ．ｅｘｅファイルである場合がある。
【００３３】
Ａ２．クライアントコンピュータは、入力オブジェクトに依存する他のオブジェクトのすべての検索を実行する。例えば、上記の特定の例を使用して、Ｆｉｒｅｆｏｘアプリケーションパス上で実行される検索は、．ｘｈｔ拡張子レジストリキーがＦｉｒｅｆｏｘアプリケーションに依存していることがわかるであろう。
【００３４】
Ａ３．クライアントコンピュータは検索から結果があるかどうかを判定する。
【００３５】
Ａ４．結果が得られた場合、クライアントコンピュータは、これら他のオブジェクトのパスおよびそれらのオブジェクト間の関係を結果ファイルに格納する。次いで、それ以上の依存オブジェクトが見つからなくなるまで、それぞれの他のオブジェクトに対するＡ１からＡ４のステップが、再帰的に繰り返される。したがって、依存関係ネットワーク内のオブジェクトのすべてが見つかるまで検索は、分岐する。依存オブジェクトの検索は、通常一連の規則に従う、例えば：
【００３６】
【表１】
0005963008.tif 000002
【００３７】
Ａ５．ステップＡ３でそれ以上の結果が返されない場合、クライアントコンピュータは結果ファイル内のオブジェクトパスを正規化する（前述のとおり）。この結果ファイルの内容は、アプリケーション依存関係ネットワークである。この内容は、完全なアプリケーション依存関係ネットワークの一部ではない正規化されたオブジェクトパスおよびオブジェクト間の関係であってもよいが、この段階ではローカルなアプリケーション依存関係ネットワークとして特定されることになる。
【００３８】
システム全体のスキャン中、関心となるオブジェクトのすべてが少なくとも１つの依存関係ネットワークに追加されるまで、この方法のステップは繰り返される（図１の破線の矢印で示されるとおり）。もちろん、いくつかのアプリケーション依存関係ネットワークは１つだけまたは少数のオブジェクト（パス）を含んでいてもよく、例えば、これらのオブジェクトは不完全なアンインストール操作後に残っているフラグメントである。
【００３９】
図２は、アンチウイルススキャン方法の第２段階を示すフロー図である。行われるステップは次のとおりであり、図２の左側のステップはクライアントコンピュータで実行され、図２の右側のものは中央サーバーで実行される：
【００４０】
Ｂ１．第２段階は、クライアントコンピュータが中央サーバーに送信する、段階１で特定されたローカルなアプリケーション依存関係ネットワークの最初を選択することにより開始する。
【００４１】
Ｂ２．中央サーバーは、ローカルなアプリケーション依存関係ネットワークに一致するエントリを既知の信頼できるアプリケーション依存関係ネットワークのデータベースで検索し、それに応じてローカルなアプリケーション依存関係ネットワークが既知の信頼できる、または不明であるかどうかの通知をクライアントコンピュータに返信する。
【００４２】
Ｂ３．クライアントコンピュータが「既知の信頼できる」通知を受信した場合、段階１で規定されるように、アンチウイルス・スキャン・エンジンは、さらに選択したローカルなアプリケーション依存関係ネットワークのための方法をステップＢ１で再び開始することができる（図２の破線の矢印で示される）。
【００４３】
Ｂ４．クライアントコンピュータが「未知の」通知を受信した場合、アンチウイルス・スキャン・エンジンはステップＢ５に進む。
【００４４】
Ｂ５．次いで、アンチウイルス・スキャン・エンジンは、従来のアンチウイルススキャン（例えば、アプリケーション・バイナリ・チェックおよび／またはヒューリスティック分析を採用する）をローカルなアプリケーション依存関係ネットワークが対応しているアプリケーション上で開始する。
【００４５】
Ｂ６．アンチウイルス・スキャン・エンジンは、アプリケーションが正規品であるかどうかをステップＢ５における従来のアンチウイルススキャンから判定する。
【００４６】
Ｂ７．次いで、アプリケーションが正規品であると判断された場合、クライアントコンピュータは、既知の信頼できるアプリケーション依存関係ネットワークのデータベースのエントリとして未知のアプリケーション依存関係ネットワークが順番に追加される（または、中央サーバーでのさらなる分析に基づいて、および／またはすべてのユーザーから集められたレスポンスに基づいて、それが含まれると考慮する）メッセージを中央サーバーに送信する。
【００４７】
Ｂ８．アプリケーションがステップＢ５において正規品と判断されない場合、アンチウイルス・スキャン・エンジンは、ローカルなアプリケーション依存関係ネットワーク内のオブジェクトパスのいずれかが他のローカルなアプリケーション依存関係ネットワークで共有されているかどうかを判定する。
【００４８】
Ｂ９．共有オブジェクトのパスが存在しない場合、アンチウイルス・スキャン・エンジンは、アプリケーション依存関係ネットワーク内のパスにより特定されるオブジェクトのすべてをクライアントコンピュータから除去する、またはその他の方法により安全にする。
【００４９】
Ｂ１０．共有オブジェクトのパスが存在する場合、アンチウイルス・スキャン・エンジンは、共有されていないアプリケーション依存関係ネットワーク内のパスにより特定されるオブジェクトのすべてをクライアントコンピュータから除去する、またはその他の方法により安全にし、共有されるオブジェクトを残す。
【００５０】
上記のように第２段階でアンチウイルス・スキャン・エンジンにより使用される方法は、かなり多くの従来のアプリケーション・バイナリ・チェックを実行するために、およびヒューリスティック分析技術を実行するために要する時間を顕著に削減する。ここで、アンチウイルス・スキャン・エンジンはアプリケーション上で完全な従来のアンチウイルススキャンが必要かどうかを最初に迅速に判断することができ、それが既知の信頼できるアプリケーションが原因でない場合、その後、速やかに別のアプリケーションに移動することができる。この方法はまた、その依存関係ネットワークにより特定される悪意のあるアプリケーション全体がシステムから除去される高品質な除去プロセスを提供すし、悪意のあるアプリケーションのすべてのコンポーネントが削除されていることを確実にする。
【００５１】
方法の第２段階（図２）では、中央サーバーが、クライアントコンピュータから送信されたローカルなアプリケーション依存関係ネットワークと一致するエントリを既知の信頼できないアプリケーション依存関係ネットワークのデータベースで検索を開始するステップを含んでいてもよい。一致するエントリが見つかった場合、その後、サーバーはローカルなアプリケーション依存関係ネットワークを既知の信頼できないものとして特定する通知をクライアントコンピュータに送信する。次いで、アンチウイルス・スキャン・エンジンは、上記のようにステップＢ８からＢ１０に従ってアプリケーションを除去することができる。一致するエントリが既知の信頼できないアプリケーション依存関係ネットワークのデータベースで見つからない場合、その後サーバーはローカルなアプリケーション依存関係ネットワークを不明として特定する通知をクライアントコンピュータに送信する。次いで、アンチウイルス・スキャン・エンジンは、ローカルなアプリケーション依存関係ネットワークが対応しているアプリケーション上で従来のアンチウイルススキャン（例えば、アプリケーションのバイナリチェックおよび／またはヒューリスティック分析を使用する）を開始する。アンチウイルス・スキャン・エンジンが、アプリケーションが正規品でないことを従来のアンチウイルススキャンから判断した場合、クライアントコンピュータは、既知の信頼できないアプリケーション依存関係ネットワークのデータベースにエントリとして未知のアプリケーション依存関係ネットワークを順番に追加することを考慮するメッセージを中央サーバーに送信する。次いで、アンチウイルスエンジンは、ステップＢ８からＢ１０に従って上記のようにアプリケーションを除去することができる。
【００５２】
このさらなる実施形態は、ステップＢ１からＢ１０で説明した第２段階の方法の代替として、またはそれと合せて使用することができる。これはアプリケーションのバイナリ証明書をチェックし、ヒューリスティック分析技術を実行するより多くの従来の方法を実行するのに要する時間をさらに削減するようにＢ１からＢ１０の方法と合せて使用することが好ましいであろう。
【００５３】
悪意のあるソフトウェアと同様に、コンピュータシステムに影響を与える別の問題は、「失われたフラグメント」である。時にはオーファンファイルとして知られている失われたフラグメントは、データファイル、ダウンロードされたアップデート、およびアプリケーションがコンピュータシステムからアンインストールされた後、またはアプリケーションが正しくインストールされていない場合に後に残ることがあるアプリケーションの他のフラグメントである。これらの失われたフラグメントは時間をかけて増大することがあり、大量のディスク領域を占有することがあり、ユーザーが利用できる有用なストレージ容量を削減することがある。失われたフラグメントは、しばしばどのアプリケーションに属しているかが明確ではないので、常に検出することが容易ではない。さらに、最初は１つのアンインストールされたアプリケーションからの失われたフラグメントであると見えるかもしれないものが、実際にはまだコンピュータシステムにインストールされている１つまたは複数の他のアプリケーションと共有されているオブジェクトである場合がある。このことは、ユーザーが、別のアプリケーションが動作を停止する可能性がある何かを除去するのを恐れてフラグメントを削除したくない場合があるので、失われたフラグメントを削除することを困難にする。
【００５４】
クライアントコンピュータ上での失われたフラグメントは、上記のように第１段階でアンチウイルス・スキャン・エンジンにより拾い上げられた完全なアプリケーション依存関係ネットワークの一部ではない残りのオブジェクトのパスおよびオブジェクト間の関係に対応する。第１段階の終わりに、それらは通常のローカルなアプリケーション依存関係ネットワークとして特定される。
【００５５】
図３は、失われたフラグメントをも検出し除去する、悪意のあるソフトウェアの検出と除去を行う強化されたプロセスを示すフロー図である。行われるステップは上述したＢ１からＢ１０と同じであるが、ステップＢ３はＣ２により置換され、追加のステップＣ１およびＣ３が、ステップＢ２の後に導入される。追加のステップは以下のように行われる：
【００５６】
Ｃ１．サーバーが一致するエントリを（ステップＢ２で）見つけた後に、サーバーは、データベース内の既知のアプリケーション依存関係ネットワーク内で特定されるすべての予測されるアプリケーションの実行可能ファイルおよびモジュールがローカルなアプリケーション依存関係ネットワークに存在するかどうかを判断するために検証チェックを行う。次いで、サーバーは、ローカルなアプリケーション依存関係ネットワークが「既知の信頼できる、および完全な」、または「既知の信頼できる、しかし不完全な」かどうかの通知をクライアントコンピュータに返信する。
【００５７】
Ｃ２．クライアントコンピュータが「既知の信頼できる、および完全な」通知を受信した場合、段階１で規定されるようにアンチウイルス・スキャン・エンジンは、さらに選択したローカルなアプリケーション依存関係ネットワークのための方法をステップＢ１で再び開始することができる（図３の破線の矢印で示されるように）。
【００５８】
Ｃ３．クライアントコンピュータが「既知の信頼できる、しかし不完全な」通知を受信した場合、上述したようにアンチウイルス・スキャン・エンジンは、ステップＢ８からＢ１０に従って失われたフラグメントを除去することができる。
【００５９】
あるいは、ステップＣ３の後、ユーザーはステップＢ８からＢ１０に進む前に、失われたフラグメントが削除される、またはされないかどうかの最終判断を下すことを求められる場合がある。
【００６０】
図４は、本発明の実施形態によるコンピュータシステムを概略的に示す。コンピュータシステムは、インターネットまたはＬＡＮなどのネットワーク３を介して中央サーバー２に接続される少なくとも１つのクライアントコンピュータ１を備える。このクライアントコンピュータ１は、コンピュータのハードウェアおよびソフトウェアの組み合わせとして実装することができる。クライアントコンピュータ１は、メモリ４、プロセッサ５、およびトランシーバ６を備える。メモリ４は、プロセッサ５により実行される各種プログラム／実行可能ファイルを格納し、また任意の必要なデータのためのストレージユニット７を提供する。メモリ４に格納されるとともにプロセッサ５により実行されるプログラム／実行可能ファイルは、システムスキャナ８、結果ハンドラ９、およびポリシングユニット１０を含み、それらすべてがアンチウイルス・スキャン・エンジン１１のサブユニットであり得る。トランシーバ６は、ネットワーク３を介して中央のアンチウィルスサーバー２と通信するのに使用される。一般に、クライアントコンピュータ１は、デスクトップ・パーソナル・コンピュータ（ＰＣ）、ラップトップ、パーソナル・データ・アシスタント（ＰＤＡ）またはモバイル電話、または任意の他の適切なデバイスのいずれであってもよい。
【００６１】
中央サーバー２は、典型的にはクライアントコンピュータ１上で走るアンチウイルス・スキャン・エンジン１１のプロバイダーにより運営される。あるいは、中央サーバー２は、ネットワーク管理者またはスーパーバイザーのそれであってもよく、クライアントコンピュータ１は、スーパーバイザーが担当するネットワークの一部である。中央サーバー２は、コンピュータのハードウェアおよびソフトウェアとの組み合わせとして実装することができる。中央サーバー２は、メモリ１９、プロセッサ１２、トランシーバ１３およびデータベース１４を備える。メモリ１９は、プロセッサ１２により実行される各種プログラム／実行可能ファイルを格納し、また任意の必要なデータのためのストレージユニット１８を提供する。メモリ１９に格納されるとともに、プロセッサ１２により実行されるプログラム／実行可能ファイルは、システムスキャナ１６および依存関係ネットワークコンパレータ１７を含み、それらのどちらもアンチウイルスユニット１５のサブユニットであり得る。これらのプログラム／ユニットは、クライアントコンピュータ１で実装されるそれらのプログラムと同じであってもよく、またはクライアントコンピュータ１で実装されるプログラムとインターフェースおよび協働することのできる異なるプログラムであってもよい。トランシーバ１３は、ネットワーク３を介してクライアントコンピュータ１との通信に使用される。
【００６２】
データベース１４は、既知のアプリケーション依存関係ネットワークを格納し、さらにマルウェア定義データ、ヒューリスティック分析ルール、ホワイトリスト、ブラックリストなどを格納してもよい。データベース１４は、クライアントコンピュータ上の第１段階で上記のようにアプリケーション依存関係ネットワークを特定する方法を使用しているサーバーにより既知のアプリケーション依存関係ネットワークを事前設定することができる。これらの方法は非常に正確であるが、実用的なサイズにまでデータベースを構築するために必要なインストーラの数を見つけるだけでなく、対応するアプリケーションの依存関係ネットワークをキャプチャするために、それぞれのインストーラを介して実行する大量の労力を必要とするであろう。あるいは、データベース１４は、情報を「クラウドソーシング」することにより既知のアプリケーション依存関係ネットワークを事前設定できる。多数の分散クライアントがクライアントコンピュータからローカルなアプリケーション依存関係ネットワークを提示する場合は、「クラウドソーシング」を使用することができる。サーバー２は、トランシーバ１３を介してローカルなアプリケーション依存関係ネットワークを受信し、メモリ１１にそれを格納して多数の分散クライアントから提示された複数の同一ネットワークをグループ化する。いずれかの特定のアプリケーションの提示の数があらかじめ定義された数に達すると、サーバー２は、ローカルなアプリケーション依存関係ネットワークが有効であることを示し、それを既知のアプリケーション依存関係ネットワークのデータベース１４に入力する。データベース１４はこれらの方法の組み合わせを使用して事前設定されることが所期される。
【００６３】
様々な修正が、本発明の範囲から逸脱することなく、上述した実施形態になされ得ることが当業者には理解されるであろう。
【図１】
0005963008.tif 000003
【図２】
0005963008.tif 000004
【図３】
0005963008.tif 000005
【図４】
0005963008.tif 000006