(58)【調査した分野】(Int.Cl.,DB名)
前記少なくとも1つのスタックトレースが、前記接続確立プロセスの開始のためのインターネットプロトコル群の伝送制御プロトコル(TCP)に従って実行される接続確立中に収集される、請求項1に記載のコンピュータ実施方法。
前記少なくとも1つのスタックトレースが、前記接続確立プロセスの間に多数のポイントで得られた多数のスタックトレースの少なくとも1つのシーケンスを含み、前記解析することが、前記悪意のある通信を確立する前記試行を表すフローデータ解析に前記多数のスタックトレースを突き合わせることを含む、請求項1に記載のコンピュータ実施方法。
【発明を実施するための形態】
【0037】
本発明は、そのいくつかの実施形態において、悪意のある接続の検出および防止のためのシステムおよび方法に関し、より詳細には、限定ではないが、悪意のあるアクティビティおよび/または通信のためのネットワーク接続を利用する悪意のあるコードの検出のためのシステムおよび方法に関する。
【0038】
本発明のいくつかの実施形態の一態様は、悪意のあるアクティビティ/通信のためのネットワーク接続の確立の試みの検出のためのシステムおよび/または方法に関する。クライアント端末での接続確立は、多数の接続されたクライアントの各々が、接続確立プロセスに関連する1つまたは複数のローカルコールスタックを表すデータおよび任意選択のオペレーティングシステムデータをゲートウェイサーバに解析のために送信することに基づいて、中央ゲートウェイでモニタされる。関連するプロセス、モジュール解析データ、クライアント端末における動的に生成されたコードおよび/またはスレッド相互作用のうちの1つまたは複数によって任意選択でエンリッチされた接続確立コールスタックが、悪意のあるコードを識別するためにモニタおよび/または解析される。本明細書で説明するフローデータという用語は、クライアント端末で収集される説明したデータを意味し、それは、コールスタックデータ、および任意選択で、プロセスデータ、モジュール解析データ、および/またはスレッドデータのうちの1つまたは複数を含む。
【0039】
接続確立プロセスに関連する悪意のあるアクティビティを識別した際、接続確立プロセスは停止および/または終了する。ネットワーク接続は確立するのを防止される。リモートサーバとローカルな悪意のあるエージェントとの間のネットワーク接続によるデータ送信は防止される。このようにして、ネットワークを通じた悪意のあるデータ送信は、悪意のあるエージェントがネットワーク接続を使用して、損傷を引き起こす、例えば、リモートサーバからデータを盗む、または盗んだデータをローカルクライアントからリモートサーバに送信できるようになる前に、停止される。アクティブネットワーク接続が確立された場合に、ネットワーク接続は、悪意のあるアクティビティの出現に対してモニタされる。悪意のあるアクティビティが識別されると、アクティブ接続を遮断またブロックすることができる。
【0040】
悪意のあるコードに感染したアプリケーション、または悪意のあるコードアプリケーション自体が、ネットワーク接続の確立を、例えば、オペレーティングシステムのインタフェースプログラム(例えば、ソケット)によって開始することがある。悪意のある通信のための接続確立アクティビティは、ネットワーク接続のファイナライズされたセットアップがローカルアプリケーションへのおよび/またはローカルアプリケーションからのデータ送信を行う前に識別される。開始アプリケーションに関連するフローデータは、確立要求の検出、確立開始の際、および/または接続確立プロセス自体の間に、例えば、インターネットプロトコル(IP)群の伝送制御プロトコル(TCP)のマルチステップハンドシェイクプロセスの前および/またはその間に、解析することができる。
【0041】
本発明の少なくとも1つの実施形態を詳細に説明する前に、本発明は、その適用において、以下の説明に記載され、および/または図面および/または実施例に示される構成要素および/または方法の構築および配列の詳細に必ずしも限定されないことを理解されたい。本発明は、他の実施形態が可能であり、または様々な方法で実践もしくは実行することが可能である。
【0042】
本発明は、システム、方法、および/またはコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有する1つのコンピュータ可読記憶媒体(または複数の媒体)を含むことができる。
【0043】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し格納することができる有形デバイスとすることができる。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、磁気記憶デバイス、半導体記憶デバイス、または前述のものの任意の好適な組合せとすることができる。コンピュータ可読記憶媒体のより具体的な例の包括的でないリストは、以下のものを含む。ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、および前述のものの任意の好適な組合せ。本明細書で使用するコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波路または他の伝送媒体を通って伝搬する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを通して伝送される電気信号などの一時的な信号自体であると解釈されるべきでない。
【0044】
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、またはネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはワイヤレスネットワークを介して外部コンピュータもしくは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含むことができる。各コンピューティング/処理デバイスのネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0045】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk、C++などのようなオブジェクト指向プログラミング言語および「C」プログラミング言語もしくは類似したプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソースコードもしくはオブジェクトコードのいずれかとすることができる。コンピュータ可読プログラム命令は、ユーザコンピュータで全面的に、ユーザコンピュータで部分的に、スタンドアロンソフトウェアパッケージとして、ユーザコンピュータで部分的におよびリモートコンピュータで部分的に、またはリモートコンピュータもしくはサーバで全面的に実行することができる。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークによってユーザコンピュータに接続されてもよく、または外部コンピュータへの接続がなされてもよい(例えばインターネットサービスプロバイダーを使用するインターネットを通して)。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路を個人専用にすることができる。
【0046】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して本明細書で説明される。フローチャート図および/またはブロック図の各ブロック、およびフローチャート図および/またはブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装できることを理解されよう。
【0047】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、または機械を生み出す他のプログラマブルデータ処理装置のプロセッサに供給して、その結果、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロックにおいて特定された機能/動作を実施するための手段を作り出すことができる。これらのコンピュータ可読プログラム命令は、さらに、コンピュータ、プログラマブルデータ処理装置、および/または他のデバイスに、特定な方法で機能するように指示することができるコンピュータ可読記憶媒体に格納することができ、その結果、命令が中に格納されたコンピュータ可読記憶媒体は、フローチャートおよび/またはブロック図の1つまたは複数のブロックにおいて特定された機能/動作の態様を実施する命令を含む製品を含む。
【0048】
コンピュータ可読プログラム命令を、さらに、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードして、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイスに実行させ、それによって、コンピュータ実施プロセスを発生し、その結果、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令は、フローチャートおよび/またはブロック図の1つまたは複数のブロックにおいて特定された機能/動作を実施する。
【0049】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品のあり得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部分を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われることがある。例えば、連続して示された2つのブロックは、関係する機能に応じて、実際には実質的に同時に実行されることがあり、またはブロックは時には逆の順序で実行されることがある。ブロック図および/またはフローチャート図の各ブロック、およびブロック図および/またはフローチャート図のブロックの組合せは、特定の機能もしくは動作を実行するかまたは専用ハードウェアとコンピュータ命令との組合せを実行する専用ハードウェアベースシステムによって実装されてもよいことにも留意されたい。
【0050】
本明細書で定義する接続確立という用語は、特定のアプリケーションがネットワーク接続を通じてデータを送信および/または受信できるようになる前に行われるコンピュータ化されたプロセスを意味する。接続確立プロセスは、特定のアプリケーションから開始コマンドを受信するアプリケーションプログラミングインタフェースによって管理および/または実行し、接続を確立し、確立された接続通じて送信するために特定のアプリケーションからデータを受信し、および/または確立された接続を通じて受信した特定のアプリケーションにデータを送信することができる。
【0051】
次に、本発明のいくつかの実施形態による、防止がゲートウェイで行われる場合の悪意のあるアクティビティおよび/または通信のためのネットワーク接続の検出のためのコンピュータ実施方法のフローチャートである
図1Aを参照する。本発明のいくつかの実施形態による、悪意のある通信のためのネットワーク接続の検出および防止のためのシステムである
図2をさらに参照する。
図2を参照して説明するシステムは、
図1Aを参照して説明する方法を実行することができる。システムおよび/または方法は、悪意のあるアクティビティおよび/または悪意のあるエージェントに関連づけられる通信のためのネットワーク接続の確立の試みを検出し、悪意のあるエージェントがデータ送信および/または受信に基づいて悪意のあるアクティビティのためにネットワーク接続を利用できるようになる前に接続確立プロセスを停止しおよび/または早期に終了する。このようにして、ネットワーク接続を通じて悪意のあるエージェントによって実行されるリモートコマンドが防止される。例えば、悪意のあるエージェントの制御下でネットワーク接続を通じてデータを送信することによるデータ(例えば、バンキング詳細、クレジットカード番号、財務詳細、軍事情報、秘密情報、および機密情報)の盗難が防止される。別の例では、悪意のあるエージェントによるネットワーク接続によってリモートコンピュータのデータの変更および/または消去が防止される。さらなる別の例では、悪意のあるエージェントは、追加の命令を得るためにリモートサーバにアクセスすることができない。
【0052】
コンピュータ(例えば、クライアントおよび/またはサーバ)が悪意のあるエージェントに感染したとき、システムおよび/または方法は、悪意のあるエージェントがネットワーク接続を通じて悪意のあるアクティビティを実行しないようにする。システムおよび/または方法は追加のセキュリティのレベルを用意し、未検出および/または未知の悪意のあるエージェントに既に感染したコンピュータが、ネットワーク接続を使用するアクティビティに基づいて、他のリモートコンピュータおよび/またはローカルコンピュータ自体に損傷を引き起こさないようにする。
【0053】
システムおよび/または方法は、ネットワーク接続を確立するためのセキュリティ手段をバイパスすることがあるオペレーティングシステムの権利で動作する悪意のあるエージェント、例えば、ハイパーバイザの悪意のあるコードを検出することができる。そのような悪意のあるエージェントは、オペレーティングシステム機能を使用することなく、および/またはエンドポイントモジュールをディスエーブルおよび/またはバイパスすることによって、接続を確立しようと試みることがある。これらの試みは、ゲートウェイによってモニタされた接続確立要求がエンドポイントモジュールによってエンリッチおよび/または署名されないのでゲートウェイによってブロックされる。
【0054】
悪意のあるエージェントに関連づけられたネットワーク接続を設定しようとする試みを検出すると、普通なら識別することが困難である、および/または普通なら損傷が既に生じた後に識別される悪意のあるエージェントおよび/または悪意のあるアクティビティを識別することが可能になる。例えば、いくつかの悪意のあるエージェントは、アイドル時には検出が困難であるかまたは検出できず、アクティブ時にのみ検出される。そのような場合、システムおよび/または方法は、ネットワーク接続を通じて損傷を受ける前に、悪意のあるアクティビティを接続確立プロセスの一部として検出する。
【0055】
システムおよび/または方法は、権限を与えられていないコードの実行(すなわち、攻撃者が、悪意のあるコードを実行するためにアプリケーションを支配する)に基づく悪意のあるアクティビティおよび/または通信のためのネットワーク接続の確立の試みを、ネットワーク接続によって損傷が生じる前に識別することができる。そのような権限を与えられていないコードの実行は、普通なら、損傷を受ける前に検出することが困難であり得る。
【0056】
悪意のあるアクティビティおよび/または通信のためのネットワーク接続の確立の試みは、特定の感染性の悪意のあるコードエージェントを必ずしも識別することなく検出され停止され得る。このように、未知の悪意のあるエージェントが、悪意のあるアクティビティを実行するためにネットワーク接続にアクセスしないようにすることができる。
【0057】
任意選択で、悪意のある活動および/または通信のための接続を検出するためのシステムおよび/または方法は、例えば、システム200内にインストールされる。
【0058】
システム200は、少なくとも1つのクライアント202、例えばラップトップ、デスクトップ、モバイルデバイス(例えば、スマートフォン、タブレット)、および/またはサーバを含む。クライアント202は、クライアント202からのおよび/またはクライアント202へのデータ送信のための新しいネットワーク接続を開始することができるエンドポイントクライアントである。エンドポイントクライアント202はサーバとすることができる。
【0059】
クライアント202は、ネットワーク接続機能、例えば、ネットワークインタフェース、送信機、および/または受信機を含む。クライアント202は、1つまたは複数のネットワーク206、例えば、ワイヤレスネットワーク、有線ネットワーク、セルラネットワーク、インターネット、プライベートネットワーク、およびそれらの多数のネットワークの組合せを通してリモートサーバ204と通信することができる。
【0060】
任意選択で、エンドポイントモジュール208Aが、1つまたは複数のクライアント202の(または1つまたは複数のクライアント202と通信する)メモリにインストールされる(例えば、プリインストールされる、クライアントで動作するオペレーティングシステムと統合される、および/またはリモートサーバまたはローカルメモリからダウンロードされ、ローカルにインストールされる)。任意選択で、エンドポイントモジュール208Aは、本明細書で説明するように、クライアント202のプロセッサによる実行のためのプログラム命令と、クライアント202の接続確立関連アクティビティをモニタするためのプログラム命令とを含む。代替としてまたは追加として、モジュール208Aは、ゲートウェイ210によって指示されるような機能を実行し、例えば、接続確立を停止し、および/または接続確立を可能にする。
【0061】
ゲートウェイ210は、本明細書で説明するように、クライアント202からの接続確立関連データを受信し、データを解析し、悪意のある活動および/または通信のためのネットワーク接続の確立の試みを識別する。任意選択で、ゲートウェイ210は、ネットワーク接続の確立を開始するクライアント202の特定のアプリケーションと、ネットワーク接続の確立を制御するインタフェースとの間の仲介物として働くプロキシサーバである。ゲートウェイ210は、接続確立の状態を示す警報信号の直接制御および/または生成によって、接続確立を停止するかまたは接続確立の継続を許可する。
【0062】
ゲートウェイ210は、コンピュータへのインストールのためのソフトウェアモジュール、および/または他のコンピュータとの通信のためのハードウェア機器とすることができる。代替としてまたは追加として、ゲートウェイ210は、多数のクライアント202からデータを受信するためにインストールされる。ゲートウェイ210は、ネットワーク206を通じてクライアント202と通信するネットワーク206内にインストールされてもよく、例えば、ゲートウェイ210は、リモートサーバ、クライアント202とネットワーク206との間のインタフェース(例えば、ネットワークインタフェースデバイス)におけるプライベート組織ネットワーク内などの事前定義されたグループのクライアント202との通信のためのローカルにインストールされたサーバとしてもよく、および/またはネットワーク206自体内に、例えば、内部および/または境界ネットワークデバイス(例えば、層2デバイス、層3デバイス、ルータ、ゲートウェイ、およびブリッジ)内にインストールされてもよい。
【0063】
1つまたは複数の悪意のあるエージェント212が、クライアント202に感染する。クライアントの感染はインストールの前に生じることがあることに留意されたい。
【0064】
悪意のあるエージェント212は、リモートの悪意のある宛先サーバ214へのネットワーク206を通じた接続を確立するためのプログラム命令、および/またはクライアント202とリモートの正当なサーバ204との間のネットワーク206を通じた接続を利用するためのプログラム命令を含むことがある。
【0065】
悪意のあるエージェント212の1つの例は、動的にリンクされるライブラリの注入である。動的にリンクされるライブラリの注入は、例えば、動的にリンクされるライブラリをロードし実行するようにプロセスに強制することによって、別のプロセスのアドレス空間内でコードを動作させるために使用される技法である。動的にリンクされるライブラリの注入は、別のプログラムの挙動に影響を及ぼすために、プログラムの著者が予想または意図しなかった方法で外部プログラムによって使用されることがある。ハッカーは、動的にリンクされるライブラリの注入の技法を利用し、感染したペイロードをエンドポイントアプリケーションに注入して、オリジナルのアプリケーションを悪意を持って操ることがある。例えば、Zeusは、金融機関向けネットワーク接続をハイジャックして顧客情報および/または金銭を盗むためにインターネットブラウザアプリケーションへの動的にリンクされるライブラリの注入を使用する、トロイの木馬の形態の悪意のあるエージェントである。Zeusは、ウェブブラウザによってアクセスされるネットワーク接続およびデータをモニタおよび操作するために、HTTPハンドリング機能をフックすることによって働く。
【0066】
悪意のあるエージェント212の別の例は、バイパス検出である。特定の悪意のあるコードは、オペレーティングシステムおよび/またはより高いレベルのプログラム、例えば、ハイパーバイザの悪意のあるコードの特権で動作するようにプログラムされる。そのような悪意のあるコードは、セキュリティ対策を容易にバイパスし、ネットワーク接続を意のままに確立する。
【0067】
悪意のあるエージェント212のさらなる別の例は、権限を与えられていないコードの実行である。権限を与えられていないコードの実行は、攻撃者が悪意のある動作を使用してプログラムのコードの実行を制御し、それによって、攻撃者自身の悪意のあるコードを実行するときに行われる。悪意のあるコードは、影響を受けたエンドポイントクライアントのバックグラウンドで動作する悪意のあるコードのアプリケーションとして実行され、ハッカーがクライアントを悪意を持って操れるようにする。
【0068】
悪意のあるエージェント212の他の例には、ウィルス、ワーム、トロイの木馬、スパイウェア、およびアドウェアが含まれる。悪意のあるエージェント212は、実行可能コード、スクリプト、アプリケーション、および他のソフトウェアとしてインストールされ得る。
【0069】
図1Aおよび
図1Bを参照すると、クライアントに存在するブロックは、
図2のクライアント202に存在することができ、ゲートウェイ内に存在するブロックは、
図2のゲートウェイ210に存在することができる。
【0070】
102において、接続確立の試みが検出される。任意選択で、クライアント端末で動作するアプリケーションによりネットワークベースサーバへのネットワーク接続を確立するための開始コメント(例えば、要求)が検出される。アプリケーションは、本明細書で説明するように、悪意のあるコード212に感染する可能性がある。
【0071】
任意選択で、アプリケーションおよび/またはクライアントが、ネットワーク接続の確立の試みを検出するためにモニタされる。例えば、エンドポイントモジュール208Aは、ネットワーク206を通じて接続を確立するためのアプリケーションおよび/またはコード208C(クライアント202にインストールされたおよび/またはクライアント202と通信する)による試みを検出するためにクライアント202をモニタする。
【0072】
任意選択で、ネットワーク接続が、新しい接続として確立されるように試みられる。代替として、ネットワーク接続は、非アクティブ化および/または保留された前の接続の再確立となるように試みられる。
【0073】
アプリケーションは、信頼のできるソース、例えば、リモートの正当なサーバ204(例えば、それからデータが盗まれる)へのネットワーク接続を確立しようと試みることがあり、および/または悪意のあるソース、例えば、悪意のある宛先サーバ214(例えば、それに盗まれたデータが送信される、および/またはそれがリモートの悪意のあるコントローラとして働く)へのネットワーク接続を確立しようと試みることがある。
【0074】
ネットワーク接続を確立しようと試みる悪意を持って感染させられるアプリケーションおよび/または悪意のあるコード208Cの例には、ウェブブラウザ、インスタントメッセージングアプリケーション、ワードプロセッシングアプリケーション、画像編集アプリケーション、音楽アプリケーション、アプリケーション内にインストールされたアップデートモジュール、オペレーティングシステム自体、リモートコンピュータ制御アプリケーション、およびデータ同期アプリケーションが含まれる。感染させられたアプリケーションおよび/または悪意のあるコード208Cは、本明細書で説明するように、例えば、仮想マシンを作り出しおよび/または動作させるハイパーバイザまたは仮想マシンモニタの一部であることがある。クライアント202は仮想マシンホストを含むことができる。例えば、感染させられたアプリケーションおよび/または悪意のあるコード208Cは、本明細書で説明するように、例えば、権限を与えられていない悪意のあるアプリケーションの一部であることがある。感染させられたアプリケーションおよび/または悪意のあるコード208Cは、接続確立を管理するアプリケーションプログラミングインタフェースの一部、例えば、ソケットであることがある。
【0075】
任意選択で、開始メッセージ(例えば、要求)および/または接続確立が、クライアント端部において、例えば、エンドポイントモジュール208Aによって検出される。要求は、接続確立の試みの受信した通知に基づいて、例えば、クライアントの通信のためのローカルエンドポイントを表すアプリケーションプログラミングインタフェース、例えば、インターネットソケットなどのネットワークソケットにアプリケーションがコマンドを発行することに基づいて、クライアントのオペレーティングシステムに関連して検出することができる。コマンドは、新しいネットワークソケットを作り出すもの、および/または新しいネットワークソケットの生成の後の信号を作り出すものとすることができる。別の例では、要求は、以前は作り出されたソケットにアプリケーションがコマンドを発行することに基づいて検出することができる。クライアント端部での検出は、悪意のあるエージェントがクライアントの外にあるサーバと接続を確立しないようにする。
【0076】
任意選択で、ネットワーク確立プロセスは、リモートサーバとのパラメータネゴシエーティングプロセス、例えば、TCPに基づく、例えばハンドシェーキングプロセスに基づく。代替としてまたは追加として、ネットワーク確立プロセスは、ネゴシエーティングプロセス、例えば、ユーザデータグラムプロトコル(UDP)に基づく、例えば、コネクションレスネットワーク接続に基づかない。
【0077】
104において、スタックデータは、例えば、
図4を参照しながら以下で説明するように収集される。
【0078】
任意選択で、106において、例えば、
図5A、
図5B、および
図5Cを参照して以下で説明するように、スレッド、プロセス、および/またはモジュールに関連するフローデータなどの追加のフローデータ208Dが、ネットワーク接続の確立を開始するコマンドの間に得られる。
【0079】
108において、接続確立プロセスに関連するコールスタック208Bのデータ(ブロック104の)を含み、および追加フローデータ(ブロック106の)を任意選択で含むフローデータが、例えば、クライアント202内のスタックデータおよび/または他のフローデータにアクセスできるエンドポイントモジュール208Aによってゲートウェイ210に送信される。
【0080】
110において、ゲートウェイは、クライアントによって送信されたフローデータを受信する。データ送信は、ネットワークを通じて行うことができる。
【0081】
112において、データを解析して、悪意のあるアクティビティおよび/または通信のための接続の確立の試みを検出する。データは、クライアント端末で実行されるプロセス、スレッド、モジュール、および動的コードを表すフローデータ内の記録を含むことができる。
【0082】
記録を解析して、ネットワーク接続が悪意のあるアクティビティのために、例えば、データを盗むために使用される悪意のあるアクティビティおよび/または通信を確立する試行の有無を検出する。
【0083】
悪意のある通信を確立する試行は、記録が不法のフローデータを表しているとき、悪意のあるアクティビティおよび/または通信のためのネットワーク接続の確立の試みを検出することによって識別することができる。
【0084】
解析は、悪意のあるアクティビティおよび/または通信のための接続の確立の試みを検出するためにゲートウェイ210がスタックデータを解析するによって実行され、悪意のある通信の有無を表す信号を生成することができる。
【0085】
任意選択で、スタックトレースは、ネットワーク接続を確立しようと試みるアプリケーションに関連するコールスタックから得られる。スタックトレースは、接続確立に関連するコールスタック内のモジュールのシーケンスのパターンおよび/またはスナップショットを含む。例えば、スタックトレースは、トレースが得られる時点のコールスタック内のモジュールを含む。モジュールは、コールスタック内の表示、例えば、モジュールを指し示すコールスタック内のポインタに基づいて引き出すことができる。
【0086】
1つまたは多数のスタックトレースは、接続確立プロセスの開始の要求中におよび/または接続確立プロセス中に、1つまたは多数の時点で得ることができる。接続確立プロセス中に多数の時点で捕捉された多数のスタックトレースは、要求および/または接続確立プロセス中に生じるスタックの変化を捕捉するように選択される。
【0087】
解析は、アプリケーションとリモートサーバまたは悪意のあるサーバとの間のデータ通信、例えば、開始アプリケーションによるネットワークを通じたデータの転送などの前に実行される。任意選択で、解析は、ネットワーク接続の確立の前に実行される。代替としてまたは追加として、解析は、ネットワークセッションのアクティブ化の前に実行される。このようにして、悪意のあるエージェントがネットワーク接続によって行動することができる前に、例えば、権限を与えられていないデータの送信(すなわち、データの盗み)の前に、接続確立プロセスの妥当性を決定することができる。
【0088】
クライアントで動作するアプリケーションが感染し(例えば、注入されたコードに基づいて)、感染したコードに基づいて外部接続を確立しように試みるとき、接続確立スタックコールは、感染していないときの同じアプリケーションのスタックコールと異なる。
【0089】
解析は、悪意のあるアプリケーションがないときのコールスタックフローデータ解析と異なるフローデータ解析のために、ネットワーク接続を確立しようと試みる悪意のあるアプリケーションが接続確立プロセスに関連するコールスタックをもたらすことに基づいて実行される。
【0090】
解析は、1つの方法または多数の方法に基づいて並列にまたは逐次的に実行される。解析は、本明細書で説明するように、接続確立関連スタック208Bデータおよび/またはフローデータ208Dを含むクライアント202から受信したメッセージに基づいて、ゲートウェイ210によって実行される。解析は、本明細書で説明するように、ネットワークを通じたアプリケーション208Cによるデータ送信の前に、接続確立プロセスの前におよび/または接続確立プロセス中に実行される。解析方法のいくつかの例は次のものを含む。
【0091】
*悪意のある接続を確立する試行を表すフローデータ解析にスタックトレースを突き合わせるおよび/または相関させること。
【0092】
*有効なモジュールの事前定義されたホワイトリスト内にない未知のモジュールを識別するためにホワイトリストに対してスタック内のモジュールを比較するおよび/または相関させること。未知のモジュールは、開始アプリケーションの悪意のある感染であるとの疑いがある。有効なモジュールは、例えば、管理者によって手動で、悪意のあるコードの防止サーバからダウンロードして、および/または感染していないアプリケーションからの機械学習に基づいて有効であるとして指定され得る。
【0093】
*スタック内の悪意のあるモジュールを識別するために既知の悪意のあるモジュールの事前定義されたブラックリストに対してスタック内のモジュールを比較するおよび/または相関させること。
【0094】
*類似したまたは等価な既知の安全なパターンなどの有効な接続確立フローデータ解析に対してスタックトレース内のモジュールのフローデータ解析を比較するおよび/または相関させること。モジュールのフローデータ解析は、スタック内のモジュールの順序および/またはスタック内で生じる変化を含むことができる。
【0095】
*悪意のあるアクティビティに関連づけられるトレースに文書化された固有のイベントを識別すること。
【0096】
*アプリケーションが感染していなかったときにアプリケーションで生成されたと予想される接続確立スタックフローデータ解析に対してスタックデータを比較するおよび/または相関させること。例えば、アプリケーションを使用して悪意のあるアクティビティおよび/または通信のための接続を確立しようと試みる注入されたコードに感染する。
【0097】
*スタック内のモジュールが未知のモジュールのコードによってロードされなかったことを検証すること。未知のモジュールとの関連づけは、悪意のあるコードを示唆する。
【0098】
*プロセスにおけるコーリングスレッドまたは他のスレッドが未知のモジュールのコードによって作り出されなかったことを検証すること。未知のモジュールとの関連づけは、悪意のあるコードを示唆する。
【0099】
*プロセス実行可能ファイルフォーマットを検証すること。無効のフォーマットは悪意のあるコードに関連づけられ得る。
【0100】
多数のクライアントを一緒にモニタすることができる。多数のゲートウェイからのモニタリングデータを一緒に解析することができる。ゲートウェイにおいて多数のクライアントから収集されたスタックデータおよび/または多数のゲートウェイからのデータを一緒に解析して、悪意のあるアクティビティ、例えば、クライアントからクライアントへと拡散するマルウェア感染のパターン、および/または短期間内に単一のターゲットサーバおよび/または多数のターゲットサーバへのネットワーク接続を確立する多数のクライアントからの組織的攻撃の確立を識別する。
【0101】
比較は、類似したパターンとの直接の比較に基づいて実行することができる。相関は、悪意のあるアクティビティとの統計的に有意な相関関連、および/または有効な安全アクティビティとの統計的に有意な関連を識別するために実行することができる。
【0102】
比較および/または相関は、例えば、関数によって、またはスタックトレースフローデータ解析を入力として受け入れ、悪意のある挙動の存在もしくは悪意のある挙動の不在を示す信号を出力するように訓練された分類器によって、実行することができる。
【0103】
次に、本発明のいくつかの実施形態による接続確立プロセスに関連するコールスタックの例である
図3A〜
図3Bを参照する。分かりやすくするために、図は部分的トレースを示す。
【0104】
図3Aは、接続を確立しように試みる、例えば、金融および/または銀行ウェブサイトに接続しようと試みる感染したウェブブラウザのコールスタック302を示す。コールスタック302は、感染していないウェブブラウザに対して期待される有効な接続確立関連スタックを表すコールスタック304との比較によって解析される。解析は、特定のファイル308(すなわち、shlwapi.dll)が欠けており、未知のモジュール306Bへのコードポインタが存在することを検出する。フローデータ解析に基づいて、悪意のあるコード疑われる。
【0105】
図3Bは、権限を与えられていないコードの実行を使用して攻撃者に接続するためのネットワーク接続を確立しようと試みている感染したワードプロセッシングプログラムのコールスタック312を示す。スタック312は未知のコード316を含む。それに比べて、コールスタック314は、ワードプロセッシングプログラムが感染していないときのネットワーク接続を確立しようとする試みの間のワードプロセッシングプログラムのコールスタックである。コールスタック314は、感染したコールスタック316に存在しないモジュール318(すなわち、MSO.dll)へのポインタを含む。
【0106】
ブロック114において、解析の結果は、ゲートウェイの内部のメモリまたはゲートウェイに接続されたメモリに格納される。
【0107】
116において、ネットワーク接続の試みに関連するデータが、クライアントからゲートウェイにネットワークを通じて送信される。任意選択で、ブロック102が完了し、ネットワーク接続が、データ送信を可能にするためにアクティブ化される。データ(例えば、パケットなどのネットワークメッセージ)が、アクティブなネットワークを通じてクライアントからゲートウェイに送信される。初めに、通信確立プロトコルに関連するパケットが、例えばTCPハンドシェイクプロセスに基づいて送信される。任意選択で、データパケットは、接続を通じて、続いておよび/または逐次的に送信される。
【0108】
118において、ネットワーク接続の試みに関連して送信されたデータ、および/またはアクティブ化にされたネットワークを通じて送信されたデータが、ゲートウェイで受信される。
【0109】
120において、ブロック114の格納された結果にアクセスして、受信したデータ(例えば、パケット)が悪意のあるアクティビティに関連づけられているどうか、または受信したデータが許可されるとして検証されたかどうかを決定する。
【0110】
任意選択で、122において、悪意のある通信の確立の試みが検出されたとき、接続確立プロセスはゲートウェイ自体でゲートウェイによってブロックされる。悪意のあるアクティビティおよび/または通信のためのネットワーク接続の確立が防止される。ハンドシェーキングパケットが悪意のあるアクティビティに関連づけられるとして識別されたときなどにネットワーク接続がアクティブ化されないようにすることができる。代替としてまたは追加として、アクティブなネットワーク接続は、悪意のあるアクティビティに関してモニタされ、悪意のあるアクティビティが検出されるとブロックされる。例えば、ネットワーク接続が、ハンドシェイクプロセスを必要としないコネクションレスプロトコル、例えば、ユーザデータグラムプロトコル(UDP)などに基づく場合、送られたパケットのすべて(または送られたパケットの選択されたサブセット)をモニタするか、または送られたスレッド当たり少なくとも最初のパッケージまたはいくつかのパケットをモニタすることができる。
【0111】
終了は、ゲートウェイ210によって、接続確立プロセスに関連するパケットが送出されないようにすることにより、および/または接続確立を終了するためのメッセージを発行することにより実行され得る。ネットワーク接続をブロックしてもよく、またはネットワーク接続を終了してもよい。
【0112】
任意選択で、124において、悪意のある通信の確立の試みの検出を示す警報が生成される。警報は、ユーザに提示されてもよく(例えば、クライアント202に接続されたディスプレイに表示されてもよく)、および/または管理者に提示されてもよい(例えば、ゲートウェイ222または第三者イベント管理プラットホームに接続されたディスプレイに表示されてもよい)。ユーザは、さらなる処置を講じることができ、例えば、悪意のある通信を受け取ったことを通知することができ、任意選択で、悪意のあるコードの対策プログラムを動作させてクライアントから感染エージェントを除去することができる。代替としてまたは追加として、警報メッセージは、悪意のあるコードの除去をトリガすることができる悪意のあるコード対策の他の製品によって受信されるようにフォーマットされる。
【0113】
代替として、126において、接続確立が、悪意のあるものとして識別されず、および/または安全であるとして検証されると、接続確立プロセスは、ネットワーク接続を確立し続け、ネットワーク接続をアクティブ化し、および/またはアクティブ化されたネットワークを通じてデータ送信を許可し続けることを許される。エンドポイントモジュール208Aおよび/またはゲートウェイ210は、接続確立を許可するための信号を生成することができる。解析が進むようにするために接続確立が停止された場合、エンドポイントモジュール208Aおよび/またはゲートウェイ210は接続確立を再開することができる。
【0114】
任意選択で、1つまたは複数のブロック104〜126を繰り返して、アクティブ化されたネットワーク接続をモニタする。任意選択で、スタックおよび/または他のフローデータが、悪意のあるアクティビティのためのネットワーク接続の確立の後にモニタされる。任意選択で、スタックは、クライアントがスタックデータをゲートウェイに送ることによってモニタされる。
【0115】
スタックは、例えば、事前定義された期間の間、および/または選択されたイベント(例えば、ネットワーク接続の構成の変更)の間、連続的に、モニタすることができる。
【0116】
ネットワーク接続は、疑わしい悪意のある挙動に対してモニタすることができる(例えば、ゲートウェイによって)。疑わしい挙動の検出に際して、管理者は、解析のために追加情報を送信するようにクライアントにコマンドを発行することができる。例えば、感染したプロセスのメモリダンプ。
【0117】
スタックデータは、例えば、ネットワーク接続が稼働している間連続的に、クライアントで記録されてもよい。スタックの記録は、解析のためにゲートウェイに定期的に送信することができる。
【0118】
任意選択で、接続確立モニタリングに関連するデータが収集および/または解析される。データは、例えば、コールスタックトレース、各ネットワーク接続確立の試みに対する悪意のある通信の有無を表す信号および/またはメッセージ、および/または生成された警報を含む。データは、エンドポイントモジュール208Aおよび/またはゲートウェイ210から管理サーバ220に送信することができる。
【0119】
ブロック116〜126の接続確立後のモニタリングに関連するデータは、ゲートウェイ210で収集および/または解析し、解析のための管理サーバ220に送信することができる。
【0120】
管理サーバ220は、1つまたは多数のゲートウェイ210および/またはクライアント202と通信する(例えば、ネットワーク206を通して)。管理サーバ220は、例えば総合的解析を行うために、多数のゲートウェイおよび/またはクライアントからのデータをアグリゲートすることができる。代替としてまたは追加として、管理サーバ220は、例えば、特定のクライアントに対する解析を行うために単一のクライアントの単一ユーザに対するデータを収集することができる。
【0121】
任意選択で、管理サーバ220は、ユーザが1つまたは複数の機能を実行できるようにするユーザインタフェースモジュール222を含む。ユーザは、例えば、ネットワーク接続を通じてウェブブラウザを通してユーザインタフェース222にアクセスすることができる。データは、多数のクライアントおよび/またはゲートウェイに、またはクライアントおよび/またはゲートウェイごとに一元的に調査および/または解析することができる。
【0122】
管理サーバ220および/またはユーザインタフェース222は以下の機能のもう1つを実行する。
【0123】
*生成された信号をゲートウェイで再調査する:警報は悪意のある通信の試みを示し、および/またはメッセージは悪意のある通信の試みがないことを示す。
【0124】
*生成された信号を管理する:動向を見きわめ、処置を講ずる、例えば、クライアント間での悪意のあるエージェントの拡散を識別し、新しく検出された悪意のあるエージェントを停止し、ひどく感染したクライアントを隔離する。
【0125】
*ゲートウェイの構成を一元的に制御する:例えば、悪意のあるエージェントを示す新しいスタックフローデータ解析でゲートウェイを更新し、有効で安全な挙動を非難する新しいスタックフローデータ解析でゲートウェイを更新し、ゲートウェイをクライアントに一致させる。
【0126】
*クライアントの構成を一元的に制御する:例えば、更新されたエンドポイントモジュールでクライアントを更新し、クライアントをゲートウェイに一致させ、スタックデータをゲートウェイに送信できるようにする。
【0127】
*ゲートウェイの状態をモニタする:例えば、警報の数、類似した警報のパターン、警報に関連づけられるクライアント、および全接続のうちの悪意のある通信の割合を調査する。
【0128】
*クライアントの状態、例えば、接続の試みの数、悪意のある通信の警報の数、悪意のある通信の割合、疑いのある感染したアプリケーションをモニタし、類似した悪意のある試みのフローデータ解析を調査する。
【0129】
任意選択で、ゲートウェイ210および/またはエンドポイントモジュール208Aは、解析に基づいて、例えば、サーバ220、ゲートウェイ210、および/またはモジュール208Aにより送信された更新メッセージによって更新される。接続確立に関係するローカルゲートウェイおよび/またはエンドポイントモジュールを更新することができる。解析された接続確立プロセスに関係しない他のゲートウェイおよび/またはクライアントのエンドポイントモジュール(例えば、遠隔に配置された)を更新することができる。更新は、今後の類似した悪意のある通信確立パターン、例えば、悪意のある通信を確立しようと繰り返し試みる同じ感染したアプリケーション、悪意のあるエージェントによって感染させられた異なるアプリケーション、および/または類似した悪意のあるエージェントによって感染させられた以前には感染していなかったクライアントの識別を可能にすることができる。
【0130】
次に、本発明のいくつかの実施形態による、防止がクライアントにおいて行われるネットワーク接続の悪意のあるアクティビティの検出のためのコンピュータ実施方法である
図1Bを参照する。明確および簡単にするために、
図1Aを参照して既に説明したブロックの説明は省略される。新しいブロックおよび/または新しい特徴が説明される。
【0131】
図1Aは、例えば、組織、例えば会社内のネットワークなどのプライベートネットワークアーキテクチャ内に実装することができることに留意されたい。悪意のあるアクティビティのために外部サーバにアクセスしようとする組織ネットワーク内のクライアントは、一般に、ゲートウェイでブロックされる。
【0132】
クライアントの外で実行される悪意のある通信のための接続確立を、ネットワーク内でおよび/またはサーバ端部で(すなわち、ゲートウェイによって)検出すると、多数のクライアントにおいて悪意のあるエージェントによって開始された組織的接続ベース攻撃を一元的に識別し防止することができる。
【0133】
ゲートウェイベースの悪意のある通信の識別は、エンドポイントモジュール208Aがインストールされていないクライアントからの攻撃を防止することができる。
【0134】
図1Bは、例えば、ネットワークの外から接続する個々のクライアント内に実装することができる。ネットワークを通じて外部サーバにアクセスしようとする個々のクライアントは、クライアント自体でブロックされる。
【0135】
任意選択で
図1Aと
図1Bを組み合わせたアーキテクチャが実装され、悪意を持って関連するネットワーク接続は、ゲートウェイとクライアントの両方で(またはどちらか一方で)ブロックすることができる。二重の防止は追加のレベルのセキュリティを提供することができ、クライアントレベルの防止をバイパスすることができる悪意のあるコードは、ゲートウェイレベルでブロックされる。
【0136】
102において、接続確立の試みが、
図1Aを参照して説明したように識別される。
【0137】
104において、スタックデータおよび任意選択の他のフローデータ(ブロック106におけるような)が、
図1Aを参照して説明したように収集される。
【0138】
任意選択で、130において、接続確立プロセスが、クライアントのところで、例えばモジュール208Aによって停止される。追加のセキュリティ手段として、接続確立プロセスが停止され、悪意のあるアクティビティのためのネットワーク接続の確立が防止される。接続確立プロセスを停止すると、ゲートウェイが解析を実行して、接続確立の試みが悪意のあるアクティビティに関連づけられている場合を決定する時間が与えられる。
【0139】
接続確立プロセスは、接続確立に関連するメッセージを格納し、メッセージがネットワークに送信されないようにすることによって停止することができる。
【0140】
108において、収集されたフローデータが、
図1Aを参照して説明したように、ゲートウェイに送信される。
【0141】
110において、ゲートウェイは、
図1Aを参照して説明したように、送信されたフローデータを受信する。
【0142】
112において、ゲートウェイは、
図1Aを参照して説明したように、受信したフローデータを解析して、接続確立の試みに関連づけられる悪意のあるアクティビティの有無を決定する。
【0143】
任意選択で、132において、悪意のあるアクティビティが識別されると、イベントが、例えばネットワークメッセージとして生成される。ネットワークメッセージはそれぞれのクライアントに送信される。
【0144】
任意選択で、134において、クライアントは、ゲートウェイからのネットワークメッセージを受信するとすぐ、接続確立プロセスをブロックおよび/または防止する。ネットワーク接続は、ブロックされる、および/またはアクティブ化しないようにされ得る。
【0145】
終了は、ネットワーク接続確立の悪意のある試みの検出を示すゲートウェイ210からのメッセージを受信するとすぐ、例えば、プログラミングインタフェースが接続確立を実行しないようにするメッセージを発行することによってクライアントにおいてエンドポイントモジュール208Aによって実行され得る。
【0146】
代替として、136において、悪意のあるアクティビティがないことが識別されると、メッセージがクライアントに送信される。
【0147】
任意選択で、138において、ネットワーク接続が悪意のあるアクティビティに関連づけられていないことを示すメッセージが受信されると、接続確立プロセスは継続することを許可され、および/またはネットワーク接続はアクティブにされる。
【0148】
次に、本発明のいくつかの実施形態による、スタックデータを収集するコンピュータ化された方法のフローチャートである
図4を参照する。方法は、クライアント202にインストールされたエンドポイントモジュール208Aで実行することができる。
【0149】
任意選択で、402において、接続確立が、例えば、
図1Aのブロック102を参照して説明したように検出される。
【0150】
代替としてまたは追加として、404において、新しいスレッドの生成が、例えば、新しいスレッドを示す挙動に関するスタックをモニタすることに基づいて識別される。
【0151】
代替としてまたは追加として、406において、新しいプロセスの生成が、例えば、新しいプロセスを示す挙動に関するスタックをモニタすることに基づいて識別される。
【0152】
任意選択で、408において、スタックデータ208Bの収集がトリガされる。1つまたは複数のブロック402、404、および/または406の検出は、スタックデータ収集をトリガする。
【0153】
410において、スタックデータ収集をトリガすることに関連づけられたスタックの記録を解析して、スタック内の動的なコードの存在を識別する。本明細書で説明する動的なコードという用語は、実行可能であり、オペレーションシステムドライブ、例えば、ハードドライブ、ディスクオンキーに、不揮発性外部記憶装置に、およびリモートサーバに格納された既存ファイルに対応しないおよび/または関連しないコードを意味する。動的なコードは、実行時間の間メモリにしか存在せず、永続性メモリ(例えば、ハードディスク)には等価なコードを持っていない。動的なコードは、悪意のあるコードの存在を示唆している。
【0154】
任意選択で、412において、動的なコードは、悪意のあるコードの存在に関して解析される。
【0155】
414において、スタックのモジュールが解析される。
【0156】
416において、検査を実行して、スタックの追加の記録の有無を決定する。任意選択で、418において、追加の記録が存在するとき、追加の記録はブロック410を繰り返すことによって解析される。代替として、420において、記録がこれ以上存在しないとき、スタックデータ収集は完了する。
【0157】
次に、本発明のいくつかの実施形態による、スレッド関連フローデータを収集するコンピュータ化された方法のフローチャートである
図5Aを参照する。方法は、クライアント202にインストールされたエンドポイントモジュール208Aで実行することができる。
【0158】
502Aにおいて、新しいスレッドの生成が、例えば、新しいスレッドの生成のためにオペレーティングシステムをモニタすることに基づいて識別される。
【0159】
504Aにおいて、新しいスレッドの親スレッドを解析して、親スレッドが悪意のあるアクティビティを関連づけられる場合を決定する。親スレッドの解析は、例えば、
図1Aのブロック112を参照して説明したように実行される。
【0160】
任意選択で、506Aにおいて、親スレッドが悪意性であると決定された場合、現在のスレッドは、悪意のあるものとしてマークを付けられる。代替としてまたは追加として、508Aにおいて、コールスタックが、例えば、動的なコードの存在に関して有効であるか無効であるかを決定するために、および/または
図1Aのブロック112を参照して説明したように、コールスタックが検査される。
【0161】
任意選択で、510Aにおいて、現在のスレッドは、コールスタックが無効であるとき悪意のあるものとしてマークを付けられる。代替としてまたは追加として、512Aにおいて、親スレッドを解析して、親スレッドがスレッドをプロセスに注入した場合を決定する。注入されたスレッドはスレッドのプロセスに基づいて検出することができ、例えば、親スレッドのプロセスが現在のスレッドのプロセスと異なるとき、現在のスレッドは注入と見なされる。
【0162】
任意選択で、514Aにおいて、親スレッドが注入されたスレッドとして識別されたとき、現在のスレッドは注入されたスレッドとしてマークを付けられる。注入されたスレッドは悪意のあるコードを示唆する。代替としてまたは追加として、516Aにおいて、現在のスレッドを解析して、現在のスレッドが注入されたスレッドである場合を決定する。任意選択で、518Aにおいて、解析が、現在のスレッドを、注入されたスレッドとして識別した場合、現在のスレッドは注入されたコードとしてマークを付けられる。
【0163】
次に、本発明のいくつかの実施形態による、プロセス関連フローデータを収集するコンピュータ化された方法のフローチャートである
図5Bを参照する。方法は、クライアント202にインストールされたエンドポイントモジュール208Aで実行することができる。
【0164】
ブロック502B〜518Bは、
図5Aのブロック502A〜518Aに対応し、
図5Aのスレッドの代わりにプロセスを参照する。注目すべきことに、ブロック512Bにおいて、解析を実行して、注入されたスレッドによってプロセスが作り出された場合を決定する。ブロック516Bにおいて、現在のメインモジュールフォーマットを解析して、モジュールフォーマットが有効であるか無効であるかを識別する。518Bにおいて、現在のプロセスは、プロセス実行可能フォーマットが無効として識別される場合、悪意のあるものとしてマークを付けられる。
【0165】
次に、本発明のいくつかの実施形態による、モジュール関連フローデータを収集するコンピュータ化された方法のフローチャートである
図5Cを参照する。方法は、クライアント202にインストールされたエンドポイントモジュール208Aで実行することができる。
【0166】
508Cにおいて、解析を実行して、新しいモジュールがプロセスにロードされた場合を決定する。
【0167】
504Cにおいて、新しいモジュールのローディングスレッドを解析して、ローディングスレッドが悪意のあるアクティビティに関連づけられる場合を決定する。ローディングスレッドの解析は、例えば、
図1Aのブロック112を参照して説明したように実行される。
【0168】
任意選択で、506Cにおいて、ローディングスレッドが悪意性であると決定された場合、現在のモジュールは、悪意のあるものとしてマークを付けられる。代替としてまたは追加として、508Cにおいて、例えば、
図5Aで実行された解析に基づいて、解析を実行して、ローディングスレッドが注入された場合を決定する。
【0169】
任意選択で、510Cにおいて、現在のモジュールは、ローディングスレッドが注入されている場合、悪意のあるものとしてマークを付けられる。代替としてまたは追加として、512Cにおいて、モジュールフォーマットを解析して、モジュールフォーマットがいつ有効であるか無効であるか、例えば、ポータブル実行可能コードが、無効であるヘッダのフィールドを含むか、例えば、エントリーポイントフィールドがコードの外の場所を指し示すかを決定する。
【0170】
任意選択で、514Cにおいて、モジュールフォーマットが無効であると決定された場合、現在のモジュールは、悪意のあるものとしてマークを付けられる。代替としてまたは追加として、516Cにおいて、解析を実行して、モジュールがグローバルローディング方法を使用してロードされた場合を決定する。本明細書で説明するグローバルローディング方法という用語は、互いに無関係であり得る異なるプロセスのためにロードするモジュールを意味する。グローバルにロードされたモジュールは、悪意のあるアクティビティを示唆する。
【0171】
任意選択で、518Cにおいて、現在のモジュールは、解析が現在のモジュールをグローバルにロードされたモジュールであるとして識別するとき、グローバルであるとしてマークを付けられる。
【0172】
図のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品のあり得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための1つまたは複数の実行可能命令を含むコードのモジュール、セグメント、または一部分を表すことができる。いくつかの代替実施態様では、ブロックに記された機能は、図に記された順序から外れて行われることがあることにも留意されたい。例えば、連続して示された2つのブロックは、関連する機能に応じて、実際には実質的に同時に実行されることがあり、またはブロックは時には逆の順序で実行されることがある。ブロック図および/またはフローチャート図の各ブロック、およびブロック図および/またはフローチャート図のブロックの組合せは、特定の機能もしくは動作を実行する専用ハードウェアベースシステム、または専用ハードウェアとコンピュータ命令との組合せによって実装され得ることにも留意されたい。
【0173】
本発明の様々な実施形態の説明は、例証のために提示されたが、網羅的であることまたは開示された実施形態に限定されることを意図していない。説明した実施形態の範囲および趣旨から逸脱することなく、多くの変形および変更が当業者には明らかであろう。本明細書で使用された用語は、実施形態の原理、実際的用途、もしくは市場で見いだされる技術に対する技術的改善を最も良く説明するように、または他の当業者が本明細書で開示した実施形態を理解できるように選択された。
【0174】
本出願から成熟する特許権存続期間中に、多くの関連する悪意のあるエージェント、クライアント、ネットワーク、スタック、およびサーバが開発されることが予想され、悪意のあるエージェント、クライアント、ネットワーク、スタック、およびサーバという用語の範囲は、そのような新技術をすべて先験的に含むように意図される。
【0175】
本明細書で使用する「約」という用語は±10%を指す。
【0176】
「備える」、「備えている」、「含む」、「含んでいる」、「有している」、という用語およびそれらの活用形は、「限定はしないが、含む」を意味する。この用語は、「からなる」および「から本質的になる」という用語を包含する。
【0177】
「から本質的になる」という語句は、組成物または方法が追加の要素またはステップを含み得るが、追加の要素またはステップが特許請求する組成物または方法の基本および新規な特性を実質的に変えない場合に限られることを意味する。
【0178】
本明細書で使用する単数形「a」、「an」、および「the」は、文脈上別段明確に示されない限り複数の指示内容を含む。例えば、「化合物」または「少なくとも1つの化合物」という用語は、それらの混合物を含む複数の化合物を含むことができる。
【0179】
「例示的な」という単語は、本明細書では、「例、実例、または例示として役立つこと」を意味するように使用される。「例示的な」として説明されたいかなる実施形態も、必ずしも、他の実施形態と比較して好ましいもしくは有利であると解釈されるべきではなく、および/または他の実施形態からの特徴の組み込みを排除すべきではない。
【0180】
「任意選択で」という単語は、本明細書では、「ある実施形態では提供され、他の実施形態では提供されない」ことを意味するように使用される。本発明のいかなる特定の実施形態も、複数の「任意選択の」特徴が矛盾しない限り、そのような特徴を含むことができる。
【0181】
本出願の全体を通して、本発明の様々な実施形態は、範囲形式で提示されることがある。範囲形式での説明は、単に便宜および簡潔のためであり、本発明の範囲に対する柔軟性がない限定と解釈されるべきでないことを理解されたい。したがって、範囲の説明は、すべての可能な部分範囲ならびにその範囲内の個々の数値を具体的に開示したものと考えるべきである。例えば、1から6までなどの範囲の説明は、1から3まで、1から4まで、1から5まで、2から4まで、2から6まで、3から6まで等のような部分範囲、ならびにその範囲内の個々の数、例えば、1、2、3、4、5、および6を具体的に開示したものと考えるべきである。これは、範囲の広さに関係なく適用される。
【0182】
数の範囲が本明細書で示されるときは常に、数の範囲は、示された範囲内の任意の引用される数字(小数または整数)を含むように意図される。第1の表示数と第2の表示数との「間に及んでいる/及ぶ」、ならびに第1の表示数「から」第2の表示数「まで」「及んでいる/及ぶ」という語句は、本明細書では交換可能に使用され、第1および第2の表示された数、ならびにそれらの数の間のすべての小数および整数を含むことを意味する。
【0183】
明確にするために別々の実施形態の文脈で説明されている本発明の特定の特徴は、単一の実施形態において組み合わせて提供されることも可能であることが理解される。逆に、簡潔にするために単一の実施形態の文脈で説明されている本発明の様々な特徴は、本発明の任意の他の説明されている実施形態において、別々に、または任意の適切な部分的組合せで、または好適であるように提供されることも可能である。様々な実施形態の文脈で説明したいくつかの特徴は、それらの要素なしでは実施形態が動作不能である場合を除いて、それらの実施形態の必須の特徴と考えるべきではない。
【0184】
本発明をその特定の実施形態に関連して説明したが、多くの代替、変更、および変形が当業者には明らかであることは明白である。したがって、添付の特許請求範囲の趣旨および広い範囲内に入るすべてのそのような代替、変更、および変形を包含することが意図される。
【0185】
本明細書において述べたすべての刊行物、特許、および特許出願は、各々個々の出版物、特許、または特許出願が、具体的におよび個々に、参照により本明細書に組み込まれるように示されているのと同じ程度に、それらの全体が参照により本明細書に組み込まれる。加えて、本出願のいかなる参考文献の引用または特定も、そのような参考文献が本発明への先行技術として利用可能であることを認めるものとして解釈されないものとする。セクションの見出しが使用される限り、見出しは必ずしも限定するものと解釈されるべきではない。