攻撃検出装置、攻撃検出方法、及びプログラム
【課題】DNSの形式をとりつつ通信で交換する情報を悪意ある行為のために用いるような攻撃を検出する。
【解決手段】攻撃検出装置40において、DNSデータ抽出部41が、ネットワークトラフィックからDNSクエリ又はDNSレスポンスを抽出し、ドメインデータ抽出部42が、その中から特定のドメインに関するものを抽出し、ブラックリスト照合部44がブラックリストに含まれるドメインに関するものを除外して絞り込みを行い、ドメインデータ検査部46が、絞り込み後のDNSクエリ又はDNSレスポンスを一定時間内の出現個数や返されたIPアドレスの異同等に基づいて検査する。そして、検査の結果、DNSを悪用した攻撃が行われている虞があると判定されれば、ブラックリスト更新部48が、今回のドメインをブラックリストに追加し、アラート発信部49が、アラートを出力する。
【解決手段】攻撃検出装置40において、DNSデータ抽出部41が、ネットワークトラフィックからDNSクエリ又はDNSレスポンスを抽出し、ドメインデータ抽出部42が、その中から特定のドメインに関するものを抽出し、ブラックリスト照合部44がブラックリストに含まれるドメインに関するものを除外して絞り込みを行い、ドメインデータ検査部46が、絞り込み後のDNSクエリ又はDNSレスポンスを一定時間内の出現個数や返されたIPアドレスの異同等に基づいて検査する。そして、検査の結果、DNSを悪用した攻撃が行われている虞があると判定されれば、ブラックリスト更新部48が、今回のドメインをブラックリストに追加し、アラート発信部49が、アラートを出力する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、DNS(Domain Name System)を悪用した攻撃を検出する攻撃検出装置、攻撃検出方法、及びプログラムに関する。
【背景技術】
【0002】
近年、コンピュータウイルスに代表されるマルウェアは、侵入方法、攻撃手法の何れにおいても高度化かつ巧妙化しており、その被害を未然に防ぐことや被害を局所化することが困難になりつつある。従来のマルウェアの場合は、その攻撃と被害の関係が容易に推測でき、対処の難易度の違いはあれど、比較的早期に発見できた。しかし、現在のマルウェアの場合は、その侵入に気が付き難く、発見されるまでに甚大な被害が生じてしまっている。
このような高度化かつ巧妙化したマルウェアとして、通信のパラメータを、形式は正常に見せつつ、悪意ある行為のために用いたものが考えられる。例えば、DNSサーバへの名前解決の問い合わせ(DNSクエリ)や、DNSクエリに対するDNSサーバからの応答(DNSレスポンス)の形式をとりつつ、これらの通信で交換する情報を悪意ある行為のために用いるもの等である。
【0003】
公報記載の技術としても、DNSクエリに着目してネットワーク攻撃を検出する技術はある(例えば、特許文献1参照)。この特許文献1では、DNSクエリ要求を取り扱う装置からDNSクエリを取得し、設定情報に指定された監視ドメインごと、或いは、監視ドメインに含まれるサブドメインごとに区分けされた統計データログを生成し、設定情報に指定された攻撃開始/終了条件に基づいて攻撃開始判定/攻撃終了判定を行い、判定結果をファイヤーウォール等の攻撃対策装置へ送信している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−251282号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述した通り、DNSクエリやDNSレスポンスの形式をとりつつ、これらの通信で交換する情報を悪意ある行為のために用いるようなマルウェアは考えられる。
しかしながら、このようなマルウェアによる攻撃は、通信のパラメータの形式としては正常なため、攻撃として検出するのは非常に困難であった。
また、特許文献1では、DNSクエリに着目してネットワーク攻撃を検出しているものの、実際の攻撃が開始された時点で攻撃検出を行うのではなく、攻撃者がDNSによる名前解決を要求した時点で攻撃検出を行うものであり、DNSの形式をとりつつ通信で交換する情報を悪意ある行為のために用いるようなマルウェアによる攻撃を検出するものではない。
【0006】
本発明の目的は、DNSの形式をとりつつ通信で交換する情報を悪意ある行為のために用いるような攻撃を検出することにある。
【課題を解決するための手段】
【0007】
かかる目的のもと、本発明は、DNS(Domain Name System)を悪用した攻撃を検出する攻撃検出装置であって、コンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得する取得手段と、取得手段により取得された複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定する判定手段と、複数の要求メッセージの中に特定要求メッセージ群が含まれていると判定手段により判定された場合に、外部に警告情報を出力する出力手段とを備えたことを特徴とする攻撃検出装置を提供する。
【0008】
また、この装置において、取得手段は、DNSサーバからコンピュータへ送信されたドメインの名前解決の結果であるIPアドレスを応答する形式の複数の応答メッセージを更に取得し、判定手段は、取得手段により取得された複数の応答メッセージの中に、同じドメインに属する同じサブドメインの名前解決の結果として各々が異なるIPアドレスを応答する形式の2つ以上の応答メッセージからなる特定応答メッセージ群が含まれているかどうかを更に判定し、出力手段は、複数の応答メッセージの中に特定応答メッセージ群が含まれていると判定手段により判定された場合に、コンピュータに対しDNSを悪用した不正通信による攻撃が行われている虞がある旨の情報を警告情報として出力する、ものであってよい。
【0009】
更に、この装置は、取得手段により取得された複数の要求メッセージから、同じドメインに属するサブドメインの名前解決を要求する形式の複数の特定要求メッセージを抽出する抽出手段を更に備え、判定手段は、抽出手段により抽出された複数の特定要求メッセージの中に、同じサブドメインの名前解決を要求する形式の所定数以上の特定要求メッセージからなる特定要求メッセージ群が含まれているかどうかを更に判定する、ものであってよい。
【0010】
更にまた、この装置において、判定手段は、取得手段により取得された複数の要求メッセージの中に、所定長以上の名前を有するサブドメインの名前解決を要求する形式の1つ以上の要求メッセージが含まれているかどうかを更に判定し、出力手段は、複数の要求メッセージの中に1つ以上の要求メッセージが含まれていると判定手段により判定された場合に、コンピュータに対しDNSを悪用した情報持ち出しによる攻撃が行われている虞がある旨の情報を警告情報として出力する、ものであってよい。
【0011】
また、本発明は、DNS(Domain Name System)を悪用した攻撃を検出する攻撃検出方法であって、コンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得するステップと、取得された複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定するステップと、複数の要求メッセージの中に特定要求メッセージ群が含まれていると判定された場合に、外部に警告情報を出力するステップとを含むことを特徴とする攻撃検出方法も提供する。
【0012】
更に、本発明は、コンピュータに、自コンピュータ又は他のコンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得する機能と、取得された複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定する機能と、複数の要求メッセージの中に特定要求メッセージ群が含まれていると判定された場合に、外部に警告情報を出力する機能とを実現させるためのプログラムも提供する。
【発明の効果】
【0013】
本発明によれば、DNSの形式をとりつつ通信で交換する情報を悪意ある行為のために用いるような攻撃を検出することができる。
【図面の簡単な説明】
【0014】
【図1】本実施の形態が適用されるコンピュータシステムの全体構成図である。
【図2】本実施の形態における攻撃検出装置の機能構成例を示したブロック図である。
【図3】第1の実施の形態における攻撃検出装置がモニタするデータの例を示した図である。
【図4】第1の実施の形態における攻撃検出装置の動作例を示したフローチャートである。
【図5】第1の実施の形態における攻撃検出装置の動作例を示したフローチャートである。
【図6】第2の実施の形態における攻撃検出装置がモニタするデータの例を示した図である。
【図7】第2の実施の形態における攻撃検出装置の動作例を示したフローチャートである。
【図8】第3の実施の形態における攻撃検出装置がモニタするデータの例を示した図である。
【図9】第3の実施の形態における攻撃検出装置の動作例を示したフローチャートである。
【図10】本実施の形態が適用されるコンピュータのハードウェア構成図である。
【発明を実施するための形態】
【0015】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
まず、本実施の形態が適用されるコンピュータシステムについて説明する。
図1は、このようなコンピュータシステムの全体構成例を示した図である。
図示するように、このコンピュータシステムでは、クライアント10a,10b,10cと社内DNSサーバ20とが社内LAN(Local Area Network)70に接続されており、攻撃者DNSサーバ30がインターネット80に接続されている。そして、攻撃検出装置40が社内LAN70とインターネット80の両方に接続されている。
【0016】
クライアント10a,10b,10cは、ユーザが使用するコンピュータである。例えば、パーソナルコンピュータやワークステーション、その他のコンピュータ装置にて実現される。また、本実施の形態において、クライアント10a,10b,10cは、ボットに感染することがあるものとする。ここで、ボットとは、コンピュータに感染した後、C&C(コマンド&コントロール)サーバと呼ばれる制御用サーバに接続して攻撃者からの指令を待ち、感染したコンピュータ上で指令通りの処理を実行するマルウェアである。尚、図では、クライアント10a,10b,10cを示したが、これらを区別する必要がない場合は、クライアント10と称することもある。また、図には、3台のクライアント10しか示していないが、4台以上のクライアント10を設けてもよい。
【0017】
社内DNSサーバ20は、他のコンピュータからDNSクエリを受け付け、DNSクエリに含まれるドメイン名の名前解決を行うDNSサーバのうち、会社内のクライアント10からDNSクエリを受け付けるものである。具体的には、DNSクエリに含まれるドメイン名の情報を自身が管理していれば、その情報をDNSレスポンスとしてクライアント10に返す。また、DNSクエリに含まれるドメイン名の情報を自身が管理していなければ、インターネット80上のルートネームサーバ(図示せず)にDNSクエリを転送する。その後、ルートネームサーバ(図示せず)から知らされたIPアドレスに基づいてDNSクエリを下位のDNSサーバ(図示せず)に転送する。そして、DNSクエリに含まれるドメイン名の情報を管理するDNSサーバにまでDNSクエリが行き着くと、そのDNSサーバからその情報を受け取ってDNSレスポンスとしてクライアント10に返す。
【0018】
攻撃者DNSサーバ30は、他のコンピュータからDNSクエリを受け付け、DNSクエリに含まれるドメイン名の名前解決を行うDNSサーバのうち、攻撃者が運営しているものである。ボットに感染したクライアント10が社内DNSサーバ20にDNSクエリを送信した場合、社内DNSサーバ20がインターネット80上のルートネームサーバ(図示せず)にDNSクエリを転送した後、DNSクエリは、DNSクエリに含まれるドメイン名の情報を管理するDNSサーバとしてこの攻撃者DNSサーバ30に行き着くものとする。
【0019】
攻撃検出装置40は、社内LAN70とインターネット80との間のネットワークトラフィックからDNSクエリやDNSレスポンスを抽出してモニタリングし、モニタリングしたDNSクエリやDNSレスポンスを分析し、分析した結果を通知する装置である。この装置は、ゲートウェイ等の通信装置の中に設けられてもよいし、通信装置とは独立に設けられてもよい。また、図では、この装置を、通信回線に対してアダプティブに設置されたものとしたが、通信回線上にインライン構成で設置されたものであってもよい。
【0020】
社内LAN70は、会社内のコンピュータやプリンタを専用回線等で接続し、これらの間でデータを送受信できるようにしたネットワークである。
インターネット80は、TCP/IPを用いて全世界のネットワークを相互に接続した巨大なネットワークである。
【0021】
本実施の形態では、かかるコンピュータシステムにおいて、攻撃検出装置40が、DNSクエリやDNSレスポンスをモニタリングして、形式としては正常であっても不正に用いられている可能性の高いDNSクエリやDNSレスポンスを検出する。
そこで、まず、この攻撃検出装置40の機能構成について説明する。
図2は、攻撃検出装置40の機能構成例を示したブロック図である。
図示するように、攻撃検出装置40は、DNSデータ抽出部41と、ドメインデータ抽出部42と、抽出条件記憶部43と、ブラックリスト照合部44と、ブラックリスト記憶部45とを備えている。また、ドメインデータ検査部46と、検査条件記憶部47と、ブラックリスト更新部48と、アラート発信部49とを備えている。
【0022】
DNSデータ抽出部41は、社内LAN70とインターネット80の間を流れるネットワークトラフィックをキャプチャし、キャプチャしたネットワークトラフィックの中からDNSクエリの形式のデータ(以下、「上りDNSデータ」という)及びDNSレスポンスの形式のデータ(以下、「下りDNSデータ」という)を抽出する。本実施の形態では、要求メッセージの一例として、上りDNSデータを用いており、応答メッセージの一例として、下りDNSデータを用いている。また、要求メッセージや応答メッセージを取得する取得手段の一例として、DNSデータ抽出部41を設けている。
【0023】
ドメインデータ抽出部42は、DNSデータ抽出部41が抽出した上りDNSデータのうち一定時間内にキャプチャしたものの中に、特定ドメイン名を含むFQDN(Fully Qualified Domain Name)の名前解決を要求する形式のDNSデータ(以下、「上りドメインデータ」という)が所定数以上あった場合に、その上りドメインデータを抽出し、DNSデータ抽出部41が抽出した下りDNSデータのうち一定時間内にキャプチャしたものの中に、特定ドメイン名を含むFQDNの名前解決の要求に対する応答としてIPアドレスを返す形式のDNSデータ(以下、「下りドメインデータ」という)が所定数以上あった場合に、その下りドメインデータを抽出する。本実施の形態では、特定要求メッセージの一例として、上りドメインデータを用いている。また、特定要求メッセージを抽出する抽出手段の一例として、ドメインデータ抽出部42を設けている。
【0024】
抽出条件記憶部43は、DNSデータ抽出部41が動作するための設定として、上りDNSデータ及び下りDNSデータを抽出するというDNSデータ抽出条件を記憶すると共に、ドメインデータ抽出部42が動作するための設定として、上りドメインデータ及び下りドメインデータを抽出するというドメインデータ抽出条件を記憶する。尚、これらの抽出条件は、例えば、ユーザが予め設定しておけばよい。
【0025】
ブラックリスト照合部44は、ドメインデータ抽出部42が抽出した上りドメインデータに含まれるドメイン名と、ブラックリスト記憶部45に記憶されたブラックリスト内のドメイン名とを照合する。具体的には、上位レベルのドメイン名(上位ドメイン名)が、上位ドメイン名のブラックリスト(上位ブラックリスト)に含まれているかどうか、及び、下位レベルのドメイン名(下位ドメイン名)が、下位ドメイン名のブラックリスト(下位ブラックリスト)に含まれているかどうかを検査する。そして、上位ドメイン名が上位ブラックリストに含まれている場合や、下位ドメイン名が下位ブラックリストに含まれている場合に、このドメインデータがDNSを悪用した攻撃に関係していると判定する。
【0026】
ブラックリスト記憶部45は、ブラックリスト照合部44における照合に用いられる上位ブラックリスト及び下位ブラックリストを記憶する。
【0027】
ドメインデータ検査部46は、上りドメインデータに含まれるFQDN及び下りドメインデータに含まれるIPアドレスの検査を行う。このうち、FQDNの検査では、同じFQDNの名前解決を要求する形式の上りドメインデータの数が閾値を超えているかどうか等を判定する。また、IPアドレスの検査では、同じFQDNの名前解決を要求する形式の上りドメインデータに対して異なるIPアドレスを返す下りドメインデータが存在するかを判定する。そして、同じFQDNの名前解決を要求する形式の上りドメインデータの数が閾値を超えている場合や、同じFQDNの名前解決を要求する形式の上りドメインデータに対する下りドメインデータとして異なるIPアドレスを返すものが存在する場合等に、このドメインデータがDNSを悪用した攻撃に関係していると判定する。本実施の形態では、特定要求メッセージ群の一例として、同じFQDNの名前解決を要求する形式の上りドメインデータの集合を用いており、特定応答メッセージ群の一例として、同じFQDNの名前解決を要求する形式の上りドメインデータに対して異なるIPアドレスを返す下りドメインデータの集合を用いている。また、複数の要求メッセージの中に特定要求メッセージ群が含まれているかどうかを判定する判定手段の一例として、ドメインデータ検査部46を設けている。
【0028】
検査条件記憶部47は、ドメインデータ検査部46が動作するための設定として、ドメインデータの検査に用いられる検査条件を記憶する。ここで、検査条件には、上記閾値の情報等も含まれる。尚、この検査条件は、例えば、ユーザが予め設定しておけばよい。
【0029】
ブラックリスト更新部48は、ドメインデータ検査部46による検査の結果に基づいて、ブラックリスト記憶部45に記憶されたブラックリストを更新する。
【0030】
アラート発信部49は、ブラックリスト照合部44やドメインデータ検査部46によりドメインデータがDNSを悪用した攻撃に関係していると判定された場合に、例えばその旨のアラートを外部に出力する。但し、アラートは、DNSを悪用した攻撃の検出を明示的に示すものでなくてもよく、例えばランプの点灯等であってもよい。本実施の形態では、警告情報を出力する出力手段の一例として、アラート発信部49を設けている。
【0031】
尚、これらの各機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、CPU90a(図10参照)が、DNSデータ抽出部41、ドメインデータ抽出部42、ブラックリスト照合部44、ドメインデータ検査部46、ブラックリスト更新部48、アラート発信部49の各機能を実現するプログラムを、例えば磁気ディスク装置90g(図10参照)からメインメモリ90c(図10参照)に読み込んで処理を行う。また、抽出条件記憶部43、ブラックリスト記憶部45、検査条件記憶部47は、例えば磁気ディスク装置90g(図10参照)によって実現される。
【0032】
本実施の形態では、このような構成を有する攻撃検出装置40が、DNSを悪用した3種類の攻撃(脅威)を検出する。
以下、3種類の脅威のそれぞれを検出する攻撃検出装置40を第1〜第3の実施の形態とし、これらの実施の形態の動作について説明する。
【0033】
[第1の実施の形態]
この第1の実施の形態で検出する脅威は、ボットに感染したクライアント10が、DNSクエリに含まれるFQDNの下位レベルのドメイン名に情報を埋め込むことで外部のC&Cサーバと通信を行うという脅威である。具体的には、クライアント10が、まず、例えば「command.bot.example.jp」というFQDNを含むDNSデータを社内DNSサーバ20に送信することにより、C&Cサーバにコマンドを要求する。これにより、DNSデータは、「bot.example.jp」というドメインを管理する攻撃者DNSサーバ30に行き着き、攻撃者DNSサーバ30がIPアドレスを含むDNSデータをクライアント10に返す。ここで、クライアント10のボットは、FQDNとIPアドレスと処理との対応を有しており、あるFQDNの名前解決の要求に対してあるIPアドレスが返された場合に、そのFQDNとそのIPアドレスに対応付けられた処理を実行する。例えば、FQDN「command.bot.example.jp」とIPアドレス「xxx.xxx.xxx.1」と処理「スパムメールの送信」とが対応付けられ、FQDN「command.bot.example.jp」とIPアドレス「xxx.xxx.xxx.2」と処理「ウェブページの改竄」とが対応付けられていたとする。すると、FQDN「command.bot.example.jp」を含むDNSデータに対して、攻撃者DNSサーバ30がIPアドレス「xxx.xxx.xxx.1」を含むDNSデータを返せば、クライアント10はスパムメールを送信し、攻撃者DNSサーバ30がIPアドレス「xxx.xxx.xxx.2」を含むDNSデータを返せば、クライアント10はウェブページを改竄する。
【0034】
図3は、この第1の実施の形態で送受信されるDNSデータに含まれる情報の具体例を示したものである。左欄に上りDNSデータに含まれる情報であるFQDNを示し、右欄に下りDNSデータに含まれる情報であるIPアドレスを示している。また、図では、上りDNSデータと、その上りDNSデータに対して返された下りDNSデータとを同じ行に示している。下りDNSデータには対応する上りDNSデータの情報が含まれているので、このような対応付けを行うことができる。
尚、図中、「login.bot.example.jp」は、C&Cサーバへのログインを要求する記述であり、「info.bot.example.jp」は、指示された処理を実行して得られた情報をC&Cサーバに伝える記述であり、「logout.bot.example.jp」は、C&Cサーバからのログアウトを要求する記述である。そして、これらの記述を含む上りDNSデータに対して返される下りDNSデータにおいて、IPアドレス「xxx.xxx.xxx.1」は「OK」を意味しており、IPアドレス「xxx.xxx.xxx.2」は「NG」を意味しているものとする。
尚、図では、英語表記のドメイン名を示したが、これはあくまで例示であり、日本語のドメイン名やマルチ言語のドメイン名に対しても本実施の形態は適用可能である。また、IPアドレスとしては、IPv4のアドレスを示したが、これも例示であり、IPv6のアドレスに対しても本実施の形態は適用可能である。
【0035】
次に、本実施の形態における攻撃検出装置40の動作について説明する。尚、攻撃検出装置40は通常、複数のクライアント10から社内DNSサーバ20へ送信されたDNSデータについて動作するが、以下では、簡単のため、1つのクライアント10に着目して動作を説明する。
【0036】
図4は、上りDNSデータを抽出して攻撃を検出するときの攻撃検出装置40の動作を示したフローチャートである。
攻撃検出装置40では、まず、DNSデータ抽出部41が、社内LAN70からインターネット80へ流れるネットワークトラフィックからデータをキャプチャする(ステップ401)。次に、ステップ401でキャプチャしたデータが、抽出条件記憶部43に記憶されたDNSデータ抽出条件を満たすかどうかを判定する(ステップ402)。具体的には、ステップ401でキャプチャしたデータが上りDNSデータであるかどうかを判定する。そして、上りDNSデータでなければ、ステップ401に戻ってキャプチャを続けるが、上りDNSデータであれば、ステップ403へ進む。
【0037】
次いで、ドメインデータ抽出部42が、ステップ402で上りDNSデータであると判定されたデータが、抽出条件記憶部43に記憶されたドメインデータ抽出条件を満たすかどうかを判定する(ステップ403)。具体的には、特定ドメイン名を含むFQDNの名前解決を要求する形式の上りドメインデータが一定時間内に所定数以上出現しており、ステップ402で上りDNSデータであると判定されたデータが、そのような上りドメインデータのうちの1つであるかどうかを判定する。この判定は、例えばステップ402で上りDNSデータと判定されたデータを時系列に記録することにより行えばよい。そして、このような上りドメインデータのうちの1つでなければ、ステップ401に戻ってキャプチャを続けるが、このような上りドメインデータのうちの1つであれば、ステップ404へ進む。
【0038】
その後、ブラックリスト照合部44は、ステップ403で一定時間内に所定数以上出現する上りドメインデータのうちの1つであると判定されたデータに、ブラックリスト記憶部45に記憶された上位ブラックリスト内の上位ドメイン名が含まれているかどうかを判定する(ステップ404)。
ここで、上位ブラックリスト内の上位ドメイン名がそのデータに含まれていないと判定された場合、ブラックリスト照合部44は、ブラックリスト記憶部45に記憶された下位ブラックリスト内の下位ドメイン名がそのデータに含まれているかどうかを判定する(ステップ405)。
【0039】
ここで、下位ブラックリスト内の下位ドメイン名がそのデータに含まれていないと判定された場合、ドメインデータ検査部46は、検査条件記憶部47に記憶された検査条件に従い、ドメインデータに含まれるFQDNをカウントする(ステップ406)。即ち、例えば、個々のFQDNに対してカウント値を格納する変数を用意しておき、ドメインデータに含まれるFQDNをカウントする際に、そのFQDNに対して用意された変数に格納されたカウント値をカウントアップする。そして、ドメインデータ検査部46は、FQDNのカウント値が予め定めた閾値を超えたかどうかを判定する(ステップ407)。
【0040】
その結果、FQDNのカウント値が閾値を超えていないと判定された場合は、ステップ401に戻ってキャプチャを続ける。一方、FQDNのカウント値が閾値を超えていると判定された場合は、ブラックリスト更新部48が、FQDNに含まれる上位ドメイン名を上位ブラックリストに追加し(ステップ408)、FQDNに含まれる下位ドメイン名を下位ブラックリストに追加する(ステップ409)。尚、この場合、FQDNのうち一般に公開されているドメインの部分を上位ドメイン名とし、FQDNのうちそのドメインのサブドメインの部分を下位ドメイン名とすればよい。
【0041】
そして、最後に、アラート発信部49が、DNSを悪用した不正通信による攻撃を検出した旨のアラートを外部に出力する(ステップ410)。
また、ステップ404で上位ブラックリスト内の上位ドメイン名がデータに含まれていると判定された場合や、ステップ405で下位ブラックリスト内の下位ドメイン名がデータに含まれていると判定された場合も、アラート発信部49が、DNSを悪用した不正通信による攻撃を検出した旨のアラートを外部に出力する(ステップ410)。
【0042】
また、図5は、下りDNSデータを抽出して攻撃を検出するときの攻撃検出装置40の動作を示したフローチャートである。
攻撃検出装置40では、まず、DNSデータ抽出部41が、インターネット80から社内LAN70へ流れるネットワークトラフィックからデータをキャプチャする(ステップ421)。次に、ステップ421でキャプチャしたデータが、抽出条件記憶部43に記憶されたDNSデータ抽出条件を満たすかどうかを判定する(ステップ422)。具体的には、ステップ421でキャプチャしたデータが下りDNSデータであるかどうかを判定する。そして、下りDNSデータでなければ、ステップ421に戻ってキャプチャを続けるが、下りDNSデータであれば、ステップ423へ進む。
【0043】
次いで、ドメインデータ抽出部42が、ステップ422で下りDNSデータであると判定されたデータが、抽出条件記憶部43に記憶されたドメインデータ抽出条件を満たすかどうかを判定する(ステップ423)。具体的には、特定ドメイン名を含むFQDNの名前解決の要求に対する応答として返された下りドメインデータが一定時間内に所定数以上出現しており、ステップ422で下りDNSデータであると判定されたデータが、そのような下りドメインデータのうちの1つであるかどうかを判定する。この判定は、例えばステップ422で下りDNSデータと判定されたデータを時系列に記録することにより行えばよい。そして、このような下りドメインデータのうちの1つでなければ、ステップ421に戻ってキャプチャを続けるが、このような下りドメインデータのうちの1つであれば、ステップ424へ進む。
【0044】
その後、ドメインデータ検査部46は、検査条件記憶部47に記憶された検査条件に従い、ステップ422で一定時間内に所定数以上出現する下りドメインデータのうちの1つであると判定されたデータに含まれるIPアドレスが、一定時間内に所定数以上出現する他の下りドメインデータに含まれるIPアドレスと異なるかどうかを判定する(ステップ424)。DNSを正しく利用していれば、同じFQDNの名前解決の要求に対しては、同じIPアドレスを返すのが普通であるので、ここでは、同じFQDNの名前解決の要求に対して異なるIPアドレスが返されているかどうかを判定している。
【0045】
その結果、これらのデータに含まれるIPアドレスが異ならないと判定された場合は、ステップ421に戻ってキャプチャを続ける。一方、これらのデータに含まれるIPアドレスが異なると判定された場合は、アラート発信部49が、DNSを悪用した攻撃を検出した旨のアラートを外部に出力する(ステップ425)。
【0046】
尚、この第1の実施の形態では、同じFQDNの名前解決の要求に対して異なるIPアドレスが返されている場合に、DNSを悪用した攻撃が行われているものと判断したが、この限りではない。例えば、名前解決の要求に対して返されるIPアドレスが何らかの攻撃を指示することが予め分かっていれば、このようなIPアドレスをブラックリスト化し、返されたIPアドレスがブラックリストに含まれていれば、DNSを悪用した攻撃が行われているものと判断するようにしてもよい。
【0047】
また、この第1の実施の形態では、上りDNSデータと下りDNSデータについて、別個にアラートを出力するようにしたが、この限りではない。例えば、図4でアラート出力が決定され、かつ、図5でアラート出力が決定されて初めて、上りDNSデータと下りDNSデータに共通のアラートを出力するようにしてもよい。
【0048】
以上述べたように、この第1の実施の形態では、一定時間内に同じドメインに属する同じサブドメインの名前解決を要求するDNSデータが所定数以上流れていることを検出するようにした。これにより、形式としてはDNSを正しく利用しているように見えるが、実際にはDNSを悪意ある行為に利用していることを検知可能となった。
また、同じFQDNの名前解決の要求に対して異なるIPアドレスが返されていることも検出するようにした。これにより、DNSを悪用した不正通信による攻撃が行われている虞があることを検知可能となった。
【0049】
[第2の実施の形態]
この第2の実施の形態で検出する脅威は、ボットに感染したクライアント10が、DNSクエリに含まれるFQDNの下位レベルのドメイン名に情報を埋め込むことで外部に情報を持ち出すという脅威である。具体的には、クライアント10のボットが、例えば「example.jp」というドメインのサブドメインに、クライアント10のOS、ユーザ名、パスワード、プロセス名等の情報を埋め込んだFQDNを含むDNSデータを社内DNSサーバ20に送信する。これにより、DNSデータは、「example.jp」というドメインを管理する攻撃者DNSサーバ30に行き着き、攻撃者DNSサーバ30がクライアント10のOS、ユーザ名、パスワード、プロセス名等の情報を詐取する。
【0050】
図6は、この第2の実施の形態で送信される上りDNSデータに含まれる情報の具体例を示したものである。1行目は、「winxp.sp3」というOSの情報を埋め込んだFQDN、2行目は、「test.user」というユーザの情報を埋め込んだFQDN、3行目は、「testpass.pass」というパスワードの情報を埋め込んだFQDN、4行目、5行目は、それぞれ「explorer.process」、「becky.process」というプロセスの情報を埋め込んだFQDNである。尚、攻撃者DNSサーバ30が詐取した情報がどのクライアント10に関する情報かを示すために、DNSデータには、クライアント10のIPアドレス「192.168.0.1」も埋め込まれている。
尚、図では、英語表記のドメイン名を示したが、これはあくまで例示であり、日本語のドメイン名やマルチ言語のドメイン名に対しても本実施の形態は適用可能である。
【0051】
次に、本実施の形態における攻撃検出装置40の動作について説明する。尚、攻撃検出装置40は通常、複数のクライアント10から社内DNSサーバ20へ送信されたDNSデータについて動作するが、以下では、簡単のため、1つのクライアント10に着目して動作を説明する。
【0052】
図7は、上りDNSデータを抽出して攻撃を検出するときの攻撃検出装置40の動作を示したフローチャートである。
攻撃検出装置40では、まず、DNSデータ抽出部41が、社内LAN70からインターネット80へ流れるネットワークトラフィックからデータをキャプチャする(ステップ441)。次に、ステップ441でキャプチャしたデータが、抽出条件記憶部43に記憶されたDNSデータ抽出条件を満たすかどうかを判定する(ステップ442)。具体的には、ステップ441でキャプチャしたデータが上りDNSデータであるかどうかを判定する。そして、上りDNSデータでなければ、ステップ441に戻ってキャプチャを続けるが、上りDNSデータであれば、ステップ443へ進む。
【0053】
次いで、ドメインデータ抽出部42が、ステップ442で上りDNSデータであると判定されたデータが、抽出条件記憶部43に記憶されたドメインデータ抽出条件を満たすかどうかを判定する(ステップ443)。具体的には、特定ドメイン名を含むFQDNの名前解決を要求する形式の上りドメインデータが一定時間内に所定数以上出現しており、ステップ442で上りDNSデータであると判定されたデータが、そのような上りドメインデータのうちの1つであるかどうかを判定する。この判定は、例えばステップ442で上りDNSデータと判定されたデータを時系列に記録することにより行えばよい。そして、このような上りドメインデータのうちの1つでなければ、ステップ441に戻ってキャプチャを続けるが、このような上りドメインデータのうちの1つであれば、ステップ444へ進む。
【0054】
その後、ブラックリスト照合部44は、ステップ443で一定時間内に所定数以上出現する上りドメインデータのうちの1つであると判定されたデータに、ブラックリスト記憶部45に記憶された上位ブラックリスト内の上位ドメイン名が含まれているかどうかを判定する(ステップ444)。
ここで、上位ブラックリスト内の上位ドメイン名がそのデータに含まれていないと判定された場合、ブラックリスト照合部44は、ブラックリスト記憶部45に記憶された下位ブラックリスト内の下位ドメイン名がそのデータに含まれているかどうかを判定する(ステップ445)。
【0055】
ここで、下位ブラックリスト内の下位ドメイン名がそのデータに含まれていないと判定された場合、ドメインデータ検査部46は、検査条件記憶部47に記憶された検査条件に従い、ドメインデータに含まれるFQDNをカウントする(ステップ446)。即ち、例えば、個々のFQDNに対してカウント値を格納する変数を用意しておき、ドメインデータに含まれるFQDNをカウントする際に、そのFQDNに対して用意された変数に格納されたカウント値をカウントアップする。そして、ドメインデータ検査部46は、FQDNのカウント値が予め定めた閾値を超えたかどうかを判定する(ステップ447)。
【0056】
その結果、FQDNのカウント値が閾値を超えていないと判定された場合、ドメインデータ検査部46は、FQDNの長さを求める(ステップ448)。そして、求めたFQDNの長さが予め定めた閾値を超えているかどうかを判定する(ステップ449)。ここで、FQDNの長さが閾値を超えていないと判定された場合は、ステップ441に戻ってキャプチャを続ける。一方、FQDNの長さが閾値を超えていると判定された場合や、ステップ447でFQDNのカウント値が閾値を超えていると判定された場合は、ブラックリスト更新部48が、FQDNに含まれる上位ドメイン名を上位ブラックリストに追加し(ステップ450)、FQDNに含まれる下位ドメイン名を下位ブラックリストに追加する(ステップ451)。尚、この場合、FQDNのうち一般に公開されているドメインの部分を上位ドメイン名とし、FQDNのうちそのドメインのサブドメインの部分を下位ドメイン名とすればよい。
【0057】
そして、最後に、アラート発信部49が、DNSを悪用した情報持ち出しによる攻撃を検出した旨のアラートを外部に出力する(ステップ452)。
また、ステップ444で上位ブラックリスト内の上位ドメイン名がデータに含まれていると判定された場合や、ステップ445で下位ブラックリスト内の下位ドメイン名がデータに含まれていると判定された場合も、アラート発信部49が、DNSを悪用した情報持ち出しによる攻撃を検出した旨のアラートを外部に出力する(ステップ452)。
【0058】
以上述べたように、この第2の実施の形態では、一定時間内に同じドメインに属する同じサブドメインの名前解決を要求するDNSデータが所定数以上流れていることを検出するようにした。これにより、形式としてはDNSを正しく利用しているように見えるが、実際にはDNSを悪意ある行為に利用していることを検知可能となった。
また、所定長以上のFQDNの名前解決を要求するDNSデータが送信されていることも検出するようにした。これにより、DNSを悪用した情報持ち出しによる攻撃が行われている虞があることを検知可能となった。
【0059】
[第3の実施の形態]
この第3の実施の形態で検出する脅威は、DNSキャッシュポイズニング攻撃を受けた社内DNSサーバ20が、自身が管理するドメインの存在しないサブドメインへの問い合わせを大量に行うという脅威である。
図8は、この第3の実施の形態で送信される上りDNSデータに含まれる情報の具体例を示したものである。ここで、「example.jp」は社内DNSサーバ20が管理するドメインであるが、「aaaa」、「bbbb」等のサブドメインは存在していないものとする。
尚、図では、英語表記のドメイン名を示したが、これはあくまで例示であり、日本語のドメイン名やマルチ言語のドメイン名に対しても本実施の形態は適用可能である。
【0060】
次に、本実施の形態における攻撃検出装置40の動作について説明する。
図9は、上りDNSデータを抽出して攻撃を検出するときの攻撃検出装置40の動作を示したフローチャートである。
攻撃検出装置40では、まず、DNSデータ抽出部41が、社内LAN70からインターネット80へ流れるネットワークトラフィックからデータをキャプチャする(ステップ461)。次に、ステップ461でキャプチャしたデータが、抽出条件記憶部43に記憶されたDNSデータ抽出条件を満たすかどうかを判定する(ステップ462)。具体的には、ステップ461でキャプチャしたデータが上りDNSデータであるかどうかを判定する。そして、上りDNSデータでなければ、ステップ461に戻ってキャプチャを続けるが、上りDNSデータであれば、ステップ463へ進む。
【0061】
次いで、ドメインデータ抽出部42が、ステップ462で上りDNSデータであると判定されたデータが、抽出条件記憶部43に記憶されたドメインデータ抽出条件を満たすかどうかを判定する(ステップ463)。具体的には、社内DNSサーバ20が管理するドメイン名を含むFQDNの名前解決を要求する形式の上りドメインデータが一定時間内に所定数以上出現しており、ステップ462で上りDNSデータであると判定されたデータが、そのような上りドメインデータのうちの1つであるかどうかを判定する。この判定は、例えばステップ462で上りDNSデータと判定されたデータを時系列に記録することにより行えばよい。また、社内DNSサーバ20が管理するドメイン名の設定を抽出条件記憶部43に記憶しておき、社内DNSサーバ20が管理するドメイン名が上りドメインデータに含まれるかを、この設定に基づいて判定してもよい。そして、このような上りドメインデータのうちの1つでなければ、ステップ461に戻ってキャプチャを続けるが、このような上りドメインデータのうちの1つであれば、ステップ464へ進む。
【0062】
その後、ドメインデータ検査部46は、検査条件記憶部47に記憶された検査条件に従い、ドメインデータに含まれるFQDNをカウントする(ステップ464)。即ち、例えば、個々のFQDNに対してカウント値を格納する変数を用意しておき、ドメインデータに含まれるFQDNをカウントする際に、そのFQDNに対して用意された変数に格納されたカウント値をカウントアップする。尚、このとき、例えば「aaaa.example.jp」と「bbbb.example.jp」を、別個のFQDNとしてカウントするか、何らかの基準に基づき同じFQDNとしてカウントするか等のカウントルールの設定を検査条件記憶部47に記憶しておき、この設定に基づいてFQDNをカウントするようにしてもよい。そして、ドメインデータ検査部46は、FQDNのカウント値が予め定めた閾値を超えたかどうかを判定する(ステップ465)。
【0063】
その結果、FQDNのカウント値が閾値を超えていないと判定された場合は、ステップ461に戻ってキャプチャを続ける。一方、FQDNのカウント値が閾値を超えていると判定された場合、ドメインデータ検査部46は、FQDNを含むDNSクエリで問い合わせを行うことによりFQDNで示されるドメインの存在を確認し、ドメインが存在しなかった回数をカウントする(ステップ466)。即ち、例えば、個々のFQDNに対して回数値を格納する変数を用意しておき、ドメインが存在しない旨のステータスを受け取った際に、そのFQDNに対して用意された変数に格納された回数値をカウントアップする。そして、ドメインが存在しなかった回数が予め定めた閾値を超えているかどうかを判定する(ステップ467)。
【0064】
その結果、ドメインが存在しなかった回数が閾値を超えていないと判定された場合は、ステップ461に戻ってキャプチャを続ける。一方、ドメインが存在しなかった回数が閾値を超えていると判定された場合は、アラート発信部49が、DNSキャッシュポイズニングによる攻撃を検出した旨のアラートを外部に出力する(ステップ468)。
【0065】
尚、その後、次のような処理を行うと、より望ましい。
即ち、社内DNSサーバ20のキャッシュに保持するサブドメインのリストと、ステップ466で問い合わせた結果、存在すると判断されたサブドメインのリストとを突合する。そして、これらのリストの差分を汚染情報として抽出し、ブラックリスト化する。
【0066】
以上により、本実施の形態の動作は終了する。
尚、本実施の形態において、攻撃検出装置40は、社内LAN70とインターネット80の境界におけるネットワークトラフィックをモニタするものとしたが、これには限らない。例えば、社内DNSサーバ20におけるネットワークトラフィックをモニタするようにしてもよい。
【0067】
また、本実施の形態では、3種類の脅威の検出方法を脅威ごとに分けて説明したが、1つの攻撃検出装置40が、これら3つの脅威の少なくとも2つを同時に検出するものであってもよい。
【0068】
最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。図10は、このようなコンピュータのハードウェア構成の一例を示した図である。図示するように、コンピュータは、演算手段であるCPU(Central Processing Unit)90aと、M/B(マザーボード)チップセット90bを介してCPU90aに接続されたメインメモリ90cと、同じくM/Bチップセット90bを介してCPU90aに接続された表示機構90dとを備える。また、M/Bチップセット90bには、ブリッジ回路90eを介して、ネットワークインターフェイス90fと、磁気ディスク装置(HDD)90gと、音声機構90hと、キーボード/マウス90iと、フレキシブルディスクドライブ90jとが接続されている。
【0069】
尚、図10において、各構成要素は、バスを介して接続される。例えば、CPU90aとM/Bチップセット90bの間や、M/Bチップセット90bとメインメモリ90cの間は、CPUバスを介して接続される。また、M/Bチップセット90bと表示機構90dとの間は、AGP(Accelerated Graphics Port)を介して接続されてもよいが、表示機構90dがPCI Express対応のビデオカードを含む場合、M/Bチップセット90bとこのビデオカードの間は、PCI Express(PCIe)バスを介して接続される。また、ブリッジ回路90eと接続する場合、ネットワークインターフェイス90fについては、例えば、PCI Expressを用いることができる。また、磁気ディスク装置90gについては、例えば、シリアルATA(AT Attachment)、パラレル転送のATA、PCI(Peripheral Components Interconnect)を用いることができる。更に、キーボード/マウス90i、及び、フレキシブルディスクドライブ90jについては、USB(Universal Serial Bus)を用いることができる。
【符号の説明】
【0070】
10a,10b,10c…クライアント、20…社内DNSサーバ、30…攻撃者DNSサーバ、40…攻撃検出装置、41…DNSデータ抽出部、42…ドメインデータ抽出部、43…抽出条件記憶部、44…ブラックリスト照合部、45…ブラックリスト記憶部、46…ドメインデータ検査部、47…検査条件記憶部、48…ブラックリスト更新部、49…アラート発信部
【技術分野】
【0001】
本発明は、DNS(Domain Name System)を悪用した攻撃を検出する攻撃検出装置、攻撃検出方法、及びプログラムに関する。
【背景技術】
【0002】
近年、コンピュータウイルスに代表されるマルウェアは、侵入方法、攻撃手法の何れにおいても高度化かつ巧妙化しており、その被害を未然に防ぐことや被害を局所化することが困難になりつつある。従来のマルウェアの場合は、その攻撃と被害の関係が容易に推測でき、対処の難易度の違いはあれど、比較的早期に発見できた。しかし、現在のマルウェアの場合は、その侵入に気が付き難く、発見されるまでに甚大な被害が生じてしまっている。
このような高度化かつ巧妙化したマルウェアとして、通信のパラメータを、形式は正常に見せつつ、悪意ある行為のために用いたものが考えられる。例えば、DNSサーバへの名前解決の問い合わせ(DNSクエリ)や、DNSクエリに対するDNSサーバからの応答(DNSレスポンス)の形式をとりつつ、これらの通信で交換する情報を悪意ある行為のために用いるもの等である。
【0003】
公報記載の技術としても、DNSクエリに着目してネットワーク攻撃を検出する技術はある(例えば、特許文献1参照)。この特許文献1では、DNSクエリ要求を取り扱う装置からDNSクエリを取得し、設定情報に指定された監視ドメインごと、或いは、監視ドメインに含まれるサブドメインごとに区分けされた統計データログを生成し、設定情報に指定された攻撃開始/終了条件に基づいて攻撃開始判定/攻撃終了判定を行い、判定結果をファイヤーウォール等の攻撃対策装置へ送信している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−251282号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述した通り、DNSクエリやDNSレスポンスの形式をとりつつ、これらの通信で交換する情報を悪意ある行為のために用いるようなマルウェアは考えられる。
しかしながら、このようなマルウェアによる攻撃は、通信のパラメータの形式としては正常なため、攻撃として検出するのは非常に困難であった。
また、特許文献1では、DNSクエリに着目してネットワーク攻撃を検出しているものの、実際の攻撃が開始された時点で攻撃検出を行うのではなく、攻撃者がDNSによる名前解決を要求した時点で攻撃検出を行うものであり、DNSの形式をとりつつ通信で交換する情報を悪意ある行為のために用いるようなマルウェアによる攻撃を検出するものではない。
【0006】
本発明の目的は、DNSの形式をとりつつ通信で交換する情報を悪意ある行為のために用いるような攻撃を検出することにある。
【課題を解決するための手段】
【0007】
かかる目的のもと、本発明は、DNS(Domain Name System)を悪用した攻撃を検出する攻撃検出装置であって、コンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得する取得手段と、取得手段により取得された複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定する判定手段と、複数の要求メッセージの中に特定要求メッセージ群が含まれていると判定手段により判定された場合に、外部に警告情報を出力する出力手段とを備えたことを特徴とする攻撃検出装置を提供する。
【0008】
また、この装置において、取得手段は、DNSサーバからコンピュータへ送信されたドメインの名前解決の結果であるIPアドレスを応答する形式の複数の応答メッセージを更に取得し、判定手段は、取得手段により取得された複数の応答メッセージの中に、同じドメインに属する同じサブドメインの名前解決の結果として各々が異なるIPアドレスを応答する形式の2つ以上の応答メッセージからなる特定応答メッセージ群が含まれているかどうかを更に判定し、出力手段は、複数の応答メッセージの中に特定応答メッセージ群が含まれていると判定手段により判定された場合に、コンピュータに対しDNSを悪用した不正通信による攻撃が行われている虞がある旨の情報を警告情報として出力する、ものであってよい。
【0009】
更に、この装置は、取得手段により取得された複数の要求メッセージから、同じドメインに属するサブドメインの名前解決を要求する形式の複数の特定要求メッセージを抽出する抽出手段を更に備え、判定手段は、抽出手段により抽出された複数の特定要求メッセージの中に、同じサブドメインの名前解決を要求する形式の所定数以上の特定要求メッセージからなる特定要求メッセージ群が含まれているかどうかを更に判定する、ものであってよい。
【0010】
更にまた、この装置において、判定手段は、取得手段により取得された複数の要求メッセージの中に、所定長以上の名前を有するサブドメインの名前解決を要求する形式の1つ以上の要求メッセージが含まれているかどうかを更に判定し、出力手段は、複数の要求メッセージの中に1つ以上の要求メッセージが含まれていると判定手段により判定された場合に、コンピュータに対しDNSを悪用した情報持ち出しによる攻撃が行われている虞がある旨の情報を警告情報として出力する、ものであってよい。
【0011】
また、本発明は、DNS(Domain Name System)を悪用した攻撃を検出する攻撃検出方法であって、コンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得するステップと、取得された複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定するステップと、複数の要求メッセージの中に特定要求メッセージ群が含まれていると判定された場合に、外部に警告情報を出力するステップとを含むことを特徴とする攻撃検出方法も提供する。
【0012】
更に、本発明は、コンピュータに、自コンピュータ又は他のコンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得する機能と、取得された複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定する機能と、複数の要求メッセージの中に特定要求メッセージ群が含まれていると判定された場合に、外部に警告情報を出力する機能とを実現させるためのプログラムも提供する。
【発明の効果】
【0013】
本発明によれば、DNSの形式をとりつつ通信で交換する情報を悪意ある行為のために用いるような攻撃を検出することができる。
【図面の簡単な説明】
【0014】
【図1】本実施の形態が適用されるコンピュータシステムの全体構成図である。
【図2】本実施の形態における攻撃検出装置の機能構成例を示したブロック図である。
【図3】第1の実施の形態における攻撃検出装置がモニタするデータの例を示した図である。
【図4】第1の実施の形態における攻撃検出装置の動作例を示したフローチャートである。
【図5】第1の実施の形態における攻撃検出装置の動作例を示したフローチャートである。
【図6】第2の実施の形態における攻撃検出装置がモニタするデータの例を示した図である。
【図7】第2の実施の形態における攻撃検出装置の動作例を示したフローチャートである。
【図8】第3の実施の形態における攻撃検出装置がモニタするデータの例を示した図である。
【図9】第3の実施の形態における攻撃検出装置の動作例を示したフローチャートである。
【図10】本実施の形態が適用されるコンピュータのハードウェア構成図である。
【発明を実施するための形態】
【0015】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
まず、本実施の形態が適用されるコンピュータシステムについて説明する。
図1は、このようなコンピュータシステムの全体構成例を示した図である。
図示するように、このコンピュータシステムでは、クライアント10a,10b,10cと社内DNSサーバ20とが社内LAN(Local Area Network)70に接続されており、攻撃者DNSサーバ30がインターネット80に接続されている。そして、攻撃検出装置40が社内LAN70とインターネット80の両方に接続されている。
【0016】
クライアント10a,10b,10cは、ユーザが使用するコンピュータである。例えば、パーソナルコンピュータやワークステーション、その他のコンピュータ装置にて実現される。また、本実施の形態において、クライアント10a,10b,10cは、ボットに感染することがあるものとする。ここで、ボットとは、コンピュータに感染した後、C&C(コマンド&コントロール)サーバと呼ばれる制御用サーバに接続して攻撃者からの指令を待ち、感染したコンピュータ上で指令通りの処理を実行するマルウェアである。尚、図では、クライアント10a,10b,10cを示したが、これらを区別する必要がない場合は、クライアント10と称することもある。また、図には、3台のクライアント10しか示していないが、4台以上のクライアント10を設けてもよい。
【0017】
社内DNSサーバ20は、他のコンピュータからDNSクエリを受け付け、DNSクエリに含まれるドメイン名の名前解決を行うDNSサーバのうち、会社内のクライアント10からDNSクエリを受け付けるものである。具体的には、DNSクエリに含まれるドメイン名の情報を自身が管理していれば、その情報をDNSレスポンスとしてクライアント10に返す。また、DNSクエリに含まれるドメイン名の情報を自身が管理していなければ、インターネット80上のルートネームサーバ(図示せず)にDNSクエリを転送する。その後、ルートネームサーバ(図示せず)から知らされたIPアドレスに基づいてDNSクエリを下位のDNSサーバ(図示せず)に転送する。そして、DNSクエリに含まれるドメイン名の情報を管理するDNSサーバにまでDNSクエリが行き着くと、そのDNSサーバからその情報を受け取ってDNSレスポンスとしてクライアント10に返す。
【0018】
攻撃者DNSサーバ30は、他のコンピュータからDNSクエリを受け付け、DNSクエリに含まれるドメイン名の名前解決を行うDNSサーバのうち、攻撃者が運営しているものである。ボットに感染したクライアント10が社内DNSサーバ20にDNSクエリを送信した場合、社内DNSサーバ20がインターネット80上のルートネームサーバ(図示せず)にDNSクエリを転送した後、DNSクエリは、DNSクエリに含まれるドメイン名の情報を管理するDNSサーバとしてこの攻撃者DNSサーバ30に行き着くものとする。
【0019】
攻撃検出装置40は、社内LAN70とインターネット80との間のネットワークトラフィックからDNSクエリやDNSレスポンスを抽出してモニタリングし、モニタリングしたDNSクエリやDNSレスポンスを分析し、分析した結果を通知する装置である。この装置は、ゲートウェイ等の通信装置の中に設けられてもよいし、通信装置とは独立に設けられてもよい。また、図では、この装置を、通信回線に対してアダプティブに設置されたものとしたが、通信回線上にインライン構成で設置されたものであってもよい。
【0020】
社内LAN70は、会社内のコンピュータやプリンタを専用回線等で接続し、これらの間でデータを送受信できるようにしたネットワークである。
インターネット80は、TCP/IPを用いて全世界のネットワークを相互に接続した巨大なネットワークである。
【0021】
本実施の形態では、かかるコンピュータシステムにおいて、攻撃検出装置40が、DNSクエリやDNSレスポンスをモニタリングして、形式としては正常であっても不正に用いられている可能性の高いDNSクエリやDNSレスポンスを検出する。
そこで、まず、この攻撃検出装置40の機能構成について説明する。
図2は、攻撃検出装置40の機能構成例を示したブロック図である。
図示するように、攻撃検出装置40は、DNSデータ抽出部41と、ドメインデータ抽出部42と、抽出条件記憶部43と、ブラックリスト照合部44と、ブラックリスト記憶部45とを備えている。また、ドメインデータ検査部46と、検査条件記憶部47と、ブラックリスト更新部48と、アラート発信部49とを備えている。
【0022】
DNSデータ抽出部41は、社内LAN70とインターネット80の間を流れるネットワークトラフィックをキャプチャし、キャプチャしたネットワークトラフィックの中からDNSクエリの形式のデータ(以下、「上りDNSデータ」という)及びDNSレスポンスの形式のデータ(以下、「下りDNSデータ」という)を抽出する。本実施の形態では、要求メッセージの一例として、上りDNSデータを用いており、応答メッセージの一例として、下りDNSデータを用いている。また、要求メッセージや応答メッセージを取得する取得手段の一例として、DNSデータ抽出部41を設けている。
【0023】
ドメインデータ抽出部42は、DNSデータ抽出部41が抽出した上りDNSデータのうち一定時間内にキャプチャしたものの中に、特定ドメイン名を含むFQDN(Fully Qualified Domain Name)の名前解決を要求する形式のDNSデータ(以下、「上りドメインデータ」という)が所定数以上あった場合に、その上りドメインデータを抽出し、DNSデータ抽出部41が抽出した下りDNSデータのうち一定時間内にキャプチャしたものの中に、特定ドメイン名を含むFQDNの名前解決の要求に対する応答としてIPアドレスを返す形式のDNSデータ(以下、「下りドメインデータ」という)が所定数以上あった場合に、その下りドメインデータを抽出する。本実施の形態では、特定要求メッセージの一例として、上りドメインデータを用いている。また、特定要求メッセージを抽出する抽出手段の一例として、ドメインデータ抽出部42を設けている。
【0024】
抽出条件記憶部43は、DNSデータ抽出部41が動作するための設定として、上りDNSデータ及び下りDNSデータを抽出するというDNSデータ抽出条件を記憶すると共に、ドメインデータ抽出部42が動作するための設定として、上りドメインデータ及び下りドメインデータを抽出するというドメインデータ抽出条件を記憶する。尚、これらの抽出条件は、例えば、ユーザが予め設定しておけばよい。
【0025】
ブラックリスト照合部44は、ドメインデータ抽出部42が抽出した上りドメインデータに含まれるドメイン名と、ブラックリスト記憶部45に記憶されたブラックリスト内のドメイン名とを照合する。具体的には、上位レベルのドメイン名(上位ドメイン名)が、上位ドメイン名のブラックリスト(上位ブラックリスト)に含まれているかどうか、及び、下位レベルのドメイン名(下位ドメイン名)が、下位ドメイン名のブラックリスト(下位ブラックリスト)に含まれているかどうかを検査する。そして、上位ドメイン名が上位ブラックリストに含まれている場合や、下位ドメイン名が下位ブラックリストに含まれている場合に、このドメインデータがDNSを悪用した攻撃に関係していると判定する。
【0026】
ブラックリスト記憶部45は、ブラックリスト照合部44における照合に用いられる上位ブラックリスト及び下位ブラックリストを記憶する。
【0027】
ドメインデータ検査部46は、上りドメインデータに含まれるFQDN及び下りドメインデータに含まれるIPアドレスの検査を行う。このうち、FQDNの検査では、同じFQDNの名前解決を要求する形式の上りドメインデータの数が閾値を超えているかどうか等を判定する。また、IPアドレスの検査では、同じFQDNの名前解決を要求する形式の上りドメインデータに対して異なるIPアドレスを返す下りドメインデータが存在するかを判定する。そして、同じFQDNの名前解決を要求する形式の上りドメインデータの数が閾値を超えている場合や、同じFQDNの名前解決を要求する形式の上りドメインデータに対する下りドメインデータとして異なるIPアドレスを返すものが存在する場合等に、このドメインデータがDNSを悪用した攻撃に関係していると判定する。本実施の形態では、特定要求メッセージ群の一例として、同じFQDNの名前解決を要求する形式の上りドメインデータの集合を用いており、特定応答メッセージ群の一例として、同じFQDNの名前解決を要求する形式の上りドメインデータに対して異なるIPアドレスを返す下りドメインデータの集合を用いている。また、複数の要求メッセージの中に特定要求メッセージ群が含まれているかどうかを判定する判定手段の一例として、ドメインデータ検査部46を設けている。
【0028】
検査条件記憶部47は、ドメインデータ検査部46が動作するための設定として、ドメインデータの検査に用いられる検査条件を記憶する。ここで、検査条件には、上記閾値の情報等も含まれる。尚、この検査条件は、例えば、ユーザが予め設定しておけばよい。
【0029】
ブラックリスト更新部48は、ドメインデータ検査部46による検査の結果に基づいて、ブラックリスト記憶部45に記憶されたブラックリストを更新する。
【0030】
アラート発信部49は、ブラックリスト照合部44やドメインデータ検査部46によりドメインデータがDNSを悪用した攻撃に関係していると判定された場合に、例えばその旨のアラートを外部に出力する。但し、アラートは、DNSを悪用した攻撃の検出を明示的に示すものでなくてもよく、例えばランプの点灯等であってもよい。本実施の形態では、警告情報を出力する出力手段の一例として、アラート発信部49を設けている。
【0031】
尚、これらの各機能は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、CPU90a(図10参照)が、DNSデータ抽出部41、ドメインデータ抽出部42、ブラックリスト照合部44、ドメインデータ検査部46、ブラックリスト更新部48、アラート発信部49の各機能を実現するプログラムを、例えば磁気ディスク装置90g(図10参照)からメインメモリ90c(図10参照)に読み込んで処理を行う。また、抽出条件記憶部43、ブラックリスト記憶部45、検査条件記憶部47は、例えば磁気ディスク装置90g(図10参照)によって実現される。
【0032】
本実施の形態では、このような構成を有する攻撃検出装置40が、DNSを悪用した3種類の攻撃(脅威)を検出する。
以下、3種類の脅威のそれぞれを検出する攻撃検出装置40を第1〜第3の実施の形態とし、これらの実施の形態の動作について説明する。
【0033】
[第1の実施の形態]
この第1の実施の形態で検出する脅威は、ボットに感染したクライアント10が、DNSクエリに含まれるFQDNの下位レベルのドメイン名に情報を埋め込むことで外部のC&Cサーバと通信を行うという脅威である。具体的には、クライアント10が、まず、例えば「command.bot.example.jp」というFQDNを含むDNSデータを社内DNSサーバ20に送信することにより、C&Cサーバにコマンドを要求する。これにより、DNSデータは、「bot.example.jp」というドメインを管理する攻撃者DNSサーバ30に行き着き、攻撃者DNSサーバ30がIPアドレスを含むDNSデータをクライアント10に返す。ここで、クライアント10のボットは、FQDNとIPアドレスと処理との対応を有しており、あるFQDNの名前解決の要求に対してあるIPアドレスが返された場合に、そのFQDNとそのIPアドレスに対応付けられた処理を実行する。例えば、FQDN「command.bot.example.jp」とIPアドレス「xxx.xxx.xxx.1」と処理「スパムメールの送信」とが対応付けられ、FQDN「command.bot.example.jp」とIPアドレス「xxx.xxx.xxx.2」と処理「ウェブページの改竄」とが対応付けられていたとする。すると、FQDN「command.bot.example.jp」を含むDNSデータに対して、攻撃者DNSサーバ30がIPアドレス「xxx.xxx.xxx.1」を含むDNSデータを返せば、クライアント10はスパムメールを送信し、攻撃者DNSサーバ30がIPアドレス「xxx.xxx.xxx.2」を含むDNSデータを返せば、クライアント10はウェブページを改竄する。
【0034】
図3は、この第1の実施の形態で送受信されるDNSデータに含まれる情報の具体例を示したものである。左欄に上りDNSデータに含まれる情報であるFQDNを示し、右欄に下りDNSデータに含まれる情報であるIPアドレスを示している。また、図では、上りDNSデータと、その上りDNSデータに対して返された下りDNSデータとを同じ行に示している。下りDNSデータには対応する上りDNSデータの情報が含まれているので、このような対応付けを行うことができる。
尚、図中、「login.bot.example.jp」は、C&Cサーバへのログインを要求する記述であり、「info.bot.example.jp」は、指示された処理を実行して得られた情報をC&Cサーバに伝える記述であり、「logout.bot.example.jp」は、C&Cサーバからのログアウトを要求する記述である。そして、これらの記述を含む上りDNSデータに対して返される下りDNSデータにおいて、IPアドレス「xxx.xxx.xxx.1」は「OK」を意味しており、IPアドレス「xxx.xxx.xxx.2」は「NG」を意味しているものとする。
尚、図では、英語表記のドメイン名を示したが、これはあくまで例示であり、日本語のドメイン名やマルチ言語のドメイン名に対しても本実施の形態は適用可能である。また、IPアドレスとしては、IPv4のアドレスを示したが、これも例示であり、IPv6のアドレスに対しても本実施の形態は適用可能である。
【0035】
次に、本実施の形態における攻撃検出装置40の動作について説明する。尚、攻撃検出装置40は通常、複数のクライアント10から社内DNSサーバ20へ送信されたDNSデータについて動作するが、以下では、簡単のため、1つのクライアント10に着目して動作を説明する。
【0036】
図4は、上りDNSデータを抽出して攻撃を検出するときの攻撃検出装置40の動作を示したフローチャートである。
攻撃検出装置40では、まず、DNSデータ抽出部41が、社内LAN70からインターネット80へ流れるネットワークトラフィックからデータをキャプチャする(ステップ401)。次に、ステップ401でキャプチャしたデータが、抽出条件記憶部43に記憶されたDNSデータ抽出条件を満たすかどうかを判定する(ステップ402)。具体的には、ステップ401でキャプチャしたデータが上りDNSデータであるかどうかを判定する。そして、上りDNSデータでなければ、ステップ401に戻ってキャプチャを続けるが、上りDNSデータであれば、ステップ403へ進む。
【0037】
次いで、ドメインデータ抽出部42が、ステップ402で上りDNSデータであると判定されたデータが、抽出条件記憶部43に記憶されたドメインデータ抽出条件を満たすかどうかを判定する(ステップ403)。具体的には、特定ドメイン名を含むFQDNの名前解決を要求する形式の上りドメインデータが一定時間内に所定数以上出現しており、ステップ402で上りDNSデータであると判定されたデータが、そのような上りドメインデータのうちの1つであるかどうかを判定する。この判定は、例えばステップ402で上りDNSデータと判定されたデータを時系列に記録することにより行えばよい。そして、このような上りドメインデータのうちの1つでなければ、ステップ401に戻ってキャプチャを続けるが、このような上りドメインデータのうちの1つであれば、ステップ404へ進む。
【0038】
その後、ブラックリスト照合部44は、ステップ403で一定時間内に所定数以上出現する上りドメインデータのうちの1つであると判定されたデータに、ブラックリスト記憶部45に記憶された上位ブラックリスト内の上位ドメイン名が含まれているかどうかを判定する(ステップ404)。
ここで、上位ブラックリスト内の上位ドメイン名がそのデータに含まれていないと判定された場合、ブラックリスト照合部44は、ブラックリスト記憶部45に記憶された下位ブラックリスト内の下位ドメイン名がそのデータに含まれているかどうかを判定する(ステップ405)。
【0039】
ここで、下位ブラックリスト内の下位ドメイン名がそのデータに含まれていないと判定された場合、ドメインデータ検査部46は、検査条件記憶部47に記憶された検査条件に従い、ドメインデータに含まれるFQDNをカウントする(ステップ406)。即ち、例えば、個々のFQDNに対してカウント値を格納する変数を用意しておき、ドメインデータに含まれるFQDNをカウントする際に、そのFQDNに対して用意された変数に格納されたカウント値をカウントアップする。そして、ドメインデータ検査部46は、FQDNのカウント値が予め定めた閾値を超えたかどうかを判定する(ステップ407)。
【0040】
その結果、FQDNのカウント値が閾値を超えていないと判定された場合は、ステップ401に戻ってキャプチャを続ける。一方、FQDNのカウント値が閾値を超えていると判定された場合は、ブラックリスト更新部48が、FQDNに含まれる上位ドメイン名を上位ブラックリストに追加し(ステップ408)、FQDNに含まれる下位ドメイン名を下位ブラックリストに追加する(ステップ409)。尚、この場合、FQDNのうち一般に公開されているドメインの部分を上位ドメイン名とし、FQDNのうちそのドメインのサブドメインの部分を下位ドメイン名とすればよい。
【0041】
そして、最後に、アラート発信部49が、DNSを悪用した不正通信による攻撃を検出した旨のアラートを外部に出力する(ステップ410)。
また、ステップ404で上位ブラックリスト内の上位ドメイン名がデータに含まれていると判定された場合や、ステップ405で下位ブラックリスト内の下位ドメイン名がデータに含まれていると判定された場合も、アラート発信部49が、DNSを悪用した不正通信による攻撃を検出した旨のアラートを外部に出力する(ステップ410)。
【0042】
また、図5は、下りDNSデータを抽出して攻撃を検出するときの攻撃検出装置40の動作を示したフローチャートである。
攻撃検出装置40では、まず、DNSデータ抽出部41が、インターネット80から社内LAN70へ流れるネットワークトラフィックからデータをキャプチャする(ステップ421)。次に、ステップ421でキャプチャしたデータが、抽出条件記憶部43に記憶されたDNSデータ抽出条件を満たすかどうかを判定する(ステップ422)。具体的には、ステップ421でキャプチャしたデータが下りDNSデータであるかどうかを判定する。そして、下りDNSデータでなければ、ステップ421に戻ってキャプチャを続けるが、下りDNSデータであれば、ステップ423へ進む。
【0043】
次いで、ドメインデータ抽出部42が、ステップ422で下りDNSデータであると判定されたデータが、抽出条件記憶部43に記憶されたドメインデータ抽出条件を満たすかどうかを判定する(ステップ423)。具体的には、特定ドメイン名を含むFQDNの名前解決の要求に対する応答として返された下りドメインデータが一定時間内に所定数以上出現しており、ステップ422で下りDNSデータであると判定されたデータが、そのような下りドメインデータのうちの1つであるかどうかを判定する。この判定は、例えばステップ422で下りDNSデータと判定されたデータを時系列に記録することにより行えばよい。そして、このような下りドメインデータのうちの1つでなければ、ステップ421に戻ってキャプチャを続けるが、このような下りドメインデータのうちの1つであれば、ステップ424へ進む。
【0044】
その後、ドメインデータ検査部46は、検査条件記憶部47に記憶された検査条件に従い、ステップ422で一定時間内に所定数以上出現する下りドメインデータのうちの1つであると判定されたデータに含まれるIPアドレスが、一定時間内に所定数以上出現する他の下りドメインデータに含まれるIPアドレスと異なるかどうかを判定する(ステップ424)。DNSを正しく利用していれば、同じFQDNの名前解決の要求に対しては、同じIPアドレスを返すのが普通であるので、ここでは、同じFQDNの名前解決の要求に対して異なるIPアドレスが返されているかどうかを判定している。
【0045】
その結果、これらのデータに含まれるIPアドレスが異ならないと判定された場合は、ステップ421に戻ってキャプチャを続ける。一方、これらのデータに含まれるIPアドレスが異なると判定された場合は、アラート発信部49が、DNSを悪用した攻撃を検出した旨のアラートを外部に出力する(ステップ425)。
【0046】
尚、この第1の実施の形態では、同じFQDNの名前解決の要求に対して異なるIPアドレスが返されている場合に、DNSを悪用した攻撃が行われているものと判断したが、この限りではない。例えば、名前解決の要求に対して返されるIPアドレスが何らかの攻撃を指示することが予め分かっていれば、このようなIPアドレスをブラックリスト化し、返されたIPアドレスがブラックリストに含まれていれば、DNSを悪用した攻撃が行われているものと判断するようにしてもよい。
【0047】
また、この第1の実施の形態では、上りDNSデータと下りDNSデータについて、別個にアラートを出力するようにしたが、この限りではない。例えば、図4でアラート出力が決定され、かつ、図5でアラート出力が決定されて初めて、上りDNSデータと下りDNSデータに共通のアラートを出力するようにしてもよい。
【0048】
以上述べたように、この第1の実施の形態では、一定時間内に同じドメインに属する同じサブドメインの名前解決を要求するDNSデータが所定数以上流れていることを検出するようにした。これにより、形式としてはDNSを正しく利用しているように見えるが、実際にはDNSを悪意ある行為に利用していることを検知可能となった。
また、同じFQDNの名前解決の要求に対して異なるIPアドレスが返されていることも検出するようにした。これにより、DNSを悪用した不正通信による攻撃が行われている虞があることを検知可能となった。
【0049】
[第2の実施の形態]
この第2の実施の形態で検出する脅威は、ボットに感染したクライアント10が、DNSクエリに含まれるFQDNの下位レベルのドメイン名に情報を埋め込むことで外部に情報を持ち出すという脅威である。具体的には、クライアント10のボットが、例えば「example.jp」というドメインのサブドメインに、クライアント10のOS、ユーザ名、パスワード、プロセス名等の情報を埋め込んだFQDNを含むDNSデータを社内DNSサーバ20に送信する。これにより、DNSデータは、「example.jp」というドメインを管理する攻撃者DNSサーバ30に行き着き、攻撃者DNSサーバ30がクライアント10のOS、ユーザ名、パスワード、プロセス名等の情報を詐取する。
【0050】
図6は、この第2の実施の形態で送信される上りDNSデータに含まれる情報の具体例を示したものである。1行目は、「winxp.sp3」というOSの情報を埋め込んだFQDN、2行目は、「test.user」というユーザの情報を埋め込んだFQDN、3行目は、「testpass.pass」というパスワードの情報を埋め込んだFQDN、4行目、5行目は、それぞれ「explorer.process」、「becky.process」というプロセスの情報を埋め込んだFQDNである。尚、攻撃者DNSサーバ30が詐取した情報がどのクライアント10に関する情報かを示すために、DNSデータには、クライアント10のIPアドレス「192.168.0.1」も埋め込まれている。
尚、図では、英語表記のドメイン名を示したが、これはあくまで例示であり、日本語のドメイン名やマルチ言語のドメイン名に対しても本実施の形態は適用可能である。
【0051】
次に、本実施の形態における攻撃検出装置40の動作について説明する。尚、攻撃検出装置40は通常、複数のクライアント10から社内DNSサーバ20へ送信されたDNSデータについて動作するが、以下では、簡単のため、1つのクライアント10に着目して動作を説明する。
【0052】
図7は、上りDNSデータを抽出して攻撃を検出するときの攻撃検出装置40の動作を示したフローチャートである。
攻撃検出装置40では、まず、DNSデータ抽出部41が、社内LAN70からインターネット80へ流れるネットワークトラフィックからデータをキャプチャする(ステップ441)。次に、ステップ441でキャプチャしたデータが、抽出条件記憶部43に記憶されたDNSデータ抽出条件を満たすかどうかを判定する(ステップ442)。具体的には、ステップ441でキャプチャしたデータが上りDNSデータであるかどうかを判定する。そして、上りDNSデータでなければ、ステップ441に戻ってキャプチャを続けるが、上りDNSデータであれば、ステップ443へ進む。
【0053】
次いで、ドメインデータ抽出部42が、ステップ442で上りDNSデータであると判定されたデータが、抽出条件記憶部43に記憶されたドメインデータ抽出条件を満たすかどうかを判定する(ステップ443)。具体的には、特定ドメイン名を含むFQDNの名前解決を要求する形式の上りドメインデータが一定時間内に所定数以上出現しており、ステップ442で上りDNSデータであると判定されたデータが、そのような上りドメインデータのうちの1つであるかどうかを判定する。この判定は、例えばステップ442で上りDNSデータと判定されたデータを時系列に記録することにより行えばよい。そして、このような上りドメインデータのうちの1つでなければ、ステップ441に戻ってキャプチャを続けるが、このような上りドメインデータのうちの1つであれば、ステップ444へ進む。
【0054】
その後、ブラックリスト照合部44は、ステップ443で一定時間内に所定数以上出現する上りドメインデータのうちの1つであると判定されたデータに、ブラックリスト記憶部45に記憶された上位ブラックリスト内の上位ドメイン名が含まれているかどうかを判定する(ステップ444)。
ここで、上位ブラックリスト内の上位ドメイン名がそのデータに含まれていないと判定された場合、ブラックリスト照合部44は、ブラックリスト記憶部45に記憶された下位ブラックリスト内の下位ドメイン名がそのデータに含まれているかどうかを判定する(ステップ445)。
【0055】
ここで、下位ブラックリスト内の下位ドメイン名がそのデータに含まれていないと判定された場合、ドメインデータ検査部46は、検査条件記憶部47に記憶された検査条件に従い、ドメインデータに含まれるFQDNをカウントする(ステップ446)。即ち、例えば、個々のFQDNに対してカウント値を格納する変数を用意しておき、ドメインデータに含まれるFQDNをカウントする際に、そのFQDNに対して用意された変数に格納されたカウント値をカウントアップする。そして、ドメインデータ検査部46は、FQDNのカウント値が予め定めた閾値を超えたかどうかを判定する(ステップ447)。
【0056】
その結果、FQDNのカウント値が閾値を超えていないと判定された場合、ドメインデータ検査部46は、FQDNの長さを求める(ステップ448)。そして、求めたFQDNの長さが予め定めた閾値を超えているかどうかを判定する(ステップ449)。ここで、FQDNの長さが閾値を超えていないと判定された場合は、ステップ441に戻ってキャプチャを続ける。一方、FQDNの長さが閾値を超えていると判定された場合や、ステップ447でFQDNのカウント値が閾値を超えていると判定された場合は、ブラックリスト更新部48が、FQDNに含まれる上位ドメイン名を上位ブラックリストに追加し(ステップ450)、FQDNに含まれる下位ドメイン名を下位ブラックリストに追加する(ステップ451)。尚、この場合、FQDNのうち一般に公開されているドメインの部分を上位ドメイン名とし、FQDNのうちそのドメインのサブドメインの部分を下位ドメイン名とすればよい。
【0057】
そして、最後に、アラート発信部49が、DNSを悪用した情報持ち出しによる攻撃を検出した旨のアラートを外部に出力する(ステップ452)。
また、ステップ444で上位ブラックリスト内の上位ドメイン名がデータに含まれていると判定された場合や、ステップ445で下位ブラックリスト内の下位ドメイン名がデータに含まれていると判定された場合も、アラート発信部49が、DNSを悪用した情報持ち出しによる攻撃を検出した旨のアラートを外部に出力する(ステップ452)。
【0058】
以上述べたように、この第2の実施の形態では、一定時間内に同じドメインに属する同じサブドメインの名前解決を要求するDNSデータが所定数以上流れていることを検出するようにした。これにより、形式としてはDNSを正しく利用しているように見えるが、実際にはDNSを悪意ある行為に利用していることを検知可能となった。
また、所定長以上のFQDNの名前解決を要求するDNSデータが送信されていることも検出するようにした。これにより、DNSを悪用した情報持ち出しによる攻撃が行われている虞があることを検知可能となった。
【0059】
[第3の実施の形態]
この第3の実施の形態で検出する脅威は、DNSキャッシュポイズニング攻撃を受けた社内DNSサーバ20が、自身が管理するドメインの存在しないサブドメインへの問い合わせを大量に行うという脅威である。
図8は、この第3の実施の形態で送信される上りDNSデータに含まれる情報の具体例を示したものである。ここで、「example.jp」は社内DNSサーバ20が管理するドメインであるが、「aaaa」、「bbbb」等のサブドメインは存在していないものとする。
尚、図では、英語表記のドメイン名を示したが、これはあくまで例示であり、日本語のドメイン名やマルチ言語のドメイン名に対しても本実施の形態は適用可能である。
【0060】
次に、本実施の形態における攻撃検出装置40の動作について説明する。
図9は、上りDNSデータを抽出して攻撃を検出するときの攻撃検出装置40の動作を示したフローチャートである。
攻撃検出装置40では、まず、DNSデータ抽出部41が、社内LAN70からインターネット80へ流れるネットワークトラフィックからデータをキャプチャする(ステップ461)。次に、ステップ461でキャプチャしたデータが、抽出条件記憶部43に記憶されたDNSデータ抽出条件を満たすかどうかを判定する(ステップ462)。具体的には、ステップ461でキャプチャしたデータが上りDNSデータであるかどうかを判定する。そして、上りDNSデータでなければ、ステップ461に戻ってキャプチャを続けるが、上りDNSデータであれば、ステップ463へ進む。
【0061】
次いで、ドメインデータ抽出部42が、ステップ462で上りDNSデータであると判定されたデータが、抽出条件記憶部43に記憶されたドメインデータ抽出条件を満たすかどうかを判定する(ステップ463)。具体的には、社内DNSサーバ20が管理するドメイン名を含むFQDNの名前解決を要求する形式の上りドメインデータが一定時間内に所定数以上出現しており、ステップ462で上りDNSデータであると判定されたデータが、そのような上りドメインデータのうちの1つであるかどうかを判定する。この判定は、例えばステップ462で上りDNSデータと判定されたデータを時系列に記録することにより行えばよい。また、社内DNSサーバ20が管理するドメイン名の設定を抽出条件記憶部43に記憶しておき、社内DNSサーバ20が管理するドメイン名が上りドメインデータに含まれるかを、この設定に基づいて判定してもよい。そして、このような上りドメインデータのうちの1つでなければ、ステップ461に戻ってキャプチャを続けるが、このような上りドメインデータのうちの1つであれば、ステップ464へ進む。
【0062】
その後、ドメインデータ検査部46は、検査条件記憶部47に記憶された検査条件に従い、ドメインデータに含まれるFQDNをカウントする(ステップ464)。即ち、例えば、個々のFQDNに対してカウント値を格納する変数を用意しておき、ドメインデータに含まれるFQDNをカウントする際に、そのFQDNに対して用意された変数に格納されたカウント値をカウントアップする。尚、このとき、例えば「aaaa.example.jp」と「bbbb.example.jp」を、別個のFQDNとしてカウントするか、何らかの基準に基づき同じFQDNとしてカウントするか等のカウントルールの設定を検査条件記憶部47に記憶しておき、この設定に基づいてFQDNをカウントするようにしてもよい。そして、ドメインデータ検査部46は、FQDNのカウント値が予め定めた閾値を超えたかどうかを判定する(ステップ465)。
【0063】
その結果、FQDNのカウント値が閾値を超えていないと判定された場合は、ステップ461に戻ってキャプチャを続ける。一方、FQDNのカウント値が閾値を超えていると判定された場合、ドメインデータ検査部46は、FQDNを含むDNSクエリで問い合わせを行うことによりFQDNで示されるドメインの存在を確認し、ドメインが存在しなかった回数をカウントする(ステップ466)。即ち、例えば、個々のFQDNに対して回数値を格納する変数を用意しておき、ドメインが存在しない旨のステータスを受け取った際に、そのFQDNに対して用意された変数に格納された回数値をカウントアップする。そして、ドメインが存在しなかった回数が予め定めた閾値を超えているかどうかを判定する(ステップ467)。
【0064】
その結果、ドメインが存在しなかった回数が閾値を超えていないと判定された場合は、ステップ461に戻ってキャプチャを続ける。一方、ドメインが存在しなかった回数が閾値を超えていると判定された場合は、アラート発信部49が、DNSキャッシュポイズニングによる攻撃を検出した旨のアラートを外部に出力する(ステップ468)。
【0065】
尚、その後、次のような処理を行うと、より望ましい。
即ち、社内DNSサーバ20のキャッシュに保持するサブドメインのリストと、ステップ466で問い合わせた結果、存在すると判断されたサブドメインのリストとを突合する。そして、これらのリストの差分を汚染情報として抽出し、ブラックリスト化する。
【0066】
以上により、本実施の形態の動作は終了する。
尚、本実施の形態において、攻撃検出装置40は、社内LAN70とインターネット80の境界におけるネットワークトラフィックをモニタするものとしたが、これには限らない。例えば、社内DNSサーバ20におけるネットワークトラフィックをモニタするようにしてもよい。
【0067】
また、本実施の形態では、3種類の脅威の検出方法を脅威ごとに分けて説明したが、1つの攻撃検出装置40が、これら3つの脅威の少なくとも2つを同時に検出するものであってもよい。
【0068】
最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。図10は、このようなコンピュータのハードウェア構成の一例を示した図である。図示するように、コンピュータは、演算手段であるCPU(Central Processing Unit)90aと、M/B(マザーボード)チップセット90bを介してCPU90aに接続されたメインメモリ90cと、同じくM/Bチップセット90bを介してCPU90aに接続された表示機構90dとを備える。また、M/Bチップセット90bには、ブリッジ回路90eを介して、ネットワークインターフェイス90fと、磁気ディスク装置(HDD)90gと、音声機構90hと、キーボード/マウス90iと、フレキシブルディスクドライブ90jとが接続されている。
【0069】
尚、図10において、各構成要素は、バスを介して接続される。例えば、CPU90aとM/Bチップセット90bの間や、M/Bチップセット90bとメインメモリ90cの間は、CPUバスを介して接続される。また、M/Bチップセット90bと表示機構90dとの間は、AGP(Accelerated Graphics Port)を介して接続されてもよいが、表示機構90dがPCI Express対応のビデオカードを含む場合、M/Bチップセット90bとこのビデオカードの間は、PCI Express(PCIe)バスを介して接続される。また、ブリッジ回路90eと接続する場合、ネットワークインターフェイス90fについては、例えば、PCI Expressを用いることができる。また、磁気ディスク装置90gについては、例えば、シリアルATA(AT Attachment)、パラレル転送のATA、PCI(Peripheral Components Interconnect)を用いることができる。更に、キーボード/マウス90i、及び、フレキシブルディスクドライブ90jについては、USB(Universal Serial Bus)を用いることができる。
【符号の説明】
【0070】
10a,10b,10c…クライアント、20…社内DNSサーバ、30…攻撃者DNSサーバ、40…攻撃検出装置、41…DNSデータ抽出部、42…ドメインデータ抽出部、43…抽出条件記憶部、44…ブラックリスト照合部、45…ブラックリスト記憶部、46…ドメインデータ検査部、47…検査条件記憶部、48…ブラックリスト更新部、49…アラート発信部
【特許請求の範囲】
【請求項1】
DNS(Domain Name System)を悪用した攻撃を検出する攻撃検出装置であって、
コンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得する取得手段と、
前記取得手段により取得された前記複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定する判定手段と、
前記複数の要求メッセージの中に前記特定要求メッセージ群が含まれていると前記判定手段により判定された場合に、外部に警告情報を出力する出力手段と
を備えたことを特徴とする攻撃検出装置。
【請求項2】
前記取得手段は、前記DNSサーバから前記コンピュータへ送信されたドメインの名前解決の結果であるIPアドレスを応答する形式の複数の応答メッセージを更に取得し、
前記判定手段は、前記取得手段により取得された前記複数の応答メッセージの中に、同じドメインに属する同じサブドメインの名前解決の結果として各々が異なるIPアドレスを応答する形式の2つ以上の応答メッセージからなる特定応答メッセージ群が含まれているかどうかを更に判定し、
前記出力手段は、前記複数の応答メッセージの中に前記特定応答メッセージ群が含まれていると前記判定手段により判定された場合に、前記コンピュータに対しDNSを悪用した不正通信による攻撃が行われている虞がある旨の情報を前記警告情報として出力することを特徴とする請求項1に記載の攻撃検出装置。
【請求項3】
前記取得手段により取得された前記複数の要求メッセージから、同じドメインに属するサブドメインの名前解決を要求する形式の複数の特定要求メッセージを抽出する抽出手段を更に備え、
前記判定手段は、前記抽出手段により抽出された前記複数の特定要求メッセージの中に、同じサブドメインの名前解決を要求する形式の所定数以上の特定要求メッセージからなる特定要求メッセージ群が含まれているかどうかを更に判定することを特徴とする請求項1又は2に記載の攻撃検出装置。
【請求項4】
前記判定手段は、前記取得手段により取得された前記複数の要求メッセージの中に、所定長以上の名前を有するサブドメインの名前解決を要求する形式の1つ以上の要求メッセージが含まれているかどうかを更に判定し、
前記出力手段は、前記複数の要求メッセージの中に前記1つ以上の要求メッセージが含まれていると前記判定手段により判定された場合に、前記コンピュータに対しDNSを悪用した情報持ち出しによる攻撃が行われている虞がある旨の情報を前記警告情報として出力することを特徴とする請求項1乃至3の何れかに記載の攻撃検出装置。
【請求項5】
DNS(Domain Name System)を悪用した攻撃を検出する攻撃検出方法であって、
コンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得するステップと、
取得された前記複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定するステップと、
前記複数の要求メッセージの中に前記特定要求メッセージ群が含まれていると判定された場合に、外部に警告情報を出力するステップと
を含むことを特徴とする攻撃検出方法。
【請求項6】
コンピュータに、
自コンピュータ又は他のコンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得する機能と、
取得された前記複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定する機能と、
前記複数の要求メッセージの中に前記特定要求メッセージ群が含まれていると判定された場合に、外部に警告情報を出力する機能と
を実現させるためのプログラム。
【請求項1】
DNS(Domain Name System)を悪用した攻撃を検出する攻撃検出装置であって、
コンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得する取得手段と、
前記取得手段により取得された前記複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定する判定手段と、
前記複数の要求メッセージの中に前記特定要求メッセージ群が含まれていると前記判定手段により判定された場合に、外部に警告情報を出力する出力手段と
を備えたことを特徴とする攻撃検出装置。
【請求項2】
前記取得手段は、前記DNSサーバから前記コンピュータへ送信されたドメインの名前解決の結果であるIPアドレスを応答する形式の複数の応答メッセージを更に取得し、
前記判定手段は、前記取得手段により取得された前記複数の応答メッセージの中に、同じドメインに属する同じサブドメインの名前解決の結果として各々が異なるIPアドレスを応答する形式の2つ以上の応答メッセージからなる特定応答メッセージ群が含まれているかどうかを更に判定し、
前記出力手段は、前記複数の応答メッセージの中に前記特定応答メッセージ群が含まれていると前記判定手段により判定された場合に、前記コンピュータに対しDNSを悪用した不正通信による攻撃が行われている虞がある旨の情報を前記警告情報として出力することを特徴とする請求項1に記載の攻撃検出装置。
【請求項3】
前記取得手段により取得された前記複数の要求メッセージから、同じドメインに属するサブドメインの名前解決を要求する形式の複数の特定要求メッセージを抽出する抽出手段を更に備え、
前記判定手段は、前記抽出手段により抽出された前記複数の特定要求メッセージの中に、同じサブドメインの名前解決を要求する形式の所定数以上の特定要求メッセージからなる特定要求メッセージ群が含まれているかどうかを更に判定することを特徴とする請求項1又は2に記載の攻撃検出装置。
【請求項4】
前記判定手段は、前記取得手段により取得された前記複数の要求メッセージの中に、所定長以上の名前を有するサブドメインの名前解決を要求する形式の1つ以上の要求メッセージが含まれているかどうかを更に判定し、
前記出力手段は、前記複数の要求メッセージの中に前記1つ以上の要求メッセージが含まれていると前記判定手段により判定された場合に、前記コンピュータに対しDNSを悪用した情報持ち出しによる攻撃が行われている虞がある旨の情報を前記警告情報として出力することを特徴とする請求項1乃至3の何れかに記載の攻撃検出装置。
【請求項5】
DNS(Domain Name System)を悪用した攻撃を検出する攻撃検出方法であって、
コンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得するステップと、
取得された前記複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定するステップと、
前記複数の要求メッセージの中に前記特定要求メッセージ群が含まれていると判定された場合に、外部に警告情報を出力するステップと
を含むことを特徴とする攻撃検出方法。
【請求項6】
コンピュータに、
自コンピュータ又は他のコンピュータからDNSサーバへ送信されたドメインの名前解決を要求する形式の複数の要求メッセージを取得する機能と、
取得された前記複数の要求メッセージの中に、同じドメインに属する同じサブドメインの名前解決を要求する形式の所定数以上の要求メッセージからなる特定要求メッセージ群が含まれているかどうかを判定する機能と、
前記複数の要求メッセージの中に前記特定要求メッセージ群が含まれていると判定された場合に、外部に警告情報を出力する機能と
を実現させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【公開番号】特開2011−199507(P2011−199507A)
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願番号】特願2010−62952(P2010−62952)
【出願日】平成22年3月18日(2010.3.18)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成21年度、独立行政法人情報通信研究機構「高度通信・放送研究開発委託研究/インシデント分析の広域化・高速化技術に関する研究開発」、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(500072884)株式会社ラック (25)
【Fターム(参考)】
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願日】平成22年3月18日(2010.3.18)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成21年度、独立行政法人情報通信研究機構「高度通信・放送研究開発委託研究/インシデント分析の広域化・高速化技術に関する研究開発」、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(500072884)株式会社ラック (25)
【Fターム(参考)】
[ Back to top ]