図2は、実施形態にかかる検知方法の例を説明する図である。図2に示すネットワークにはWORKGROUP、FACTORY、KOUJOUの3つのグループが含まれている。グループは、例えば、ワークグループやドメインであっても良い。WORKGROUPというグループには、端末2a、端末2b、検知装置20が含まれる。FACTORYというグループには、端末2cと端末2dが含まれており、KOUJOUというグループには端末2eと端末2fが含まれている。図2の例では、端末2a〜2fはいずれもサーバサービスを提供する装置として、各端末2が属するグループのマスタブラウザ4に自装置のホスト名を通知するものとする。また、各端末2が使用するホスト名は「HOST−」という文字列の後に、その端末2の符号の最後のアルファベットの大文字をつなげた文字列であるものとし、検知装置20はAPPARATUSというホスト名を使用するものとする。
端末2aは自装置のホスト名であるHOST−Aと自装置の属するグループ名を含むパケットをブロードキャストするので、WORKGROUPというグループ中のマスタブラウザ4aにHOST−Aというホスト名が通知される(矢印A11)。同様に、端末2bもHOST−Bというホスト名と端末2bが属するグループ名を含むパケットをブロードキャストするので、マスタブラウザ4aにHOST−Bというホスト名が通知される(矢印A12)。そこで、マスタブラウザ4aは、マスタブラウザ4aが管理するブラウズリスト6aに、HOST−AとHOST−Bを記録する。
同様に、端末2cと端末2dも自装置のホスト名と自装置が属するグループ名を含むパケットをブロードキャストする(矢印A13、A14)。すると、FACTORYというグループ中のマスタブラウザ4bは、端末2cと端末2dのホスト名をブラウズリスト6bに記録する。この時点で、ブラウズリスト6bには、HOST−CとHOST−Dが記録される。
さらに、端末2eと端末2fも自装置のホスト名と自装置が属するグループ名を含むパケットをブロードキャストする(矢印A15、A16)。すると、KOUJOUというグループ中のマスタブラウザ4cは端末2eと端末2fのホスト名をブラウズリスト6cに記録するので、ブラウズリスト6cには、HOST−EとHOST−Fが記録される。
検知装置20はネットワークに参加しているので、各端末2からブロードキャストされたパケットを受信できる。検知装置20は、受信したパケットに含まれているグループ名を記憶する。例えば、検知装置20は、端末2cから送信されたパケットを用いて、FACTORYというグループが存在することを認識できる。同様に、検知装置20は、端末2fから送信されたパケットを用いて、KOUJOUというグループが存在することを認識できる。
検知装置20は、グループ名と検知装置20が検知処理に使用するホスト名の組み合わせを複数生成するとともに、各組み合わせを含むパケットを生成する。ここで、検知装置20が検知処理に使用するホスト名は、検知装置20の実際のホスト名でもよく、また、検知装置20のホスト名ではないがマルウェア7に感染した装置の検知のために使用するダミーのホスト名(ダミー名)でもよい。また、複数の組み合わせの中には、互いにグループ名が重複する組み合わせが含まれていても良く、互いにホスト名が重複する組み合わせが含まれていても良い。図2の例では、ホスト名が重複する複数の組み合わせを用いて検知装置20に対応する登録が行われる場合を説明する。
図2の例では、検知装置20は、自装置が属するグループのグループ名(WORKGROUP)と自装置のホスト名(APPARATUS)を含むパケットP1を生成する。さらに、パケットP1をコピーしたパケット中のグループ名を、他の端末2から送信されたパケットを用いて認識したグループ名に書き換えることにより、パケットP2とP3を生成する。パケットP2にはグループ名=FACTORYとホスト名=APPARATUSが含まれており、パケットP3にはグループ名=KOUJOUとホスト名=APPARATUSが含まれている。検知装置20は、パケットP1をブロードキャストするので、パケットP1はマスタブラウザ4aに到達する(矢印A17)。すると、マスタブラウザ4aは、ブラウズリスト6aにAPPARATUSというホスト名を追加する。
さらに、検知装置20は、パケットP2をブロードキャストするので、パケットP2はマスタブラウザ4bに到達する(矢印A18)。マスタブラウザ4bは、ブラウズリスト6bにAPPARATUSというホスト名を追加する。同様に、検知装置20は、パケットP3をブロードキャストするので、パケットP3を受信したマスタブラウザ4cは、ブラウズリスト6cにAPPARATUSというホスト名を追加する(矢印A19)。
このように、検知装置20は、グループ名と検知装置20が検知処理に使用するホスト名の組み合わせを複数用いて、ネットワーク中で使用されるブラウズリスト6a〜6cに検知装置20に対応する複数の登録を生成する。このため、マルウェア7に感染した端末2がネットワーク中で使用されているブラウズリスト6a〜6cに記録されている全てのホストにアクセスを行うと、マルウェア7に感染した端末2は検知装置20に複数回アクセスする。従って、検知装置20は、複数回にわたってアクセスが発生したときにマルウェア7を検知したと判定しても、マルウェア7への感染の発生を見落とさずに済む。さらに、ユーザが誤って画面上のGUIを操作したことによる検知装置20への1度のアクセスに基づいて、検知装置20が誤検知を行うことを避けることができる。このため、マルウェアの検知精度を向上できる。
なお、図2の例は一例である。例えば、検知装置20がホスト名とダミー名を用いる場合、検知装置20は、1つのブラウズリスト6に検知装置20に対応する複数の登録を生成することもできる。この場合、ネットワーク中に1つのグループしか含まれていなくても、図2の場合と同様に、検知装置20は、ユーザの誤操作による誤検知を避けつつ、マルウェア7への感染の発生を検知することができる。
<装置構成>
図3は、検知装置20の構成の例を説明する図である。検知装置20は、通信部21、制御部30、記憶部40を備える。以下の説明では、ネットワーク中のグループがドメインである場合を例として説明するが、ネットワーク中のグループはワークグループであってもよい。
記憶部40は、設定値情報41、ドメインテーブル42、タイマテーブル43、および、名前テーブル44を備える。設定値情報41は、検知装置20の処理に使用されるタイマの初期値やマルウェア7の検知に使用するアクセス回数などの設定値を含む。ドメインテーブル42は、検知装置20が参加するネットワーク中に存在するドメインを識別するドメイン名を記録する。タイマテーブル43は、タイマの処理に使用され、タイマの満了までの残り時間を保持する。名前テーブル44は、検知装置20が使用するホスト名やダミー名を記録する。
通信部21は、送信部22と受信部23を備える。送信部22は、端末2やマスタブラウザ4などの他の装置にパケットを送信する。受信部23は、端末2やマスタブラウザ4などの他の装置からパケットを受信する。
制御部30は、通知生成部31、更新部32、名前解決処理部33、および、検知処理部34を備える。通知生成部31は、ホスト名またはダミー名とグループ名を含むパケットを生成する。更新部32は、他の端末2やマスタブラウザ4から受信したパケット中に含まれているドメイン名を取得して、ドメインテーブル42を更新する。名前解決処理部33は、検知装置20が使用するホスト名やダミー名に対する名前解決要求パケットを受信部23が受信した場合に、検知装置20にアクセスさせるための名前解決処理を行う。名前解決処理部33は、適宜、名前テーブル44を用いて、問い合わせの対象となったホスト名と検知装置20が使用するIP(Internet Protocol)アドレスを含む名前解決応答パケットを生成する。検知処理部34は、同じ端末2からのアクセスが複数回にわたって発生した場合に、マルウェア7への感染の発生を検知する。
図4は、検知装置20のハードウェア構成の例を説明する図である。検知装置20は、プロセッサ101、メモリ102、バス103、ネットワーク接続装置104を有する。プロセッサ101は、任意の処理回路であり、例えば、CPU(Central Processing Unit)とすることができる。プロセッサ101は、メモリ102をワーキングメモリとして使用して、プログラムを実行することにより、様々な処理を実行する。メモリ102には、RAM(Random Access Memory)が含まれ、さらに、ROM(Read Only Memory)等の不揮発性のメモリも含まれる。メモリ102は、プログラムやプロセッサ101での処理に使用されるデータを格納する。ネットワーク接続装置104は、ネットワークを介した他の装置との通信に使用される。バス103は、プロセッサ101、メモリ102、ネットワーク接続装置104を、互いにデータの入出力が可能になるように接続する。
検知装置20において、制御部30はプロセッサ101によって実現される。通信部21は、ネットワーク接続装置104によって実現される。さらに、記憶部40は、メモリ102により実現される。検知装置20は、コンピュータ、ゲートウェイ装置、ルータ、L3スイッチなどとして実現され得る。
<第1の実施形態>
以下、第1の実施形態を、ドメインの検出と通知パケットの送信処理、マルウェア7への感染の検知、ドメインが削除された場合の処理に分けて説明する。また、以下の説明では、ネットワークがWORKGROUP、FACTORY、KOUJOUの3つのドメインに分割されている場合を例として説明するが、ネットワークの分割数は、実装に応じて任意に変更され得る。また、ドメインの代わりに複数のワークグループがネットワーク中に形成されていても良い。
(1)ドメインの検出と通知パケットの送信処理
検知装置20の受信部23は、ネットワーク中の端末2やマスタブラウザ4から送信されたパケットを受信し、受信パケット中に含まれているドメイン名を用いて、ネットワーク中に存在するドメインを検出する。
図5は、検知装置20がドメインの検出の際に使用可能なパケットの例を説明する図である。パケットP11は、IPヘッダ、ドメイン名、ホスト名を含むので、検知装置20は、パケットP11中のドメイン名を、ドメインの検出に使用できる。パケットP11は、端末2が参加しているドメインを通知するために端末2から送信される通知パケットの例である。通知パケットとして、例えば、Host Announcementパケットが使用され得る。通知パケットは、送信元の端末2からブロードキャストされるので、検知装置20は、通知パケットを受信できる。
パケットP12とP13は、各ドメインのマスタブラウザ4からブロードキャストされるパケットの例である。パケットP12は、Local Master Announcementパケットの例であり、IPヘッダ、ドメイン名、マスタブラウザ4のホスト名を含む。このため、Local Master Announcementパケットを受信した検知装置20は、パケットの送信元のマスタブラウザ4が参加しているドメインのドメイン名を取得できる。
パケットP13は、Domain/Workgroup Announcementパケットの例であり、IPヘッダとドメイン名を含む。このため、検知装置20は、Domain/Workgroup Announcementパケットを用いて、送信元のマスタブラウザ4が参加しているドメインのドメイン名を取得できる。
パケットP11〜P13のいずれも、所定の間隔ごとに送信元の装置からブロードキャストされる。なお、図5はドメインの検出に使用されるパケットの一例であり、検知装置20は他のパケットをドメインの検出に使用しても良い。
図6は、ドメインの検出処理の例を説明する図である。図6の例でも、端末2a、2b、マスタブラウザ4aは、WORKGROUPというドメインに参加しているものとする。また、端末2c、2d、マスタブラウザ4bは、FACTORYというドメインに参加し、端末2e、2f、マスタブラウザ4cは、KOUJOUというドメインに参加しているものとする。以下の説明では、検知装置20はネットワーク中のドメインを認識していないものとする。
端末2aは、ドメイン名=WORKGROUP、ホスト名=HOST−Aを含む通知パケットをブロードキャストする(矢印A31)。検知装置20の受信部23は、端末2aから送信された通知パケットを受信し、更新部32に出力する。更新部32は、通知パケット中のドメイン名を抽出すると、得られたドメイン名がドメインテーブル42に記録されているかを判定する。この段階では、ドメイン名がドメインテーブル42に登録されていないので、更新部32は、ドメイン名=WORKGROUPをドメインテーブル42に追加する。
端末2bは、ドメイン名=WORKGROUP、ホスト名=HOST−Bを含む通知パケットをブロードキャストする(矢印A32)。検知装置20の更新部32は、受信部23を介して通知パケットを取得すると、ドメイン名を抽出する。ここでは、更新部32はドメイン名=WORKGROUPを抽出するが、ドメイン名=WORKGROUPは既にドメインテーブル42に登録されている。そこで、更新部32は、ドメインテーブル42を更新せずに処理を終了する。
端末2cは、ドメイン名=FACTORY、ホスト名=HOST−Cを含む通知パケットをブロードキャストする(矢印A33)。検知装置20の更新部32は、通知パケットを取得するとドメイン名を抽出する。ここでは、更新部32はドメイン名=FACTORYを抽出する。ドメイン名=FACTORYはドメインテーブル42に記録されていないので、更新部32は、ドメインテーブル42を更新する。このため、ドメインテーブル42には、WORKGROUPとFACTORYの2つのドメイン名が登録される。
端末2dは、ドメイン名=FACTORY、ホスト名=HOST−Dを含む通知パケットをブロードキャストする(矢印A34)。検知装置20の更新部32は、通知パケットからドメイン名=FACTORYを抽出する。このドメイン名は既にドメインテーブル42に登録されているので、更新部32は処理を終了する。
端末2eは、ドメイン名=KOUJOU、ホスト名=HOST−Eを含む通知パケットをブロードキャストする(矢印A35)。検知装置20の更新部32は、通知パケットを取得するとドメイン名=KOUJOUを抽出する。このドメイン名はドメインテーブル42に記録されていないので、更新部32は、ドメインテーブル42を更新する。このため、図6に示すドメインテーブル42が得られる。
端末2fは、ドメイン名=KOUJOU、ホスト名=HOST−Fを含む通知パケットをブロードキャストする(矢印A36)。検知装置20の更新部32は、通知パケットからドメイン名=KOUJOUを抽出する。このドメイン名は既にドメインテーブル42に登録されているので、更新部32は処理を終了する。
図7は、通知パケットの送信の例を説明する図である。更新部32が所定の閾値Th以上の数のドメインを検出すると、通知生成部31は通知パケットを生成する。図7の例では、閾値Thは2であるとする。また、図7では、図6を参照しながら説明したように矢印A31〜A36の処理が終わっているため、検知装置20は図6に示すドメインテーブル42を保持しているとする。
通知生成部31は、検知装置20が属するドメインのマスタブラウザ4に検知装置20のホスト名を通知するための通知パケットP21を生成する。通知パケットP21には、ドメイン名=WORKGROUPとホスト名=APPARATUSが含まれる。
通知生成部31は、送信部22を介して、通知パケットP21をブロードキャストする。このため、通知パケットP21はマスタブラウザ4aに到達する(矢印A41)。マスタブラウザ4aは、通知パケットP21を受信すると、通知パケットP21に含まれているドメイン名とマスタブラウザ4aが属するドメインのドメイン名を比較する。両者が一致するので、マスタブラウザ4aは、通知パケットP21に含まれているホスト名(APPARATUS)をブラウズリスト6aに追加する。一方、マスタブラウザ4bは、通知パケットP21に含まれているドメイン名と自装置が参加しているドメインのドメイン名が一致しないので、ブラウズリスト6bを更新しない。同様に、マスタブラウザ4cも通知パケットP21を受信してもブラウズリスト6cを更新しない。
通知生成部31は、ドメインテーブル42にドメイン名が含まれているドメインのうち、検知装置20自身が属するドメイン以外のドメインの数分だけ、生成した通知パケットP21をコピーする。次に、通知生成部31は、コピーした通知パケット中のドメイン名を、ドメインテーブル42中のドメイン名を用いて書き換える。図6および図7の例では、ドメインテーブル42に、WORKGROUP、FACTORY、および、KOUJOUの3つのドメイン名が含まれており、検知装置20はWORKGROUPに属している。このため、通知生成部31は、通知パケットP21を2つコピーし、一方の通知パケットのドメイン名をFACTORYに書き換えることにより、ドメイン名=FACTORYとホスト名=APPARATUSを含む通知パケットP22を生成する。さらに、通知生成部31は、コピーした通知パケットP21のドメイン名をKOUJOUに書き換えることにより、ドメイン名=KOUJOUとホスト名=APPARATUSを含む通知パケットP23を生成する。
通知生成部31は、送信部22を介して、通知パケットP22をブロードキャストする。このため、通知パケットP22はマスタブラウザ4bに到達する(矢印A42)。マスタブラウザ4bは、通知パケットP22に含まれているドメイン名(FACTORY)とマスタブラウザ4bが属するドメインのドメイン名を比較する。両者が一致するので、マスタブラウザ4bは、通知パケットP22に含まれているホスト名(APPARATUS)をブラウズリスト6bに追加する。一方、マスタブラウザ4aおよび4cは、通知パケットP22に含まれているドメイン名と自装置が参加しているドメインのドメイン名が一致しないので、ブラウズリスト6を更新しない。
通知生成部31は、通知パケットP23もブロードキャストするので、通知パケットP23はマスタブラウザ4cに到達する(矢印A43)。マスタブラウザ4cは、通知パケットP23に含まれているドメイン名(KOUJOU)とマスタブラウザ4cが属するドメインのドメイン名を比較する。両者が一致するので、マスタブラウザ4cは、通知パケットP23に含まれているホスト名(APPARATUS)をブラウズリスト6cに追加する。一方、マスタブラウザ4aおよび4bは、通知パケットP23に含まれているドメイン名と自装置が参加しているドメインのドメイン名が一致しないので、ブラウズリスト6を更新しない。
このように、図6と図7を参照しながら説明した処理により、検知装置20は、自装置のホスト名を、ネットワーク中の全てのドメインのブラウズリスト6に登録することができる。検知装置20は、自装置のホスト名をネットワーク中の全てのドメインのブラウズリスト6に登録した後も、定期的に通知パケットを送信することにより、各ドメインのブラウズリスト6での登録を維持する。
図8は、新たなドメインを検出した際の処理の例を説明するフローチャートである。更新部32は、ネットワークを監視する(ステップS1)。更新部32は、受信部23がネットワークからドメイン情報を含むパケットを受信したかを判定する(ステップS2)。ドメイン情報を含むパケットには、通知パケット、Local Master Announcementパケット、Domain/Workgroup Announcementパケットなどが含まれる。受信部23がネットワークからドメイン情報を含むパケットを受信していない場合、ステップS1に戻る(ステップS2でNo)。
一方、受信部23がネットワークからドメイン情報を含むパケットを受信すると、更新部32は、受信パケットからドメイン情報を抽出する(ステップS2でYes)。ここで、ドメイン情報には、ドメイン名が含まれている。更新部32は、抽出したドメイン名がドメインテーブル42に記録されているかを判定する(ステップS3)。抽出したドメイン名がドメインテーブル42に記録されていない場合、更新部32はドメイン名をドメインテーブル42に記録する(ステップS3でYes、ステップS4)。通知生成部31は、検知装置20自身が検知装置20のホスト名をマスタブラウザ4に通知する際に使用する通知パケットをコピーして、通知パケット中のドメイン名を受信パケットから抽出したドメイン名に書き換えて送信する(ステップS5)。
更新部32は、受信パケットから抽出したドメイン名で識別されるドメインが存続しているかを判定するためのタイマ値t1を生成する(ステップS6)。例えば、更新部32は、受信パケットから抽出したドメイン名に対応するタイマ値を格納するためのエントリを、タイマテーブル43に生成する。タイマテーブル43については図9を参照しながら後述する。その後、更新部32は、タイマ値t1を初期化し、タイマをスタートさせる(ステップS7)。ドメインが存続しているかを判定するためのタイマ値t1の初期値は設定値情報41に含まれている。例えば、タイマ値t1は、通知パケット、Local Master Announcementパケット、Domain/Workgroup Announcementパケットなどの送信周期に基づいて設定され得る。例えば、通知パケットなどは12分間隔などの所定の周期で送信される。このため、通知パケットの3回の送信周期にわたって1つもドメイン名を含むパケットを受信しない場合に、そのドメイン名で識別されるドメインが存在しないと判定する場合、t1の初期値は36分である。タイマを用いた処理については後で詳しく説明する。
ステップS3において抽出したドメイン名がドメインテーブル42に記録されていると判定した場合、更新部32は、ステップS7の処理を行う(ステップS3でYes、ステップS7)。ステップS7の処理後、ステップS1以降の処理が繰り返される。
図9は、タイマテーブル43の例と通知パケットの送信処理の例を説明する図である。タイマテーブル43は、ドメイン名とタイマの種類の組み合わせごとにタイマ値を保持する。例えば、ドメイン名=WORKGROUPについて、タイマt1とタイマt2が含まれる。タイマt1は、そのタイマが対応付けられたドメインが存続しているかの判定に使用される。タイマt2は、そのタイマが対応付けられたドメインへの通知パケットの送信周期の計測に用いられる。タイマ値は、各タイマが満了するまでの残り時間を示す。
図9の例では、ドメイン名=WORKGROUPのタイマt1のタイマ値は、600秒である。従って、600秒以内にドメイン名=WORKGROUPを含むパケットを受信部23が受信すると、図8のステップS7の処理によりドメイン名=WORKGROUPのタイマt1のタイマ値が初期化される。すなわち、ドメイン名=WORKGROUPで識別されるドメインが存続していると判定される。一方、図9の状態から600秒以内にドメイン名=WORKGROUPを含むパケットを受信部23が受信しないと、検知装置20は、ドメイン名=WORKGROUPのドメインは削除されたと判定する。
図9の例では、ドメイン名=WORKGROUPのタイマt2のタイマ値は、0秒である。従って、通知生成部31は、ドメイン名=WORKGROUPで識別されるドメインに対して通知パケットを送信する周期が満了したと判定して、ドメイン名=WORKGROUPを含む通知パケットを再度ブロードキャストする。
図9は、通知パケットの送信処理の例を説明するフローチャートも含む。図9のフローチャートを参照しながら、検知装置20が各ドメインのブラウズリスト6での自装置のホスト名の登録を維持するための通知パケットの送信処理の例を説明する。なお、図9は、1つのドメインに対して行われる処理の例を示しており、図9の処理はドメインの数と同じ数だけ並行して行われる。
通知生成部31は、処理対象のドメインのドメイン名と検知装置20が使用するホスト名を含む通知パケットを、送信部22を介して送信する(ステップS11)。次に、通知生成部31は、処理対象のドメインについてのタイマt2を初期化する(ステップS12)。タイマt2の初期化の際に、通知生成部31は、設定値情報41を参照することができる。その後、通知生成部31は、処理対象のドメインについてのタイマt1が満了しているかを判定する(ステップS13)。処理対象のドメインについてのタイマt1が満了していない場合、通知生成部31は、処理対象のドメインについてのタイマt2が満了しているかを判定する(ステップS13でNo、ステップS14)。処理対象のドメインについてのタイマt2が満了していない場合、通知生成部31はステップS13以降の処理を繰り返す(ステップS14でNo)。一方、処理対象のドメインについてのタイマt2が満了している場合、通知生成部31はステップS11以降の処理を繰り返す(ステップS14でYes)。
処理対象のドメインについてのタイマt1が満了していると判定した場合、通知生成部31は、ドメインテーブル42から処理対象のドメインのドメイン名を削除する(ステップS13でYes)。さらに、通知生成部31は、処理対象のドメインに対応するタイマt1をタイマテーブル43から削除する(ステップS15)。
(2)マルウェア7への感染の検知
図10は、マルウェアの検知例を説明する図である。以下、図10を参照しながら、図6と図7を参照しながら説明した処理が行われた後で、FACTORYというドメイン中の端末2dがマルウェア7に感染した場合に行われる処理を説明する。なお、図10では、各ドメインに含まれている端末2を分かりやすくするために、各ドメイン中の端末2とそのドメイン中のマスタブラウザ4の間を点線で結んでいる。
マルウェア7に感染した端末2dは、ネットワーク中でサーバサービスを提供している装置の情報を、端末2dが参加しているドメインのマスタブラウザ4を介して取得する。端末2dは、FACTORYというドメインに参加しているので、マスタブラウザ4bに対して、マスタブラウザ4bが管理するブラウズリスト6bを要求する。マスタブラウザ4bは端末2dにブラウズリスト6bを提供する。ブラウズリスト6bには、HOST−C、HOST−D、APPARATUSの3つのホスト名が含まれている。なお、ブラウズリスト6b中のAPPARATUSは、検知装置20がパケットP22を用いて登録したホスト名である。
端末2dは、他のドメイン中の装置の情報も取得するために、マスタブラウザ4bに対して、ドメイン名の一覧を要求するための要求パケットを送信する。マスタブラウザ4bは、端末2dからの要求に応じて、ドメイン名の一覧を提供する。このため、端末2dは、ネットワーク中に、WORKGROUP、FACTORY、および、KOUJOUの3つのドメインが含まれることを認識する。
次に、端末2dは、端末2dが参加しているドメイン以外のドメインの各々について、マスタブラウザ4の問い合わせをブロードキャストする。その結果、端末2dは、WORKGROUPというドメインにマスタブラウザ4aが存在することと、KOUJOUというドメインにマスタブラウザ4cが存在することを認識できる。端末2dは、マスタブラウザ4aに対して、WORKGROUPに含まれているホストの一覧を要求して、ブラウズリスト6aを取得する。ブラウズリスト6aには、HOST−A、HOST−B、APPARATUSの3つのホスト名が含まれている。ブラウズリスト6a中のAPPARATUSは、検知装置20がパケットP21を用いて登録したホスト名である。
さらに、端末2dは、マスタブラウザ4cに対して、KOUJOUに含まれているホストの一覧を要求する。すると、マスタブラウザ4cは、ブラウズリスト6cを端末2dに提供する。ブラウズリスト6cには、HOST−E、HOST−F、APPARATUSの3つのホスト名が含まれている。ブラウズリスト6c中のAPPARATUSは、検知装置20がパケットP23を用いて登録したホスト名である。
以上の処理により、端末2dは、ブラウズリスト6a〜6cを取得し、ブラウズリスト6a〜6cに記録されているホスト名の装置を、マルウェア7を感染させるためのアクセスの対象とする。ここで、ブラウズリスト6a〜6cの各々に検知装置20のホスト名が含まれているので、ブラウズリスト6a〜6c中に検知装置20のホスト名は3回記載されていることになる。次に、端末2dは、ブラウズリスト6a〜6cに記録されているホスト名の装置にアクセスするために、名前解決を行う。
図11は、名前解決に使用されるパケットの例を説明する図である。パケットP31は、名前解決要求パケットの例である。名前解決要求パケットは、IPヘッダ、および、解決しようとする対象の名前(ホスト名)を含む。例えば、端末2dがブラウズリスト6a中のホスト名=APPARATUSの装置にアクセスしようとしたとする。この場合、端末2dは、解決対象の名前としてAPPARATUSを指定した名前解決要求パケットを生成する。このとき、名前解決要求パケットのIPヘッダ中の宛先IPアドレスには、ブロードキャストアドレスが指定される。
端末2dが解決対象の名前としてAPPARATUSを指定した名前解決要求パケットをブロードキャストすると、検知装置20の受信部23は名前解決要求パケットを受信する。名前解決処理部33は、名前解決要求パケット中の解決対象の名前が名前テーブル44に含まれているかを判定する。名前テーブル44は、検知装置20が使用するホスト名を記録しているので、名前テーブル44は、ホスト名=APPARATUSを含む。すると、名前解決処理部33は、検知装置20に割り当てられたIPアドレスを通知するための名前解決応答パケットを生成する。
パケットP32は、名前解決応答パケットの例である。名前解決応答パケットは、IPヘッダ、解決対象のホスト名、および、IPアドレスを含む。ここで、名前解決応答パケット中で解決対象のホスト名と対応付けられているIPアドレスは、解決対象のホスト名を使用している装置に割り当てられたIPアドレスである。このため、名前解決処理部33は、以下の情報を含む名前解決応答パケットを生成する。
解決対象のホスト名:APPARATUS
IPアドレス :検知装置20のIPアドレス
名前解決処理部33は、送信部22を介して、生成した名前解決応答パケットを名前解決要求パケットの送信元である端末2dに送信する。
端末2dは、名前解決応答パケットで通知されたIPアドレスにアクセスするので、検知装置20にアクセスすることができる(図10の矢印A51)。その後も、端末2dは、同様の処理により、ブラウズリスト6aに含まれている端末2a、端末2bに対しても名前解決とマルウェア7を感染させるためのアクセスを行う。なお、端末2も検知装置20と同様の処理により名前解決処理を行うものとする。
ブラウズリスト6aに記録されたホストの全てに対してのアクセスが終わると、端末2dは、ブラウズリスト6bやブラウズリスト6cに記録されたホストに対しても、名前解決やアクセスを行う。ブラウズリスト6bには、検知装置20のホスト名であるAPPARATUSが含まれているので、ブラウズリスト6b中のホストに対するアクセスの際に、端末2dは、検知装置20にアクセスする(矢印A52)。さらに、ブラウズリスト6cにも検知装置20のホスト名であるAPPARATUSが含まれているので、ブラウズリスト6c中のホストに対するアクセスの際に、端末2dは、検知装置20にアクセスする(矢印A53)。
検知装置20の検知処理部34は、検知装置20へのアクセスが行われると、アクセス元の装置のIPアドレスに対応付けてアクセス回数をカウントする。矢印A51〜A53の3回のアクセスはいずれも端末2dから行われているので、検知処理部34は、端末2dのIPアドレスからのアクセスが3回行われたと判定する。検知処理部34は、アクセスの回数をマルウェア7の検知の際に使用する検知閾値Thdと比較する。検知閾値Thdは、固定値であっても良く、また、ネットワーク中のドメインの数やホストの数に応じて設定されても良い。検知閾値Thdは、設定値情報41として設定されていてもよく、また、通知生成部31がネットワーク中のホスト数とドメイン数の少なくとも1つに基づいて設定しても良い。
図10の例では、検知閾値Thdは2回であるとする。この場合、端末2dからのアクセス回数は検知閾値Thdを超えているので、検知処理部34は、端末2dがマルウェア7に感染していると判定する。検知処理部34は、端末2dがマルウェア7に感染していることを表わす警告を生成し、オペレータが使用する装置に警告メッセージを送信する。オペレータが使用する装置のアドレス等の情報は、予め、記憶部40に記憶されているものとする。オペレータが使用する装置で警告メッセージの表示等が行われると、オペレータは、端末2dでのマルウェア7の感染の発生を認識できる。
このように、検知装置20に対応するホスト名が複数のブラウズリスト6に1つずつ記録されるので、マルウェア7に感染した端末2から検知装置20に対するアクセスは複数回行われる。従って、検知処理部34は、同じ装置からのアクセス回数が検知閾値以上である場合、マルウェア7に感染した端末2からのアクセスであると判定できる。その結果、ユーザの操作ミスによる検知装置20へのアクセスをマルウェア7に感染した装置からのアクセスであると誤検知することなく、マルウェア7に感染した端末2からのアクセスを特定することができる。このため、検知装置20によると、誤検知を防止しつつ、マルウェア7に感染した装置からのアクセスの発生やマルウェア7の2次感染を検知できる。
図12は、名前解決処理の例を説明するフローチャートである。名前解決処理部33は、ネットワークを監視し、受信部23がネットワークから名前解決要求パケットを受信したかを判定する(ステップS21、S22)。受信部23が名前解決要求パケットを受信していない場合、名前解決処理部33はステップS21以降の処理を繰り返す(ステップS22でNo)。
一方、受信部23が名前解決要求パケットを受信した場合、名前解決処理部33は、名前解決要求パケットで解決要求されている名前(ホスト名)が名前テーブル44にあるかを判定する(ステップS22でYes、ステップS23)。名前解決要求パケットで解決要求されている名前が名前テーブル44にない場合、検知装置20以外の装置へのアクセスのための名前解決が行われているので、名前解決処理部33はステップS21以降の処理を繰り返す(ステップS23でNo)。一方、名前解決が要求されている名前が名前テーブル44にある場合、名前解決処理部33は検知装置20自身に割り当てられているIPアドレスを含む名前解決応答パケットを生成し、送信部22経由で送信する(ステップS23でYes、ステップS24)。ステップS24の処理後、名前解決処理部33はステップS21以降の処理を繰り返す。
図13は、マルウェアを検知する際の処理の例を説明するフローチャートである。検知処理部34は、ネットワークを監視し、検知装置20自身に対するユニキャストアクセスが発生したかを判定する(ステップS31、S32)。検知装置20自身に対するユニキャストアクセスが発生していない場合、検知処理部34はステップS31以降の処理を繰り返す(ステップS32でNo)。
一方、検知装置20自身に対するユニキャストアクセスが発生した場合、検知処理部34は、アクセス元に対応するカウンタ値cntを1つインクリメントする(ステップS32でYes、ステップS33)。ここで、アクセス元の識別の際に、検知処理部34はアクセス元のIPアドレスを用いても良い。検知処理部34は、カウンタ値cntを検知閾値Thdと比較する(ステップS34)。カウンタ値cntが検知閾値Thd未満の場合、検知処理部34はマルウェア7が感染した端末2からのアクセスとは判定せずに、ステップS31に戻る(ステップS34でNo)。
カウンタ値cntが検知閾値Thd以上の場合、検知処理部34はアクセス元の端末2がマルウェア7に感染したことを検知して、アラートを上げる(ステップS34でYes、ステップS35)。アラートは、適宜、オペレータが使用する装置などに送信される。検知処理部34は、アラートを上げたあと、アラートを発生させるきっかけとなったカウンタ値cntを0に初期化して、ステップS31以降の処理を繰り返す(ステップS36)。
(3)ドメインが削除された場合の処理
図14は、ドメインが削除された場合の例を説明する図である。図7を参照しながら説明した状態の後で、ドメイン名=KOUJOUで識別されるドメインが削除されたとする。ドメインが削除された直後は、更新部32はドメインの削除を認識していない。このため、ドメインの削除時点では、通知生成部31は、WORKGROUP、FACTORY、および、KOUJOUの各々に対して、検知装置20のホスト名を通知する通知パケットを所定の間隔(タイマt2の設定時間ごと)で送信している。
端末2eと端末2fがネットワークから削除されているので、ドメイン名=KOUJOUを含む通知パケットは送信されない。さらに、マスタブラウザ4cもネットワークに参加していないので、ドメイン名=KOUJOUを含むLocal Master Announcementパケット、Domain/Workgroup Announcementパケットなども送信されない。
このため、検知装置20は、ネットワーク中で送受信されるパケットを監視しても、ドメイン名=KOUJOUを含むパケットを受信しなくなる。ドメイン名=KOUJOUで識別されるドメインが存続しているかを判定するためのタイマ値t1が満了するまで、検知装置20はドメイン名=KOUJOUを含むパケットを受信しなかったとする。すると、更新部32は、ドメイン名=KOUJOUで識別されるドメインの情報をドメインテーブル42から削除する。この処理は、図9のステップS15を参照しながら説明した処理である。
更新部32は、ドメイン名=KOUJOUで識別されるドメインの情報を削除すると、削除したドメインを通知生成部31に通知する。通知生成部31は、更新部32から通知されたドメインへの通知パケットの送信を停止する。このため、ドメイン名=KOUJOUで識別されるドメインについてのタイマ値t1が満了すると、通知生成部31は、ドメイン名=KOUJOUとホスト名=APPARATUSを含む通知パケット(P23)の送信を終了する。また、通知生成部31は、パケットP23の送信処理に使用するタイマ値t2をタイマテーブル43から削除する。
このように、ドメインが削除されたことを更新部32が検出すると、通知生成部31は削除されたドメインへの通知パケットの送信を停止するため、不要なパケットがネットワーク中で送受信されることを防ぐことができる。
一方、WORKGROUPとFACTORYの各々のドメインでは、図7を参照しながら説明したとおり、通知パケットの送信が継続される。このため、ドメイン名=WORKGROUPのブラウズリスト6aと、ドメイン名=FACTORYのブラウズリスト6bのいずれにおいても検知装置20のホスト名が維持される。従って、図14の状態で端末2a〜2dのいずれかがマルウェア7に感染した場合には、ブラウズリスト6aとブラウズリスト6bを用いて、検知装置20に対して2回のアクセスが行われる。従って、ネットワーク中の一部のドメインが削除された場合であっても、検知閾値以上の回数分だけ検知装置20の登録が行われていれば、検知装置20はマルウェア7の2次感染を検知できる。
さらに、ネットワーク中のドメインの数が検知閾値Thdを下回った場合、更新部32は、ネットワーク中のドメイン数が検知閾値Thdに達するまで通知生成部31、名前解決処理部33、および検知処理部34の処理を待機させても良い。このように変形すると、ドメイン数が検知閾値Thdを下回っていることによりマルウェア7の感染を検知しない状況下で検知装置20から通知パケットが送信されることにより、無駄なトラフィックが発生することを防止できる。
このように、第1の実施形態によると、検知装置20は、複数のドメインの各々に対して検知装置20のホスト名を登録するので、ドメイン名と検知装置20のホスト名の組み合わせの各々に対応した複数の登録をブラウズリスト6に含めることができる。このため、マルウェア7に感染した端末2は、ネットワーク中で使用されている複数のブラウズリスト6の各々に記録されている全てのホスト名にアクセスすると、検知装置20に複数回アクセスする。従って、検知装置20は、同じ装置から複数回にわたってアクセスが発生したときにマルウェア7への感染の発生を検知したと判定しても、マルウェア7を見落とさずに済む。さらに、ユーザが誤って画面上のGUIを操作したことによる検知装置20への1度のアクセスに基づいて、検知装置20が誤検知を行うことを避けることができる。このため、検知装置20は、マルウェア7の検知精度を向上できる。
<第2の実施形態>
マルウェア7が同じホスト名へのアクセスを回避するように変更される可能性もある。そこで、第2の実施形態では、検知装置20はホスト名の他に、マルウェア7の検出のために使用するダミーのホスト名を1つ以上使用することにより、ドメイン毎に異なるホスト名を登録する。なお、第2の実施形態においても、名前解決処理部33での名前解決、検知処理部34での検知処理、更新部32によるドメインの検出処理は第1の実施形態と同様に行われる。
図15は、第2の実施形態で使用される名前テーブル44の例を説明する図である。名前テーブル44は、ドメイン名とホスト名を含む。ドメインの欄には、ドメインテーブル42に記録されているドメイン名の各々が記録される。名前テーブル44では、ドメイン名で識別されるドメインへの登録に使用されるホスト名が、そのドメイン名のエントリに対応付けられている。図15に示す名前テーブル44を保持する検知装置20は、WORKGROUPというドメインでは、APPARATUSというホスト名を使用する。同様に、検知装置20は、FACTORYというドメインではDETECTIONというホスト名を使用し、KOUJOUというドメインではSOUCHIというホスト名を使用する。
図16は、通知パケットの送信の例を説明する図である。図16においても、図6を参照しながら説明したように各端末2から通知パケットが送信されて矢印A31〜A36の処理が終わっているとする。このため、検知装置20が保持するドメインテーブル42には、WORKGROUP、FACTORY、および、KOUJOUの3つのドメイン名が含まれている。また、図16では、各ドメインに含まれている端末2を分かりやすくするために、各ドメイン中の端末2とそのドメイン中のマスタブラウザ4の間を点線で結んでいる。
更新部32が所定の閾値Th以上の数のドメインを検出すると、通知生成部31は検知装置20が属するドメインのマスタブラウザ4aに検知装置20のホスト名を通知するための通知パケットP41を生成する。図16の例では、閾値Thは2であるとする。通知パケットP41には、ドメイン名=WORKGROUPとホスト名=APPARATUSが含まれる。
通知生成部31は、送信部22を介して、通知パケットP41をブロードキャストするので、通知パケットP41はマスタブラウザ4aに到達する(矢印A51)。マスタブラウザ4aは、通知パケットP41を受信すると、通知パケットP41に含まれているドメイン名とマスタブラウザ4aが属するドメインのドメイン名を比較する。両者が一致するので、マスタブラウザ4aは、通知パケットP41に含まれているホスト名(APPARATUS)をブラウズリスト6aに追加する。一方、マスタブラウザ4bおよびマスタブラウザ4cは、通知パケットP41に含まれているドメイン名と自装置が参加しているドメインのドメイン名が一致しないので、ブラウズリスト6を更新しない。
通知生成部31は、ドメインテーブル42にドメイン名が含まれているドメインのうち、検知装置20自身が属するドメイン以外のドメインの数分だけ、生成した通知パケットをコピーする。次に、通知生成部31は、コピーした通知パケット中のドメイン名とホスト名の組み合わせを、名前テーブル44に含まれるドメイン名とホスト名の組み合わせを用いて書き換える。この例では、検知装置20が図15に示す名前テーブル44を保持しているとする。通知生成部31は、通知パケットP41を2つコピーし、一方の通知パケットのドメイン名をFACTORYに変更し、さらに、ホスト名をDETECTIONに変更することにより、通知パケットP42を生成する。さらに、通知生成部31は、コピーした通知パケットP41のドメイン名をKOUJOUに書き換え、ホスト名をSOUCHIに変更することにより、ドメイン名=KOUJOUとホスト名=SOUCHIを含む通知パケットP43を生成する。
通知生成部31は、通知パケットP42をブロードキャストするので、通知パケットP42はマスタブラウザ4bに到達する(矢印A52)。マスタブラウザ4bは、通知パケットP42中のドメイン名(FACTORY)とマスタブラウザ4bが属するドメインのドメイン名が一致するので、通知パケットP42に含まれているホスト名(DETECTION)をブラウズリスト6bに追加する。一方、マスタブラウザ4aおよび4cは、通知パケットP42に含まれているドメイン名と自装置が参加しているドメインのドメイン名が一致しないので、ブラウズリスト6を更新しない。
通知生成部31は、通知パケットP43もブロードキャストするので、通知パケットP43はマスタブラウザ4cに到達する(矢印A53)。マスタブラウザ4cは、通知パケットP23中のドメイン名(KOUJOU)とマスタブラウザ4cが属するドメインのドメイン名が一致するので、通知パケットP43に含まれているホスト名(SOUCHI)をブラウズリスト6cに追加する。一方、マスタブラウザ4aおよび4bは、通知パケットP43中のドメイン名と自装置が参加しているドメインのドメイン名が一致しないので、ブラウズリスト6を更新しない。
このように、検知装置20は、検知装置20が使用するホスト名を、ネットワーク中の全てのドメインのブラウズリスト6に登録することができる。ここで、検知装置20が使用するホスト名には、検知装置20がサーバサービスに使用するホスト名と、マルウェア7への感染の発生を検知するために使用するダミー名の両方が含まれる。検知装置20は、検知装置20が使用するホスト名を、ネットワーク中の全てのドメインのブラウズリスト6に登録した後も、各ドメインに対して定期的に通知パケットを送信することにより、各ドメインのブラウズリスト6での登録を維持する。
次に、図16に示すようなブラウズリスト6a〜6cが生成されている場合での、マルウェア7に感染した装置からのアクセスの検知方法について説明する。図16の場合も、端末2dがマルウェア7に感染したとする。すると、端末2dは、第1の実施形態と同様の処理により、ブラウズリスト6a〜6cを取得する。このため、端末2dは以下のホスト名を取得できる。
HOST−A
HOST−B
APPARATUS
HOST−C
HOST−D
DETECTION
HOST−E
HOST−F
SOUCHI
端末2dは、第1の実施形態と同様に名前解決を行う。さらに、ネットワーク中の端末2は、第1の実施形態と同様に名前解決応答を行うので、端末2dはネットワーク中の各端末2にアクセスできる。
検知装置20中の名前解決処理部33は、受信部23を介して端末2dから送信された名前解決要求パケットを取得すると、名前テーブル44(図15)を参照する。名前解決処理部33は、名前解決が要求されている対象が名前テーブル44に記録されているホスト名もしくはダミー名である場合、検知装置20のIPアドレスを通知する名前解決応答パケットを送信する。従って、端末2dからAPPARATUS、DETECTION、または、SOUCHIのいずれかについての名前解決要求パケットを受信すると、検知装置20は検知装置20のIPアドレスを含む名前解決応答パケットを端末2dに送信する。
端末2dは、名前解決応答パケットで通知されたIPアドレスにアクセスする。このため、端末2dは、ホスト名=APPARATUSを用いた検知装置20へのアクセス、ホスト名=DETECTIONを用いた検知装置20へのアクセス、および、ホスト名=DETECTIONを用いた検知装置20へのアクセスを行うことになる。すなわち、端末2dは、検知装置20に3回のアクセスを行う。検知装置20中の検知処理部34は、第1の実施形態と同様の処理により、端末2dからのアクセスをマルウェア7に感染した装置からのアクセスとして検知できる。
図17は、第2の実施形態において、検知装置20が新たなドメインを検出した際の処理の例を説明するフローチャートである。図17の例では、ダミー名の生成は、ドメインを検出したタイミングで行われる。図17のステップS41〜S44は、図8を参照しながら説明したステップS1〜S4の処理と同様である。
更新部32は、受信パケットを用いて新たに検出したドメインへの通知パケットの送信に使用するダミー名を生成し、ドメイン名と対応付けて名前テーブル44に記録する(ステップS45)。通知生成部31は、新たに検出したドメインに対して、そのドメインに対応付けられたダミー名と、ドメイン名の組み合わせを含む通知パケットを生成し、送信部22を介して送信する(ステップS46)。また、更新部32は、受信パケットから抽出したドメイン名で識別されるドメインが存続しているかを判定するためのタイマ値t1も生成する。その後、更新部32は、タイマ値t1を初期化し、タイマをスタートさせる(ステップS47)。
ステップS43において、受信パケットから抽出したドメイン名がドメインテーブル42に記録されていると判定した場合、更新部32は、ステップS47の処理を行う(ステップS43でYes、ステップS47)。ステップS47の処理後、ステップS41以降の処理が繰り返される。
図17に示す処理の後で、検知装置20が使用するホスト名の登録を維持するための処理は、図9を参照しながら説明した処理と同様である。このため、図16を参照しながら説明したように、マルウェア7に感染した端末2からの検知装置20へのアクセスや、検知装置20での検知処理が行われる。
従って、第2の実施形態により、検知装置20は、同じホスト名の装置にアクセスしないタイプのマルウェア7に感染した端末2からのアクセスを検知することができる。また、第2の実施形態でも、複数回のアクセスを行った装置がマルウェア7に感染していると判定するので、ユーザが誤って検知装置20に対応するGUIを選択したことによる誤検知を防止して、マルウェア7の検知精度を向上することができる。
<第3の実施形態>
マルウェア7によっては、マルウェア7が感染した装置が含まれていないドメインにアクセスしない場合もあり得る。この場合、マルウェア7に感染した端末2は複数のドメインについてのブラウズリスト6を取得しない。このため、ブラウズリスト6ごとに検知装置20に対応する1つのホスト名を登録してもマルウェア7に感染した端末2が検知装置20に対して複数回のアクセスを行わない可能性がある。そこで、第3の実施形態では、検知装置20が1つのドメインに複数の登録を行う場合について説明する。
図18は、第3の実施形態で使用される名前テーブル44の例を説明する図である。名前テーブル44は、ドメインとホスト名を含む。ドメインの欄には、ドメインテーブル42に記録されているドメイン名の各々が記録される。ホスト名は、対応付けられたドメイン名で識別されるドメインへの登録に使用される。ここで、名前テーブル44に含まれているホスト名は、検知装置20に登録されたホスト名であってもよく、また、検知装置20がマルウェア7に感染した端末2からのアクセスを検知するために使用するダミー名であっても良い。
図18に示す名前テーブル44を保持する検知装置20は、WORKGROUPというドメインでは、APPARATUSというホスト名とKENNCHIというホスト名を使用する。同様に、検知装置20は、FACTORYというドメインではDETECTIONというホスト名とLIGHTWEIGHTというホスト名を使用する。さらに、検知装置20は、KOUJOUというドメインではSOUCHIというホスト名とKEIRYOUというホスト名を使用する。
図19は、通知パケットの送信の例を説明する図である。図19においても、ネットワークには、WORKGROUP、FACTORY、および、KOUJOUの3つのドメインが含まれており、図6の矢印A31〜A36を参照しながら説明したように各端末2が通知パケットを送信したとする。なお、図19では、各ドメインに含まれている端末2を分かりやすくするために、各ドメイン中の端末2とそのドメイン中のマスタブラウザ4の間を点線で結んでいる。なお、第3の実施形態では、ネットワーク中のドメインの数が1つ以上であれば閾値Th未満であっても検知装置20からの通知パケットの送信等の処理が行われる。
第3の実施形態においても、更新部32は、第1および第2の実施形態と同様に、通知パケットなどを用いて、ネットワーク中のドメインに割り当てられたドメイン名を取得して、ドメインテーブル42を更新する。このため、検知装置20が保持するドメインテーブル42には、WORKGROUP、FACTORY、および、KOUJOUの3つのドメイン名が含まれている。また、以下の説明では、検知装置20は、図18に示す名前テーブル44を備えているとする。
通知生成部31は、検知装置20が属するドメインのマスタブラウザ4aに検知装置20が使用する複数のホスト名を通知するために、複数の通知パケット(P51、P52)を生成する。このとき、通知生成部31は、名前テーブル44のうちで、ドメイン名=WORKGROUPを含むエントリの情報を用いる。図18に示す名前テーブル44の1番目のエントリを用いて生成された通知パケットP51には、ドメイン名=WORKGROUPとホスト名=APPARATUSが含まれる。一方、名前テーブル44の2番目のエントリを用いて生成された通知パケットP52には、ドメイン名=WORKGROUPとホスト名=KENNCHIが含まれている。
通知生成部31は、送信部22を介して、通知パケットP51とP52をブロードキャストするので、通知パケットP51とP52はマスタブラウザ4aに到達する(矢印A61)。マスタブラウザ4aは、通知パケットP51に含まれているドメイン名とマスタブラウザ4aが属するドメインのドメイン名が一致するので、通知パケットP51に含まれているホスト名(APPARATUS)をブラウズリスト6aに追加する。通知パケットP52にも同様の処理が行われるので、通知パケットP52に含まれているホスト名(KENNCHI)もブラウズリスト6aに追加される。従って、ブラウズリスト6aには、図19に示すように、HOST−A、HOST−B、APPARATUS、および、KENNCHIが含まれる。一方、マスタブラウザ4bおよびマスタブラウザ4cは、通知パケットP51およびP52に含まれているドメイン名と自装置が参加しているドメインのドメイン名が一致しないので、ブラウズリスト6を更新しない。
次に、通知生成部31は、ドメイン名=FACTORYで識別されるドメインのマスタブラウザ4bに検知装置20が使用する複数のホスト名を通知するために、複数の通知パケット(P53、P54)を生成する。このとき、通知生成部31は、名前テーブル44のうちで、ドメイン名=FACTORYを含むエントリの情報を用いる。このため、図18に示す名前テーブル44の3番目のエントリを用いて生成された通知パケットP53には、ドメイン名=FACTORYとホスト名=DETECTIONが含まれる。一方、名前テーブル44の4番目のエントリを用いて生成された通知パケットP54には、ドメイン名=FACTORYとホスト名=LIGHTWEIGHTが含まれている。
通知生成部31は、通知パケットP53とP54をブロードキャストするので、通知パケットP53とP54はマスタブラウザ4bに到達する(矢印A62)。マスタブラウザ4bは、通知パケットP53に含まれているドメイン名とマスタブラウザ4bが属するドメインのドメイン名が一致するので、通知パケットP53に含まれているホスト名(DETECTION)をブラウズリスト6bに追加する。通知パケットP54にも同様の処理が行われるので、通知パケットP54に含まれているホスト名(LIGHTWEIGHT)もブラウズリスト6bに追加される。従って、ブラウズリスト6bには、図19に示すように、HOST−C、HOST−D、DETECTION、および、LIGHTWEIGHTが含まれる。一方、マスタブラウザ4aおよびマスタブラウザ4cは、通知パケットP53およびP54に含まれているドメイン名と自装置が参加しているドメインのドメイン名が一致しないので、ブラウズリスト6を更新しない。
通知生成部31は、ドメイン名=KOUJOUで識別されるドメインのマスタブラウザ4cに検知装置20が使用する複数のホスト名を通知するために、複数の通知パケット(P55、P56)を生成する。このとき、通知生成部31は、名前テーブル44(図18)のうちで、ドメイン名=KOUJOUを含むエントリの情報を用いる。このため、名前テーブル44の5番目のエントリを用いて生成された通知パケットP55には、ドメイン名=KOUJOUとホスト名=SOUCHIが含まれる。一方、名前テーブル44の6番目のエントリを用いて生成された通知パケットP56には、ドメイン名=KOUJOUとホスト名=KEIRYOUが含まれている。
通知生成部31は、通知パケットP55とP56をブロードキャストするので、通知パケットP55とP56はマスタブラウザ4cに到達する(矢印A63)。マスタブラウザ4cは、通知パケットP55に含まれているドメイン名とマスタブラウザ4cが属するドメインのドメイン名が一致するので、通知パケットP55に含まれているホスト名(SOUCHI)をブラウズリスト6cに追加する。通知パケットP56にも同様の処理が行われるので、通知パケットP56に含まれているホスト名(KEIRYOU)もブラウズリスト6cに追加される。従って、ブラウズリスト6cには、HOST−E、HOST−F、SOUCHI、および、KEIRYOUが含まれる。一方、マスタブラウザ4aおよびマスタブラウザ4bは、通知パケットP55およびP56に含まれているドメイン名と自装置が参加しているドメインのドメイン名が一致しないので、ブラウズリスト6を更新しない。
このように、検知装置20は、ネットワーク中の各ドメインのブラウズリスト6に、検知装置20が使用する複数のホスト名を登録することができる。さらに、検知装置20は、検知装置20が使用するホスト名の登録が維持されるように、各ドメインに対して定期的に通知パケットを送信する。
次に、図19に示すようなブラウズリスト6a〜6cが生成されている場合での、マルウェア7に感染した装置からのアクセスの検知方法について説明する。ここでは、端末2dがマルウェア7に感染したとする。また、マルウェア7は、感染した端末2とは異なるドメイン中の装置へのアクセスを行わないタイプのものであるとする。すると、端末2dは、マスタブラウザ4bにアクセスすることにより、ブラウズリスト6bを取得する。ここで、ブラウズリスト6bには以下のホスト名が含まれている。
HOST−C
HOST−D
DETECTION
LIGHTWEIGHT
端末2dは、ホスト名=DETECTIONを使用する装置にアクセスするために名前解決要求パケットを送信する。検知装置20中の名前解決処理部33は、受信部23を介して名前解決要求パケットを取得すると、名前テーブル44(図18)を参照する。名前解決処理部33は、名前解決が要求されているホスト名が名前テーブル44に記録されているので、検知装置20のIPアドレスを含む名前解決応答パケットを端末2dに送信する。すると、端末2dは、名前解決応答パケットで通知されたIPアドレスにアクセスする。
同様に、端末2dは、ホスト名=LIGHTWEIGHTを使用する装置へのアクセスのために名前解決要求パケットを送信する。検知装置20の名前解決処理部33は、端末2dから受信した名前解決要求パケットに含まれているホスト名=LIGHTWEIGHTが名前テーブル44に含まれているので、検知装置20のIPアドレスを含む名前解決応答パケットを端末2dに送信する。すると、端末2dは、名前解決応答パケットで通知されたIPアドレスにアクセスする。
このため、端末2dは、ホスト名=DETECTIONを用いた検知装置20へのアクセスと、ホスト名=LIGHTWEIGHTを用いた検知装置20へのアクセスを行うことになる。すなわち、端末2dは、検知装置20に2回のアクセスを行う。従って、検知装置20中の検知処理部34は、第1の実施形態と同様の処理により、端末2dからのアクセスをマルウェア7に感染した装置からのアクセスとして検知できる。
図20は、第3の実施形態において、検知装置20が新たなドメインを検出した際の処理の例を説明するフローチャートである。図20の例では、ダミー名の生成は、ドメインを検出したタイミングで行われる。図20では、変数nと定数Nを使用する。定数Nは各ドメインに対して生成したダミー名の数である。変数nは通知パケットの送信に使用したダミー名の数である。図20のステップS51〜S54は、図8を参照しながら説明したステップS1〜S4の処理と同様である。
更新部32は、受信パケットを用いて新たに検出したドメインへの通知パケットの送信に使用するダミー名をN個生成し、ドメイン名と対応付けて名前テーブル44に記録する(ステップS55)。なお、ステップS55以降の処理において、検知装置20がサーバサービスのために使用するホスト名もダミー名として使用されても良い。また、更新部32は、受信パケットから抽出したドメイン名で識別されるドメインが存続しているかを判定するためのタイマ値t1も生成する。通知生成部31は変数nを1に設定する(ステップS56)。通知生成部31は、新たに検出したドメインに対して、そのドメインに対応付けられたn番目のダミー名と、ドメイン名の組み合わせを含む通知パケットを生成し、送信部22を介して送信する(ステップS57)。その後、通知生成部31は、変数nを1つインクリメントしてから定数Nと比較する(ステップS58、S59)。変数nが定数N以下の場合、通知生成部31はステップS57以降の処理を繰り返す(ステップS59でNo)。
一方、変数nが定数Nを超えると、更新部32は、タイマ値t1を初期化し、タイマをスタートさせる(ステップS59でYes、ステップS60)。ステップS53において、受信パケットから抽出したドメイン名がドメインテーブル42に記録されていると判定した場合、更新部32は、ステップS60の処理を行う(ステップS53でYes、ステップS60)。ステップS60の処理後、ステップS51以降の処理が繰り返される。
図20に示す処理の後で、検知装置20が使用するホスト名の登録を維持するための処理は、図9を参照しながら説明した処理と同様である。このため、図19を参照しながら説明したように、マルウェア7に感染した端末2からの検知装置20へのアクセスや、検知装置20での検知処理が行われる。
従って、第3の実施形態により、検知装置20は、感染した端末2が含まれているドメイン以外のドメイン中の装置にアクセスしないタイプのマルウェア7の感染が発生しても、マルウェア7の感染が起こっていることを検知できる。また、第3の実施形態でも、複数回のアクセスを行った装置がマルウェア7に感染していると判定するので、ユーザが誤って検知装置20に対応するGUIを選択したことによる誤検知を防止して、マルウェア7の検知精度を向上することができる。
<第4の実施形態>
第1〜第3の実施形態のいずれでも、検知装置20に対する複数回のアクセスが発生したことにより、マルウェア7に感染した端末2が存在することを検知装置20が検知する。しかし、検知装置20は、検知装置20に対応付けられたホスト名に対する名前解決が要求された回数をカウントすることで、マルウェア7に感染した端末2の存在を検知しても良い。なお、第4の実施形態では、検知装置20が使用するホスト名のブラウズリスト6への登録のために行われる処理は、第1〜第3の実施形態のいずれかと同じ処理である。
図21は、名前解決要求を用いてマルウェアへの感染を検知する場合の処理の例を説明するフローチャートである。図21のステップS71〜S73の処理は、図12を参照しながら説明したステップS21〜S23と同様の処理である。
名前解決が要求されている名前が名前テーブル44にある場合、名前解決処理部33は、名前解決要求の要求元に対応付けたカウンタ値cntを生成する(ステップS73でYes)。名前解決処理部33は、名前解決要求の要求元に対応付けたカウンタ値cntをインクリメントする(ステップS74)。
検知処理部34は、カウンタ値cntを検知閾値Thdと比較する(ステップS75)。カウンタ値cntが検知閾値Thd未満の場合、検知処理部34はマルウェア7が感染した端末2からのアクセスとは判定せずに、ステップS71に戻る(ステップS75でNo)。
カウンタ値cntが検知閾値Thd以上の場合、検知処理部34はアクセス元の端末2がマルウェア7に感染したことを検知して、アラートを上げる(ステップS75でYes、ステップS76)。アラートは、適宜、オペレータが使用する装置などに送信される。検知処理部34は、アラートを上げたあと、アラートを発生させるきっかけとなったカウンタ値cntを0に初期化して、ステップS71以降の処理を繰り返す(ステップS77)。
このように、第4の実施形態では、検知装置20が使用するホスト名に対する名前解決が行われた回数を用いて、マルウェア7に感染した端末2があるかを判定する。ここで、検知装置20は、検知装置20が使用するホスト名に対する名前解決の要求元に対して、検知装置20に割り当てられたIPアドレスを通知しない。このため、名前解決応答パケットの送信や検知装置20へのアクセス自体は発生しない。従って、第1〜第3の実施形態に比べて、第4の実施形態では、ネットワーク中で送受信されるパケット数を削減することができる。
なお、第4の実施形態においても、特定の要求元からの名前解決要求の回数が検知閾値Thdに達するまでは、マルウェア7に感染した端末2の存在を検知しない。このため、第4の実施形態においても、ユーザが誤って検知装置20に対応するGUIを選択したことによる誤検知を防止して、マルウェア7の検知精度を向上することができる。
<その他>
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
第2および第3の実施形態では、検知装置20に複数のIPアドレスが割り当てられている場合、検知装置20は、名前解決要求に対する応答で通知するIPアドレスを、ダミー名ごとに異なるアドレスにしても良い。例えば、検知装置20は、ホスト名=APPARATUSに対してIPアドレス=IPaを対応付け、ホスト名=DETECTIONに対してIPアドレス=IPbを対応付けることができる。名前解決処理部33は、ホスト名=APPARATUSに対する名前解決が要求されると、IPaを通知する名前解決応答パケットを送信し、ホスト名=DETECTIONに対する名前解決が要求されると、IPbを通知する名前解決応答パケット送信する。すると、マルウェア7に感染した端末2は、IPaとIPbにアクセスすることで、検知装置20に2回アクセスする。このため、検知処理部34は、マルウェア7に感染した端末2の存在を検知できる。このように変形すると、マルウェア7がアクセス先のIPアドレスを比較することにより、同じIPアドレスにはアクセスしないように変形されたとしても、マルウェア7に感染した端末2から検知装置20に複数回のアクセスが行われる。このため、検知装置20は、ユーザが誤って検知装置20に対応するGUIを選択したことによる誤検知を防止しつつ、マルウェア7に感染した端末2の存在を検知できる。
検知装置20は、ドメインの検出の際に、ドメイン名の一覧を要求するための要求パケットをマスタブラウザ4に送信しても良い。マスタブラウザ4は、要求パケットに応答して、ネットワーク中のドメインの一覧を検知装置20に送信する。このため、検知装置20の更新部32は、マスタブラウザ4から受信した応答パケットを用いて、ネットワーク中のドメインを認識することができる。
以上の説明の際に参照したテーブルやパケットの例は一例に過ぎない。従って、テーブルやパケットに含まれる情報要素は、実装に応じて変更され得る。
いずれの実施形態においても、名前テーブル44は、ネットワーク中のドメインのドメイン名と、各ドメインでの登録に検知装置20が使用するホスト名の組み合わせを記録しているということができる。なお、第1の実施形態のように1種類のホスト名が全てのドメインに使用される場合、名前テーブル44にはホスト名のみが含まれていても良い。この場合、通知生成部31は、ドメインテーブル42中のドメイン名の各々と名前テーブル44中のホスト名の組み合わせを用いて、通知パケットを生成できる。
第2および第3の実施形態でのダミー名を生成するタイミングは、実装に応じて変更され得る。例えば、フローチャートを参照しながら説明したように、各ドメインで使用されるドメインはドメインの検出時に生成されても良い。また、図16や図19を参照しながら説明したように、ドメインに対する情報をまとめて取得した後で、各ドメインに最初に通知パケットを生成するときにダミー名が生成されても良い。
さらに、第3の実施形態において、各ドメインについて生成されるダミー名の数は実装に応じて変更され得る。
以上の説明では、端末2がマルウェア7に感染する場合を例としたが、マスタブラウザ4がマルウェア7に感染した場合においても、同様にマルウェア7の検知が行われる。
以上の説明では、通知フレームの送信周期をタイマテーブル43に記録されたタイマ満了までの残り時間を用いて計測しているが、検知装置20は、タイマをハードウェアとして備えていても良い。この場合、検知装置20は、個々の通知パケットの送信期間についてのタイマ満了をハードウェアのタイマで計測できるので、タイマテーブル43を備えていなくても良い。