本発明の実施形態について、図面を参照して説明する。図1は、本発明の実施形態のマルウェア検知システムの構成例を示すブロック図である。なお、図1は、本発明のマルウェア検知システムの最小構成例を示すブロック図でもある。
図1に示すように、本発明の実施形態のマルウェア検知システムは、イントラネット内で端末装置1に接続された偽装DNSサーバ(DNSサーバ)2と、偽装DNSサーバ2、端末装置1およびイントラネット外の正規DNSサーバ4に接続され、外部の通信ネットワークに接続された透過プロキシサーバ(監視装置、中継装置)3とを含む。
なお、本実施形態において、マルウェアとは、自律的なプログラムであって、単なるExploitやPort/Address Scan等のコマンドではなく、例えば、Windows(登録商標)系であればサービス等の常駐プログラムとして、UNIX(登録商標)系であればdaemon的に常駐して、何らかの契機によって外部への通信を行うものをいう。
偽装DNSサーバ2は、イントラネット内部に配置された端末装置1に対して、サーバやホストの名前に対する正しいIPアドレス、または、サーバやホストの名前に対するIPアドレスのうち一部が偽装されたIPアドレスを解決する機能を有する。サーバやホストの名前に対するIPアドレスのうち一部とは、少なくとも実際には解決できないホスト名に対応するアドレスや、該当ネットワーク上において無効となるアドレスである。実際には解決できないホスト名とは、例えば、DNSの名前のエントリが変更されたりしてエントリ自体が存在しなかったり、DNSの名前エントリは存在するものの、アドレスが一切登録されていないホスト名である。また、該当ネットワーク上において無効となるアドレスとは、DNSのエントリがローカルアドレスや特定のプライベートアドレスを戻す設定になっていたりする場合のホスト名である。サーバやホストの名前に対するIPアドレスのうち一部が偽装されたIPアドレスとは、端末装置1が生成した全DNSクエリに対して応答するIPアドレスのうち、一部のIPアドレスが本来の応答内容と異なる(偽装されている)ことをいう。また、偽装されたIPアドレスを解決する機能とは、例えば、正しくアドレスが帰らないはずのDNSクエリの応答をイントラネットから見て外部に存在するかのようなアドレスエントリを生成して戻す機能をいう。
透過プロキシサーバ3は、イントラネットの出入り口において、内部から外部への通信をそのまま転送せずに一旦終端し、通過の可否を判定したのち中継する。
正規DNSサーバ4は、イントラネット外部に配置された外部サーバに対する正規のアドレスを解決する。
図2は、本発明の実施形態の偽装DNSサーバ2の構成例を示すブロック図である。図2に示すように、本実施形態の偽装DNSサーバ2は、パケット送受信機能(パケット送受信手段)21と、アドレス生成機能22と、名前管理機能(名前管理手段)23と、アドレス管理機能(アドレス管理手段)24と、一時アドレス記憶領域25と、アドレスルール管理機能26とを含む。
パケット送受信機能21は、イントラネット内の各装置からDNSクエリを受け取り、また応答メッセージを送出する。アドレスルール管理機能26は、名前からアドレスを生成するための定義情報と、アドレスに対応する名前に関する情報(名前情報)を管理する。なお、管理とは、情報をメモリやファイルやデータベースに登録したり、登録した情報を登録先から読み出して出力したりすることをいう。定義情報とは、例えば、あるドメインを含むホスト名に対して、一部が当該ホスト名をハッシュ化されたIPアドレスを戻すことを示す情報である。ハッシュ化の方法は、例えば、MD5や、sha1等であり、IPアドレスの重複が発生しにくい方法が好ましい。
アドレス生成機能22は、定義情報に基づいて名前から自動的に少なくとも1つ以上のアドレスを生成する。一時アドレス記憶領域25は、アドレス生成機能22によって生成されたアドレスと名前との組み合わせの情報(マップ情報)、及び生成されたアドレスに複数の名前が割り当てられる場合に生成される仮名情報を一定時間保持する。
名前管理機能23は、アドレスルール管理機能26によって管理されているアドレスに対応する名前に関する情報と、一時アドレス記憶領域25に記憶されたマップ情報とからアドレスデータ(アドレス情報。例えば、IPアドレス)を元に名前情報を解決(名前解決)する。なお、本実施形態において、名前解決とは、一時アドレス記憶領域25に記憶されたマップ情報を用いて、IPアドレス等のアドレスデータに対応するホスト名を特定することをいう。
アドレス管理機能24は、パケット受信機能21が受け取ったDNSクエリから、その問い合わせ内容と、問い合わせ元とを管理する。具体的には、例えば、問い合わせ元の装置のIPアドレスと、問い合わせの内容を示す情報とを一時アドレス記憶領域25等の記憶手段に記憶させる。また、アドレス管理機能24は、アドレスルール管理機能26によって管理されている名前に対応するアドレスに関する情報と、一時アドレス記憶領域25に記録されたマップ情報及び仮名情報とから名前データを元に、アドレス情報を解決する(アドレスを解決する)機能を有する。
名前に対応するアドレスに関する情報は、例えば、一旦問い合わせのあったデータに対しては、一時アドレス記憶領域25からアドレスを取り出すことを示す。また、名前に対応するアドレスに関する情報は、初めての問い合わせに対しては、問い合わせ元のホスト名またはドメイン名に応じて、自動生成するアドレスの範囲およびアドレスを自動生成する方法を示す。なお、アドレスの自動生成は、例えば、MD5や、sha1等でホスト名をハッシュ化して行われる。
また、アドレス管理機能24は、アドレスルール管理機能26によって管理されるアドレスルールの定義によっては、別途正規DNSサーバ4を用いて、外部サーバの名前に対応する正規のアドレスを取得し、その結果に応じてアドレス生成機能22によって自動生成されるアドレスか、当該取得した正規のアドレスを応答メッセージとして送信するかを選択する機能を有する。
偽装DNSサーバ2に含まれる各機能の動作を具体的に説明する。パケット送受信機能21は、端末装置1からのDNSクエリパケットを受信し、パケットに含まれる解決すべき名前、もしくはアドレスデータを抽出する。クエリが名前に対するアドレスを要求している場合には、パケット送受信機能21は、アドレス管理機能24にデータを転送し、処理を呼び出す。クエリがアドレスに対する名前を要求している場合には、パケット送受信機能21は、名前管理機能23にデータを転送し、処理を呼び出す。そして、アドレス管理機能24または名前管理機能23によって名前またはアドレスが解決された場合、パケット送受信機能21は、それらの情報をDNSの応答パケットとして端末装置1に送信する。
アドレス生成機能22は、アドレスルール管理機能26によって管理されるアドレスルールの定義に基づいて、DNSクエリに含まれる名前からハッシュ等を利用して、名前毎に概ね一意となるアドレスを自動生成する。アドレスルールの定義は、例えば、特定の名前パターンに対して生成するアドレスの範囲やパターンを規定する。
名前管理機能23は、アドレスから名前を解決する要求データをパケット送受信機能21から受け取る。名前管理機能23は、アドレスルール管理機能26によって管理されているアドレスルール、及び一時アドレス記憶領域25を参照する。アドレスルールによって一意に返却すべき名前が規定されているか、または、一時アドレス記憶領域25に、名前とアドレスのマップ情報が存在する(記憶されている)場合、名前管理機能23は、該当する名前情報をパケット送受信機能に返却する。また、返却する名前情報が存在しない場合、名前管理機能23は、名前無しで応答データをパケット送受信機能21に返却する。
アドレス管理機能24は、名前からアドレスを解決する要求データをパケット送受信機能21から受け取る。アドレス管理機能24は、アドレスルール管理機能26によって管理されているアドレスルール、及び一時アドレス記憶領域25を参照する。アドレスルールによって一意に返却すべきアドレスが規定されているか、または、一時アドレス記憶領域25に、名前とアドレスのマップ情報が存在する場合、アドレス管理機能24は、該当するアドレス情報をパケット送受信機能に返却する。
また、一時アドレス記憶領域25に、名前に対応するアドレスが一意に登録されていないか、登録データの有効期限が切れている場合、アドレスルールにてクエリによって問い合わされた名前に対するアドレスの自動生成が定義されている場合、アドレス管理機能24は、アドレス生成機能22を利用して名前に対応するアドレスを自動生成する。また、アドレス管理機能24は、パケット送受信機能21を呼び出して、端末装置1にDNSクエリに対する応答メッセージとして送信する。更に、アドレス管理機能24は、生成したアドレスと生成に利用した名前をマップ情報として別途一時アドレス記憶領域25に登録する。また、この時登録されるマップ情報には情報の有効期限を指定することもできる。
名前から生成したアドレスが、既に一時アドレス記憶領域25に存在するか、アドレスルールで定義されている場合は、既存の登録データに対して仮名(エイリアス/DNSではCNAME)として登録される。
アドレスルール管理機能26は、偽装DNSサーバ内の各機能からの名前、またはアドレスに対応するルールの要求に対し、管理しているアドレスルール内から適切なルールを返却する。また、アドレスルール管理機能26は、何らかのタイミングで一時アドレス記憶領域25に記録されたマップ情報をアドレスルールに変換して、外部の記憶手段に保存する機能を有する。更に、アドレスルール管理機能26は、外部の記憶手段に保存したルールを読み出す機能を有する。なお、適切なルールを返却するとは、予め用意された複数のルールのうち、アドレスパターンが一致したルールを適切なルールとして返却したり、Longest matchのケースを取ったりして返却したりすることをいう。
図3は、本発明の実施形態の透過プロキシサーバ3の構成例を示すブロック図である。図3に示すように、本実施形態の透過プロキシサーバ3は、パケット送受信機能A31、サーバ名解決機能32、偽装サーバ機能33、IDS機能34、エラー処理−通知機能30、セッション情報記憶領域38、パケット中継機能39、パケット送受信機能B35、サーバアドレス解決機能36、および偽装クライアント機能37を含む。
パケット送受信機能A31は、イントラネット内の端末装置1から外部ネットワークへのアクセス等のパケットを送受信する。パケット送受信機能B35は、外部ネットワーク上にある正規DNSサーバ4や、端末装置1がアクセスしようとしているサーバとのパケットの送受信を行う。サーバ名解決機能32は、パケット送受信機能A31が受け取ったパケットに含まれる宛先アドレス情報から、アクセスすべきサーバ名を、偽装DNSサーバ2に問い合わせて取得する。
IDS機能34は、パケット送受信機能A31が受け取ったパケットに含まれる送信データを検査し、特定のパターンに一致するかどうかを判定する。なお、IDS機能34は、一般的なIDS(特に、通信ネットワークの通信データを調査するNIDS)のsnortのように、シグネチャと呼ばれるパターンデータにもとづいて、判定を行ってもよい。あるいは、IDS機能34は、通信を中継すると同時にプロトコルを解釈して、通信データを特定のSandbox上に再現し、そこでそれらのデータがプログラムデータであれば、さらにそれを実行して振る舞いを監視し、判定を行ってもよい。また、IDS機能34は、通信データが圧縮されている場合や暗号化されている場合には、当該通信データを解凍したり、暗号化を説いたりする処理を実行してもよい。
偽装サーバ機能33は、端末装置1が外部サーバへ接続するために送信したパケットをパケット送受信機能A31によって受け取り、外部サーバになりすまして接続を受け付ける。セッション情報記憶領域38には、サーバ名解決機能32によって解決された端末装置1が本来接続するはずのサーバ名と、偽装サーバ機能33によって外部サーバを偽装して受け付けられた接続情報(セッション情報)とが合わせて記録される。
なお、セッション情報には、接続元端末のアドレス情報(例えば、マルウェアに感染されているノードのIPアドレス)、接続元端末のポート番号、接続先端末のアドレス情報(例えば、マルウェアが接続しようとしているノードのIPアドレス)、接続先端末のポート番号が含まれる。また、セッション情報には、接続先端末のホスト名やアドレス等の情報が含まれてもよいし、通信に用いられるプロトコルを示すプロトコル情報(例えば、プロトコル番号やイベントを示す情報)が含まれていてもよい。
サーバアドレス解決機能36は、セッション情報記憶領域38に記録されたサーバ名を利用して、正規DNSサーバ4を用いて、端末装置1が本来接続するはずの本来のアドレスを解決する。アドレスを解決するとは、具体的には、例えば、名前解決の逆引きの処理をいう。
偽装クライアント機能37は、サーバアドレス解決機能36によって解決されたサーバのアドレスに対して、偽装サーバ機能33が受け付け、端末装置1から送信され、パケット送受信機能A31が受信したパケットのデータを用いる。そして、偽装クライアント機能37は、外部のサーバに対し端末装置1になりすまして接続を行い、サーバからの応答メッセージを別途偽装サーバ機能33に転送する。
パケット中継機能39は、端末装置1と外部サーバとの通信を中継する。エラー処理−通知機能30は、各機能におけるエラーに関する処理と、その通知を行う。
また、偽装サーバ機能33は、偽装クライアント機能37が取得した外部サーバによる端末装置1に対する応答メッセージを利用して、端末装置1に対し応答メッセージを送信する。具体的には、例えば、端末装置1から偽装サーバ機能33が受信したデータを、偽装クライアント機能37が、外部サーバに送信する。その送信したデータに対する応答のデータを、偽装サーバ機能33が端末装置1に送信する。なお、偽装サーバ機能33は、応答のデータに送信元や送信先を示す情報が含まれている場合に、適宜データを書き換えたりするように構成されていてもよい。
また、パケット中継機能39は、セッション情報記憶領域38に記録された情報を元に、偽装サーバ機能33が受信した端末装置1が送信したデータを、偽装クライアント機能37を用いて外部サーバに転送する。更に、パケット中継機能39は、外部サーバから送信された応答データを偽装クライアント機能37に受信させ、偽装サーバ機能33を利用して端末装置1に送信するように各機能を制御する機能を有する。
また、エラー処理−通知機能30は、各機能毎のエラーに応じてその回数やエラー原因となる情報について何らかの条件処理を行う。そして、エラー処理−通知機能30は、別途パケット送受信機能A31またはパケット送受信機能B35のいずれかまたは両方を用いて、外部の装置、サーバ等へエラーとエラーに関連する情報、またはエラー処理の結果判定された検知情報等を通知する。
具体的には、エラー処理−通知機能30は、エラーに関連する情報として、例えば、エラーの原因となったデータそのものや、データの特徴量を示す情報であったり、エラーの原因となったデータを送信した端末のアドレスや本来の接続先等を示す情報を通知したりする。また、エラー処理−通知機能30は、検知情報等として、ある端末があるアドレスのホストに対してあるプロトコルで通信しようとしたことを示し、そのホストが本来DNS解決できないホストであることを示す情報を通知する。また、エラー処理−通知機能30は、検知情報等として、ある端末があるプロトコルであるデータを送信しようとしたが、その通信はあるマルウェアによる通信である可能性があることを示す情報を通知する。
また、偽装サーバ機能33は、IDS機能34による検査結果を元に端末装置1との接続を遮断、または、偽装クライアント機能37に対して検査したデータを転送する機能を有する。
また、偽装クライアント機能37は、サーバアドレス解決機能36によって名前が解決できない等、特定条件に応じて偽装サーバ機能33に対し、パケット送受信機能B35からの受信データ以外に、別途エラー等を通知する機能を有する。
尚、ホスト名に対するアドレス解決要求に対して、アドレスが解決できない場合、または、解決されたアドレスが他の通信ネットワークで無効なアドレスである場合、そのホスト名に対応するアドレスが生成され、生成されたアドレスがアドレス解決要求元に送信される。透過プロキシサーバ3は、例えば、ネットワーク監視プログラムが搭載されたコンピュータによって実現される。ネットワーク監視プログラムは、上記ホスト名に対応するアドレスへのアクセス要求を監視して、当該アドレスへのアクセス要求を検出した場合に、そのアクセス要求のアクセス先を示す情報を元にアラームを生成する処理を、コンピュータに実行させる。あるいは、ネットワーク監視プログラムは、上記ホスト名に対応するアドレスへのアクセスをホストとして受け付け、アクセス内容を元にアラームを生成する処理を、コンピュータに実行させる。
次に、偽装DNSサーバ2の動作について、図面を参照して説明する。図4は、偽装DNSサーバ2の動作を示すフローチャートである。
パケット送受信機能21は、DNSクエリ待ちの処理(ステップS101)で、イントラネット内の端末装置1及び透過プロキシサーバ3からのDNSクエリを待ち合わせる。DNSクエリを受け取ると、パケット送受信機能21は、受け取ったクエリ及びその送信元の情報を合わせてアドレス管理機能24に転送する。DNSクエリを受け取ったアドレス管理機能24は、その内容を判定する。クエリが名前からアドレス解決を要求している場合(ステップS102;Y)、アドレス管理機能24は、正引き処理を実行する(ステップS103)。クエリがアドレスから名前の解決を要求している場合(ステップS102;N)、アドレス管理機能24は、逆引き処理を実行する(ステップS113)。
アドレス管理機能24は、正引き処理(ステップS103)で、DNSクエリに含まれる名前を一時アドレス記憶領域25から検索する。既にマップ情報、または仮名情報が存在する場合(ステップS104;Y)、アドレス管理機能24は、マップ情報からDNSクエリの名前に対応するアドレス情報を取り出す。処理は、アドレス応答設定(ステップS110)に移行する。
アドレス管理機能24は、一時アドレス記憶領域25にマップ情報が存在しない場合に(ステップS104;N)、ルール確認の処理(ステップS105)を実行する。アドレス管理機能24は、ルール確認の処理(ステップS105)で、アドレスルール管理機能26に対して、クエリ情報(DNSクエリに含まれる名前)に対応するアドレス生成ルールを問い合わせる。
そして、クエリ情報に対応するアドレス生成ルールの存在を確認する。クエリ情報に対応するアドレス生成ルールが存在する場合(ステップS106;Y)、処理は、アドレス自動生成(ステップS107)に移行する。また、クエリ情報に対応するアドレス生成ルールが存在しない場合(ステップS106;N)、対応アドレスなしの応答を戻す為、処理は、応答メッセージ生成(ステップS111)に移行する。
次に、アドレス自動生成の処理(ステップS107)では、アドレス生成機能22が、アドレスルール管理機能26によって戻されたアドレス生成ルールにしたがって、クエリ情報に対応するアドレスを自動生成する。そして、生成したアドレスが一時アドレス記憶領域25のマップ情報に存在しない場合(ステップS108;N)、処理は、マップ情報保存(ステップS109)に移行する。また、既にマップ情報が存在する場合(ステップS108;Y)、処理は、仮名情報保存(ステップS116)に移行する。
マップ情報保存の処理(ステップS109)では、生成されたマップ情報(ステップS107の処理で生成されたアドレスとステップS101の処理で受信したDNSクエリに含まれる名前との組み合わせ)を一時アドレス記憶領域25に保存する。その後、処理は、アドレス応答設定(ステップS110)に移行する。
仮名情報保存の処理(ステップS116)では、ステップS107の処理で生成されたアドレスに対する仮名(エイリアス/DNSではCNAME)を示す仮名情報を生成し、一時アドレス記憶領域25に保存する。その後、処理は、アドレス応答設定(ステップS110)に移行する。
アドレス応答設定の処理(ステップS110)では、パケット送受信機能A31が、名前に対応するアドレス情報を応答メッセージに含めるように設定する。その後、処理は、応答メッセージ作成(ステップS111)に移行する。
逆引き処理(ステップS113)では、名前管理機能23が、DNSクエリに含まれるアドレスを、一時アドレス記憶領域25のマップ情報から検索する。そして、DNSクエリに含まれるアドレスが一時アドレス記憶領域25のマップ情報に存在する場合(ステップS114;Y)、処理は、名前応答設定(ステップS115)に移行する。DNSクエリに含まれるアドレスが一時アドレス記憶領域25のマップ情報に存在しない場合(ステップS114;N)、処理は、応答メッセージ作成(ステップS111)に移行する。
名前応答設定の処理(ステップS115)では、パケット送受信機能A31が、アドレスに対応する名前情報を応答メッセージに含めるように設定する。その後、処理は、応答メッセージ作成(ステップS111)に移行する。
応答メッセージ作成の処理(ステップS111)では、パケット送受信機能A31が、ステップS110の処理またはステップS115の処理で設定された応答メッセージに含めるデータに対応する応答メッセージを作成する。その後、処理は、DNS応答(ステップS112)に移行する。なお、応答メッセージに名前から解決したアドレス、もしくはアドレスから解決した名前のいずれも含める設定でない場合(名前、もしくはアドレスの解決ができなかった場合)は、パケット送受信機能A31が、解決された名前、もしくはアドレスが無いことを通知するための応答メッセージを作成する。その後、処理は、DNS応答(ステップS112)に移行する。
DNS応答の処理(ステップS112)では、パケット送受信機能21が、ステップS111の処理で生成された応答メッセージを、アドレス管理機能24が管理するDNSクエリ送信元に送信する。
なお、上記ステップS103およびステップS113における一時アドレス記憶領域25に登録されたマップ情報及び仮名情報の参照時には、適宜情報の有効期限が確認される。有効期限を経過したものについては、削除あるいは登録されていないものとして処理が行われる。
次に、透過プロキシサーバ3の動作について、図面を参照して説明する。図5は、透過プロキシサーバ3の動作を示すフローチャートである。
パケット送受信機能1は、外部接続待ちの処理(ステップS201)で、イントラネット内の端末装置1による外部ネットワークへのアクセス(イントラネット内の端末装置1から外部の通信ネットワークに接続された通信端末に送信されたパケット)を受け取る。パケット送受信機能1は、パケットに含まれる宛先アドレスの情報を接続先アドレス情報Aとして、セッション情報記憶領域38に保存する。その後、処理は、偽装サーバ受付(ステップS202)に移行する。
偽装サーバ受付の処理(ステップS202)では、偽装サーバ機能33が、端末装置1の接続先サーバを偽装して接続を受け付け、端末装置1から送信された最初のデータの受信を行う。このとき、偽装サーバ機能33の設定により、データを受け付ける前に、本来の接続先のサーバ(端末装置1の接続先(パケット送信先)サーバ)が最初に出力するデータと同様のデータを先に端末装置1に返却する場合もある。そして、本来の接続先の名前を解決するため、処理は、逆引き処理(ステップS203)に移行する。
逆引き処理(ステップS203)では、サーバ名解決機能32が、ステップS201の処理でセッション情報記憶領域38に保存された接続先アドレス情報Aを用いて、偽装DNSサーバ2に対し対応するホスト名を問い合わせる。そして、逆引きで解決できない場合(ステップS204;N)、処理は、逆引きエラー処理(ステップS212)に移行する。逆引きで解決できた場合(ステップS204;Y)、サーバ名解決機能32は、接続先ホストの名前を接続先ホスト名情報として、既に記録されている接続先アドレス情報1と関連付けてセッション情報記憶領域38に記録する。その後、処理は、接続データ−ルールチェック(ステップS205)に移行する。
接続データ−ルールチェックの処理(ステップS205)では、IDS機能34が、偽装サーバ機能33が受け付けたデータやセッション情報をチェックする。そして、監視対象となるパターンが検出された場合(ステップS206;NG)、処理は、IDS検知判定(ステップS213)に移行する。
監視対象となるパターンが検出されなかった場合(ステップS206;OK)、処理は、サーバアドレス解決(ステップS207)に移行する。
サーバアドレス解決の処理(ステップS207)では、サーバアドレス解決機能36が、正規DNSサーバ4に対して、接続先ホストの名前に対応するアドレスを問合せる。このとき、サーバアドレス解決機能36は、逆引き処理(ステップS203)でセッション情報記憶領域38に保存された接続先ホスト名情報を利用する。そして、接続先ホストの名前に対応するアドレス情報が取得できなかった場合(ステップS208;N)、処理は、正引きエラー処理(ステップS214)に移行する。一方、接続先ホストの名前に対応するアドレス情報が取得できた場合(ステップS208;Y)、サーバアドレス解決機能36は、取得できたアドレスを接続先アドレス情報Bとする。そして、サーバアドレス解決機能36は、セッション情報記憶領域38に、接続先アドレス情報Bを、既に記録されている接続先アドレス情報Aと接続先ホスト情報と関連付けてセッション情報として保存する。その後、処理は、偽装クライアント接続(ステップS209)に移行する。
偽装クライアント接続(ステップS209)では、偽装クライアント機能37が、ステップS207の処理で解決された接続先アドレス情報Bに対応するサーバ等に、端末装置1を偽装してパケット送受信機能B035を利用して接続を行う。接続不可の場合、処理は、エラー通知の処理(ステップS211)に移行する。接続可能な場合、処理は、プロキシ処理起動(ステップS210)に移行する。
プロキシ処理起動(ステップS210)では、パケット中継機能39が、セッション情報記憶領域38に記録されたセッション情報を元に、偽装サーバ機能33が受信した端末装置1が送信したデータを、偽装クライアント機能37を用いて外部サーバに転送する。更に、パケット中継機能39は、外部サーバから送信された応答データを偽装クライアント機能37に受信させ、偽装サーバ機能33を利用して端末装置1に送信するように各機能を制御する。そして、処理は、外部接続待ち(ステップS201)に移行する。
逆引きエラー処理(ステップS212)では、エラー処理−通知機能30が、逆引きエラーとなった接続先アドレス情報Aについて、一定回数以上のエラー発生の判定等の条件処理を行う。その結果判定のため、処理は、エラー通知判定(ステップS215)に移行する。
IDS検知判定の処理(ステップS213)では、エラー処理−通知機能30が、IDS機能34によるチェックの結果について、その原因となったアクセスデータ、及び接続先ホスト名情報、または接続先アドレス情報Aの一方もしくは両方について、一定回数以上の検知等の判定等の条件処理を行う。条件を満たす場合、すなわち、接続が不正である可能性ありと判定された場合(ステップS213;NG)、処理は、エラー通知判定(ステップS215)に移行する。条件を満たさない場合(ステップS213;OK)、処理は、サーバアドレス解決(ステップS207)に移行する。
正引きエラー処理(ステップS214)では、エラー処理−通知機能30が、正引きエラーとなった接続先ホスト名情報について、一定回数以上のエラー発生等の条件処理を行う。その結果判定のため、処理は、エラー通知判定(ステップS215)に移行する。
エラー通知判定の処理(ステップS215)では、エラー処理−通知機能30が、ステップS212、ステップS213、ステップS214のエラー処理結果を元に処理を行う。対象エラー処理がステップS212の処理よるものである場合は、エラー処理−通知機能30は、アクセス元の端末装置1のアドレスと接続先アドレス情報Aとを利用して、一定期間以内に既に通知されているか等の条件判定により、通知対象であるかを判定する。対象エラー処理がステップS213の処理によるものである場合は、エラー処理−通知機能30は、アクセス元の端末装置1のアドレスと、ステップS206のIDSチェックの処理で検出された対象データとを利用する。対象エラー処理がステップS214の処理によるものである場合は、エラー処理−通知機能30は、アクセス元の端末装置1のアドレスと、接続先ホスト名情報とを利用する。そして、通知する必要があると判定した場合(ステップS215;Y)、処理は、エラー通知の処理(ステップS211)に移行する。一方、通知不要と判定された場合(ステップS215;N)、処理は、外部接続待ち(ステップS201)に移行する。
エラー通知の処理(ステップS211)では、エラー処理−通知機能30が、パケット送受信機能A031またはパケット送受信機能B035のいずれか、あるいは両方を利用して、本システム内外の何らかの装置またはプログラムに対して何らかの方法(例えば、メールやSYSLOG等)で、検知した情報またはエラーを通知する。
なお、本実施形態において、端末装置1上で動作する外部ネットワーク上のサーバへのアクセスを行うプログラム(マルウェアを含む)、機能等については一般的に以下の手順にて外部サーバへのアクセスを行うものを想定する。
1.外部サーバへのアクセスを行うプログラムは、初めに外部サーバのホスト名に対するアドレス情報をDNSサーバに問い合わせる。
2.外部サーバへのアクセスを行うプログラムは、上記の問い合わせにて得られたアドレスに対して接続を試みる。
また、本実施形態における正規DNSサーバ4は、一般のDNSサーバであるとする。
本実施形態は、端末装置1内のマルウェア等のプログラムによって、外部ネットワーク上のサーバ等へのアクセスが行われる際に、偽装DNSサーバ2によってアドレス(または名前)の解決が行われるように構成されている。従って、正規DNSサーバ4上では既にアドレス(または名前)が無効になっている、あるいは、ローカルな通信用アドレスになっている等、通信対象として不適当なアドレス(または名前)になっている場合において、本来マルウェアによる通信が発生しない状況であっても、通信可能なアドレスが戻される。それにより、マルウェアによる通信を発生させることが可能になり、マルウェアの存在を検出することが可能になる。
また、本実施形態では、上記で発生したマルウェアによる通信の宛先を判定することにより、通常イントラネット内部から外部に対しては発生することの無いポートへの通信等を判定することにより、マルウェアの存在を検知することが可能になる。
また、本実施形態では、透過プロキシサーバ3において、外部ネットワーク上のサーバを偽装する。それにより、実際には外部ネットワーク上のサーバが既に閉鎖、もしくは一時的に停止しているといった接続不可である状況においても、通信を受け付けることが可能となる。従って、本来監視不可能な発生しないはずの通信内容をIDSにより検査することが可能になる。そして、通常の通信ネットワーク構成では不可能なイントラネット内におけるマルウェアの存在を検知することが可能になる。
また、本実施形態では、透過プロキシサーバ3において、一旦内部の偽装DNSサーバ2に対して、アクセス先のアドレスに対するホスト名の問い合わせを行う様に構成されている。従って、その時点でホスト名が解決できない場合、端末装置1内のプログラムがDNSによりホスト名からアドレスを解決せずに、直接対象アドレスへの通信を発生させようとしていることを検知可能である。また、対象アドレスが、例えば、イントラネット内等に存在するサーバ等でない場合、外部への不正なアクセスとして判定する。これにより、マルウェアによる通信である可能性の高い通信を検知することが可能になる。
本発明は、イントラネット内と外部を接続するファイアウォールやルータ等の装置、及びイントラネット内に設置するDNSサーバといった分野に適用できる。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
本出願は、2008年3月4日に出願された日本国特許出願2008−052770を基礎とする優先権を主張し、その開示の全てをここに取り込む。