特許第6334069号(P6334069)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エンサイロ リミテッドの特許一覧

特許6334069悪意のあるコードの検出の精度保証のためのシステムおよび方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6334069
(24)【登録日】2018年5月11日
(45)【発行日】2018年5月30日
(54)【発明の名称】悪意のあるコードの検出の精度保証のためのシステムおよび方法
(51)【国際特許分類】
   G06F 21/55 20130101AFI20180521BHJP
【FI】
   G06F21/55
【請求項の数】26
【全頁数】30
(21)【出願番号】特願2017-546274(P2017-546274)
(86)(22)【出願日】2015年11月24日
(65)【公表番号】特表2018-501591(P2018-501591A)
(43)【公表日】2018年1月18日
(86)【国際出願番号】IL2015051139
(87)【国際公開番号】WO2016084076
(87)【国際公開日】20160602
【審査請求日】2017年11月10日
(31)【優先権主張番号】62/083,985
(32)【優先日】2014年11月25日
(33)【優先権主張国】US
(31)【優先権主張番号】62/147,040
(32)【優先日】2015年4月14日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】517181221
【氏名又は名称】エンサイロ リミテッド
【氏名又は名称原語表記】enSilo Ltd.
(74)【代理人】
【識別番号】100105050
【弁理士】
【氏名又は名称】鷲田 公一
(72)【発明者】
【氏名】カトモール ロイ
(72)【発明者】
【氏名】ビットン トメール
(72)【発明者】
【氏名】ヤーヴォ ウディ
(72)【発明者】
【氏名】ケルソン イド
【審査官】 平井 誠
(56)【参考文献】
【文献】 特表2013−532869(JP,A)
【文献】 米国特許出願公開第2014/0082739(US,A1)
【文献】 特表2010−509654(JP,A)
【文献】 特開2010−079906(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55−56
(57)【特許請求の範囲】
【請求項1】
許可されたコードによるネットワーク接続の確立の試みを認証する方法であって、
前記許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、前記許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットを用意することと、
新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に記録された新しいスタックトレースを受信することと、
スタックトレーステンプレートへの一致を識別するために、前記新しいスタックトレースと前記複数のスタックトレーステンプレートとの間の類似性を測定することと、
事前定義ルール要件に対して、一致したスタックトレーステンプレートを評価することと、
前記一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、前記一致したスタックトレーステンプレートでルールセットデータベースを更新することと
を含み、
前記一致したスタックトレーステンプレートを評価することが、異なるクライアントからの以前のスタックトレーステンプレート一致の数を示すカウンタの値をインクリメントすることと、前記一致の数の事前定義ルール要件に対して前記値を評価することとを含み、
前記異なるクライアントが、同じ指定されたグループの一部である、方法。
【請求項2】
前記複数のスタックトレーステンプレートが、前記許可されたコードの疑わしい悪意のある挙動を表すものとして指定される、請求項1に記載の方法。
【請求項3】
前記複数のスタックトレーステンプレートおよび前記新しいスタックトレースが、前記許可されたコードの前記スタックトレースに関連して収集されたコンテキストデータを含み、前記類似性が前記コンテキストデータに従って測定される、請求項1に記載の方法。
【請求項4】
前記コンテキストデータが、イベントIDおよび/またはホスト名を含む、請求項3に記載の方法。
【請求項5】
前記コンテキストデータが、前記それぞれのクライアントで動作する類似したオペレーティングシステム、類似した許可されたアプリケーション、異なる許可されたアプリケーションによる類似したスタックトレースデータ、および前記ネットワーク接続を確立するための類似したプロトコルからなる群から選択された少なくとも1つのメンバを含む、請求項3に記載の方法。
【請求項6】
前記一致がないことに基づいて前記新しいスタックトレースを前記データセットに新しいスタックトレーステンプレートとして追加することをさらに含む、請求項1に記載の方法。
【請求項7】
前記事前定義ルール要件に対して前記一致したスタックトレーステンプレートを評価することが、前記一致したスタックトレーステンプレートおよび前記新しいスタックトレースが異なるクライアントに関連づけられるとき実行される、請求項1に記載の方法。
【請求項8】
前記新しいスタックトレースを解析して、悪意のあるコードに関連している疑いがあるとして前記ネットワーク接続を指定することをさらに含み、
悪意のあるコードに関連する前記疑いを、前記許可されたコードに関連するとして再指定することをさらに含む、請求項1に記載の方法。
【請求項9】
悪意のあるコードに関連する前記疑いが、悪意のあるような挙動を表示する前記新しいクライアントにインストールされた新しい許可されたコードによってトリガされる、請求項8に記載の方法。
【請求項10】
前記許可されたコードが、悪意のあるコードに関連する疑いの識別を間違ってトリガすることによって、偽陽性の識別を表す、請求項8に記載の方法。
【請求項11】
前記認証された新しいネットワーク接続に関連づけられる前記スタックトレースが、悪意のある通信のための前記ネットワーク接続を確立する試みに関連づけられる少なくとも1つのスタックトレーステンプレートに一致する、請求項8に記載の方法。
【請求項12】
前記新しいスタックトレースおよび前記複数のスタックトレーステンプレートが、プロセス、モジュール、およびスレッドからなる群から選択された少なくとも1つのメンバを含むフローデータをさらに含む、請求項1に記載の方法。
【請求項13】
前記新しいスタックトレースが、悪意のあるコードに関連するスタックトレースと類似性がある悪意のあるような挙動を表示する、請求項1に記載の方法。
【請求項14】
前記複数のスタックトレーステンプレートが、事前定義期間内の複数の前記クライアントへの類似した許可されたコードの権限を与えられたインストールに基づく、請求項1に記載の方法。
【請求項15】
前記事前定義要件が、前記許可されたコードによる許可されたネットワーク接続の偽陽性の接続ブロッキングを防止または低減するように選択される、請求項1に記載の方法。
【請求項16】
前記事前定義要件が、許可されたネットワーク接続の偽陽性の接続ブロッキングに対する許容レベルを表す、請求項1に記載の方法。
【請求項17】
許可されたコードによるネットワーク接続の確立の試みを認証するためのシステムであって、
前記許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、前記許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットと、
少なくとも1つのイベント管理サーバであり、
特定の新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に複数のクライアントのうちの前記特定の新しいクライアントにおいて記録された新しいスタックトレースを受信し、
スタックトレーステンプレートへの一致を識別するために、前記新しいスタックトレースと複数のスタックトレーステンプレートとの間の類似性を測定し、
事前定義要件に対して前記一致したスタックトレーステンプレートを評価し、
前記一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、前記一致したスタックトレーステンプレートでルールセットデータベースを更新する
ために前記少なくとも1つのイベント管理サーバのプロセッサにより実施可能なコードを含む、少なくとも1つのイベント管理サーバと
を含み、
前記一致したスタックトレーステンプレートを評価することが、異なるクライアントからの以前のスタックトレーステンプレート一致の数を示すカウンタの値をインクリメントすることと、前記一致の数の事前定義ルール要件に対して前記値を評価することとを含み、
前記異なるクライアントが、同じ指定されたグループの一部である、
システム。
【請求項18】
前記イベント管理サーバと通信するおよび複数のクライアント端末のうちの少なくとも1つと通信する少なくとも1つのゲートウェイサーバをさらに含み、前記少なくとも1つのゲートウェイサーバが、
前記新しいスタックトレースを解析して、悪意のあるコードに関連している疑いがあるとして前記新しいネットワーク接続を指定し、
解析のために前記新しいスタックトレースを前記イベント管理サーバに送信し、
前記更新されたルールセットデータベースを受信し、
前記新しいネットワーク接続の接続確立を可能にする
ために前記少なくとも1つのゲートウェイサーバのプロセッサにより実施可能なコードを含む、請求項17に記載のシステム。
【請求項19】
前記少なくとも1つのイベント管理サーバが複数のゲートウェイサーバと通信し、各々のそれぞれのゲートウェイサーバが前記複数のクライアントのうちの少なくとも1つのクライアントと通信し、各々のそれぞれのゲートウェイが、
前記新しいクライアントから前記新しいスタックトレースを受信することと、
前記ネットワーク接続が悪意のあるアクティビティで使用される悪意のある通信を確立する疑わしい試行の有無を決定するために前記新しいスタックトレースを解析することと、
前記新しいスタックトレースが悪意のあるデータと相関しているとき前記悪意のある通信のための前記ネットワーク接続を確立する試みを検出することと、
前記ネットワーク接続を使用して、前記悪意のある通信を確立する前記疑わしい試行を表すメッセージを生成することと
を行うために各々のそれぞれのゲートウェイのプロセッサにより実施可能なコードを含み、
前記イベント管理サーバの前記コードが、各々のそれぞれのゲートウェイサーバからの前記メッセージを受信し、前記測定すること、前記評価すること、および前記更新することを実行して、許可されたネットワーク接続を表すものとして前記新しいネットワーク接続を再指定し、それによって、前記それぞれのゲートウェイには悪意のあるように見える許可されたコードによる偽陽性のネットワーク接続のブロッキングを防止または低減するように実施可能である、請求項17に記載のシステム。
【請求項20】
前記特定の新しいクライアントが、悪意のあるコードの識別に関連する疑いをトリガするために前記新しいクライアントのプロセッサにより実施可能なコードを含む前記許可されたコードに関連づけられる許可されたアプリケーションをさらに含む、請求項19に記載のシステム。
【請求項21】
前記少なくとも1つのイベント管理サーバおよび前記複数のゲートウェイサーバが、前記少なくとも1つのイベント管理サーバに組み合わされる、請求項19に記載のシステム。
【請求項22】
前記許可されたコードが、注入されたコードとしてアプリケーション内にインストールされ、前記注入されたコードが、悪意のある注入されたコードに関連づけられるスタックデータに類似したスタックデータに関連づけられる、請求項17に記載のシステム。
【請求項23】
前記許可されたコードが、悪意のあるコードによって得られた高レベルパーミッションと同様の仕方でネットワーク接続を確立するように高レベルパーミッションを伴って構成される、請求項17に記載のシステム。
【請求項24】
それぞれのクライアントごとのインストールのためのクライアントモジュールをさらに含み、前記クライアントモジュールが、
新しくインストールされたアプリケーションを前記それぞれのクライアントにおいて識別し、
前記新しくインストールされたアプリケーションを解析して、前記新しくインストールされたアプリケーションによって悪意のある通信のための接続を確立する試行を識別する
ために前記それぞれのクライアントのプロセッサにより実施可能なコードを含む、請求項17に記載のシステム。
【請求項25】
前記新しくインストールされたアプリケーションが、インストールポリシーを破るユーザによって許可されたアプリケーションとしてインストールされる、請求項24に記載のシステム。
【請求項26】
許可されたコードによるネットワーク接続の確立の試みを認証するコンピュータプログラムであって、
前記許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、前記許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットを用意するステップと、
新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に記録された新しいスタックトレースを受信するステップと、
スタックトレーステンプレートへの一致を識別するために、前記新しいスタックトレースと前記複数のスタックトレーステンプレートとの間の類似性を測定するステップと、
事前定義ルール要件に対して前記一致したスタックトレーステンプレートを評価するステップと、
前記一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、前記一致したスタックトレーステンプレートでルールセットデータベースを更新するステップ
を、コンピュータに実行させ、
記評価のステップが、異なるクライアントからの以前のスタックトレーステンプレート一致の数を示すカウンタの値をインクリメントする処理と、前記一致の数の事前定義ルール要件に対して前記値を評価する処理とを含み、
前記異なるクライアントが、同じ指定されたグループの一部である、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、そのいくつかの実施形態において、悪意のある接続の検出のためのシステムおよび方法、より詳細には、限定ではないが、悪意のある通信の検出の精度保証のためのシステムおよび方法に関する。
【背景技術】
【0002】
いくつかのタイプの悪意のあるコードはコンピュータを攻撃し、ネットワーク接続により他のサーバに接続するためにホストコンピュータを使用する。1つの例では、ネットワーク接続は、例えば、盗んだデータをリモートサーバに送るために悪意のあるコード自体によって開始される。別の例では、マルウェアが正当なアプリケーションにコードを注入し、次いで、注入されたコードが、盗んだデータを送信するためにリモートサーバへの接続を開始する。
【0003】
あるタイプの悪意のある攻撃の1つの例は高度な標的型攻撃(ATA)であり、それは、権限を与えられていない当事者がネットワークにアクセスし、長い期間の間検出されないままである巧妙な攻撃である。ほとんどのATAの意図は、ネットワークに損傷を引き起こすのではなくデータを盗むことである。ATAは、クレジットカードプロセッサ、政府機関、および金融サービス業などの高い価値の情報をもつ産業部門の組織を標的にする。
【0004】
アンチATA解決策の例は、侵入された悪意のあるコードの攻撃の検出または侵入された悪意のあるコードの検出に基づく。別の例では、他のツールが、動作中に異常なまたは悪意のあるアクティビティを検出するように設計される。
【発明の概要】
【課題を解決するための手段】
【0005】
本発明のいくつかの実施形態の一態様によれば、許可されたコードによるネットワーク接続の確立の試みを認証する方法が提供され、この方法は、許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットを用意することと、新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に記録された新しいスタックトレースを受信することと、スタックトレーステンプレートへの一致を識別するために、新しいスタックトレースと複数のスタックトレーステンプレートとの間の類似性を測定することと、事前定義ルール要件に対して、一致したスタックトレーステンプレートを評価することと、一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、一致したスタックトレーステンプレートでルールセットデータベースを更新することとを含む。
【0006】
任意選択で、複数のスタックトレーステンプレートが、許可されたコードの疑わしい悪意のある挙動を表すものとして指定される。
【0007】
任意選択で、複数のスタックトレーステンプレートおよび新しいスタックトレースが、許可されたコードのスタックトレースに関連して収集されたコンテキストデータを含み、類似性がコンテキストデータに従って測定される。任意選択で、コンテキストデータが、イベントIDおよび/またはホスト名を含む。代替としてまたは追加として、コンテキストデータが、それぞれのクライアントで動作する類似したオペレーティングシステム、類似した許可されたアプリケーション、異なる許可されたアプリケーションによる類似したスタックトレースデータ、およびネットワーク接続を確立するための類似したプロトコルからなる群から選択された少なくとも1つのメンバを含む。
【0008】
任意選択で、方法は、一致がないことに基づいて新しいスタックトレースをデータセットに新しいスタックトレーステンプレートとして追加することをさらに含む。
【0009】
任意選択で、一致したスタックトレーステンプレートを評価することが、異なるクライアントからの以前のスタックトレーステンプレート一致の数を示すカウンタの値をインクリメントすることと、一致の数の事前定義ルール要件に対してその値を評価することとを含む。任意選択で、異なるクライアントが、同じ指定されたグループの一部である。
【0010】
任意選択で、事前定義ルール要件に対して、一致したスタックトレーステンプレートを評価することが、一致したスタックトレーステンプレートおよび新しいスタックトレースが異なるクライアントに関連づけられるとき実行される。
【0011】
任意選択で、方法には、新しいスタックトレースを解析して、悪意のあるコードに関連している疑いがあるとしてネットワーク接続を指定することがさらに含まれ、悪意のあるコードに関連する疑いを、許可されたコードに関連するとして再指定することがさらに含まれる。任意選択で、悪意のあるコードに関連する疑いが、悪意のあるような挙動を表示する新しいクライアントにインストールされた新しい許可されたコードによってトリガされる。代替としてまたは追加として、許可されたコードが、悪意のあるコードに関連する疑いの識別を間違ってトリガすることによって、偽陽性の識別を表す。代替としてまたは追加として、認証された新しいネットワーク接続に関連づけられるスタックトレースが、悪意のある通信のためのネットワーク接続を確立する試みに関連づけられる少なくとも1つのスタックトレーステンプレートに一致する。
【0012】
任意選択で、新しいスタックトレースおよび複数のスタックトレーステンプレートが、プロセス、モジュール、およびスレッドからなる群から選択された少なくとも1つのメンバを含むフローデータをさらに含む。
【0013】
任意選択で、新しいスタックトレースが、悪意のあるコードに関連するスタックトレースと類似性がある悪意のあるような挙動を表示する。
【0014】
任意選択で、複数のスタックトレーステンプレートが、事前定義期間内の複数のクライアントへの類似した許可されたコードの権限を与えられたインストールに基づく。
【0015】
任意選択で、事前定義要件が、許可されたコードによる許可されたネットワーク接続の偽陽性の接続ブロッキングを防止または低減するように選択される。
【0016】
任意選択で、事前定義要件が、許可されたネットワーク接続の偽陽性の接続ブロッキングに対する許容レベルを表す。
【0017】
本発明のいくつかの実施形態の一態様によれば、許可されたコードによるネットワーク接続の確立の試みを認証するためのシステムが提供され、このシステムは、許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットと、少なくとも1つのイベント管理サーバであり、特定の新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に複数のクライアントのうちの特定の新しいクライアントにおいて記録された新しいスタックトレースを受信し、スタックトレーステンプレートへの一致を識別するために、新しいスタックトレースと複数のスタックトレーステンプレートとの間の類似性を測定し、事前定義要件に対して、一致したスタックトレーステンプレートを評価し、一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、一致したスタックトレーステンプレートでルールセットデータベースを更新するために少なくとも1つのイベント管理サーバのプロセッサにより実施可能なコードを含む、少なくとも1つのイベント管理サーバとを含む。
【0018】
任意選択で、システムが、イベント管理サーバと通信するおよび複数のクライアント端末のうちの少なくとも1つと通信する少なくとも1つのゲートウェイサーバをさらに含み、少なくとも1つのゲートウェイサーバが、新しいスタックトレースを解析して、悪意のあるコードに関連している疑いがあるとして新しいネットワーク接続を指定し、解析のために新しいスタックトレースをイベント管理サーバに送信し、更新されたルールセットデータベースを受信し、新しいネットワーク接続の接続確立を可能にするために少なくとも1つのゲートウェイサーバのプロセッサにより実施可能なコードを含む。
【0019】
任意選択で、少なくとも1つのイベント管理サーバが複数のゲートウェイサーバと通信し、各々のそれぞれのゲートウェイサーバが複数のクライアントのうちの少なくとも1つのクライアントと通信し、各々のそれぞれのゲートウェイが、新しいクライアントから新しいスタックトレースを受信することと、ネットワーク接続が悪意のあるアクティビティで使用される悪意のある通信を確立する疑わしい試行の有無を決定するために新しいスタックトレースを解析することと、新しいスタックトレースが悪意のあるデータと相関しているとき悪意のある通信のためのネットワーク接続を確立する試みを検出することと、ネットワーク接続を使用して、悪意のある通信を確立する疑わしい試行を表すメッセージを生成することとを行うために各々のそれぞれのゲートウェイのプロセッサにより実施可能なコードを含み、イベント管理サーバのコードが、各々のそれぞれのゲートウェイサーバからのメッセージを受信し、測定すること、評価すること、および更新することを実行して、許可されたネットワーク接続を表すものとして新しいネットワーク接続を再指定し、それによって、それぞれのゲートウェイには悪意のあるように見える許可されたコードによる偽陽性のネットワーク接続のブロッキングを防止または低減するように実施可能である。任意選択で、特定の新しいクライアントが、悪意のあるコードの識別に関連する疑いをトリガするために新しいクライアントのプロセッサにより実施可能なコードを含む許可されたコードに関連づけられる許可されたアプリケーションをさらに含む。代替としてまたは追加として、少なくとも1つのイベント管理サーバおよび複数のゲートウェイサーバが、少なくとも1つのイベント管理サーバに組み合わされる。
【0020】
任意選択で、許可されたコードが、注入されたコードとしてアプリケーション内にインストールされ、注入されたコードが、悪意のある注入されたコードに関連づけられるスタックデータに類似したスタックデータに関連づけられる。
【0021】
任意選択で、許可されたコードが、悪意のあるコードによって得られた高レベルパーミッションと同様の仕方でネットワーク接続を確立するように高レベルパーミッションを伴って構成される。
【0022】
任意選択で、システムが、それぞれのクライアントごとのインストールのためのクライアントモジュールをさらに含み、クライアントモジュールが、新しくインストールされたアプリケーションをそれぞれのクライアントにおいて識別し、新しくインストールされたアプリケーションを解析して、新しくインストールされたアプリケーションによって悪意のある通信のための接続を確立する試行を識別するためにそれぞれのクライアントのプロセッサにより実施可能なコードを含む。任意選択で、新しくインストールされたアプリケーションが、インストールポリシーを破るユーザによって許可されたアプリケーションとしてインストールされる。
【0023】
本発明のいくつかの実施形態の一態様によれば、許可されたコードによるネットワーク接続の確立の試みを認証するためのコンピュータプログラム製品が提供され、コンピュータプログラム製品が、許可されたコードに関連するネットワーク接続を確立するための接続確立プロセス中に、許可されたコードを実行する複数のクライアントの複数のスタックをモニタすることによって記録されたスタックトレースにおいて優勢であるスタックトレースパターンを各々が表す複数の以前に観察されたスタックトレーステンプレートを有するデータセットを用意するためのプログラム命令と、新しいクライアントによる新しいネットワーク接続のための新しい接続確立プロセス中に記録された新しいスタックトレースを受信するためのプログラム命令と、スタックトレーステンプレートへの一致を識別するために、新しいスタックトレースと複数のスタックトレーステンプレートとの間の類似性を測定するためのプログラム命令と、事前定義ルール要件に対して、一致したスタックトレーステンプレートを評価するためのプログラム命令と、一致したスタックトレーステンプレートに一致するスタックテンプレートに関連づけられる新しいネットワーク接続確立を認証するために、一致したスタックトレーステンプレートでルールセットデータベースを更新するためのプログラム命令とを含む。
【0024】
特に定義されない限り、本明細書で使用される技術用語および/または科学用語はすべて本発明が属する技術分野の当業者によって一般に理解されるのと同じ意味を有する。本明細書で説明する方法および材料と同様のまたは同等の方法および材料を本発明の実施形態の実施または試験で使用することができるが、例示的な方法および/または材料を以下で説明する。矛盾する場合、定義を含む特許明細書が統制することになる。加えて、材料、方法および例は、例示にすぎず、必ずしも限定することを意図していない。
【0025】
本発明のいくつかの実施形態が、添付図面を参照しながら、単なる例として、本明細書で説明される。次に図面を詳細に具体的に参照すると、図示の詳細は、例としてのものであり、本発明の実施形態の例示的な議論のためのものであることが強調される。この点に関して、図面とともに行われる説明は、本発明の実施形態をどのように実践できるかを当業者に明らかにする。
【図面の簡単な説明】
【0026】
図1A】本発明のいくつかの実施形態による、新しいネットワーク接続のデータを評価する方法のフローチャートの図である。
図1B】本発明のいくつかの実施形態による、悪意のある通信のためのネットワーク接続の検出を品質保証する方法のフローチャートの図である。
図2】本発明のいくつかの実施形態による、任意選択で、悪意のある通信のためのネットワーク接続の検出の品質保証に基づいて、ネットワーク接続のデータを評価するシステムの構成要素のブロック図である。
図3A】本発明のいくつかの実施形態による、図2のシステムに基づくシステムアーキテクチャのブロック図である。
図3B】本発明のいくつかの実施形態による、図2のシステムに基づくシステムアーキテクチャのブロック図である。
図4A】本発明のいくつかの実施形態による、コールスタックの例の図である。
図4B】本発明のいくつかの実施形態による、コールスタックの例の図である。
【発明を実施するための形態】
【0027】
本発明は、そのいくつかの実施形態において、悪意のある接続の検出のためのシステムおよび方法、より詳細には、限定ではないが、悪意のある通信の検出の精度保証のためのシステムおよび方法に関する。
【0028】
本発明のいくつかの実施形態の一態様は、イベント管理サーバに関連し、イベント管理サーバは、新しいネットワーク接続に関連づけられるフローデータと、他のネットワーク接続との一致を表す以前に観察されたフローデータ(またはスタックトレース)テンプレートとの間の一致の測定された類似性を定義する事前定義要件に基づいて、許可されたコードに関連するものとして新しいネットワーク接続を評価する。任意選択で、事前定義要件は、他のクライアントによる新しいネットワーク接続のフローデータ間の類似した一致が以前に同じテンプレートと一致したことを表す。一致したテンプレートは、同じフローデータを表示する十分な数のクライアントがテンプレートに一致していた場合、新しいネットワーク接続の確立を許可するようにイベント管理サーバによって認証される。クライアントは、同じ事前指定されたグループ、例えば、組織、会社、部門、およびチームに属することができる。フローデータは、同じまたは類似したコンテキストデータ内で生じ得る。例えば、事前定義要件に基づく認証は、例えば、同じグループの多数のクライアントがすべて同じ許可されたコードをインストールする場合、生じ得る。
【0029】
任意選択で、イベント管理サーバは、悪意のあるアクティビティのためのネットワーク接続の確立であることが疑われる許可されたコードによって生成されたフローデータを認証する。同じ(または類似した)悪意に見えるフローデータが多数の異なるクライアントで観察された場合、疑わしいフローデータは、例えば、許可されたフローデータを定義するルールセットデータベースへの更新によって認証されたフローデータとして再指定される。
【0030】
イベント管理サーバは、任意選択で、1つまたは複数のゲートウェイと通信し、各ゲートウェイは1つまたは複数のクライアント端末と通信する。新しいクライアントにおける新しいネットワーク確立プロセスに関連する新しい未知のコードに関連づけられたスタックトレースおよび/またはフローデータの記録が、以前に観察されたフローデータテンプレートとの類似性相関を測定することによって解析されて、新しいスタックトレースが許可されたコードに関連づけられた場合が決定される。フローデータテンプレートは、他の異なるクライアントからの1つまたは複数の以前に観察された類似したフローデータを表す。以前の一致の数は、カウンタに格納することができる。一致の数が事前定義要件を超える場合、一致したフローデータテンプレートは認証される。認証されたテンプレートに一致する新しいフローデータ(新しいネットワーク接続確立の試みに関連する)は、接続確立を続けることを許可される。
【0031】
いくつかの実施形態では、新しい接続確立プロセスが許可されたコードに関連づけられる関連づけは、2つの段階で実行される。第1の段階(クライアントと通信するゲートウェイサーバで実行することができる)は、未知のコードによる悪意のある通信のためのネットワーク接続を確立する疑わしい試みをクライアントにおいて識別する。第2の段階(ゲートウェイサーバに接続されたイベント管理サーバで実行することができる)は、以前に一致したトリガイベントおよびそのそれぞれのフローデータテンプレートを使用して品質保証を実行し、疑わしい試みが許可されたコードに実際に関連しているかどうか、それゆえに、安全であるかどうかを決定する。イベントがそれぞれのフローデータテンプレートとともに認証されると、新しいルールがゲートウェイのデータベースに追加されて、フローデータテンプレートによって識別されイベントに関連する今後の接続確立が可能になる。
【0032】
任意選択で、疑わしい接続の試みが最初に識別された後、疑わしい接続フローデータの認証が追加の処理として実行される。疑わしいとして識別された接続確立のサブセットを品質保証のためにさらに処理して、接続確立が、実際に、悪意のあるコードに関連し、許可されたコード(例えば、アプリケーションおよび/またはモジュール)に関連していないことを確実にすることができる。このようにして、品質保証処理が疑わしい試みのサブセットに対して集中的に実行され、一方、正常接続確立パターン(例えば、ローカルゲートウェイサーバで実行される)の指定は局所的に実行することができる。
【0033】
第1の状態において、それぞれのクライアント端末から生じる接続確立は、多数の接続されたクライアントの各々が解析のためにゲートウェイサーバに接続確立プロセスに関連するフローデータを表すデータを送信することに基づいて、1つまたは複数のゲートウェイサーバでモニタされる。第2の段階において、接続確立が悪意のあるアクティビティに関連づけられている疑いがあるとゲートウェイサーバが決定すると、ゲートウェイサーバと通信しているイベント管理サーバは、識別された疑わしい試みに関連づけられたデータを、事前定義要件を考慮して以前にトリガされた一致ルールおよびそれぞれのフローデータテンプレートとの突き合わせによって解析して、試みが実際に許可された挙動となった場合(すなわち、偽陽性の識別)を決定する。任意選択で、悪意のあるアクティビティの誤った識別は、正常な挙動を表すように修正される。
【0034】
疑わしい試みは、最初に悪意のあるコードの感染と相関するデータ解析に基づいて識別される。疑わしいネットワーク接続を開始するコードに関連するフローデータを解析して、正常に見えるデータまたはデータフローを生成する代わりに、悪意のあるコードによって生成されたように見えるデータを生成する許可された正常コードによって疑わしい試みが生成された場合を決定する。次いで、疑わしい試みはイベント管理サーバで検証することができ、イベント管理サーバは、試みの誤った分類を、実際には許可されたコードに関連している(および当初指定されたような悪意のあるコードに関連していない)として訂正することができる。最初のゲートウェイ解析によって最初に誤ってブロックされた可能性のあるネットワーク接続は、イベント管理サーバの結果に基づいてアクティブ化されてもよい。ネットワーク接続は、本明細書で説明するように、後続の類似したイベントが識別され一致したときアクティブ化されてもよい。2つの動作モードがあり得ることに留意されたい。第1のモードは、上述のように、第1のイベントが観察された(イベントが悪意のあるアクティビティに関連すると考えた)ときネットワークをブロックし、追加の類似したイベントが観察されたときネットワークをアクティブ化する。第2のモードは、ネットワークアクティブ化および/またはブロッキングを妨げることなく、観察のみによってイベントを認識するようにシステムを訓練するためにシミュレーションモードとして当初動作することができる。
【0035】
このようにして、偽陽性の接続ブロッキングが防止または低減されて、許可されたコードによる接続の確立が可能になる。悪意のある通信に関連づけられる疑わしい接続確立の試行を識別する際のエラーは、疑わしい試行が実際には悪意のあるコードに関連するのではなく、許可されたおよび/または正常なコード(悪意のあるような挙動を表示する)に関連する場合を検出することによって、防止または低減される。
【0036】
本発明の少なくとも1つの実施形態を詳細に説明する前に、本発明は、その適用において、以下の説明に記載され、および/または図面および/または実施例に示される構成要素および/または方法の構築および配列の詳細に必ずしも限定されないことを理解されたい。本発明は、他の実施形態が可能であり、または様々な方法で実践もしくは実行することが可能である。
【0037】
本発明は、システム、方法、および/またはコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する1つのコンピュータ可読記憶媒体(または複数の媒体)を含むことができる。
【0038】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、磁気記憶デバイス、半導体記憶デバイス、または前述のものの任意の好適な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の包括的でないリストは、以下のものを含む。ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、および前述のものの任意の好適な組合せ。本明細書で使用するコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波路または他の伝送媒体を通って伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを通して伝送される電気信号などの一時的な信号自体であると解釈されるべきでない。
【0039】
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはワイヤレスネットワークを介して外部コンピュータもしくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含むことができる。各コンピューティング/処理デバイスのネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0040】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk、C++などのようなオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、ユーザコンピュータで全面的に、ユーザコンピュータで部分的に、スタンドアロンソフトウェアパッケージとして、ユーザコンピュータで部分的におよびリモートコンピュータで部分的に、またはリモートコンピュータもしくはサーバで全面的に実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークによってユーザコンピュータに接続されてもよく、または外部コンピュータへの接続がなされてもよい(例えばインターネットサービスプロバイダーを使用するインターネットを通して)。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個人専用にすることができる。
【0041】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して本明細書で説明される。フローチャート図および/またはブロック図の各ブロック、およびフローチャート図および/またはブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装できることを理解されよう。
【0042】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、または機械を生み出す他のプログラマブルデータ処理装置のプロセッサに供給して、その結果、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロックにおいて特定された機能/動作を実施するための手段を作り出すことができる。これらのコンピュータ可読プログラム命令は、さらに、コンピュータ、プログラマブルデータ処理装置、および/または他のデバイスに、特定な方法で機能するように指示することができるコンピュータ可読記憶媒体に格納することができ、その結果、命令が中に格納されたコンピュータ可読記憶媒体は、フローチャートおよび/またはブロック図の1つまたは複数のブロックにおいて特定された機能/動作の態様を実施する命令を含む製品を含む。
【0043】
コンピュータ可読プログラム命令を、さらに、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードして、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイスに実行させ、それによって、コンピュータ実施プロセスを発生し、その結果、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロックにおいて特定された機能/動作を実施する。
【0044】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品のあり得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部分を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われることがある。例えば、連続して示された2つのブロックは、関係する機能に応じて、実際には実質的に同時に実行されることがあり、またはブロックは時には逆の順序で実行されることがある。ブロック図および/またはフローチャート図の各ブロック、およびブロック図および/またはフローチャート図のブロックの組合せは、特定の機能もしくは動作を実行するかまたは専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースシステムによって実装されてもよいことにも留意されたい。
【0045】
本明細書で説明するフローデータという用語は、クライアント端末で収集されるデータを意味し、それは、コールスタックデータと、任意選択で、プロセスデータ、モジュール解析データ、およびスレッドデータなどの1つまたは複数のコールスタック関連データアイテムとを含む。フローデータおよびコールスタックデータという用語は、時には交換されることがある。
【0046】
本明細書で定義する接続確立という用語は、許可されたコードがネットワーク接続を通じてデータを送信および/または受信することができる前に行われるコンピュータ化されたプロセスを意味する。接続確立プロセスは、正常コードから開始コマンドを受信するアプリケーションプログラミングインタフェースによって管理および/または実行し、接続を確立し、確立された接続を通じて送信するために正常コードからデータを受信し、および/または確立された接続によって受信したデータを正常コードに送信することができる。
【0047】
次に、本発明のいくつかの実施形態による、ネットワーク接続の、任意選択でコンテキストデータの観点から、フローデータを評価する方法のフローチャートである図1Aを参照する。本発明のいくつかの実施形態による、新しいネットワーク確立プロセスを認証するためのシステムである図2をさらに参照する。図2を参照して説明するシステムは、図1Bを参照して説明する方法を実行することができる。
【0048】
システムおよび/または方法は悪意に見える挙動を収集し、悪意に見える挙動は、多数のクライアントで観察された場合、悪意のあるアクティビティの誤った検出を意味する。悪意のある挙動は、許可された挙動として再指定される。システムおよび/または方法は、他のクライアントとして見られる共通パターンに基づいて作り出されたフローデータテンプレートに基づいて、新しい未知のコードを、許可されているとして識別する。共通パターンは、同じ(または類似した)許可されたコードによって生成されると仮定される。新しいデータが、フローデータテンプレートと比較され一致すると、新しいデータに関連する未知のコードは許可されたコードとして指定され、その許可されたコードは、テンプレートを訓練するために使用された同じまたは類似した許可されたコードである。
【0049】
インストールされたコードの各々の外部指定(例えば、許可されているおよび/または悪意のあるとしての)は必要とされない。システムおよび/または方法は、共通パターンが見られるときコードを許可されたものとして自動的に指定し、新しいデータが学習されたフローデータテンプレートと相関しているとき新しい未知コードを許可されたものとして自動的に指定した。インストールされたコードは、外部エンティティによる各コードの事前指定を必ずしも必要とすることなく、本明細書で説明するシステムおよび/または方法によって許可されているとして自動的に指定され、例えば、システム管理者はコードを検証する必要がない。代替として、例えば、イベントの識別および/または突き合わせにおけるエラー、および/またはコードを許可されたものとして指定するおよび/またはコードを悪意のあるものして指定する際のエラー、または他の訂正を手動で訂正するために、手動介入を許可することができる。手動介入は、例えば、システム、方法、および/またはコンピュータプログラム製品管理者に認可される。
【0050】
許可されたコードの指定、および/または悪意のある通信のためのネットワーク接続を検出する品質保証のためのシステムは、例えば、システム200内にインストールすることができる。
【0051】
システム200は、少なくとも1つのクライアント202、例えばラップトップ、デスクトップ、モバイルデバイス(例えば、スマートフォン、タブレット)、および/またはサーバを含む。クライアント202は、クライアント202からのおよび/またはクライアント202へのデータ送信のための新しいネットワーク接続を開始することができるエンドポイントクライアントである。エンドポイントクライアント202はサーバとすることができる。
【0052】
クライアント202は、ネットワーク接続機能、例えば、ネットワークインタフェース、送信機、および/または受信機を含む。クライアント202は、1つまたは複数のネットワーク206、例えば、ワイヤレスネットワーク、有線ネットワーク、セルラネットワーク、インターネット、プライベートネットワーク、およびそれらの多数のネットワークの組合せを通して正当なリモートサーバ204と通信することができる。
【0053】
任意選択で、エンドポイントモジュール208Aが、1つまたは複数のクライアント202の(または1つまたは複数のクライアント202と通信する)メモリにインストールされる(例えば、プリインストールされる、クライアントで動作するオペレーティングシステムと統合される、および/またはリモートサーバまたはローカルメモリからダウンロードされ、ローカルにインストールされる)。任意選択で、エンドポイントモジュール208Aは、本明細書で説明するように、クライアント202のプロセッサによる実施のためのプログラム命令と、クライアント202の接続確立関連アクティビティをモニタするためのプログラム命令とを含むコードを含む。代替としてまたは追加として、モジュール208Aは、例えば、ネットワーク確立接続の試みをブロックするために、接続確立プロセスを停止させるために、および/または接続をアクティブ化するためにゲートウェイ210および/またはイベント管理サーバ216によって指示されるような機能を実行する。
【0054】
イベント管理サーバ216は、接続確立プロセス中に多数のクライアント202からアプリケーションに関連するデータ(例えば、パケットおよび/またはフレームにカプセル化されたネットワークメッセージ)を受信し、任意選択でアグリゲーションモジュール218を使用して、以前に観察されたアグリゲート済み共通パターンのデータを解析し、アグリゲート済み観察を事前定義要件に対して評価し、許可されたアプリケーションに関連するデータを定義するフローデータテンプレートに基づいてルールのセットを生成する。接続確立プロセスが未知のコードに関連する場合、ゲートウェイ210は、新しいルールを含むルールのセット224を適用して、未知のコードを許可されたコードとして指定し、新しいネットワーク接続の確立を可能にする。
【0055】
図1Aの方法は、イベント管理サーバ216内のプロセスに焦点を合わせた方法を説明しており、一方、図1Bは、システムの構成要素にわたる全体の方法を説明していることに留意されたい。
【0056】
102において、ネットワーク接続を確立するための接続確立プロセス中にコードのフローデータ(例えば、スタックトレースにおける記録)に関連するデータが、管理サーバで受信される。データは、パケットおよび/またはフレームにカプセル化されたものなどのネットワークメッセージとしてネットワーク接続を通じて送信することができる。任意選択で、データは、任意選択で、クライアントのプロセッサにより実施可能なコードを含むそれぞれのクライアント202ごとのエンドポイントモジュール208Aによってローカルに照合される。任意選択で、データは、各クライアントから管理サーバにそれぞれのゲートウェイを介して送信される(各ゲートウェイは、本明細書で説明するように、1組のクライアントおよび管理サーバと通信する)。
【0057】
任意選択で、接続確立の試みに関連するイベント識別(ID)および/またはホストデータは、エンドポイントモジュール208Aによってローカルに収集される。ホストデータの例は、ユーザ名、会社名、会社部門、会社チーム、他の組織内グループ名、仮想マシン名、クライアントマシンのアドレスなどの接続確立の試みに関連するネットワークアドレス、および許可されたコードのアドレスのうちの1つまたは複数を含む。イベントIDの例は、トリガされた悪意性ルールの識別、それぞれのクライアントデバイスで動作するオペレーティングシステム、許可されたアプリケーション、インストール済みの許可されたモジュール、およびネットワーク接続を確立しようとする試みで使用される通信プロトコル(例えば、伝送制御プロトコル(TCP))を含むことができる。
【0058】
任意選択で、収集されたデータは、イベント管理サーバ216に送信される。代替としてまたは追加として、収集されたデータは、図1Bを参照して説明するように、最初にゲートウェイ210に送信される。
【0059】
各クライアント202は、接続確立プロセスに関連づけられる許可されたコード208Cをインストールしている。
【0060】
許可されたコード208C、例えば、許可されたアプリケーションおよび/または許可されたモジュールは、例えば、ネットワーク管理者によって手動でおよび/またはパーミッションに基づいて自動的に、クライアント202内にインストールされる。許可されたコード208Cは、ネットワーク接続を確立しアクティブ化するために接続確立試行を開始する。
【0061】
許可されたコード208Cは、悪意のあるコードに感染したアプリケーションの接続確立データに類似する、悪い慣行の接続確立データでプログラムされ得る。
【0062】
許可されたコード208Cは、独自のアプリケーション、例えば、カスタマイズされたおよび/または企業内アプリケーションとすることができる。カスタムメイドおよび/または企業内アプリケーションは、組織に特定の要件に対処する、および/またはソフトウェアデプロイメントのギャップを修正するように設計することができる。事業部門では、企業内アプリケーションは、特定のビジネスの重要なビジネス機能に対処するために作り出すおよび/またはカスタマイズすることができる。特定の内部要件のために設計されたソフトウェアは、コード注入などの非標準方法を使用して、悪意のあるコードで使用される方法と同様の仕方で接続確立に介入することができる。別の例では、コード208Cは、許可されたカスタムセキュリティ監査および/またはエンフォースメントアプリケーションとすることができ、それは、会社クライアント(例えばデスクトップ、ラップトップ、およびサーバ)の全体にわたる会社ポリシーの順守を強制する。セキュリティアプリケーションは、侵略的となる権限を与えられ、接続ハイジャックを含む権限を与えられ、および/または悪意のあるコードによって同様に実行される他のエンフォースメント方法を実行する権限を与えられ得る。
【0063】
コード208Cは、クライアント202の既存のアプリケーションに関連して、例えば、プラグイン、パッチ、およびコード注入としてインストールされるモジュールとすることができる。例えば、モジュール208Cは、信頼できるブラウジングのために設計されたセキュリティツールとすることができる。モジュール208Cは、ネットワーク接続通信を操作するためにウェブブラウザにコードを注入することによって既存のウェブブラウザ内にインストールすることができる。コード注入は、コード注入ベースの悪意のあるコードが働く方法と同様に実行される。注入されたコードは、悪意を持って注入されたコードをもつアプリケーションのフローデータに類似する接続確立開始アプリケーションのフローデータを生成する。
【0064】
コード208Cは、アプリケーションプログラミングインタフェース、例えば、インターネットプロトコル群の伝送制御プロトコル(TCP)に従って接続確立を管理するソケットに関連することができる。
【0065】
任意選択で、フローデータは、ネットワーク接続を確立しようと試みるアプリケーションに関連するコールスタックおよび/または他のデータソースから得られ、例えば、スタック内の命令を実行するプロセッサに関連づけられるメモリ中の関連する場所からコピーされる。スタックトレースは、接続確立に関連するコールスタック内のプロセスのシーケンスのデータおよび/またはスナップショットを含む。例えば、スタックトレースは、トレースが得られる時点のコールスタック内のモジュールを含む。モジュールは、コールスタック内の表示、例えば、モジュールを指し示すコールスタック内のポインタに基づいて引き出すことができる。
【0066】
1つまたは多数のスタックトレースは、接続確立プロセスの開始の要求中におよび/または接続確立プロセス中に、1つまたは多数の時点で得ることができる。接続確立プロセス中に多数の時点で捕捉された多数のスタックトレースは、要求および/または接続確立プロセス中に生じるスタックの変化を捕捉するように選択される。
【0067】
任意選択で、104において、各クライアントから受信したフローデータが、コンテキストに応じて、任意選択で、サーバ216のプロセッサにより実施可能なコードを含むサーバ216のアグリゲーションモジュール218によって分類される。コンテキストは、任意選択でホストデータを含むイベントIDに基づく。コンテキストは、フローデータが悪意性となる場合およびフローデータが許可される場合を決定するのに役立つことができる。例えば、ネットワークブラウザがロードされたときに現われるフローデータは悪意性である可能性があり、一方、カスタマイズされた組織特定アプリケーションがロードされたときに現われる同じ(または類似した)フローデータは安全である可能性がある。別の例では、同じホストで観察された繰り返しのフローデータは悪意性である可能性があり、一方、多数の異なるホストで観察された同じ(または類似した)フローデータは安全である可能性がある。
【0068】
任意選択で、コンテキストは、事前定義された期間、例えば、1日の中の時間、週の中の曜日、または特定の日付を含む。任意選択で、フローデータが同じ事前定義された期間内に受信されたときクラス分けが実行される。期間は、多数のクライアントでのコードのロールアウトおよびインストールを表すように選択することができる。時間コンテキストの外の期間に関連づけられたフローデータは、許可されたインストールとは対照的に、感染のパターンを表すことがあることに留意されたい。
【0069】
コンテキストデータは、フローデータが悪意のある通信を表すときと、フローデータが許可された挙動を表すときとを区別するのに役立つことができる。コンテキストデータは、識別された接続確立フローデータに関連して収集することができる。コンテキストデータの例は、それぞれのクライアントで動作するオペレーティングシステム、それぞれのクライアントで動作する既知の許可されたアプリケーション、異なる許可されたアプリケーションに関連づけられる高い相関性(例えば、閾値を超える)のフローデータ、およびネットワーク接続を確立しようと試みる際に使用される通信プロトコルのうちの1つまたは複数を含む。例えば、同じ(または類似した)オペレーティングシステムの下で異なるクライアントで実行される異なるアプリケーションは、類似したコンテキストデータの下で類似したフローデータを生成することがある。フローデータは、許可されたアプリケーションによる許可された挙動に関連するとして指定される。
【0070】
106において、特定のクライアント202における新しい接続確立の試みに関連づけられた新しいコードの新しいフローデータが、イベント管理サーバ216に送信される。新しいフローデータは、サーバ216のプロセッサにより実施可能なコードを含むアグリゲーションモジュール218によって任意選択で解析される。フローデータテンプレートとの一致を識別するために、類似性(例えば、相関性)が、新しいフローデータと多数の格納されている以前に観察されたフローデータテンプレート(サーバ216と通信するメモリにデータセットとして格納することができる)との間で測定される。新しいフローデータは、類似性の相関が相関閾値を超える場合などに一致する。フローデータおよびテンプレートは、必ずしも完全に一致する必要はないが、相関閾値によって定義されたものと十分に類似している必要があることに留意されたい。
【0071】
任意選択で、類似性は、あり得る悪意のあるイベントの識別と、フローデータ、例えば、悪意のあるアクティビティに多分関連づけられるとして識別されたアプリケーションに関連するフローデータのデータセットの収集とをトリガした悪意性ルールに従って測定される。
【0072】
代替としてまたは追加として、類似性は、コンテキストデータに従って測定される。新しいフローデータが、同じまたは類似したコンテキストデータを有するフローデータテンプレートのサブセットと比較されて、サブセット内の一致が識別される。このようにして、一致する可能性があるが無関係である他のテンプレートは、先験的に除外される。他のコンテキストで生じた一致するテンプレートは、悪意のある挙動を表す可能性があり、異なるコンテキストで生じた場合には排除することができない。
【0073】
代替としてまたは追加として、類似性は、クライアントから収集されたスタックトレースと、以前に観察されたイベントのスタックトレース、例えば、スタックのタイプおよびスタックのモジュールとの間のスタックトレースの特定の詳細の類似性に従って測定される。
【0074】
任意選択で、突き合わせは、処理性能を改善するために、最初に、トリガされた悪意性ルールを突き合わせ、次いで、コンテキストを突き合わせ、次いで、スタックトレースデータと突き合わせることによって階層的方法で段階的に実行される。代替として、突き合わせは、トリガされた悪意性ルール、コンテキスト、およびスタックトレースデータを特定のイベントにマッピングする分類器またはルールのセットなどによって同時に実行される。
【0075】
任意選択で、107において、新しいフローデータは、一致が見いだされない場合、サーバ216のプロセッサにより実施可能なコードによって新しいフローデータテンプレートとして格納される。次いで、新しいフローデータテンプレートは、新しく受信したフローデータと突き合わせされる。代替としてまたは追加として、フローデータテンプレートは事前設定された定義に基づく。例えば、管理者は、許可された挙動を表す特定のフローデータテンプレートを手動で定義することができる。
【0076】
代替として、108において、一致したフローデータテンプレートが見いだされた場合、一致したフローデータテンプレートは、任意選択でアグリゲーションモジュール218によって、事前定義要件に対して評価される。評価は、1つまたは複数のルール要件と突き合わせるように設定することができる。任意選択で、各悪意性ルールはそれ自体の事前定義要件に関連づけられる。事前定義要件は、例えば、閾値、範囲、および/または関数とすることができる。
【0077】
任意選択で、事前定義要件は、関連づけられたテンプレートを検証するために観察されるべき一致の数を表す。以前に観察された一致の数を示すカウンタは、異なるホストデータの各一致の間に任意選択でインクリメントされる。代替として、他のカウント法を使用することができ、例えば、以前の一致の数に基づいて機能を計算することができる。カウンタの値を事前定義要件と比較して、値が、機能によって定義された事前定義要件を満たすかまたは超える、例えば、範囲内に入る、および/または閾値を満たすかまたは超える場合を決定する。
【0078】
任意選択で、一致した新しいフローデータは、一致したフローテンプレートに関連してデータセットに格納することができる。多数のフローデータのセットを格納することにより、異なる変動が観察されたときなどにテンプレートの周期的(または連続的)更新を可能にすることができる。代替としてまたは追加として、多数のフローデータのセットは、更新されたテンプレートに再アグリゲートすることができる。代替としてまたは追加として、フローデータのセットのメンバは、例えば、ローカルクライアント構成、例えば、コードの異なるバージョン、および/またはオペレーティングシステムに対処するために、一致したテンプレートにおける許可された変動を表すことができる。カウンタ値は、データセットのメンバのカウントを実行することによって得ることができる。
【0079】
任意選択で、要件は静的であり、例えば、一致したテンプレートを検証する前に観察され得る同一グループの異なるクライアントからの一致の数などの絶対数である。代替としてまたは追加として、要件は、動的であり、基礎となる変数に従って変更することができる。例えば、同じテンプレートに一致し得るグループ内のクライアントの割合。割合は同じままであり得るが、一致の数は、新しいクライアントが追加されるので時間とともに変わる可能性があるグループ内のクライアントの総数に合わされる。別の例では、要件は、1つまたは複数のセキュリティ関連メトリックの関数であり、1つまたは複数のセキュリティ関連メトリックは、例えば、通信プロトコルによって与えられるセキュリティ保護、部門に勤めている従業員のセキュリティレベル、および接続しているアプリケーションまたはオペレーティングシステムの既知のセキュリティ障害に関連するコンテキストに対して計算することができる。
【0080】
要件は、手動で事前定義されてもよく(例えば、システム管理者によって)、自動的に定義されてもよく(例えば、1つまたは複数の変数から計算されたアルゴリズムによって)、および/または外部ソースから得られてもよい(例えば、中央サーバからダウンロードされてもよい)。
【0081】
カウンタ値および/または要件はコンテキストに応じて定義されてもよいことに留意されたい。任意選択で、異なるクライアントは、同じ指定されたグループなどの同じコンテキストを有する。このようにして、同じグループ(例えば、同じ会社、同じ部門、同じチーム)の異なるクライアント内で観察された同じ(または類似した)フローデータは、同じグループのクライアントへのソフトウェアのインストールなどによる許可された挙動を表す。同じグループのクライアント内で観察される同じフローデータは、異なる組織の異なるクライアント内で観察される同じフローデータ(同じエンティティによってインストールされた共通ソフトウェアに起因する可能性が低い)よりも許可された挙動である可能性が高い。
【0082】
任意選択で、異なるコンテキストには異なる要件が選択される。任意選択で、同じテンプレートが一致する場合、異なるコンテキストには異なる要件が選択される。異なる要件は、例えば、会社の一般的な事務スタッフに対する低いセキュリティレベルおよび会社の財務スタッフに対する高いセキュリティレベルなどの異なるコンテキストに対する所望のセキュリティの異なるレベルを表すことができる。
【0083】
任意選択で、要件は、許可された挙動を表す要件の信頼レベルを表す確率値に従って選択することができる。要件は、許可されたネットワーク接続の偽陽性の接続ブロッキングを防止または低減するように選択する(手動でまたは自動的に)ことができる。高い要件は、確実性が高い場合には、以前の悪意のある試みを安全であるとしてフラグを立てることがある。特定の安全なプログラムをブロックする犠牲を払ってまで悪意のあるアクティビティを容認できない場合(安全なプログラムは、今後の接続確立のために手動で承認され得ることに留意されたい)、例えば、軍事施設などの機密に属する材料を有する組織では、高い要件を選択することがある。低い要件は、確実性が低い場合には、以前の悪意のある試みを安全であるとしてフラグを立てることがある。低い要件は、例えば、カスタマイズプログラムが、非常に重要であり、組織のコンピュータにおいて重要なアクティビティを表す組織では選択されることがある。
【0084】
任意選択で、要件がまだ満たされていない場合、109において、カウンタ値は、新しいクライアントで一致が観察された(すなわち、以前の一致がない)とき、サーバ216のプロセッサにより実施可能であるコードによってインクリメントされる。同じクライアントに関連づけられた繰り返しの一致は、同じクライアントの同じアプリケーションによる繰り返しの通信確立の試みをカウントするのを避けることなどのためにカウンタをそれ以上インクリメントしない。このようにして、同じ(または類似した)フローデータを有する異なるクライアントの数がカウントされる。同じフローデータを有する十分なクライアントが観察される(要件によって定義されているように)と、フローデータは110におけるように認証される。
【0085】
カウンタは、各々のそれぞれのクライアントが類似しているインストールされたコードを実行する場合、多数のクライアントから受信したフローデータに基づいてインクリメントされることに留意されたい。それぞれのクライアントからのフローデータの同じ、類似した、または高い相関(例えば、閾値を超える)は、実行されたコードが有効にされているおよび/または許可されていることを表す。受信した各クライアントからのフローデータが普通なら悪意のある通信の試みを表すものとして指定される場合でさえ、コード(および/または関連するフローデータ)は、許可された挙動を表すものとして自動的に指定される。そのようなシナリオは、例えば、従来と異なる方法で書かれた(例えば、優れた一般的な方法に従わない)カスタマイズされたコードが許可された方法で会社コンピュータにインストールされる場合に生じることがある。コードは悪意のあるように見えるが、実際は許可されたコードである。
【0086】
代替として、要件が満たされたとき、110において、ルールセットデータベースは、サーバ216のプロセッサにより実施可能なコードによって、一致したフローデータテンプレートを用いて更新される。一致したフローデータテンプレートに関連づけられる新しいネットワーク接続の試みは認証され、接続を確立することが可能になり得る。
【0087】
任意選択で、イベント管理サーバ216によって生成された新しいルールは、ネットワーク接続を通じてクライアント202に、または他のネットワークデバイス、例えば、ゲートウェイ210に送信することができる。各々のゲートウェイ210に関連づけられるルールのセット224を更新することができる。同じ(または類似した)許可されたコードに基づく今後のフローデータによる接続確立プロセスが、ネットワークを通じたデータ送信のために確立されることが可能になる。
【0088】
代替として、未知のコードのフローがいかなるフローデータテンプレートにも相関されない場合、疑わしい悪意のある通信の試みを示すメッセージを生成し送信することができる。さらなる措置、例えば、接続確立の試みをブロックすること、および/または未知のコードを悪意のあるものとしての指定することを講じることができる。
【0089】
任意選択で、112において、方法は、新しい接続確立の試みを解析するために繰り返される。
【0090】
次に、本発明のいくつかの実施形態による、悪意のある通信および/またはアクティビティのためのネットワーク接続の検出を品質保証するコンピュータ実施方法のフローチャートである図1Bを参照する。本発明のいくつかの実施形態による、悪意のある通信および/またはアクティビティのためのネットワーク接続の検出を品質保証する方法のためのシステムである図2をさらに参照する。図2を参照して説明するシステムは、図1Bを参照して説明する方法を実行することができる。
【0091】
システムおよび/または方法は、ネットワーク接続を確立する際の識別された疑わしい試みに対する品質保証を提供し、クライアント上のコード(例えば、アプリケーション、更新モジュール、プラグイン、およびパッチ)によって開始された接続確立がいつ悪意のあるアクティビティと実際に関連づけられるか、いつからコードによって開始された接続確立が許可されたおよび/または正常なアクティビティに関連づけられるかを決定する。コードは、悪意のあるコードによって生成されたフローデータに類似する疑わしいフローデータを生成する正常なコードである可能性がある。このようにして、正常なコードに基づいて確立された許可されたネットワーク接続は、識別された疑わしい悪意のあるようなフローデータに起因して誤ってブロックされる代わりに、アクティブ化される。
【0092】
システムおよび/または方法は、悪意のあるコードと同様の仕方で動作するが、実際には悪意のあるコードでないローカルにインストールされた正常なコードのフローデータを許可する新しいルールを生成する。例えば、悪い訓練接続確立に基づいてプログラムされたコードおよび/またはアプリケーション、組織に特定の要件に対処するようにプログラムされたカスタマイズおよび/または企業内モジュールおよび/またはアプリケーション、ソフトウェアパッチ、および高いレベルの管理特権を有するように設計されたモジュール。そのような場合、本明細書で説明するシステムおよび/または方法は、悪意のあるコードに関連づけられるフローデータと、普通なら区別することが困難である許可されたおよび/または正常なコード(悪意のあるコードのように振る舞う)に関連づけられるフローデータとの間の差別化を行う。
【0093】
本明細書で説明するシステムおよび/または方法は、ネットワーク接続の不適切なブロックまたはシャットダウンを防止および/または低減する追加の品質保証手段を追加することによって、ネットワーク性能を改善する。
【0094】
本明細書で説明するシステムおよび/または方法は、特定の悪意のあるコードおよび/または特定の正常なコードの知見を必ずしも必要することなく、実際の悪意のある接続の試みと間違ってラベル付けされた正常な接続確立とを区別する。
【0095】
ゲートウェイ210は、クライアント202からの接続確立関連データを受信し、データを解析し、悪意のある通信および/またはアクティビティのためのネットワーク接続の確立の疑わしい試みを識別する。任意選択で、ゲートウェイ210は、ネットワーク接続の確立を開始するクライアント202の特定のアプリケーションと、ネットワーク接続の確立を制御するインタフェースとの間の仲介物として働くプロキシーサーバである。ゲートウェイ210の追加の詳細は、例えば、仮特許出願第62/083,985号を参照して見いだすことができる。
【0096】
イベント管理サーバ216は、1つまたは複数のゲートウェイ210と通信する。サーバ216は、識別された疑わしい試みに関連するデータをゲートウェイ210から受信し、疑わしい試みが正常なコードに関連する場合、および、任意選択で、疑わしい試みが悪意のあるコードに実際に関連づけられる場合を決定する。イベント管理サーバ216は、疑わしい試みが偽陽性であることを示すそれぞれのゲートウェイ210および/またはモジュール208Aへの信号を生成する。信号は、接続確立を検証し許可するためにゲートウェイ210によって使用されるルールのセット224内にインストールすることができる新しいまたは更新されたルールのセットとすることができる。
【0097】
任意選択で、イベント管理サーバ216のユーザインタフェースモジュール222に関連づけられるイベント管理サーバ216の管理モジュール220は、ユーザが1つまたは複数の管理および/またはモニタ機能、例えば、構成、更新、アクティビティ、および/またはイベントレビューを実行できるようにする。ユーザは、例えば、ネットワーク接続を通じてウェブブラウザを通してユーザインタフェース222にアクセスすることができる。データは、多数のクライアントおよび/またはゲートウェイおよび/またはイベント管理サーバに、またはクライアントおよび/またはゲートウェイおよび/またはイベント管理サーバごとに、一元的に調査および/または解析することができる。
【0098】
次に、本発明のいくつかの実施形態による、図2のシステム200に基づくアーキテクチャのいくつかの例のブロック図である図3Aおよび図3Bを参照する。
【0099】
図3Aは、イベント管理サーバ320が多数のゲートウェイサーバ310と通信するシステム300のアーキテクチャを示す。各ゲートウェイサーバ310は多数のクライアント302と通信する。システム300は、例えば、大きい組織のために設計することができ、各ゲートウェイ310は、イベント管理サーバ320が組織のゲートウェイ310に接続された状態で、クライアント302の指定されたグループ(例えば、部門ごとの、クライアントタイプごとの、および/または地理的場所ごとの)の役に立つ。学習した情報を交換するために互いに接続された多数のイベント管理サーバ320が存在してもよいことに留意されたい。
【0100】
システム300は、悪意のあるコードを階層的にモニタするように設計することができ、それは、頻繁に生じることがある接続確立をモニタする効率を改善することができる。各クライアント302は接続確立のためにモニタされる。接続確立がゲートウェイ310によって解析されて、疑わしい接続確立の試みのように見える接続確立のサブセットを識別する。疑わしい試みは、偽陽性の識別を検出するためにイベント管理サーバ320による品質保証を受ける。
【0101】
図3Bは、ゲートウェイおよびイベント管理サーバが単一構成要素、すなわち、組合せサーバ354に統合されたシステム350のアーキテクチャを示す。クライアント352は組合せサーバ354と通信する。システム350は、例えば、小さい組織または孤立した部門のために設計することができ、各サーバ354は、疑わしい試みの識別の機能と疑わしい試みの品質保証の両方を行い、クライアント352のグループの役に立つ。互いに接続されていてもよく接続されていなくてもよい多数の組合せサーバ354が存在してもよい(例えば、組織にわたって)ことに留意されたい。
【0102】
システム350は、ローカライズされた悪意のあるコードのモニタのために設計することができ、ローカライズされた悪意のあるコードのモニタは、例えば、地理的に隔離された組織、制限のある帯域幅可用性をもつ組織、および接続確立のモニタを素早く実行する必要のある(例えば、接続確立の承認の時間を短縮するためにおよび/または高い頻度の接続確立の役に立つために)組織に接続確立の高速なモニタを提供することができる。
【0103】
次に、図1Bおよび図2を参照すると、ゲートウェイ210および/またはサーバ216は、コンピュータにインストールするためのソフトウェアモジュールおよび/または他のコンピュータとの通信のためのハードウェア機器とすることができる。ゲートウェイ210および/またはサーバ216は、例えば、ネットワーク206に接続されるように、クライアント202とネットワーク206との間のインタフェース(例えば、ネットワークインタフェースデバイス)にインストールされてもよく、および/またはネットワーク206自体内に、例えば、内部および/または境界ネットワークデバイス(例えば、層2デバイス、層3デバイス、ルータ、ゲートウェイおよびブリッジ)内にインストールされてもよい。
【0104】
許可されたコード208Cは、本明細書で説明するように、インストールのために権限を与えられており、悪意のある通信のための接続確立の疑わしい試みの識別を依然としてトリガすることができる。許可されたコード208Cは、感染したアプリケーションのフローデータと類似しているおよび/または感染したアプリケーションのフローデータとの高い相関を有するフローデータに関連づけられる。
【0105】
152において、接続確立プロセスに関連する、コールスタックデータを含むフローデータは、例えば、クライアントのプロセッサで実施可能なエンドポイントモジュール208Aのコードによってクライアントで収集される。フローデータは、接続確立プロセスの前におよび/または接続確立プロセス中に補足される。
【0106】
データは、クライアント端末で実行されるプロセス、スレッド、モジュール、および動的コードを表すフローデータ内の記録を含むことができる。スレッド、プロセス、および/またはモジュールに関連するフローデータなどのフローデータは、ネットワーク接続の確立を開始するコマンドの間に得られる。
【0107】
任意選択で、コンテキストデータが収集される。コンテキストデータは、品質サーバに後で送信するためにセーブすることができる。
【0108】
任意選択で、154において、接続確立をモニタして、ネットワーク接続を確立する試みを識別する。モニタリングおよび/または解析は、それぞれのモジュール208Aによって各クライアント202のところで、および/またはそれぞれ接続されたクライアント202に対してゲートウェイ210によって実行されてもよい。
【0109】
代替としてまたは追加として、新しいコード(例えば、アプリケーション、プラグイン、パッチ、およびアドオン)のインストールは、例えば、エンドポイントモジュール208Aによって識別される。新しいコードは、ユーザによって意図的にインストールされることがあり、その上安全に働くことがあるが、会社ポリシーに反する動作を実行することがある。例えば、インストールポリシーは、ピギーバックアプリケーション、ブラウザアドオン、およびライブメッセンジャアプリケーションなどのソフトウェアを禁止することがある。そのようなコードは、会社ポリシーに反しているとして、例えば、セキュリティ脅威(例えば、ハイジャックで使用される)、限られたリソースの使い過ぎ(例えば、会社の帯域幅の過度の使用)を表すものとして識別され、および/または仕事から気を散らす時間の浪費であると企業管理者によって決定される可能性がある。本明細書で使用する悪意のある通信という用語は、さらに、コード自体が悪意性であるかまたは安全であるかにかかわらず、ポリシーに反してインストールされたコードのアクティビティを意味する。新しくインストールされたアプリケーションに関連するフローデータを解析して(本明細書で説明するように)、接続を確立する試行を、許可された挙動であるがポリシーの違反であることを表す可能性がある悪意のある通信に関連づけられるとして識別することができる。
【0110】
検出接続確立のためのシステムおよび/または方法の追加の詳細は、例えば、本出願の同一の出願人および同一の発明者等による米国特許仮出願第62/083,985号を参照して説明される。
【0111】
158において、フローデータおよび任意選択でコンテキストデータは、例えば、クライアント202内のスタックデータおよび/または他のフローデータにアクセスすることができるエンドポイントモジュール208Aによって、クライアント202からゲートウェイ210に送信される。
【0112】
160において、データを解析して、クライアント202にインストールされたコードによる悪意のあるアクティビティおよび/または通信のための接続を確立する疑わしい試みを検出する。スタックトレースおよび/または他のフローデータを解析して、悪意のあるアクティビティのためのネットワーク接続を使用して悪意のある通信を確立する疑わしい試行の有無を決定することができる。任意選択で、解析は、ゲートウェイ210によって、任意選択でルールのセット224および/または別のポリシーエンフォーサモジュールを使用して実行される。
【0113】
任意選択で、悪意のある通信の有無を表す信号が生成される。
【0114】
解析は、アプリケーションとリモートサーバまたは悪意のあるサーバとの間のデータ通信、例えば、開始アプリケーションによるネットワークを通じたデータの転送などの前に実行することができる。任意選択で、解析は、ネットワーク接続の確立の前に実行される。代替としてまたは追加として、解析は、ネットワークセッションのアクティブ化の前に実行される。このようにして、悪意のあるエージェントがネットワーク接続によって行動することができる前に、例えば、権限を与えられていないデータの送信(すなわち、データの盗み)の前に、接続確立プロセスの妥当性を決定することができる。
【0115】
解析は1つまたは複数の方法に基づいて実行することができ、例えば、相関は、悪意のあるアクティビティとの統計的に有意な相関(例えば、スタックトレース、スタック内のモジュール、および固有のイベントの)関連、および/または有効な安全アクティビティとの統計的に有意な関連を識別するために実行することができる。解析は、スタック、スレッド、および/またはプロセス実行可能ファイルフォーマットのモジュールの安全性の検証に基づいて実行され、例えば、記録が不法のフローデータを表す場合を識別することができる。
【0116】
解析方法の追加の詳細は、例えば、米国仮特許出願第62/083,985号を参照して見いだすことができる。
【0117】
代替として、ゲートウェイ解析は、接続確立の試みが悪意のあるコードまたは許可されたコードに関連しているかどうかを確定的には決定しない。例えば、悪意のあるコードに関連している確率は約50%であり、および/または許可されたコードに関連している確率は約50%である。他の決定的な要件、例えば、他の確率閾値、他の範囲、および/または関数を使用することができる。そのような場合は、例えば、ゲートウェイが、通信セッションを開始しようとするクライアント端末に疑わしいアプリケーションインストーラを識別したときに生じることがある。任意選択で、メッセージが、ゲートウェイによって、ユーザ(例えば、オペレータ、システム管理者)による手動介入の要求を伴ってそれぞれのクライアント端末に送信され、例えば、ポップアップウィンドウが、クライアント端末のディスプレイに現われ得る。ユーザは、例えば、ポップアップウィンドウ内のボタンをクリックすることによって、コードを、許可されたコードおよび/または悪意のあるコードとして手動で定義する能力が与えられ得る。手動指定は、今後の通信確立の試みの際同じクライアントに適用するために、ゲートウェイに関連づけられたルールのセットに追加することができる。他のゲートウェイへの伝搬および/または他のクライアントへの適用は、管理者および/または事前定義されたシステム基本設定によって定義することができる。例えば、他のクライアントへの適用は、プライベート組織ネットワーク(登録されている従業員のみが許可される)では有効にすることができるが、オープンな公衆網では、悪意のあるユーザがシステムを欺かないようにおよび悪意のあるコードを許可されたものとしてマーキングしないように無効にすることができる。
【0118】
本明細書で使用するとき、以前に所見を述べた語句は、手動指定の場合を含む。手動指定は、以前に所見を述べた語句を参照して説明したように処置および/または処理される(すなわち、本明細書で説明するシステムおよび方法によって)。システムおよび/または方法が以前の所見を実行しておらず、代わりに、手動介入が以前の所見として定義される場合に、手動指定が、以前に所見を述べたように処置されることに留意されたい。
【0119】
任意選択で、161において、ゲートウェイ210による解析(ブロック160)が、許可された挙動を表していると決定された場合、接続確立が許可される。疑わしい試みが検出されない場合、接続確立は、例えばゲートウェイ210からクライアント202に送信されたメッセージによって、再開することができる(および/またはネットワーク接続はアクティブ化され得る)。品質サーバ216によるスタックトレースの追加の解析は必要ではないことがある。
【0120】
代替として、162において、ゲートウェイ210による解析(ブロック160)が、悪意のある接続の試みを表していると決定された場合、コールスタックデータを含むフローデータが、例えばゲートウェイ210によって、追加の解析のためにイベント管理サーバ216に送信される。
【0121】
ゲートウェイ210(および/またはクライアント202)は、本明細書で説明するように、コールスタックデータの解析を支援するために、コールスタックデータに関連してクライアント202から抽出された追加のコンテキストデータをサーバ216に送ることができる。コンテキストデータは、ブロック160の解析が悪意のある通信の試みを示した後に収集されてもよく、またはフローデータと一緒に収集されていてもよい。
【0122】
任意選択で、ゲートウェイ210は、疑わしい結果に対する品質保証を要求するメッセージを生成しサーバ216に送信する。
【0123】
164において、フローデータおよび任意選択のコンテキストデータをアグリゲートおよび/または解析して、ゲートウェイの解析を訂正し、悪意のあるアクティビティを正常として識別する(すなわち、偽陽性の結果を訂正する)。解析は、例えば図1Aを参照して本明細書で説明したように、アグリゲーションモジュール218に基づいてイベント管理サーバ216で実行することができる。解析は、偽陽性の識別を防止または低減することができる。悪意のある結果は、正常な許可されたアクティビティとして再分類することができる。
【0124】
次に、本発明のいくつかの実施形態による接続確立プロセスに関連するコールスタックの例である図4A図4Bを参照する。分かりやすくするために、図は部分的トレースを示す。
【0125】
図4Aは、信頼できるブラウジングを提供するために、ブラウザ内にインストールされたセキュリティツールを有するウェブブラウザのコールスタック402を示す。セキュリティツールは、HTTPセッションを操作するように設計されたコードを注入することによって実装された。セキュリティツール(許可されたコードである)は、悪意のあるコードと同様に動作し、例えばゲートウェイによって解析されたとき、普通なら偽陽性を生成することになる。
【0126】
コールスタック402は、例えば安全なウェブサイトに接続するための接続を確立しようとする試みを表す。コールスタック402はコールスタック404との比較によって解析され、コールスタック404は、インストールされたセキュリティツールなしにウェブブラウザで予想される有効な接続確立関連スタックを表する。解析により、特定のファイル408(すなわち、shlwapi.dll)が欠けており、既知のモジュール406Aへのコードポインタおよび未知のモジュール406Bへの別のコードポインタが存在することが検出される。フローデータの初期の解析(例えば、ゲートウェイ210による)に基づいて、悪意のあるコードが疑われる。同じ組織に指定された大部分またはすべての他のクライアントから見られるコールスタックに基づくさらなる解析(例えば、品質サーバ216による)により、コールスタック402が正常なコードの許可された挙動を表していることが決定される。
【0127】
図4Bは、主として検索エンジン結果をもたらすために接続をリダイレクトし操作するブラウザツールバーをユーザがインストールしたブラウザプログラムのコールスタック412を示している。ツールバーは、必ずしも完全に悪意のあるコードを表すものではなく、評判の高いベンダによって安全なアプリケーションとして提供される。ツールバーは、組織によるインストールに対して禁止されるように指定されている。
【0128】
ツールバーをもつブラウザは、既知の安全なウェブサイトへのネットワーク接続を確立しようと試みている。スタック412は、禁止されたプログラムに関連づけられた既知のコード416を含む。それに比べて、コールスタック414は、インストールされたツールバーのないウェブブラウザのコールスタックである。コールスタック414は、コールスタック416に存在しないモジュール418(すなわち、shlwapi.dll)へのポインタを含む。既知のコールスタックは、会社インストールポリシーに反するインストールされたツールバーをもつウェブブラウザを識別するために、学習モジュールにプログラムされてもよい。
【0129】
次に、図1Bに戻って参照すると、166において、解析の結果を示すメッセージが、イベント管理サーバ216によって生成される。メッセージは、ゲートウェイ210および/またはクライアント202に送信される。メッセージは、ルールのセットへの更新を含むことができ、一致したフローデータイベントが許可された接続確立の試みを表すことを示している。
【0130】
悪意のある通信が間違って検出されたことをメッセージが示している場合、ゲートウェイ210および/またはクライアント202は、接続確立プロセスを続けることができ、および/または接続をアクティブ化することができる。悪意のある通信が正しく検出されたことをメッセージが示している場合、ゲートウェイ210および/またはクライアント202は、接続確立をブロックする(または接続確立のブロックを維持し続ける)ことができ、および/または接続を通じたデータ送信を防止することができる。
【0131】
任意選択で、168において、イベント管理サーバ216に接続された各々のゲートウェイ210の各々のルールのセット224は、受信したルールのセットで更新される。各々のゲートウェイ210のルールのセット224の更新により、イベント管理サーバ216に接続されたゲートウェイ210は、クライアント202内にインストールされた新しいコードに関連づけられる新しい識別されたフローデータに動的に適合される。
【0132】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品のあり得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための1つまたは複数の実行可能命令を含むコードのモジュール、セグメント、または一部分を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われることがあることにも留意されたい。例えば、連続して示された2つのブロックは、関連する機能に応じて、実際には実質的に同時に実行されることがあり、またはブロックは時には逆の順序で実行されることがある。ブロック図および/またはフローチャート図の各ブロック、およびブロック図および/またはフローチャート図のブロックの組合せは、特定の機能もしくは動作を実行する専用ハードウェアベースシステム、または専用ハードウェアとコンピュータ命令との組合せによって実装され得ることにも留意されたい。
【0133】
本発明の様々な実施形態の説明は、例証のために提示されたが、網羅的であることまたは開示された実施形態に限定されることを意図していない。説明した実施形態の範囲および趣旨から逸脱することなく、多くの変形および変更が当業者には明らかであろう。本明細書で使用された用語は、実施形態の原理、実際的用途、もしくは市場で見いだされる技術に対する技術的改善を最も良く説明するように、または他の当業者が本明細書で開示した実施形態を理解できるように選択された。
【0134】
本出願から成熟する特許権の存続期間中に、多くの関連システムおよび方法が開発されることが予想され、クライアント、サーバ、およびコードという用語の範囲は、そのような新技術をすべて先験的に含むように意図される。
【0135】
本明細書で使用する「約」という用語は±10%を指す。
【0136】
「備える」、「備えている」、「含む」、「含んでいる」、「有している」、という用語およびそれらの活用形は、「限定はしないが、含む」を意味する。この用語は、「からなる」および「から本質的になる」という用語を包含する。
【0137】
「から本質的になる」という語句は、組成物または方法が追加の要素またはステップを含み得るが、追加の要素またはステップが特許請求する組成物または方法の基本および新規な特性を実質的に変えない場合に限られることを意味する。
【0138】
本明細書で使用する単数形「a」、「an」、および「the」は、文脈上別段明確に示されない限り複数の指示内容を含む。例えば、「化合物」または「少なくとも1つの化合物」という用語は、それらの混合物を含む複数の化合物を含むことができる。
【0139】
「例示的な」という単語は、本明細書では、「例、実例、または例示として役立つこと」を意味するように使用される。「例示的な」として説明されたいかなる実施形態も、必ずしも、他の実施形態と比較して好ましいもしくは有利であると解釈されるべきではなく、および/または他の実施形態からの特徴の組み込みを排除すべきではない。
【0140】
「任意選択で」という単語は、本明細書では、「ある実施形態では提供され、他の実施形態では提供されない」ことを意味するように使用される。本発明のいかなる特定の実施形態も、複数の「任意選択の」特徴が矛盾しない限り、そのような特徴を含むことができる。
【0141】
本出願の全体を通して、本発明の様々な実施形態は、範囲の形式で提示されることがある。範囲の形式での説明は、単に便宜および簡潔のためであり、本発明の範囲に対する柔軟性がない限定と解釈されるべきでないことを理解されたい。したがって、範囲の説明は、すべての可能な部分範囲ならびにその範囲内の個々の数値を具体的に開示したものと考えるべきである。例えば、1から6までなどの範囲の説明は、1から3まで、1から4まで、1から5まで、2から4まで、2から6まで、3から6まで等のような部分範囲、ならびにその範囲内の個々の数、例えば、1、2、3、4、5、および6を具体的に開示したものと考えるべきである。これは、範囲の広さに関係なく適用される。
【0142】
数の範囲が本明細書で示されるときは常に、数の範囲は、示された範囲内の任意の引用される数字(小数または整数)を含むように意図される。第1の表示数と第2の表示数との「間に及んでいる/及ぶ」、ならびに第1の表示数「から」第2の表示数「まで」「及んでいる/及ぶ」という語句は、本明細書では交換可能に使用され、第1および第2の表示された数、ならびにそれらの数の間のすべての小数および整数を含むことを意味する。
【0143】
明確にするために別々の実施形態の文脈で説明されている本発明の特定の特徴は、単一の実施形態において組み合わせて提供されることも可能であることが理解される。逆に、簡潔にするために単一の実施形態の文脈で説明されている本発明の様々な特徴は、本発明の任意の他の説明されている実施形態において、別々に、または任意の適切な部分的組合せで、または好適であるように提供されることも可能である。様々な実施形態の文脈で説明したいくつかの特徴は、それらの要素なしでは実施形態が動作不能である場合を除いて、それらの実施形態の必須の特徴と考えるべきではない。
【0144】
本発明をその特定の実施形態に関連して説明したが、多くの代替、変更、および変形が当業者には明らかであることは明白である。したがって、添付の特許請求範囲の趣旨および広い範囲内に入るすべてのそのような代替、変更、および変形を包含することが意図される。
【0145】
本明細書において述べたすべての刊行物、特許、および特許出願は、各々個々の出版物、特許、または特許出願が、具体的におよび個々に、参照により本明細書に組み込まれるように示されているのと同じ程度に、それらの全体が参照により本明細書に組み込まれる。加えて、本出願のいかなる参考文献の引用または識別も、そのような参考文献が本発明への先行技術として利用可能であることを認めるものとして解釈されないものとする。セクションの見出しが使用される限り、見出しは必ずしも限定するものと解釈されるべきではない。
【0146】
関連出願
本出願は、35 USC§119(e)の下で、2014年11月25日に出願された米国仮特許出願第62/083,985号および2015年4月14日に出願された米国仮特許出願第62/147,040号の優先権の利益を主張し、これらの内容は全体が参照により本明細書に組み込まれる。
図1A
図1B
図2
図3A
図3B
図4A
図4B