(57)【要約】【課題】不正プログラムにより確立されるコネクションを検出できる確率を向上させる。【解決手段】ネットワーク監視装置１０は、情報処理装置２１と情報処理装置２２との間で送信されるパケットを取得する。ネットワーク監視装置１０は、取得したパケットに基づいて、情報処理装置２１から情報処理装置２２に対してファイル送信に用いられるプロトコルのパケット３１が送信され、パケット３１から所定時間以内に、情報処理装置２２から情報処理装置２１に対して確立されるコネクションについてのパケット３２が送信されたかを判定する。ネットワーク監視装置１０は、判定の結果に応じた情報を出力する。【選択図】図１
2014086821.tif 000002
【特許請求の範囲】
【請求項１】
複数の情報処理装置の間でパケットが送信されるネットワークに接続されたネットワーク監視装置が実行する不正コネクション検出方法であって、
第１の情報処理装置と第２の情報処理装置との間で送信されるパケットを取得し、
前記取得したパケットに基づいて、前記第１の情報処理装置から前記第２の情報処理装置に対してファイル送信に用いられるプロトコルの第１のパケットが送信され、前記第１のパケットから所定時間以内に、前記第２の情報処理装置から前記第１の情報処理装置に対して確立されるコネクションについての第２のパケットが送信されたかを判定し、
前記判定の結果に応じた情報を出力する、
不正コネクション検出方法。
【請求項２】
前記第１のパケットとして、前記第１の情報処理装置から前記第２の情報処理装置に対して送信される、前記プロトコルに適合するファイル書き込みコマンドを含むパケットを検出する、請求項１記載の不正コネクション検出方法。
【請求項３】
前記第１のパケットとして、前記第１の情報処理装置から前記第２の情報処理装置に対して送信される実行可能コードを含むパケットを検出する、請求項１又は２記載の不正コネクション検出方法。
【請求項４】
前記第１のパケットと前記第２のパケットとの間に、前記第１の情報処理装置から前記第２の情報処理装置に対して、前記実行可能コードを前記第２の情報処理装置に実行させるための実行指示コマンドを含む第３のパケットが送信されたかを更に判定する、請求項３記載の不正コネクション検出方法。
【請求項５】
前記判定の結果に応じた情報は、前記第１の情報処理装置から前記第２の情報処理装置に対して送信された前記第１のパケットと、前記第２の情報処理装置から前記第１の情報処理装置に対して確立される前記コネクションとを関連付けた情報を含む、請求項１乃至４の何れか一項に記載の不正コネクション検出方法。
【請求項６】
複数の情報処理装置の間でパケットが送信されるネットワークに接続されるネットワーク監視装置であって、
第１の情報処理装置と第２の情報処理装置との間で送信されるパケットを取得する受信部と、
前記取得したパケットに基づいて、前記第１の情報処理装置から前記第２の情報処理装置に対してファイル送信に用いられるプロトコルの第１のパケットが送信され、前記第１のパケットから所定時間以内に、前記第２の情報処理装置から前記第１の情報処理装置に対して確立されるコネクションについての第２のパケットが送信されたかを判定し、前記判定の結果に応じた情報を出力する判定部と、
を有するネットワーク監視装置。
【請求項７】
複数の情報処理装置の間でパケットが送信されるネットワークに接続されるコンピュータに実行させるプログラムであって、前記コンピュータに、
第１の情報処理装置と第２の情報処理装置との間で送信されるパケットを取得し、
前記取得したパケットに基づいて、前記第１の情報処理装置から前記第２の情報処理装置に対してファイル送信に用いられるプロトコルの第１のパケットが送信され、前記第１のパケットから所定時間以内に、前記第２の情報処理装置から前記第１の情報処理装置に対して確立されるコネクションについての第２のパケットが送信されたかを判定し、
前記判定の結果に応じた情報を出力する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不正コネクション検出方法、ネットワーク監視装置及びプログラムに関する。
【背景技術】
【０００２】
現在、情報処理装置を利用した情報管理が普及し、個人情報や機密情報等の重要情報を情報処理装置に格納しておくことが多くなっている。これに伴い、特定の個人や組織を標的にして情報処理装置から重要情報を不正に窃取する標的型攻撃が発生している。標的型攻撃では、いわゆるマルウェアと呼ばれる不正プログラムが使用されることがある。
【０００３】
例えば、標的とする組織に対して電子メールなどを利用して不正プログラムを送り込み、その組織が使用する情報処理装置を不正プログラムに感染させる。不正プログラムに感染した情報処理装置は、その情報処理装置に格納された重要情報を、攻撃者が制御する情報処理装置に送信してしまうことがある。また、不正プログラムに感染した情報処理装置を踏み台として利用して、同じネットワークに属する他の情報処理装置に不正プログラムを送り込み、又は、他の情報処理装置から重要情報を収集することもある。
【０００４】
一方で、このような不正プログラムによる攻撃を検出できるようにする情報セキュリティシステムが研究されている。情報セキュリティシステムには、侵入検知システム（ＩＤＳ：Intrusion Detection System）、侵入防止システム（ＩＰＳ：Intrusion Prevention System）、ファイアウォールなどと呼ばれるものが含まれる。検出方法としては、Internet Protocol（ＩＰ）アドレスやポート番号に基づいて不適切なアクセスのパケットを検出するパケットフィルタリングや、既知の不正プログラムの特徴（シグネチャ）に適合するパケットを検出するパターンマッチング等が挙げられる。
【０００５】
なお、高信頼トラフィックと攻撃トラフィックを予め学習し、学習結果に基づいて以降のパケットストリームの信頼性を分析するヒューリスティック・ファイアウォールが提案されている。また、Transmission Control Protocol（ＴＣＰ）トラフィックを監視し、自己複製機能をもつ不正プログラムであるワームを検出する悪性コード検出装置が提案されている。この悪性コード検出装置は、外部ネットワークから内部ネットワークに入る内向きＴＣＰコネクションと、内向きＴＣＰコネクションの要求を受け付けたホストが一定時間内に要求する外向きＴＣＰコネクションとを検出する。そして、悪性コード検出装置は、内向きＴＣＰコネクションと外向きＴＣＰコネクションとで同じ内容のパケットが送信されたときに、当該パケットにワームが含まれると判定する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第０１／８０４８０号
【特許文献２】特開２００６−１３５９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、ある情報処理装置（例えば、先に不正プログラムに感染したもの）が他の情報処理装置から重要情報を収集するときに、後者（対象装置）から前者（収集側装置）に対して「リバースコネクション」と呼ばれるコネクションを確立することがある。
【０００８】
例えば、収集側装置が対象装置に不正プログラムを送り込み、対象装置に不正プログラムを実行させたとする。このとき、収集側装置からアクセスを受け付けるためのサービスのプロセスを対象装置に長時間立ち上げておくと、常駐プロセスは目立つことから攻撃が発覚するリスクが高くなる。そこで、対象装置で実行される不正プログラムは、アクセスを受け付けるプロセスを立ち上げておく代わりに、対象装置から収集側装置に対してコネクションを確立し、当該コネクションを使用して重要情報を収集側装置に送信することがある。対象装置から収集側装置へのアクセスは、Hypertext Transfer Protocol（ＨＴＴＰ）などの頻繁に利用される正常なプロトコルのアクセスに偽装されることがある。
【０００９】
このような対象装置から収集側装置へのリバースコネクションを利用した重要情報の送信は、それ自体は正常な通信に見えることがあるため、攻撃として検出するのが容易でないという問題がある。このため、不正プログラムに対して圧縮・暗号化等の検出回避策が行われていて、対象装置への不正プログラムの送り込みがもし成功してしまうと、従来、その後の通信から攻撃を判定することが容易でなかった。
【００１０】
１つの側面では、本発明は、不正プログラムにより確立されるコネクションを検出できる確率を向上させる不正コネクション検出方法、ネットワーク監視装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、複数の情報処理装置の間でパケットが送信されるネットワークに接続されたネットワーク監視装置が実行する不正コネクション検出方法が提供される。第１の情報処理装置と第２の情報処理装置との間で送信されるパケットを取得する。取得したパケットに基づいて、第１の情報処理装置から第２の情報処理装置に対してファイル送信に用いられるプロトコルの第１のパケットが送信され、第１のパケットから所定時間以内に、第２の情報処理装置から第１の情報処理装置に対して確立されるコネクションについての第２のパケットが送信されたかを判定する。そして、判定の結果に応じた情報を出力する。
【００１２】
１つの態様では、複数の情報処理装置の間でパケットが送信されるネットワークに接続されるネットワーク監視装置が提供される。ネットワーク監視装置は、受信部と判定部とを有する。受信部は、第１の情報処理装置と第２の情報処理装置との間で送信されるパケットを取得する。判定部は、取得したパケットに基づいて、第１の情報処理装置から第２の情報処理装置に対してファイル送信に用いられるプロトコルの第１のパケットが送信され、第１のパケットから所定時間以内に、第２の情報処理装置から第１の情報処理装置に対して確立されるコネクションについての第２のパケットが送信されたかを判定する。そして、判定の結果に応じた情報を出力する。
【００１３】
１つの態様では、複数の情報処理装置の間でパケットが送信されるネットワークに接続されるコンピュータに実行させるプログラムが提供される。コンピュータは、第１の情報処理装置と第２の情報処理装置との間で送信されるパケットを取得する。取得したパケットに基づいて、第１の情報処理装置から第２の情報処理装置に対してファイル送信に用いられるプロトコルの第１のパケットが送信され、第１のパケットから所定時間以内に、第２の情報処理装置から第１の情報処理装置に対して確立されるコネクションについての第２のパケットが送信されたかを判定する。そして、判定の結果に応じた情報を出力する。
【発明の効果】
【００１４】
１つの側面では、不正プログラムにより確立されるコネクションを検出できる確率が向上する。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態に係る情報処理システムの例を示す図である。
【図２】第２の実施の形態に係る情報処理システムの例を示した図である。
【図３】第２の実施の形態に係るネットワーク監視装置のハードウェアの例を示した図である。
【図４】第２の実施の形態に係るネットワーク監視装置の機能の例を示したブロック図である。
【図５】標的型攻撃の例を示した第１の図である。
【図６】標的型攻撃の例を示した第２の図である。
【図７】パケット構造の例を示した図である。
【図８】３ウェイ・ハンドシェイクについて説明した図である。
【図９】第２の実施の形態に係るリバースコネクションの検出方法（解析レベル１の例）を説明した図である。
【図１０】第２の実施の形態に係るリバースコネクションの検出方法（解析レベル２の例）を説明した図である。
【図１１】第２の実施の形態に係るリバースコネクションの検出方法（解析レベル３の例）を説明した図である。
【図１２】ＳＭＢリクエストテーブルの例を示した図である。
【図１３】リバースコネクションテーブルの例を示した図である。
【図１４】第２の実施の形態に係る監視処理の流れを示した第１の図である。
【図１５】第２の実施の形態に係る監視処理の流れを示した第２の図である。
【図１６】第２の実施の形態に係る監視処理の流れを示した第３の図である。
【発明を実施するための形態】
【００１６】
以下、本実施の形態を、図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態に係る情報処理システムの例を示す図である。
【００１７】
第１の実施の形態の情報処理システムは、ネットワーク監視装置１０と情報処理装置２１、２２を含む複数の情報処理装置とを有する。ネットワーク監視装置１０及び複数の情報処理装置は、ネットワーク３０に接続されている。
【００１８】
情報処理装置２１、２２を含む複数の情報処理装置は、ネットワーク３０を介してパケットを送信する。パケットの送信には、例えば、ネットワーク層のプロトコルとしてＩＰが用いられ、トランスポート層のプロトコルとしてＴＣＰが用いられる。複数の情報処理装置それぞれは、ユーザが操作する端末装置としてのクライアント装置でもよいし、クライアント装置からアクセスされるサーバ装置でもよい。例えば、情報処理装置２１をクライアント装置とし、情報処理装置２２をサーバ装置としてもよい。
【００１９】
複数の情報処理装置は、標的型攻撃に用いられる不正プログラム（マルウェアと呼ばれることがある）に感染する可能性がある。不正プログラムは、例えば、ネットワーク３０の外部にある攻撃者の情報処理装置から、インターネット等の広域ネットワークを介してネットワーク３０に属する何れかの情報処理装置に送り込まれる。
【００２０】
第１の実施の形態では、情報処理装置２１が先に不正プログラムに感染し、情報処理装置２１が情報処理装置２２から重要情報を取得する場合を考える。また、不正プログラムを利用した攻撃方法として、次のような方法を考える。まず、情報処理装置２１は、情報処理装置２２に不正プログラムを送り込み、送り込んだ不正プログラムを情報処理装置２２に実行させる。情報処理装置２１は、不正プログラムを送り込むとき、例えば、情報処理装置２１に記憶されたログイン情報を用いて情報処理装置２２にログインする。その後、情報処理装置２２は、情報処理装置２１へのリバースコネクションを確立し、リバースコネクションを用いて情報処理装置２２の中にある重要情報を情報処理装置２１に送信する。
【００２１】
ネットワーク監視装置１０は、ネットワーク３０を流れるパケットに基づいて、不正プログラムによって確立された不正コネクションが存在するか監視する。ネットワーク監視装置１０は、ルータやファイアウォールなどのパケットを送信する通信装置でもよいし、通信装置からパケットの複製を取得して分析するコンピュータであってもよい。
【００２２】
ネットワーク監視装置１０は、受信部１１及び判定部１２を有する。受信部１１は、複数の情報処理装置の間で送信されるパケット、特に、情報処理装置２１、２２の間で送信されるパケットを取得する。受信部１１は、例えば、ケーブルでネットワーク３０に接続される有線通信インターフェースである。判定部１２は、取得されたパケット（キャプチャされたパケットと言うこともできる）を分析する。判定部１２は、Central Processing Unit（ＣＰＵ）やDigital Signal Processor（ＤＳＰ）などのプロセッサを含んでもよく、プロセッサに実行させるプログラムを記憶するメモリを含んでもよい。複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。また、判定部１２は、Application Specific Integrated Circuit（ＡＳＩＣ）やField-Programmable Gate Array（ＦＰＧＡ）等の特定用途の集積回路を含んでもよい。
【００２３】
上記の判定部１２は、取得されたパケットの中に、次の条件を満たすパケット３１、３２が存在するか判定する。判定部１２は、パケット３１として、情報処理装置２１から情報処理装置２２に対して送信された、ファイル送信に用いられる所定のプロトコルのパケットを検出する。所定のプロトコルは、例えば、アプリケーション層のプロトコルであり、Server Message Block（ＳＭＢ）などのいわゆるファイル共有プロトコルでもよい。各パケットが所定のプロトコルのパケットであるか否かは、例えば、ＴＣＰヘッダの宛先ポート番号やアプリケーション層のヘッダ（例えば、ＳＭＢヘッダ）から判断できる。
【００２４】
また、判定部１２は、パケット３２として、パケット３１が取得されてから所定時間以内に取得された、情報処理装置２２から情報処理装置２１に対して確立されるコネクションについてのパケットを検出する。パケット３２は、例えば、ＴＣＰの３ウェイ・ハンドシェイク（ＳＹＮ、ＳＹＮ−ＡＣＫ、ＡＣＫ）のパケット等、情報処理装置２２から情報処理装置２１へのコネクションを確立するパケットでもよい。パケット３２が情報処理装置２２から情報処理装置２１に送信される場合、パケット３１の送信元がパケット３２の宛先になり、パケット３１の宛先がパケット３２の送信元になる。パケット３１とパケット３２の関係は、例えば、送信元ＩＰアドレスと宛先ＩＰアドレスに基づいて判断できる。
【００２５】
そして、判定部１２は、上記の判定結果に応じた情報を出力する。例えば、判定部１２は、上記の条件を満たすパケット３１、３２が検出されたとき、情報処理装置２２から情報処理装置２１に対して確立されるコネクションが、不正プログラムによるリバースコネクションであると判定する。判定結果に応じた情報は、情報処理装置２１から情報処理装置２２に送信されたパケット３１と、情報処理装置２２から情報処理装置２１に確立されたコネクションとを関連付けた情報を含んでもよい。判定結果に応じた情報は、ネットワーク監視装置１０が備える表示部に表示されてもよいし、ネットワーク３０に接続された管理者用の情報処理装置に送信されてもよい。ネットワーク監視装置１０が備える表示部としては、例えば、ディスプレイや警告ランプ等が挙げられる。
【００２６】
なお、判定部１２は、パケット３１として、所定のプロトコルのパケットであり、且つ、ファイル書き込みコマンドを含むパケットを検出してもよい。コマンドの種類は、例えば、アプリケーション層のヘッダ（例えば、ＳＭＢヘッダ）から判断できる。また、判定部１２は、パケット３１として、所定のプロトコルのパケットであり、且つ、実行可能コードを含むパケットを検出してもよい。各パケットが実行可能コードを含むか否かは、例えば、Portable Executable（ＰＥ）ヘッダなどのファイルヘッダから判断できる。パケット３１の検出条件を増やすと、リバースコネクションの判定精度が向上する。
【００２７】
第１の実施の形態によれば、情報処理装置２２から情報処理装置２１へのコネクションがリバースコネクションであるか否かが、それより前に不正プログラムを含む疑いのある通信が情報処理装置２１から情報処理装置２２に対して行われたかに応じて判定される。これにより、リバースコネクションを検出することが可能となり、不正プログラムにより確立される不正コネクションを検出できる確率が向上する。よって、情報処理装置２１から情報処理装置２２への不正プログラムの送り込みが成功してしまっても、その後に行われる情報処理装置２２から情報処理装置２１への重要情報の送信を検出できる可能性があり、セキュリティが向上する。なお、ネットワーク監視装置１０は、リバースコネクションを検出したとき、自動的にパケット通信を制限する制御を行うようにしてもよい。
【００２８】
［第２の実施の形態］
次に、第２の実施の形態について説明する。
図２は、第２の実施の形態に係る情報処理システムの例を示した図である。
【００２９】
図２に示すように、第２の実施の形態に係る情報処理システム１００は、情報処理装置１０１、１０２と、端末装置１０３と、ネットワーク監視装置１１０とを有する。情報処理装置１０１、１０２、端末装置１０３、及びネットワーク監視装置１１０は、後述するネットワーク９４を介して相互に接続されている。
【００３０】
情報処理装置１０１、１０２は、サーバ装置又はユーザが操作するクライアント装置である。情報処理装置１０１、１０２は、ネットワーク９４を介してパケットを送信する。情報処理装置１０１、１０２によるパケットの送信には、例えば、ネットワーク層のプロトコルとしてＩＰが用いられ、トランスポート層のプロトコルとしてＴＣＰが用いられる。ネットワーク監視装置１１０は、情報処理システム１００の管理者が使用する管理用の装置である。
【００３１】
ネットワーク監視装置１１０は、ネットワーク９４を介して送信されるパケットを監視し、情報処理装置１０１に侵入した不正プログラムによる攻撃を検出する。例えば、ネットワーク監視装置１１０は、情報処理装置１０１に侵入した不正プログラムが、情報処理装置１０２に他の不正プログラムを送り込む処理や、送り込んだ不正プログラムに実行指示を与える処理などを検出する。また、ネットワーク監視装置１１０は、情報処理装置１０２に送り込まれた不正プログラムが、情報処理装置１０１に侵入した不正プログラムに対して窃取した情報を送り込むためのリバースコネクションなどを検出する。
【００３２】
端末装置１０３は、ネットワーク監視装置１１０が不正プログラムによる攻撃を検出した場合に発する警告を受け取る装置である。ネットワーク監視装置１１０から警告を受け取った端末装置１０３は、攻撃の検出を監視者に通知するための警告表示や警告音声の出力などを行う。
【００３３】
なお、図２の例において、ネットワーク監視装置１１０は、情報処理装置１０１、１０２及び端末装置１０３と別体として記載されているが、情報処理装置１０２や端末装置１０３の一部機能として動作するプログラムモジュールであってもよい。但し、以下の説明においては、ネットワーク監視装置１１０が情報処理装置１０１、１０２及び端末装置１０３とは別体であるものとして説明を進める。また、ネットワーク監視装置１１０は、ルータやファイアウォールなどのパケットを送信する通信装置でもよいし、通信装置からパケットの複製を取得して分析するコンピュータであってもよい。
【００３４】
第２の実施の形態に係る技術は、例えば、不正プログラムに感染した情報処理装置１０１が、ネットワーク９４を介して接続された情報処理装置１０２から機密情報などを窃取するような不正な処理を検出できるようにする方法を提供するものである。この方法は、ネットワーク監視装置１１０の機能により実現される。また、ネットワーク監視装置１１０が有する機能は、例えば、図３に示すようなハードウェアを利用して実現することが可能である。
【００３５】
図３は、第２の実施の形態に係るネットワーク監視装置のハードウェアの例を示した図である。
図３に示すように、ネットワーク監視装置１１０は、例えば、ＣＰＵ９０１、ＲＡＭ（Random Access Memory）９０２、ＨＤＤ（Hard Disk Drive）９０３、画像信号処理部９０４、入力信号処理部９０５、ディスクドライブ９０６、及び通信インターフェース９０７を有する。
【００３６】
ＣＰＵ９０１は、プログラムに記述された命令を実行する演算器を含むプロセッサである。ＣＰＵ９０１は、ＨＤＤ９０３に記憶されているプログラムやデータの少なくとも一部をＲＡＭ９０２にロードし、プログラムに記述された命令を実行する。なお、ＣＰＵ９０１は、複数のプロセッサコアを含んでいてもよい。また、ネットワーク監視装置１１０は、複数のＣＰＵ９０１を搭載していてもよい。この場合、ネットワーク監視装置１１０は、処理を並列実行することができる。
【００３７】
ＲＡＭ９０２は、ＣＰＵ９０１が実行するプログラムや、処理に用いられるデータを一時的に記憶するための揮発性メモリである。なお、ネットワーク監視装置１１０は、ＲＡＭ９０２とは異なる種類のメモリを有していてもよい。また、ネットワーク監視装置１１０は、複数のメモリを備えていてもよい。
【００３８】
ＨＤＤ９０３は、Operating System（ＯＳ）、ファームウェア、或いは、アプリケーションソフトウェアなどのプログラムや、処理に用いられるデータなどを記憶する不揮発性記憶装置の一例である。なお、ネットワーク監視装置１１０は、フラッシュメモリやSolid State Drive（ＳＳＤ）など、ＨＤＤ９０３とは異なる種類の記憶装置を有していてもよい。また、ネットワーク監視装置１１０は、複数の記憶装置を有していてもよい。
【００３９】
画像信号処理部９０４は、ＣＰＵ９０１による制御を受け、ネットワーク監視装置１１０に接続された表示装置９１に画像を出力する。表示装置９１は、例えば、Cathode Ray Tube（ＣＲＴ）ディスプレイ、Liquid Crystal Display（ＬＣＤ）、Plasma Display Panel（ＰＤＰ）、Organic Electro-Luminescence Display（ＯＥＬＤ）などの表示デバイスである。
【００４０】
入力信号処理部９０５は、ネットワーク監視装置１１０に接続された入力デバイス９２から入力信号を取得し、ＣＰＵ９０１に通知する。入力デバイス９２としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、トラックボール、リモートコントローラ、ボタンスイッチなどを用いることができる。
【００４１】
ディスクドライブ９０６は、記録媒体９３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体９３としては、例えば、Flexible Disk（ＦＤ）、ＨＤＤなどの磁気ディスク、Compact Disc（ＣＤ）やDigital Versatile Disc（ＤＶＤ）などの光ディスク、Magneto-Optical disk（ＭＯ）などの光磁気ディスクを用いることができる。ディスクドライブ９０６は、例えば、ＣＰＵ９０１による制御を受け、記録媒体９３から読み取ったプログラムやデータをＲＡＭ９０２又はＨＤＤ９０３に格納する。
【００４２】
通信インターフェース９０７は、ネットワーク９４を介して他のコンピュータと通信を行うためのインターフェースである。通信インターフェース９０７は、有線インターフェースであってもよいし、無線インターフェースであってもよい。なお、情報処理装置１０１、１０２及び端末装置１０３が有する機能の一部又は全部は、ネットワーク監視装置１１０と同じハードウェアを用いて実現できる。
【００４３】
図４は、第２の実施の形態に係るネットワーク監視装置の機能の例を示したブロック図である。
図４に示すように、ネットワーク監視装置１１０は、キャプチャ部１１１と、キャプチャデータ記憶部１１２と、ＴＣＰコネクション判定部１１３と、設定情報記憶部１１４と、ＳＭＢリクエスト解析部１１５と、警告データ記憶部１１６と、警告部１１７とを有する。
【００４４】
なお、キャプチャ部１１１、ＴＣＰコネクション判定部１１３、ＳＭＢリクエスト解析部１１５、及び警告部１１７が有する機能の一部又は全部は、ＣＰＵ９０１が実行するプログラムのモジュールとして実現できる。また、キャプチャ部１１１、ＴＣＰコネクション判定部１１３、ＳＭＢリクエスト解析部１１５、及び警告部１１７が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。また、キャプチャデータ記憶部１１２、設定情報記憶部１１４、及び警告データ記憶部１１６は、例えば、ＲＡＭ９０２やＨＤＤ９０３に確保された記憶領域である。
【００４５】
キャプチャ部１１１は、ネットワーク９４を介して送受信されるパケットをキャプチャする。キャプチャ部１１１は、キャプチャしたパケットに受信時刻（タイムスタンプ）を付加してキャプチャデータ記憶部１１２に格納する。キャプチャデータ記憶部１１２は、キャプチャ部１１１によりキャプチャされたパケットを格納するための記憶部である。キャプチャデータ記憶部１１２に格納されたパケットは、ＴＣＰコネクション判定部１１３及びＳＭＢリクエスト解析部１１５により利用される。
【００４６】
ＴＣＰコネクション判定部１１３は、キャプチャデータ記憶部１１２に格納されたパケットを解析し、そのパケットが３ウェイ・ハンドシェイクの最後に送信されるＡＣＫパケットか否かを判定する。なお、３ウェイ・ハンドシェイクは、ＴＣＰコネクションを確立するための方法である。ＴＣＰコネクション判定部１１３は、キャプチャされたパケットが３ウェイ・ハンドシェイクのＡＣＫパケットであると判定した場合、ＳＭＢリクエスト解析部１１５にパケットの解析を依頼する。一方、３ウェイ・ハンドシェイクのＡＣＫパケットでないと判定した場合、ＴＣＰコネクション判定部１１３は、次にキャプチャデータ記憶部１１２に格納されたパケットについて３ウェイ・ハンドシェイクのＡＣＫパケットか否かを判定する。
【００４７】
ＴＣＰコネクション判定部１１３からパケットの解析を依頼されたＳＭＢリクエスト解析部１１５は、設定情報記憶部１１４に格納された設定情報を参照する。設定情報は、例えば、ＳＭＢリクエスト解析部１１５が実行するパケット解析のレベルを示す解析レベルの情報を含む。後述するように、この解析レベルが高いほど攻撃を検知する精度が高まる。一方、解析レベルが高いほど、パケット解析に要する処理負荷が高い。この解析レベルの情報は、例えば、情報処理システム１００を管理する管理者などが予め設定して設定情報記憶部１１４に格納する。
【００４８】
設定情報記憶部１１４は、上記のような設定情報を格納する記憶部である。ＳＭＢリクエスト解析部１１５は、設定情報記憶部１１４に格納された解析レベルの情報を確認する。また、ＳＭＢリクエスト解析部１１５は、キャプチャデータ記憶部１１２に格納されたパケットのうち、３ウェイ・ハンドシェイクが行われる一定時間前までにキャプチャされたパケットを参照し、ＳＭＢリクエストを検索する。ＳＭＢリクエストは、例えば、ＳＭＢプロトコルでクライアントからサーバへと処理を要求するためのＳＭＢパケットである。
【００４９】
ＳＭＢは、ファイル共有などのファイルサービスを実現するために利用される。ＳＭＢは、ファイル共有サービス、プリンタ共有サービス、コンピュータ名のブラウズ、プロセス間通信、メールスロット機能などを提供する。コンピュータ名のブラウズとは、ネットワーク上に存在するコンピュータ名の一覧を取得する機能である。また、ＳＭＢには、ネットワーク上にあるコンピュータが公開しているリソースの一覧を取得する機能もある。プロセス間通信（IPC:interprocess communication）は、複数のプロセス間（又は複数のスレッド間）でデータをやり取りする仕組みである。メールスロット機能は、受信側で順にメッセージを取り出して処理することができるように、複数の送信元から送信されたメッセージを一時的に蓄えておく仕組み（メールスロット）を提供する機能である。
【００５０】
なお、ＳＭＢプロトコルは、ネットワーク階層で言えばアプリケーション層やプレゼンテーション層に相当するファイルサービスプロトコルである。ＳＭＢプロトコルの下位プロトコルとしては、例えば、NetBIOS Extended User Interface（ＮｅｔＢＥＵＩ）、ＮＢＴ（NetBIOS over TCP/IP）、ＴＣＰ／ＩＰ、ＩＰＸ（Internetwork Packet Exchange）／ＳＰＸ（Sequenced Packet Exchange）などが利用される。なお、ＳＭＢを拡張したプロトコルとして、インターネットなどのネットワークを介してファイル共有サービスなどを利用できるようにしたCommon Internet File System（ＣＩＦＳ）と呼ばれるプロトコルもある。
【００５１】
また、ＳＭＢは、ピアツーピアの動作を前提としている。従って、ＳＭＢでは、クライアントからサーバに何らかの要求（ＳＭＢリクエストと呼ばれる。）が送信され、その要求に応じてサーバが応答する動作が前提とされる。
【００５２】
さて、３ウェイ・ハンドシェイクが行われる一定時間前までにＳＭＢリクエストが検出されなかった場合、ＳＭＢリクエスト解析部１１５は、ＴＣＰコネクション判定部１１３から再びパケットの解析が依頼されるまで待機する。一方、ＳＭＢリクエストを検出した場合、ＳＭＢリクエスト解析部１１５は、解析レベルに応じた処理を実行する。ここでは３段階の解析レベル（解析レベル＝１、２、３）が設定されている場合について考える。
【００５３】
解析レベルが１の場合、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストとは逆方向の３ウェイ・ハンドシェイク（リバースコネクション）のデータと、ＳＭＢリクエストのデータとを対応付けて警告データ記憶部１１６に格納する。例えば、情報処理装置１０１から情報処理装置１０２へとＳＭＢリクエストが送られた後、一定時間内に、情報処理装置１０２から情報処理装置１０１へとコネクションを確立するための３ウェイ・ハンドシェイクが行われた場合について考える。この場合、ＳＭＢリクエストと３ウェイ・ハンドシェイクとは逆方向であるから、ＳＭＢリクエスト解析部１１５は、このＳＭＢリクエストのデータ及び３ウェイ・ハンドシェイクのデータとを対応付けて警告データ記憶部１１６に格納する。
【００５４】
また、解析レベルが２の場合、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストが書き込みコマンドを含むか否かを判定する。ＳＭＢリクエストが書き込みコマンドを含まない場合、ＳＭＢリクエスト解析部１１５は、ＴＣＰコネクション判定部１１３から再びパケットの解析が依頼されるまで待機する。一方、ＳＭＢリクエストが書き込みコマンドを含む場合、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストとは逆方向の３ウェイ・ハンドシェイク（リバースコネクション）のデータと、ＳＭＢリクエストのデータとを対応付けて警告データ記憶部１１６に格納する。
【００５５】
また、解析レベルが３の場合、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストが書き込みコマンド及び実行可能コードを含むか否かを判定する。ＳＭＢリクエストが書き込みコマンド及び実行可能コードを含まない場合、ＳＭＢリクエスト解析部１１５は、ＴＣＰコネクション判定部１１３から再びパケットの解析が依頼されるまで待機する。一方、ＳＭＢリクエストが書き込みコマンド及び実行可能コードを含む場合、ＳＭＢリクエスト解析部１１５は、キャプチャデータ記憶部１１２に格納されたパケットを参照し、実行指示コマンドを含むＳＭＢリクエストが検出されているか否かを判定する。
【００５６】
実行指示コマンドを含むＳＭＢリクエストが検出されていない場合、ＳＭＢリクエスト解析部１１５は、ＴＣＰコネクション判定部１１３から再びパケットの解析が依頼されるまで待機する。一方、実行指示コマンドを含むＳＭＢリクエストが検出されている場合、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストとは逆方向の３ウェイ・ハンドシェイク（リバースコネクション）のデータと、ＳＭＢリクエストのデータとを対応付けて警告データ記憶部１１６に格納する。
【００５７】
警告データ記憶部１１６にリバースコネクションのデータ及びＳＭＢリクエストのデータが対応付けて格納された場合、警告部１１７は、警告を発する。このとき、警告部１１７は、Simple Network Management Protocol（ＳＮＭＰ）が設定されている場合、ＳＮＭＰトラップにより警告を発する。一方、ＳＮＭＰが設定されていない場合、警告部１１７は、電子メールを利用して警告を発する。これらＳＮＭＰトラップや電子メールは、端末装置１０３に送信される。
【００５８】
上記のような機能を有するネットワーク監視装置１１０によれば、攻撃と見なすＳＭＢリクエストとリバースコネクションとを紐付けることが可能になる。また、ＳＭＢリクエストの内容を解析し、その解析結果に応じてＳＭＢリクエストとリバースコネクションとを紐付けることで誤検出の頻度が低減され、攻撃の検出精度が向上する。
【００５９】
以下、情報処理装置１０１に侵入した不正プログラムが、情報処理装置１０２から機密情報を窃取しようとする標的型攻撃を例に挙げ、この標的型攻撃を検知する際のネットワーク監視装置１１０の動作について説明する。標的型攻撃の例として図５及び図６に示すケースを考える。
【００６０】
図５は、標的型攻撃の例を示した第１の図である。
図５の例では、情報処理装置１０１が不正プログラムＡに感染している。この不正プログラムＡは、情報処理装置１０１が保持するログイン情報を取得する。このログイン情報は、例えば、情報処理装置１０２の認証を通過するためのものである。ログイン情報を取得した不正プログラムＡは、取得したログイン情報を利用して情報処理装置１０２にアクセスし、ＳＭＢパケットを用いて不正プログラムＡ１及びＡ２を情報処理装置１０２に送信する。また、不正プログラムＡ１は、情報処理装置１０２で実行される。
【００６１】
さらに、不正プログラムＡは、不正プログラムＡ１に対し、ＳＭＢパケットを用いて不正プログラムＡ２を起動するように指示を与える。この指示を受けた不正プログラムＡ１は、不正プログラムＡ２を起動する。また、図６に示すように、不正プログラムＡは、ＳＭＢパケットを用いて不正プログラムＡ１を削除する。
【００６２】
図６は、標的型攻撃の例を示した第２の図である。不正プログラムＡ１は、ＳＭＢリクエストを待つ常駐プロセス・常駐サービスとして動作する。そのため、不正プログラムＡ１が動作していると、情報処理装置１０２において普段とは異なるプロセス・サービスが長時間立ち上がった状態となり、不正プログラムＡ１の存在及び動作が露見しやすくなる。そのため、不正プログラムＡ１は、名前がプロセス一覧やサービス一覧に長い時間表示されて攻撃が露見することを避けるため、図６に示すように不正プログラムＡ２の起動後に短時間で削除される。
【００６３】
一方、不正プログラムＡ２は、常駐プロセス・常駐サービスではなく、クライアントプロセスとして動作する。そのため、不正プログラムＡ２は、自身で起動・停止を制御することが可能であり、長時間連続してプロセスが稼働した状態になるのを回避できる。但し、不正プログラムＡ２の起動・停止の制御は、不正プログラムＡからも行われ得る。さらに、不正プログラムＡ２をＷｅｂブラウザなどの頻繁に利用されるアプリケーションプロセスに偽装することで、不正プログラムＡ２の露見可能性が抑制される。
【００６４】
上記のような不正プログラムＡ２は、情報処理装置１０２が保持する機密情報などを取得する。また、不正プログラムＡ２は、情報処理装置１０１が通信を許可しているポート番号を利用して、情報処理装置１０１で動作している不正プログラムＡに接続する。さらに、不正プログラムＡ２は、情報処理装置１０２から取得した機密情報などを不正プログラムＡに送信する。例えば、不正プログラムＡ２は、ポート番号８０で情報処理装置１０１に接続し、ＨＴＴＰなどのプロトコルに従って機密情報などを送信する。
【００６５】
上記のような標的型攻撃の場合、Ｗｅｂブラウザによって送信されるＨＴＴＰリクエストのように通常のファイアウォールで許可されている可能性が高い通信が利用されるため、ファイアウォールで攻撃が検知されないことがある。また、不正プログラムＡ１及びＡ２を情報処理装置１０２に送信する際のデータが圧縮・符号化などの方法で隠蔽されてしまうと、パターンマッチングなどの方法では攻撃が検知されないことがある。また、異常トラフィックが発生しないため、アノマリ型の異常検出方法でも上記のような攻撃が検知されないことがある。また、情報処理装置１０１から情報処理装置１０２へのＳＭＢパケットの送信及びリバースコネクションの発生をそれぞれ検知しても、その個別の検知結果を直ちに攻撃の発生に結びつけることは適当でない。
【００６６】
そこで、図５及び図６に例示したような標的型攻撃の際に発生するリバースコネクションを検出し、この標的型攻撃に関するリバースコネクションとＳＭＢパケットとを適切に紐付ける方法を以下に示す。この方法について説明するに先立ち、図７及び図８を参照しながら、ＳＭＢパケットの構造及び３ウェイ・ハンドシェイクの仕組みについて述べる。
【００６７】
図７は、パケット構造の例を示した図である。
ネットワーク監視装置１１０のキャプチャ部１１１は、ネットワーク９４を介してＴＣＰ／ＩＰパケットをキャプチャする。ＴＣＰ／ＩＰパケットは、図７（Ａ）に示すような構造を有する。図７（Ａ）に示すように、ＴＣＰ／ＩＰパケットは、ＩＰヘッダ、ＴＣＰヘッダ、及びＴＣＰペイロードを含む。ＩＰヘッダには、送信元のＩＰアドレスと宛先のＩＰアドレスとが格納される。ＴＣＰヘッダには、送信元のポート番号、宛先のポート番号、シーケンス番号、ＡＣＫ番号、ＡＣＫフラグ、及びＳＹＮフラグが含まれる。シーケンス番号は、送信するデータの先頭バイト番号である。ＡＣＫ番号は、次に逆方向に送信されるデータの先頭バイト番号である。ＡＣＫフラグは、応答確認フラグである。ＳＹＮフラグは、同期フラグである。
【００６８】
ＳＭＢリクエスト解析部１１５は、キャプチャ部１１１がキャプチャしたＴＣＰ／ＩＰパケットの中からＳＭＢパケットを抽出する。このとき、ＳＭＢリクエスト解析部１１５は、ＴＣＰ／ＩＰパケットのＴＣＰペイロードを参照する。ＳＭＢパケットは、図７（Ｂ）に示すような構造を有する。つまり、ＳＭＢパケットのＴＣＰペイロードには、ＳＭＢヘッダ及びＳＭＢペイロードが含まれる。ＳＭＢヘッダには、ＩＤデータ、コマンド、及びパラメータが含まれる。ＩＤデータは、ＳＭＢヘッダの先頭に位置し、ＳＭＢプロトコルのパケットであることを示す４バイトの識別用文字列データである。
【００６９】
コマンドは、受信側に対するコマンドを表すコード番号を指定する情報である。コマンドとしては、例えば、フォルダの作成や削除、ファイルのオープン、作成、クローズ、削除、名前変更、書き込み、読み出し、検索などのファイルやフォルダの操作に関するコマンドがある。その他にも、ファイル・システム情報を取得するコマンドや、ファイルやディレクトリの属性を取得又は設定するコマンドなどがある。パラメータは、エラーに関する情報、コマンドに関する補助情報、及びユーザに関する情報などを含む。
【００７０】
ＳＭＢパケットは上記のような構造を有するため、キャプチャしたパケットがＳＭＢパケットであるか否かは、ＴＣＰヘッダの宛先ポート番号（例えば、４４５番）とＳＭＢヘッダのＩＤデータから判断することができる。また、ＳＭＢパケットが書き込みコマンドを含むか否かは、ＳＭＢヘッダのコマンドを参照することで判断することができる。
【００７１】
なお、ＳＭＢパケットの中には、実行可能コードを送信するためのものが存在する。実行可能コードを送信するためのＳＭＢパケットは、例えば、図７（Ｃ）に示すような構造を有する。実行可能コードを送信するためのＳＭＢパケットは、図７（Ｃ）に示すように、ＳＭＢペイロードがＰＥヘッダ、及び実行可能コードを含む。
【００７２】
ＰＥヘッダは、実行可能コードの特性が書き込まれる部分である。ＰＥヘッダには、シグネチャ及びCharacteristicsフラグなどが含まれる。シグネチャは、ＰＥヘッダの先頭に位置する所定の４バイトの識別用文字列データである。また、Characteristicsフラグは、ファイルの属性値を指定するフラグである。例えば、CharacteristicsフラグとしてIMAGE＿FILE＿EXECUTABLE＿IMAGE（値0x0002）が指定されていた場合、ダイナミックリンクライブラリなどのイメージファイルが有効であり、実行され得ることを示す。また、実行可能コードは、プログラムの実行手順が記述された機械語データである。
【００７３】
キャプチャしたＳＭＢパケットが実行可能コードを含むか否かは、例えば、ＰＥヘッダのシグネチャとCharacteristicsフラグから判断できる。上記のような実行可能コードを含むＳＭＢパケットを利用し、ファイルの書き込みコマンドを指定することで、例えば、実行可能コードの書き込みを行うことが可能になる。
【００７４】
次に、図８を参照しながら、３ウェイ・ハンドシェイクについて説明する。図８は、３ウェイ・ハンドシェイクについて説明した図である。
ＴＣＰにおいては、確実なデータ送信を実現するために３ウェイ・ハンドシェイクと呼ばれるコネクションの確立方法が用いられる。この方法では、まず、送信側から受信側へと送信許可要求（ＳＹＮ）を伝えるパケットが送信される。つまり、送信許可要求を示すＳＹＮフラグが１に設定されたパケットが送信側から受信側へと送信される。次に、受信側から送信側へと送信許可及び送信許可要求（ＳＹＮ＋ＡＣＫ）を伝えるパケットが送信される。つまり、送信許可を示すＡＣＫフラグが１に設定され、送信許可要求を示すＳＹＮフラグが１に設定されたパケットが送信側から受信側へと送信される。
【００７５】
送信許可及び送信許可要求を伝えるパケットが送信側で受け取られると、送信側から受信側へ向かう方向の通信路が確立される。次に、送信側から受信側へと送信許可（ＡＣＫ）を伝えるパケットが送信される。つまり、送信許可を示すＡＣＫフラグが１に設定されたパケットが送信側から受信側へと送信される。このパケットが受信側で受け取られると、受信側から送信側へ向かう方向の通信路が確立される。このようにして送信側と受信側との間で双方向に通信路が確立されると、コネクションの確立が完了する。上記の仕組みが３ウェイ・ハンドシェイクと呼ばれるコネクションの確立方法である。
【００７６】
なお、３ウェイ・ハンドシェイクの初めに送信側から受信側へと送信されるパケットのシーケンス番号（ＳＥＱ）には、送信側で用意した初期値が設定される。また、受信側から送信側へと送信されるパケットのシーケンス番号（ＳＥＱ）には、受信側で用意した初期値が設定される。また、このパケットのＡＣＫ番号には、送信側の初期値に１を加えた値が設定される。このパケットを受け取った送信側から受信側へと送信されるパケットのＡＣＫ番号には、受信側の初期値に１を加えた値が設定される。このような３ウェイ・ハンドシェイクの仕組みを利用することで確実なデータ送信が実現される。
【００７７】
以上、ＳＭＢパケットの構造及び３ウェイ・ハンドシェイクの仕組みについて述べた。
次に、図９〜図１３を参照しながら、図５及び図６に例示したような標的型攻撃の際に発生するリバースコネクションを検出し、このリバースコネクションとＳＭＢパケットとを紐付ける方法について説明する。なお、第２の実施の形態においては、解析レベル１〜３と称して３通りの方法を紹介する。
【００７８】
まず、図９を参照しながら、解析レベル１に係る方法について説明する。この方法は、ネットワーク監視装置１１０が有するＳＭＢリクエスト解析部１１５の機能により実現される。図９は、第２の実施の形態に係るリバースコネクションの検出方法（解析レベル１の例）を説明した図である。
【００７９】
解析レベルが１の場合、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストが検出された後、一定時間以内に、そのＳＭＢリクエストと逆方向の３ウェイ・ハンドシェイク（リバースコネクション）が行われたか否かを確認する。リバースコネクションの前一定時間内に検出されたＳＭＢリクエストがある場合、ＳＭＢリクエスト解析部１１５は、リバースコネクションのデータと、ＳＭＢリクエストのデータとを紐付ける。なお、一定時間としては、例えば、数十ミリ秒から数百ミリ秒程度の時間が設定される。紐付けが行われたＳＭＢリクエストの送信及びリバースコネクションの確立は、攻撃の一部であると見なされる。
【００８０】
ところで、ＴＣＰ／ＩＰに基づくプロトコルとしてRemote Desktop Protocol（ＲＤＰ）と呼ばれるプロトコルがある。ＲＤＰは、例えば、ターミナルサービスを利用してユーザから入力された情報を端末からサーバに伝える通信処理や、サーバが端末に対して画面情報を送信する通信処理に利用される。このＲＤＰとＳＭＢによるファイル共通サービスとを併用する場合、ＳＭＢリクエストとＲＤＰによる逆方向の３ウェイ・ハンドシェイクとが連続して発生してしまう可能性がある。
【００８１】
この場合、単にＳＭＢリクエストと逆方向の３ウェイ・ハンドシェイクの発生を検知して攻撃と見なすと、正常な処理を攻撃と誤認識してしまうことになる。しかし、解析レベル１の場合、ＳＭＢリクエストと３ウェイ・ハンドシェイクとが一定時間内に実行された場合に、その処理を攻撃の一部とみなす仕組みとしているため、ＲＤＰによる正常な接続処理を誤って攻撃と見なしてしまう確率が低減される。
【００８２】
次に、図１０を参照しながら、解析レベル２に係る方法について説明する。この方法は、ネットワーク監視装置１１０が有するＳＭＢリクエスト解析部１１５の機能により実現される。図１０は、第２の実施の形態に係るリバースコネクションの検出方法（解析レベル２の例）を説明した図である。
【００８３】
解析レベル２の場合、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストが検出された後、一定時間以内に、そのＳＭＢリクエストと逆方向の３ウェイ・ハンドシェイク（リバースコネクション）が行われたか否かを確認する。また、ＳＭＢリクエスト解析部１１５は、検出されたＳＭＢリクエストに書き込みコマンドが含まれるか否かを確認する。リバースコネクションの前一定時間内に検出されたＳＭＢリクエストがあり、かつ、そのＳＭＢリクエストに書き込みコマンドが含まれる場合、ＳＭＢリクエスト解析部１１５は、リバースコネクションのデータと、ＳＭＢリクエストのデータとを紐付ける。
【００８４】
つまり、ＳＭＢペイロードに書き込み対象のファイルデータが含まれ、そのファイルデータを情報処理装置１０２に保存させるリクエスト（書き込みコマンドを含むＳＭＢリクエスト）が一定時間内に検出された場合に上記の紐付け処理が実行される。
【００８５】
紐付けが行われたＳＭＢリクエストの送信及びリバースコネクションの確立は、攻撃の一部であると見なされる。解析レベル１の場合と同様に、ＳＭＢリクエストの検出からリバースコネクションの検知までの時間を限ることで、ＲＤＰ接続などの際に行われる正常な処理を誤って攻撃と見なしてしまう確率が低減される。また、ＳＭＢリクエストに書き込みコマンドが含まれるか否かを判定することで、ファイルデータの書き込み以外のＳＭＢリクエストとリバースコネクションとが紐付けされなくなるため、正常な処理を誤って攻撃と認識してしまう確率が更に低減される。
【００８６】
次に、図１１を参照しながら、解析レベル３に係る方法について説明する。この方法は、ネットワーク監視装置１１０が有するＳＭＢリクエスト解析部１１５の機能により実現される。図１１は、第２の実施の形態に係るリバースコネクションの検出方法（解析レベル３の例）を説明した図である。
【００８７】
解析レベル３の場合、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストが検出された後、一定時間以内に、そのＳＭＢリクエストと逆方向の３ウェイ・ハンドシェイク（リバースコネクション）が行われたか否かを確認する。また、ＳＭＢリクエスト解析部１１５は、検出されたＳＭＢリクエストに実行可能コードの書き込みコマンドが含まれるか否かを確認する。実行可能コードの書き込みコマンドが含まれるか否かは、例えば、ＳＭＢリクエストのＰＥヘッダにCharacteristicsフラグとしてIMAGE＿FILE＿EXECUTABLE＿IMAGE（値0x0002）が指定されているか否かを確認することで判定可能である。
【００８８】
また、ＳＭＢリクエスト解析部１１５は、実行指示コマンドを含むＳＭＢリクエストが検出されたか否かを判定する。但し、ここでは、書き込みコマンドと、先にＳＭＢリクエストで送信した実行可能コードの実行指示を示すパラメータとの組み合わせを実行指示コマンドと呼んでいる。リバースコネクション前の一定時間内に実行可能コードの書き込みコマンドを含むＳＭＢリクエストが検出され、実行可能コードを含む書き込みコマンドとリバースコネクションとの間に実行指示コマンドを含むＳＭＢリクエストが送信されたことが検出された場合、ＳＭＢリクエスト解析部１１５は、リバースコネクションとＳＭＢリクエストとを紐付ける。紐付けが行われたＳＭＢリクエストの送信及びリバースコネクションの確立は、攻撃の一部であると見なされる。
【００８９】
上記のように、ＳＭＢリクエストの検出からリバースコネクションの検知までの時間を限定し、ＳＭＢリクエストに書き込みコマンドが含まれるか否かを判定することで、解析レベル２の場合と同様に正常な処理を誤って攻撃と見なしてしまう確率が低減される。また、ＳＭＢリクエストを解析して実行可能コードの書き込みコマンド及び実行指示コマンドを検知することで、正常な処理を誤って攻撃と見なしてしまう確率を更に低減することができる。
【００９０】
上記のように、解析レベル１の場合よりも解析レベル２の場合の方が誤検出の確率が低減される。さらに、解析レベル２の場合よりも解析レベル３の場合の方が誤検出の確率が低減される。但し、解析レベル２の場合は、ＳＭＢリクエストに書き込みコマンドが含まれるか否かを判定する処理が実行される分だけ解析レベル１の場合よりも処理負荷が高くなる。また、解析レベル３の場合は、実行可能コードの書き込みコマンド及び実行指示コマンドを検出する処理が実行される分だけ解析レベル２の場合よりも処理負荷が高くなる。従って、検出精度と処理負荷とのトレードオフを考慮して解析レベルが設定される。
【００９１】
ここで、図１２及び図１３を参照しながら、リバースコネクションの検知方法、紐付けるＳＭＢリクエストの判定方法などについて説明を補足する。
図１２は、ＳＭＢリクエストテーブルの例を示した図である。なお、図１２に示したＳＭＢリクエストテーブルは、ＳＭＢリクエスト解析部１１５により生成され、警告データ記憶部１１６に格納されるデータ（警告データ）のうち、ＳＭＢリクエストに関する警告データのデータ構造を示している。
【００９２】
図１２に示すように、ＳＭＢリクエストテーブルには、ＩＤ、送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレス、宛先ポート番号、コマンド、実行可能コード、及び受信時刻などの情報が含まれる。受信時刻は、ＳＭＢリクエストを受信した時刻を示す。また、ＩＤは、対応するリバースコネクションとの対応関係を識別するための識別情報である。
【００９３】
図１１に示した例の場合、実行可能コードの書き込みコマンドを含むＳＭＢリクエスト、及び実行指示コマンドを含むＳＭＢリクエストが検出される。この場合、ＳＭＢリクエスト解析部１１５は、実行可能コードの書き込みコマンドを含むＳＭＢリクエストについて、ＳＭＢリクエストテーブルのコマンドの欄に「書き込み」、実行可能コードの欄に「ＹＥＳ」と書き込む。また、ＳＭＢリクエスト解析部１１５は、このＳＭＢリクエストについて、その他の情報と共に受信時刻の情報をＳＭＢリクエストテーブルに書き込む。同様に、実行指示コマンドを含むＳＭＢリクエストについて、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストテーブルのコマンドの欄に「実行指示」、実行可能コードの欄に「ＮＯ」と書き込む。
【００９４】
また、ネットワーク監視装置１１０が有するＳＭＢリクエスト解析部１１５は、リバースコネクションが検知された際、リバースコネクションに関する情報を図１３に示すようにリバースコネクションテーブルへ書き込む。
【００９５】
図１３は、リバースコネクションテーブルの例を示した図である。図１３に示すように、リバースコネクションテーブルには、ＩＤ、送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレス、宛先ポート番号、及び受信時刻などの情報が含まれる。なお、ＩＤは、対応するＳＭＢリクエストとの対応関係を識別するための識別情報である。送信元ＩＰアドレス及び送信元ポート番号は、３ウェイ・ハンドシェイクの最初に送信されるＳＹＮパケット又は最後に送信されるＡＣＫパケットの送信元のＩＰアドレス及びポート番号を表す。宛先ＩＰアドレス及び宛先ポート番号は、３ウェイ・ハンドシェイクの最初に送信されるＳＹＮパケット又は最後に送信されるＡＣＫパケットの宛先のＩＰアドレス及びポート番号を表す。受信時刻は、例えば、リバースコネクションである３ウェイ・ハンドシェイクの最後に送信されるＡＣＫパケットを受信した時刻を示す。
【００９６】
以上、標的型攻撃の際に発生するリバースコネクションを検出し、このリバースコネクションとＳＭＢパケットとを紐付ける方法について説明した。
次に、図１４〜図１６を参照しながら、第２の実施の形態に係る監視処理の流れについて説明する。なお、ここで説明する監視処理は、ネットワーク監視装置１１０により実行される。図１４は、第２の実施の形態に係る監視処理の流れを示した第１の図である。
【００９７】
（Ｓ１０１）ＳＭＢリクエスト解析部１１５は、設定情報記憶部１１４に格納された設定情報を参照する。この設定情報は、例えば、ＳＭＢリクエスト解析部１１５が実行するパケット解析のレベルを示す解析レベルの情報を含む。この解析レベルの情報は、例えば、情報処理システム１００を管理する管理者などが予め設定して設定情報記憶部１１４に格納する。ＳＭＢリクエスト解析部１１５は、設定情報記憶部１１４に格納された解析レベルの情報を確認する。なお、ＳＭＢリクエスト解析部１１５は、解析レベルの情報をユーザに入力するように求めてもよい。
【００９８】
（Ｓ１０２）キャプチャ部１１１は、ネットワーク９４を介して送受信されるパケットをキャプチャする。また、キャプチャ部１１１は、キャプチャしたパケットにキャプチャされた時刻（受信時刻）を付加してキャプチャデータ記憶部１１２に格納する。
【００９９】
（Ｓ１０３）ＴＣＰコネクション判定部１１３は、キャプチャデータ記憶部１１２に格納されたパケットを解析し、そのパケットが３ウェイ・ハンドシェイクの最後のパケット（ＡＣＫパケット）か否かを判定する。なお、キャプチャされたパケットが３ウェイ・ハンドシェイクのＡＣＫパケットか否かは、図８に示したように、ＳＹＮパケット、ＳＹＮ＋ＡＣＫパケット、ＡＣＫパケットが順に検出されたか否かで判定することができる。なお、これら３つのパケットは、例えば、各パケットに含まれる送信元及び宛先のＩＰアドレスやポート番号を参照することで相互に対応付けることができる。
【０１００】
（Ｓ１０４）ＴＣＰコネクション判定部１１３が、Ｓ１０３の処理で３ウェイ・ハンドシェイクのＡＣＫパケットであると判定した場合（３ウェイ・ハンドシェイクによりＴＣＰコネクションが確立されたと判定した場合）、処理はＳ１０５に進む。一方、ＴＣＰコネクション判定部１１３が、Ｓ１０３の処理で３ウェイ・ハンドシェイクのＡＣＫパケットでないと判定した場合、処理はＳ１０６に進む。
【０１０１】
（Ｓ１０５）ＳＭＢリクエスト解析部１１５は、キャプチャデータ記憶部１１２に格納されたパケットのうち、３ウェイ・ハンドシェイクが行われる一定時間前までにキャプチャされたパケットを参照し、ＳＭＢリクエストを検索する。
【０１０２】
なお、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストの送信元ＩＰアドレス及び宛先ＩＰアドレスと、３ウェイ・ハンドシェイクのＳＹＮパケット又はＡＣＫパケットの送信元ＩＰアドレス及び宛先ＩＰアドレスとが逆方向であるＳＭＢリクエストを検索する。このとき、ＳＭＢリクエスト解析部１１５は、例えば、３ウェイ・ハンドシェイクの最後のパケット（ＡＣＫパケット）が受信されてから一定時間前までにキャプチャされたＳＭＢリクエストを検索する。
【０１０３】
ＳＭＢリクエストが検出された場合、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストの解析を実行する。
（Ｓ１０６）ネットワーク監視装置１１０は、パケットの監視を終了するか否かを判定する。例えば、ユーザにより監視を終了する指示を受けた場合や、予め設定された監視時間が経過した場合など、終了条件を満たした場合に、ネットワーク監視装置１１０は、パケットの監視を終了する。パケットの監視を終了すると判定された場合、図１４に示した一連の処理は終了する。一方、パケットの監視を終了しないと判定された場合、処理はＳ１０１に進む。
【０１０４】
ここで、図１５及び図１６を参照しながら、Ｓ１０５の処理について更に説明する。図１５は、第２の実施の形態に係る監視処理の流れを示した第２の図である。
（Ｓ１１１）ＳＭＢリクエスト解析部１１５は、キャプチャデータ記憶部１１２に格納されたパケットのうち、３ウェイ・ハンドシェイクが行われる一定時間前（例えば、３ウェイ・ハンドシェイクの最後のパケット（ＡＣＫパケット）が受信されてから一定時間前）までにキャプチャされたパケットを参照し、ＳＭＢリクエストを検索する。なお、ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストの送信元ＩＰアドレス及び宛先ＩＰアドレスと、３ウェイ・ハンドシェイクのＳＹＮパケット又はＡＣＫパケットの送信元ＩＰアドレス及び宛先ＩＰアドレスとが逆方向であるＳＭＢリクエストを検索する。
【０１０５】
（Ｓ１１２）ＳＭＢリクエストが検出されなかった場合、ＳＭＢリクエスト解析部１１５は、Ｓ１０５の処理に係る一連の処理を終了する。一方、ＳＭＢリクエストを検出した場合、ＳＭＢリクエスト解析部１１５は、解析レベルに応じた処理を実行する。
【０１０６】
（Ｓ１１３）解析レベルが１である場合、処理はＳ１１８に進む。解析レベルが１でない場合、処理はＳ１１４に進む。
（Ｓ１１４）解析レベルが２である場合、処理はＳ１１５に進む。解析レベルが２でない場合、処理はＳ１１６に進む。
【０１０７】
（Ｓ１１５）ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストが書き込みコマンドを含むか否かを判定する。なお、ＳＭＢリクエストが書き込みコマンドを含むか否かは、ＳＭＢヘッダのコマンドを参照することで判断することができる。ＳＭＢリクエストが書き込みコマンドを含まない場合、Ｓ１０５の処理に係る一連の処理は終了する。一方、ＳＭＢリクエストが書き込みコマンドを含む場合、処理はＳ１１８に進む。
【０１０８】
（Ｓ１１６）ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストが書き込みコマンド及び実行可能コードを含むか否かを判定する。ＳＭＢリクエストが実行可能コードを含むか否かは、例えば、ＳＭＢリクエストが有するＰＥヘッダのシグネチャとCharacteristicsフラグから判断できる。ＳＭＢリクエストが書き込みコマンド及び実行可能コードを含まない場合、Ｓ１０５の処理に係る一連の処理は終了する。一方、ＳＭＢリクエストが書き込みコマンド及び実行可能コードを含む場合、処理はＳ１１７に進む。
【０１０９】
（Ｓ１１７）ＳＭＢリクエスト解析部１１５は、書き込みコマンド及び実行可能コードを含むＳＭＢリクエストより後であり３ウェイ・ハンドシェイクの一定時間前までにキャプチャデータ記憶部１１２に格納されたパケットを参照し、実行指示コマンドを含むＳＭＢリクエストが検出されているか否かを判定する。実行指示コマンドを含むＳＭＢリクエストが検出されていない場合、Ｓ１０５の処理に係る一連の処理は終了する。一方、実行指示コマンドを含むＳＭＢリクエストが検出されている場合、処理はＳ１１８に進む。
【０１１０】
（Ｓ１１８）ＳＭＢリクエスト解析部１１５は、ＳＭＢリクエストとは逆方向の３ウェイ・ハンドシェイク（リバースコネクション）のデータと、ＳＭＢリクエストのデータとを対応付けて警告データを生成する。例えば、ＳＭＢリクエスト解析部１１５は、図１２に例示したＳＭＢリクエストテーブル、及び図１３に例示したリバースコネクションテーブルを生成して警告データ記憶部１１６に格納する。Ｓ１１８の処理が終了すると、処理は、図１６のＳ１１９に進む。
【０１１１】
図１６は、第２の実施の形態に係る監視処理の流れを示した第３の図である。
（Ｓ１１９）警告部１１７は、ネットワーク監視装置１１０にＳＮＭＰが設定されているか否かを判定する。ＳＮＭＰが設定されている場合、処理はＳ１２０に進む。一方、ＳＮＭＰが設定されていない場合、処理はＳ１２１に進む。
【０１１２】
（Ｓ１２０）警告部１１７は、ＳＮＭＰトラップを管理者が使用する端末装置１０３に対して送信される。例えば、警告部１１７は、警告データ記憶部１１６に記憶されたＳＭＢリクエストテーブルとリバースコネクションテーブルを警告データとして送信する。Ｓ１２０の処理が終了すると、Ｓ１０５の処理に係る一連の処理は終了する。
【０１１３】
（Ｓ１２１）警告部１１７は、電子メールを、メールサーバ（図示せず）を介して管理者が使用する端末装置１０３に送信する。例えば、警告部１１７は、警告データ記憶部１１６に記憶されたＳＭＢリクエストテーブルとリバースコネクションテーブルを警告データとして送信する。Ｓ１２１の処理が終了すると、Ｓ１０５の処理に係る一連の処理は終了する。
【０１１４】
以上、第２の実施の形態に係る監視処理の流れについて説明した。
以上説明したように、第２の実施の形態に係る技術を適用すれば、解析レベル１の場合のようにＳＭＢリクエストの検出からリバースコネクションの検知までの時間を限ることで、ＲＤＰ接続などの際に行われる正常な処理を誤って攻撃と見なしてしまう確率が低減される。さらに、解析レベル２の場合のようにＳＭＢリクエストに書き込みコマンドが含まれるか否かを判定することで、正常な処理を誤って攻撃と見なしてしまう確率が更に低減される。さらに、解析レベル３の場合のようにＳＭＢリクエストを解析して実行可能コードの書き込みコマンド及び実行指示コマンドを検知することで、正常な処理を誤って攻撃と見なしてしまう確率を更に低減することができる。
【０１１５】
解析レベル１の場合よりも解析レベル２の場合の方が誤検出の確率が低減される。さらに、解析レベル２の場合よりも解析レベル３の場合の方が誤検出の確率が低減される。但し、解析レベル２の場合は、ＳＭＢリクエストに書き込みコマンドが含まれるか否かを判定する処理が実行される分だけ解析レベル１の場合よりも処理負荷が高くなる。また、解析レベル３の場合は、実行可能コードの書き込みコマンド及び実行指示コマンドを検出する処理が実行される分だけ解析レベル２の場合よりも処理負荷が高くなる。
【０１１６】
従って、検出精度を重視する場合には解析レベル３が優れ、処理負荷の低減を重視する場合には解析レベル１が優れ、検出精度と処理負荷とのバランスを重視する場合には解析レベル２が優れる。つまり、検出精度と処理負荷とのトレードオフを考慮して解析レベルが設定される。
【０１１７】
また、上記技術を適用すれば、例えば、ＰＦＷ（Personal Fire Wall）バイパス機能を有するマルウェアによるリバースコネクションを検知することが可能になる。また、ＨＴＴＰなどの通常利用されるプロトコルに違反しない正常なパケットを用いた攻撃を検知することができる。また、パケットに含まれるシグニチャを用いるパターンマッチングなどの方法で検知できないマルウェアの活動を検知することが可能になる。
【０１１８】
また、マルウェアの送信及び実行に係る振る舞いの検知結果と、機密情報などの送信に係る振る舞いの検知結果とを組み合わせて攻撃の検知を行うため、高い精度の攻撃検知を実現することができる。
【０１１９】
なお、上記の説明においては、ＳＭＢパケットを利用した不正プログラムの送信及び実行を前提とする標的型攻撃を例に挙げ、その検知方法について説明を進めてきた。しかし、第２の実施の形態に係る技術の適用範囲はＳＭＢに限定されない。
【０１２０】
例えば、他のプロトコルで規定されるパケットにも送信元及び宛先のアドレス情報が含まれるため、通信方向を判別してリバースコネクションを検出することができる。また、受信時刻はネットワーク監視装置１１０が記録すればよく、リバースコネクションの前一定時間内に受信したパケットを検索することもできる。さらに、ペイロードに含まれる実行可能コードの実行可否などを示す情報を利用すれば、パケットとリバースコネクションとの紐付けを高精度に行うことができる。こうした変形についても当然に第２の実施の形態の技術的範囲に属する。
【符号の説明】
【０１２１】
１０  ネットワーク監視装置
１１  受信部
１２  判定部
２１、２２  情報処理装置
３０  ネットワーク
３１、３２  パケット
１００  情報処理システム
１０１、１０２  情報処理装置
１０３  端末装置
１１０  ネットワーク監視装置
１１１  キャプチャ部
１１２  キャプチャデータ記憶部
１１３  ＴＣＰコネクション判定部
１１４  設定情報記憶部
１１５  ＳＭＢリクエスト解析部
１１６  警告データ記憶部
１１７  警告部
【図１】
2014086821.tif 000003
【図２】
2014086821.tif 000004
【図３】
2014086821.tif 000005
【図４】
2014086821.tif 000006
【図５】
2014086821.tif 000007
【図６】
2014086821.tif 000008
【図７】
2014086821.tif 000009
【図８】
2014086821.tif 000010
【図９】
2014086821.tif 000011
【図１０】
2014086821.tif 000012
【図１１】
2014086821.tif 000013
【図１２】
2014086821.tif 000014
【図１３】
2014086821.tif 000015
【図１４】
2014086821.tif 000016
【図１５】
2014086821.tif 000017
【図１６】
2014086821.tif 000018