(57)【特許請求の範囲】
【請求項１】
少なくとも１つのメモリおよび少なくとも１つの関連付けられたマイクロプロセッサを含む第１のコンピュータシステムであって、前記マイクロプロセッサは、潜在的なドメイン生成アルゴリズム（ＤＧＡ）マルウェアホストの外部でステップを実行するように構成され、前記ステップは、
第１の外部アクセスリクエストに対する本来の回答をインターセプトするステップであって、前記第１の外部アクセスリクエストは、前記潜在的なＤＧＡマルウェアホストによって外部サイトに送られる、ステップと、
前記第１の外部アクセスリクエストと前記第１の外部アクセスリクエストに対する前記本来の回答とのうち少なくとも１つを解析して、前記第１の外部アクセスリクエストに対する前記本来の回答が実時間を含むかどうかを判定するステップであって、前記実時間を表す所定のフォーマットの情報を前記本来の回答において識別するステップを含む、ステップと、
修正された回答を前記潜在的なＤＧＡマルウェアホストに送るステップであって、前記修正された回答は、前記本来の回答に含まれる本来の実時間を、前記本来の実時間に続く早められた実時間に置換することによって、前記本来の回答から生成される、ステップと、
前記潜在的なＤＧＡマルウェアホストによって第２の外部アクセスリクエストが送られたことに応答して、前記第２の外部アクセスリクエストが成功ではなかったことを示す回答をインターセプトするステップであって、前記第２の外部アクセスリクエストは、前記第１の外部アクセスリクエストが送られた後に送られる、ステップと、
前記第２の外部アクセスリクエストが成功ではなかったことを示す前記回答をインターセプトすることに応答して、前記潜在的なＤＧＡマルウェアホストはドメイン生成アルゴリズムを実行するマルウェアを含むと判定するステップと
を含む、第１のコンピュータシステム。
【請求項２】
請求項１に記載の第１のコンピュータシステムであって、前記第１の外部アクセスリクエストと前記第１の外部アクセスリクエストに対する前記本来の回答とのうち少なくとも１つを解析するステップは、前記第１の外部アクセスリクエストのアドレスフィールド内の時間サーバのアドレスを識別するステップを含む、第１のコンピュータシステム。
【請求項３】
請求項１に記載の第１のコンピュータシステムであって、前記第１の外部アクセスリクエストと前記第１の外部アクセスリクエストに対する前記本来の回答とのうち少なくとも１つを解析するステップは、前記第１の外部アクセスリクエストに対する前記本来の回答を解析して、前記第１の外部アクセスリクエストに対する前記本来の回答の複数のフィールドから実時間フィールドを識別するステップを含む、第１のコンピュータシステム。
【請求項４】
請求項３に記載の第１のコンピュータシステムであって、前記実時間フィールドを識別するステップは、前記実時間フィールドの内容を、前記第１のコンピュータシステムによって判定された依存しない実時間の値と比較するステップを含む、第１のコンピュータシステム。
【請求項５】
請求項１に記載の第１のコンピュータシステムであって、前記潜在的なＤＧＡマルウェアホストは、前記第１のコンピュータシステムとは物理的に別個の第２のコンピュータシステムである、第１のコンピュータシステム。
【請求項６】
請求項１に記載の第１のコンピュータシステムであって、前記潜在的なＤＧＡマルウェアホストは、前記第１のコンピュータシステムによってホストされる仮想マシンである、第１のコンピュータシステム。
【請求項７】
請求項１に記載の第１のコンピュータシステムであって、前記少なくとも１つの関連付けられたマイクロプロセッサは、前記ドメイン生成アルゴリズムによって生成されたドメイン名を判定し、前記ドメイン名に従って、前記ドメイン生成アルゴリズムを実行していることが疑われる複数のコンピュータシステムを識別するようにさらに構成される、第１のコンピュータシステム。
【請求項８】
請求項１に記載の第１のコンピュータシステムであって、前記少なくとも１つの関連付けられたマイクロプロセッサは、前記潜在的なＤＧＡマルウェアホストは前記ドメイン生成アルゴリズムを実行するマルウェアを含むと判定することに応答して、前記ドメイン生成アルゴリズムによって生成されたドメイン名を、セキュリティアプリケーションのブラックリストに追加するようにさらに構成される、第１のコンピュータシステム。
【請求項９】
少なくとも１つのメモリおよび少なくとも１つの関連付けられたマイクロプロセッサを含む第１のコンピュータシステムであって、前記マイクロプロセッサは、潜在的なドメイン生成アルゴリズム（ＤＧＡ）マルウェアホストの外部でステップを実行するように構成され、前記ステップは、
第１の外部アクセスリクエストを解析して、前記第１の外部アクセスリクエストが、早められた実時間を含むかどうかを判定するステップであって、所定のフォーマットの情報を前記第１の外部アクセスリクエストにおいて識別し、該情報により表される時間が、前記早められた実時間とみなされる、前記第１のコンピュータシステム上で測定された現在の時間に対し早められた時間であるかを判定するステップを含み、前記第１の外部アクセスリクエストは、潜在的なＤＧＡマルウェアホストによって外部サイトに送られる、ステップと、
前記第１の外部アクセスリクエストが早められた実時間を含む場合に、前記第１の外部アクセスリクエストに対する第１の本来の回答を解析して、前記第１の本来の回答が前記早められた実時間が正確ではないことを示す第１の情報を含むかどうかを判定するステップと、
前記第１の本来の回答が前記早められた実時間が正確ではないことを示す第１の情報を含む場合に、修正された回答を前記潜在的なＤＧＡマルウェアホストに送るステップであって、前記修正された回答は、前記第１の情報を、前記早められた実時間が正確であることを示す第２の情報に置換することによって、前記第１の本来の回答から生成される、ステップと、
第２の外部アクセスリクエストが前記潜在的なＤＧＡマルウェアホストによって第２の外部サイトに送られることに応答して、前記第２の外部アクセスリクエストが成功ではなかったことを示す第２の本来の回答をインターセプトするステップと、
前記第２の本来の回答をインターセプトすることに応答して、前記潜在的なＤＧＡマルウェアホストはドメイン生成アルゴリズムを実行するマルウェアを含むと判定するステップと
を含む、第１のコンピュータシステム。
【請求項１０】
命令を記憶した非一時的コンピュータ可読媒体であって、前記命令は、実行されると、第１のコンピュータシステムの少なくとも１つのメモリおよび少なくとも１つの関連付けられたマイクロプロセッサを、潜在的なドメイン生成アルゴリズム（ＤＧＡ）マルウェアホストの外部でステップを実行するように構成し、前記ステップは、
第１の外部アクセスリクエストに対する本来の回答をインターセプトするステップであって、前記第１の外部アクセスリクエストは、潜在的なＤＧＡマルウェアホストによって外部サイトに送られる、ステップと、
前記第１の外部アクセスリクエストと前記第１の外部アクセスリクエストに対する前記本来の回答とのうち少なくとも１つを解析して、前記第１の外部アクセスリクエストに対する前記本来の回答が実時間を含むかどうかを判定するステップであって、前記実時間を表す所定のフォーマットの情報を前記本来の回答において識別するステップを含む、ステップと、
修正された回答を前記潜在的なＤＧＡマルウェアホストに送るステップであって、前記修正された回答は、前記本来の回答に含まれる本来の実時間を、前記本来の実時間に続く早められた実時間に置換することによって、前記本来の回答から生成される、ステップと、
前記潜在的なＤＧＡマルウェアホストによって第２の外部アクセスリクエストが送られたことに応答して、前記第２の外部アクセスリクエストが成功ではなかったことを示す回答をインターセプトするステップであって、前記第２の外部アクセスリクエストは、前記第１の外部アクセスリクエストが送られた後に送られる、ステップと、
前記第２の外部アクセスリクエストが成功ではなかったことを示す前記回答をインターセプトすることに応答して、前記潜在的なＤＧＡマルウェアホストはドメイン生成アルゴリズムを実行するマルウェアを含むと判定するステップと
を含む、非一時的コンピュータ可読媒体。
【請求項１１】
請求項１０に記載の非一時的コンピュータ可読媒体であって、前記第１の外部アクセスリクエストと前記第１の外部アクセスリクエストに対する前記本来の回答とのうち少なくとも１つを解析するステップは、前記第１の外部アクセスリクエストのアドレスフィールド内の時間サーバのアドレスを識別するステップを含む、非一時的コンピュータ可読媒体。
【請求項１２】
請求項１０に記載の非一時的コンピュータ可読媒体であって、前記第１の外部アクセスリクエストと前記第１の外部アクセスリクエストに対する前記本来の回答とのうち少なくとも１つを解析するステップは、前記第１の外部アクセスリクエストに対する前記本来の回答を解析して、前記第１の外部アクセスリクエストに対する前記本来の回答の複数のフィールドから実時間フィールドを識別するステップを含む、非一時的コンピュータ可読媒体。
【請求項１３】
請求項１２に記載の非一時的コンピュータ可読媒体であって、前記実時間フィールドを識別するステップは、前記実時間フィールドの内容を、前記第１のコンピュータシステムによって判定された依存しない実時間の値と比較するステップを含む、非一時的コンピュータ可読媒体。
【請求項１４】
請求項１０に記載の非一時的コンピュータ可読媒体であって、前記潜在的なＤＧＡマルウェアホストは、前記第１のコンピュータシステムとは物理的に別個の第２のコンピュータシステムである、非一時的コンピュータ可読媒体。
【請求項１５】
請求項１０に記載の非一時的コンピュータ可読媒体であって、前記潜在的なＤＧＡマルウェアホストは、前記第１のコンピュータシステムによってホストされる仮想マシンである、非一時的コンピュータ可読媒体。
【請求項１６】
請求項１０に記載の非一時的コンピュータ可読媒体であって、前記少なくとも１つの関連付けられたマイクロプロセッサは、前記ドメイン生成アルゴリズムによって生成されたドメイン名を判定し、前記ドメイン名に従って、前記ドメイン生成アルゴリズムを実行していることが疑われる複数のコンピュータシステムを識別するようにさらに構成される、非一時的コンピュータ可読媒体。
【請求項１７】
請求項１０に記載の非一時的コンピュータ可読媒体であって、前記少なくとも１つの関連付けられたマイクロプロセッサは、前記潜在的なＤＧＡマルウェアホストは前記ドメイン生成アルゴリズムを実行するマルウェアを含むと判定することに応答して、前記ドメイン生成アルゴリズムによって生成されたドメイン名を、セキュリティアプリケーションのブラックリストに追加するようにさらに構成される、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[1]本発明は、マルウェアからコンピュータシステムを保護するためのシステムおよび方法に関し、詳細には、ドメイン生成アルゴリズム（ＤＧＡ：ｄｏｍａｉｎ  ｇｅｎｅｒａｔｉｏｎ  ａｌｇｏｒｉｔｈｍ）を用いるマルウェアを検出するためのシステムおよび方法に関する。
【背景技術】
【０００２】
[2]悪意のあるソフトウェアは、マルウェアとしても知られ、世界中の非常に多くのコンピュータシステムに影響を及ぼす。マルウェアは、コンピュータウイルス、ワーム、ルートキット、およびスパイウェアなどの多くの形で、何百万ものコンピュータユーザに深刻なリスクを生じさせ、中でも、データおよび機密情報の喪失、個人情報の盗難、ならびに生産性の喪失に対して、コンピュータシステムを脆弱にする。
【０００３】
[3]セキュリティソフトウェアは、ユーザのコンピュータシステムに感染するマルウェアを検出するために使用され、追加として、このようなマルウェアを駆除するか、またはその実行を停止させるために使用されることがある。いくつかのマルウェア検出技法が当技術分野で知られている。そのような技法の一部は、マルウェアエージェントのコードの断片を、マルウェアを示唆するシグネチャのライブラリにマッチさせることに依存する。他の従来の方法は、マルウェアエージェントのマルウェアを示唆する挙動のセットを検出する。
【０００４】
[4]悪意のあるボットネットは、特に有害なタイプのマルウェアの脅威を形成する。１つの攻撃シナリオでは、リモートリソースに接続させ、悪意のあるペイロードまたは他の情報、例えば、サービス妨害攻撃を開始するための標的の指標など、をダウンロードさせるように構成されたエージェントに、多数のコンピュータシステムが感染させられる。エージェントは、ドメイン生成アルゴリズム（ＤＧＡ）を使用してドメイン名を生成し、そのドメイン名への接続を試みるように構成されることがある。このようなドメイン名は、通常、ドメイン名レジストリに予め登録されておらず、したがって接続の試みの大半は失敗する。マルウェアの作成者が攻撃を開始することを決めると、彼らはこれらのドメイン名の１つをドメイン名レジストリに登録し、ペイロードをオンライン状態にする。突然、個々のドメインに接続しようとするボットネットのメンバによる試みが成功となり、攻撃が開始される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
[5]ドメイン名の生成は未知のアルゴリズムを使用して実施されるので、このような攻撃を防ぐことは困難になることがある。セキュリティアプリケーションは、いくつかのドメイン名に接続しようとする散発的な失敗の試みに遭遇することがあるが、このような試みは、通常、外部サイトに接続しようとする多数の合法的な失敗の試みに覆い隠される。
【０００６】
[6]感染したエージェントを識別し、ドメイン生成アルゴリズムを逆行分析する際に、調査員は複雑で退屈な任務を負う。このようなアルゴリズムは様々な方法を使用するが、そのうちの１つは、擬似乱数生成アルゴリズムへの入力として現在の時間を使用することである。伝統的な検出アプローチでは、ＤＧＡおよび作成されたドメイン名を判定するために、調査員はコードを逆アセンブルしなければならない。
【課題を解決するための手段】
【０００７】
[7]１つの態様によれば、少なくとも１つのメモリおよび少なくとも１つの関連付けられたマイクロプロセッサを含むコンピュータシステムは、第１の外部アクセスリクエストに対する本来の回答をインターセプトするステップであって、第１の外部アクセスリクエストは、潜在的なドメイン生成アルゴリズム（ＤＧＡ）マルウェアホストによって外部サイトに送られる、ステップと、第１の外部アクセスリクエストと第１の外部アクセスリクエストに対する本来の回答とのうち少なくとも１つを解析して、第１の外部アクセスリクエストに対する本来の回答が実時間を含むかどうかを判定するステップと、修正された回答を潜在的なＤＧＡマルウェアホストに送るステップであって、修正された回答は、本来の回答に含まれる本来の実時間を、本来の実時間に続く早められた実時間に置換することによって、本来の回答から生成される、ステップと、潜在的なＤＧＡマルウェアホストによって第２の外部アクセスリクエストが送られたことに応答して、第２のアクセスリクエストが成功ではなかったことを示す回答をインターセプトするステップであって、第２の外部アクセスリクエストは、第１の外部アクセスリクエストが送られた後に送られる、ステップと、第２のアクセスリクエストが成功ではなかったことを示す回答をインターセプトすることに応答して、ドメイン生成アルゴリズムを実行するマルウェアを、潜在的なＤＧＡマルウェアホストが含むことを判定するステップとを、潜在的なＤＧＡマルウェアホストの外部で実施するように構成される。
【０００８】
[8]１つの態様によれば、少なくとも１つのメモリおよび少なくとも１つの関連付けられたマイクロプロセッサを含むコンピュータシステムは、第１の外部アクセスリクエストを解析して、第１の外部アクセスリクエストに対する本来の回答が、早められた実時間を含むかどうかを判定するステップであって、第１の外部アクセスリクエストは、潜在的なドメイン生成アルゴリズム（ＤＧＡ）マルウェアホストによって外部サイトに送られる、ステップと、第１の外部アクセスリクエストに対する第１の本来の回答を解析して、早められた実時間が正確ではないことを示す第１の情報を第１の本来の回答が含むかどうかを判定するステップと、修正された回答を潜在的なＤＧＡマルウェアホストに送るステップであって、修正された回答は、第１の情報を、早められた実時間が正確であることを示す第２の情報に置換することによって、第１の本来の回答から生成される、ステップと、潜在的なＤＧＡマルウェアホストによって第２の外部サイトに第２の外部アクセスリクエストが送られることに応答して、第２のアクセスリクエストが成功ではなかったことを示す第２の本来の回答をインターセプトするステップと、第２の回答をインターセプトすることに応答して、ドメイン生成アルゴリズムを実行するマルウェアを、潜在的なＤＧＡマルウェアホストが含むことを判定するステップとを、潜在的なＤＧＡマルウェアホストの外部で実施するように構成される。
【０００９】
[9]別の態様によれば、非一時的コンピュータ可読媒体は、実行されると、第１の外部アクセスリクエストに対する本来の回答をインターセプトするステップであって、第１の外部アクセスリクエストは、潜在的なドメイン生成アルゴリズム（ＤＧＡ）マルウェアホストによって外部サイトに送られる、ステップと、第１の外部アクセスリクエストと第１の外部アクセスリクエストに対する本来の回答とのうち少なくとも１つを解析して、第１の外部アクセスリクエストに対する本来の回答が実時間を含むかどうかを判定するステップと、修正された回答を潜在的なＤＧＡマルウェアホストに送るステップであって、修正された回答は、本来の回答に含まれる本来の実時間を、本来の実時間に続く早められた実時間に置換することによって、本来の回答から生成される、ステップと、潜在的なＤＧＡマルウェアホストによって第２の外部アクセスリクエストが送られたことに応答して、第２のアクセスリクエストが成功ではなかったことを示す回答をインターセプトするステップであって、第２の外部アクセスリクエストは、第１の外部アクセスリクエストが送られた後に送られる、ステップと、第２のアクセスリクエストが成功ではなかったことを示す回答をインターセプトすることに応答して、ドメイン生成アルゴリズムを実行するマルウェアを、潜在的なＤＧＡマルウェアホストが含むことを判定するステップとを、潜在的なＤＧＡマルウェアホストの外部で実施するように、第１のコンピュータシステムの少なくとも１つのメモリおよび少なくとも１つの関連付けられたマイクロプロセッサを構成する命令を格納する。
【００１０】
[10]本発明の前述の態様および利点は、以下の詳細な説明を読み、図面を参照するとよりよく理解されるようになるであろう。
【図面の簡単な説明】
【００１１】
【図１】[11]本発明のいくつかの実施形態による、例示的なクライアントシステムと、外部サイトをホストするサーバシステムと、時間サーバとを示し、すべてがネットワークによって相互接続されることを示す図である。
【図２Ａ】[12]本発明のいくつかの実施形態による、潜在的なＤＧＡマルウェアホストになることがあるクライアントシステムの例示的なハードウェア構成を示す図である。
【図２Ｂ】[13]本発明のいくつかの実施形態による、ＤＧＡ検出器をホストすることがあるサーバコンピュータシステムまたはネットワークのスイッチ／ルータの例示的なハードウェア構成を示す図である。
【図３Ａ】[14]本発明のいくつかの実施形態による、仮想マシンによって形成される潜在的なＤＧＡマルウェアホスト上で動くプロセス、および潜在的なＤＧＡマルウェアホストと同じ物理システムによってホストされるＤＧＡ検出器を含む、ソフトウェアオブジェクトの例示的なセットを示す図である。
【図３Ｂ】[15]本発明のいくつかの実施形態による、潜在的なＤＧＡマルウェアホスト上で動くプロセス、および潜在的なマルウェアホストとは別個の物理システム上でホストされるＤＧＡ検出器を含む、ソフトウェアオブジェクトの例示的なセットを示す図である。
【図４】[16]本発明のいくつかの実施形態による、例示的な外部アクセスリクエストおよび／または回答を示す図である。
【図５Ａ】[17]本発明のいくつかの実施形態による、時間サーバへの外部アクセスリクエストを解析するときに、ＤＧＡ検出器によって実行される例示的な一連のステップを示す図である。
【図５Ｂ】[18]本発明のいくつかの実施形態による、外部アクセスリクエストに対する本来の回答をインターセプトしたときに、ＤＧＡ検出器によって実行される例示的な一連のステップを示す図である。
【図５Ｃ】[19]本発明のいくつかの実施形態による、プロセスがＤＧＡを実行するかどうかを検出するときに、ＤＧＡ検出器によって実行される例示的な一連のステップを示す図である。
【図５Ｄ】[20]本発明のいくつかの実施形態による、早められた実時間を含む外部アクセスリクエストを解析するときに、ＤＧＡ検出器によって実行される例示的な一連のステップを示す図である。
【図６】[21]本発明のいくつかの実施形態による、本来の実時間と早められた実時間との間の複数の数学的関係を示す図である。
【図７】[22]本発明のいくつかの実施形態による、疑わしいプロセスがＤＧＡを実行するかどうかを判定するために使用されることがある方法の一連のステップを示す図である。
【発明を実施するための形態】
【００１２】
[23]以下の説明において、構造間のすべての列挙された接続は、中間体構造を通じた直接の動作的な接続または間接の動作的な接続であってよいことが理解される。要素のセットは、１つまたは複数の要素を含む。要素の任意の列挙は、少なくとも１つの要素を指すと理解される。複数の要素は、少なくとも２つの要素を含む。別段の要求がない限り、任意の説明される方法ステップは、図示された特定の順序で必ずしも実施される必要はない。別段の定めがない限り、プロセスは、アプリケーションまたはオペレーティングシステムの一部などのコンピュータプログラムのインスタンスであり、少なくとも実行スレッド、およびオペレーティングシステムによって実行スレッドに割り当てられる仮想メモリのセクションを有することによって特徴付けられ、個々のメモリセクションは実行コードを含む。ブラックリストは、アクションのセットを実施するのをブロックされるオブジェクトのリストである。パラメータに従って判定または決定することは、パラメータに従って、および任意選択で他のデータに従って判定または決定することを包含する。コンピュータ可読媒体は、磁気、光、および半導体のストレージ媒体（例えば、ハードドライブ、光ディスク、フラッシュメモリ、ＤＲＡＭ）などの非一時的な媒体、ならびに導電性ケーブルリンクおよび光ファイバリンクなどの通信リンクを包含する。時間サーバは、時間サーバが受信するアクセスリクエストに応答して、回答の中に実時間を提供すること、および／または実時間を含むアクセスリクエストに応答して、アクセスリクエストに含まれる実時間が正確であるかどうかを示す回答を提供することを行う外部サーバである。時間サーバは、実時間の値を提供することに対して専用であるサーバであってよく、またはそうでなくてもよい。専用の時間サーバは、問合せに応答して実時間の値を提供することに対して専用である。非専用の時間サーバは、テキストおよび画像（例えば、特定の場所の現在の実時間に加えて、特定の場所の現在の天気についての情報を提供する天気サーバのページ）などの他のコンテンツを含んでよい、より大きいコンテンツページの一部として実時間の値を提供してよい。いくつかの実施形態によれば、本発明は、とりわけ、本明細書で説明される方法を実施するようにプログラムされたハードウェア（例えば、１つまたは複数の半導体基板上に形成された１つまたは複数のプロセッサ）を含むコンピュータシステム、ならびに本明細書で説明された方法を実施する命令をエンコードするコンピュータ可読媒体を提供する。
【００１３】
[24]以下の説明は、例として本発明の実施形態を示すが、必ずしも限定のためではない。
[25]図１は、ＤＧＡ検出コンピュータシステム１１に接続された例示的なＤＧＡホストのクライアントコンピュータシステム１０を示し、ＤＧＡ検出コンピュータシステム１１は、ＤＧＡ標的サーバコンピュータシステム１４および時間サーバコンピュータシステム１５に、通信ネットワーク１２を通じてさらに接続される。クライアントシステム１０は、デスクトップ、ラップトップ、タブレット、もしくはスマートフォンなどのエンドユーザコンピュータシステム、またはパーソナルデジタルアシスタント（ＰＤＡ）、またはウェアラブルコンピューティングデバイス、またはＴＶもしくは音楽プレーヤなどの家庭用デバイス、またはマルウェアをホストすることがある他の電子デバイスであってよい。クライアントシステム１０は、少なくとも１つのハードウェアプロセッサ、メモリ、およびストレージを有し、Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）、またはｉＯＳ（登録商標）などのオペレーティングシステムを動かす。いくつかの実施形態において、クライアントシステム１０は、ハイパーバイザおよび１つまたは複数の仮想マシンを動かすように構成されてよい。ネットワーク１２は、インターネットなどの広域ネットワークであってよいが、ネットワーク１２の一部は、ローカルエリアネットワーク（ＬＡＮ）を含んでもよい。
【００１４】
[26]クライアントシステム１０上で実行するいくつかのプロセスは、悪意のある場合がある。特に、いくつかのプロセスは、ＤＧＡを潜在的に実行することがある。いくつかのケースにおいて、マルウェアは、クライアントシステム１０上で動く仮想マシンによってホストされることがある。ＤＧＡ検出システム１１は、仮想マシン上で動くプロセスがＤＧＡを実行するかどうかを判定する任務が課される。いくつかの実施形態において、ＤＧＡ検出システム１１はコンピュータサーバを含み、コンピュータサーバを通じて、クライアントシステム１０はインターネットにアクセスする。いくつかの実施形態において、ＤＧＡ検出システム１１の少なくとも一部は、下記に説明される少なくともいくつかのＤＧＡ検出機能を実装するソフトウェア／ハードウェアで構成されるルータまたはスイッチを使用して実装されてよい。仮想化を用いるいくつかの実施形態において、下記に説明されるようなＤＧＡ検出システムは、クライアントシステム１０上ではあるが、クライアントシステム１０上で動く潜在的なＤＧＡホストを形成する仮想マシンの外側に実装されてよい。このような仮想化の実施形態において、ＤＧＡ検出システムは、システムハイパーバイザ上で、および／または監視されている潜在的なＤＧＡホストとは異なる仮想マシン上で動くことがある。
【００１５】
[27]いくつかの実施形態において、セキュリティアプリケーションは、ＤＧＡ検出システム１１の少なくとも一部を形成するサーバ上で動く。セキュリティアプリケーションは、クライアントシステム１０上で動く１つまたは複数のプロセスを分析することによって多くのＤＧＡ検出ステップを実施するように構成される。このような分析は、クライアントシステム１０からの外部アクセスリクエストおよびクライアントシステム１０への回答を、分析およびインターセプトすることを含んでよい。例示的な実施形態において、このようなセキュリティアプリケーションは、クライアントシステム１０上で動く１つまたは複数のプロセスがＤＧＡを実行するかどうかを判定するように構成される。ＤＧＡマルウェアが検出されると、セキュリティアプリケーションは、ＤＧＡによって生成されたドメイン名のセットをさらに識別し、ドメイン名のセットをブラックリストに載せる。ブラックリストに載せられたドメイン名は、ソフトウェアアップデートの一部として、複数のクライアントおよび／またはサーバコンピュータ上で動くセキュリティアプリケーションのインスタンスに送信され、このようなシステムを保護することを容易にすることがある。他の感染されたシステムを識別し、潜在的に無力化することを可能にするために、識別されたドメイン名が登録されてもよい。
【００１６】
[28]クライアント１０は、コンピュータシステム１４によってホストされる外部サイトに、アクセスリクエストを伝えることがある。外部サイトは、ドメイン生成アルゴリズムによって生成されるドメイン名によって特徴付けられることがある。ドメイン名は、難解な一連の英数字（例えば、ａｄｆｊｈａａｄｅｗ３４．ｃｏｍやｇｓｒｉｐｔｏｉ４５３４ｐｆｈ．ｉｏ）によって形成されることがある。このようなドメイン名は、ドメイン名レジストラによって以前に登録された可能性はなく、したがって、将来ドメイン名レジストラによる登録に利用できる可能性が大いにある。コンピュータシステム１４によってホストされるサイトに、アクセスリクエストが到達する場合、アクセスリクエストは成功である。何らかの理由で、コンピュータシステム１４によってホストされるサイトにアクセスリクエストが到達しない場合、アクセスリクエストは不成功である。このような理由としては、このようなサイトがまだ存在しないこと、現在イネーブルされていないこと、またはサイトを特徴づけるドメイン名がドメインネームシステム（ＤＮＳ）によって有効なドメインとして認識されておらず、したがってこのサイトに伝えられる通信がこのサイトにルートされないこと、等がある。アクセスリクエストが成功である場合、コンピュータシステム１４によってホストされるサイトは、クライアントシステム１０に回答を送り返す。アクセスリクエストが成功でない場合、ネットワーク１２の構成要素は、アクセスリクエストが成功ではなかったということを示す回答を、クライアントシステム１０に送り返す。
【００１７】
[29]クライアントシステム１０は、１つまたは複数のアクセスリクエストを時間サーバ１５にも伝える。時間サーバ１５は、このようなアクセスリクエストに、実時間を含むレスポンスで応答する。含まれる実時間の確認をリクエストするアクセスリクエストに対して、時間サーバ１５は、アクセスリクエストに含まれる実時間が正確であるかどうかを示すデータで応答してもよい。
【００１８】
[30]図２−Ａは、本発明のいくつかの実施形態による、クライアントシステム１０の例示的なハードウェア構成を示す。図２Ａは、例証的な目的でコンピュータシステムの特定の構造を示し、他のクライアントシステムは、異なる構造を有してよい。いくつかの実施形態において、システム１０は、プロセッサ３２、メモリユニット３４、入力デバイス３６のセット、出力デバイス３８のセット、ストレージデバイス４０のセット、およびネットワークアダプタ４２のセットを含む物理デバイスのセットを含み、すべてがバス４４のセットによって接続される。
【００１９】
[31]いくつかの実施形態において、プロセッサ３２は、シグナルおよび／またはデータのセットで、計算演算および／または論理演算を実行するように構成された物理デバイス（例えば、半導体基板上に形成されたマルチコアの集積回路）を含む。いくつかの実施形態において、このような論理演算は、一連のプロセッサ命令（例えば、機械語または他のタイプのソフトウェア）の形でプロセッサ３２に届けられる。メモリユニット３４は、命令を遂行する過程で、プロセッサ３２によってアクセスまたは生成されるデータ／シグナルを格納する非一時的コンピュータ可読媒体（例えばＲＡＭ）を含んでよい。入力デバイス３６は、ユーザがデータおよび／または命令をクライアントシステム１０に入れることを可能にする個々のハードウェアインターフェースおよび／またはアダプタを含み、中でも、コンピュータキーボード、マウス、およびマイクロフォンを含んでよい。出力デバイス３８は、中でも、ディスプレイ画面およびスピーカ、ならびにクライアントシステム１０がデータをユーザに通信することを可能にする、グラフィックカードなどのハードウェアインターフェース／アダプタを含んでよい。いくつかの実施形態において、入力デバイス３６および出力デバイス３８は、タッチスクリーンデバイスの場合のように、共通のハードウェアを共有してよい。ストレージデバイス４０は、ソフトウェア命令および／またはデータの非一時的な保存、読取り、および書込みを可能にするコンピュータ可読媒体を含む。例示的なストレージデバイス４０は、磁気ディスクおよび光ディスクおよびフラッシュメモリデバイス、ならびにＣＤおよび／またはＤＶＤのディスクおよびドライブなどのリムーバブルメディアを含む。ネットワークアダプタ４２のセットは、コンピュータネットワーク、例えばネットワーク１２に、および／または他のデバイス／コンピュータシステムに、クライアントシステム１０が接続できるようにする。バス４４は、複数のシステムバス、周辺機器用バス、およびチップセットバス、ならびに／またはクライアントシステム１０のデバイス３２〜デバイス４２の相互通信を可能にするすべての他の回路機器を、一括して表す。例えば、バス４４は、中でも、プロセッサ３２をメモリ３４に接続するノースブリッジ、および／またはプロセッサ３２をデバイス３６〜デバイス４２に接続するサウスブリッジを含んでよい。
【００２０】
[32]図２−Ｂは、ＤＧＡ検出システム１１（図１）を実装するのに使用されるサーバなどの、サーバの例示的なハードウェア構成を示す。このようなサーバは、サーバプロセッサ１３２、サーバメモリ１３４、サーバストレージデバイス１４０のセット、およびネットワークアダプタ１４２のセットを含み、すべてがバス１４４のセットによって接続される。デバイス１３２、１３４、１４０、および１４２の動作は、上述のデバイス３２、３４、４０、および４２の動作と同一であってよい。例えば、サーバプロセッサ１３２は、シグナルおよび／またはデータのセットで、計算演算および／または論理演算を実行するように構成された物理デバイスを含んでよい。サーバメモリ１３４は、演算を実行する過程で、プロセッサ１３２によってアクセスまたは生成されるデータ／シグナルを格納する非一時的コンピュータ可読媒体（例えばＲＡＭ）を含んでよい。ネットワークアダプタ１４２は、ネットワーク１２などのコンピュータネットワークに、サーバが接続できるようにする。
【００２１】
[33]図３Ａは、仮想マシン７１０によって形成される潜在的なＤＧＡマルウェアホストと、仮想マシン７１０の外部にあるＤＧＡ検出器７０４との間の例示的なデータ交換を示す。図示された構成において、ＤＧＡ検出器７０４と仮想マシン７１０は、共通の物理的なコンピュータシステム７１１上で動く。特に、図３Ａに示された構成において、ＤＧＡ検出器７０４は、ハイパーバイザ７０５上で動くアプリケーションであり、および／またはハイパーバイザ７０５の一部を形成するアプリケーションである。仮想マシン７１０は、外部サイト７１４にアクセスリクエストを送り、外部サイト７１４から回答を受信する。プロセス７０１、プロセス７４２のセットは、仮想マシン７１０上で並行に動く。ＤＧＡ検出器７０４は、例示的なプロセス７０１によって送られた外部アクセスリクエスト７０２を分析する。ＤＧＡ検出器７０４は、また、リクエスト７０２に対する本来の回答７１５をインターセプトし、分析する。本来の回答７１５は、次に、ＤＧＡ検出器７０４によって、修正された回答７０３に修正される。リクエスト７０２および本来の回答７１５を分析する際、ＤＧＡ検出器７０４は、時間サーバデータベース７１２に問い合わせることがある。図３Ａにおいて、時系列データベース７１２は、コンピュータシステム７１１上にホストされるように示される。いくつかの実施形態において、時間サーバデータベース７１２は、コンピュータシステム７１１の外部にあってよい。あるプロセスがＤＧＡを実行することを判定すると、ＤＧＡ検出器７０４は、そのプロセスをブラックリストに載せるように、セキュリティアプリケーション５４に命令する。
【００２２】
[34]図３Ｂは、本発明のいくつかの実施形態による、コンピュータシステム７１１’上で動く潜在的なＤＧＡマルウェアホストと、システム７１１’とは別個のコンピュータシステム７１３上で動くＤＧＡ検出器７０４’との間の例示的なデータ交換を示す。コンピュータシステム７１１’は、クライアントコンピュータシステムであってよい。コンピュータシステム７１３は、ルータ、スイッチ、またはサーバコンピュータであってよい。プロセス７０１’、プロセス７４２’のセットは、コンピュータシステム７１１’上で並行に動く。ＤＧＡ検出器７０４は、プロセス７０１によって外部サイト７１４に送られた外部アクセスリクエスト７０２を分析する。ＤＧＡ検出器７０４は、また、リクエスト７０２に対する受信される回答７１５をインターセプトして分析する。本来の回答７１５は、修正された回答７０３に修正されてよい。リクエスト７０２および本来の回答７１５を分析する際、ＤＧＡ検出器は、時間サーバデータベース７１２を照会してよい。プロセスがＤＧＡを実行することを判定すると、ＤＧＡ検出器７０４は、ＤＧＡによって生成された１つまたは複数のドメイン名を判定し、ＤＧＡドメインをブラックリストに追加するように、セキュリティアプリケーション５４に命令する。いくつかの実施形態において、セキュリティアプリケーション５４は、ホスト７１１上で実行するＤＧＡ感染したプロセスをブラックリストに載せ、他のコンピュータシステムへの送信のために、識別されたマルウェアに対する１つまたは複数の識別特徴（例えばハッシュ）を生成してもよい。
【００２３】
[35]図４は、外部アクセスリクエスト７０２の一部を形成する例示的な一連のフィールド４０１ａ〜４０１ｄを示す。外部アクセスリクエスト７０２に対する本来のまたは修正された回答は、類似の一連のフィールドを含んでよい。いくつかの実施形態において、ＤＧＡ検出器７０４（図３Ａ）は、外部アクセスリクエスト７０２および／または外部アクセスリクエスト７０２に対する回答を解析することによって、実時間情報を含むフィールドを識別する。また、ＤＧＡ検出器７０４は、専用または非専用の時間サーバのアドレスへの外部アクセスリクエスト７０２を解析してもよい。解析は、下記に説明される正規表現のセットを使用して実施されてよく、正規表現のセットは、正式なルールを使用して入力データ内のパターンを説明／識別する。例えば、日付は、任意の順序の月および日（例えば、それぞれ、１から１２までの数字、および１から３１までの数字）の後または前にある年（例えば、１９または２０で始まる４桁の数字）を検索することによって識別されることがあり、いくつかの定義されたセパレータ（例えば、スペース、コンマ、他）の１つによって分離されることがある。別の例として、実時間は、それぞれ、２４、６０、および、６０までになるように抑えられた２つまたは３つの数によって識別されることがあり、いくつかの定義されたセパレータ（例えば、スペース、：、他）の１つによって分離されることがある。時間サーバのアドレスは、いくつかのプレフィックス（例えば、ｈｔｔｐ、ｈｔｔｐｓ、ｆｔｐ、またはネットワークタイムプロトコル、つまりｎｔｐなどのプロトコル識別子）、およびドメインネームサーバのデータベースまたは他のリストに存在するドメイン名またはインターネットプロトコル（ＩＰ）アドレスの１つの存在によって識別されることがある。
【００２４】
[36]適切な正規表現の構文および特定の設計は、ＤＧＡ検出器７０４の解析エンジンを実装するために選ばれる特定のソフトウェア言語および標準ライブラリに依存することがある。ＩＥＥＥのＰＯＳＩＸ標準は、正規表現のための適切な構文を提供する。加えて、正規表現を扱うための標準ライブラリは、Ｐｅｒｌ、Ｊａｖａ（登録商標）、Ｐｙｔｈｏｎ、Ｃ＋＋などを含む様々な言語で利用できる。
【００２５】
[37]例えば、ＩＥＥＥのＰＯＳＩＸ標準によって使用される、以下の構文を用いる正規表現のセットを考える。
（）＝グループを定義する。
［０−９］＝０〜９の任意の数字のキャラクタである。
［ａ−ｚ］＝ａ〜ｚの任意の文字のキャラクタである。
｛ｎ｝＝先行するグループは、ちょうどｎ回繰り返されてよく、ｎは自然数である。
｛，ｎ｝＝先行するグループは、ｎ回しか繰り返されなくてよく、ｎは自然数である。
｛ｎ，｝＝先行するグループは、少なくともｎ回繰り返されてよく、ｎは自然数である。
｛ｍ，ｎ｝＝先行するグループは、ｍ回〜ｎ回の間繰り返されてよく、ｍおよびｎは自然数である。
｛ｍ，ｎ，ｐ｝＝先行するグループは、ｍ回、ｎ回、またはｐ回繰り返されてよく、ｍ、ｎ、およびｐは自然数である。
＄＝分析されるテキストの終わりである。
【００２６】
[38]上記の構文を用いて、正規表現「＾（１９｜２０）＼ｄ＼ｄ［−  ／．］（０［１−９］｜１［０１２］）［−  ／．］（０［１−９］｜［１２］［０−９］｜３［０１］）＄」は、４つのセパレータの選択肢を伴う、１９００−０１−０１と２０９９−１２−３１の間から、ｙｙｙｙ−ｍｍ−ｄｄのフォーマットの日付にマッチする。４つのセパレータは、「−」、「  」、「／」、および「．」である。また、例として、正規表現「＾（ｈｔ｜ｆ）ｔｐ（ｓ？）＼：＼／＼／［０−９ａ−ｚＡ−Ｚ］（［−．＼ｗ］＊［０−９ａ−ｚＡ−Ｚ］）＊（：（０−９）＊）＊（＼／？）（［ａ−ｚＡ−Ｚ０−９＼−＼．＼？＼，＼’＼／＼＼＼＋＆ａｍｐ；％＼＄＃＿］＊）？＄」は、ＵＲＬのウェブサイトアドレスのアドレスにマッチする。
【００２７】
[39]図５Ａは、本発明のいくつかの実施形態による、時間サーバへの外部アクセスリクエストを解析するＤＧＡ検出器７０４（図３Ａ〜図３Ｂ）によって遂行される例示的な一連のステップを示す。ステップ５０１において、ＤＧＡ検出器７０４は、すべての外部アクセスリクエストを解析する。ＤＧＡ検出器７０４は、さらに、外部アクセスリクエストに対する本来の回答をインターセプトし（ステップ５０２）、本来の回答を解析する（ステップ５０３）。ステップ５０４において、ＤＧＡ検出器７０４は、予期される回答が実時間を含むかどうかを判定する。上述のように、図示されたステップは、示された特定の順序で実施される必要はなく、例えば、いくつかの実施形態において、ステップ５０４は、ステップ５０２および／またはステップ５０３の前に実施されてよい。ステップ５０４における判定は、アクセスリクエストによって標的とされるアドレスを、専用および非専用の時間サーバを含む時間サーバの１つまたは複数のリストと比較することによって、アクセスリクエストが専用または非専用の時間サーバのアドレスを含むかどうかを判定することによって行われてよい。専用の時間サーバは、Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｆｏｕｎｄａｔｉｏｎによって、そのネットワークタイムプロトコルのサイト、つまりｗｗｗ．ｎｔｐ．ｏｒｇで利用できるようにされた事前定義リストなどの、事前定義リストを介して識別されてよい。専用の時間サーバは、リクエストの中のネットワークタイムプロトコル（ｎｔｐ）識別子の存在を介して識別されてもよい。非専用の時間サーバは、大衆的なサイト（例えば、ｗｗｗ．ｙａｈｏｏ．ｃｏｍ）および特殊用途のサイト（例えば、ｗｗｗ．ｗｅａｔｈｅｒ．ｃｏｍ）を検索して実時間を戻すサイトを選択し、検索結果に従って、非専用の時間サーバのリストを生成することによって識別されてよい。ステップ５０４において、解析することによって見つけられたＵＲＬアドレスと、時間サーバデータベース７１２からのＵＲＬアドレスのリストとの間に、マッチが存在するかどうかを判定するために、ＤＧＡ検出器７０４は、時間サーバデータベース７１２に問い合わせてよい。
【００２８】
[40]外部アクセスリクエストが時間サーバのアドレスを含まないことを、ＤＧＡ検出器７０４が判定する場合、ＤＧＡ検出器７０４は、プロセスがＤＧＡを実行するかどうかを、ステップ５０７で検出する。ステップ５０７は、下記で詳細に説明される。外部アクセスリクエストが時間サーバのアドレスを含むことを、ＤＧＡ検出器７０４が判定する場合、下記に解説されるように、ＤＧＡ７０４検出器は、本来の実時間を、早められた実時間に置換することによって、インターセプトされた本来の回答を修正する（ステップ５０５）。次に、ＤＧＡ検出器７０４は、ステップ５０１で解析されたアクセスリクエストを送ったプロセスに、修正された回答を送る（ステップ５０６）。
【００２９】
[41]図５Ｂは、本発明のいくつかの実施形態による、外部アクセスリクエストに対する本来の回答を解析するために、ＤＧＡ検出器７０４（図３Ａ〜図３Ｂ）によって遂行される例示的な一連のステップを示す。ステップ５０２において、ＤＧＡ検出器７０４は、外部アクセスリクエストに対する本来の回答をインターセプトする。ステップ５０３において、ＤＧＡ検出器７０４は、上述のように、本来の回答を解析する。ステップ５０７において、ＤＧＡ検出器７０４は、プロセスがＤＧＡを実行するかどうかを判定する。
【００３０】
[42]ステップ５２４において、ＤＧＡ検出器７０４は、本来の回答が実時間フィールドを含むかどうかをさらに判定する。ステップ５２４で実施される判定は、テキストフィールドおよび／または画像フィールドに埋め込まれた１つまたは複数の実時間の値を検索することを含んでよい。テキストフィールドおよび／または画像フィールドを検索することは、当技術分野で知られた方法を使用して達成され得る。いくつかの実施形態において、テキストフィールドを検索することは、特化されたアプリケーション（例えば、テキストファイル用のテキストエディタ）を使用して、フィールドを収めるオブジェクトを編集することを含んでよい。ステップ５２４は、解析の結果に対して、日付で正規表現をマッチさせることを含んでよい。次に、下記に解説されるように、ＤＧＡ検出器７０４は、実時間を、早められた実時間に置換することによって、インターセプトされた回答を修正する（ステップ５０５）。次に、ＤＧＡ検出器７０４は、解析されたアクセスリクエストを送ったプロセスに、修正された回答を送る（ステップ５０６）。
【００３１】
[43]図５Ｃは、プロセスがＤＧＡを実行するかどうかを判定するときに、ＤＧＡ検出器７０４（図３Ａ〜図３Ｂ）によって遂行されるステップ５０７（図５Ａ〜図５Ｂ）内の例示的な一連のステップを示す。ステップ５２７において、ＤＧＡ検出器７０４は、アクセスリクエストに対する本来の回答が成功であるかどうかを判定する。本来の回答が成功ではない場合、ＤＧＡ検出器７０４は、コンピュータシステム上で動くプロセスがＤＧＡを実行するかどうかを判定する（ステップ５２８）。ステップ５２８における判定は、当技術分野で知られた方法を使用して実施されてよい。ＤＧＡ検出についてのステップ５２８からの詳細は下記に提示される。プロセスがＤＧＡを実行する場合、ＤＧＡによって生成されたドメイン名が判定される（ステップ５２９）。ステップ５２９で識別されたドメイン名は、ステップ５３１において、セキュリティアプリケーションからブラックリストに追加される。ブラックリストは、複数のクライアントシステム１０を適時に更新するために使用されてよく、複数のクライアントシステム１０が、ＤＧＡマルウェアから保護されるようになることがある。セキュリティアプリケーションは、ステップ５０９からのドメイン名を、ドメイン名の、指定されたレジストラのデータベースに登録するようにさらに構成されてよい。ドメイン名の適時の登録は、マルウェアの作成者が、ドメイン名を使用してボットネットマルウェアを伝播および／または活性化させるのを防ぐことができる。セキュリティアプリケーションは、登録されたドメイン名にアクセスリクエストを送るコンピュータシステムのセットを識別するようにさらに構成されてよい。コンピュータシステムの識別されたセットは、ボットネットのメンバを含んでよい。早期の識別は、ボットネットマルウェアの伝搬を制限することができる。
【００３２】
[44]マルウェアは、様々な方法を通じて、例えば、コンピュータシステム上で動くオペレーティングシステムに問い合わせることによって、実時間を判定することがある。セキュリティアプリケーションは、早められた実時間を示すことによって、オペレーティングシステムが示す実時間を変化させてよい。早められた実時間は、未来の実時間を示す。マルウェアは、ＯＳに問い合わせることによって、実時間の値をリクエストすることがある。Ｗｉｎｄｏｗｓ（登録商標）を動かすコンピュータシステム上で、関数ＧｅｔＳｙｓｔｅｍＴｉｍｅ（）に対するコールは、実時間の値を取り出すために使用されることがある。マルウェアは、次に、ＯＳによって示された早められた実時間が正確であることを照合することがある。照合するために、マルウェアは、時間サーバへの外部アクセスリクエストに、早められた実時間を含めることがある。時間サーバからの本来の回答は、早められた実時間が正確であるかどうかの指示を含んでよい。
【００３３】
[45]図５Ｄは、本発明のいくつかの実施形態による、早められた実時間を含む外部アクセスリクエストを解析するＤＧＡ検出器７０４（図３Ａ〜図３Ｂ）によって遂行される例示的な一連のステップを示す。ステップ５０１において、ＤＧＡ検出器７０４は、すべての外部アクセスリクエストを解析する。次に、ＤＧＡ検出器７０４は、外部アクセスリクエストに対する本来の回答をインターセプトし（ステップ５０２）、本来の回答を解析する（ステップ５０３）。ステップ５４４において、ＤＧＡ検出器７０４は、本来の回答が成功であるかどうかを判定する。本来の回答が成功である場合、ＤＧＡ検出器７０４は、次に、リクエストが早められた実時間を含むかどうかを判定する（ステップ５４６）。このような判定は、解析されたリクエストから抽出された時間を、現在の時間の値と比較することによって行われてよい。比較は、所望のレベルの精度で、例えば、日付および／または時間（しかし必ずしも分／秒ではない）がマッチするかどうかを判定することによって実施されてよい。ＤＧＡ検出器７０４は、コンピュータシステム上で動くオペレーティングシステムに問い合わせることによって、現在の時間の値を判定してよい。このような早められた実時間が含まれる場合、ＤＧＡ検出器７０４は、早められた実時間が正確ではないという本来の情報を、本来の回答が含むかどうかを判定する（ステップ５４７）。早められた実時間が正確ではないという本来の情報を、本来の回答が含む場合、ＤＧＡ検出器７０４は、本来の情報を、早められた実時間が正確であることを示す修正された情報に置換することによって、本来の回答を修正する（ステップ５４８）。次に、ＤＧＡ検出器７０４は、解析されたアクセスリクエストを送ったプロセスに、修正された回答を送る（ステップ５０６）。本来の回答が成功ではない場合、ＤＧＡ検出器は、上述のＤＧＡ検出ステップ５０７を遂行する。
【００３４】
[46]ステップ５４５において、解析されたリクエストに対する本来の回答は、インターセプトされ（ステップ５４５）、解析される（ステップ５４６）。ステップ５４７において、ＤＧＡ検出器７０４は、ステップ５４３で判定された早められた実時間が正確ではないという情報を、解析された本来の回答が含むかどうかを判定する。肯定的な判定がステップ５４７においてなされる場合、ＤＧＡ検出器７０４は、早められた実時間が不正確であるという情報を、早められた実時間が正確であるという情報に置換し、修正された回答を生成する。修正された回答は、次に、解析されたアクセスリクエストを送ったプロセスに送られる。
【００３５】
[47]図６は、連続する回答が本来の実時間を含むときの、本来の実時間６０６と早められた実時間６０５との間の数学的関係を示す。この数学的関係は、外部アクセスリクエストを発行するプロセスに依存することのない機能によって、ＤＧＡ検出器の中でエンコードされてよい。１つの実施形態において、実時間は、ＯＳによってクライアントシステム上で測定される現在の時間であってよい。破線６０１は、早められた実時間が本来の実時間に等しい場合を示す。１つの実施形態において、早められた実時間は、凸状の関数６０３によって表されることがある。これは、永久に実時間より進んで動く早められた実時間を提供することが有利であるとき、例えば、プロセスが一定の挙動に対して照合されるときに望ましいことがある。１つの実施形態において、早められた実時間は、凹形の関数６０４によって表されることがある。これは、本来の実時間よりかなり進んで動いた継続期間の後に減速される、早められた実時間を提供することが有利であるとき、例えば、プロセスの挙動がある継続期間にわたって詳細に照合されるときに、望ましいことがある。１つの実施形態において、早められた実時間は、直線の関数６０２によって表されることがある。これは、いかなる予備知識もない状態で、プロセスの挙動が初めて調査されるときに、望ましいことがある。
【００３６】
[48]プロセスがＤＧＡを実行するかどうかを判定するために、様々な方法が使用されることがある。いくつかの方法は外部サイト７１４（図１）のＵＲＬを分析することがあり、ＤＧＡによって生成される多くのＵＲＬは「ｗｗｗ」で始まらないという観察などの発見的方法を使用することがある。アクセスされるＵＲＬの明瞭さを分析するために、他の方法が発見的方法に適用されることがある。さらに他の方法は、所定の最新の期間内、例えば最近の２４時間のうちに、ドメインレジストラによって登録された任意の外部サイトをグレイリストに入れる（ｇｒｅｙｌｉｓｔｉｎｇ）ことに依存する。
【００３７】
[49]ＤＧＡ検出のためのより精巧な方法は、疑われるプロセスの実行コードの分析を用いることがある。図７はこのような方法を示す。このような方法は、（時間、システムイベント、他などの）一定の既知のタイプのものであるイベントによって、少なくともいくつかのＤＧＡマルウェアがトリガされるという観察に依存する。第１のステップ７０１において、分析のためにトリガタイプが選択される。ステップ７０３において、疑われるプロセスに、選択されたトリガタイプの入力を供給しながら、混合された（具体的かつ象徴的な）実行を使用して疑われるプロセスが実行される。選択されたトリガタイプの入力は、象徴的な変数として表される。象徴的な変数に依存する分岐がこのステップで発生しない場合、混合された実行におけるそれぞれのステップは具体的に実行され、そうでなければ象徴的に実行される。ステップ７０５において、象徴的な変数の値に基づいて、すべての実行パスが判定される。ステップ７０７において、すべての実現可能な実行パスが判定される。例えば、互いに対して矛盾する２つのトリガ値を実行パスが要求するので、ステップ７０５で判定される実行パスのいくつかは、実現可能でないことがある。例えば、実現可能ではない実行パスは２つの分岐を含むことがあり、実時間の値が２０１５年５月より前である場合には第１の分岐がトリガされ、実時間の値が２０１５年７月より後である場合には第２の分岐がトリガされる。最終的に、ステップ７１１において、それぞれの実現可能なパスで生成されたＵＲＬが分析される。分析は、ＵＲＬを、一定のトリガタイプおよび値と相関させることを含んでよい。例として、２つしかないトリガタイプの値の変化に応答してＵＲＬの８０％以上が生成される場合、疑われるプロセスがＤＧＡを実行するという判定がなされる。
【００３８】
[50]上述の例示的なシステムおよび方法は、ＤＧＡ実行ボットネット（ＤＧＡ−ｅｘｅｃｕｔｉｏｎ  ｂｏｔｎｅｔ）などのマルウェアを検出することを可能にする。いくつかの実施形態において、外部アクセスリクエストおよび回答をインターセプトおよび解析し、ＤＧＡを検出するマシンとは別個のマシン上で、疑わしいプロセスが動く。別個のマシンは、異なる物理的コンピュータシステムである場合も、または同じ物理的コンピュータシステム上でホストされる仮想マシンである場合もある。すべての回答は解析され、本来の実時間を含む回答は修正される。修正された回答の内部で、早められた実時間は、本来の実時間を置換する。次に、疑わしいプロセスがＤＧＡを実行するかどうかを判定するために、疑わしいプロセスが分析される。早められた実時間を提供することによって、ドメイン名が生成されるであろう実際の時間より前に、ＤＧＡによって生成されたドメイン名が取得され得る。
【００３９】
[51]いくつかの実施形態において、疑わしいプロセスは、早められた実時間を含む外部アクセスリクエストを送ることがある。この状況は、オペレーティングシステムに問い合わせることから取得された実時間を、疑わしいプロセスが照合しようと試みるときに発生することがある。調査員は、未来の時間を指し示すことによって、オペレーティングシステムによって示された実時間を変更してよい。このように、オペレーティングシステムによって示された実時間は、早められた実時間になる。通常の運用では、外部サイトからの本来の回答が、早められた実時間が正確ではないことを示す。早められた実時間が正確であることを修正された回答が示すように、本来の回答が修正される。次に、疑わしいプロセスがＤＧＡを実行するかどうかを判定するために、疑わしいプロセスが分析される。早められた実時間を提供することによって、ドメイン名が生成されるであろう実際の時間より前に、ＤＧＡによって生成されたドメイン名が取得され得る。これにより、調査員は、ＤＧＡが未来に生成するドメイン名を判定することができる。
【００４０】
[52]いくつかの実施形態によれば、疑わしいプロセスによって送られ、実時間を含む複数の回答が受信されるとき、修正された回答のための早められた実時間を計算するために、いくつかの数学関数が使用されることがある。ＤＧＡによるドメインの生成における一定の頻度が疑われるとき、これらの様々な関数が望ましい。
【００４１】
[53]早められた実時間を提供し、その結果、ＤＧＡの実行をトリガすることは、実行コードを逆行分析するという時間のかかる取組みに従事することなく、調査員が悪意のある挙動を検出することを可能にする。ＤＧＡによって生成されたドメインをブラックリストに載せることは、ドメイン生成アルゴリズムを使用するマルウェアがマルウェアの作成者によって活性化される前に、セキュリティアプリケーションベンダが彼らの顧客にアップデートを提供することを可能にする。ＤＧＡによって生成されたと判定されるドメインは、予め登録されてよく、登録されたドメインで受信されたリクエストに従って、ボットネットのメンバが識別されてよい。
【００４２】
[54]潜在的なＤＧＡマルウェアホストの外部で、ＤＧＡの実行をインターセプトし、解析し、検出することは、潜在的なＤＧＡマルウェアホストをリサーチツールから隔離するという利点を提供する。したがって、アンチマルウェアツールのあるところで、マルウェアがその挙動を修正するリスクが大きく低減される。加えて、このようなアプローチは、ＤＧＡマルウェアホストのＯＳによって示される内部の実時間の変化を必要としない。ＤＧＡマルウェアを検出するために、調査員は最適なコンピューティング環境を選んでよい。いくつかの実施形態において、疑わしいプロセスを開始することが望ましいことがある。いくつかの実施形態において、イントラネットネットワークのインターネットトラフィックを集約するルータまたはスイッチからＤＧＡマルウェアを検出することが望ましいことがある。
【００４３】
[55]本発明の範囲を逸脱することなく、上記の実施形態は、多くの方式で変更されてよいことが当業者には明らかであろう。それに応じて、本発明の範囲は、以下の特許請求の範囲およびその法的均等物によって判定されるべきである。
【図１】
0006726429.tif 000002
【図２Ａ】
0006726429.tif 000003
【図２Ｂ】
0006726429.tif 000004
【図３Ａ】
0006726429.tif 000005
【図３Ｂ】
0006726429.tif 000006
【図４】
0006726429.tif 000007
【図５Ａ】
0006726429.tif 000008
【図５Ｂ】
0006726429.tif 000009
【図５Ｃ】
0006726429.tif 000010
【図５Ｄ】
0006726429.tif 000011
【図６】
0006726429.tif 000012
【図７】
0006726429.tif 000013