(57)【特許請求の範囲】
【請求項１】
許可されたコードによるネットワーク接続の確立の試みを認証する方法であって、
前記許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、前記許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットを用意することと、
新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に記録された新しいスタックトレースを受信することと、
スタックトレーステンプレートへの一致を識別するために、前記新しいスタックトレースと前記複数のスタックトレーステンプレートとの間の類似性を測定することと、
事前定義ルール要件に対して、一致したスタックトレーステンプレートを評価することと、
前記一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、前記一致したスタックトレーステンプレートでルールセットデータベースを更新することと
を含み、
前記一致したスタックトレーステンプレートを評価することが、異なるクライアントからの以前のスタックトレーステンプレート一致の数を示すカウンタの値をインクリメントすることと、前記一致の数の事前定義ルール要件に対して前記値を評価することとを含み、
前記異なるクライアントが、同じ指定されたグループの一部である、方法。
【請求項２】
前記複数のスタックトレーステンプレートが、前記許可されたコードの疑わしい悪意のある挙動を表すものとして指定される、請求項１に記載の方法。
【請求項３】
前記複数のスタックトレーステンプレートおよび前記新しいスタックトレースが、前記許可されたコードの前記スタックトレースに関連して収集されたコンテキストデータを含み、前記類似性が前記コンテキストデータに従って測定される、請求項１に記載の方法。
【請求項４】
前記コンテキストデータが、イベントＩＤおよび／またはホスト名を含む、請求項３に記載の方法。
【請求項５】
前記コンテキストデータが、前記それぞれのクライアントで動作する類似したオペレーティングシステム、類似した許可されたアプリケーション、異なる許可されたアプリケーションによる類似したスタックトレースデータ、および前記ネットワーク接続を確立するための類似したプロトコルからなる群から選択された少なくとも１つのメンバを含む、請求項３に記載の方法。
【請求項６】
前記一致がないことに基づいて前記新しいスタックトレースを前記データセットに新しいスタックトレーステンプレートとして追加することをさらに含む、請求項１に記載の方法。
【請求項７】
前記事前定義ルール要件に対して前記一致したスタックトレーステンプレートを評価することが、前記一致したスタックトレーステンプレートおよび前記新しいスタックトレースが異なるクライアントに関連づけられるとき実行される、請求項１に記載の方法。
【請求項８】
前記新しいスタックトレースを解析して、悪意のあるコードに関連している疑いがあるとして前記ネットワーク接続を指定することをさらに含み、
悪意のあるコードに関連する前記疑いを、前記許可されたコードに関連するとして再指定することをさらに含む、請求項１に記載の方法。
【請求項９】
悪意のあるコードに関連する前記疑いが、悪意のあるような挙動を表示する前記新しいクライアントにインストールされた新しい許可されたコードによってトリガされる、請求項８に記載の方法。
【請求項１０】
前記許可されたコードが、悪意のあるコードに関連する疑いの識別を間違ってトリガすることによって、偽陽性の識別を表す、請求項８に記載の方法。
【請求項１１】
前記認証された新しいネットワーク接続に関連づけられる前記スタックトレースが、悪意のある通信のための前記ネットワーク接続を確立する試みに関連づけられる少なくとも１つのスタックトレーステンプレートに一致する、請求項８に記載の方法。
【請求項１２】
前記新しいスタックトレースおよび前記複数のスタックトレーステンプレートが、プロセス、モジュール、およびスレッドからなる群から選択された少なくとも１つのメンバを含むフローデータをさらに含む、請求項１に記載の方法。
【請求項１３】
前記新しいスタックトレースが、悪意のあるコードに関連するスタックトレースと類似性がある悪意のあるような挙動を表示する、請求項１に記載の方法。
【請求項１４】
前記複数のスタックトレーステンプレートが、事前定義期間内の複数の前記クライアントへの類似した許可されたコードの権限を与えられたインストールに基づく、請求項１に記載の方法。
【請求項１５】
前記事前定義要件が、前記許可されたコードによる許可されたネットワーク接続の偽陽性の接続ブロッキングを防止または低減するように選択される、請求項１に記載の方法。
【請求項１６】
前記事前定義要件が、許可されたネットワーク接続の偽陽性の接続ブロッキングに対する許容レベルを表す、請求項１に記載の方法。
【請求項１７】
許可されたコードによるネットワーク接続の確立の試みを認証するためのシステムであって、
前記許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、前記許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットと、
少なくとも１つのイベント管理サーバであり、
特定の新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に複数のクライアントのうちの前記特定の新しいクライアントにおいて記録された新しいスタックトレースを受信し、
スタックトレーステンプレートへの一致を識別するために、前記新しいスタックトレースと複数のスタックトレーステンプレートとの間の類似性を測定し、
事前定義要件に対して前記一致したスタックトレーステンプレートを評価し、
前記一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、前記一致したスタックトレーステンプレートでルールセットデータベースを更新する
ために前記少なくとも１つのイベント管理サーバのプロセッサにより実施可能なコードを含む、少なくとも１つのイベント管理サーバと
を含み、
前記一致したスタックトレーステンプレートを評価することが、異なるクライアントからの以前のスタックトレーステンプレート一致の数を示すカウンタの値をインクリメントすることと、前記一致の数の事前定義ルール要件に対して前記値を評価することとを含み、
前記異なるクライアントが、同じ指定されたグループの一部である、
システム。
【請求項１８】
前記イベント管理サーバと通信するおよび複数のクライアント端末のうちの少なくとも１つと通信する少なくとも１つのゲートウェイサーバをさらに含み、前記少なくとも１つのゲートウェイサーバが、
前記新しいスタックトレースを解析して、悪意のあるコードに関連している疑いがあるとして前記新しいネットワーク接続を指定し、
解析のために前記新しいスタックトレースを前記イベント管理サーバに送信し、
前記更新されたルールセットデータベースを受信し、
前記新しいネットワーク接続の接続確立を可能にする
ために前記少なくとも１つのゲートウェイサーバのプロセッサにより実施可能なコードを含む、請求項１７に記載のシステム。
【請求項１９】
前記少なくとも１つのイベント管理サーバが複数のゲートウェイサーバと通信し、各々のそれぞれのゲートウェイサーバが前記複数のクライアントのうちの少なくとも１つのクライアントと通信し、各々のそれぞれのゲートウェイが、
前記新しいクライアントから前記新しいスタックトレースを受信することと、
前記ネットワーク接続が悪意のあるアクティビティで使用される悪意のある通信を確立する疑わしい試行の有無を決定するために前記新しいスタックトレースを解析することと、
前記新しいスタックトレースが悪意のあるデータと相関しているとき前記悪意のある通信のための前記ネットワーク接続を確立する試みを検出することと、
前記ネットワーク接続を使用して、前記悪意のある通信を確立する前記疑わしい試行を表すメッセージを生成することと
を行うために各々のそれぞれのゲートウェイのプロセッサにより実施可能なコードを含み、
前記イベント管理サーバの前記コードが、各々のそれぞれのゲートウェイサーバからの前記メッセージを受信し、前記測定すること、前記評価すること、および前記更新することを実行して、許可されたネットワーク接続を表すものとして前記新しいネットワーク接続を再指定し、それによって、前記それぞれのゲートウェイには悪意のあるように見える許可されたコードによる偽陽性のネットワーク接続のブロッキングを防止または低減するように実施可能である、請求項１７に記載のシステム。
【請求項２０】
前記特定の新しいクライアントが、悪意のあるコードの識別に関連する疑いをトリガするために前記新しいクライアントのプロセッサにより実施可能なコードを含む前記許可されたコードに関連づけられる許可されたアプリケーションをさらに含む、請求項１９に記載のシステム。
【請求項２１】
前記少なくとも１つのイベント管理サーバおよび前記複数のゲートウェイサーバが、前記少なくとも１つのイベント管理サーバに組み合わされる、請求項１９に記載のシステム。
【請求項２２】
前記許可されたコードが、注入されたコードとしてアプリケーション内にインストールされ、前記注入されたコードが、悪意のある注入されたコードに関連づけられるスタックデータに類似したスタックデータに関連づけられる、請求項１７に記載のシステム。
【請求項２３】
前記許可されたコードが、悪意のあるコードによって得られた高レベルパーミッションと同様の仕方でネットワーク接続を確立するように高レベルパーミッションを伴って構成される、請求項１７に記載のシステム。
【請求項２４】
それぞれのクライアントごとのインストールのためのクライアントモジュールをさらに含み、前記クライアントモジュールが、
新しくインストールされたアプリケーションを前記それぞれのクライアントにおいて識別し、
前記新しくインストールされたアプリケーションを解析して、前記新しくインストールされたアプリケーションによって悪意のある通信のための接続を確立する試行を識別する
ために前記それぞれのクライアントのプロセッサにより実施可能なコードを含む、請求項１７に記載のシステム。
【請求項２５】
前記新しくインストールされたアプリケーションが、インストールポリシーを破るユーザによって許可されたアプリケーションとしてインストールされる、請求項２４に記載のシステム。
【請求項２６】
許可されたコードによるネットワーク接続の確立の試みを認証する、コンピュータプログラムであって、
前記許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、前記許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットを用意するステップと、
新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に記録された新しいスタックトレースを受信するステップと、
スタックトレーステンプレートへの一致を識別するために、前記新しいスタックトレースと前記複数のスタックトレーステンプレートとの間の類似性を測定するステップと、
事前定義ルール要件に対して前記一致したスタックトレーステンプレートを評価するステップと、
前記一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、前記一致したスタックトレーステンプレートでルールセットデータベースを更新するステップと
を、コンピュータに実行させ、
前記評価のステップが、異なるクライアントからの以前のスタックトレーステンプレート一致の数を示すカウンタの値をインクリメントする処理と、前記一致の数の事前定義ルール要件に対して前記値を評価する処理とを含み、
前記異なるクライアントが、同じ指定されたグループの一部である、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、そのいくつかの実施形態において、悪意のある接続の検出のためのシステムおよび方法、より詳細には、限定ではないが、悪意のある通信の検出の精度保証のためのシステムおよび方法に関する。
【背景技術】
【０００２】
いくつかのタイプの悪意のあるコードはコンピュータを攻撃し、ネットワーク接続により他のサーバに接続するためにホストコンピュータを使用する。１つの例では、ネットワーク接続は、例えば、盗んだデータをリモートサーバに送るために悪意のあるコード自体によって開始される。別の例では、マルウェアが正当なアプリケーションにコードを注入し、次いで、注入されたコードが、盗んだデータを送信するためにリモートサーバへの接続を開始する。
【０００３】
あるタイプの悪意のある攻撃の１つの例は高度な標的型攻撃（ＡＴＡ）であり、それは、権限を与えられていない当事者がネットワークにアクセスし、長い期間の間検出されないままである巧妙な攻撃である。ほとんどのＡＴＡの意図は、ネットワークに損傷を引き起こすのではなくデータを盗むことである。ＡＴＡは、クレジットカードプロセッサ、政府機関、および金融サービス業などの高い価値の情報をもつ産業部門の組織を標的にする。
【０００４】
アンチＡＴＡ解決策の例は、侵入された悪意のあるコードの攻撃の検出または侵入された悪意のあるコードの検出に基づく。別の例では、他のツールが、動作中に異常なまたは悪意のあるアクティビティを検出するように設計される。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明のいくつかの実施形態の一態様によれば、許可されたコードによるネットワーク接続の確立の試みを認証する方法が提供され、この方法は、許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットを用意することと、新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に記録された新しいスタックトレースを受信することと、スタックトレーステンプレートへの一致を識別するために、新しいスタックトレースと複数のスタックトレーステンプレートとの間の類似性を測定することと、事前定義ルール要件に対して、一致したスタックトレーステンプレートを評価することと、一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、一致したスタックトレーステンプレートでルールセットデータベースを更新することとを含む。
【０００６】
任意選択で、複数のスタックトレーステンプレートが、許可されたコードの疑わしい悪意のある挙動を表すものとして指定される。
【０００７】
任意選択で、複数のスタックトレーステンプレートおよび新しいスタックトレースが、許可されたコードのスタックトレースに関連して収集されたコンテキストデータを含み、類似性がコンテキストデータに従って測定される。任意選択で、コンテキストデータが、イベントＩＤおよび／またはホスト名を含む。代替としてまたは追加として、コンテキストデータが、それぞれのクライアントで動作する類似したオペレーティングシステム、類似した許可されたアプリケーション、異なる許可されたアプリケーションによる類似したスタックトレースデータ、およびネットワーク接続を確立するための類似したプロトコルからなる群から選択された少なくとも１つのメンバを含む。
【０００８】
任意選択で、方法は、一致がないことに基づいて新しいスタックトレースをデータセットに新しいスタックトレーステンプレートとして追加することをさらに含む。
【０００９】
任意選択で、一致したスタックトレーステンプレートを評価することが、異なるクライアントからの以前のスタックトレーステンプレート一致の数を示すカウンタの値をインクリメントすることと、一致の数の事前定義ルール要件に対してその値を評価することとを含む。任意選択で、異なるクライアントが、同じ指定されたグループの一部である。
【００１０】
任意選択で、事前定義ルール要件に対して、一致したスタックトレーステンプレートを評価することが、一致したスタックトレーステンプレートおよび新しいスタックトレースが異なるクライアントに関連づけられるとき実行される。
【００１１】
任意選択で、方法には、新しいスタックトレースを解析して、悪意のあるコードに関連している疑いがあるとしてネットワーク接続を指定することがさらに含まれ、悪意のあるコードに関連する疑いを、許可されたコードに関連するとして再指定することがさらに含まれる。任意選択で、悪意のあるコードに関連する疑いが、悪意のあるような挙動を表示する新しいクライアントにインストールされた新しい許可されたコードによってトリガされる。代替としてまたは追加として、許可されたコードが、悪意のあるコードに関連する疑いの識別を間違ってトリガすることによって、偽陽性の識別を表す。代替としてまたは追加として、認証された新しいネットワーク接続に関連づけられるスタックトレースが、悪意のある通信のためのネットワーク接続を確立する試みに関連づけられる少なくとも１つのスタックトレーステンプレートに一致する。
【００１２】
任意選択で、新しいスタックトレースおよび複数のスタックトレーステンプレートが、プロセス、モジュール、およびスレッドからなる群から選択された少なくとも１つのメンバを含むフローデータをさらに含む。
【００１３】
任意選択で、新しいスタックトレースが、悪意のあるコードに関連するスタックトレースと類似性がある悪意のあるような挙動を表示する。
【００１４】
任意選択で、複数のスタックトレーステンプレートが、事前定義期間内の複数のクライアントへの類似した許可されたコードの権限を与えられたインストールに基づく。
【００１５】
任意選択で、事前定義要件が、許可されたコードによる許可されたネットワーク接続の偽陽性の接続ブロッキングを防止または低減するように選択される。
【００１６】
任意選択で、事前定義要件が、許可されたネットワーク接続の偽陽性の接続ブロッキングに対する許容レベルを表す。
【００１７】
本発明のいくつかの実施形態の一態様によれば、許可されたコードによるネットワーク接続の確立の試みを認証するためのシステムが提供され、このシステムは、許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットと、少なくとも１つのイベント管理サーバであり、特定の新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に複数のクライアントのうちの特定の新しいクライアントにおいて記録された新しいスタックトレースを受信し、スタックトレーステンプレートへの一致を識別するために、新しいスタックトレースと複数のスタックトレーステンプレートとの間の類似性を測定し、事前定義要件に対して、一致したスタックトレーステンプレートを評価し、一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、一致したスタックトレーステンプレートでルールセットデータベースを更新するために少なくとも１つのイベント管理サーバのプロセッサにより実施可能なコードを含む、少なくとも１つのイベント管理サーバとを含む。
【００１８】
任意選択で、システムが、イベント管理サーバと通信するおよび複数のクライアント端末のうちの少なくとも１つと通信する少なくとも１つのゲートウェイサーバをさらに含み、少なくとも１つのゲートウェイサーバが、新しいスタックトレースを解析して、悪意のあるコードに関連している疑いがあるとして新しいネットワーク接続を指定し、解析のために新しいスタックトレースをイベント管理サーバに送信し、更新されたルールセットデータベースを受信し、新しいネットワーク接続の接続確立を可能にするために少なくとも１つのゲートウェイサーバのプロセッサにより実施可能なコードを含む。
【００１９】
任意選択で、少なくとも１つのイベント管理サーバが複数のゲートウェイサーバと通信し、各々のそれぞれのゲートウェイサーバが複数のクライアントのうちの少なくとも１つのクライアントと通信し、各々のそれぞれのゲートウェイが、新しいクライアントから新しいスタックトレースを受信することと、ネットワーク接続が悪意のあるアクティビティで使用される悪意のある通信を確立する疑わしい試行の有無を決定するために新しいスタックトレースを解析することと、新しいスタックトレースが悪意のあるデータと相関しているとき悪意のある通信のためのネットワーク接続を確立する試みを検出することと、ネットワーク接続を使用して、悪意のある通信を確立する疑わしい試行を表すメッセージを生成することとを行うために各々のそれぞれのゲートウェイのプロセッサにより実施可能なコードを含み、イベント管理サーバのコードが、各々のそれぞれのゲートウェイサーバからのメッセージを受信し、測定すること、評価すること、および更新することを実行して、許可されたネットワーク接続を表すものとして新しいネットワーク接続を再指定し、それによって、それぞれのゲートウェイには悪意のあるように見える許可されたコードによる偽陽性のネットワーク接続のブロッキングを防止または低減するように実施可能である。任意選択で、特定の新しいクライアントが、悪意のあるコードの識別に関連する疑いをトリガするために新しいクライアントのプロセッサにより実施可能なコードを含む許可されたコードに関連づけられる許可されたアプリケーションをさらに含む。代替としてまたは追加として、少なくとも１つのイベント管理サーバおよび複数のゲートウェイサーバが、少なくとも１つのイベント管理サーバに組み合わされる。
【００２０】
任意選択で、許可されたコードが、注入されたコードとしてアプリケーション内にインストールされ、注入されたコードが、悪意のある注入されたコードに関連づけられるスタックデータに類似したスタックデータに関連づけられる。
【００２１】
任意選択で、許可されたコードが、悪意のあるコードによって得られた高レベルパーミッションと同様の仕方でネットワーク接続を確立するように高レベルパーミッションを伴って構成される。
【００２２】
任意選択で、システムが、それぞれのクライアントごとのインストールのためのクライアントモジュールをさらに含み、クライアントモジュールが、新しくインストールされたアプリケーションをそれぞれのクライアントにおいて識別し、新しくインストールされたアプリケーションを解析して、新しくインストールされたアプリケーションによって悪意のある通信のための接続を確立する試行を識別するためにそれぞれのクライアントのプロセッサにより実施可能なコードを含む。任意選択で、新しくインストールされたアプリケーションが、インストールポリシーを破るユーザによって許可されたアプリケーションとしてインストールされる。
【００２３】
本発明のいくつかの実施形態の一態様によれば、許可されたコードによるネットワーク接続の確立の試みを認証するためのコンピュータプログラム製品が提供され、コンピュータプログラム製品が、許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットを用意するためのプログラム命令と、新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に記録された新しいスタックトレースを受信するためのプログラム命令と、スタックトレーステンプレートへの一致を識別するために、新しいスタックトレースと複数のスタックトレーステンプレートとの間の類似性を測定するためのプログラム命令と、事前定義ルール要件に対して、一致したスタックトレーステンプレートを評価するためのプログラム命令と、一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、一致したスタックトレーステンプレートでルールセットデータベースを更新するためのプログラム命令とを含む。
【００２４】
特に定義されない限り、本明細書で使用される技術用語および／または科学用語はすべて本発明が属する技術分野の当業者によって一般に理解されるのと同じ意味を有する。本明細書で説明する方法および材料と同様のまたは同等の方法および材料を本発明の実施形態の実施または試験で使用することができるが、例示的な方法および／または材料を以下で説明する。矛盾する場合、定義を含む特許明細書が統制することになる。加えて、材料、方法および例は、例示にすぎず、必ずしも限定することを意図していない。
【００２５】
本発明のいくつかの実施形態が、添付図面を参照しながら、単なる例として、本明細書で説明される。次に図面を詳細に具体的に参照すると、図示の詳細は、例としてのものであり、本発明の実施形態の例示的な議論のためのものであることが強調される。この点に関して、図面とともに行われる説明は、本発明の実施形態をどのように実践できるかを当業者に明らかにする。
【図面の簡単な説明】
【００２６】
【図１Ａ】本発明のいくつかの実施形態による、新しいネットワーク接続のデータを評価する方法のフローチャートの図である。
【図１Ｂ】本発明のいくつかの実施形態による、悪意のある通信のためのネットワーク接続の検出を品質保証する方法のフローチャートの図である。
【図２】本発明のいくつかの実施形態による、任意選択で、悪意のある通信のためのネットワーク接続の検出の品質保証に基づいて、ネットワーク接続のデータを評価するシステムの構成要素のブロック図である。
【図３Ａ】本発明のいくつかの実施形態による、図２のシステムに基づくシステムアーキテクチャのブロック図である。
【図３Ｂ】本発明のいくつかの実施形態による、図２のシステムに基づくシステムアーキテクチャのブロック図である。
【図４Ａ】本発明のいくつかの実施形態による、コールスタックの例の図である。
【図４Ｂ】本発明のいくつかの実施形態による、コールスタックの例の図である。
【発明を実施するための形態】
【００２７】
本発明は、そのいくつかの実施形態において、悪意のある接続の検出のためのシステムおよび方法、より詳細には、限定ではないが、悪意のある通信の検出の精度保証のためのシステムおよび方法に関する。
【００２８】
本発明のいくつかの実施形態の一態様は、イベント管理サーバに関連し、イベント管理サーバは、新しいネットワーク接続に関連づけられるフローデータと、他のネットワーク接続との一致を表す以前に観察されたフローデータ（またはスタックトレース）テンプレートとの間の一致の測定された類似性を定義する事前定義要件に基づいて、許可されたコードに関連するものとして新しいネットワーク接続を評価する。任意選択で、事前定義要件は、他のクライアントによる新しいネットワーク接続のフローデータ間の類似した一致が以前に同じテンプレートと一致したことを表す。一致したテンプレートは、同じフローデータを表示する十分な数のクライアントがテンプレートに一致していた場合、新しいネットワーク接続の確立を許可するようにイベント管理サーバによって認証される。クライアントは、同じ事前指定されたグループ、例えば、組織、会社、部門、およびチームに属することができる。フローデータは、同じまたは類似したコンテキストデータ内で生じ得る。例えば、事前定義要件に基づく認証は、例えば、同じグループの多数のクライアントがすべて同じ許可されたコードをインストールする場合、生じ得る。
【００２９】
任意選択で、イベント管理サーバは、悪意のあるアクティビティのためのネットワーク接続の確立であることが疑われる許可されたコードによって生成されたフローデータを認証する。同じ（または類似した）悪意に見えるフローデータが多数の異なるクライアントで観察された場合、疑わしいフローデータは、例えば、許可されたフローデータを定義するルールセットデータベースへの更新によって認証されたフローデータとして再指定される。
【００３０】
イベント管理サーバは、任意選択で、１つまたは複数のゲートウェイと通信し、各ゲートウェイは１つまたは複数のクライアント端末と通信する。新しいクライアントにおける新しいネットワーク確立プロセスに関連する新しい未知のコードに関連づけられたスタックトレースおよび／またはフローデータの記録が、以前に観察されたフローデータテンプレートとの類似性相関を測定することによって解析されて、新しいスタックトレースが許可されたコードに関連づけられた場合が決定される。フローデータテンプレートは、他の異なるクライアントからの１つまたは複数の以前に観察された類似したフローデータを表す。以前の一致の数は、カウンタに格納することができる。一致の数が事前定義要件を超える場合、一致したフローデータテンプレートは認証される。認証されたテンプレートに一致する新しいフローデータ（新しいネットワーク接続確立の試みに関連する）は、接続確立を続けることを許可される。
【００３１】
いくつかの実施形態では、新しい接続確立プロセスが許可されたコードに関連づけられる関連づけは、２つの段階で実行される。第１の段階（クライアントと通信するゲートウェイサーバで実行することができる）は、未知のコードによる悪意のある通信のためのネットワーク接続を確立する疑わしい試みをクライアントにおいて識別する。第２の段階（ゲートウェイサーバに接続されたイベント管理サーバで実行することができる）は、以前に一致したトリガイベントおよびそのそれぞれのフローデータテンプレートを使用して品質保証を実行し、疑わしい試みが許可されたコードに実際に関連しているかどうか、それゆえに、安全であるかどうかを決定する。イベントがそれぞれのフローデータテンプレートとともに認証されると、新しいルールがゲートウェイのデータベースに追加されて、フローデータテンプレートによって識別されイベントに関連する今後の接続確立が可能になる。
【００３２】
任意選択で、疑わしい接続の試みが最初に識別された後、疑わしい接続フローデータの認証が追加の処理として実行される。疑わしいとして識別された接続確立のサブセットを品質保証のためにさらに処理して、接続確立が、実際に、悪意のあるコードに関連し、許可されたコード（例えば、アプリケーションおよび／またはモジュール）に関連していないことを確実にすることができる。このようにして、品質保証処理が疑わしい試みのサブセットに対して集中的に実行され、一方、正常接続確立パターン（例えば、ローカルゲートウェイサーバで実行される）の指定は局所的に実行することができる。
【００３３】
第１の状態において、それぞれのクライアント端末から生じる接続確立は、多数の接続されたクライアントの各々が解析のためにゲートウェイサーバに接続確立プロセスに関連するフローデータを表すデータを送信することに基づいて、１つまたは複数のゲートウェイサーバでモニタされる。第２の段階において、接続確立が悪意のあるアクティビティに関連づけられている疑いがあるとゲートウェイサーバが決定すると、ゲートウェイサーバと通信しているイベント管理サーバは、識別された疑わしい試みに関連づけられたデータを、事前定義要件を考慮して以前にトリガされた一致ルールおよびそれぞれのフローデータテンプレートとの突き合わせによって解析して、試みが実際に許可された挙動となった場合（すなわち、偽陽性の識別）を決定する。任意選択で、悪意のあるアクティビティの誤った識別は、正常な挙動を表すように修正される。
【００３４】
疑わしい試みは、最初に悪意のあるコードの感染と相関するデータ解析に基づいて識別される。疑わしいネットワーク接続を開始するコードに関連するフローデータを解析して、正常に見えるデータまたはデータフローを生成する代わりに、悪意のあるコードによって生成されたように見えるデータを生成する許可された正常コードによって疑わしい試みが生成された場合を決定する。次いで、疑わしい試みはイベント管理サーバで検証することができ、イベント管理サーバは、試みの誤った分類を、実際には許可されたコードに関連している（および当初指定されたような悪意のあるコードに関連していない）として訂正することができる。最初のゲートウェイ解析によって最初に誤ってブロックされた可能性のあるネットワーク接続は、イベント管理サーバの結果に基づいてアクティブ化されてもよい。ネットワーク接続は、本明細書で説明するように、後続の類似したイベントが識別され一致したときアクティブ化されてもよい。２つの動作モードがあり得ることに留意されたい。第１のモードは、上述のように、第１のイベントが観察された（イベントが悪意のあるアクティビティに関連すると考えた）ときネットワークをブロックし、追加の類似したイベントが観察されたときネットワークをアクティブ化する。第２のモードは、ネットワークアクティブ化および／またはブロッキングを妨げることなく、観察のみによってイベントを認識するようにシステムを訓練するためにシミュレーションモードとして当初動作することができる。
【００３５】
このようにして、偽陽性の接続ブロッキングが防止または低減されて、許可されたコードによる接続の確立が可能になる。悪意のある通信に関連づけられる疑わしい接続確立の試行を識別する際のエラーは、疑わしい試行が実際には悪意のあるコードに関連するのではなく、許可されたおよび／または正常なコード（悪意のあるような挙動を表示する）に関連する場合を検出することによって、防止または低減される。
【００３６】
本発明の少なくとも１つの実施形態を詳細に説明する前に、本発明は、その適用において、以下の説明に記載され、および／または図面および／または実施例に示される構成要素および／または方法の構築および配列の詳細に必ずしも限定されないことを理解されたい。本発明は、他の実施形態が可能であり、または様々な方法で実践もしくは実行することが可能である。
【００３７】
本発明は、システム、方法、および／またはコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する１つのコンピュータ可読記憶媒体（または複数の媒体）を含むことができる。
【００３８】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、磁気記憶デバイス、半導体記憶デバイス、または前述のものの任意の好適な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の包括的でないリストは、以下のものを含む。ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、および前述のものの任意の好適な組合せ。本明細書で使用するコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波路または他の伝送媒体を通って伝搬する電磁波（例えば、光ファイバケーブルを通過する光パルス）、またはワイヤを通して伝送される電気信号などの一時的な信号自体であると解釈されるべきでない。
【００３９】
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、またはネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および／またはワイヤレスネットワークを介して外部コンピュータもしくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および／またはエッジサーバを含むことができる。各コンピューティング／処理デバイスのネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【００４０】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＳｍａｌｌｔａｌｋ、Ｃ＋＋などのようなオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、ユーザコンピュータで全面的に、ユーザコンピュータで部分的に、スタンドアロンソフトウェアパッケージとして、ユーザコンピュータで部分的におよびリモートコンピュータで部分的に、またはリモートコンピュータもしくはサーバで全面的に実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意のタイプのネットワークによってユーザコンピュータに接続されてもよく、または外部コンピュータへの接続がなされてもよい（例えばインターネットサービスプロバイダーを使用するインターネットを通して）。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個人専用にすることができる。
【００４１】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータプログラム製品のフローチャート図および／またはブロック図を参照して本明細書で説明される。フローチャート図および／またはブロック図の各ブロック、およびフローチャート図および／またはブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装できることを理解されよう。
【００４２】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、または機械を生み出す他のプログラマブルデータ処理装置のプロセッサに供給して、その結果、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて特定された機能／動作を実施するための手段を作り出すことができる。これらのコンピュータ可読プログラム命令は、さらに、コンピュータ、プログラマブルデータ処理装置、および／または他のデバイスに、特定な方法で機能するように指示することができるコンピュータ可読記憶媒体に格納することができ、その結果、命令が中に格納されたコンピュータ可読記憶媒体は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて特定された機能／動作の態様を実施する命令を含む製品を含む。
【００４３】
コンピュータ可読プログラム命令を、さらに、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードして、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイスに実行させ、それによって、コンピュータ実施プロセスを発生し、その結果、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて特定された機能／動作を実施する。
【００４４】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品のあり得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための１つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部分を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われることがある。例えば、連続して示された２つのブロックは、関係する機能に応じて、実際には実質的に同時に実行されることがあり、またはブロックは時には逆の順序で実行されることがある。ブロック図および／またはフローチャート図の各ブロック、およびブロック図および／またはフローチャート図のブロックの組合せは、特定の機能もしくは動作を実行するかまたは専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースシステムによって実装されてもよいことにも留意されたい。
【００４５】
本明細書で説明するフローデータという用語は、クライアント端末で収集されるデータを意味し、それは、コールスタックデータと、任意選択で、プロセスデータ、モジュール解析データ、およびスレッドデータなどの１つまたは複数のコールスタック関連データアイテムとを含む。フローデータおよびコールスタックデータという用語は、時には交換されることがある。
【００４６】
本明細書で定義する接続確立という用語は、許可されたコードがネットワーク接続を通じてデータを送信および／または受信することができる前に行われるコンピュータ化されたプロセスを意味する。接続確立プロセスは、正常コードから開始コマンドを受信するアプリケーションプログラミングインタフェースによって管理および／または実行し、接続を確立し、確立された接続を通じて送信するために正常コードからデータを受信し、および／または確立された接続によって受信したデータを正常コードに送信することができる。
【００４７】
次に、本発明のいくつかの実施形態による、ネットワーク接続の、任意選択でコンテキストデータの観点から、フローデータを評価する方法のフローチャートである図１Ａを参照する。本発明のいくつかの実施形態による、新しいネットワーク確立プロセスを認証するためのシステムである図２をさらに参照する。図２を参照して説明するシステムは、図１Ｂを参照して説明する方法を実行することができる。
【００４８】
システムおよび／または方法は悪意に見える挙動を収集し、悪意に見える挙動は、多数のクライアントで観察された場合、悪意のあるアクティビティの誤った検出を意味する。悪意のある挙動は、許可された挙動として再指定される。システムおよび／または方法は、他のクライアントとして見られる共通パターンに基づいて作り出されたフローデータテンプレートに基づいて、新しい未知のコードを、許可されているとして識別する。共通パターンは、同じ（または類似した）許可されたコードによって生成されると仮定される。新しいデータが、フローデータテンプレートと比較され一致すると、新しいデータに関連する未知のコードは許可されたコードとして指定され、その許可されたコードは、テンプレートを訓練するために使用された同じまたは類似した許可されたコードである。
【００４９】
インストールされたコードの各々の外部指定（例えば、許可されているおよび／または悪意のあるとしての）は必要とされない。システムおよび／または方法は、共通パターンが見られるときコードを許可されたものとして自動的に指定し、新しいデータが学習されたフローデータテンプレートと相関しているとき新しい未知コードを許可されたものとして自動的に指定した。インストールされたコードは、外部エンティティによる各コードの事前指定を必ずしも必要とすることなく、本明細書で説明するシステムおよび／または方法によって許可されているとして自動的に指定され、例えば、システム管理者はコードを検証する必要がない。代替として、例えば、イベントの識別および／または突き合わせにおけるエラー、および／またはコードを許可されたものとして指定するおよび／またはコードを悪意のあるものして指定する際のエラー、または他の訂正を手動で訂正するために、手動介入を許可することができる。手動介入は、例えば、システム、方法、および／またはコンピュータプログラム製品管理者に認可される。
【００５０】
許可されたコードの指定、および／または悪意のある通信のためのネットワーク接続を検出する品質保証のためのシステムは、例えば、システム２００内にインストールすることができる。
【００５１】
システム２００は、少なくとも１つのクライアント２０２、例えばラップトップ、デスクトップ、モバイルデバイス（例えば、スマートフォン、タブレット）、および／またはサーバを含む。クライアント２０２は、クライアント２０２からのおよび／またはクライアント２０２へのデータ送信のための新しいネットワーク接続を開始することができるエンドポイントクライアントである。エンドポイントクライアント２０２はサーバとすることができる。
【００５２】
クライアント２０２は、ネットワーク接続機能、例えば、ネットワークインタフェース、送信機、および／または受信機を含む。クライアント２０２は、１つまたは複数のネットワーク２０６、例えば、ワイヤレスネットワーク、有線ネットワーク、セルラネットワーク、インターネット、プライベートネットワーク、およびそれらの多数のネットワークの組合せを通して正当なリモートサーバ２０４と通信することができる。
【００５３】
任意選択で、エンドポイントモジュール２０８Ａが、１つまたは複数のクライアント２０２の（または１つまたは複数のクライアント２０２と通信する）メモリにインストールされる（例えば、プリインストールされる、クライアントで動作するオペレーティングシステムと統合される、および／またはリモートサーバまたはローカルメモリからダウンロードされ、ローカルにインストールされる）。任意選択で、エンドポイントモジュール２０８Ａは、本明細書で説明するように、クライアント２０２のプロセッサによる実施のためのプログラム命令と、クライアント２０２の接続確立関連アクティビティをモニタするためのプログラム命令とを含むコードを含む。代替としてまたは追加として、モジュール２０８Ａは、例えば、ネットワーク確立接続の試みをブロックするために、接続確立プロセスを停止させるために、および／または接続をアクティブ化するためにゲートウェイ２１０および／またはイベント管理サーバ２１６によって指示されるような機能を実行する。
【００５４】
イベント管理サーバ２１６は、接続確立プロセス中に多数のクライアント２０２からアプリケーションに関連するデータ（例えば、パケットおよび／またはフレームにカプセル化されたネットワークメッセージ）を受信し、任意選択でアグリゲーションモジュール２１８を使用して、以前に観察されたアグリゲート済み共通パターンのデータを解析し、アグリゲート済み観察を事前定義要件に対して評価し、許可されたアプリケーションに関連するデータを定義するフローデータテンプレートに基づいてルールのセットを生成する。接続確立プロセスが未知のコードに関連する場合、ゲートウェイ２１０は、新しいルールを含むルールのセット２２４を適用して、未知のコードを許可されたコードとして指定し、新しいネットワーク接続の確立を可能にする。
【００５５】
図１Ａの方法は、イベント管理サーバ２１６内のプロセスに焦点を合わせた方法を説明しており、一方、図１Ｂは、システムの構成要素にわたる全体の方法を説明していることに留意されたい。
【００５６】
１０２において、ネットワーク接続を確立するための接続確立プロセス中にコードのフローデータ（例えば、スタックトレースにおける記録）に関連するデータが、管理サーバで受信される。データは、パケットおよび／またはフレームにカプセル化されたものなどのネットワークメッセージとしてネットワーク接続を通じて送信することができる。任意選択で、データは、任意選択で、クライアントのプロセッサにより実施可能なコードを含むそれぞれのクライアント２０２ごとのエンドポイントモジュール２０８Ａによってローカルに照合される。任意選択で、データは、各クライアントから管理サーバにそれぞれのゲートウェイを介して送信される（各ゲートウェイは、本明細書で説明するように、１組のクライアントおよび管理サーバと通信する）。
【００５７】
任意選択で、接続確立の試みに関連するイベント識別（ＩＤ）および／またはホストデータは、エンドポイントモジュール２０８Ａによってローカルに収集される。ホストデータの例は、ユーザ名、会社名、会社部門、会社チーム、他の組織内グループ名、仮想マシン名、クライアントマシンのアドレスなどの接続確立の試みに関連するネットワークアドレス、および許可されたコードのアドレスのうちの１つまたは複数を含む。イベントＩＤの例は、トリガされた悪意性ルールの識別、それぞれのクライアントデバイスで動作するオペレーティングシステム、許可されたアプリケーション、インストール済みの許可されたモジュール、およびネットワーク接続を確立しようとする試みで使用される通信プロトコル（例えば、伝送制御プロトコル（ＴＣＰ））を含むことができる。
【００５８】
任意選択で、収集されたデータは、イベント管理サーバ２１６に送信される。代替としてまたは追加として、収集されたデータは、図１Ｂを参照して説明するように、最初にゲートウェイ２１０に送信される。
【００５９】
各クライアント２０２は、接続確立プロセスに関連づけられる許可されたコード２０８Ｃをインストールしている。
【００６０】
許可されたコード２０８Ｃ、例えば、許可されたアプリケーションおよび／または許可されたモジュールは、例えば、ネットワーク管理者によって手動でおよび／またはパーミッションに基づいて自動的に、クライアント２０２内にインストールされる。許可されたコード２０８Ｃは、ネットワーク接続を確立しアクティブ化するために接続確立試行を開始する。
【００６１】
許可されたコード２０８Ｃは、悪意のあるコードに感染したアプリケーションの接続確立データに類似する、悪い慣行の接続確立データでプログラムされ得る。
【００６２】
許可されたコード２０８Ｃは、独自のアプリケーション、例えば、カスタマイズされたおよび／または企業内アプリケーションとすることができる。カスタムメイドおよび／または企業内アプリケーションは、組織に特定の要件に対処する、および／またはソフトウェアデプロイメントのギャップを修正するように設計することができる。事業部門では、企業内アプリケーションは、特定のビジネスの重要なビジネス機能に対処するために作り出すおよび／またはカスタマイズすることができる。特定の内部要件のために設計されたソフトウェアは、コード注入などの非標準方法を使用して、悪意のあるコードで使用される方法と同様の仕方で接続確立に介入することができる。別の例では、コード２０８Ｃは、許可されたカスタムセキュリティ監査および／またはエンフォースメントアプリケーションとすることができ、それは、会社クライアント（例えばデスクトップ、ラップトップ、およびサーバ）の全体にわたる会社ポリシーの順守を強制する。セキュリティアプリケーションは、侵略的となる権限を与えられ、接続ハイジャックを含む権限を与えられ、および／または悪意のあるコードによって同様に実行される他のエンフォースメント方法を実行する権限を与えられ得る。
【００６３】
コード２０８Ｃは、クライアント２０２の既存のアプリケーションに関連して、例えば、プラグイン、パッチ、およびコード注入としてインストールされるモジュールとすることができる。例えば、モジュール２０８Ｃは、信頼できるブラウジングのために設計されたセキュリティツールとすることができる。モジュール２０８Ｃは、ネットワーク接続通信を操作するためにウェブブラウザにコードを注入することによって既存のウェブブラウザ内にインストールすることができる。コード注入は、コード注入ベースの悪意のあるコードが働く方法と同様に実行される。注入されたコードは、悪意を持って注入されたコードをもつアプリケーションのフローデータに類似する接続確立開始アプリケーションのフローデータを生成する。
【００６４】
コード２０８Ｃは、アプリケーションプログラミングインタフェース、例えば、インターネットプロトコル群の伝送制御プロトコル（ＴＣＰ）に従って接続確立を管理するソケットに関連することができる。
【００６５】
任意選択で、フローデータは、ネットワーク接続を確立しようと試みるアプリケーションに関連するコールスタックおよび／または他のデータソースから得られ、例えば、スタック内の命令を実行するプロセッサに関連づけられるメモリ中の関連する場所からコピーされる。スタックトレースは、接続確立に関連するコールスタック内のプロセスのシーケンスのデータおよび／またはスナップショットを含む。例えば、スタックトレースは、トレースが得られる時点のコールスタック内のモジュールを含む。モジュールは、コールスタック内の表示、例えば、モジュールを指し示すコールスタック内のポインタに基づいて引き出すことができる。
【００６６】
１つまたは多数のスタックトレースは、接続確立プロセスの開始の要求中におよび／または接続確立プロセス中に、１つまたは多数の時点で得ることができる。接続確立プロセス中に多数の時点で捕捉された多数のスタックトレースは、要求および／または接続確立プロセス中に生じるスタックの変化を捕捉するように選択される。
【００６７】
任意選択で、１０４において、各クライアントから受信したフローデータが、コンテキストに応じて、任意選択で、サーバ２１６のプロセッサにより実施可能なコードを含むサーバ２１６のアグリゲーションモジュール２１８によって分類される。コンテキストは、任意選択でホストデータを含むイベントＩＤに基づく。コンテキストは、フローデータが悪意性となる場合およびフローデータが許可される場合を決定するのに役立つことができる。例えば、ネットワークブラウザがロードされたときに現われるフローデータは悪意性である可能性があり、一方、カスタマイズされた組織特定アプリケーションがロードされたときに現われる同じ（または類似した）フローデータは安全である可能性がある。別の例では、同じホストで観察された繰り返しのフローデータは悪意性である可能性があり、一方、多数の異なるホストで観察された同じ（または類似した）フローデータは安全である可能性がある。
【００６８】
任意選択で、コンテキストは、事前定義された期間、例えば、１日の中の時間、週の中の曜日、または特定の日付を含む。任意選択で、フローデータが同じ事前定義された期間内に受信されたときクラス分けが実行される。期間は、多数のクライアントでのコードのロールアウトおよびインストールを表すように選択することができる。時間コンテキストの外の期間に関連づけられたフローデータは、許可されたインストールとは対照的に、感染のパターンを表すことがあることに留意されたい。
【００６９】
コンテキストデータは、フローデータが悪意のある通信を表すときと、フローデータが許可された挙動を表すときとを区別するのに役立つことができる。コンテキストデータは、識別された接続確立フローデータに関連して収集することができる。コンテキストデータの例は、それぞれのクライアントで動作するオペレーティングシステム、それぞれのクライアントで動作する既知の許可されたアプリケーション、異なる許可されたアプリケーションに関連づけられる高い相関性（例えば、閾値を超える）のフローデータ、およびネットワーク接続を確立しようと試みる際に使用される通信プロトコルのうちの１つまたは複数を含む。例えば、同じ（または類似した）オペレーティングシステムの下で異なるクライアントで実行される異なるアプリケーションは、類似したコンテキストデータの下で類似したフローデータを生成することがある。フローデータは、許可されたアプリケーションによる許可された挙動に関連するとして指定される。
【００７０】
１０６において、特定のクライアント２０２における新しい接続確立の試みに関連づけられた新しいコードの新しいフローデータが、イベント管理サーバ２１６に送信される。新しいフローデータは、サーバ２１６のプロセッサにより実施可能なコードを含むアグリゲーションモジュール２１８によって任意選択で解析される。フローデータテンプレートとの一致を識別するために、類似性（例えば、相関性）が、新しいフローデータと多数の格納されている以前に観察されたフローデータテンプレート（サーバ２１６と通信するメモリにデータセットとして格納することができる）との間で測定される。新しいフローデータは、類似性の相関が相関閾値を超える場合などに一致する。フローデータおよびテンプレートは、必ずしも完全に一致する必要はないが、相関閾値によって定義されたものと十分に類似している必要があることに留意されたい。
【００７１】
任意選択で、類似性は、あり得る悪意のあるイベントの識別と、フローデータ、例えば、悪意のあるアクティビティに多分関連づけられるとして識別されたアプリケーションに関連するフローデータのデータセットの収集とをトリガした悪意性ルールに従って測定される。
【００７２】
代替としてまたは追加として、類似性は、コンテキストデータに従って測定される。新しいフローデータが、同じまたは類似したコンテキストデータを有するフローデータテンプレートのサブセットと比較されて、サブセット内の一致が識別される。このようにして、一致する可能性があるが無関係である他のテンプレートは、先験的に除外される。他のコンテキストで生じた一致するテンプレートは、悪意のある挙動を表す可能性があり、異なるコンテキストで生じた場合には排除することができない。
【００７３】
代替としてまたは追加として、類似性は、クライアントから収集されたスタックトレースと、以前に観察されたイベントのスタックトレース、例えば、スタックのタイプおよびスタックのモジュールとの間のスタックトレースの特定の詳細の類似性に従って測定される。
【００７４】
任意選択で、突き合わせは、処理性能を改善するために、最初に、トリガされた悪意性ルールを突き合わせ、次いで、コンテキストを突き合わせ、次いで、スタックトレースデータと突き合わせることによって階層的方法で段階的に実行される。代替として、突き合わせは、トリガされた悪意性ルール、コンテキスト、およびスタックトレースデータを特定のイベントにマッピングする分類器またはルールのセットなどによって同時に実行される。
【００７５】
任意選択で、１０７において、新しいフローデータは、一致が見いだされない場合、サーバ２１６のプロセッサにより実施可能なコードによって新しいフローデータテンプレートとして格納される。次いで、新しいフローデータテンプレートは、新しく受信したフローデータと突き合わせされる。代替としてまたは追加として、フローデータテンプレートは事前設定された定義に基づく。例えば、管理者は、許可された挙動を表す特定のフローデータテンプレートを手動で定義することができる。
【００７６】
代替として、１０８において、一致したフローデータテンプレートが見いだされた場合、一致したフローデータテンプレートは、任意選択でアグリゲーションモジュール２１８によって、事前定義要件に対して評価される。評価は、１つまたは複数のルール要件と突き合わせるように設定することができる。任意選択で、各悪意性ルールはそれ自体の事前定義要件に関連づけられる。事前定義要件は、例えば、閾値、範囲、および／または関数とすることができる。
【００７７】
任意選択で、事前定義要件は、関連づけられたテンプレートを検証するために観察されるべき一致の数を表す。以前に観察された一致の数を示すカウンタは、異なるホストデータの各一致の間に任意選択でインクリメントされる。代替として、他のカウント法を使用することができ、例えば、以前の一致の数に基づいて機能を計算することができる。カウンタの値を事前定義要件と比較して、値が、機能によって定義された事前定義要件を満たすかまたは超える、例えば、範囲内に入る、および／または閾値を満たすかまたは超える場合を決定する。
【００７８】
任意選択で、一致した新しいフローデータは、一致したフローテンプレートに関連してデータセットに格納することができる。多数のフローデータのセットを格納することにより、異なる変動が観察されたときなどにテンプレートの周期的（または連続的）更新を可能にすることができる。代替としてまたは追加として、多数のフローデータのセットは、更新されたテンプレートに再アグリゲートすることができる。代替としてまたは追加として、フローデータのセットのメンバは、例えば、ローカルクライアント構成、例えば、コードの異なるバージョン、および／またはオペレーティングシステムに対処するために、一致したテンプレートにおける許可された変動を表すことができる。カウンタ値は、データセットのメンバのカウントを実行することによって得ることができる。
【００７９】
任意選択で、要件は静的であり、例えば、一致したテンプレートを検証する前に観察され得る同一グループの異なるクライアントからの一致の数などの絶対数である。代替としてまたは追加として、要件は、動的であり、基礎となる変数に従って変更することができる。例えば、同じテンプレートに一致し得るグループ内のクライアントの割合。割合は同じままであり得るが、一致の数は、新しいクライアントが追加されるので時間とともに変わる可能性があるグループ内のクライアントの総数に合わされる。別の例では、要件は、１つまたは複数のセキュリティ関連メトリックの関数であり、１つまたは複数のセキュリティ関連メトリックは、例えば、通信プロトコルによって与えられるセキュリティ保護、部門に勤めている従業員のセキュリティレベル、および接続しているアプリケーションまたはオペレーティングシステムの既知のセキュリティ障害に関連するコンテキストに対して計算することができる。
【００８０】
要件は、手動で事前定義されてもよく（例えば、システム管理者によって）、自動的に定義されてもよく（例えば、１つまたは複数の変数から計算されたアルゴリズムによって）、および／または外部ソースから得られてもよい（例えば、中央サーバからダウンロードされてもよい）。
【００８１】
カウンタ値および／または要件はコンテキストに応じて定義されてもよいことに留意されたい。任意選択で、異なるクライアントは、同じ指定されたグループなどの同じコンテキストを有する。このようにして、同じグループ（例えば、同じ会社、同じ部門、同じチーム）の異なるクライアント内で観察された同じ（または類似した）フローデータは、同じグループのクライアントへのソフトウェアのインストールなどによる許可された挙動を表す。同じグループのクライアント内で観察される同じフローデータは、異なる組織の異なるクライアント内で観察される同じフローデータ（同じエンティティによってインストールされた共通ソフトウェアに起因する可能性が低い）よりも許可された挙動である可能性が高い。
【００８２】
任意選択で、異なるコンテキストには異なる要件が選択される。任意選択で、同じテンプレートが一致する場合、異なるコンテキストには異なる要件が選択される。異なる要件は、例えば、会社の一般的な事務スタッフに対する低いセキュリティレベルおよび会社の財務スタッフに対する高いセキュリティレベルなどの異なるコンテキストに対する所望のセキュリティの異なるレベルを表すことができる。
【００８３】
任意選択で、要件は、許可された挙動を表す要件の信頼レベルを表す確率値に従って選択することができる。要件は、許可されたネットワーク接続の偽陽性の接続ブロッキングを防止または低減するように選択する（手動でまたは自動的に）ことができる。高い要件は、確実性が高い場合には、以前の悪意のある試みを安全であるとしてフラグを立てることがある。特定の安全なプログラムをブロックする犠牲を払ってまで悪意のあるアクティビティを容認できない場合（安全なプログラムは、今後の接続確立のために手動で承認され得ることに留意されたい）、例えば、軍事施設などの機密に属する材料を有する組織では、高い要件を選択することがある。低い要件は、確実性が低い場合には、以前の悪意のある試みを安全であるとしてフラグを立てることがある。低い要件は、例えば、カスタマイズプログラムが、非常に重要であり、組織のコンピュータにおいて重要なアクティビティを表す組織では選択されることがある。
【００８４】
任意選択で、要件がまだ満たされていない場合、１０９において、カウンタ値は、新しいクライアントで一致が観察された（すなわち、以前の一致がない）とき、サーバ２１６のプロセッサにより実施可能であるコードによってインクリメントされる。同じクライアントに関連づけられた繰り返しの一致は、同じクライアントの同じアプリケーションによる繰り返しの通信確立の試みをカウントするのを避けることなどのためにカウンタをそれ以上インクリメントしない。このようにして、同じ（または類似した）フローデータを有する異なるクライアントの数がカウントされる。同じフローデータを有する十分なクライアントが観察される（要件によって定義されているように）と、フローデータは１１０におけるように認証される。
【００８５】
カウンタは、各々のそれぞれのクライアントが類似しているインストールされたコードを実行する場合、多数のクライアントから受信したフローデータに基づいてインクリメントされることに留意されたい。それぞれのクライアントからのフローデータの同じ、類似した、または高い相関（例えば、閾値を超える）は、実行されたコードが有効にされているおよび／または許可されていることを表す。受信した各クライアントからのフローデータが普通なら悪意のある通信の試みを表すものとして指定される場合でさえ、コード（および／または関連するフローデータ）は、許可された挙動を表すものとして自動的に指定される。そのようなシナリオは、例えば、従来と異なる方法で書かれた（例えば、優れた一般的な方法に従わない）カスタマイズされたコードが許可された方法で会社コンピュータにインストールされる場合に生じることがある。コードは悪意のあるように見えるが、実際は許可されたコードである。
【００８６】
代替として、要件が満たされたとき、１１０において、ルールセットデータベースは、サーバ２１６のプロセッサにより実施可能なコードによって、一致したフローデータテンプレートを用いて更新される。一致したフローデータテンプレートに関連づけられる新しいネットワーク接続の試みは認証され、接続を確立することが可能になり得る。
【００８７】
任意選択で、イベント管理サーバ２１６によって生成された新しいルールは、ネットワーク接続を通じてクライアント２０２に、または他のネットワークデバイス、例えば、ゲートウェイ２１０に送信することができる。各々のゲートウェイ２１０に関連づけられるルールのセット２２４を更新することができる。同じ（または類似した）許可されたコードに基づく今後のフローデータによる接続確立プロセスが、ネットワークを通じたデータ送信のために確立されることが可能になる。
【００８８】
代替として、未知のコードのフローがいかなるフローデータテンプレートにも相関されない場合、疑わしい悪意のある通信の試みを示すメッセージを生成し送信することができる。さらなる措置、例えば、接続確立の試みをブロックすること、および／または未知のコードを悪意のあるものとしての指定することを講じることができる。
【００８９】
任意選択で、１１２において、方法は、新しい接続確立の試みを解析するために繰り返される。
【００９０】
次に、本発明のいくつかの実施形態による、悪意のある通信および／またはアクティビティのためのネットワーク接続の検出を品質保証するコンピュータ実施方法のフローチャートである図１Ｂを参照する。本発明のいくつかの実施形態による、悪意のある通信および／またはアクティビティのためのネットワーク接続の検出を品質保証する方法のためのシステムである図２をさらに参照する。図２を参照して説明するシステムは、図１Ｂを参照して説明する方法を実行することができる。
【００９１】
システムおよび／または方法は、ネットワーク接続を確立する際の識別された疑わしい試みに対する品質保証を提供し、クライアント上のコード（例えば、アプリケーション、更新モジュール、プラグイン、およびパッチ）によって開始された接続確立がいつ悪意のあるアクティビティと実際に関連づけられるか、いつからコードによって開始された接続確立が許可されたおよび／または正常なアクティビティに関連づけられるかを決定する。コードは、悪意のあるコードによって生成されたフローデータに類似する疑わしいフローデータを生成する正常なコードである可能性がある。このようにして、正常なコードに基づいて確立された許可されたネットワーク接続は、識別された疑わしい悪意のあるようなフローデータに起因して誤ってブロックされる代わりに、アクティブ化される。
【００９２】
システムおよび／または方法は、悪意のあるコードと同様の仕方で動作するが、実際には悪意のあるコードでないローカルにインストールされた正常なコードのフローデータを許可する新しいルールを生成する。例えば、悪い訓練接続確立に基づいてプログラムされたコードおよび／またはアプリケーション、組織に特定の要件に対処するようにプログラムされたカスタマイズおよび／または企業内モジュールおよび／またはアプリケーション、ソフトウェアパッチ、および高いレベルの管理特権を有するように設計されたモジュール。そのような場合、本明細書で説明するシステムおよび／または方法は、悪意のあるコードに関連づけられるフローデータと、普通なら区別することが困難である許可されたおよび／または正常なコード（悪意のあるコードのように振る舞う）に関連づけられるフローデータとの間の差別化を行う。
【００９３】
本明細書で説明するシステムおよび／または方法は、ネットワーク接続の不適切なブロックまたはシャットダウンを防止および／または低減する追加の品質保証手段を追加することによって、ネットワーク性能を改善する。
【００９４】
本明細書で説明するシステムおよび／または方法は、特定の悪意のあるコードおよび／または特定の正常なコードの知見を必ずしも必要することなく、実際の悪意のある接続の試みと間違ってラベル付けされた正常な接続確立とを区別する。
【００９５】
ゲートウェイ２１０は、クライアント２０２からの接続確立関連データを受信し、データを解析し、悪意のある通信および／またはアクティビティのためのネットワーク接続の確立の疑わしい試みを識別する。任意選択で、ゲートウェイ２１０は、ネットワーク接続の確立を開始するクライアント２０２の特定のアプリケーションと、ネットワーク接続の確立を制御するインタフェースとの間の仲介物として働くプロキシーサーバである。ゲートウェイ２１０の追加の詳細は、例えば、仮特許出願第６２／０８３，９８５号を参照して見いだすことができる。
【００９６】
イベント管理サーバ２１６は、１つまたは複数のゲートウェイ２１０と通信する。サーバ２１６は、識別された疑わしい試みに関連するデータをゲートウェイ２１０から受信し、疑わしい試みが正常なコードに関連する場合、および、任意選択で、疑わしい試みが悪意のあるコードに実際に関連づけられる場合を決定する。イベント管理サーバ２１６は、疑わしい試みが偽陽性であることを示すそれぞれのゲートウェイ２１０および／またはモジュール２０８Ａへの信号を生成する。信号は、接続確立を検証し許可するためにゲートウェイ２１０によって使用されるルールのセット２２４内にインストールすることができる新しいまたは更新されたルールのセットとすることができる。
【００９７】
任意選択で、イベント管理サーバ２１６のユーザインタフェースモジュール２２２に関連づけられるイベント管理サーバ２１６の管理モジュール２２０は、ユーザが１つまたは複数の管理および／またはモニタ機能、例えば、構成、更新、アクティビティ、および／またはイベントレビューを実行できるようにする。ユーザは、例えば、ネットワーク接続を通じてウェブブラウザを通してユーザインタフェース２２２にアクセスすることができる。データは、多数のクライアントおよび／またはゲートウェイおよび／またはイベント管理サーバに、またはクライアントおよび／またはゲートウェイおよび／またはイベント管理サーバごとに、一元的に調査および／または解析することができる。
【００９８】
次に、本発明のいくつかの実施形態による、図２のシステム２００に基づくアーキテクチャのいくつかの例のブロック図である図３Ａおよび図３Ｂを参照する。
【００９９】
図３Ａは、イベント管理サーバ３２０が多数のゲートウェイサーバ３１０と通信するシステム３００のアーキテクチャを示す。各ゲートウェイサーバ３１０は多数のクライアント３０２と通信する。システム３００は、例えば、大きい組織のために設計することができ、各ゲートウェイ３１０は、イベント管理サーバ３２０が組織のゲートウェイ３１０に接続された状態で、クライアント３０２の指定されたグループ（例えば、部門ごとの、クライアントタイプごとの、および／または地理的場所ごとの）の役に立つ。学習した情報を交換するために互いに接続された多数のイベント管理サーバ３２０が存在してもよいことに留意されたい。
【０１００】
システム３００は、悪意のあるコードを階層的にモニタするように設計することができ、それは、頻繁に生じることがある接続確立をモニタする効率を改善することができる。各クライアント３０２は接続確立のためにモニタされる。接続確立がゲートウェイ３１０によって解析されて、疑わしい接続確立の試みのように見える接続確立のサブセットを識別する。疑わしい試みは、偽陽性の識別を検出するためにイベント管理サーバ３２０による品質保証を受ける。
【０１０１】
図３Ｂは、ゲートウェイおよびイベント管理サーバが単一構成要素、すなわち、組合せサーバ３５４に統合されたシステム３５０のアーキテクチャを示す。クライアント３５２は組合せサーバ３５４と通信する。システム３５０は、例えば、小さい組織または孤立した部門のために設計することができ、各サーバ３５４は、疑わしい試みの識別の機能と疑わしい試みの品質保証の両方を行い、クライアント３５２のグループの役に立つ。互いに接続されていてもよく接続されていなくてもよい多数の組合せサーバ３５４が存在してもよい（例えば、組織にわたって）ことに留意されたい。
【０１０２】
システム３５０は、ローカライズされた悪意のあるコードのモニタのために設計することができ、ローカライズされた悪意のあるコードのモニタは、例えば、地理的に隔離された組織、制限のある帯域幅可用性をもつ組織、および接続確立のモニタを素早く実行する必要のある（例えば、接続確立の承認の時間を短縮するためにおよび／または高い頻度の接続確立の役に立つために）組織に接続確立の高速なモニタを提供することができる。
【０１０３】
次に、図１Ｂおよび図２を参照すると、ゲートウェイ２１０および／またはサーバ２１６は、コンピュータにインストールするためのソフトウェアモジュールおよび／または他のコンピュータとの通信のためのハードウェア機器とすることができる。ゲートウェイ２１０および／またはサーバ２１６は、例えば、ネットワーク２０６に接続されるように、クライアント２０２とネットワーク２０６との間のインタフェース（例えば、ネットワークインタフェースデバイス）にインストールされてもよく、および／またはネットワーク２０６自体内に、例えば、内部および／または境界ネットワークデバイス（例えば、層２デバイス、層３デバイス、ルータ、ゲートウェイおよびブリッジ）内にインストールされてもよい。
【０１０４】
許可されたコード２０８Ｃは、本明細書で説明するように、インストールのために権限を与えられており、悪意のある通信のための接続確立の疑わしい試みの識別を依然としてトリガすることができる。許可されたコード２０８Ｃは、感染したアプリケーションのフローデータと類似しているおよび／または感染したアプリケーションのフローデータとの高い相関を有するフローデータに関連づけられる。
【０１０５】
１５２において、接続確立プロセスに関連する、コールスタックデータを含むフローデータは、例えば、クライアントのプロセッサで実施可能なエンドポイントモジュール２０８Ａのコードによってクライアントで収集される。フローデータは、接続確立プロセスの前におよび／または接続確立プロセス中に補足される。
【０１０６】
データは、クライアント端末で実行されるプロセス、スレッド、モジュール、および動的コードを表すフローデータ内の記録を含むことができる。スレッド、プロセス、および／またはモジュールに関連するフローデータなどのフローデータは、ネットワーク接続の確立を開始するコマンドの間に得られる。
【０１０７】
任意選択で、コンテキストデータが収集される。コンテキストデータは、品質サーバに後で送信するためにセーブすることができる。
【０１０８】
任意選択で、１５４において、接続確立をモニタして、ネットワーク接続を確立する試みを識別する。モニタリングおよび／または解析は、それぞれのモジュール２０８Ａによって各クライアント２０２のところで、および／またはそれぞれ接続されたクライアント２０２に対してゲートウェイ２１０によって実行されてもよい。
【０１０９】
代替としてまたは追加として、新しいコード（例えば、アプリケーション、プラグイン、パッチ、およびアドオン）のインストールは、例えば、エンドポイントモジュール２０８Ａによって識別される。新しいコードは、ユーザによって意図的にインストールされることがあり、その上安全に働くことがあるが、会社ポリシーに反する動作を実行することがある。例えば、インストールポリシーは、ピギーバックアプリケーション、ブラウザアドオン、およびライブメッセンジャアプリケーションなどのソフトウェアを禁止することがある。そのようなコードは、会社ポリシーに反しているとして、例えば、セキュリティ脅威（例えば、ハイジャックで使用される）、限られたリソースの使い過ぎ（例えば、会社の帯域幅の過度の使用）を表すものとして識別され、および／または仕事から気を散らす時間の浪費であると企業管理者によって決定される可能性がある。本明細書で使用する悪意のある通信という用語は、さらに、コード自体が悪意性であるかまたは安全であるかにかかわらず、ポリシーに反してインストールされたコードのアクティビティを意味する。新しくインストールされたアプリケーションに関連するフローデータを解析して（本明細書で説明するように）、接続を確立する試行を、許可された挙動であるがポリシーの違反であることを表す可能性がある悪意のある通信に関連づけられるとして識別することができる。
【０１１０】
検出接続確立のためのシステムおよび／または方法の追加の詳細は、例えば、本出願の同一の出願人および同一の発明者等による米国特許仮出願第６２／０８３，９８５号を参照して説明される。
【０１１１】
１５８において、フローデータおよび任意選択でコンテキストデータは、例えば、クライアント２０２内のスタックデータおよび／または他のフローデータにアクセスすることができるエンドポイントモジュール２０８Ａによって、クライアント２０２からゲートウェイ２１０に送信される。
【０１１２】
１６０において、データを解析して、クライアント２０２にインストールされたコードによる悪意のあるアクティビティおよび／または通信のための接続を確立する疑わしい試みを検出する。スタックトレースおよび／または他のフローデータを解析して、悪意のあるアクティビティのためのネットワーク接続を使用して悪意のある通信を確立する疑わしい試行の有無を決定することができる。任意選択で、解析は、ゲートウェイ２１０によって、任意選択でルールのセット２２４および／または別のポリシーエンフォーサモジュールを使用して実行される。
【０１１３】
任意選択で、悪意のある通信の有無を表す信号が生成される。
【０１１４】
解析は、アプリケーションとリモートサーバまたは悪意のあるサーバとの間のデータ通信、例えば、開始アプリケーションによるネットワークを通じたデータの転送などの前に実行することができる。任意選択で、解析は、ネットワーク接続の確立の前に実行される。代替としてまたは追加として、解析は、ネットワークセッションのアクティブ化の前に実行される。このようにして、悪意のあるエージェントがネットワーク接続によって行動することができる前に、例えば、権限を与えられていないデータの送信（すなわち、データの盗み）の前に、接続確立プロセスの妥当性を決定することができる。
【０１１５】
解析は１つまたは複数の方法に基づいて実行することができ、例えば、相関は、悪意のあるアクティビティとの統計的に有意な相関（例えば、スタックトレース、スタック内のモジュール、および固有のイベントの）関連、および／または有効な安全アクティビティとの統計的に有意な関連を識別するために実行することができる。解析は、スタック、スレッド、および／またはプロセス実行可能ファイルフォーマットのモジュールの安全性の検証に基づいて実行され、例えば、記録が不法のフローデータを表す場合を識別することができる。
【０１１６】
解析方法の追加の詳細は、例えば、米国仮特許出願第６２／０８３，９８５号を参照して見いだすことができる。
【０１１７】
代替として、ゲートウェイ解析は、接続確立の試みが悪意のあるコードまたは許可されたコードに関連しているかどうかを確定的には決定しない。例えば、悪意のあるコードに関連している確率は約５０％であり、および／または許可されたコードに関連している確率は約５０％である。他の決定的な要件、例えば、他の確率閾値、他の範囲、および／または関数を使用することができる。そのような場合は、例えば、ゲートウェイが、通信セッションを開始しようとするクライアント端末に疑わしいアプリケーションインストーラを識別したときに生じることがある。任意選択で、メッセージが、ゲートウェイによって、ユーザ（例えば、オペレータ、システム管理者）による手動介入の要求を伴ってそれぞれのクライアント端末に送信され、例えば、ポップアップウィンドウが、クライアント端末のディスプレイに現われ得る。ユーザは、例えば、ポップアップウィンドウ内のボタンをクリックすることによって、コードを、許可されたコードおよび／または悪意のあるコードとして手動で定義する能力が与えられ得る。手動指定は、今後の通信確立の試みの際同じクライアントに適用するために、ゲートウェイに関連づけられたルールのセットに追加することができる。他のゲートウェイへの伝搬および／または他のクライアントへの適用は、管理者および／または事前定義されたシステム基本設定によって定義することができる。例えば、他のクライアントへの適用は、プライベート組織ネットワーク（登録されている従業員のみが許可される）では有効にすることができるが、オープンな公衆網では、悪意のあるユーザがシステムを欺かないようにおよび悪意のあるコードを許可されたものとしてマーキングしないように無効にすることができる。
【０１１８】
本明細書で使用するとき、以前に所見を述べた語句は、手動指定の場合を含む。手動指定は、以前に所見を述べた語句を参照して説明したように処置および／または処理される（すなわち、本明細書で説明するシステムおよび方法によって）。システムおよび／または方法が以前の所見を実行しておらず、代わりに、手動介入が以前の所見として定義される場合に、手動指定が、以前に所見を述べたように処置されることに留意されたい。
【０１１９】
任意選択で、１６１において、ゲートウェイ２１０による解析（ブロック１６０）が、許可された挙動を表していると決定された場合、接続確立が許可される。疑わしい試みが検出されない場合、接続確立は、例えばゲートウェイ２１０からクライアント２０２に送信されたメッセージによって、再開することができる（および／またはネットワーク接続はアクティブ化され得る）。品質サーバ２１６によるスタックトレースの追加の解析は必要ではないことがある。
【０１２０】
代替として、１６２において、ゲートウェイ２１０による解析（ブロック１６０）が、悪意のある接続の試みを表していると決定された場合、コールスタックデータを含むフローデータが、例えばゲートウェイ２１０によって、追加の解析のためにイベント管理サーバ２１６に送信される。
【０１２１】
ゲートウェイ２１０（および／またはクライアント２０２）は、本明細書で説明するように、コールスタックデータの解析を支援するために、コールスタックデータに関連してクライアント２０２から抽出された追加のコンテキストデータをサーバ２１６に送ることができる。コンテキストデータは、ブロック１６０の解析が悪意のある通信の試みを示した後に収集されてもよく、またはフローデータと一緒に収集されていてもよい。
【０１２２】
任意選択で、ゲートウェイ２１０は、疑わしい結果に対する品質保証を要求するメッセージを生成しサーバ２１６に送信する。
【０１２３】
１６４において、フローデータおよび任意選択のコンテキストデータをアグリゲートおよび／または解析して、ゲートウェイの解析を訂正し、悪意のあるアクティビティを正常として識別する（すなわち、偽陽性の結果を訂正する）。解析は、例えば図１Ａを参照して本明細書で説明したように、アグリゲーションモジュール２１８に基づいてイベント管理サーバ２１６で実行することができる。解析は、偽陽性の識別を防止または低減することができる。悪意のある結果は、正常な許可されたアクティビティとして再分類することができる。
【０１２４】
次に、本発明のいくつかの実施形態による接続確立プロセスに関連するコールスタックの例である図４Ａ〜図４Ｂを参照する。分かりやすくするために、図は部分的トレースを示す。
【０１２５】
図４Ａは、信頼できるブラウジングを提供するために、ブラウザ内にインストールされたセキュリティツールを有するウェブブラウザのコールスタック４０２を示す。セキュリティツールは、ＨＴＴＰセッションを操作するように設計されたコードを注入することによって実装された。セキュリティツール（許可されたコードである）は、悪意のあるコードと同様に動作し、例えばゲートウェイによって解析されたとき、普通なら偽陽性を生成することになる。
【０１２６】
コールスタック４０２は、例えば安全なウェブサイトに接続するための接続を確立しようとする試みを表す。コールスタック４０２はコールスタック４０４との比較によって解析され、コールスタック４０４は、インストールされたセキュリティツールなしにウェブブラウザで予想される有効な接続確立関連スタックを表する。解析により、特定のファイル４０８（すなわち、ｓｈｌｗａｐｉ．ｄｌｌ）が欠けており、既知のモジュール４０６Ａへのコードポインタおよび未知のモジュール４０６Ｂへの別のコードポインタが存在することが検出される。フローデータの初期の解析（例えば、ゲートウェイ２１０による）に基づいて、悪意のあるコードが疑われる。同じ組織に指定された大部分またはすべての他のクライアントから見られるコールスタックに基づくさらなる解析（例えば、品質サーバ２１６による）により、コールスタック４０２が正常なコードの許可された挙動を表していることが決定される。
【０１２７】
図４Ｂは、主として検索エンジン結果をもたらすために接続をリダイレクトし操作するブラウザツールバーをユーザがインストールしたブラウザプログラムのコールスタック４１２を示している。ツールバーは、必ずしも完全に悪意のあるコードを表すものではなく、評判の高いベンダによって安全なアプリケーションとして提供される。ツールバーは、組織によるインストールに対して禁止されるように指定されている。
【０１２８】
ツールバーをもつブラウザは、既知の安全なウェブサイトへのネットワーク接続を確立しようと試みている。スタック４１２は、禁止されたプログラムに関連づけられた既知のコード４１６を含む。それに比べて、コールスタック４１４は、インストールされたツールバーのないウェブブラウザのコールスタックである。コールスタック４１４は、コールスタック４１６に存在しないモジュール４１８（すなわち、ｓｈｌｗａｐｉ．ｄｌｌ）へのポインタを含む。既知のコールスタックは、会社インストールポリシーに反するインストールされたツールバーをもつウェブブラウザを識別するために、学習モジュールにプログラムされてもよい。
【０１２９】
次に、図１Ｂに戻って参照すると、１６６において、解析の結果を示すメッセージが、イベント管理サーバ２１６によって生成される。メッセージは、ゲートウェイ２１０および／またはクライアント２０２に送信される。メッセージは、ルールのセットへの更新を含むことができ、一致したフローデータイベントが許可された接続確立の試みを表すことを示している。
【０１３０】
悪意のある通信が間違って検出されたことをメッセージが示している場合、ゲートウェイ２１０および／またはクライアント２０２は、接続確立プロセスを続けることができ、および／または接続をアクティブ化することができる。悪意のある通信が正しく検出されたことをメッセージが示している場合、ゲートウェイ２１０および／またはクライアント２０２は、接続確立をブロックする（または接続確立のブロックを維持し続ける）ことができ、および／または接続を通じたデータ送信を防止することができる。
【０１３１】
任意選択で、１６８において、イベント管理サーバ２１６に接続された各々のゲートウェイ２１０の各々のルールのセット２２４は、受信したルールのセットで更新される。各々のゲートウェイ２１０のルールのセット２２４の更新により、イベント管理サーバ２１６に接続されたゲートウェイ２１０は、クライアント２０２内にインストールされた新しいコードに関連づけられる新しい識別されたフローデータに動的に適合される。
【０１３２】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品のあり得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための１つまたは複数の実行可能命令を含むコードのモジュール、セグメント、または一部分を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われることがあることにも留意されたい。例えば、連続して示された２つのブロックは、関連する機能に応じて、実際には実質的に同時に実行されることがあり、またはブロックは時には逆の順序で実行されることがある。ブロック図および／またはフローチャート図の各ブロック、およびブロック図および／またはフローチャート図のブロックの組合せは、特定の機能もしくは動作を実行する専用ハードウェアベースシステム、または専用ハードウェアとコンピュータ命令との組合せによって実装され得ることにも留意されたい。
【０１３３】
本発明の様々な実施形態の説明は、例証のために提示されたが、網羅的であることまたは開示された実施形態に限定されることを意図していない。説明した実施形態の範囲および趣旨から逸脱することなく、多くの変形および変更が当業者には明らかであろう。本明細書で使用された用語は、実施形態の原理、実際的用途、もしくは市場で見いだされる技術に対する技術的改善を最も良く説明するように、または他の当業者が本明細書で開示した実施形態を理解できるように選択された。
【０１３４】
本出願から成熟する特許権の存続期間中に、多くの関連システムおよび方法が開発されることが予想され、クライアント、サーバ、およびコードという用語の範囲は、そのような新技術をすべて先験的に含むように意図される。
【０１３５】
本明細書で使用する「約」という用語は±１０％を指す。
【０１３６】
「備える」、「備えている」、「含む」、「含んでいる」、「有している」、という用語およびそれらの活用形は、「限定はしないが、含む」を意味する。この用語は、「からなる」および「から本質的になる」という用語を包含する。
【０１３７】
「から本質的になる」という語句は、組成物または方法が追加の要素またはステップを含み得るが、追加の要素またはステップが特許請求する組成物または方法の基本および新規な特性を実質的に変えない場合に限られることを意味する。
【０１３８】
本明細書で使用する単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈上別段明確に示されない限り複数の指示内容を含む。例えば、「化合物」または「少なくとも１つの化合物」という用語は、それらの混合物を含む複数の化合物を含むことができる。
【０１３９】
「例示的な」という単語は、本明細書では、「例、実例、または例示として役立つこと」を意味するように使用される。「例示的な」として説明されたいかなる実施形態も、必ずしも、他の実施形態と比較して好ましいもしくは有利であると解釈されるべきではなく、および／または他の実施形態からの特徴の組み込みを排除すべきではない。
【０１４０】
「任意選択で」という単語は、本明細書では、「ある実施形態では提供され、他の実施形態では提供されない」ことを意味するように使用される。本発明のいかなる特定の実施形態も、複数の「任意選択の」特徴が矛盾しない限り、そのような特徴を含むことができる。
【０１４１】
本出願の全体を通して、本発明の様々な実施形態は、範囲の形式で提示されることがある。範囲の形式での説明は、単に便宜および簡潔のためであり、本発明の範囲に対する柔軟性がない限定と解釈されるべきでないことを理解されたい。したがって、範囲の説明は、すべての可能な部分範囲ならびにその範囲内の個々の数値を具体的に開示したものと考えるべきである。例えば、１から６までなどの範囲の説明は、１から３まで、１から４まで、１から５まで、２から４まで、２から６まで、３から６まで等のような部分範囲、ならびにその範囲内の個々の数、例えば、１、２、３、４、５、および６を具体的に開示したものと考えるべきである。これは、範囲の広さに関係なく適用される。
【０１４２】
数の範囲が本明細書で示されるときは常に、数の範囲は、示された範囲内の任意の引用される数字（小数または整数）を含むように意図される。第１の表示数と第２の表示数との「間に及んでいる／及ぶ」、ならびに第１の表示数「から」第２の表示数「まで」「及んでいる／及ぶ」という語句は、本明細書では交換可能に使用され、第１および第２の表示された数、ならびにそれらの数の間のすべての小数および整数を含むことを意味する。
【０１４３】
明確にするために別々の実施形態の文脈で説明されている本発明の特定の特徴は、単一の実施形態において組み合わせて提供されることも可能であることが理解される。逆に、簡潔にするために単一の実施形態の文脈で説明されている本発明の様々な特徴は、本発明の任意の他の説明されている実施形態において、別々に、または任意の適切な部分的組合せで、または好適であるように提供されることも可能である。様々な実施形態の文脈で説明したいくつかの特徴は、それらの要素なしでは実施形態が動作不能である場合を除いて、それらの実施形態の必須の特徴と考えるべきではない。
【０１４４】
本発明をその特定の実施形態に関連して説明したが、多くの代替、変更、および変形が当業者には明らかであることは明白である。したがって、添付の特許請求範囲の趣旨および広い範囲内に入るすべてのそのような代替、変更、および変形を包含することが意図される。
【０１４５】
本明細書において述べたすべての刊行物、特許、および特許出願は、各々個々の出版物、特許、または特許出願が、具体的におよび個々に、参照により本明細書に組み込まれるように示されているのと同じ程度に、それらの全体が参照により本明細書に組み込まれる。加えて、本出願のいかなる参考文献の引用または識別も、そのような参考文献が本発明への先行技術として利用可能であることを認めるものとして解釈されないものとする。セクションの見出しが使用される限り、見出しは必ずしも限定するものと解釈されるべきではない。
【０１４６】
関連出願
本出願は、３５  ＵＳＣ§１１９（ｅ）の下で、２０１４年１１月２５日に出願された米国仮特許出願第６２／０８３，９８５号および２０１５年４月１４日に出願された米国仮特許出願第６２／１４７，０４０号の優先権の利益を主張し、これらの内容は全体が参照により本明細書に組み込まれる。
【図１Ａ】
0006334069.tif 000002
【図１Ｂ】
0006334069.tif 000003
【図２】
0006334069.tif 000004
【図３Ａ】
0006334069.tif 000005
【図３Ｂ】
0006334069.tif 000006
【図４Ａ】
0006334069.tif 000007
【図４Ｂ】
0006334069.tif 000008