(57)【要約】【課題】ネットワーク化されたコンピュータの集合の一部であるコンピュータ内の異常を検出するためのシステムおよび方法を提供すること。【解決手段】スナップショットは、コンピュータの集合内の複数のコンピュータから受信され、個々のスナップショットは、個別のコンピュータのアセットおよびランタイムプロセスの状態を含む。アセット正規化モデルは、スナップショットから生成され、個別のコンピュータのアセットおよびランタイムプロセスの状態における異常を検出するためのベースラインモデルとしての役割を果たす。コンピュータのうちの少なくとも１つからのスナップショットは、コンピュータのうちの少なくとも１つの静的アセットおよびランタイムプロセスの状態に異常が存在するかどうかを判定するために、アセット正規化モデルと比較される。【選択図】図１
2018142372.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク化されたコンピュータの集合の一部であるコンピュータ内の異常を検出するための方法であって、前記方法は、
前記コンピュータの集合内の複数のコンピュータからスナップショットを受信することであって、個々のスナップショットは、個別のコンピュータのアセットおよびランタイムプロセスの状態を含む、ことと、
ハッシュを使用してメモリ内アセットに対する一意の識別の開発に基づいて、アセット正規化モデルを前記スナップショットから生成することであって、前記ハッシュは、前記ランタイムプロセスであって、異なるコンピュータ、および、前記コンピュータ上の前記ランタイムプロセスの異なるインスタンスにわたって安定している前記ランタイムプロセスを含み、前記アセット正規化モデルは、前記個別のコンピュータのアセットおよびランタイムプロセスの状態における異常を検出するためのベースラインモデルとしての役割を果たす、ことと、
前記コンピュータのうちの少なくとも１つのコンピュータからのスナップショットと前記アセット正規化モデルを比較して、前記コンピュータのうちの前記少なくとも１つのコンピュータの静的アセットおよびランタイムプロセスの状態に異常が存在するかどうかを判定することと
を含む、方法。
【請求項２】
前記複数のコンピュータにエージェントを展開することをさらに含み、前記エージェントは、スナップショットを生成することと、前記スナップショットを伝送することと、前記アセット正規化モデルを使用して異常を検出することとのうちの１つ以上のために構成されている、請求項１に記載の方法。
【請求項３】
前記スナップショットは、変換関数を使用してエンコードされたコードセグメントを含む、請求項１に記載の方法。
【請求項４】
前記変換関数は、暗号学的ハッシュを含む、請求項３に記載の方法。
【請求項５】
異常を検出することは、挙動異常を検出することを含む、請求項１に記載の方法。
【請求項６】
挙動異常を検出することは、コードの変更、実行スタックの変更、およびスレッド実行の変更のうちの１つ以上を検出することを含む、請求項５に記載の方法。
【請求項７】
コードの変更は、コードセグメントの変更、コードインジェクション、およびコード削除を含む、請求項６に記載の方法。
【請求項８】
実行スタックの変更は、コールスタック内に挿入された不適切なコードアドレスを含む、請求項６に記載の方法。
【請求項９】
スレッド実行の変更は、不適切なスレッド作成、不適切なスレッド実行、および不適切なスレッド破壊を含む、請求項６に記載の方法。
【請求項１０】
挙動異常を構成するランタイムプロセス挙動の変更を検出するために、正常プロセス実行のための統計モデルを導出する、請求項５に記載の方法。
【請求項１１】
一意の識別子および関連アセットを見つけるために、前記アセットおよびランタイムプロセスを検索することと、
見つけられた一意の識別子を以前に見つけられた一意の識別子および関連アセットのリストに追加することと、
スナップショットを生成するために、前記リストを使用して、これらの識別子および関連アセットを含有するコンピュータアセットのベースラインを構築し、ランタイム動作の間にスキャンすることと、
アセットおよびランタイムプロセスが、個別のコンピュータから追加および除去されるにつれて、前記一意の識別子のリストを周期的に更新することと
をさらに含む、請求項１に記載の方法。
【請求項１２】
異常が検出されると、
前記アセットを除去すること、前記アセットを置換すること、または前記ランタイムプロセスを停止させることによって、前記異常と関連付けられた前記アセットまたはランタイムプロセスを修復することと、
前記異常と関連付けられた実行スタックのいかなる不具合も修復することと
を行うことをさらに含む、請求項１に記載の方法。
【請求項１３】
ネットワーク化されたコンピュータの集合の一部であるコンピュータ内の異常を検出するためのシステムであって、前記システムは、
前記コンピュータの集合内の複数のコンピュータからスナップショットを受信するように構成されたネットワークインターフェースであって、個々のスナップショットは、個別のコンピュータのアセットおよびランタイムプロセスの状態を含む、ネットワークインターフェースと、
プロセッサと
を備え、
前記プロセッサは、
ハッシュを使用してメモリ内アセットに対する一意の識別の開発に基づいて、アセット正規化モデルを前記スナップショットから生成することであって、前記ハッシュは、前記ランタイムプロセスであって、異なるコンピュータ、および、前記コンピュータ上の前記ランタイムプロセスの異なるインスタンスにわたって安定している前記ランタイムプロセスを含み、前記アセット正規化モデルは、前記個別のコンピュータのアセットおよびランタイムプロセスの状態における異常を検出するためのベースラインモデルとしての役割を果たす、ことと、
前記コンピュータのうちの少なくとも１つのコンピュータからのスナップショットと前記アセット正規化モデルを比較して、前記コンピュータのうちの少なくとも１つのコンピュータの静的アセットおよびランタイムプロセスの状態に異常が存在するかどうかを判定することと
を行うように構成されている、システム。
【請求項１４】
前記プロセッサはさらに、前記複数のコンピュータにエージェントを展開するように構成されており、前記エージェントは、スナップショットを生成することと、前記スナップショットを伝送することと、前記アセット正規化モデルを使用して異常を検出することとのうちの１つ以上のために構成されている、請求項１３に記載のシステム。
【請求項１５】
前記ネットワークインターフェースは、変換関数を使用してエンコードされたコードセグメントを含むスナップショットを受信するように構成されている、請求項１３に記載のシステム。
【請求項１６】
前記プロセッサは、挙動異常を検出するように構成されている、請求項１３に記載のシステム。
【請求項１７】
前記プロセッサは、コードの変更、実行スタックの変更、およびスレッド実行の変更のうちの１つ以上を含む挙動異常を検出するように構成されている、請求項１６に記載のシステム。
【請求項１８】
コードの変更は、コードセグメントの変更、コードインジェクション、およびコード削除を含む、請求項１７に記載のシステム。
【請求項１９】
実行スタックの変更は、コールスタック内に挿入された不適切なコードアドレスを含む、請求項１７に記載のシステム。
【請求項２０】
スレッド実行の変更は、不適切なスレッド作成、不適切なスレッド実行、および不適切なスレッド破壊を含む、請求項１７に記載のシステム。
【請求項２１】
前記プロセッサは、挙動異常を構成するランタイムプロセス挙動の変更を検出するために、正常プロセス実行のための統計モデルを導出するように構成されている、請求項１６に記載のシステム。
【請求項２２】
前記プロセッサはさらに、
一意の識別子および関連アセットを見つけるために、前記アセットおよびランタイムプロセスを検索することと、
見つけられた一意の識別子を以前に見つけられた一意の識別子および関連アセットのリストに追加することと、
スナップショットを生成するために、前記リストを使用して、これらの識別子および関連アセットを含有するコンピュータアセットのベースラインを構築し、ランタイム動作の間にスキャンすることと、
アセットおよびランタイムプロセスが、個別のコンピュータから追加および除去されるにつれて、前記一意の識別子のリストを周期的に更新することと
を行うように構成されている、請求項１３に記載のシステム。
【請求項２３】
異常が検出されると、前記プロセッサはさらに、
前記アセットを除去すること、前記アセットを置換すること、または前記ランタイムプロセスを停止させることによって、前記異常と関連付けられた前記アセットまたはランタイムプロセスを修復することと、
前記異常と関連付けられた実行スタックのいかなる不具合も修復することと
を行うように構成されている、請求項１３に記載のシステム。
【請求項２４】
ネットワーク化されたコンピュータの集合の一部であるコンピュータ内の異常を検出するための命令を記憶する１つ以上のコンピュータ可読記憶媒体であって、前記命令は、プロセッサによって実行されると、前記プロセッサに、
前記コンピュータの集合内の複数のコンピュータからスナップショットを受信することであって、個々のスナップショットは、個別のコンピュータのアセットおよびランタイムプロセスの状態を含む、ことと、
ハッシュを使用してメモリ内アセットに対する一意の識別の開発に基づいて、アセット正規化モデルを前記スナップショットから生成することであって、前記ハッシュは、前記ランタイムプロセスであって、異なるコンピュータ、および、前記コンピュータ上の前記ランタイムプロセスの異なるインスタンスにわたって安定している前記ランタイムプロセスを含み、前記アセット正規化モデルは、前記個別のコンピュータのアセットおよびランタイムプロセスの状態における異常を検出するためのベースラインモデルとしての役割を果たす、ことと、
前記コンピュータのうちの少なくとも１つのコンピュータからのスナップショットと前記アセット正規化モデルを比較して、前記コンピュータのうちの前記少なくとも１つのコンピュータの静的アセットおよびランタイムプロセスの状態に異常が存在するかどうかを判定することと
を行わせる、コンピュータ可読記憶媒体。
【請求項２５】
前記複数のコンピュータにエージェントを展開するように動作可能な命令をさらに備え、前記エージェントは、スナップショットを生成することと、前記スナップショットを伝送することと、前記アセット正規化モデルを使用して異常を検出することとのうちの１つ以上のために構成されている、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項２６】
前記受信するように動作可能な命令は、暗号学的ハッシュを使用してエンコードされたコードセグメントを含む前記スナップショットを受信するように動作可能な命令を含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項２７】
前記検出するように動作可能な命令は、挙動異常を検出するように動作可能な命令を含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項２８】
前記検出するように動作可能な命令は、コードの変更、実行スタックの変更、およびスレッド実行の変更のうちの１つ以上である挙動異常を検出するように動作可能な命令を含む、請求項２７に記載のコンピュータ可読記憶媒体。
【請求項２９】
コードの変更は、コードセグメントの変更、コードインジェクション、およびコード削除を含む、請求項２８に記載のコンピュータ可読記憶媒体。
【請求項３０】
実行スタックの変更は、コールスタック内に挿入された不適切なコードアドレスを含む、請求項２８に記載のコンピュータ可読記憶媒体。
【請求項３１】
スレッド実行の変更は、不適切なスレッド作成、不適切なスレッド実行、および不適切なスレッド破壊を含む、請求項２８に記載のコンピュータ可読記憶媒体。
【請求項３２】
挙動異常を構成するランタイムプロセス挙動の変更を検出するために、正常プロセス実行のための統計モデルを導出するように動作可能な命令をさらに含む、請求項２７に記載のコンピュータ可読記憶媒体。
【請求項３３】
一意の識別子および関連アセットを見つけるために、前記アセットおよびランタイムプロセスを検索することと、
見つけられた一意の識別子を以前に見つけられた一意の識別子および関連アセットのリストに追加することと、
スナップショットを生成するために、前記リストを使用して、これらの識別子および関連アセットを含有するコンピュータアセットのベースラインを構築し、ランタイム動作の間にスキャンすることと、
アセットおよびランタイムプロセスが、個別のコンピュータから追加および除去されるにつれて、前記一意の識別子のリストを周期的に更新することと
を行うように動作可能な命令をさらに含む、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項３４】
異常が検出されると、
前記アセットを除去すること、前記アセットを置換すること、または前記ランタイムプロセスを停止させることによって、前記異常と関連付けられた前記アセットまたはランタイムプロセスを修復することと、
前記異常と関連付けられた実行スタックのいかなる不具合も修復することと
を行うように動作可能な命令をさらに含む、請求項２４に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は、自動化コンピュータサポートのためのシステムおよび方法に関する。
【背景技術】
【０００２】
（発明の背景）
コンピュータネットワークの管理は、比較的に小さいものでも、面倒なタスクであり得る。ネットワークマネージャまたはアドミニストレータは、多くの場合、生産性を最大限にし、ダウンタイムを最小限にするために、ユーザのコンピュータが適切に動作していることを確実にすることに関与する。コンピュータが、不安定に機能し始める、または全く機能しなくなると、ユーザは、多くの場合、援助を要請するために、システムアドミニストレータと連絡をとるであろう。米国特許第７，５９３，９３６号（「第９３６号特許」）に説明されるように、コンピュータネットワーク上の個々のコンピュータと関連付けられた問題を調査、診断、および解決することと関連付けられる、相当な労働コストが存在する。
【０００３】
さらに、米国特許第８，１０４，０８７号（「第０８７号特許」）に説明されるように、紛失または破損ファイルあるいはレジストリキー、「マルウェア」（ウイルスおよび同等物を含む）、ならびにユーザエラーを含む、所与のコンピュータが適切に機能しないかなりの数の理由が存在し得る。残念ながら、人員制限のため、典型的組織の情報技術（ＩＴ）部署は、多くの場合、３つの一般的「総当たり」方法論、例えば、バックアップを再インストールし、アプリケーションおよびデータをベースライン構成に再設定し、および／または再イメージングすることに頼り、全ソフトウェアは、問題の根本原因を見つける代わりに、コンピュータ上に新たに再インストールされる。
【０００４】
コンピュータ問題修復に対する前述の「総当たり」アプローチは、当業者が理解するように、例えば、所与のコンピュータ上の単独の具体的問題を解決することには対応しない、全面的データ置換方法論に相当し、さらに、多くの場合、多くの望ましくない副次的影響をコンピュータユーザにもたらす。例えば、ユーザは、ユーザカスタマイズされた設定の損失を被り得る、長期にわたるダウンタイム期間に対処する必要があり得る、またはユーザデータを損失する羽目になり得る。
【０００５】
前述の問題のうちのいくつかを解決するために、構成異常を検出するために、スキャナが採用され、コンピュータアセットをスキャンしてもよい。しかしながら、スキャナに関する問題の１つは、静的スキャン範囲、すなわち、コンピュータアセットの静的セット上で動作することである。マルウェアが、静的範囲外に存在する場合、マルウェアは、決して検出され得ない。さらに、いくつかのスキャナ実装では、スキャン範囲は、暗号化されず、機械の任意のユーザによって閲覧されることができる。したがって、スキャン範囲の知識がある者であれば、スキャンの「周囲」にマルウェアを設計することができる。
【０００６】
多くの場合、ユーザデータを維持し、不必要なダウンタイムを回避することが非常に重要であることを鑑みて、コンピュータ問題修復に対して、異なるアプローチを提供する必要がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許公報第７，５９３，９３６号明細書
【特許文献２】米国特許公報第８，１０４，０８７号明細書
【発明の概要】
【課題を解決するための手段】
【０００８】
（発明の要約）
本発明の実施形態は、システムおよびネットワーク化されたコンピュータの集合の一部であるコンピュータ内の異常を検出するための方法を提供する。一実施形態では、スナップショットは、コンピュータの集合内の複数のコンピュータから受信され、個々のスナップショットは、個別のコンピュータのアセットおよびランタイムプロセスの状態を含む。アセット正規化モデルは、スナップショットから生成され、個別のコンピュータのアセットおよびランタイムプロセスの状態における異常を検出するためのベースラインモデルとしての役割を果たす。コンピュータのうちの少なくとも１つからのスナップショットは、コンピュータのうちの少なくとも１つの静的アセットおよびランタイムプロセスの状態に異常が存在するかどうかを判定するために、アセット正規化モデルと比較される。
【０００９】
第９３６号特許は、所与のコンピュータ上の異常が、「正常」パターンをコンピュータの所与のネットワーク内の複数のコンピュータ上に記憶されたデータ内に確立するために使用され得る、「適応参照モデル」を使用することによって検出されることができる、システムおよび方法を説明している。第０８７号特許は、基準と異なるデータ異常を自動的に補正するためのシステムおよび方法を説明している。特に、修復されるために好適な異常として、限定ではないが、紛失ファイル、紛失データ、またはファイルまたはデータの紛失部分、紛失レジストリキー、破損ファイル、または破損レジストリキーが挙げられる。異常はまた、予想外のファイルまたはデータを含み得る。
【００１０】
本発明実施形態は、異常を検出するために、第９３６号および第０８７号特許に説明されるような異常検出のためのそのような非ランタイムまたは静的動作システムを活用するが、また、動的またはランタイムメモリスキャン技法を含み得、かつ静的および動的スキャンを行い、コンピュータネットワーク内のコンピュータ上の異常を識別する任意の他の方法論に依拠し得る。本明細書で参照されるように、静的分析の広がりは、「静的スキャン範囲」として見なされ得、動的分析の広がりは、「アクティブスキャン範囲」と見なされ、集合的に、「スキャン範囲」と見なされ得る。
【００１１】
特に、本発明の方法論を使用して修復されるために好適である、異常として、限定ではないが、実行ソフトウェア（プロセスおよびスレッド）、ダイナミックリンクライブラリ（ＤＬＬ）、あるいは（例えば、自動スタート機構、レイヤードサービスプロバイダ（ＬＳＰ）ＤＬＬ、入力／出力（Ｉ／Ｏ）要求パケット（ＩＲＰ）ハンドラ、ＭｉｃｒｏｓｏｆｔのＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムサービスディスパッチテーブル（ＳＳＤＴ）等）を起動し得る、または起動するであろうプロセスが挙げられる。本発明の側面は、同様に、予想外のアクティブプロセスを除去または停止するように動作することができる。
【００１２】
メモリアセットのスキャンは、完全に新しい種類の異常の基礎を形成し、本明細書に説明される発明実施形態が、ソフトウェア搾取技法をリアルタイムで検出することを可能にする。
本明細書は、例えば、以下の項目も提供する。
（項目１）
ネットワーク化されたコンピュータの集合の一部であるコンピュータ内の異常を検出するための方法であって、前記方法は、
前記コンピュータの集合内の複数のコンピュータからスナップショットを受信することであって、個々のスナップショットは、個別のコンピュータのアセットおよびランタイムプロセスの状態を含む、ことと、
アセット正規化モデルを前記スナップショットから生成することであって、前記アセット正規化モデルは、前記個別のコンピュータのアセットおよびランタイムプロセスの状態における異常を検出するためのベースラインモデルとしての役割を果たす、ことと、
前記コンピュータのうちの少なくとも１つからのスナップショットと前記アセット正規化モデルを比較して、前記コンピュータのうちの前記少なくとも１つの静的アセットおよびランタイムプロセスの状態に異常が存在するかどうかを判定することと
を含む、方法。
（項目２）
前記複数のコンピュータにエージェントを展開することをさらに含み、前記エージェントは、スナップショットを生成することと、前記スナップショットを伝送することと、前記アセット正規化モデルを使用して異常を検出することとのうちの１つ以上のために構成されている、項目１に記載の方法。
（項目３）
前記スナップショットは、変換関数を使用してエンコードされたコードセグメントを含む、項目１に記載の方法。
（項目４）
前記変換関数は、暗号学的ハッシュを含む、項目３に記載の方法。
（項目５）
異常を検出することは、挙動異常を検出することを含む、項目１に記載の方法。
（項目６）
挙動異常を検出することは、コードの変更、実行スタックの変更、およびスレッド実行の変更のうちの１つ以上を検出することを含む、項目５に記載の方法。
（項目７）
コードの変更は、コードセグメントの変更、コードインジェクション、およびコード削除を含む、項目６に記載の方法。
（項目８）
実行スタックの変更は、コールスタック内に挿入された不適切なコードアドレスを含む、項目６に記載の方法。
（項目９）
スレッド実行の変更は、不適切なスレッド作成、不適切なスレッド実行、および不適切なスレッド破壊を含む、項目６に記載の方法。
（項目１０）
挙動異常を構成するランタイムプロセス挙動の変更を検出するために、正常プロセス実行のための統計モデルを導出する、項目５に記載の方法。
（項目１１）
一意の識別子および関連アセットを見つけるために、前記アセットおよびランタイムプロセスを検索することと、
見つけられた一意の識別子を以前に見つけられた一意の識別子および関連アセットのリストに追加することと、
スナップショットを生成するために、前記リストを使用して、これらの識別子および関連アセットを含有するコンピュータアセットのベースラインを構築し、ランタイム動作の間にスキャンすることと、
アセットおよびランタイムプロセスが、個別のコンピュータに追加され、そこから除去されるにつれて、前記一意の識別子のリストを周期的に更新することと
をさらに含む、項目１に記載の方法。
（項目１２）
異常が検出されると、
前記アセットを除去すること、前記アセットを置換すること、または前記ランタイムプロセスを停止させることによって、前記異常と関連付けられた前記アセットまたはランタイムプロセスを修復することと、
前記異常と関連付けられた実行スタックのいかなる不具合も修復することと
をさらに含む、項目１に記載の方法。
（項目１３）
ネットワーク化されたコンピュータの集合の一部であるコンピュータ内の異常を検出するためのシステムであって、前記システムは、
前記コンピュータの集合内の複数のコンピュータからスナップショットを受信するように構成されたネットワークインターフェースであって、個々のスナップショットは、個別のコンピュータのアセットおよびランタイムプロセスの状態を含む、ネットワークインターフェースと、
プロセッサと
を備え、
前記プロセッサは、
アセット正規化モデルを前記スナップショットから生成することであって、前記アセット正規化モデルは、前記個別のコンピュータのアセットおよびランタイムプロセスの状態における異常を検出するためのベースラインモデルとしての役割を果たす、ことと、
前記コンピュータのうちの少なくとも１つからのスナップショットと前記アセット正規化モデルを比較して、前記コンピュータのうちの前記少なくとも１つの静的アセットおよびランタイムプロセスの状態に異常が存在するかどうかを判定することと
を行うように構成されている、システム。
（項目１４）
前記プロセッサはさらに、前記複数のコンピュータにエージェントを展開するように構成されており、前記エージェントは、スナップショットを生成することと、前記スナップショットを伝送することと、前記アセット正規化モデルを使用して異常を検出することとのうちの１つ以上のために構成されている、項目１３に記載のシステム。
（項目１５）
前記ネットワークインターフェースは、変換関数を使用してエンコードされたコードセグメントを含むスナップショットを受信するように構成されている、項目１３に記載のシステム。
（項目１６）
前記プロセッサは、挙動異常を検出するように構成されている、項目１３に記載のシステム。
（項目１７）
前記プロセッサは、コードの変更、実行スタックの変更、およびスレッド実行の変更のうちの１つ以上を含む挙動異常を検出するように構成されている、項目１６に記載のシステム。
（項目１８）
コードの変更は、コードセグメントの変更、コードインジェクション、およびコード削除を含む、項目１７に記載のシステム。
（項目１９）
実行スタックの変更は、コールスタック内に挿入された不適切なコードアドレスを含む、項目１７に記載のシステム。
（項目２０）
スレッド実行の変更は、不適切なスレッド作成、不適切なスレッド実行、および不適切なスレッド破壊を含む、項目１７に記載のシステム。
（項目２１）
前記プロセッサは、挙動異常を構成するランタイムプロセス挙動の変更を検出するために、正常プロセス実行のための統計モデルを導出するように構成されている、項目１６に記載のシステム。
（項目２２）
前記プロセッサは、挙動異常を構成するランタイムプロセス挙動の変更を検出するために、正常プロセス実行のための統計モデルを導出するように構成されている、項目１６に記載のシステム。
（項目２３）
前記プロセッサはさらに、
一意の識別子および関連アセットを見つけるために、前記アセットおよびランタイムプロセスを検索することと、
見つけられた一意の識別子を以前に見つけられた一意の識別子および関連アセットのリストに追加することと、
スナップショットを生成するために、前記リストを使用して、これらの識別子および関連アセットを含有するコンピュータアセットのベースラインを構築し、ランタイム動作の間にスキャンすることと、
アセットおよびランタイムプロセスが、個別のコンピュータに追加され、そこから除去されるにつれて、前記一意の識別子のリストを周期的に更新することと
を行うように構成されている、項目１３に記載のシステム。
（項目２４）
異常が検出されると、前記プロセッサはさらに、
前記アセットを除去すること、前記アセットを置換すること、または前記ランタイムプロセスを停止させることによって、前記異常と関連付けられた前記アセットまたはランタイムプロセスを修復することと、
前記異常と関連付けられた実行スタックのいかなる不具合も修復することと
を行うように構成されている、項目１３に記載のシステム。
（項目２５）
ネットワーク化されたコンピュータの集合の一部であるコンピュータ内の異常を検出するための命令を記憶する１つ以上のコンピュータ可読記憶媒体であって、前記命令は、プロセッサによって実行されると、前記プロセッサに、
前記コンピュータの集合内の複数のコンピュータからスナップショットを受信することであって、個々のスナップショットは、個別のコンピュータのアセットおよびランタイムプロセスの状態を含む、ことと、
アセット正規化モデルを前記スナップショットから生成することであって、前記アセット正規化モデルは、前記個別のコンピュータのアセットおよびランタイムプロセスの状態における異常を検出するためのベースラインモデルとしての役割を果たす、ことと、
前記コンピュータのうちの少なくとも１つからのスナップショットと前記アセット正規化モデルを比較して、前記コンピュータのうちの前記少なくとも１つの静的アセットおよびランタイムプロセスの状態に異常が存在するかどうかを判定することと
をさせる、コンピュータ可読記憶媒体。
（項目２６）
前記複数のコンピュータにエージェントを展開するように動作可能な命令をさらに備え、前記エージェントは、スナップショットを生成することと、前記スナップショットを伝送することと、前記アセット正規化モデルを使用して異常を検出することとのうちの１つ以上のために構成されている、項目２５に記載のコンピュータ可読記憶媒体。
（項目２７）
前記受信するように動作可能な命令は、暗号学的ハッシュを使用してエンコードされたコードセグメントを含む前記スナップショットを受信するように動作可能な命令を含む、項目２５に記載のコンピュータ可読記憶媒体。
（項目２８）
前記検出するように動作可能な命令は、挙動異常を検出するように動作可能な命令を含む、項目２５に記載のコンピュータ可読記憶媒体。
（項目２９）
前記検出するように動作可能な命令は、コードの変更、実行スタックの変更、およびスレッド実行の変更のうちの１つ以上である挙動異常を検出するように動作可能な命令を含む、項目２８に記載のコンピュータ可読記憶媒体。
（項目３０）
コードの変更は、コードセグメントの変更、コードインジェクション、およびコード削除を含む、項目２９に記載のコンピュータ可読記憶媒体。
（項目３１）
実行スタックの変更は、コールスタック内に挿入された不適切なコードアドレスを含む、項目２９に記載のコンピュータ可読記憶媒体。
（項目３２）
スレッド実行の変更は、不適切なスレッド作成、不適切なスレッド実行、および不適切なスレッド破壊を含む、項目２９に記載のコンピュータ可読記憶媒体。
（項目３３）
挙動異常を構成するランタイムプロセス挙動の変更を検出するために、正常プロセス実行のための統計モデルを導出するように動作可能な命令をさらに含む、項目２８に記載のコンピュータ可読記憶媒体。
（項目３４）
一意の識別子および関連アセットを見つけるために、前記アセットおよびランタイムプロセスを検索することと、
見つけられた一意の識別子を以前に見つけられた一意の識別子および関連アセットのリストに追加することと、
スナップショットを生成するために、前記リストを使用して、これらの識別子および関連アセットを含有するコンピュータアセットのベースラインを構築し、ランタイム動作の間にスキャンすることと、
アセットおよびランタイムプロセスが、個別のコンピュータに追加され、そこから除去されるにつれて、前記一意の識別子のリストを周期的に更新することと
を行うように動作可能な命令をさらに含む、項目２５に記載のコンピュータ可読記憶媒体。
（項目３５）
異常が検出されると、
前記アセットを除去すること、前記アセットを置換すること、または前記ランタイムプロセスを停止させることによって、前記異常と関連付けられた前記アセットまたはランタイムプロセスを修復することと、
前記異常と関連付けられた実行スタックのいかなる不具合も修復することと
を行うように動作可能な命令をさらに含む、項目２５に記載のコンピュータ可読記憶媒体。
【００１３】
本発明の実施形態のこれらおよび他の特徴ならびにその付帯利点は、関連付けられた図面と併せて、以下の発明を実施するための形態の熟読に応じて、より完全に理解されるであろう。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の実施形態が動作し得る、例示的環境を図示する。
【図２】図２は、本発明のある実施形態による、情報およびアクションのフローを図示する、ブロック図である。
【図３】図３は、本発明のある実施形態による、異常検出のための静的およびアクティブコンピュータスキャンのためのプロセスを図示する、フロー図である。
【発明を実施するための形態】
【００１５】
（詳細な説明）
本発明の実施形態は、自動化コンピュータサポート、修復、およびランタイム監視のためのシステムおよび方法を提供する。ここで、同一番号が、いくつかの図全体を通して、同一要素を示す図面を参照すると、図１は、本発明の実施形態が動作し得る、例示的環境を図示する、ブロック図である。本環境および構成は、第９５６号出願に詳細に説明されており、第０８７号特許にさらに詳細に説明され、参照することによって、その全体として本明細書に組み込まれる。本発明は、第９５６号および第０８７号特許に照らして説明されるが、当業者は、本発明の側面が、その中で説明されるシステムおよび方法から独立して使用されることもできることを理解するであろう。一方、第９５６号出願に説明されるシステムおよび方法によって可能となるコンピュータ問題／異常検出の粒度および第０８７号特許に説明される問題修復技法の利点は、本発明の実施形態に関連して説明されるランタイムメモリ監視技法の利点をさらに活用するのに役立ち得る。
【００１６】
再び、図１を参照すると、自動化サポート機器１０２が、示される。自動化サポート機器１０２は、図１では、単一機器として示されるが、複数の機器を備える、あるいはコンピュータ１１４の管理集合またはコンピュータのネットワークが常駐する場所に組み込まれてもよい。自動化サポート機器１０２は、自動化サポート機器１０２内に記憶されたデータにセキュリティを提供するために、ネットワーク１０６と通信する、ファイアウォール１０４を含んでもよい。自動化サポート機器１０２はまた、コレクタコンポーネント１０８を含んでもよい。コレクタコンポーネント１０８は、他の特徴の中でもとりわけ、例えば、ファイル転送プロトコル（ＦＴＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、または専用プロトコル等の標準的プロトコルを使用して、自動化サポート機器１０２内外でデータを転送するための機構を提供してもよい。コレクタコンポーネント１０８はまた、受信データ（そのようなデータの「スナップショット」を含む）をダウンロード、解凍、および解析するために必要な処理論理を提供してもよい。
【００１７】
自動化サポート機器１０２はまた、コレクタコンポーネント１０８と、および／または直接、ネットワーク１０６と、したがって、また、コンピュータ１１４の管理集合とも通信する、分析コンポーネント１１０を含んでもよい。分析コンポーネント１１０は、第９５６号出願に詳細に説明され、文脈のために本明細書に要約される、「適応参照モデル」を作成および動作するためのハードウェアおよびソフトウェアを含んでもよい。
【００１８】
コレクタコンポーネント１０８および分析コンポーネント１１０の両方と通信し得る、データベースコンポーネント１１２は、適応参照モデルを記憶するために使用されてもよい。分析コンポーネント１１０は、適応参照モデルおよびスナップショットをデータベースコンポーネント１１２から抽出し、参照モデルに照らして、スナップショットを分析し、いかなる異常も識別およびフィルタ処理し、適切であるとき、応答エージェント（図２）に伝送する（これらは全て、以下により詳細に説明される）。分析コンポーネント１１０はまた、システムのためのユーザインターフェースを提供してもよい。
【００１９】
図１は、１つのコレクタコンポーネント１０８、１つの分析コンポーネント１１０、および１つのデータベースコンポーネント１１２のみを示す。しかしながら、当業者は、他の可能性として考えられる実装が、必要に応じて、ともにネットワーク化された多くのそのようなコンポーネントを含んでもよいことを理解するであろう。
【００２０】
本明細書により詳細に説明されるであろうように、本発明の実施形態は、複数のクライアントコンピュータ１１６ａ−ｄを備え得る管理集合１１４に、自動化サポートおよび修復を提供する。当業者は、示される４つのクライアントコンピュータ１１６ａ−ｄが、例証にすぎず、本発明の実施形態が、数百、数千、またはさらに多くのクライアントコンピュータを有するコンピュータネットワークの状況下で動作してもよいことを理解するであろう。管理集合１１４は、個別のエージェントコンポーネント２０２を使用して、ネットワーク１０６を介して、データを自動化サポート機器１０２に提供する。
【００２１】
より具体的には、エージェントコンポーネント２０２は、各監視されるコンピュータ１１６ａ−ｄ内に展開され、データをその個別のコンピュータから集める。エージェントコンポーネント２０２は、以下の４つのステップに要約され得る、分析ベースラインを生成するためのプロセスを行う。１）ランタイム依存性分析：ランタイムプロセス毎に、各プロセス内に現在ロードされている全実行可能モジュールを含有するセットが、プロセスオープンハンドルに対応する全レジストリキーおよびファイルとともに生成される。２）静的依存性分析：モジュールが実際に実行されることになる場合、ロードされるであろう実行可能コード発見モジュールを含有するファイルを分析する。静的分析は、実行可能ファイルおよび実行可能ファイルがインポートするＤＬＬの検討を伴い、一式の全参照実行可能モジュールのセットを生成する。３）新しい一意の識別子に対するアイテムのスキャン：プロセスメモリおよびオープンハンドルのコンテンツが、任意の埋め込まれた製品ＩＤあるいはグローバル一意識別子（ＧＵＩＤ）または汎用一意識別子（ＵＵＩＤ）等の一意の識別子に対してスキャンされる。４）一意の識別子を含有する新しいアイテムの検索：新しい一意の識別子のセットが、これらの識別子を含有するスキャン範囲内に未だないファイルまたはレジストリキー等の任意の他の関連アセットを見つけるために使用される。新しいアイテムの本セットは、さらなる静的依存性分析のための入力となるであろう。前述の４つのステップは、新しいアイテムがスキャン範囲に追加されなくなるまで、繰り返される。
【００２２】
例えば、ランタイム前または間あるいはスレッド起動に応じたアクティブスキャンの間、各プロセス内に現在ロードされている全実行可能モジュールを含有するセット、ならびにプロセスによってオープンにされるハンドルに対応する全レジストリキーおよびファイルが、監視され、その対応するパラメータが、記録される。コード、コードまたはファイルハッシュ、コードセグメント、および関連付けられたライブラリおよび通信リンクまたは経路、ならびにメモリアドレス空間のサイズ等のパラメータが、サイズおよび／または挙動の変更に関して監視されることができる。
【００２３】
エージェントコンポーネント２０２は、予定された間隔（例えば、１日に１回）において、または分析コンポーネント１１０からのコマンドに応答して、それが常駐する機械の状態の詳細な「スナップショット」を撮影する。本スナップショットは、全システムファイル、指定されるアプリケーションファイル、レジストリ、パフォーマンスカウンタ、プロセス、サービス、通信ポート、ハードウェア構成、およびログファイルの詳細な検討を含んでもよい。「スナップショット」と称される各スキャンの結果は、次いで、（随意に）圧縮され、コレクタコンポーネント１０８および／またはデータベースコンポーネント１１２に伝送される。
【００２４】
加えて、エージェントコンポーネント２０２は、好ましくは、例えば、ネットワーク１０６を経由して、したがって、潜在的に、全コンピュータ１１６ａ−ｄに、破損データを置換するために使用され得る、またはエージェントコンポーネント２０２が常駐するコンピュータ上の紛失データを完全にする、例えば、紛失ファイルの一部を完全にするために使用され得る、補正データの要求を伝送するように構成される。好ましい実施形態では、補正データ（本明細書では、「アセット」とも称される）の要求は、全コンピュータではなく、代わりに、自動化サポート機器１０２内に相互接続されるように示されるが、代替として、ネットワーク１０６と通信する別のコンピュータ１１６として実装されてもよい、アービトレータコンポーネント１１３にダイレクトされる。
【００２５】
図１に示されるサーバ、コンピュータ、およびネットワークコンポーネントはそれぞれ、プロセッサおよびコンピュータ可読媒体を備える。当業者に周知であるように、本発明の実施形態は、複数の機能を単一コンピュータに組み合わせることによって、または代替として、複数のコンピュータを利用して、単一タスクを行うことによって、多数の方法で構成されてもよい。
【００２６】
本発明の実施形態によって利用されるプロセッサは、例えば、本発明によるプロセスのサポートにおいて、必要に応じて、入力を処理し、アルゴリズムを実行し、出力を生成可能なデジタル論理プロセッサを含んでもよい。そのようなプロセッサは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、および状態機械を含んでもよい。そのようなプロセッサは、媒体、例えば、プロセッサによって実行されると、プロセッサに、本明細書に説明されるステップを行わせる、命令を記憶する、コンピュータ可読媒体を含む、またはそれと通信してもよい。
【００２７】
コンピュータ可読媒体の実施形態として、限定ではないが、電子、光学、磁気、あるいはタッチセンサ式入力デバイスと通信するプロセッサ等のプロセッサに、コンピュータ可読命令を提供可能な他の記憶または伝送デバイスが挙げられる。好適な媒体の他の実施例として、限定ではないが、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、磁気ディスク、メモリチップ、ＲＯＭ、ＲＡＭ、ＡＳＩＣ、構成されるプロセッサ、あらゆる光学媒体、あらゆる磁気テープまたは他の磁気媒体、あるいはコンピュータプロセッサが命令を読み取ることができる任意の他の媒体が挙げられる。また、種々の他の形態のコンピュータ可読媒体は、有線および無線の両方のルータ、プライベートまたは公共ネットワーク、あるいは他の伝送デバイスまたはチャネルを含む、コンピュータに命令を伝送または搬送してもよい。命令は、例えば、Ｃ、Ｃ＃、Ｃ＋＋、Ｖｉｓｕａｌ  Ｂａｓｉｃ、Ｊａｖａ（登録商標）、およびＪａｖａＳｃｒｉｐｔ（登録商標）を含む、任意のコンピュータプログラミング言語からのコードを備えてもよい。
【００２８】
第９３６号および第０８７号特許から複製された図２は、スナップショット分析に関する付加的状況を提供する。当業者は、本発明の実施形態が、必ずしも、本明細書ならびに第９３６号および第０８７号特許に説明される同一種類のスナップショット分析を実装する必要がないことを理解するであろう。一方、そのようなスナップショット分析方法論を実装することによって可能となる問題検出の粒度は、本明細書に説明されるランタイム分析技法の利点をさらに活用するために役立ち得る。
【００２９】
図２は、スナップショット分析に関連する情報のフローを図示する、ブロック図である。示される実施形態は、図１に示されるように、いくつかの機能を行い得る、エージェントコンポーネント２０２を備える。第１に、予定された間隔において、分析コンポーネント１１０からのコマンドに応答して、またはエージェントコンポーネント２０２自体によって検出された着目イベントに応答して、クライアント機械１１６をスキャンすることによって、データを集めることに関与し得る。前述のように、スキャンは、全システムファイル、指定されるアプリケーションファイル、レジストリ、パフォーマンスカウンタ、ハードウェア構成、ログ、起動タスク、サービス、ネットワーク接続、および他の関連データの詳細な検討を含んでもよい。各スキャンの結果は、すでに示されたように、圧縮され、ネットワークを経由して、スナップショットの形態において、コレクタコンポーネント１０８および／または関連付けられたデータベースに伝送されてもよい。
【００３０】
一実施形態では、エージェントコンポーネント２０２は、検討されるべきファイルの全バイトを読み取り、ファイルまたはソフトウェアのアイテム毎に、デジタル署名またはハッシュを作成する。ハッシュ関数は、例えば、セキュアハッシュアルゴリズム（ＳＨＡ）等のセキュアハッシュであってもよい。デジタル署名は、単に、サイズおよび作成日等のメタデータを提供するのではなく、各ファイルの正確なコンテンツを識別する。これは、特に、いくつかの従来のウイルスは、ウイルス検出のためにメタデータに依拠するシステムを欺く試みにおいて、所与のファイルのファイルヘッダ情報を変更することができるという点において、有用であり得る。本発明に関連して実装され得るデジタル署名方法論は、したがって、依然として、そのようなウイルスの検出に成功することが可能である。
【００３１】
エージェントコンポーネント２０２によるクライアントコンピュータ１１６のスキャンは、リソース集約的であってもよい。故に、一実施形態では、フルスキャンは、周期的に、例えば、毎日、ユーザが、クライアント機械を使用していないであろう時間の間、行われる。別の実施形態では、エージェントコンポーネント２０２は、クライアント機械のデルタスキャンを行い、最後のスキャンからの変更のみログ付けする。なおも別の実施形態では、エージェントコンポーネント２０２によるスキャンは、要求に応じて、実行され、異常またはクライアント機械に関して報告された問題を修復しようとする技術者またはサポート人員にとって貴重なツールを提供する。
【００３２】
エージェントコンポーネント２０２によって行われる第２の主要機能は、挙動ブロックの機能である。例えば、エージェントコンポーネント２０２は、常時（または、実質的に、常時）、システムファイルおよびレジストリ等の重要なシステムリソースへのアクセスを監視し、必要に応じて、これらのリソースへのアクセスをリアルタイムで選択的にブロックし、悪質なソフトウェアからの損傷を防止してもよい。挙動監視は、継続的に生じ得るが、挙動ブロックは、修復アクションの一部として有効にされてもよい。例えば、分析コンポーネント１１０が、ウイルスの存在を疑う場合、修復アクションをダウンロードし、クライアントに、エージェントコンポーネント２０２を介して、ウイルスが管理システム内の重要な情報リソースにアクセスしないようにブロックさせることができる。
【００３３】
エージェントコンポーネント２０２によって行われる第３の機能は、「応答エージェント」のための実行環境を提供することである。応答エージェントは、エージェントコンポーネント２０２によって理解されるコマンドであってもよく、または種々のタイプのトラブル状態に対処するための自動化手順を実装する、より包括的「モバイルソフトウェアコンポーネント」であってもよい。例えば、分析コンポーネント１１０が、ウイルスの存在を疑う場合、応答エージェントをダウンロードし、エージェントコンポーネント２０２に、疑いがあるコードまたはデータを管理システムから除去させることができる。エージェントコンポーネント２０２は、監視されているコンピュータ上のサービスまたは他のバックグラウンドプロセスとして起動してもよい。本発明の実施形態によって提供される情報の範囲および粒度のため、修復は、従来のシステムより正確に行われることができる。
【００３４】
エージェントコンポーネント２０２のさらに別の機能は、受信された応答エージェント（単に、コマンドまたはメッセージであり、必ずしも、独立して、実行可能な機能ではなくてもよい）に応じて、例えば、アービトレータコンポーネント１１３へのアセット要求メッセージから開始するイベントのシーケンスを始動させ、最終的には、１つ以上のドナーコンピュータ（本明細書では、「標的コンピュータ」または「受信側」とも称される）に、アセット要求または具体的データ、例えば、補正データを送達させ、次いで、受信側内に記憶され、そのコンピュータ上の既存のデータを置換する、またはそれに追加する、それによって、問題または異常を修復することである。
【００３５】
さらに図２に示されるように、本発明の実施形態は、第９５６号特許に詳細に説明されるように、適応参照モデルコンポーネント２０６を含んでもよい。適応参照モデル２０６は、多くのコンピュータからのスナップショットを分析し、一般的データマイニングアルゴリズムまたは本目的のために専用に設計された専用データマイニングアルゴリズムを使用して、統計的に有意なパターンを識別するために使用される。参照が確立されると、１つ以上のサンプルスナップショットが、何らかの異常が集合全体または集合の任意の部分内に生じているかどうか判定するために使用されることができる。
【００３６】
ポリシーテンプレートコンポーネント２０８は、サービスプロバイダが、「ポリシー」の形態において、ルールを適応参照モデルに手動で挿入することを可能にする。ポリシーは、属性（ファイル、レジストリキー等）と、モデルに適用されると、モデル内で統計的に生成される情報の一部をオーバーライドする値の組み合わせである。本機構は、セキュリティポリシーとのコンプライアンスの検証および適切なソフトウェアアップデートがインストールされていることを確実にするためのチェック等の種々の一般的保守アクティビティを自動化するために使用されることができる。
【００３７】
図２の情報フローの一部として、スナップショットの所与のものを受信し、所与の適応参照モデルによって提供される「正常」パターンと比較して、スナップショット内の異常を検出するように配列される、検出モジュール２１８が、さらに提供される。異常は、本明細書で使用されるように、予想外に存在するアセット、予想外に不在のアセット、または未知の値を有するアセットとして定義され得る。異常は、診断モジュール２１０を介して、認識フィルタ２１６のライブラリに対して一致されてもよい。認識フィルタ２１６は、特定の根本原因状態または一般的種類の状態の存在を示す、特定の異常パターンを備える。
【００３８】
認識フィルタ２１６はまた、状態と、重大度指標、テキスト説明、および応答エージェントへのリンクを関連付けてもよい。別の実施形態では、認識フィルタ２１６は、良性の異常を識別および解釈するために使用されることができる。例えば、ユーザが、アドミニストレータが、いかなる問題も生じさせないであろうと確信する、新しいアプリケーションを追加する場合、本発明によるシステムは、依然として、新しいアプリケーションを異常のセットとして報告するであろう。アプリケーションが新しい場合、異常として追加するアセットの報告は、正しい。しかしながら、アドミニストレータは、アプリケーションを追加することによって生成される異常を良性として解釈するために、認識フィルタ２１６を使用することができる。
【００３９】
異常が、認識フィルタを使用して、既知の状態に一致する場合、問題の根本原因は、したがって、既知であり得る。その情報、すなわち、トラブル状態を用いて、応答モジュール２１４は、応答エージェントライブラリ２１２と組み合わせて、変則データを有するとして識別されたコンピュータ上に常駐するエージェントコンポーネント２０２に返すための適切な応答エージェントを選択するために使用されることができる。適応参照モジュール開発および使用に関するさらなる詳細は、第９５６号出願に見出され得る。要するに、適応参照モデルまたはある他の手段の使用を介するかにかかわらず、本発明の必要要素は、所与の（例えば、標的）コンピュータ上に存在し得る、特定の異常の識別である。
【００４０】
本発明に照らした修復に好適である、３つの主要タイプの異常が存在する。第１に、コンピュータがデータを紛失していると判定されるときに生じる、予想外不在（ＵＡ）異常（例えば、プログラムの不完全インストール、あるいは削除されたファイルまたはレジストリキー）が存在し得る。第２に、特定のデータがあるべきものと異なると判定されるときに生じる、未知の値（ＵＶ）異常（例えば、ファイルが破損している、レジストリキーが修正されている、プロセスが拒否されている、またはコールスタック搾取）が存在し得る。これらのタイプの異常の両方の修復（高度自動化方式における）は、本発明の実施形態を用いて可能である。第３のタイプの異常である、予想外存在（ＵＰ）異常は、コンピュータが存在するべきではないデータを含むときに生じる。本タイプの異常の修復は、予想外データの削除または除去を伴う。
【００４１】
図３は、静的およびアクティブコンピュータスキャンを使用した異常検出のためのプロセスを図示する、フロー図である。静的スキャン範囲３２０は、適切に構成されている（すなわち、破損していない、あるいはマルウェアまたはウイルスに感染していない）、コンピュータアセットのベースラインまたは基準を形成する、所与のコンピュータまたは複数のコンピュータに搭載される、コンピュータアセットのセットを識別するために開発される。本ベースラインは、第９３６号および第０８７号特許に説明されるように開発されることができる。自動スタート機構３３０（例えば、ランキー、予定されたタスク、サービス等）が、静的スキャン範囲３２０とともにコンパイルされる。静的依存性分析が、３５０で行われ、静的に依存するアセットの完全セットが、取得される。
【００４２】
同様に、アクティブプロセス３１０が、カタログされる。その関連付けられたランタイム依存性３４０は、動的に依存するアセットの完全セットを生成するように分析される。アセットの静的および動的セットは、全体的スキャン範囲を生成するように組み合わせられる。ステップ３１０−３５０で生成されたアイテムは、周期的に、あるいはアセットの変更が変化すると、または新しいアセットが全体的スキャン範囲に追加されると、反復されてもよい。スキャン範囲が確立されると、アセットは、一意の識別子に対してスキャンされる３７０。新しく発見されたＩＤ（例えば、ＧＵＩＤおよびＵＵＩＤ）は、ＩＤスキャンリストに追加される３８０。静的ファイルおよびランタイムプロセスは、ＩＤスキャンリスト内のＩＤに対して検索される。新しく識別されたアセットは、スキャン範囲に追加される。
【００４３】
本明細書に説明される技法を促進するために、スキャン範囲ならびにランタイムおよび静的依存性技法が、以下に説明される。技法の１つは、アセット正規化である。メモリ内のアセットを比較することを可能にするために、一意の識別が、メモリ内アセット、例えば、ＤＬＬならびに異なる機械および同一の機械上のプロセスの異なるインスタンスにわたって安定するプロセスのメモリと関連付けられた他のアイテムに対して開発される。一意のアセット識別の開発を促進するために、変換が、ソースコードまたは正規化されたメモリ空間に適用される。一実施例では、実行可能コードセグメントのメモリコンテンツは、暗号学的ハッシュを使用して、ハッシュされてもよく、メモリ領域の全てに対するハッシュのセットは、モジュールの識別として使用されることができる。故に、プロセスは、その対応するコードセグメントの全てのハッシュによって識別されることができる。これらの正規化されたアセットは、アセット正規化モデルと称されてもよい。アセット正規化モデルは、適応参照モデルと別個であってもよく、またはその一部であってもよい。
【００４４】
次の技法のセットは、挙動異常を検出することを含む。メモリアセット間の関係は、異常検出の目的のために、アセットと見なされることができる。マルウェアによって生成され得る、メモリスキャナによって挙動異常を検出するための第１の例示的技法は、ＤＬＬインジェクションを検出することである。多くのシステム上で実行する同一のアプリケーションは、メモリ内にロードされたＤＬＬの同一のセットを有し、実行コードのセットは、プロセスの一意の識別を形成する。プロセスとそのロードされたＤＬＬの相関が、アセットとしてエンコードされる場合、これらのアセットは、モデル内にアセットのクラスタを形成し、ウイルスまたはマルウェアによってインジェクトされたＤＬＬは、モデル内の予想外存在異常を生成するであろう。
【００４５】
ＤＬＬインジェクションを検出する実施例は、デバイス、例えば、パーソナルコンピュータ（ＰＣ）上のファイルを閲覧するためのグラフィカルユーザインターフェースアプリケーションである、Ｗｉｎｄｏｗｓ（登録商標）Ｅｘｐｌｏｒｅｒ（ｅｘｐｌｏｒｅｒ．ｅｘｅ）を用いて、以下で検討される。コンピュータ集合、例えば、類似オペレーティングシステムを伴う類似機械の集合内のほとんどの機械は、以下に示されるように、ｅｘｐｌｏｒｅｒ．ｅｘｅプロセスにロードされたモジュールの同一のセットを呈する。
プロセス名：
ｅｘｐｌｏｒｅｒ．ｅｘｅ
ｅｘｐｌｏｒｅｒ．ｅｘｅに対してロードされたＤＬＬ：
ｃ：＼ｗｉｎｄｏｗｓ＼ｔｅｍｐ＼ａｃｔｘｐｒｘｙ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｓｙｓｔｅｍ３２＼ｃｓｃｏｂｊ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｓｙｓｔｅｍ３２＼ｃｓｃｕｉ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｓｙｓｔｅｍ３２＼ｄａｖｃｌｎｔ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｓｙｓｔｅｍ３２＼ｄｈｃｐｃｓｖｃ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｔｅｍｐ＼ｉｅｒｔｕｔｉｌ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｗｉｎｓｘｓ＼ｍｓｉｍｇ３２．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｗｉｎｓｘｓ＼ｎｔｓｈｒｕｉ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｗｉｎｓｘｓ＼Ｗｌｄａｐ３２．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｗｉｎｓｘｓ＼ｗｓｃａｐｉ．ｄｌｌ
【００４６】
しかしながら、例えば、それ自体が現在起動中のｅｘｐｌｏｒｅｒ．ｅｘｅアプリケーション内にインジェクトされた悪質なソフトウェアが存在する、ある機械上では、ｅｘｐｌｏｒｅｒ．ｅｘｅアプリケーションは、以前にロードされたモジュールのセットに加え、以下に示されるように、他の機械、例えば、ＰＣ上では動作していることが見つけられていない、付加的ＤＬＬ、例えば、ｃ：＼ｔｅｍｐ＼ｗｅｂｃｈｅｃｋ．ｄｌｌを有するであろう。
プロセス名：
ｅｘｐｌｏｒｅｒ．ｅｘｅ
ロードされたＤＬＬ：
ｃ：＼ｗｉｎｄｏｗｓ＼ｔｅｍｐ＼ａｃｔｘｐｒｘｙ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｓｙｓｔｅｍ３２＼ｃｓｃｏｂｊ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｓｙｓｔｅｍ３２＼ｃｓｃｕｉ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｓｙｓｔｅｍ３２＼ｄａｖｃｌｎｔ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｓｙｓｔｅｍ３２＼ｄｈｃｐｃｓｖｃ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｔｅｍｐ＼ｉｅｒｔｕｔｉｌ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｗｉｎｓｘｓ＼ｍｓｉｍｇ３２．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｗｉｎｓｘｓ＼ｎｔｓｈｒｕｉ．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｗｉｎｓｘｓ＼Ｗｌｄａｐ３２．ｄｌｌ
ｃ：＼ｗｉｎｄｏｗｓ＼ｗｉｎｓｘｓ＼ｗｓｃａｐｉ．ｄｌｌ
ｃ：＼ｔｅｍｐ＼ｗｅｂｃｈｅｃｋ．ｄｌｌ
本付加的ＤＬＬ（ｃ：＼ｔｅｍｐ＼ｗｅｂｃｈｅｃｋ．ｄｌｌ）は、本プロセスに対して予想外存在異常であるとして識別され、それによって、悪質なソフトウェアまたは個々の機械に侵入している場合がある他のアプリケーションを識別するであろう。
【００４７】
メモリスキャナが、マルウェアによって生成され得る挙動異常を検出するために使用することができる、例示的技法は、新しいスレッドがプロセス内で作成されるたびに、実行スタックを表すアセットをエンコードすることによって、変則スレッドを生じさせる初期搾取を検出することである。機械の搾取は、典型的には、機械上のその独自の実行スレッドを獲得するためのある技法から始まる。搾取は、スタックオーバーフロー（一般的である）、ジャストインタイム（ＪＩＴ）コンパイル拡散（例えば、Ａｕｒｏｒａ  Ｊａｖａ（登録商標）  Ｖｉｒｔｕａｌ機械（ＪＶＭ）を用いて）、またはコール時のｒｅｔｕｒｎ  ｔｏ  ｌｉｂｃ攻撃等の多くの形態をとり得る。これらの技法の全てに対して、第１の段階は、小セクションのコードをプロセスのメモリ内にインジェクトし、実行スレッドをそのプロセス内で開始することである。コールスタックのモデルが、定義され、スレッド作成と関連付けられる場合、次いで、これらの技法の使用は、予想外存在スレッド作成技法として現れるであろう。
【００４８】
故に、コールバックは、プロセスが新しい実行スレッドを作成すると随時、登録されることができる。本コールバックは、スレッドの作成をトリガしたコード実行パスのスタックトレースを捕捉することができる。スタックトレースおよびその関連付けられたプロセスのセットは、スレッド作成挙動を特性評価する統計モデルを構築するために使用されることができる。
【００４９】
したがって、スタックオーバーフロー搾取が試みられると、スレッド作成をトリガした実行パスは、適切にロードされた実行可能コードに関連することができないメモリ場所を参照する、コールスタックの上層にコードアドレスを含有するであろう（すなわち、コード場所の代わりに、スタックメモリ場所をポイントするであろう）。詐欺コードメモリ場所はまた、スタックトレースの底層にコード場所を含有し得、他のロードされた実行可能モジュールに接続され、通常、スレッド作成と関連付けられないであろう（記録されたモデルに従って）。これは、リアルタイムスレッド作成異常の生成をトリガするであろう。
【００５０】
ｒｅｔｕｒｎ  ｔｏ  ｌｉｂｃ攻撃の場合、スレッド作成をトリガする実行パスは、通常、ロードされた実行可能モジュールを参照するであろうが、コールスタックの上層のこれらのモジュール内のオフセットは、スレッド作成と関連付けられたいずれの以前のメモリ場所とも一致せず、それによって、リアルタイムスレッド作成異常を生成するであろう。最も一般的ＪＩＴ拡散攻撃では、スレッド作成の原点は、動的に割り振られた実行可能メモリ内に存在し、そこに、ＪＩＴコンパイラは、コンパイルされたコードフラグメントを置く。本プロセスはまた、そのようなメモリセグメントからのスレッド作成が、ロードされたモジュールに逆トレースされ得ないことに基づいて、リアルタイムスレッド作成異常として現れるであろう。
【００５１】
表１および２は、スレッド作成をトリガした正常スタックトレース（表１）と、スタックオーバーフロー搾取によってトリガされたスレッド作成（表２）との間の差異を図示する、実施例を提供する。スタックフレーム内の戻りアドレスは、プロセスによってロードされたモジュール内に含有される関数内のオフセットに対してアドレスを解決しようとする試みにおいて事後処理される。正常スレッド作成スタックトレースの場合、スタックフレーム内のアドレスは全て、プロセスによってすでにロードされた既知の関数およびモジュールに対してトレース可能であることが見出される。
【表１】
2018142372.tif 000003
【００５２】
表２に示される実施例では、スレッド作成は、ＬｓａｌＦｒｅｅＲｅｔｕｒｎＢｕｆｆｅｒにおける脆弱性を利用する（表１に示されるように、ＬｓａｌＯｐｅｎＰｏｌｉｃｙＴｒｕｓｔｅｄに関連して）、スタックオーバーフロー搾取によってトリガされる。表１に示される０ｘ００６８ｄ０６０のオリジナルの戻りアドレスは、以下の表２に示されるように、「未知の」プロセスを生じさせるために、ＮｔＣｒｅａｔｅＴｈｒｅａｄとして知られるプロセスを呼び出したアドレス０ｘ０２６４ｄ８８においてインジェクトされたコードフラグメントのアドレスと置換された。インジェクトされたコードフラグメントのアドレス（０ｘ０２６４ｄ８８）は、ロードされたモジュール内のオフセットにマップしないことに留意されたい。故に、それが生じるとき、またはそれが生じるのに伴って、搾取を検出するために使されることができる、挙動署名が、作成される。
【表２】
2018142372.tif 000004
【００５３】
前述の異常検出技法が、商業上、実行可能となるために、誤検出報告の数は、最小限にされるべきである。言い換えると、存在しないときの異常の報告は、エンドユーザにとってプロセスを信用できるとは言えないものにする。確かな異常検出イベントを確認するために、経時的に変化するにつれた単一機械上のアセット間の相関が、多数の機械にわたって構築されたモデルへの散発的挙動の寄与を最小限にするために使用される。各機械は、その起動プロセス毎に、モデルを周期的に更新する。これらのモデルは、プロセスが開始および停止する、異なるモジュールをロードおよびアンロードする、ファイルを開くおよび閉じる、かつスレッドを生じさせるにつれて、経時的に進化する。
【００５４】
定期的間隔において、エージェント２０２は、プロセスモデルの安定コンポーネントを含み、測定される全プロセスの挙動プロファイルを含有する、サーバに、更新されたモデルの部分を送信する。頻繁に変化しない、プロセスモデルのコンポーネントが、次いで、多数の機械から類似の安定プロセスサンプルを包含するモデルを構築するために使用される。頻繁に変化するプロセスモデル内のアイテムの一実施例は、アプリケーション、例えば、ワード処理アプリケーションによってオープンにされるハンドル（ファイルおよびレジストリキー）のセットであり得る。ハンドルデータは、ユーザが、経時的に、異なるファイルで作業するにつれて、変化し、それらの具体的ファイルの追跡は、アプリケーションの一般的挙動を特性評価する際に有用とならないであろう。本ハンドルのセットは、プロセスモデルが、サーバに送信され、他のコンピュータからの類似プロセスモデルと組み合わせられると、除外されることができる。
【００５５】
アセット正規化モデルが安定すると、モデルは、クライアント機械に分散されることができ、オフラインで使用されることができる。サーバコンポーネントは、集合全体からのデータを使用して構築されたモデルの安定コンポーネントを各個々のエージェントと共有することができる。これは、エージェントが、サーバ、例えば、自動化サポート機器のサーバコンポーネントと通信不可能であるとき、連続様式において、エージェントによって行われるモデルに対する異常のリアルタイムチェックを可能にするであろう。
【００５６】
さらに、一般的挙動を特性評価するとき、機械内に、経時的に頻繁に変化するが、ほとんど値を含有しない、アイテムが存在するように、一般的挙動を特性評価するとき、スキャン内に、頻繁に変化し得ないが、特定の機械に対して一意であり、同様に、低値を含有する、アイテムが存在する。そのようなアイテムの実施例は、環境内の単一機械のみにインストールされたアプリケーションのファイルである。そのようなアイテムは、環境内の他の機械に関連せず、したがって、リアルタイムチェックのために使用されるために、集合に分散されないであろう。
【００５７】
前述の開示から当業者が理解するように、コンピュータの管理ネットワーク内の自動化システムおよびネットワーク化されたコンピュータの集合の一部であるコンピュータ内の異常を検出するための方法を実装することによって、本明細書に説明されるシステムおよび方法は、その精神または本質的特性から逸脱することなく、他の具体的形態で具現化されてもよい。前述の実施形態は、したがって、あらゆる観点において、例証と見なされるものであって、限定を意味するものではない。
【図１】
2018142372.tif 000005
【図２】
2018142372.tif 000006
【図３】
2018142372.tif 000007
【外国語明細書】
2018142372000001.pdf