説明

異常なDNS名前解決を検出するための複数のソースを発信源とする集計DNS情報の使用

DNSセキュリティシステムは、複数のクライアントコンピュータを発信源とする集計DNS情報を集めて使用し、異常なDNS名前解決を検出する。サーバDNSセキュリティコンポーネントは、複数のクライアントコンピュータからDNS情報の複数の送信を受け取り、DNS情報の各送信は、特定のDNS名前解決の特定の例に関する。サーバコンポーネントは、複数のクライアントコンピュータからのDNS情報を集計する。サーバコンポーネントは、特定のクライアントコンピュータから受信された、特定のDNS名に関するDNS情報を、複数のクライアントコンピュータから受信された、同じDNS名に関する集計DNS情報と比較し、異常なDNS名前解決を特定する。受信されたDNS情報に関する異常が特定される場合には、そこから異常なDNS情報が受信された特定のクライアントコンピュータに警告を送信することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、コンピュータセキュリティに関し、より具体的には、異常なDNS名前解決を検出するための複数のソースを発信源とする集計DNS情報の使用に関する。
【背景技術】
【0002】
多くの異なるタイプのドメイン名サービス(「DNS」)攻撃は、悪意のあるパーティによって使用され、知らない間にユーザを悪意のあるサーバに移動する。DNSキャッシュポイズニング、Fast−FluxおよびDouble−Flux手法、ローカルホストファイルの書き換え、ローカルWinSock/WinInetプロキシ構成の変更ならびにその他などの攻撃を使用して正規のホスト名を解決する試みを変更し、その結果、悪意のあるサーバに解決をリダイレクトする。
【発明の概要】
【発明が解決しようとする課題】
【0003】
多くの場合、クライアントベースのセキュリティソフトウェアが、クライアントDNSレコードが操作されていることを検出するのは非常に難しい。実際に、多くのDNS攻撃は、クライアントにとってローカルではなく、したがって、クライアント側単独で実行可能に対処することはできない。他方では、多くのDNS攻撃は、個別のクライアントにとってローカルであり、したがって、ネットワーク専用セキュリティソリューションによって容易に対処することはできない。これらの問題に対処することが望ましい。
【課題を解決するための手段】
【0004】
DNSセキュリティシステムは、複数のコンピュータ(例えば、クライアントコンピュータ、ネットワークコンピューティングデバイス)を発信源とする集計DNS情報を集めて使用し、DNS攻撃を示し得る異常なDNS名前解決を検出する。クライアントDNSセキュリティコンポーネントは、複数のクライアントコンピュータの各々のコンピュータ上で実行する。各クライアントDNSセキュリティコンポーネントは、そのクライアントコンピュータ上でDNS名を解決する試みを特定する。これは、ローカルキャッシュまたはホストファイルを介してなどのDNS名のローカル解決と、リモートDNSサーバに送信されるDNSクエリとを含むことができる。いずれの場合も、クライアントDNSセキュリティコンポーネントは、例えば、クライアントコンピュータにとってローカルであるDNS設定、DNSクエリおよびその結果生じた応答を分析することによって、特定されたDNS名を解決する試みに関するDNS情報を収集する。複数のクライアントコンピュータ上で実行するクライアントセキュリティコンポーネントは、それぞれの特定されたDNS名前解決に関する収集DNS情報をリモートコンピュータ(例えば、サーバ)上で実行するサーバDNSセキュリティコンポーネントに送信する。いくつかの実施形態では、1つまたは複数のネットワークDNSセキュリティコンポーネントは、ネットワークレベルで実行し、ネットワークDNSトラフィックをモニタし、それぞれの特定されたDNS名前解決に関する収集DNS情報をサーバDNSセキュリティコンポーネントに送信する。
【0005】
サーバDNSセキュリティコンポーネントは、複数のクライアントコンピュータからDNS情報の複数の送信を受け取り、DNS情報の各送信は、特定のDNS名前解決の特定の例に関する情報を含む。サーバDNSセキュリティコンポーネントは、複数のクライアントコンピュータから受け取ったDNS情報の複数の送信を集計する。集計DNS情報は、例えば、データベース内に格納することができる。サーバDNSセキュリティコンポーネントは、特定のクライアントコンピュータから受信された、特定のDNS名に関するDNS情報を、複数のクライアントコンピュータから受信された、同じDNS名に関する集計DNS情報と比較する。例えば、DNSセキュリティコンポーネントは、特定のクライアントコンピュータから受信された、特定のDNS名の特定の解決に関する情報を、複数のクライアントコンピュータから受信された、同じDNS名の複数の解決に関する集計DNS情報と比較することができる。
【0006】
解決のIPアドレス、解決の方法、time to liveおよびDNSリソースレコードなどの因子を分析することによって、サーバDNSセキュリティコンポーネントは、特定のクライアントコンピュータから受信された、特定のDNS名に関するDNS情報が異常かどうか判断することができる。サーバDNSセキュリティコンポーネントがDNS情報と同じDNS名に関する集計DNS情報によって示されたパターンとの違いなどの受信されたDNS情報に関する少なくとも1つの異常を特定する場合には、サーバDNSセキュリティコンポーネントは、受信されたDNS情報は異常であると判断し、異常なDNS情報が受信された特定のクライアントコンピュータへ警告または他の指示を送信することができる。受信されたDNS情報は異常であると判断する工程に対応して、サーバDNSセキュリティコンポーネントは、複数のクライアントコンピュータから受信された、同じDNS名の複数の解決に関する集計DNS情報に基づいて、解決を変更することもできる。サーバDNSセキュリティコンポーネントが受信されたDNS情報は異常でないと判断する場合には、サーバDNSセキュリティコンポーネントは、送信元のクライアントコンピュータへ適切な指示を送信することができる。
【0007】
本概要および以下の詳細な説明で説明される特徴および利点は包括的ではなく、特に、図面、明細書およびその特許請求の範囲を考慮することで、多くの追加の特徴および利点が当業者には明らかとなろう。その上、本明細書で使用される言語は、読み易さと教授目的のために主に選択され、本発明の対象物を明確にするまたは制限するために選択されてはいないが、特許請求の範囲をそのような本発明の対象物を決定するために必要なものとして用いることができることに留意されたい。
【図面の簡単な説明】
【0008】
【図1】いくつかの実施形態による、DNSセキュリティシステムを実装することができる例示的なネットワークアーキテクチャのブロック図である。
【図2】いくつかの実施形態による、DNSセキュリティシステムの実装に適切なコンピュータシステムのブロック図である。
【図3】いくつかの実施形態による、DNSセキュリティシステムのオペレーションの高レベルの概観のブロック図である。
【図4】いくつかの実施形態による、クライアントDNSセキュリティコンポーネントのオペレーションのブロック図である。
【図5】いくつかの実施形態による、サーバDNSセキュリティコンポーネントのオペレーションのブロック図である。
【図6】いくつかの実施形態による、DNSセキュリティシステムのオペレーションのフローチャートである。
【発明を実施するための形態】
【0009】
図は、例示のみを目的としたさまざまな実施形態を描写する。当業者であれば、以下の論考から、本明細書に示される構造および方法の代替の実施形態を本明細書で説明される原理から逸脱することなく使用できることが容易に認識されよう。
【0010】
図1は、DNSセキュリティシステム101を実装することができる例示的なネットワークアーキテクチャ100を示すブロック図である。示されるネットワークアーキテクチャ100は、複数のクライアント103A、103Bおよび103Nとともに、複数のサーバ105Aおよび105Nを含む。図1では、DNSセキュリティシステム101は、サーバ105Aならびにクライアント103A、103Bおよび103Nに存在するものとして示される。これはほんの一例にすぎず、さまざまな実施形態では、このシステム101のさまざまな機能性を、クライアント103、サーバ105、ネットワークコンピューティングデバイス313上でインスタンス化することができるか、または、要望に応じて、複数のクライアント103間および/またはサーバ105間で分配することができることを理解されたい。
【0011】
クライアント103およびサーバ105は、図2で示されるものや以下で説明されるものなどのコンピュータシステム210を使用して実装することができる。クライアント103およびサーバ105は、例えば、図2と併せて以下で説明されるネットワークインターフェース248またはモデム247を介して、ネットワーク107と通信可能に結合される。クライアント103は、例えば、ウェブブラウザまたは他のクライアントソフトウェア(図示せず)を使用して、サーバ105上の申込者および/またはデータにアクセスすることができる。
【0012】
図1では一例として3台のクライアントおよび2台のサーバが示されるが、実際には、はるかに多くの(または少ない)クライアント103および/またはサーバ105を配備することができる。一実施形態では、ネットワーク107はインターネットの形態である。他の実施形態では、他のネットワーク107またはネットワークーベースの環境を使用することができる。
【0013】
図2は、DNSセキュリティシステム101の実装に適切なコンピュータシステム210のブロック図である。クライアント103、サーバ105およびネットワークコンピューティングデバイス313は、このようなコンピュータシステム210の形態で実装することができる。示されるように、コンピュータシステム210の1つのコンポーネントはバス212である。バス212は、コンピュータシステム210の他のコンポーネント、例えば、少なくとも1つのプロセッサ214、システムメモリ217(例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ)、入出力(I/O)コントローラ218、スピーカーシステム220などの外部のオーディオ装置と通信可能に結合されたオーディオ出力インターフェース222、ディスプレイスクリーン224などの外部のビデオ出力装置と通信可能に結合されたディスプレイアダプタ226、シリアルポート230、ユニバーサルシリアルバス(USB)レセプタクル230、パラレルポート(図示せず)などの1つまたは複数のインターフェース、キーボード232と通信可能に結合されたキーボードコントローラ233、少なくとも1つのハードディスク244(他の形態の磁気媒体)と通信可能に結合されたストレージインターフェース234、フロッピー(登録商標)ディスク238を受け入れるよう構成されたフロッピーディスクドライブ237、ファイバーチャネル(FC)ネットワーク290と接続するよう構成されたホストバスアダプタ(HBA)インターフェースカード235A、SCSIバス239と接続するよう構成されたHBAインターフェースカード235B、光ディスク242を受け入れるよう構成された光ディスクドライブ240、例えばUSBレセプタクル228を介してバス212と結合されたマウス246(または、他のポインティングデバイス)、例えばシリアルポート230を介してバス212と結合されたモデム247、および、例えばバス212と直接結合されたネットワークインターフェース248を通信可能に結合する。
【0014】
他のコンポーネント(図示せず)も同様に接続することができる(例えば、文書スキャナ、デジタルカメラ、プリンタなど)。逆に、図2で示されるコンポーネントのすべてが存在する必要はない。コンポーネントは、図2に示されるものとは異なる方法で相互接続することができる。
【0015】
バス212は、プロセッサ214とシステムメモリ217との間のデータ通信を可能にし、上記で記述されたように、システムメモリ217は、ROMおよび/またはフラッシュメモリならびにRAMを含み得る。RAMは、通常、オペレーティングシステムおよびアプリケーションプログラムがロードされるメインメモリである。ROMおよび/またはフラッシュメモリは、その他のコードとして、ある基本ハードウェアオペレーションを制御する基本入出力システム(BIOS)を含むことができる。アプリケーションプログラムは、ローカルコンピュータ可読媒体(例えば、ハードディスク244、光ディスク242)上に格納し、システムメモリ217にロードし、プロセッサ214によって実行することができる。また、アプリケーションプログラムは、遠隔地(すなわち、遠隔設置されたコンピュータシステム210)から、例えば、ネットワークインターフェース248またはモデム247を介して、システムメモリ217にロードすることもできる。図2では、DNSセキュリティシステム101は、システムメモリ217内に存在するものとして示される。DNSセキュリティシステム101の仕組みについては、図3と併せて以下でさらに詳細に説明される。
【0016】
ストレージインターフェース234は、1つまたは複数のハードディスク244(および/または、他の標準記憶媒体)と結合される。ハードディスク244は、コンピュータシステム210の一部であるか、または、物理的に分離され、他のインターフェースシステムを介してアクセスされる場合がある。
【0017】
ネットワークインターフェース248および/またはモデム247は、インターネットなどのネットワーク107と直接的または間接的に通信可能に結合することができる。そのような結合は、有線または無線であり得る。
【0018】
図3は、いくつかの実施形態による、DNSセキュリティシステム101の高レベルのオペレーションを示し、DNSセキュリティシステム101は、1台のサーバ105のシステムメモリ217、3台のクライアント103のコンピュータシステム210および1台のネットワークコンピューティングデバイス313内に存在する。上記で説明されるように、DNSセキュリティシステム101の機能性は、クライアント103、サーバ105、ネットワークコンピューティングデバイス313上に存在するか、または、複数のコンピュータシステム210間で分配することができ、これには、DNSセキュリティシステム101の機能性がサービスとしてネットワーク107上で提供される、クラウドベースのコンピューティング環境内のものが含まれる。図3では3台のクライアント103のみが示されるが、実際には、はるかに多くのクライアント103が配備されるであろうことを理解されたい。例えば、いくつかの実施形態では、数千(またはそれ以上)ものクライアント103が、クライアント側のDNSセキュリティシステム101の機能性を実行する。さらに、単一のサーバ105のみが示されているが、要望に応じて、サーバ側のDNSセキュリティシステム101の機能性を複数のサーバ105間で分配することができる。図3、4および5ではDNSセキュリティシステム101は単一の実体として示されるが、示されるDNSセキュリティシステム101は機能性の収集体を表し、その収集体は、要望に応じて、単一または複数のコンポーネントおよび/またはモジュールとしてインスタンス化することができることを理解されたい(DNSセキュリティシステム101の特定の複数のコンポーネントおよびモジュールのインスタンス化については、図3、4および5で示される)。DNSセキュリティシステム101のコンポーネントおよびモジュールは、任意のコンピュータシステム210のシステムメモリ217(例えば、RAM、ROM、フラッシュメモリ)内でインスタンス化する(例えば、オブジェクトコードまたは実行可能なイメージとして)ことができ、その結果、コンピュータシステム210のプロセッサ214がコンポーネントまたはモジュールを処理すると、コンピュータシステム210は関連する機能性を実行することを理解されたい。本明細書で使用される用語「コンピュータシステム」、「コンピュータ」、「クライアント」、「クライアントコンピュータ」、「サーバ」、「サーバコンピュータ」および「コンピューティングデバイス」は、説明される機能性を実行するよう構成および/またはプログラムされた1台または複数のコンピュータを意味する。さらに、DNSセキュリティシステム101の機能性を実施するプログラムコードは、コンピュータ可読記憶媒体に格納することができる。これに関連して、磁気記憶媒体または光記憶媒体などの任意の形態の有形のコンピュータ可読記憶媒体を使用することができる。本明細書で使用される用語「コンピュータ可読記憶媒体」は、基本的な物理的媒体から分離された電気信号を意味しない。
【0019】
図3で示されるように、一実施形態では、DNSセキュリティシステム101は、その各々がそのシステムメモリ217内でクライアントDNSセキュリティコンポーネント301を実行する複数のクライアント103と、そのシステムメモリ217内でサーバDNSセキュリティコンポーネント303を実行する集中型のサーバ105とを含む。クライアントDNSセキュリティコンポーネント301およびサーバDNSセキュリティコンポーネント303の特定のモジュールについては、図4および5と併せて以下で詳細に説明される。複数のクライアント103上でクライアントDNSセキュリティコンポーネント301と通信を行うことによって、サーバDNSセキュリティコンポーネント303は、大規模なユーザコミュニティ(例えば、多くのクライアント103)から、さまざまなDNS名305の挙動に関するDNS情報309を経時的に収集することができる。例えば、サーバDNSセキュリティコンポーネント303は、どのような方法でDNS名305を解決するか、どのIPアドレス307にDNS名305を解決するかなどについて学ぶことができる。この方法では、サーバDNSセキュリティコンポーネント303は、多くのクライアント103上のDNS活動をモニタし、こうして、以下で詳細に説明されるように、異常なDNS名305の解決パターン、DNS名305の早すぎる変更および他の不規則な活動を検出し、結果的に、対応するDNS名305の例を異常と判定する。他方では、一貫して同じIPアドレス307に解決しているもの、変更が遅いものなどとして観察されたDNS名305は、異常でないと判定することができる。
【0020】
図4と併せて以下でさらに詳細に説明されるように、各クライアント103上のクライアントDNSセキュリティコンポーネント301は、ローカルのDNS設定およびネットワーク107上でクライアント103との間を行き来するDNSトラフィックを検査する。集められたDNS情報309は、サーバDNSセキュリティコンポーネント303に提出される。サーバDNSセキュリティコンポーネント303は、特定のDNS名305に対する解決パターンを相関させ、分析する。クライアント103がDNS名305の解決を試みるときは常に、クライアント103は、正規のDNSサーバ(図3では、図示せず)またはローカルで(例えば、キャッシュを通じて)のいずれかによって解決すべき通例のDNSクエリ(図3では、図示せず)を発行することができる。DNSクエリは、DNS名305に対応するIPアドレス307をもたらす。クライアントDNSセキュリティコンポーネント301は、IPアドレス307および他の対応するDNS情報309をサーバDNSセキュリティコンポーネント303に送信することができ、サーバDNSセキュリティコンポーネント303は、IPアドレス307へのDNS名305の解決が異常かどうか判断することができる。
【0021】
大多数のクライアント103から情報を寄せ集め、したがって、どのように所与のDNS名305がクライアント103ベースにわたって解決されてきたかを経時的に示すデータを有することによって、サーバDNSセキュリティコンポーネント303は、DNS解決パターンにおける異常を特定することができる。例えば、サーバDNSセキュリティコンポーネント303がDNS名「domain.com」における多くの提出に関するDNS情報309を有し、そのすべては、非常に高いtime to liveおよび同じIPアドレス307「X.X.X.X」への一貫した解決を報告すると仮定する。次いで、サーバDNSセキュリティコンポーネント303が、クライアントDNSセキュリティコンポーネント301から、同じDNS名305が異なるIPアドレス307「Y.Y.Y.Y」に解決されたことを示すDNS情報309を受信すると、サーバDNSセキュリティコンポーネント303は、DNS名305のこの解決を異常なものとしてフラグを立てることもあり得る。
【0022】
図3で示されるように、いくつかの実施形態では、クライアントDNSセキュリティコンポーネント301が各クライアント103上で実装される代わりにまたはそれに加えて、1つまたは複数のDNSセキュリティコンポーネント311をネットワーク107に配備して、ネットワークレベルでDNSトラフィックをモニタすることができる。ネットワークDNSセキュリティコンポーネント311は、例えば、インラインまたはパッシブネットワークコンピューティングデバイス313のシステムメモリ217内でインスタンス化することができる。クライアントDNSセキュリティコンポーネント301と同様の方法で、ネットワークDNSセキュリティコンポーネント311は、ネットワーク107上でクライアント103との間を行き来するDNSトラフィックをモニタする。また、ネットワークDNSセキュリティコンポーネント311によって集められたDNS情報309も、相関および分析のためサーバDNSセキュリティコンポーネント303に提出される。クライアントDNSセキュリティコンポーネント301との関連で上記で説明されるように、クライアント103がDNSクエリを発行するときは常に、DNSクエリは、DNS名305に対応するIPアドレス307をもたらす。クライアントDNSセキュリティコンポーネントと同様に、ネットワークDNSトラフィックをモニタするネットワークDNSセキュリティコンポーネント311は、IPアドレス307および他の対応するDNS情報309をサーバDNSセキュリティコンポーネント303に送信することができ、サーバDNSセキュリティコンポーネント303は、IPアドレス307へのDNS名305の解決が異常かどうか判断することができる。ネットワークDNSセキュリティコンポーネント311は、個別のクライアント103上でローカルに解決されたものとは対照的に、ネットワーク107上で解決されたDNSクエリに関する情報のみを検出するが、ネットワークDNSセキュリティコンポーネント311は、クライアントコンピュータ103にインストールすることなく、重要なDNS情報309を寄せ集めて提出することができる。
【0023】
図4を参照すると、クライアント103のシステムメモリ217内で実行するクライアントDNSセキュリティコンポーネント301のオペレーションが示される。クライアントDNSセキュリティコンポーネント301のDNS解決特定モジュール401は、クライアント103によるDNS名305を解決する試みの発生を特定する。言い換えれば、DNS解決特定モジュール401は、クライアント103から通例のDNSクエリ403が発生するときは常にこれを検出する。DNS解決特定モジュール401は、DNS名305を解決する試みを特定するための従来の実装機構を使用することができる。例えば、Microsoft Windows(登録商標)の下で操作する場合には、DNS解決特定モジュール401は、適切なAPI関数(例えば、RpcNsBindingLookup)をフックすることができる。他のオペレーティングシステムまたはWindows(登録商標)のいくつかのバージョンの下では、この機能性を実行するための特定の実装機構は異なり得るが、当業者の専門技術内である。現在説明される文脈内でのそのような実装機構の適用は、本明細書を考慮すると、当業者には容易に明らかとなろう。
【0024】
いくつかの例では、DNSクエリ403は、ネットワーク107上でDNS名サーバ407への要求を生成することなく、クライアント103上でローカルに解決することができる。このため、DNS解決特定モジュール401がDNS名305を解決する試みが起こっていることを特定すると、DNSローカル情報収集モジュール405は、DNSクエリをローカルで解決するために使用され得るクライアント103上のDNS設定をチェックする。これは、ローカルLMhostファイル409エントリ、ローカルホストファイル411エントリ、クライアント103上のDNSキャッシュ414、ローカルWinSock DNS設定(図示せず)などのDNS設定およびローカルネットワークスタック実装における他の任意のDNS設定(図示せず)をチェックすることを含む。DNS名305がローカルで解決される場合、DNSローカル情報収集モジュール405は、どのような方法でDNS名305が解決されたか、どのIPアドレス307にDNS名305が解決されたか、time to live、および、DNSクエリ403に対する応答419における他の任意の情報(例えば、DNSクエリ403に応答して返送される1つまたは複数のリソースレコード)などの対応するDNS情報309を収集する。
【0025】
場合によっては、DNSクエリ403をローカルで解決することはできないため、解決のためにDNS名サーバ407に送信される。そのような状況下で解決に関するDNS情報309を収集するため、ネットワークトラフィックモニタリングモジュール413は、クライアント103を発信源とするアウトバウンド送信415をモニタし、アウトバウンドDNSクエリ403を特定する。一実施形態では、送信モニタリングモジュール413は、アウトバウンドHTTPストリームにおいてDNSクエリ403を検出することが可能なハイパーテキスト転送プロトコル(「HTTP」)プロキシ(示されるローカルまたはリモートのいずれか)を含む。別の実施形態では、送信モニタリングモジュール413は、DNSクエリ403にアクセスを有するウェブブラウザのプラグインとしてインスタンス化される。他の実施形態では、送信モニタリングモジュール413は、より低いレベルで、例えば、ネットワークプロトコルスタックをフックすることによって実装することができる。
【0026】
従来の実装機構を使用してネットワークトラフィックモニタリングモジュール413をインスタンス化することができる。HTTPプロキシ、ウェブブラウザのプラグインおよびネットワークプロトコルスタックのフックをインスタンス化する(ローカルおよびリモート)実装機構は、当業者に公知である。現在の文脈内でのその使用は、本明細書を考慮すると、当業者には容易に明らかとなろう。図4では、ネットワークトラフィックモニタリングモジュール413は、ローカルのクライアント103上で実行するものとして示される。他の実施形態では、ネットワークトラフィックモニタリングモジュール413は、リモートで、例えば、プロキシ(図示せず)上で実行する。
【0027】
いずれの場合も、DNS要求403がアウトバウンド送信415において特定されると、DNSリモート情報収集モジュール417は、アウトバウンドDNS要求403およびDNS名サーバ407からの応答419をモニタし、どのような方法でDNS名305が解決されたか、どのIPアドレス307にDNS名305が解決されたかなどの対応するDNS情報309を収集する。
【0028】
DNSローカル情報収集モジュール405とDNSリモート情報収集モジュール417との間で、DNSクエリ403はローカルで解決されたかもしくはネットワーク107上で解決されたか、存在する場合どのDNS名サーバ407にDNSクエリ403が送信されたか、どのIPアドレス307にDNS名305が解決されたか、再帰的ルックアップは実行されたかどうか、time to liveおよびDNSクエリ403および/または応答419における他の任意の情報など、要望に応じて、それぞれのDNSクエリ403および対応する応答419に関するDNS情報309が収集される。特定のDNS名305の所与の解決に関するDNS情報309が収集されると、DNS情報送信モジュール421は、相関および集計のためにサーバDNSセキュリティコンポーネント303にDNS情報309を送信する。どの特定のDNS情報309を収集して送信するかは可変設計パラメータであることを理解されたい。
【0029】
ここで図5を参照すると、サーバDNSセキュリティコンポーネント303のDNS情報受信モジュール501は、複数のクライアント103によって提出された、異なるDNS名305の複数の解決に関するDNS情報309を受信する。DNS情報集計モジュール503は、さまざまなクライアント103から提出されたDNS情報309を集計する。DNS情報集計モジュール503は、複数のクライアント103から受信された、特定のDNS名305の特定の解決に関するDNS情報309の個別の送信を、異なるクライアント103上の異なるDNS名305の多くの解決に関する集計DNS情報511に経時的に変換する。DNS情報格納モジュール505は、以下で説明されるように、分析のためにデータベース(または、他の適切な格納メカニズム)507に集計DNS情報511を格納することができる。いくつかの実施形態では、DNS情報309は、ドメインおよびサブドメインによって整理された木構造に集計され、同木構造として格納され、その結果、同じドメインおよび/またはサブドメインに関するDNS情報309のすべての提出を容易に分析することができる。他の実施形態では、他の集計および格納方法論を使用することができる。どの特定のDNS情報309を集計し格納するかは可変設計パラメータであることを理解されたい。
【0030】
DNS情報比較モジュール517は、個別のクライアント103から提出された、さまざまなDNS名305上の特定のDNSクエリ403に関するDNS情報309を、集計DNS情報511(例えば、データベース507内に格納された)と比較する。特定のDNS名305の現行の解決に関する提出されたDNS情報309を、同じDNS名305の複数の解決に関する集計DNS情報511と比較した結果、異常解決特定モジュール509は、提出されているDNS情報309内の異常を特定することができる。例えば、特定のDNS名305に関する現行の提出物を、同じDNS名305に関する集計DNS情報511と比較した結果、異常解決特定モジュール509は、その特定のDNS名305上の現行のDNSクエリ403に関するDNS情報309と、複数のクライアント103から一定の期間にわたって集められた同じDNS名305に関する集計DNS情報511との違いを検出することができる。異常解決特定モジュール509は、DNS名305が解決されたIPアドレス307、解決の方法(例えば、ネットワーク107、ローカルホストファイル411、ローカルキャッシュ414など)、time to live、応答419内の他のデータ(例えば、DNSリソースレコード内の他のフィールド)などの因子を調べることによって、現行のDNSクエリ403と、対象のDNS名305に関する集計DNS情報511との違いを特定することができる。所与のDNS名305に対する集計DNS情報511は、実際には、どのような方法で解決されたかおよびどのIPアドレス307に解決されたかなどを経時的に示す、そのDNS名305に関するプロフィールを含む。現在のDNS情報309を集計DNS情報511と比較する工程に対応して、異常解決特定モジュール509は、現在のDNS情報309が異常かどうかを特定することができる。検出された異常は、DNSポイズニング、ホストファイル411の書き換えなどのDNS攻撃を示し得る。
【0031】
任意の所与のDNS名305に対して、どの特定の現在のDNS情報309をどの特定の集計DNS情報511と比較するかは可変設計パラメータであることを理解されたい。さらに、任意の所与のDNS名305に対して、現在のDNS情報309と集計DNS情報511との間でどれほどのおよびどのタイプの変動が異常な解決を示すものと見なされるかもまた、可変設計パラメータである。例えば、いくつかの実施形態では、特定のDNS名305に対する集計DNS情報511が、DNS名305は長いtime to liveを有する小セットのIPアドレス307に常に解決されていることを示す場合には、そのセットの外側にあるおよび/または短いtime to liveを有するIPアドレス307への現行の解決は、異常と判定することができる。他方では、はるかに大きなセットの短いtime to liveを有するIPアドレス307へ歴史的に解決されてきたDNS名305(例えば、Hewlett Packard、MicrosoftおよびAlkamiなどのコンテンツ配布ネットワーク内のDNS名305)に対して、より広い範囲の解決が異常でないものとして通常見なされるであろうが、このより広い範囲の外側の解決パターンは依然としてフラグが立てられ得る。所与のDNS名305に関する集計DNS情報511(例えば、「www.domain.com/sub−domain」などの特定のドメインおよびサブドメインの組合せ)がほとんどまたは全く存在しない場合は、DNS解決変更モジュール515は、ドメイン名305の高レベル部分(例えば、www.domain.com)を隔離し、現在のDNS情報309を、ドメイン名305のちょうど隔離された部分に関する集計DNS情報511と比較することができる。
【0032】
いくつかの実施形態では、異常解決特定モジュール509は、DNS名305の異常な解決として判定されるものに単にフラグを立て、指示送信モジュール519は、現在のDNS情報309を提出したクライアント103および/または中央のセキュリティサーバ(図示せず)などの第三者に警告指示513を送信する。いくつかの実施形態では、そのような警告指示513は、クライアント103によって報告されたDNS名305の現行の解決に関するDNS情報309が、そのDNS名305に関する集計DNS情報511と一致しないという簡単な通知である。他の実施形態では、これらの指示513は、要望に応じて、さまざまなレベルの追加の情報(例えば、解決が異常と判定された理由についての説明、スライディングスケール上にあると見なされる解決の異常度の評価、1つまたは複数の提案される救済策など)を有することができる。その反面、異常解決特定モジュール509が所与のDNS名305の特定の解決に関するいかなる異常も特定しない場合には、異常解決特定モジュール509は、例えば、現在のDNS情報309を提出したクライアント103に(および/または第三者に)解決は異常なものとして認められなかったという指示513を送信する指示送信モジュール519を介して、それも同様にフラグを立てることができる。
【0033】
いくつかの実施形態では、サーバ105上のDNS解決変更モジュール515は、警告513の送信に加えてまたは警告513の送信の代わりに、試みが行われた解決を変更もしくはブロックするか、または、要望に応じて他の措置を講じることができる。いくつかの実施形態では、DNS解決変更モジュール515は、サーバ105の代わりにまたはサーバ105に加えて、1台または複数のクライアント103上でインスタンス化することができる。
【0034】
図6は、いくつかの実施形態による、DNSセキュリティシステム101(図1)のオペレーションを示すフローチャートである。サーバ105(図1)のシステムメモリ217(図2)内で実行するサーバDNSセキュリティコンポーネント303(図3)のDNS情報受信モジュール501(図5)は、複数のクライアントコンピュータ103(図1)からDNS情報309(図3)の複数の送信を受信する(601)。受け取ったDNS情報309(図3)の各送信は、特定のクライアント103(図1)上の特定のDNS名305(図3)の解決の特定の例に関する情報を含む。サーバDNSセキュリティコンポーネント303(図3)のDNS情報集計モジュール503(図5)は、複数のクライアントコンピュータ103(図1)から受け取ったDNS情報309(図3)の複数の送信を集計する(603)。サーバDNSセキュリティコンポーネント303(図3)のDNS情報格納モジュール505(図5)は、例えば、データベース507(図5)内に、集計DNS情報511(図5)を格納することができる(605)。サーバDNSセキュリティコンポーネント303(図3)のDNS情報比較モジュール517(図5)は、特定のクライアントコンピュータ103(図1)から受信された、特定のDNS名305(図3)に関するDNS情報309(図3)を、複数のクライアントコンピュータ103(図1)から受信された、同じDNS名305(図3)に関する集計DNS情報511(図5)と比較する(607)。サーバDNSセキュリティコンポーネント303(図3)の異常解決特定モジュール509(図5)は、受信されたDNS情報309(図3)と、同じDNS名305(図3)に関する集計DNS情報511(図5)によって示されるパターンとの違いなど、受信されたDNS情報309(図3)に関するいかなる異常も特定する(609)。
【0035】
受信されたDNS情報309(図3)に関する少なくとも1つの異常を特定する工程に対応して、サーバDNSセキュリティコンポーネント303(図3)の指示送信モジュール519(図5)は、そこから異常なDNS情報309(図3)が受信された特定のクライアントコンピュータ103(図1)へ警告指示513(図3)を送信することができる(611)。それに加えてまたはその代わりに、受信されたDNS情報309(図3)は異常であると判断する工程に対応して、サーバDNSセキュリティコンポーネント303(図3)のDNS解決変更モジュール515(図5)は、DNS名305(図3)の解決を変更することができる(613)。異常が全く特定されない場合には、指示送信モジュール519(図5)は、適切な指示513(図5)を送信元のクライアントコンピュータ103(図1)へ送信することができる(615)。
【0036】
当業者によって理解されるように、本発明は、精神またはその本質的特性から逸脱することなく、他の特定の形態で実施することができる。同様に、部分、モジュール、エージェント、マネージャ、コンポーネント、機能、手順、動作、層、特徴、属性、方法論、データ構造および他の側面の特有の命名および分配は義務的でも重要でもなく、本発明またはその特徴を実装するメカニズムは、異なる名前、分配および/または形式を有し得る。前述の説明は、解釈を目的として、特定の実施形態を参照して説明されている。しかし、上記の例示的な論考は、包括的であることも、開示されるものと全く同一の形態に限定することも意図しない。上記の教示を考慮して、多くの変更形態および変形形態が可能である。実施形態は、関連原理およびそれらの実用化を最適に解釈するために選択され説明されており、それにより、企図される特定の使用に適し得るさまざまな変更形態を用いてまたはさまざまな変更形態なしに、当業者がさまざまな実施形態を最適に利用することが可能となる。

【特許請求の範囲】
【請求項1】
複数のコンピュータを発信源とする集計DNS情報を使用して異常なDNS名前解決を検出するためのコンピュータ実装方法であって、
サーバコンピュータ上で実行するサーバDNSセキュリティコンポーネントによって、複数のコンピュータからDNS情報の複数の送信を受け取る工程であって、DNS情報の各送信は、特定のDNS名前解決の特定の例に関する情報を含む、工程と、
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記複数のコンピュータから受け取ったDNS情報の複数の送信を集計する工程と、
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、特定のコンピュータから受信された、特定のDNS名に関するDNS情報を、複数のコンピュータから受信された、同じDNS名に関する集計DNS情報と比較する工程と、
前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報を、複数のコンピュータから受信された、前記同じDNS名に関する前記集計DNS情報と比較する工程に対応して、前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報が異常かどうかを判断する工程と、
を含むコンピュータ実装方法。
【請求項2】
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、複数のコンピュータから受信された集計DNS情報を格納する工程
をさらに含む、請求項1に記載の方法。
【請求項3】
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、特定のコンピュータから受信された、特定のDNS名に関するDNS情報を、複数のコンピュータから受信された、同じDNS名に関する集計DNS情報と比較する工程は、
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、特定のコンピュータから受信された、特定のDNS名の特定の解決に関するDNS情報を、複数のコンピュータから受信された、同じDNS名の複数の解決に関する集計DNS情報と比較する工程
をさらに含む、請求項1に記載の方法。
【請求項4】
複数のコンピュータから受信された、同じDNS名の複数の解決に関する集計DNS情報への特定のコンピュータから受信された、特定のDNS名の特定の解決に関するDNS情報において、前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、解決のIPアドレス、解決の方法、time to liveおよびDNSリソースレコードからなる因子の群から少なくとも1つの因子を分析する工程
をさらに含む、請求項3に記載の方法。
【請求項5】
複数のコンピュータから受信された、特定のDNS名の複数の解決に関する集計DNS情報の不足に応じて、前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のDNS名の高レベル部分を隔離する工程と、
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、特定のコンピュータから受信された、特定のDNS名に関するDNS情報を、複数のコンピュータから受信された、前記特定のDNS名の前記隔離された高レベル部分に関する集計DNS情報と比較する工程と、
をさらに含む、請求項1に記載の方法。
【請求項6】
前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報を、複数のコンピュータから受信された、前記同じDNS名に関する前記集計DNS情報と比較する工程に対応して、前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報が異常かどうかを判断する工程は、
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報に関する少なくとも1つの異常を特定する工程と、
前記特定する工程に対応して、前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報は異常であると判断する工程と、
をさらに含む、請求項1に記載の方法。
【請求項7】
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報に関する少なくとも1つの異常を特定する工程は、
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報と、複数のコンピュータから受信された、前記同じDNS名に関する前記集計DNS情報によって示されるパターンとの少なくとも1つの違いを特定する工程
をさらに含む、請求項6に記載の方法。
【請求項8】
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報が異常かどうかを判断する工程に対応して、前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、対応する指示を少なくとも1つの送信先に送信する工程
をさらに含む、請求項1に記載の方法。
【請求項9】
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報は異常であると判断する工程と、
前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報は異常であると判断する工程に対応して、前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、そこから前記異常なDNS情報が受信された前記特定のコンピュータへ警告を送信する工程と、
をさらに含む、請求項8に記載の方法。
【請求項10】
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報は異常でないと判断する工程と、
前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報は異常でないと判断する工程に対応して、前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、そこから前記異常でないDNS情報が受信された前記コンピュータへ前記DNS情報が異常でないという指示を送信する工程と、
をさらに含む、請求項8に記載の方法。
【請求項11】
前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報は異常であると判断する工程と、
前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報は異常であると判断する工程に対応して、前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントによって、複数のコンピュータから受信された、前記同じDNS名の複数の解決に関する前記集計DNS情報に基づいて、前記特定のクライアントから受信された前記DNS情報に関する前記特定のDNS名の前記特定の解決を変更する工程と、
をさらに含む、請求項3に記載の方法。
【請求項12】
クライアントコンピュータ上で実行するDNSセキュリティコンポーネントによって、少なくとも1台の特定のコンピュータによってDNS名を解決する試みを特定する工程と、
前記クライアントコンピュータ上で実行する前記DNSセキュリティコンポーネントによって、特定された試みに関するDNS情報を収集し、前記少なくとも1台の特定のコンピュータによってDNS名を解決する工程と、
前記クライアントコンピュータ上で実行する前記DNSセキュリティコンポーネントによって、前記少なくとも1台の特定のコンピュータによって特定されたDNS名のそれぞれの解決に関する収集されたDNS情報を、前記サーバコンピュータ上で実行する前記サーバDNSセキュリティコンポーネントへ送信する工程と、
をさらに含む、請求項1に記載の方法。
【請求項13】
前記クライアントコンピュータ上で実行する前記DNSセキュリティコンポーネントによって、特定された試みに関するDNS情報を収集し、前記少なくとも1台の特定のコンピュータによってDNS名を解決する工程は、
前記クライアントコンピュータ上で実行する前記DNSセキュリティコンポーネントによって、前記クライアントコンピュータにとってローカルであるDNS設定をチェックする工程と、
前記クライアントコンピュータ上で実行する前記DNSセキュリティコンポーネントによって、少なくとも1つのDNS名の少なくとも1つのローカル解決に関するDNS情報を収集する工程と、
をさらに含む、請求項12に記載の方法。
【請求項14】
複数のコンピュータを発信源とする集計DNS情報を使用して異常なDNS名前解決を検出するよう構成されるコンピュータプログラム製品を格納する少なくとも1つのコンピュータ可読記憶媒体であって、前記コンピュータプログラム製品は、
複数のコンピュータからDNS情報の複数の送信を受け取るためのプログラムコードであって、DNS情報の各送信は、特定のDNS名前解決の特定の例に関する情報を含む、プログラムコードと、
前記複数のコンピュータから受け取ったDNS情報の複数の送信を集計するためのプログラムコードと、
特定のコンピュータから受信された、特定のDNS名に関するDNS情報を、複数のコンピュータから受信された、同じDNS名に関する集計DNS情報と比較するためのプログラムコードと、
前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報を、複数のコンピュータから受信された、前記同じDNS名に関する前記集計DNS情報と比較する工程に対応して、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報が異常かどうかを判断するためのプログラムコードと、
を含むコンピュータ可読記憶媒体。
【請求項15】
複数のコンピュータを発信源とする集計DNS情報を使用して異常なDNS名前解決を検出するよう構成された少なくとも1台のコンピュータシステムであって、
複数のコンピュータからDNS情報の複数の送信を受け取る手段であって、DNS情報の各送信は、特定のDNS名前解決の特定の例に関する情報を含む、手段と、
前記複数のコンピュータから受け取ったDNS情報の複数の送信を集計する手段と、
特定のコンピュータから受信された、特定のDNS名に関するDNS情報を、複数のコンピュータから受信された、同じDNS名に関する集計DNS情報と比較する手段と、
前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報を、複数のコンピュータから受信された、前記同じDNS名に関する前記集計DNS情報と比較する工程に対応して、前記特定のコンピュータから受信された、前記特定のDNS名に関する前記DNS情報が異常かどうかを判断する手段と、
を備えたコンピュータシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2013−519257(P2013−519257A)
【公表日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2012−551170(P2012−551170)
【出願日】平成22年12月30日(2010.12.30)
【国際出願番号】PCT/US2010/062597
【国際公開番号】WO2011/097006
【国際公開日】平成23年8月11日(2011.8.11)
【出願人】(501113353)シマンテック コーポレーション (78)
【氏名又は名称原語表記】Symantec Corporation
【Fターム(参考)】