(57)【特許請求の範囲】
【請求項１】
悪意のある通信のためのネットワーク接続の確立の試みの検出および防止のためのコンピュータ実施方法であって、
クライアント端末で実行されるエンドポイントコードによって、前記クライアント端末からサーバへのネットワーク接続の確立のための接続確立プロセスを検出することであり、前記接続確立プロセスが、前記クライアント端末で実行されるコードによって開始される、接続確立プロセスを検出することと、
前記クライアント端末で管理される開始する前記コードの少なくとも１つのスタックトレース内の記録を、前記ネットワーク接続の確立の前、かつ、前記クライアント端末から前記サーバへのデータ通信の前に、前記ネットワーク接続が悪意のあるアクティビティに使用される悪意のある通信を確立する試行を検出するために、前記クライアント端末とネットワーク通信するとともに前記サーバとネットワーク通信するネットワークゲートウェイによって解析することであって、前記解析を実行する中央サーバにおいて有効なものとして指定された感染していないアプリケーションによって使用される接続確立フローデータ解析のために前記少なくとも１つのスタックトレースを解析すること、または、アプリケーションが前記悪意のある通信を確立する前記試行を開始する注入されたコードに感染していない場合に前記アプリケーションによって生成されると予想される接続確立スタックフローデータ解析との少なくとも１つのスタックトレースの比較を含む、解析することと、
前記解析が前記ネットワーク接続に基づいて前記悪意のある通信を確立する前記試行を検出しないとき、前記ネットワークゲートウェイによって、前記クライアント端末から前記サーバへのデータ通信のためのネットワーク接続を確立し、前記解析が前記ネットワーク接続に基づいて前記悪意のある通信を確立する前記試行を検出したとき、前記ネットワークゲートウェイによって、前記ネットワーク接続の確立をブロックすることと、を含む、コンピュータ実施方法。
【請求項２】
前記記録を解析することが、前記少なくとも１つのスタックトレースと、接続確立に関連するスレッドデータ、モジュールデータ、およびプロセスデータからなる群の少なくとも１つのメンバとを含むフローデータを解析することを含む、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記少なくとも１つのスタックトレースに関連するデータが、動的なコードを含む、請求項２に記載のコンピュータ実施方法。
【請求項４】
前記ネットワーク接続に基づく前記悪意のある通信を確立する前記試行が検出されない場合、前記接続確立プロセスに、前記ネットワーク接続のアクティブ化を許可することをさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項５】
前記解析することが、前記ネットワーク接続のアクティブ化の前に実行される、請求項１に記載のコンピュータ実施方法。
【請求項６】
前記少なくとも１つのスタックトレースが、前記接続確立プロセスの開始のためのインターネットプロトコル群の伝送制御プロトコル（ＴＣＰ）に従って実行される接続確立中に収集される、請求項１に記載のコンピュータ実施方法。
【請求項７】
前記検出することの後に前記接続確立プロセスを停止することをさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項８】
前記少なくとも１つのスタックトレースおよび／またはフローデータが、前記接続確立プロセスの開始時に得られる、請求項１に記載のコンピュータ実施方法。
【請求項９】
前記少なくとも１つのスタックトレースが、前記接続確立プロセスの間に多数のポイントで得られた多数のスタックトレースの少なくとも１つのシーケンスを含み、前記解析することが、前記悪意のある通信を確立する前記試行を表すフローデータ解析に前記多数のスタックトレースを突き合わせることを含む、請求項１に記載のコンピュータ実施方法。
【請求項１０】
前記解析することが、開始した前記アプリケーションの感染を表す、未知のモジュールおよびブラックリストもしくはホワイトリストに載ったモジュールの少なくとも一方のための前記少なくとも１つのスタックトレースの前記記録を解析することを含む、請求項１に記載のコンピュータ実施方法。
【請求項１１】
悪意のある通信のためのネットワーク接続の確立の試みの検出のためのシステムであって、
クライアント端末とネットワーク通信するとともにネットワークベースサーバとネットワーク通信する少なくとも１つのネットワークゲートウェイであり、
クライアント端末から前記ネットワークベースサーバへのネットワーク接続を確立するための接続確立プロセスの間クライアント端末で実行されるコードの少なくとも１つのスタックトレースを受信することであって、前記接続確立プロセスは、前記クライアント端末で実行されるエンドポイントコードによって検出され、前記接続確立プロセスは、前記クライアント端末で実行されるコードによって開始される、受信することと、
前記少なくとも１つのスタックトレース内の記録を、前記ネットワーク接続の確立の前、かつ、前記クライアント端末から前記ネットワークベースサーバへのデータ通信の前に、前記ネットワーク通信を悪意のあるアクティビティに使用される悪意のある通信の確立の試行の有無を判定するために、解析することであって、前記解析を実行する中央サーバにおいて有効なものとして指定された感染していないアプリケーションによって使用される接続確立フローデータ解析のために前記少なくとも１つのスタックトレースを解析すること、または、アプリケーションが前記悪意のある通信を確立する前記試行を開始する注入されたコードに感染していない場合に前記アプリケーションによって生成されると予想される接続確立スタックフローデータ解析との前記少なくとも１つのスタックトレースの比較を含む、解析することと、
前記解析が前記ネットワーク接続に基づいて前記悪意のある通信を確立する前記試行を検出しないとき、前記クライアント端末から前記ネットワークベースサーバへのデータ通信のためのネットワーク接続を確立し、前記解析が前記ネットワーク接続に基づいて前記悪意のある通信を確立する前記試行を検出したとき、前記ネットワーク接続を使用して前記悪意のある通信を確立する前記試行を表す信号を生成することと
を行うように構成された、少なくとも１つのネットワークゲートウェイ
を含む、システム。
【請求項１２】
受信することが、少なくとも１つのフローデータを受信することを含み、記録を解析することが、前記少なくとも１つのスタックトレースと、前記ネットワーク接続の確立に関連するスレッドデータ、モジュールデータ、およびプロセスデータからなる群の少なくとも１つのメンバとを含む前記フローデータを解析することを含む、請求項１１に記載のシステム。
【請求項１３】
前記少なくとも１つのネットワークゲートウェイが、ネットワークを通じて前記クライアント端末と通信するリモートサーバに常駐する、請求項１１に記載のシステム。
【請求項１４】
前記少なくとも１つのネットワークゲートウェイが、前記クライアント端末に常駐するソフトウェアモジュールである、請求項１１に記載のシステム。
【請求項１５】
前記少なくとも１つのネットワークゲートウェイがプロキシサーバである、請求項１１に記載のシステム。
【請求項１６】
前記クライアント端末へのインストールのためのエンドポイントモジュールであり、
前記コードによる前記ネットワーク接続の確立の開始を検出し、
前記少なくとも１つのスタックトレースおよび／またはフローデータを前記ネットワークゲートウェイに送信し、
前記ネットワークゲートウェイからの前記信号を受信し、
前記受信した信号に基づいて前記ネットワーク接続のアクティブ化を防止するために前記接続確立プロセスをブロックする
ように構成された、エンドポイントモジュール
をさらに含む、請求項１１に記載のシステム。
【請求項１７】
前記少なくとも１つのネットワークゲートウェイは、受信した前記信号に基づいて、前記ネットワーク接続のアクティブ化を防止するようにさらに構成される、請求項１１に記載のシステム。
【請求項１８】
悪意のあるアクティビティのためのネットワーク接続の確立の試みの検出のためのコンピュータプログラムであって、前記コンピュータプログラムが、
クライアント端末からサーバへのネットワーク接続の確立のための接続確立プロセスを検出するためのプログラム命令であり、前記接続確立プロセスが、クライアント端末で実行されるコードによって開始される、検出するためのプログラム命令と、
前記ネットワーク接続の確立の前、かつ、前記クライアント端末から前記サーバへのデータ通信の前に、前記クライアント端末で管理される開始する前記コードの少なくとも１つのスタックトレース内の記録を、前記ネットワーク接続が悪意のあるアクティビティで使用される悪意のある通信を確立する試行を検出するために、解析するためのプログラム命令であって、前記解析することは、
前記解析を実行する中央サーバにおいて有効なものとして指定された感染していないアプリケーションによって使用される接続確立フローデータ解析のために前記少なくとも１つのスタックトレースを解析すること、または、アプリケーションが前記悪意のある通信を確立する前記試行を開始する注入されたコードに感染していない場合に前記アプリケーションによって生成されると予想される接続確立スタックフローデータ解析との少なくとも１つのスタックトレースの比較を含む、解析することである、プログラム命令と、
前記解析が前記ネットワーク接続に基づいて前記悪意のある通信を確立する前記試行を検出しないとき、前記クライアント端末から前記サーバへのデータ通信のためのネットワーク接続を確立し、前記解析が、前記ネットワーク接続に基づいて前記悪意のある通信を確立する前記試行を検出したとき前記クライアント端末から前記サーバへのデータ通信のための前記ネットワーク接続の確立をブロックするためのプログラム命令と
を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、そのいくつかの実施形態において、悪意のある接続の検出のためのシステムおよび方法に関し、より詳細には、限定ではないが、悪意のあるアクティビティおよび／または通信のためのネットワーク接続を利用する悪意のあるコードの検出のためのシステムおよび方法に関する。
【背景技術】
【０００２】
いくつかのタイプの悪意のあるコードはコンピュータを攻撃し、ネットワーク接続により他のサーバに接続するためにホストコンピュータを使用する。１つの例では、ネットワーク接続は、例えば、盗んだデータをリモートサーバに送るために悪意のあるコード自体によって開始される。別の例では、マルウェアが正当なアプリケーションにコードを注入し、次いで、注入されたコードが、盗んだデータを送信するためにリモートサーバへの接続を開始する。
【０００３】
あるタイプの悪意のある攻撃の１つの例は高度な標的型攻撃（ＡＴＡ）であり、それは、権限を与えられていない当事者がネットワークにアクセスし、長い期間の間検出されないままである巧妙な攻撃である。ほとんどのＡＴＡの意図は、ネットワークに損傷を引き起こすのではなくデータを盗むことである。ＡＴＡは、クレジットカードプロセッサ、政府機関、および金融サービス業などの高い価値の情報を持つ産業部門の組織を標的にする。
【０００４】
アンチＡＴＡ解決策の例は、侵入された悪意のあるコードの攻撃の検出または侵入された悪意のあるコードの検出に基づく。別の例では、他のツールが、動作中に異常なまたは悪意のあるアクティビティを検出するように設計される。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明のいくつかの実施形態の態様によれば、悪意のある通信のためのネットワーク接続の確立の試みの検出および防止のためのコンピュータ実施方法が提供され、この方法には、ネットワーク接続の確立のための接続確立プロセスを検出することであり、接続確立プロセスが、クライアント端末で動作するコードによって開始される、接続確立プロセスを検出することと、悪意のある通信を確立する試行を検出するために、クライアント端末で管理される開始するコードの少なくとも１つのスタックトレース内の記録を解析することであり、ネットワーク接続が悪意のあるアクティビティで使用される、記録を解析することと、解析がネットワーク接続に基づいて悪意のある通信を確立する試行を検出したときネットワーク接続の確立をブロックすることとが含まれる。
【０００６】
任意選択で、記録を解析することが、少なくとも１つのスタックトレースと、接続確立に関連するスレッドデータ、モジュールデータ、およびプロセスデータからなる群の少なくとも１つのメンバとを含むフローデータを解析することを含む。
【０００７】
任意選択で、方法は、各々のそれぞれのクライアントにおいて、少なくとも１つのスタックトレースに関連するデータ、および／またはフローデータを集めることと、各々のそれぞれのクライアントから中央サーバに少なくとも１つのスタックトレースに関連するデータを送信することとをさらに含み、解析することが中央サーバによって実行される。任意選択で、少なくとも１つのスタックトレースに関連するデータは、動的なコードを含む。
【０００８】
任意選択で、方法は、ネットワーク接続に基づいて悪意のある通信を確立する試行が検出されないとき、接続確立プロセスに、ネットワーク接続のアクティブ化を許可することをさらに含む。
【０００９】
任意選択で、解析は、ネットワーク接続のアクティブ化の前に実行される。
【００１０】
任意選択で、解析は、ネットワーク接続がアクティブ化されたときの開始アプリケーションによる悪意のあるアクティビティおよび／または通信関連データの転送の前に実行される。
【００１１】
任意選択で、少なくとも１つのスタックトレースが、接続確立プロセスの開始のためのインターネットプロトコル群の伝送制御プロトコル（ＴＣＰ）に従って実行される接続確立中に収集される。
【００１２】
任意選択で、方法は、検出することの後に接続確立プロセスを停止することをさらに含む。
【００１３】
任意選択で、少なくとも１つのスタックトレースおよび／またはフローデータが、接続確立プロセスの開始時に得られる。
【００１４】
任意選択で、少なくとも１つのスタックトレースが、接続確立プロセスの間に多数のポイントで得られた多数のスタックトレースの少なくとも１つのシーケンスを含み、前記解析することが、悪意のある通信を確立する試行を表すフローデータ解析に多数のスタックトレースを突き合わせることを含む。
【００１５】
任意選択で、解析することが、開始アプリケーションの感染を表す、未知のモジュールおよびブラックリストもしくはホワイトリストに載ったモジュールの少なくとも一方のための少なくとも１つのスタックトレースの記録を解析することを含む。
【００１６】
任意選択で、解析することが、解析を実行する中央サーバにおいて有効なものとして指定された感染していないアプリケーションによって使用される接続確立フローデータ解析のための少なくとも１つのスタックトレースを解析することを含む。
【００１７】
任意選択で、解析することは、アプリケーションが、悪意のあるアクティビティ／通信を確立する試行を開始する注入されたコードに感染していない場合にアプリケーションによって生成されると予想される接続確立スタックフローデータ解析との少なくとも１つのスタックトレースの比較を含む。
【００１８】
本発明のいくつかの実施形態の一態様によれば、悪意のある通信のためのネットワーク接続の確立の試みの検出のためのシステムが提供され、システムには、少なくとも１つのゲートウェイであり、ネットワークベースサーバとのネットワーク接続を確立するための接続確立プロセスの間クライアント端末で動作するコードの少なくとも１つのスタックトレースを受信することと、悪意のある通信を確立する試行の有無を決定するために少なくとも１つのスタックトレース内の記録を解析することであり、ネットワーク接続が悪意のあるアクティビティで使用される、記録を解析することと、記録が悪意のあるフローデータ解析と突き合わされるとき悪意のある通信のためのネットワーク接続の確立の試みを検出することと、ネットワーク接続を使用して悪意のある通信を確立する試行を表す信号を生成することとを行うように構成された少なくとも１つのゲートウェイが含まれる。
【００１９】
任意選択で、受信することが、少なくとも１つのフローデータを受信することを含み、記録を解析することが、少なくとも１つのスタックトレースと、接続確立に関連するスレッドデータ、モジュールデータ、およびプロセスデータからなる群の少なくとも１つのメンバとを含むフローデータを解析することを含む。
【００２０】
任意選択で、少なくとも１つのゲートウェイが、ネットワークを通じてクライアント端末と通信するリモートサーバに常駐する。
【００２１】
任意選択で、少なくとも１つのゲートウェイが、クライアント端末に常駐するソフトウェアモジュールである。
【００２２】
任意選択で、少なくとも１つのゲートウェイがプロキシサーバである。
【００２３】
任意選択で、システムには、クライアント端末へのインストールのためのエンドポイントモジュールであり、コードによるネットワーク接続の確立の開始を検出し、少なくとも１つのスタックトレースおよび／またはフローデータをゲートウェイに送信し、ゲートウェイからの信号を受信し、受信した信号に基づいてネットワーク接続のアクティブ化を防止するために接続確立プロセスをブロックするように構成された、エンドポイントモジュールがさらに含まれる。
【００２４】
任意選択で、少なくとも１つのゲートウェイが、受信した信号に基づいてネットワーク接続のアクティブ化を防止するようにさらに構成される。
【００２５】
任意選択で、システムには、少なくとも１つのゲートウェイと通信する管理サーバであり、各クライアントに関連する各ネットワーク接続要求に対して少なくとも１つのゲートウェイによって生成された信号を収集するように構成された、管理サーバがさらに含まれる。任意選択で、管理サーバは、生成された信号を再調査すること、生成された信号を管理すること、少なくとも１つのゲートウェイの構成を一元的に制御すること、少なくとも１つのゲートウェイと通信する少なくとも１つのクライアント端末の構成を一元的に制御すること、少なくとも１つのゲートウェイの状態をモニタすること、および少なくとも１つのゲートウェイと通信する少なくとも１つのクライアント端末の状態をモニタすることからなる群の少なくとも１つのメンバをユーザが実行できるようにするように構成されたユーザインタフェースをさらに含む。
【００２６】
任意選択で、クライアント端末で動作するアプリケーションがウェブブラウザである。
【００２７】
任意選択で、接続確立プロセスが、ネットワーク接続のためのローカルエンドポイントを表すアプリケーションプログラミングインタフェースによって管理される。
【００２８】
任意選択で、クライアント端末で動作するアプリケーションがハイパーバイザの一部である。
【００２９】
任意選択で、クライアント端末で動作するアプリケーションが、権限を与えられていない悪意のあるアプリケーションである。
【００３０】
任意選択で、システムが、他のクライアント端末からの類似したスタックフローデータ解析を識別するために、悪意のある通信のためのネットワーク接続の確立の識別された試みに関連づけられるスタックフローデータ解析で少なくとも１つのゲートウェイを更新することをさらに含む。
【００３１】
任意選択で、少なくとも１つのゲートウェイが、ネットワーク接続がアクティブであるときアプリケーションの少なくとも１つのスタックトレースを受信し、接続確立後のアクティブなネットワーク接続を使用する悪意のあるアクティビティをモニタするために少なくとも１つのスタックトレース内の記録を解析するようさらに構成される。
【００３２】
任意選択で、少なくとも１つのゲートウェイが、複数のクライアントの各々から複数の少なくとも１つのフローデータを受信し、組織的攻撃を検出するために複数の少なくとも１つのフローデータを解析するようにさらに構成される。
【００３３】
本発明のいくつかの実施形態の一態様によれば、悪意のあるアクティビティのためのネットワーク接続の確立の試みの検出のためのコンピュータプログラム製品が提供され、コンピュータプログラム製品が、１つまたは複数の非一時的コンピュータ可読記憶媒体と、１つまたは複数の記憶媒体のうちの少なくとも１つに格納されたプログラム命令とを含み、プログラム命令には、ネットワーク接続の確立のための接続確立プロセスを検出するためのプログラム命令であり、接続確立プロセスが、クライアント端末で動作するコードによって開始される、接続確立プロセスを検出するためのプログラム命令と、悪意のある通信を確立する試行を検出するために、クライアント端末で管理される開始するコードの少なくとも１つのスタックトレース内の記録を解析するためのプログラム命令であり、ネットワーク接続が悪意のあるアクティビティで使用される、記録を解析するためのプログラム命令と、解析が、ネットワーク接続に基づいて悪意のある通信を確立する試行を検出したときネットワーク接続の確立をブロックするためのプログラム命令とが含まれる。
【００３４】
特に定義されない限り、本明細書で使用される技術用語および／または科学用語はすべて本発明が属する技術分野の当業者によって一般に理解されるのと同じ意味を有する。本明細書で説明する方法および材料と同様のまたは同等の方法および材料を本発明の実施形態の実施または試験で使用することができるが、例示的な方法および／または材料を以下で説明する。矛盾する場合、定義を含む特許明細書が統制することになる。加えて、材料、方法および例は、例示にすぎず、必ずしも限定することを意図していない。
【００３５】
本発明のいくつかの実施形態が、添付図面を参照しながら、単なる例として、本明細書で説明される。次に図面を詳細に具体的に参照すると、図示の詳細は、例としてのものであり、本発明の実施形態の例示的な議論のためのものであることが強調される。この点に関して、図面とともに行われる説明は、本発明の実施形態をどのように実践できるかを当業者に明らかにする。
【図面の簡単な説明】
【００３６】
【図１Ａ】本発明のいくつかの実施形態による、防止がゲートウェイで行われるネットワーク接続の悪意のあるアクティビティの検出のためのコンピュータ実施方法の図である。
【図１Ｂ】本発明のいくつかの実施形態による、防止がクライアントで行われるネットワーク接続の悪意のあるアクティビティの検出のためのコンピュータ実施方法の図である。
【図２】本発明のいくつかの実施形態による、ネットワーク接続の悪意のあるアクティビティの検出およびブロッキングのためのシステムのブロック図である。
【図３Ａ】本発明のいくつかの実施形態による、コールスタックの例の図である。
【図３Ｂ】本発明のいくつかの実施形態による、コールスタックの例の図である。
【図４】本発明のいくつかの実施形態による、スタックデータを収集するコンピュータ化された方法のフローチャートの図である。
【図５Ａ】本発明のいくつかの実施形態による、スレッド関連フローデータを収集するコンピュータ化された方法のフローチャートの図である。
【図５Ｂ】本発明のいくつかの実施形態による、プロセス関連フローデータを収集するコンピュータ化された方法のフローチャートの図である。
【図５Ｃ】本発明のいくつかの実施形態による、モジュール関連フローデータを収集するコンピュータ化された方法のフローチャートの図である。
【発明を実施するための形態】
【００３７】
本発明は、そのいくつかの実施形態において、悪意のある接続の検出および防止のためのシステムおよび方法に関し、より詳細には、限定ではないが、悪意のあるアクティビティおよび／または通信のためのネットワーク接続を利用する悪意のあるコードの検出のためのシステムおよび方法に関する。
【００３８】
本発明のいくつかの実施形態の一態様は、悪意のあるアクティビティ／通信のためのネットワーク接続の確立の試みの検出のためのシステムおよび／または方法に関する。クライアント端末での接続確立は、多数の接続されたクライアントの各々が、接続確立プロセスに関連する１つまたは複数のローカルコールスタックを表すデータおよび任意選択のオペレーティングシステムデータをゲートウェイサーバに解析のために送信することに基づいて、中央ゲートウェイでモニタされる。関連するプロセス、モジュール解析データ、クライアント端末における動的に生成されたコードおよび／またはスレッド相互作用のうちの１つまたは複数によって任意選択でエンリッチされた接続確立コールスタックが、悪意のあるコードを識別するためにモニタおよび／または解析される。本明細書で説明するフローデータという用語は、クライアント端末で収集される説明したデータを意味し、それは、コールスタックデータ、および任意選択で、プロセスデータ、モジュール解析データ、および／またはスレッドデータのうちの１つまたは複数を含む。
【００３９】
接続確立プロセスに関連する悪意のあるアクティビティを識別した際、接続確立プロセスは停止および／または終了する。ネットワーク接続は確立するのを防止される。リモートサーバとローカルな悪意のあるエージェントとの間のネットワーク接続によるデータ送信は防止される。このようにして、ネットワークを通じた悪意のあるデータ送信は、悪意のあるエージェントがネットワーク接続を使用して、損傷を引き起こす、例えば、リモートサーバからデータを盗む、または盗んだデータをローカルクライアントからリモートサーバに送信できるようになる前に、停止される。アクティブネットワーク接続が確立された場合に、ネットワーク接続は、悪意のあるアクティビティの出現に対してモニタされる。悪意のあるアクティビティが識別されると、アクティブ接続を遮断またブロックすることができる。
【００４０】
悪意のあるコードに感染したアプリケーション、または悪意のあるコードアプリケーション自体が、ネットワーク接続の確立を、例えば、オペレーティングシステムのインタフェースプログラム（例えば、ソケット）によって開始することがある。悪意のある通信のための接続確立アクティビティは、ネットワーク接続のファイナライズされたセットアップがローカルアプリケーションへのおよび／またはローカルアプリケーションからのデータ送信を行う前に識別される。開始アプリケーションに関連するフローデータは、確立要求の検出、確立開始の際、および／または接続確立プロセス自体の間に、例えば、インターネットプロトコル（ＩＰ）群の伝送制御プロトコル（ＴＣＰ）のマルチステップハンドシェイクプロセスの前および／またはその間に、解析することができる。
【００４１】
本発明の少なくとも１つの実施形態を詳細に説明する前に、本発明は、その適用において、以下の説明に記載され、および／または図面および／または実施例に示される構成要素および／または方法の構築および配列の詳細に必ずしも限定されないことを理解されたい。本発明は、他の実施形態が可能であり、または様々な方法で実践もしくは実行することが可能である。
【００４２】
本発明は、システム、方法、および／またはコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する１つのコンピュータ可読記憶媒体（または複数の媒体）を含むことができる。
【００４３】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、磁気記憶デバイス、半導体記憶デバイス、または前述のものの任意の好適な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の包括的でないリストは、以下のものを含む。ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、および前述のものの任意の好適な組合せ。本明細書で使用するコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波路または他の伝送媒体を通って伝搬する電磁波（例えば、光ファイバケーブルを通過する光パルス）、またはワイヤを通して伝送される電気信号などの一時的な信号自体であると解釈されるべきでない。
【００４４】
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、またはネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および／またはワイヤレスネットワークを介して外部コンピュータもしくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および／またはエッジサーバを含むことができる。各コンピューティング／処理デバイスのネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【００４５】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはＳｍａｌｌｔａｌｋ、Ｃ＋＋などのようなオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組合せで書かれたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、ユーザコンピュータで全面的に、ユーザコンピュータで部分的に、スタンドアロンソフトウェアパッケージとして、ユーザコンピュータで部分的におよびリモートコンピュータで部分的に、またはリモートコンピュータもしくはサーバで全面的に実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む任意のタイプのネットワークによってユーザコンピュータに接続されてもよく、または外部コンピュータへの接続がなされてもよい（例えばインターネットサービスプロバイダーを使用するインターネットを通して）。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個人専用にすることができる。
【００４６】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータプログラム製品のフローチャート図および／またはブロック図を参照して本明細書で説明される。フローチャート図および／またはブロック図の各ブロック、およびフローチャート図および／またはブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装できることを理解されよう。
【００４７】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、または機械を生み出す他のプログラマブルデータ処理装置のプロセッサに供給して、その結果、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて特定された機能／動作を実施するための手段を作り出すことができる。これらのコンピュータ可読プログラム命令は、さらに、コンピュータ、プログラマブルデータ処理装置、および／または他のデバイスに、特定な方法で機能するように指示することができるコンピュータ可読記憶媒体に格納することができ、その結果、命令が中に格納されたコンピュータ可読記憶媒体は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて特定された機能／動作の態様を実施する命令を含む製品を含む。
【００４８】
コンピュータ可読プログラム命令を、さらに、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードして、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイスに実行させ、それによって、コンピュータ実施プロセスを発生し、その結果、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令は、フローチャートおよび／またはブロック図の１つまたは複数のブロックにおいて特定された機能／動作を実施する。
【００４９】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品のあり得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための１つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部分を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われることがある。例えば、連続して示された２つのブロックは、関係する機能に応じて、実際には実質的に同時に実行されることがあり、またはブロックは時には逆の順序で実行されることがある。ブロック図および／またはフローチャート図の各ブロック、およびブロック図および／またはフローチャート図のブロックの組合せは、特定の機能もしくは動作を実行するかまたは専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースシステムによって実装されてもよいことにも留意されたい。
【００５０】
本明細書で定義する接続確立という用語は、特定のアプリケーションがネットワーク接続を通じてデータを送信および／または受信できるようになる前に行われるコンピュータ化されたプロセスを意味する。接続確立プロセスは、特定のアプリケーションから開始コマンドを受信するアプリケーションプログラミングインタフェースによって管理および／または実行し、接続を確立し、確立された接続通じて送信するために特定のアプリケーションからデータを受信し、および／または確立された接続を通じて受信した特定のアプリケーションにデータを送信することができる。
【００５１】
次に、本発明のいくつかの実施形態による、防止がゲートウェイで行われる場合の悪意のあるアクティビティおよび／または通信のためのネットワーク接続の検出のためのコンピュータ実施方法のフローチャートである図１Ａを参照する。本発明のいくつかの実施形態による、悪意のある通信のためのネットワーク接続の検出および防止のためのシステムである図２をさらに参照する。図２を参照して説明するシステムは、図１Ａを参照して説明する方法を実行することができる。システムおよび／または方法は、悪意のあるアクティビティおよび／または悪意のあるエージェントに関連づけられる通信のためのネットワーク接続の確立の試みを検出し、悪意のあるエージェントがデータ送信および／または受信に基づいて悪意のあるアクティビティのためにネットワーク接続を利用できるようになる前に接続確立プロセスを停止しおよび／または早期に終了する。このようにして、ネットワーク接続を通じて悪意のあるエージェントによって実行されるリモートコマンドが防止される。例えば、悪意のあるエージェントの制御下でネットワーク接続を通じてデータを送信することによるデータ（例えば、バンキング詳細、クレジットカード番号、財務詳細、軍事情報、秘密情報、および機密情報）の盗難が防止される。別の例では、悪意のあるエージェントによるネットワーク接続によってリモートコンピュータのデータの変更および／または消去が防止される。さらなる別の例では、悪意のあるエージェントは、追加の命令を得るためにリモートサーバにアクセスすることができない。
【００５２】
コンピュータ（例えば、クライアントおよび／またはサーバ）が悪意のあるエージェントに感染したとき、システムおよび／または方法は、悪意のあるエージェントがネットワーク接続を通じて悪意のあるアクティビティを実行しないようにする。システムおよび／または方法は追加のセキュリティのレベルを用意し、未検出および／または未知の悪意のあるエージェントに既に感染したコンピュータが、ネットワーク接続を使用するアクティビティに基づいて、他のリモートコンピュータおよび／またはローカルコンピュータ自体に損傷を引き起こさないようにする。
【００５３】
システムおよび／または方法は、ネットワーク接続を確立するためのセキュリティ手段をバイパスすることがあるオペレーティングシステムの権利で動作する悪意のあるエージェント、例えば、ハイパーバイザの悪意のあるコードを検出することができる。そのような悪意のあるエージェントは、オペレーティングシステム機能を使用することなく、および／またはエンドポイントモジュールをディスエーブルおよび／またはバイパスすることによって、接続を確立しようと試みることがある。これらの試みは、ゲートウェイによってモニタされた接続確立要求がエンドポイントモジュールによってエンリッチおよび／または署名されないのでゲートウェイによってブロックされる。
【００５４】
悪意のあるエージェントに関連づけられたネットワーク接続を設定しようとする試みを検出すると、普通なら識別することが困難である、および／または普通なら損傷が既に生じた後に識別される悪意のあるエージェントおよび／または悪意のあるアクティビティを識別することが可能になる。例えば、いくつかの悪意のあるエージェントは、アイドル時には検出が困難であるかまたは検出できず、アクティブ時にのみ検出される。そのような場合、システムおよび／または方法は、ネットワーク接続を通じて損傷を受ける前に、悪意のあるアクティビティを接続確立プロセスの一部として検出する。
【００５５】
システムおよび／または方法は、権限を与えられていないコードの実行（すなわち、攻撃者が、悪意のあるコードを実行するためにアプリケーションを支配する）に基づく悪意のあるアクティビティおよび／または通信のためのネットワーク接続の確立の試みを、ネットワーク接続によって損傷が生じる前に識別することができる。そのような権限を与えられていないコードの実行は、普通なら、損傷を受ける前に検出することが困難であり得る。
【００５６】
悪意のあるアクティビティおよび／または通信のためのネットワーク接続の確立の試みは、特定の感染性の悪意のあるコードエージェントを必ずしも識別することなく検出され停止され得る。このように、未知の悪意のあるエージェントが、悪意のあるアクティビティを実行するためにネットワーク接続にアクセスしないようにすることができる。
【００５７】
任意選択で、悪意のある活動および／または通信のための接続を検出するためのシステムおよび／または方法は、例えば、システム２００内にインストールされる。
【００５８】
システム２００は、少なくとも１つのクライアント２０２、例えばラップトップ、デスクトップ、モバイルデバイス（例えば、スマートフォン、タブレット）、および／またはサーバを含む。クライアント２０２は、クライアント２０２からのおよび／またはクライアント２０２へのデータ送信のための新しいネットワーク接続を開始することができるエンドポイントクライアントである。エンドポイントクライアント２０２はサーバとすることができる。
【００５９】
クライアント２０２は、ネットワーク接続機能、例えば、ネットワークインタフェース、送信機、および／または受信機を含む。クライアント２０２は、１つまたは複数のネットワーク２０６、例えば、ワイヤレスネットワーク、有線ネットワーク、セルラネットワーク、インターネット、プライベートネットワーク、およびそれらの多数のネットワークの組合せを通してリモートサーバ２０４と通信することができる。
【００６０】
任意選択で、エンドポイントモジュール２０８Ａが、１つまたは複数のクライアント２０２の（または１つまたは複数のクライアント２０２と通信する）メモリにインストールされる（例えば、プリインストールされる、クライアントで動作するオペレーティングシステムと統合される、および／またはリモートサーバまたはローカルメモリからダウンロードされ、ローカルにインストールされる）。任意選択で、エンドポイントモジュール２０８Ａは、本明細書で説明するように、クライアント２０２のプロセッサによる実行のためのプログラム命令と、クライアント２０２の接続確立関連アクティビティをモニタするためのプログラム命令とを含む。代替としてまたは追加として、モジュール２０８Ａは、ゲートウェイ２１０によって指示されるような機能を実行し、例えば、接続確立を停止し、および／または接続確立を可能にする。
【００６１】
ゲートウェイ２１０は、本明細書で説明するように、クライアント２０２からの接続確立関連データを受信し、データを解析し、悪意のある活動および／または通信のためのネットワーク接続の確立の試みを識別する。任意選択で、ゲートウェイ２１０は、ネットワーク接続の確立を開始するクライアント２０２の特定のアプリケーションと、ネットワーク接続の確立を制御するインタフェースとの間の仲介物として働くプロキシサーバである。ゲートウェイ２１０は、接続確立の状態を示す警報信号の直接制御および／または生成によって、接続確立を停止するかまたは接続確立の継続を許可する。
【００６２】
ゲートウェイ２１０は、コンピュータへのインストールのためのソフトウェアモジュール、および／または他のコンピュータとの通信のためのハードウェア機器とすることができる。代替としてまたは追加として、ゲートウェイ２１０は、多数のクライアント２０２からデータを受信するためにインストールされる。ゲートウェイ２１０は、ネットワーク２０６を通じてクライアント２０２と通信するネットワーク２０６内にインストールされてもよく、例えば、ゲートウェイ２１０は、リモートサーバ、クライアント２０２とネットワーク２０６との間のインタフェース（例えば、ネットワークインタフェースデバイス）におけるプライベート組織ネットワーク内などの事前定義されたグループのクライアント２０２との通信のためのローカルにインストールされたサーバとしてもよく、および／またはネットワーク２０６自体内に、例えば、内部および／または境界ネットワークデバイス（例えば、層２デバイス、層３デバイス、ルータ、ゲートウェイ、およびブリッジ）内にインストールされてもよい。
【００６３】
１つまたは複数の悪意のあるエージェント２１２が、クライアント２０２に感染する。クライアントの感染はインストールの前に生じることがあることに留意されたい。
【００６４】
悪意のあるエージェント２１２は、リモートの悪意のある宛先サーバ２１４へのネットワーク２０６を通じた接続を確立するためのプログラム命令、および／またはクライアント２０２とリモートの正当なサーバ２０４との間のネットワーク２０６を通じた接続を利用するためのプログラム命令を含むことがある。
【００６５】
悪意のあるエージェント２１２の１つの例は、動的にリンクされるライブラリの注入である。動的にリンクされるライブラリの注入は、例えば、動的にリンクされるライブラリをロードし実行するようにプロセスに強制することによって、別のプロセスのアドレス空間内でコードを動作させるために使用される技法である。動的にリンクされるライブラリの注入は、別のプログラムの挙動に影響を及ぼすために、プログラムの著者が予想または意図しなかった方法で外部プログラムによって使用されることがある。ハッカーは、動的にリンクされるライブラリの注入の技法を利用し、感染したペイロードをエンドポイントアプリケーションに注入して、オリジナルのアプリケーションを悪意を持って操ることがある。例えば、Ｚｅｕｓは、金融機関向けネットワーク接続をハイジャックして顧客情報および／または金銭を盗むためにインターネットブラウザアプリケーションへの動的にリンクされるライブラリの注入を使用する、トロイの木馬の形態の悪意のあるエージェントである。Ｚｅｕｓは、ウェブブラウザによってアクセスされるネットワーク接続およびデータをモニタおよび操作するために、ＨＴＴＰハンドリング機能をフックすることによって働く。
【００６６】
悪意のあるエージェント２１２の別の例は、バイパス検出である。特定の悪意のあるコードは、オペレーティングシステムおよび／またはより高いレベルのプログラム、例えば、ハイパーバイザの悪意のあるコードの特権で動作するようにプログラムされる。そのような悪意のあるコードは、セキュリティ対策を容易にバイパスし、ネットワーク接続を意のままに確立する。
【００６７】
悪意のあるエージェント２１２のさらなる別の例は、権限を与えられていないコードの実行である。権限を与えられていないコードの実行は、攻撃者が悪意のある動作を使用してプログラムのコードの実行を制御し、それによって、攻撃者自身の悪意のあるコードを実行するときに行われる。悪意のあるコードは、影響を受けたエンドポイントクライアントのバックグラウンドで動作する悪意のあるコードのアプリケーションとして実行され、ハッカーがクライアントを悪意を持って操れるようにする。
【００６８】
悪意のあるエージェント２１２の他の例には、ウィルス、ワーム、トロイの木馬、スパイウェア、およびアドウェアが含まれる。悪意のあるエージェント２１２は、実行可能コード、スクリプト、アプリケーション、および他のソフトウェアとしてインストールされ得る。
【００６９】
図１Ａおよび図１Ｂを参照すると、クライアントに存在するブロックは、図２のクライアント２０２に存在することができ、ゲートウェイ内に存在するブロックは、図２のゲートウェイ２１０に存在することができる。
【００７０】
１０２において、接続確立の試みが検出される。任意選択で、クライアント端末で動作するアプリケーションによりネットワークベースサーバへのネットワーク接続を確立するための開始コメント（例えば、要求）が検出される。アプリケーションは、本明細書で説明するように、悪意のあるコード２１２に感染する可能性がある。
【００７１】
任意選択で、アプリケーションおよび／またはクライアントが、ネットワーク接続の確立の試みを検出するためにモニタされる。例えば、エンドポイントモジュール２０８Ａは、ネットワーク２０６を通じて接続を確立するためのアプリケーションおよび／またはコード２０８Ｃ（クライアント２０２にインストールされたおよび／またはクライアント２０２と通信する）による試みを検出するためにクライアント２０２をモニタする。
【００７２】
任意選択で、ネットワーク接続が、新しい接続として確立されるように試みられる。代替として、ネットワーク接続は、非アクティブ化および／または保留された前の接続の再確立となるように試みられる。
【００７３】
アプリケーションは、信頼のできるソース、例えば、リモートの正当なサーバ２０４（例えば、それからデータが盗まれる）へのネットワーク接続を確立しようと試みることがあり、および／または悪意のあるソース、例えば、悪意のある宛先サーバ２１４（例えば、それに盗まれたデータが送信される、および／またはそれがリモートの悪意のあるコントローラとして働く）へのネットワーク接続を確立しようと試みることがある。
【００７４】
ネットワーク接続を確立しようと試みる悪意を持って感染させられるアプリケーションおよび／または悪意のあるコード２０８Ｃの例には、ウェブブラウザ、インスタントメッセージングアプリケーション、ワードプロセッシングアプリケーション、画像編集アプリケーション、音楽アプリケーション、アプリケーション内にインストールされたアップデートモジュール、オペレーティングシステム自体、リモートコンピュータ制御アプリケーション、およびデータ同期アプリケーションが含まれる。感染させられたアプリケーションおよび／または悪意のあるコード２０８Ｃは、本明細書で説明するように、例えば、仮想マシンを作り出しおよび／または動作させるハイパーバイザまたは仮想マシンモニタの一部であることがある。クライアント２０２は仮想マシンホストを含むことができる。例えば、感染させられたアプリケーションおよび／または悪意のあるコード２０８Ｃは、本明細書で説明するように、例えば、権限を与えられていない悪意のあるアプリケーションの一部であることがある。感染させられたアプリケーションおよび／または悪意のあるコード２０８Ｃは、接続確立を管理するアプリケーションプログラミングインタフェースの一部、例えば、ソケットであることがある。
【００７５】
任意選択で、開始メッセージ（例えば、要求）および／または接続確立が、クライアント端部において、例えば、エンドポイントモジュール２０８Ａによって検出される。要求は、接続確立の試みの受信した通知に基づいて、例えば、クライアントの通信のためのローカルエンドポイントを表すアプリケーションプログラミングインタフェース、例えば、インターネットソケットなどのネットワークソケットにアプリケーションがコマンドを発行することに基づいて、クライアントのオペレーティングシステムに関連して検出することができる。コマンドは、新しいネットワークソケットを作り出すもの、および／または新しいネットワークソケットの生成の後の信号を作り出すものとすることができる。別の例では、要求は、以前は作り出されたソケットにアプリケーションがコマンドを発行することに基づいて検出することができる。クライアント端部での検出は、悪意のあるエージェントがクライアントの外にあるサーバと接続を確立しないようにする。
【００７６】
任意選択で、ネットワーク確立プロセスは、リモートサーバとのパラメータネゴシエーティングプロセス、例えば、ＴＣＰに基づく、例えばハンドシェーキングプロセスに基づく。代替としてまたは追加として、ネットワーク確立プロセスは、ネゴシエーティングプロセス、例えば、ユーザデータグラムプロトコル（ＵＤＰ）に基づく、例えば、コネクションレスネットワーク接続に基づかない。
【００７７】
１０４において、スタックデータは、例えば、図４を参照しながら以下で説明するように収集される。
【００７８】
任意選択で、１０６において、例えば、図５Ａ、図５Ｂ、および図５Ｃを参照して以下で説明するように、スレッド、プロセス、および／またはモジュールに関連するフローデータなどの追加のフローデータ２０８Ｄが、ネットワーク接続の確立を開始するコマンドの間に得られる。
【００７９】
１０８において、接続確立プロセスに関連するコールスタック２０８Ｂのデータ（ブロック１０４の）を含み、および追加フローデータ（ブロック１０６の）を任意選択で含むフローデータが、例えば、クライアント２０２内のスタックデータおよび／または他のフローデータにアクセスできるエンドポイントモジュール２０８Ａによってゲートウェイ２１０に送信される。
【００８０】
１１０において、ゲートウェイは、クライアントによって送信されたフローデータを受信する。データ送信は、ネットワークを通じて行うことができる。
【００８１】
１１２において、データを解析して、悪意のあるアクティビティおよび／または通信のための接続の確立の試みを検出する。データは、クライアント端末で実行されるプロセス、スレッド、モジュール、および動的コードを表すフローデータ内の記録を含むことができる。
【００８２】
記録を解析して、ネットワーク接続が悪意のあるアクティビティのために、例えば、データを盗むために使用される悪意のあるアクティビティおよび／または通信を確立する試行の有無を検出する。
【００８３】
悪意のある通信を確立する試行は、記録が不法のフローデータを表しているとき、悪意のあるアクティビティおよび／または通信のためのネットワーク接続の確立の試みを検出することによって識別することができる。
【００８４】
解析は、悪意のあるアクティビティおよび／または通信のための接続の確立の試みを検出するためにゲートウェイ２１０がスタックデータを解析するによって実行され、悪意のある通信の有無を表す信号を生成することができる。
【００８５】
任意選択で、スタックトレースは、ネットワーク接続を確立しようと試みるアプリケーションに関連するコールスタックから得られる。スタックトレースは、接続確立に関連するコールスタック内のモジュールのシーケンスのパターンおよび／またはスナップショットを含む。例えば、スタックトレースは、トレースが得られる時点のコールスタック内のモジュールを含む。モジュールは、コールスタック内の表示、例えば、モジュールを指し示すコールスタック内のポインタに基づいて引き出すことができる。
【００８６】
１つまたは多数のスタックトレースは、接続確立プロセスの開始の要求中におよび／または接続確立プロセス中に、１つまたは多数の時点で得ることができる。接続確立プロセス中に多数の時点で捕捉された多数のスタックトレースは、要求および／または接続確立プロセス中に生じるスタックの変化を捕捉するように選択される。
【００８７】
解析は、アプリケーションとリモートサーバまたは悪意のあるサーバとの間のデータ通信、例えば、開始アプリケーションによるネットワークを通じたデータの転送などの前に実行される。任意選択で、解析は、ネットワーク接続の確立の前に実行される。代替としてまたは追加として、解析は、ネットワークセッションのアクティブ化の前に実行される。このようにして、悪意のあるエージェントがネットワーク接続によって行動することができる前に、例えば、権限を与えられていないデータの送信（すなわち、データの盗み）の前に、接続確立プロセスの妥当性を決定することができる。
【００８８】
クライアントで動作するアプリケーションが感染し（例えば、注入されたコードに基づいて）、感染したコードに基づいて外部接続を確立しように試みるとき、接続確立スタックコールは、感染していないときの同じアプリケーションのスタックコールと異なる。
【００８９】
解析は、悪意のあるアプリケーションがないときのコールスタックフローデータ解析と異なるフローデータ解析のために、ネットワーク接続を確立しようと試みる悪意のあるアプリケーションが接続確立プロセスに関連するコールスタックをもたらすことに基づいて実行される。
【００９０】
解析は、１つの方法または多数の方法に基づいて並列にまたは逐次的に実行される。解析は、本明細書で説明するように、接続確立関連スタック２０８Ｂデータおよび／またはフローデータ２０８Ｄを含むクライアント２０２から受信したメッセージに基づいて、ゲートウェイ２１０によって実行される。解析は、本明細書で説明するように、ネットワークを通じたアプリケーション２０８Ｃによるデータ送信の前に、接続確立プロセスの前におよび／または接続確立プロセス中に実行される。解析方法のいくつかの例は次のものを含む。
【００９１】
＊悪意のある接続を確立する試行を表すフローデータ解析にスタックトレースを突き合わせるおよび／または相関させること。
【００９２】
＊有効なモジュールの事前定義されたホワイトリスト内にない未知のモジュールを識別するためにホワイトリストに対してスタック内のモジュールを比較するおよび／または相関させること。未知のモジュールは、開始アプリケーションの悪意のある感染であるとの疑いがある。有効なモジュールは、例えば、管理者によって手動で、悪意のあるコードの防止サーバからダウンロードして、および／または感染していないアプリケーションからの機械学習に基づいて有効であるとして指定され得る。
【００９３】
＊スタック内の悪意のあるモジュールを識別するために既知の悪意のあるモジュールの事前定義されたブラックリストに対してスタック内のモジュールを比較するおよび／または相関させること。
【００９４】
＊類似したまたは等価な既知の安全なパターンなどの有効な接続確立フローデータ解析に対してスタックトレース内のモジュールのフローデータ解析を比較するおよび／または相関させること。モジュールのフローデータ解析は、スタック内のモジュールの順序および／またはスタック内で生じる変化を含むことができる。
【００９５】
＊悪意のあるアクティビティに関連づけられるトレースに文書化された固有のイベントを識別すること。
【００９６】
＊アプリケーションが感染していなかったときにアプリケーションで生成されたと予想される接続確立スタックフローデータ解析に対してスタックデータを比較するおよび／または相関させること。例えば、アプリケーションを使用して悪意のあるアクティビティおよび／または通信のための接続を確立しようと試みる注入されたコードに感染する。
【００９７】
＊スタック内のモジュールが未知のモジュールのコードによってロードされなかったことを検証すること。未知のモジュールとの関連づけは、悪意のあるコードを示唆する。
【００９８】
＊プロセスにおけるコーリングスレッドまたは他のスレッドが未知のモジュールのコードによって作り出されなかったことを検証すること。未知のモジュールとの関連づけは、悪意のあるコードを示唆する。
【００９９】
＊プロセス実行可能ファイルフォーマットを検証すること。無効のフォーマットは悪意のあるコードに関連づけられ得る。
【０１００】
多数のクライアントを一緒にモニタすることができる。多数のゲートウェイからのモニタリングデータを一緒に解析することができる。ゲートウェイにおいて多数のクライアントから収集されたスタックデータおよび／または多数のゲートウェイからのデータを一緒に解析して、悪意のあるアクティビティ、例えば、クライアントからクライアントへと拡散するマルウェア感染のパターン、および／または短期間内に単一のターゲットサーバおよび／または多数のターゲットサーバへのネットワーク接続を確立する多数のクライアントからの組織的攻撃の確立を識別する。
【０１０１】
比較は、類似したパターンとの直接の比較に基づいて実行することができる。相関は、悪意のあるアクティビティとの統計的に有意な相関関連、および／または有効な安全アクティビティとの統計的に有意な関連を識別するために実行することができる。
【０１０２】
比較および／または相関は、例えば、関数によって、またはスタックトレースフローデータ解析を入力として受け入れ、悪意のある挙動の存在もしくは悪意のある挙動の不在を示す信号を出力するように訓練された分類器によって、実行することができる。
【０１０３】
次に、本発明のいくつかの実施形態による接続確立プロセスに関連するコールスタックの例である図３Ａ〜図３Ｂを参照する。分かりやすくするために、図は部分的トレースを示す。
【０１０４】
図３Ａは、接続を確立しように試みる、例えば、金融および／または銀行ウェブサイトに接続しようと試みる感染したウェブブラウザのコールスタック３０２を示す。コールスタック３０２は、感染していないウェブブラウザに対して期待される有効な接続確立関連スタックを表すコールスタック３０４との比較によって解析される。解析は、特定のファイル３０８（すなわち、ｓｈｌｗａｐｉ．ｄｌｌ）が欠けており、未知のモジュール３０６Ｂへのコードポインタが存在することを検出する。フローデータ解析に基づいて、悪意のあるコード疑われる。
【０１０５】
図３Ｂは、権限を与えられていないコードの実行を使用して攻撃者に接続するためのネットワーク接続を確立しようと試みている感染したワードプロセッシングプログラムのコールスタック３１２を示す。スタック３１２は未知のコード３１６を含む。それに比べて、コールスタック３１４は、ワードプロセッシングプログラムが感染していないときのネットワーク接続を確立しようとする試みの間のワードプロセッシングプログラムのコールスタックである。コールスタック３１４は、感染したコールスタック３１６に存在しないモジュール３１８（すなわち、ＭＳＯ．ｄｌｌ）へのポインタを含む。
【０１０６】
ブロック１１４において、解析の結果は、ゲートウェイの内部のメモリまたはゲートウェイに接続されたメモリに格納される。
【０１０７】
１１６において、ネットワーク接続の試みに関連するデータが、クライアントからゲートウェイにネットワークを通じて送信される。任意選択で、ブロック１０２が完了し、ネットワーク接続が、データ送信を可能にするためにアクティブ化される。データ（例えば、パケットなどのネットワークメッセージ）が、アクティブなネットワークを通じてクライアントからゲートウェイに送信される。初めに、通信確立プロトコルに関連するパケットが、例えばＴＣＰハンドシェイクプロセスに基づいて送信される。任意選択で、データパケットは、接続を通じて、続いておよび／または逐次的に送信される。
【０１０８】
１１８において、ネットワーク接続の試みに関連して送信されたデータ、および／またはアクティブ化にされたネットワークを通じて送信されたデータが、ゲートウェイで受信される。
【０１０９】
１２０において、ブロック１１４の格納された結果にアクセスして、受信したデータ（例えば、パケット）が悪意のあるアクティビティに関連づけられているどうか、または受信したデータが許可されるとして検証されたかどうかを決定する。
【０１１０】
任意選択で、１２２において、悪意のある通信の確立の試みが検出されたとき、接続確立プロセスはゲートウェイ自体でゲートウェイによってブロックされる。悪意のあるアクティビティおよび／または通信のためのネットワーク接続の確立が防止される。ハンドシェーキングパケットが悪意のあるアクティビティに関連づけられるとして識別されたときなどにネットワーク接続がアクティブ化されないようにすることができる。代替としてまたは追加として、アクティブなネットワーク接続は、悪意のあるアクティビティに関してモニタされ、悪意のあるアクティビティが検出されるとブロックされる。例えば、ネットワーク接続が、ハンドシェイクプロセスを必要としないコネクションレスプロトコル、例えば、ユーザデータグラムプロトコル（ＵＤＰ）などに基づく場合、送られたパケットのすべて（または送られたパケットの選択されたサブセット）をモニタするか、または送られたスレッド当たり少なくとも最初のパッケージまたはいくつかのパケットをモニタすることができる。
【０１１１】
終了は、ゲートウェイ２１０によって、接続確立プロセスに関連するパケットが送出されないようにすることにより、および／または接続確立を終了するためのメッセージを発行することにより実行され得る。ネットワーク接続をブロックしてもよく、またはネットワーク接続を終了してもよい。
【０１１２】
任意選択で、１２４において、悪意のある通信の確立の試みの検出を示す警報が生成される。警報は、ユーザに提示されてもよく（例えば、クライアント２０２に接続されたディスプレイに表示されてもよく）、および／または管理者に提示されてもよい（例えば、ゲートウェイ２２２または第三者イベント管理プラットホームに接続されたディスプレイに表示されてもよい）。ユーザは、さらなる処置を講じることができ、例えば、悪意のある通信を受け取ったことを通知することができ、任意選択で、悪意のあるコードの対策プログラムを動作させてクライアントから感染エージェントを除去することができる。代替としてまたは追加として、警報メッセージは、悪意のあるコードの除去をトリガすることができる悪意のあるコード対策の他の製品によって受信されるようにフォーマットされる。
【０１１３】
代替として、１２６において、接続確立が、悪意のあるものとして識別されず、および／または安全であるとして検証されると、接続確立プロセスは、ネットワーク接続を確立し続け、ネットワーク接続をアクティブ化し、および／またはアクティブ化されたネットワークを通じてデータ送信を許可し続けることを許される。エンドポイントモジュール２０８Ａおよび／またはゲートウェイ２１０は、接続確立を許可するための信号を生成することができる。解析が進むようにするために接続確立が停止された場合、エンドポイントモジュール２０８Ａおよび／またはゲートウェイ２１０は接続確立を再開することができる。
【０１１４】
任意選択で、１つまたは複数のブロック１０４〜１２６を繰り返して、アクティブ化されたネットワーク接続をモニタする。任意選択で、スタックおよび／または他のフローデータが、悪意のあるアクティビティのためのネットワーク接続の確立の後にモニタされる。任意選択で、スタックは、クライアントがスタックデータをゲートウェイに送ることによってモニタされる。
【０１１５】
スタックは、例えば、事前定義された期間の間、および／または選択されたイベント（例えば、ネットワーク接続の構成の変更）の間、連続的に、モニタすることができる。
【０１１６】
ネットワーク接続は、疑わしい悪意のある挙動に対してモニタすることができる（例えば、ゲートウェイによって）。疑わしい挙動の検出に際して、管理者は、解析のために追加情報を送信するようにクライアントにコマンドを発行することができる。例えば、感染したプロセスのメモリダンプ。
【０１１７】
スタックデータは、例えば、ネットワーク接続が稼働している間連続的に、クライアントで記録されてもよい。スタックの記録は、解析のためにゲートウェイに定期的に送信することができる。
【０１１８】
任意選択で、接続確立モニタリングに関連するデータが収集および／または解析される。データは、例えば、コールスタックトレース、各ネットワーク接続確立の試みに対する悪意のある通信の有無を表す信号および／またはメッセージ、および／または生成された警報を含む。データは、エンドポイントモジュール２０８Ａおよび／またはゲートウェイ２１０から管理サーバ２２０に送信することができる。
【０１１９】
ブロック１１６〜１２６の接続確立後のモニタリングに関連するデータは、ゲートウェイ２１０で収集および／または解析し、解析のための管理サーバ２２０に送信することができる。
【０１２０】
管理サーバ２２０は、１つまたは多数のゲートウェイ２１０および／またはクライアント２０２と通信する（例えば、ネットワーク２０６を通して）。管理サーバ２２０は、例えば総合的解析を行うために、多数のゲートウェイおよび／またはクライアントからのデータをアグリゲートすることができる。代替としてまたは追加として、管理サーバ２２０は、例えば、特定のクライアントに対する解析を行うために単一のクライアントの単一ユーザに対するデータを収集することができる。
【０１２１】
任意選択で、管理サーバ２２０は、ユーザが１つまたは複数の機能を実行できるようにするユーザインタフェースモジュール２２２を含む。ユーザは、例えば、ネットワーク接続を通じてウェブブラウザを通してユーザインタフェース２２２にアクセスすることができる。データは、多数のクライアントおよび／またはゲートウェイに、またはクライアントおよび／またはゲートウェイごとに一元的に調査および／または解析することができる。
【０１２２】
管理サーバ２２０および／またはユーザインタフェース２２２は以下の機能のもう１つを実行する。
【０１２３】
＊生成された信号をゲートウェイで再調査する：警報は悪意のある通信の試みを示し、および／またはメッセージは悪意のある通信の試みがないことを示す。
【０１２４】
＊生成された信号を管理する：動向を見きわめ、処置を講ずる、例えば、クライアント間での悪意のあるエージェントの拡散を識別し、新しく検出された悪意のあるエージェントを停止し、ひどく感染したクライアントを隔離する。
【０１２５】
＊ゲートウェイの構成を一元的に制御する：例えば、悪意のあるエージェントを示す新しいスタックフローデータ解析でゲートウェイを更新し、有効で安全な挙動を非難する新しいスタックフローデータ解析でゲートウェイを更新し、ゲートウェイをクライアントに一致させる。
【０１２６】
＊クライアントの構成を一元的に制御する：例えば、更新されたエンドポイントモジュールでクライアントを更新し、クライアントをゲートウェイに一致させ、スタックデータをゲートウェイに送信できるようにする。
【０１２７】
＊ゲートウェイの状態をモニタする：例えば、警報の数、類似した警報のパターン、警報に関連づけられるクライアント、および全接続のうちの悪意のある通信の割合を調査する。
【０１２８】
＊クライアントの状態、例えば、接続の試みの数、悪意のある通信の警報の数、悪意のある通信の割合、疑いのある感染したアプリケーションをモニタし、類似した悪意のある試みのフローデータ解析を調査する。
【０１２９】
任意選択で、ゲートウェイ２１０および／またはエンドポイントモジュール２０８Ａは、解析に基づいて、例えば、サーバ２２０、ゲートウェイ２１０、および／またはモジュール２０８Ａにより送信された更新メッセージによって更新される。接続確立に関係するローカルゲートウェイおよび／またはエンドポイントモジュールを更新することができる。解析された接続確立プロセスに関係しない他のゲートウェイおよび／またはクライアントのエンドポイントモジュール（例えば、遠隔に配置された）を更新することができる。更新は、今後の類似した悪意のある通信確立パターン、例えば、悪意のある通信を確立しようと繰り返し試みる同じ感染したアプリケーション、悪意のあるエージェントによって感染させられた異なるアプリケーション、および／または類似した悪意のあるエージェントによって感染させられた以前には感染していなかったクライアントの識別を可能にすることができる。
【０１３０】
次に、本発明のいくつかの実施形態による、防止がクライアントにおいて行われるネットワーク接続の悪意のあるアクティビティの検出のためのコンピュータ実施方法である図１Ｂを参照する。明確および簡単にするために、図１Ａを参照して既に説明したブロックの説明は省略される。新しいブロックおよび／または新しい特徴が説明される。
【０１３１】
図１Ａは、例えば、組織、例えば会社内のネットワークなどのプライベートネットワークアーキテクチャ内に実装することができることに留意されたい。悪意のあるアクティビティのために外部サーバにアクセスしようとする組織ネットワーク内のクライアントは、一般に、ゲートウェイでブロックされる。
【０１３２】
クライアントの外で実行される悪意のある通信のための接続確立を、ネットワーク内でおよび／またはサーバ端部で（すなわち、ゲートウェイによって）検出すると、多数のクライアントにおいて悪意のあるエージェントによって開始された組織的接続ベース攻撃を一元的に識別し防止することができる。
【０１３３】
ゲートウェイベースの悪意のある通信の識別は、エンドポイントモジュール２０８Ａがインストールされていないクライアントからの攻撃を防止することができる。
【０１３４】
図１Ｂは、例えば、ネットワークの外から接続する個々のクライアント内に実装することができる。ネットワークを通じて外部サーバにアクセスしようとする個々のクライアントは、クライアント自体でブロックされる。
【０１３５】
任意選択で図１Ａと図１Ｂを組み合わせたアーキテクチャが実装され、悪意を持って関連するネットワーク接続は、ゲートウェイとクライアントの両方で（またはどちらか一方で）ブロックすることができる。二重の防止は追加のレベルのセキュリティを提供することができ、クライアントレベルの防止をバイパスすることができる悪意のあるコードは、ゲートウェイレベルでブロックされる。
【０１３６】
１０２において、接続確立の試みが、図１Ａを参照して説明したように識別される。
【０１３７】
１０４において、スタックデータおよび任意選択の他のフローデータ（ブロック１０６におけるような）が、図１Ａを参照して説明したように収集される。
【０１３８】
任意選択で、１３０において、接続確立プロセスが、クライアントのところで、例えばモジュール２０８Ａによって停止される。追加のセキュリティ手段として、接続確立プロセスが停止され、悪意のあるアクティビティのためのネットワーク接続の確立が防止される。接続確立プロセスを停止すると、ゲートウェイが解析を実行して、接続確立の試みが悪意のあるアクティビティに関連づけられている場合を決定する時間が与えられる。
【０１３９】
接続確立プロセスは、接続確立に関連するメッセージを格納し、メッセージがネットワークに送信されないようにすることによって停止することができる。
【０１４０】
１０８において、収集されたフローデータが、図１Ａを参照して説明したように、ゲートウェイに送信される。
【０１４１】
１１０において、ゲートウェイは、図１Ａを参照して説明したように、送信されたフローデータを受信する。
【０１４２】
１１２において、ゲートウェイは、図１Ａを参照して説明したように、受信したフローデータを解析して、接続確立の試みに関連づけられる悪意のあるアクティビティの有無を決定する。
【０１４３】
任意選択で、１３２において、悪意のあるアクティビティが識別されると、イベントが、例えばネットワークメッセージとして生成される。ネットワークメッセージはそれぞれのクライアントに送信される。
【０１４４】
任意選択で、１３４において、クライアントは、ゲートウェイからのネットワークメッセージを受信するとすぐ、接続確立プロセスをブロックおよび／または防止する。ネットワーク接続は、ブロックされる、および／またはアクティブ化しないようにされ得る。
【０１４５】
終了は、ネットワーク接続確立の悪意のある試みの検出を示すゲートウェイ２１０からのメッセージを受信するとすぐ、例えば、プログラミングインタフェースが接続確立を実行しないようにするメッセージを発行することによってクライアントにおいてエンドポイントモジュール２０８Ａによって実行され得る。
【０１４６】
代替として、１３６において、悪意のあるアクティビティがないことが識別されると、メッセージがクライアントに送信される。
【０１４７】
任意選択で、１３８において、ネットワーク接続が悪意のあるアクティビティに関連づけられていないことを示すメッセージが受信されると、接続確立プロセスは継続することを許可され、および／またはネットワーク接続はアクティブにされる。
【０１４８】
次に、本発明のいくつかの実施形態による、スタックデータを収集するコンピュータ化された方法のフローチャートである図４を参照する。方法は、クライアント２０２にインストールされたエンドポイントモジュール２０８Ａで実行することができる。
【０１４９】
任意選択で、４０２において、接続確立が、例えば、図１Ａのブロック１０２を参照して説明したように検出される。
【０１５０】
代替としてまたは追加として、４０４において、新しいスレッドの生成が、例えば、新しいスレッドを示す挙動に関するスタックをモニタすることに基づいて識別される。
【０１５１】
代替としてまたは追加として、４０６において、新しいプロセスの生成が、例えば、新しいプロセスを示す挙動に関するスタックをモニタすることに基づいて識別される。
【０１５２】
任意選択で、４０８において、スタックデータ２０８Ｂの収集がトリガされる。１つまたは複数のブロック４０２、４０４、および／または４０６の検出は、スタックデータ収集をトリガする。
【０１５３】
４１０において、スタックデータ収集をトリガすることに関連づけられたスタックの記録を解析して、スタック内の動的なコードの存在を識別する。本明細書で説明する動的なコードという用語は、実行可能であり、オペレーションシステムドライブ、例えば、ハードドライブ、ディスクオンキーに、不揮発性外部記憶装置に、およびリモートサーバに格納された既存ファイルに対応しないおよび／または関連しないコードを意味する。動的なコードは、実行時間の間メモリにしか存在せず、永続性メモリ（例えば、ハードディスク）には等価なコードを持っていない。動的なコードは、悪意のあるコードの存在を示唆している。
【０１５４】
任意選択で、４１２において、動的なコードは、悪意のあるコードの存在に関して解析される。
【０１５５】
４１４において、スタックのモジュールが解析される。
【０１５６】
４１６において、検査を実行して、スタックの追加の記録の有無を決定する。任意選択で、４１８において、追加の記録が存在するとき、追加の記録はブロック４１０を繰り返すことによって解析される。代替として、４２０において、記録がこれ以上存在しないとき、スタックデータ収集は完了する。
【０１５７】
次に、本発明のいくつかの実施形態による、スレッド関連フローデータを収集するコンピュータ化された方法のフローチャートである図５Ａを参照する。方法は、クライアント２０２にインストールされたエンドポイントモジュール２０８Ａで実行することができる。
【０１５８】
５０２Ａにおいて、新しいスレッドの生成が、例えば、新しいスレッドの生成のためにオペレーティングシステムをモニタすることに基づいて識別される。
【０１５９】
５０４Ａにおいて、新しいスレッドの親スレッドを解析して、親スレッドが悪意のあるアクティビティを関連づけられる場合を決定する。親スレッドの解析は、例えば、図１Ａのブロック１１２を参照して説明したように実行される。
【０１６０】
任意選択で、５０６Ａにおいて、親スレッドが悪意性であると決定された場合、現在のスレッドは、悪意のあるものとしてマークを付けられる。代替としてまたは追加として、５０８Ａにおいて、コールスタックが、例えば、動的なコードの存在に関して有効であるか無効であるかを決定するために、および／または図１Ａのブロック１１２を参照して説明したように、コールスタックが検査される。
【０１６１】
任意選択で、５１０Ａにおいて、現在のスレッドは、コールスタックが無効であるとき悪意のあるものとしてマークを付けられる。代替としてまたは追加として、５１２Ａにおいて、親スレッドを解析して、親スレッドがスレッドをプロセスに注入した場合を決定する。注入されたスレッドはスレッドのプロセスに基づいて検出することができ、例えば、親スレッドのプロセスが現在のスレッドのプロセスと異なるとき、現在のスレッドは注入と見なされる。
【０１６２】
任意選択で、５１４Ａにおいて、親スレッドが注入されたスレッドとして識別されたとき、現在のスレッドは注入されたスレッドとしてマークを付けられる。注入されたスレッドは悪意のあるコードを示唆する。代替としてまたは追加として、５１６Ａにおいて、現在のスレッドを解析して、現在のスレッドが注入されたスレッドである場合を決定する。任意選択で、５１８Ａにおいて、解析が、現在のスレッドを、注入されたスレッドとして識別した場合、現在のスレッドは注入されたコードとしてマークを付けられる。
【０１６３】
次に、本発明のいくつかの実施形態による、プロセス関連フローデータを収集するコンピュータ化された方法のフローチャートである図５Ｂを参照する。方法は、クライアント２０２にインストールされたエンドポイントモジュール２０８Ａで実行することができる。
【０１６４】
ブロック５０２Ｂ〜５１８Ｂは、図５Ａのブロック５０２Ａ〜５１８Ａに対応し、図５Ａのスレッドの代わりにプロセスを参照する。注目すべきことに、ブロック５１２Ｂにおいて、解析を実行して、注入されたスレッドによってプロセスが作り出された場合を決定する。ブロック５１６Ｂにおいて、現在のメインモジュールフォーマットを解析して、モジュールフォーマットが有効であるか無効であるかを識別する。５１８Ｂにおいて、現在のプロセスは、プロセス実行可能フォーマットが無効として識別される場合、悪意のあるものとしてマークを付けられる。
【０１６５】
次に、本発明のいくつかの実施形態による、モジュール関連フローデータを収集するコンピュータ化された方法のフローチャートである図５Ｃを参照する。方法は、クライアント２０２にインストールされたエンドポイントモジュール２０８Ａで実行することができる。
【０１６６】
５０８Ｃにおいて、解析を実行して、新しいモジュールがプロセスにロードされた場合を決定する。
【０１６７】
５０４Ｃにおいて、新しいモジュールのローディングスレッドを解析して、ローディングスレッドが悪意のあるアクティビティに関連づけられる場合を決定する。ローディングスレッドの解析は、例えば、図１Ａのブロック１１２を参照して説明したように実行される。
【０１６８】
任意選択で、５０６Ｃにおいて、ローディングスレッドが悪意性であると決定された場合、現在のモジュールは、悪意のあるものとしてマークを付けられる。代替としてまたは追加として、５０８Ｃにおいて、例えば、図５Ａで実行された解析に基づいて、解析を実行して、ローディングスレッドが注入された場合を決定する。
【０１６９】
任意選択で、５１０Ｃにおいて、現在のモジュールは、ローディングスレッドが注入されている場合、悪意のあるものとしてマークを付けられる。代替としてまたは追加として、５１２Ｃにおいて、モジュールフォーマットを解析して、モジュールフォーマットがいつ有効であるか無効であるか、例えば、ポータブル実行可能コードが、無効であるヘッダのフィールドを含むか、例えば、エントリーポイントフィールドがコードの外の場所を指し示すかを決定する。
【０１７０】
任意選択で、５１４Ｃにおいて、モジュールフォーマットが無効であると決定された場合、現在のモジュールは、悪意のあるものとしてマークを付けられる。代替としてまたは追加として、５１６Ｃにおいて、解析を実行して、モジュールがグローバルローディング方法を使用してロードされた場合を決定する。本明細書で説明するグローバルローディング方法という用語は、互いに無関係であり得る異なるプロセスのためにロードするモジュールを意味する。グローバルにロードされたモジュールは、悪意のあるアクティビティを示唆する。
【０１７１】
任意選択で、５１８Ｃにおいて、現在のモジュールは、解析が現在のモジュールをグローバルにロードされたモジュールであるとして識別するとき、グローバルであるとしてマークを付けられる。
【０１７２】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品のあり得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための１つまたは複数の実行可能命令を含むコードのモジュール、セグメント、または一部分を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われることがあることにも留意されたい。例えば、連続して示された２つのブロックは、関連する機能に応じて、実際には実質的に同時に実行されることがあり、またはブロックは時には逆の順序で実行されることがある。ブロック図および／またはフローチャート図の各ブロック、およびブロック図および／またはフローチャート図のブロックの組合せは、特定の機能もしくは動作を実行する専用ハードウェアベースシステム、または専用ハードウェアとコンピュータ命令との組合せによって実装され得ることにも留意されたい。
【０１７３】
本発明の様々な実施形態の説明は、例証のために提示されたが、網羅的であることまたは開示された実施形態に限定されることを意図していない。説明した実施形態の範囲および趣旨から逸脱することなく、多くの変形および変更が当業者には明らかであろう。本明細書で使用された用語は、実施形態の原理、実際的用途、もしくは市場で見いだされる技術に対する技術的改善を最も良く説明するように、または他の当業者が本明細書で開示した実施形態を理解できるように選択された。
【０１７４】
本出願から成熟する特許権存続期間中に、多くの関連する悪意のあるエージェント、クライアント、ネットワーク、スタック、およびサーバが開発されることが予想され、悪意のあるエージェント、クライアント、ネットワーク、スタック、およびサーバという用語の範囲は、そのような新技術をすべて先験的に含むように意図される。
【０１７５】
本明細書で使用する「約」という用語は±１０％を指す。
【０１７６】
「備える」、「備えている」、「含む」、「含んでいる」、「有している」、という用語およびそれらの活用形は、「限定はしないが、含む」を意味する。この用語は、「からなる」および「から本質的になる」という用語を包含する。
【０１７７】
「から本質的になる」という語句は、組成物または方法が追加の要素またはステップを含み得るが、追加の要素またはステップが特許請求する組成物または方法の基本および新規な特性を実質的に変えない場合に限られることを意味する。
【０１７８】
本明細書で使用する単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈上別段明確に示されない限り複数の指示内容を含む。例えば、「化合物」または「少なくとも１つの化合物」という用語は、それらの混合物を含む複数の化合物を含むことができる。
【０１７９】
「例示的な」という単語は、本明細書では、「例、実例、または例示として役立つこと」を意味するように使用される。「例示的な」として説明されたいかなる実施形態も、必ずしも、他の実施形態と比較して好ましいもしくは有利であると解釈されるべきではなく、および／または他の実施形態からの特徴の組み込みを排除すべきではない。
【０１８０】
「任意選択で」という単語は、本明細書では、「ある実施形態では提供され、他の実施形態では提供されない」ことを意味するように使用される。本発明のいかなる特定の実施形態も、複数の「任意選択の」特徴が矛盾しない限り、そのような特徴を含むことができる。
【０１８１】
本出願の全体を通して、本発明の様々な実施形態は、範囲形式で提示されることがある。範囲形式での説明は、単に便宜および簡潔のためであり、本発明の範囲に対する柔軟性がない限定と解釈されるべきでないことを理解されたい。したがって、範囲の説明は、すべての可能な部分範囲ならびにその範囲内の個々の数値を具体的に開示したものと考えるべきである。例えば、１から６までなどの範囲の説明は、１から３まで、１から４まで、１から５まで、２から４まで、２から６まで、３から６まで等のような部分範囲、ならびにその範囲内の個々の数、例えば、１、２、３、４、５、および６を具体的に開示したものと考えるべきである。これは、範囲の広さに関係なく適用される。
【０１８２】
数の範囲が本明細書で示されるときは常に、数の範囲は、示された範囲内の任意の引用される数字（小数または整数）を含むように意図される。第１の表示数と第２の表示数との「間に及んでいる／及ぶ」、ならびに第１の表示数「から」第２の表示数「まで」「及んでいる／及ぶ」という語句は、本明細書では交換可能に使用され、第１および第２の表示された数、ならびにそれらの数の間のすべての小数および整数を含むことを意味する。
【０１８３】
明確にするために別々の実施形態の文脈で説明されている本発明の特定の特徴は、単一の実施形態において組み合わせて提供されることも可能であることが理解される。逆に、簡潔にするために単一の実施形態の文脈で説明されている本発明の様々な特徴は、本発明の任意の他の説明されている実施形態において、別々に、または任意の適切な部分的組合せで、または好適であるように提供されることも可能である。様々な実施形態の文脈で説明したいくつかの特徴は、それらの要素なしでは実施形態が動作不能である場合を除いて、それらの実施形態の必須の特徴と考えるべきではない。
【０１８４】
本発明をその特定の実施形態に関連して説明したが、多くの代替、変更、および変形が当業者には明らかであることは明白である。したがって、添付の特許請求範囲の趣旨および広い範囲内に入るすべてのそのような代替、変更、および変形を包含することが意図される。
【０１８５】
本明細書において述べたすべての刊行物、特許、および特許出願は、各々個々の出版物、特許、または特許出願が、具体的におよび個々に、参照により本明細書に組み込まれるように示されているのと同じ程度に、それらの全体が参照により本明細書に組み込まれる。加えて、本出願のいかなる参考文献の引用または特定も、そのような参考文献が本発明への先行技術として利用可能であることを認めるものとして解釈されないものとする。セクションの見出しが使用される限り、見出しは必ずしも限定するものと解釈されるべきではない。
【図１Ａ】
0006758581.tif 000002
【図１Ｂ】
0006758581.tif 000003
【図２】
0006758581.tif 000004
【図３Ａ】
0006758581.tif 000005
【図３Ｂ】
0006758581.tif 000006
【図４】
0006758581.tif 000007
【図５Ａ】
0006758581.tif 000008
【図５Ｂ】
0006758581.tif 000009
【図５Ｃ】
0006758581.tif 000010