(57)【要約】【課題】誤検知を防ぎつつ、未知のパターンを含めて不正アクセスを確実に防御する。【解決手段】インターフェース151は、内部ネットワーク12上の全パケットをキャプチャし、解析モジュールM1はキャプチャされたパケットを順次取り込んで命令列として攻撃決定命令の有無を解析する。判定モジュールM2は解析によって攻撃決定命令が存在した場合に、その解析結果についてデータベース152の攻撃コードパターン情報と順次比較し、解析結果と一致するパターン情報の有無によって不正アクセスか否かを判定する。攻撃コードが含まれないと判定された場合、攻撃決定命令の次命令から解析を続け、攻撃コードが含まれると判定された場合、当該パケットに関する情報と攻撃コードのパターン情報を履歴記憶モジュールM3によってファイルに保存し、警告通知モジュールM4によって設定内容に従って通知処理を実行する。【選択図】      図４
2005182187.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して行われるアクセス要求を監視する監視ステップと、
前記アクセス要求を命令列として解析を行う解析ステップと、
前記解析の結果から前記アクセス要求が不正アクセスであるか否かを判定する判定ステップと、
前記アクセス要求が不正アクセスであると判定された場合に、当該アクセス要求への対処処置を実行する不正対処ステップとを具備することを特徴とする不正アクセス検知方法。
【請求項２】
前記監視ステップは、前記ネットワーク上を流れる全てのパケットを取り込み監視することを特徴とする請求項１記載の不正アクセス検知方法。
【請求項３】
前記解析ステップは、前記監視ステップで取り込まれたパケットのデータ部から攻撃決定命令の有無を解析することを特徴とする請求項２記載の不正アクセス検知方法。
【請求項４】
前記判定ステップは、前記解析ステップで攻撃決定命令の存在が確認された場合に、その解析結果と予め用意された攻撃コードの複数のパターン情報と比較することで攻撃コードの有無を判定し、攻撃コードが有った場合に不正アクセスであると判定することを特徴とする請求項３記載の不正アクセス検知方法。
【請求項５】
前記解析ステップで取り込まれたパケットのデータ部に含まれる命令を擬似的に実行し、その結果、アクセスエラーとなる場合に、データ部の最後となるまで解析開始位置を所定バイトずつ移動させて前記パケットのデータ部から命令を読み込むことを特徴とする請求項３記載の不正アクセス検知方法。
【請求項６】
前記解析ステップで取り込まれたパケットのデータ部に含まれる命令を擬似的に実行した時点で、その命令がループ命令か否かを判定し、ループ命令の場合には無限ループに陥るか監視し、監視の結果、無限ループとなる場合に警告処置を実行することを特徴とする請求項３記載の不正アクセス検知方法。
【請求項７】
前記不正対処ステップは、前記アクセス要求が不正アクセスであると判定された場合に、前記アクセス要求を棄却すること、前記アクセス要求の履歴情報を作成して記憶すること、前記アクセス要求の警告情報を管理者に通知することの少なくともいずれかを実行することを特徴とする請求項１記載の不正アクセス検知方法。
【請求項８】
コンピュータシステムにネットワークを通じて複数の端末からアクセス可能とするネットワークシステムに用いられ、
前記ネットワークを介して行われるアクセス要求を監視する監視モジュールと、
前記アクセス要求を命令列として解析を行う解析モジュールと、
前記解析の結果から前記アクセス要求が不正アクセスであるか否かを判定する判定モジュールと、
前記アクセス要求が不正アクセスであると判定された場合に、当該アクセス要求への対処処置を実行する不正対処モジュールとを具備することを特徴とする不正アクセス検知システム。
【請求項９】
前記監視モジュールは、前記ネットワーク上を流れる全てのパケットを取り込み監視することを特徴とする請求項８記載の不正アクセス検知システム。
【請求項１０】
前記解析モジュールは、前記監視モジュールで取り込まれたパケットのデータ部から攻撃決定命令の有無を解析することを特徴とする請求項９記載の不正アクセス検知システム。
【請求項１１】
前記判定モジュールは、前記解析モジュールで攻撃決定命令の存在が確認された場合に、その解析結果と予め用意された攻撃コードの複数のパターン情報と比較することで攻撃コードの有無を判定し、攻撃コードが有った場合に不正アクセスであると判定することを特徴とする請求項１０記載の不正アクセス検知システム。
【請求項１２】
前記解析モジュールで取り込まれたパケットのデータ部に含まれる命令を擬似的に実行し、その結果、アクセスエラーとなる場合に、データ部の最後となるまで解析開始位置を所定バイトずつ移動させて前記パケットのデータ部から命令を読み込むことを特徴とする請求項１０記載の不正アクセス検知システム。
【請求項１３】
前記解析モジュールで取り込まれたパケットのデータ部に含まれる命令を擬似的に実行した時点で、その命令がループ命令か否かを判定し、ループ命令の場合には無限ループに陥るか監視し、監視の結果、無限ループとなる場合に警告処置を実行することを特徴とする請求項１０記載の不正アクセス検知システム。
【請求項１４】
前記不正対処モジュールは、前記アクセス要求が不正アクセスであると判定された場合に、前記アクセス要求を棄却すること、前記アクセス要求の履歴情報を作成して記憶すること、前記アクセス要求の警告情報を管理者に通知することの少なくともいずれかを実行することを特徴とする請求項８記載の不正アクセス検知システム。
【請求項１５】
コンピュータシステムにネットワークを通じて複数の端末からアクセス可能とするネットワークシステムに用いられ、前記端末とコンピュータシステムとの間のネットワーク上に配置されるコンピュータ装置又は前記コンピュータシステム内に設けられるコンピュータ装置内のメモリに搭載され、前記コンピュータ装置で実行する不正アクセス検知プログラムであって、
前記ネットワークを介して行われるアクセス要求を監視する監視処理ステップと、
前記アクセス要求を命令列として解析を行う解析処理ステップと、
前記解析の結果から前記アクセス要求が不正アクセスであるか否かを判定する判定処理ステップと、
前記アクセス要求が不正アクセスであると判定された場合に、当該アクセス要求への対処処置を実行する不正対処処理ステップとを具備することを特徴とする不正アクセス検知プログラム。
【請求項１６】
前記監視処理ステップは、前記ネットワーク上を流れる全てのパケットを取り込み監視することを特徴とする請求項１５記載の不正アクセス検知プログラム。
【請求項１７】
前記解析処理ステップは、前記監視処理ステップで取り込まれたパケットのデータ部から攻撃決定命令の有無を解析することを特徴とする請求項１６記載の不正アクセス検知プログラム。
【請求項１８】
前記判定処理ステップは、前記解析処理ステップで攻撃決定命令の存在が確認された場合に、その解析結果と予め用意された攻撃コードの複数のパターン情報と比較することで攻撃コードの有無を判定し、攻撃コードが有った場合に不正アクセスであると判定することを特徴とする請求項１７記載の不正アクセス検知プログラム。
【請求項１９】
前記解析処理ステップで取り込まれたパケットのデータ部に含まれる命令を擬似的に実行し、その結果、アクセスエラーとなる場合に、データ部の最後となるまで解析開始位置を所定バイトずつ移動させて前記パケットのデータ部から命令を読み込むことを特徴とする請求項１７記載の不正アクセス検知プログラム。
【請求項２０】
前記解析処理ステップで取り込まれたパケットのデータ部に含まれる命令を擬似的に実行した時点で、その命令がループ命令か否かを判定し、ループ命令の場合には無限ループに陥るか監視し、監視の結果、無限ループとなる場合に警告処置を実行することを特徴とする請求項１７記載の不正アクセス検知プログラム。
【請求項２１】
前記不正対処処理ステップは、前記アクセス要求が不正アクセスであると判定された場合に、前記アクセス要求を棄却すること、前記アクセス要求の履歴情報を作成して記憶すること、前記アクセス要求の警告情報を管理者に通知することの少なくともいずれかを実行することを特徴とする請求項１５記載の不正アクセス検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信端末からネットワークを介してコンピュータシステムにアクセス可能とする通信ネットワークシステムにおいて、コンピュータシステムに対する不正アクセスを検知する不正アクセス検知方法、不正アクセス検知システム及び不正アクセス検知プログラムに関する。
【背景技術】
【０００２】
多数の通信端末がネットワークを介してコンピュータシステムにアクセス可能とする通信ネットワークシステムにおいて、ネットワーク上からコンピュータシステムヘ不正アクセスする「コンピュータシステム攻撃」は、一般にシステム設定の不備やセキュリティホールと呼ばれるシステムの弱点を攻撃するパケットを送出する（以降「攻撃パケット」と称する）ことで行われる。
【０００３】
このような攻撃の典型的なものとして、当該コンピュータシステムが予め想定しているサイズを超えた大量のデータをバッファに送り込んでバッファオーバーフローを起こし、送り込んだデータの中に任意の命令を実行させるための命令列（以降「攻撃コード」と称する）を含めておくことで、任意の命令を実行させて管理者権限を奪取したり、当該コンピュータシステムを破壊したりするというものがある。尚、バッファオーバーフローに関する攻撃については、非特許文献１に記されている。
【０００４】
バッファオーバーフローを起こすセキュリティホールは、予めセキュリティホールに対して作成される修正プログラムを適用することにより取り除くことができる。しかし、当該修正プログラムを適用する前に当該セキュリティホールに対する攻撃が行われる可能性がある。
【０００５】
従来、このような攻撃を発見・防御する方法として、ネットワークに侵入検知システム（ＩＤＳ）を接続し、このシステムにて攻撃の際にやり取りされる攻撃パケットの特徴パターンを記録しておき（以後「シグネチャ」と称する）、逐次ネットワーク上を流れるパケットを収集（以後「キャプチャ」と称する）して、収集した内容がシグネチャの特徴パターンと一致した場合に、不正アクセスが行われたとして発見・防御する方式（以後「シグネチャ方式」と称する）が用いられる。この方式を採用する既存のソフトウェアとしては、アメリカ合衆国Internet Security Systems, Inc社の「RealSecure」（同社の商標）などがある。上記侵入検知システム（ＩＤＳ）に関しては、非特許文献２に記されている。
【０００６】
また、「不正アクセス検知装置及び不正アクセス検知方法」に関する発明が特許文献１に開示されている。この文献で開示されている発明は、攻撃パターンとしてデータベースに存在しない未知の攻撃であっても、不正アクセスとして検知可能とする装置及び方法であり、互いに異なるプログラムで実現される通常サーバと侵入検知用サーバそれぞれにクライアントからのデータを与え、各サーバの応答データを比較して、両者に顕著な差異があるとき不正アクセスと判断するものである。
【非特許文献１】著者：三輪信雄／新井悠、株式会社ソフト・リサーチ・センター発行、「ネットワーク攻撃詳解／攻撃のメカニズムから理解するセキュリティ対策」ｐｐ１８０−ｐｐ２０２。
【非特許文献２】著者：武田圭史／磯崎宏、ソフトバンク・パブリッシング株式会社発行、「ネットワーク侵入検知／不正侵入の検出と対策」ｐｐ３３−ｐｐ１０８。
【特許文献１】特開２００３−０６７２６９号公報。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の不正アクセス検知に用いられる「シグネチャ方式」では、シグネチャとして記録する特徴パターンに、通常攻撃パケットの中で変更出来ない固定部分を使用するが、攻撃パケットの中に固定部分が存在しない場合は非固定部分を使用しなければならない。この場合、非固定部分は攻撃者によって幾通りにも変化させることが出来るため、有効なシグネチャとするためにはあらゆる種類のシグネチャを用意する必要があり、現実的ではない。また、シグネチャの一致を検知基準にしているため、たとえ正常なアクセスであったとしても不正アクセスとして誤検知してしまうという問題もある。
【０００８】
さらに、新しい手法による未知のパターンの不正アクセス方法が発見された場合には、特徴パターンのシグネチャの作成と登録の間に、新しい手法による不正アクセスが自由に行われる可能性が高く、攻撃者が攻撃対象のシステムの管理者に気付かずに不正アクセスの範囲が広がる可能性がある。
【０００９】
また、特許文献１に記載される発明の手法では、互いに異なるサーバプログラムを用意することに手間がかかること、攻撃が成功した後に検知することなどの問題がある。
【００１０】
本発明は上記の問題を解決し、ネットワークを介して行われる通信を監視して、不正アクセスによる攻撃を確実に検知することができ、これによって誤検知を防ぎつつ、未知のパターンを含めて不正アクセスを確実に防御することのできる不正アクセス検知方法、不正アクセス検知システム及び不正アクセス検知プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明は、以下の構成による不正アクセス検知方法、不正アクセス検知システム及び不正アクセス検知プログラムを提供する。
【００１２】
上記不正アクセス検知方法は、ネットワークを介して行われるアクセス要求を監視する監視ステップと、前記アクセス要求を命令列として解析を行う解析ステップと、前記解析の結果から前記アクセス要求が不正アクセスであるか否かを判定する判定ステップと、前記アクセス要求が不正アクセスであると判定された場合に、当該アクセス要求への対処処置を実行する不正対処ステップとを具備することを特徴とする。
【００１３】
上記不正アクセス検知システムは、コンピュータシステムにネットワークを通じて複数の端末からアクセス可能とするネットワークシステムに用いられ、前記ネットワークを介して行われるアクセス要求を監視する監視モジュールと、前記アクセス要求を命令列として解析を行う解析モジュールと、前記解析の結果から前記アクセス要求が不正アクセスであるか否かを判定する判定モジュールと、前記アクセス要求が不正アクセスであると判定された場合に、当該アクセス要求への対処処置を実行する不正対処モジュールとを具備することを特徴とする。
【００１４】
上記不正アクセス検知プログラムは、コンピュータシステムにネットワークを通じて複数の端末からアクセス可能とするネットワークシステムに用いられ、前記端末とコンピュータシステムとの間のネットワーク上に配置されるコンピュータ装置又は前記コンピュータシステム内に設けられるコンピュータ装置内のメモリに搭載され、前記コンピュータ装置で実行する不正アクセス検知プログラムであって、前記ネットワークを介して行われるアクセス要求を監視する監視処理ステップと、前記アクセス要求を命令列として解析を行う解析処理ステップと、前記解析の結果から前記アクセス要求が不正アクセスであるか否かを判定する判定処理ステップと、前記アクセス要求が不正アクセスであると判定された場合に、当該アクセス要求への対処処置を実行する不正対処処理ステップとを具備することを特徴とする。
【発明の効果】
【００１５】
本発明では、ネットワークを介して行われる通信を監視し、例えばネットワークを流れるパケット中のデータ部をマシン語の命令列として解析を行い、擬似的に実行させることで、当該パケットに含まれる攻撃コードを確実に検知することができ、シグネチャがまだ作成できていない未知のパターンの不正アクセス手法やシグネチャとして使用される攻撃コードの中に固定部分が存在しない場合であっても、不正アクセスが行われる恐れがあるとして正確に発見・防御することができる。
【００１６】
したがって、本発明によれば、ネットワークを介して行われる通信を監視し、不正アクセスによる攻撃を確実に検知することができ、これによって誤検知を防ぎつつ、未知のパターンを含めて不正アクセスを確実に防御することのできる不正アクセス検知方法、不正アクセス検知システム及び不正アクセス検知プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００１８】
（第１の実施形態）
図１は本発明が適用されるネットワークシステムの全体構成を示す概念図である。このネットワークシステムには、通信ネットワーク１１と内部ネットワーク１２が相互に通信可能な状態で接続されている。内部ネットワーク１２には、監視対象となるコンピュータシステム１３が接続されている。端末１４は、ここでは攻撃者が操作する不正アクセス発信源であるとする。また、内部ネットワーク１２には、コンピュータシステム１３ヘの不正アクセスを検知するために、本発明に係る不正アクセス検知システム１５が接続されている。
【００１９】
上記不正アクセス検知システム１５は、内部ネットワーク１２を流れるパケット中のデータ部をマシン語の命令列として解析を行うことにより、不正アクセスか否かの判定を行うものである。以下、不正アクセス検知システムについて詳述する。
【００２０】
図２は上記不正アクセス検知システム１５の構成を示すブロック図である。このシステム１５は、内部ネットワーク１２に接続されるネットワークインターフェース１５１、パケット中のデータ部にある既知の攻撃パターンを格納する攻撃パターンデータベース（ＤＢ）１５２、不正アクセス検知のための各種処理モジュールを格納するプログラムメモリ１５３、プログラムメモリ１５３内の各処理モジュールを総括的に制御するＣＰＵ１５４を備える。上記プログラムメモリ１５３に格納されるモジュールとしては、所定のプログラムコードを読み取って実行することにより形成される不正アクセス解析モジュールＭ１、不正アクセス判定モジュールＭ２、不正アクセス履歴記憶モジュールＭ３、不正アクセス警告通知モジュールＭ４がある。
【００２１】
上記ネットワークインターフェース１５１は、内部ネットワーク１２上を流れるパケットをキャプチャする機能を有する。
【００２２】
検知システム１５の主要部分である不正アクセス解析モジュールＭ１は、当該パケットの中から攻撃コードを発見するためのモジュールであり、ネットワークインターフェース１５１からキャプチャしたパケットを取り込んでヘッダ部を除いたデータ部をマシン語の命令列として擬似的に実行していく。
【００２３】
攻撃コードはコンピュータシステム１３に送られた後、当該コンピュータシステム１３の主記憶装置に保存され、当該コンピュータシステム１３のＣＰＵにて実行されることにより、不正な動作を行うものである。このため、攻撃コードによりコンピュータシステム１３内で行われる実行処理を、不正アクセス解析モジュールＭ１内で擬似的に実行し、擬似環境内のＣＰＵや主記憶装置の状態を監視することで、当該パケットに攻撃コードが含まれるか否かを判断することができる。そこで、不正アクセス解析モジュールＭ１では、攻撃コードの実行過程の最後に処理する命令（以後「攻撃決定命令」と称する）を監視して、この攻撃決定命令と当該攻撃決定命令を実行する際のＣＰＵのレジスタ状態を解析結果として出力する。
【００２４】
攻撃パターンデータベース１５２は、攻撃決定命令毎に当該攻撃決定命令を実行する際に不正な処理が行われるＣＰＵのレジスタ状態を攻撃情報として格納しておくデータベースである。当該データベース１５２には、例えば図３の例に示すように、攻撃情報毎に、実行される命令や攻撃の名称が登録される。
【００２５】
不正アクセス判定モジュールＭ２は、不正アクセス解析モジュールＭ１から攻撃決定命令を解析結果として渡され、この攻撃決定命令をキーとして攻撃パターンデータベース１５２を検索する。そして、不正な処理が行われるＣＰＵのレジスタ状態を取得し、不正アクセス解析モジュールＭ１で得られる解析結果中のレジスタ状態とを比較し、その比較結果に基づいて不正アクセスであるか否かを判定する。
【００２６】
不正アクセス履歴記憶モジュールＭ３は、不正アクセス判定モジュールＭ２が当該パケットを不正アクセスであると判定した場合、当該パケットに関する情報及び攻撃パターンデータベース１５２で合致した攻撃情報をファイルに保存する。
【００２７】
不正アクセス警告通知モジュールＭ４は、不正アクセス判定モジュールＭ２が不正アクセスであると判定した場合、予め登録しておいた設定に従って警告通知処理を行う。具体的には、管理画面上に警告文やパケットに含まれる攻撃コードを表示したり、管理者宛にメールを送信したり、携帯電話に通知したりする設定である。
【００２８】
不正アクセス検知システム１５におけるデータの全体の流れを図４に沿って説明する。
【００２９】
まず、ネットワークインターフェース１５１は、内部ネットワーク１２上を流れる全てのパケットをキャプチャして、取得したパケットを不正アクセス解析モジュールＭ１に渡す。不正アクセス解析モジュールＭ１は、受け取ったパケットを命令列として解析を行い、その結果、攻撃決定命令がなければ次のパケットの解析処理を行い、攻撃決定命令が存在するならば、不正アクセス判定モジュールＭ２に解析結果を渡す。
【００３０】
不正アクセス判定モジュールＭ２は、渡された解析結果について攻撃パターンデータベース１５２に格納されている攻撃コードのパターン情報と順次比較し、解析結果中に攻撃コードに対応するパターン情報の有無によって不正アクセスか否かを判定する。不正アクセス解析モジュールＭ１は、不正アクセス判定モジュールＭ２により攻撃コードが含まれないと判定された場合、攻撃決定命令の次の命令から解析を続け、不正アクセス判定モジュールＭ２により攻撃コードが含まれると判定された場合、当該パケットに関する情報と攻撃コードのパターン情報を不正アクセス履歴記憶モジュールＭ３及び不正アクセス警告通知モジュールＭ４に渡す。このとき、不正アクセス履歴記憶モジュールＭ３は、不正アクセス判定モジュールＭ２から渡された当該パケットに関する情報と攻撃コードのパターン情報をファイルに保存し、不正アクセス警告通知モジュールＭ４は、通知設定が登録されていればその内容に従って通知処理を実行する。
【００３１】
次に、不正アクセス解析モジュールＭ１及び不正アクセス履歴記憶モジュールＭ３、不正アクセス警告通知モジュールＭ４について、さらに詳細に説明する。
【００３２】
図５は不正アクセス解析モジュールＭ１の構成図である。この不正アクセス解析モジュールＭ１は、擬似的にＣＰＵを模したＣＰＵシミュレータ（プログラムによって構成）Ｍ１１と、擬似的に主記憶装置を模した擬似主記憶装置Ｍ１２から構成される。ＣＰＵシミュレータＭ１１は、ＣＰＵのレジスタを模した擬似レジスタＭ１１１と、擬似主記憶装置Ｍ１２から命令を読み込む命令読込プログラムＭ１１２と、当該命令を実行する命令実行プログラムＭ１１４と、当該命令の実行結果として書き込みが行われる際に擬似レジスタＭ１１１や擬似主記憶装置Ｍ１２を変更する実行結果書込プログラムＭ１１５を備えている。また、ＣＰＵシミュレータＭ１１は、命令読込プログラムＭ１１２を監視し、攻撃決定命令が実行される前に検知するための命令監視プログラムＭ１１３も具備しており、命令監視プログラムＭ１１３は、攻撃決定命令が命令読込プログラムＭ１１２で読み込まれたかどうかを常に監視している。
【００３３】
図６に攻撃コード内容の具体例を示す。広く使用されているインテル（Ｒ）製の３２ビットＣＰＵを用い、ＯＳにRed Hat Linuxを使用しているコンピュータシステム１３において、端末１４から１６進数表記でマシン語命令\xcd\x80という攻撃決定命令が呼ばれた場合、システムコール命令が呼び出される。このとき、eaxレジスタの値が１６進数表記で\xbである場合、execveというシステムコールが呼び出され、これにより任意の命令の実行が可能である。
【００３４】
図７は不正アクセス解析モジュールＭ１と不正アクセス判定モジュールＭ２の処理の流れを示すフローチャートである。
【００３５】
不正アクセス解析モジュールＭ１では、パケット解析の指示が出されると（ステップＳ１１）ネットワークインターフェース１５１から渡されたパケットのヘッダ部を除いたデータ部を擬似主記憶装置Ｍ１２に保存（コピー）する（ステップＳ１２）。次に、命令読込プログラムＭ１１２が擬似主記憶装置Ｍ１２に保存されたデータ部の先頭を読み込み（ステップＳ１３）、マシン語による命令を解析する（ステップＳ１４）。続いて、読み込まれた命令が命令監視プログラムＭ１１３の監視対象である攻撃決定命令か否かを判断し（ステップＳ１５）、攻撃決定命令でなければ、命令実行プログラムＭ１１４に擬似的に命令処理を実行させる（ステップＳ１６）。
【００３６】
この時点で、当該命令の実行結果として書き込みが行われる場合には、実行結果書込プログラムＭ１１５に処理を実行させ、擬似レジスタＭ１１１や擬似主記憶装置Ｍ１２に書き込む。そして、引き続き次の命令を読み込み、同様に解析を実行する。
【００３７】
また、不正アクセス解析モジュールＭ１では、上記の擬似的な命令の実行結果として、擬似主記憶装置Ｍ１２で予め無効と設定されているアドレス領域へのアクセスを行った場合にはエラーが発生する。そこで、擬似的命令処理（ステップＳ１６）の処理結果について逐次アクセスエラー発生の有無を判別し（ステップＳ１７）、エラーが発生しない場合には、ステップＳ１３の処理に移行して、次の命令を読み込む。また、エラーが発生した場合には、当該データ部の解析を終了して、次のパケットの解析を行う（ステップＳ１８）。
【００３８】
一方、ステップＳ１５で命令読込プログラムＭ１１２により読み込まれた命令が命令監視プログラムＭ１１３の監視対象である攻撃決定命令であると判定された場合には、攻撃パターンデータベース１５２に格納されている当該攻撃決定命令に関する攻撃パターン情報を取得して擬似レジスタＭ１１１の状態と比較し（ステップＳ１９）、その比較結果から攻撃コードの有無を判定し、不正アクセスか否かを判定する（ステップＳ２０）。不正アクセス解析モジュールＭ１では、そのパケットが不正アクセス判定モジュールＭ２により不正アクセスでないと判定した場合には、引き続き次の命令を読み込み、解析を実行する。また、そのパケットが不正アクセス判定モジュールＭ２により不正アクセスであると判定した場合には、攻撃コード検知処理を不正アクセス履歴記憶モジュールＭ３と不正アクセス警告検知モジュールＭ４で行う（ステップＳ２１）。
【００３９】
図８はパケットのデータ部に攻撃コードが含まれていると判定する場合の処理の流れを示す一例である。
【００４０】
不正アクセス解析モジュールＭ１は、パケットのデータ部に攻撃決定命令\xcd\x80が存在した場合、攻撃決定命令と擬似レジスタＭ１１１の状態（eaxレジスタの値が\xb）を不正アクセス判定モジュールＭ２に渡す。不正アクセス判定モジュールＭ２は、当該攻撃決定命令をキーとして攻撃パターンデータベース１５２から攻撃パターン情報を検索し、この検索によって取得された攻撃パターン情報を不正アクセス解析モジュールＭ１から受け取った値と比較する。比較した結果、一致している場合には攻撃コードであると判定し、攻撃コード検知処理に当該パケットに関する情報と攻撃パターン情報を渡す。
【００４１】
図９は攻撃コード検知処理の内容を示すフローチャートである。
【００４２】
図９において、攻撃コード検知処理は、不正アクセス履歴記憶モジュールＭ３及び不正アクセス警告通知モジュールＭ４によって実行される（ステップＳ３１）。不正アクセス履歴記憶モジュールＭ３は不正アクセス判定モジュールＭ２から渡されたパケットに関する情報及び攻撃パターンデータベース１５２で合致した攻撃パターン情報をファイルに保存する（ステップＳ３２）。当該パケットに関する情報には、攻撃パケット受信時刻、攻撃元ＩＰアドレスやポート番号、攻撃先ＩＰアドレスやポート番号、攻撃パケットのパケット長、データ部などの情報がある。また、攻撃パターン情報には、不正アクセス判定モジュールＭ２で比較した値に加えて、実行される命令や攻撃の名称も含まれる。
【００４３】
また、不正アクセス警告通知モジュールＭ４は、不正アクセス判定モジュールＭ２から渡された当該パケットに関する情報及び攻撃パターンデータベース１５２で合致した攻撃パターン情報を予め登録しておいた設定に従って警告通知処理を行う。例えばディスプレイ出力がオン設定されている場合には（ステップＳ３３）、ディスプレイに警告情報を表示する（ステップＳ３４）。また、メール通知がオン設定されている場合には（ステップＳ３５）、登録されているメールアドレス宛に情報を送信する（ステップＳ３６）。以上の警告通知処理の完了後、一連の処理実行を完了する（ステップＳ３７）。
【００４４】
不正アクセス解析モジュールＭ１は、プログラムとして実現することも可能であるが、本不正アクセス検知システムをコンピュータシステム１３上で実装する場合、当該コンピュータシステム１３上の実ＣＰＵ及び実主記憶装置を用いることでも実現可能である。この場合、図５の不正アクセス解析モジュールＭ１の構成で、ＣＰＵシミュレータＭ１１に含まれる命令読込プログラムＭ１１２、命令実行プログラムＭ１１４、実行結果書込プグラムＭ１１５を当該コンピュータシステム１３上の実ＣＰＵで行うことができ、また擬似主記憶装置Ｍ１１１を当該コンピュータシステム１３上の実主記憶装置で行うことができる。
【００４５】
命令監視プログラムＭ１１３は、実ＣＰＵ上で実行される命令を常に監視し、実行前に攻撃決定命令の検出が可能になるようにする。これによりＣＰＵシミュレータＭ１１を作成しなくても、不正アクセス解析モジュールＭ１にて正しく攻撃コードを検出可能になる。しかしながら、内部ネットワーク１２中の監視すべきコンピュータシステム１３のＣＰＵアーキテクチャと不正アクセス検知システム１５のＣＰＵアーキテクチャが完全に一致していなければならないという制約も存在する。
【００４６】
（第２の実施形態）
本発明の第２の実施形態を説明する。
【００４７】
第２の実施形態は、第１の実施形態において、不正アクセス解析モジュールＭ１でパケットのデータ部の解析を行う際、攻撃コードがデータ部のどこに存在しているかが分からないことを改善するためになされたもので、具体的には不正アクセス解析モジュールＭ１に解析開始位置を１バイトずつ移動する処理を加えている。
【００４８】
図１０は、図７に示した第１の実施形態における不正アクセス解析モジュールＭ１の処理フローに解析開始位置を１バイトずつ移動する処理を加えたフローチャートである。解析開始位置を１バイトずつ移動する処理以外の構成や処理については、第１の実施形態と同様のため、その説明を省略すると共に、図１０において図７と同一部分には同一符号を付して示す。
【００４９】
不正アクセス解析モジュールＭ１において、データ部の先頭から解析を行い、無効と設定されているアドレス領域にアクセスしようとしてエラーが発生した場合、データ部の先頭から１バイト移動した位置を開始位置とし、同様に解析を行う（ステップＳ４１）。この処理を解析開始位置がデータ部の最後になるまで行う（ステップＳ４２）。解析開始位置がデータ部の最後の位置から始まりアクセスエラーが発生するか、あるいは不正アクセス判定モジュールＭ２により不正アクセスであると判定された場合、このデータ部の解析を終了し、次のパケットの解析を行う。
【００５０】
（第３の実施形態）
本発明の第３の実施形態を説明する。
【００５１】
第１及び第２の実施形態において、不正アクセス解析モジュールＭ１でパケットのデータ部に従い命令処理を実行する際、ループ命令が含まれた命令列において、ループが終了する条件が常に満たされなければ無限ループとなるため、以後の解析が出来なくなる場合が存在する。
【００５２】
そこで、第３の実施形態では、不正アクセス解析モジュールＭ１において、ループ命令が実行される際、ループが終了する条件を満たす処理が含まれているかどうかを監視するための無限ループ監視プログラムを追加し、無限ループが発生する場合は、当該パケットの解析を強制的に終了させる機能を持たせる。
【００５３】
図１１は図５に示した不正アクセス解析モジュールＭ１に無限ループ監視プログラムＭ１３を追加した構成を示すブロック図である。また、図１２は、図１０に示した不正アクセス解析モジュールＭ１の処理フローに無限ループ監視プログラムの処理手順を加えたフローチャートである。ここでは無限ループ監視プログラムの処理手順について説明し、それ以外の構成や処理については第１及び第２の実施形態と同様のため、その説明を省略する。また、図１１において図５と同一部分には同一符号を付して示し、図１２において図１０と同一部分には同一符号を付して示す。
【００５４】
図１２において、ステップＳ１６の擬似的命令処理Ｓ１６で次に実行される命令がループ命令か否かを判定する（ステップＳ５１）。ここで実行命令がループ命令でないと判定された場合、無限ループ監視プログラムＭ１３の処理実行によりループの条件に関わる情報が記録される（ステップＳ５２）。また、ステップＳ５１でループ命令と判定された場合、このループ命令が二度目か否かを判定し（ステップＳ５３）、最初の場合には無限ループ監視プログラムＭ１３を初期化して無限ループの監視を開始し（ステップＳ５４）、ステップＳ１７のアクセスエラー判定処理に移行する。また、ステップＳ５３でループ命令が二度目と判定された場合には、記録された情報を用いて無限ループ監視処理を行った結果、このループが所定の条件を常に満たすか否かを判定し（ステップＳ５５）、満たす場合にはループ警告ファイルを作成して（ステップＳ５６）、次のパケットの解析を行う（ステップＳ１８）。満たさない場合には、ステップＳ１７のアクセスエラー判定処理に移行する。
【００５５】
すなわち、第３の実施形態では、不正アクセス解析モジュールＭ１において、無限ループ監視プログラムＭ１３が再度そのループ命令を実行するまでの間に存在する命令列を監視する。再度そのループ命令を実行する際、監視した命令列の実行によりループが終了する条件が常に満たされる場合は、無限ループであると判断し、そのデータ部の解析を終了する。また、監視した命令列の実行によりループが終了する条件が常に満たされない場合は、ループ処理を続行する。無限ループ監視プログラムＭ１３で無限ループであると判断した場合は、そのパケットをループ警告ファイルに保存し、解析を終了して次のパケットを解析する。
【００５６】
（第４の実施形態）
本発明の第４の実施形態を説明する。
【００５７】
図１３は、本発明の第４の実施形態に係るネットワークシステムの全体構成を示す概念図、図１４は第４の実施形態の特徴とする不正アクセス検知システムの構成を示すブロック図である。尚、図１３、図１４において、図１、図２と同一部分には同一符号を付して示し、ここでは重複する説明を省略する。
【００５８】
第４の実施形態では、図１３に示すように、不正アクセス検知システム１５′を通信ネットワーク１１と内部ネットワーク１２との間に介在させ、それぞれのネットワーク相互の接続通信を監視するようにしている。
【００５９】
上記不正アクセス検知システム１５′は、図１４に示すように、通信ネットワーク１１と接続される第１のネットワークインターフェース１５１Ａと内部ネットワーク１２と接続される第２のネットワークインターフェース１５１Ｂを備える。これらのネットワークインターフェース１５１Ａ，１５１Ｂは、いずれもパケットを送受信する機能を有するものである。すなわち、第１のネットワークインターフェース１５１Ａは通信ネットワーク１１と不正アクセス検知システム１５′間の通信パケットの送受信処理を行う。第２のネットワークインターフェース１５１Ｂは不正アクセス検知システム１５′と内部ネットワーク１２との間の通信パケットの送受信処理を行うものである。また、このシステム１５′は、プログラムメモリ１５３内に不正アクセス破棄モジュールＭ５を搭載するようにしている。
【００６０】
上記不正アクセス検知システム１５′におけるデータの全体の流れを図１５に沿って説明する。尚、図１５において、図４と同一部分には同一符号を付して示す。
【００６１】
通信ネットワークから流れてくる全てのパケットを第１のネットワークインターフェース１５１Ａから受信する。受信したパケットを不正アクセス解析モジュールＭ１に渡す。不正アクセス解析モジュールＭ１は、受け取ったパケットをマシン語の命令列として解析を行う。解析を行った結果、攻撃決定命令がなければ、次のパケットの解析処理を行う。攻撃決定命令が存在する場合には、不正アクセス判定モジュールＭ２に攻撃決定命令とレジスタの状態を解析結果として渡す。不正アクセス判定モジュールＭ２は攻撃パターンデータベース１５２に格納されている当該攻撃決定命令に関する攻撃パターン情報を取得し、渡された解析結果を比較して不正アクセスか否かを判定する。不正アクセス判定モジュールＭ２により攻撃コードが含まれないと判定された場合、攻撃決定命令の次の命令から解析を続け、パケットに対する解析が終了すれば、パケット破棄モジュールＭ５は第２のネットワークインターフェース１５１Ｂに第１のネットワークインターフェース１５１Ａで受信したパケットを渡し、この第２のネットワークインターフェース１５１Ｂから当該パケットを送出する。
【００６２】
不正アクセス判定モジュールＭ２により被解析パケットに攻撃コードが含まれると判定された場合、不正アクセス破棄モジュールＭ５が当該パケットを破棄し、不正アクセス履歴記憶モジュールＭ３及び不正アクセス警告通知モジュールＭ４が攻撃コード検知処理を行う。
【００６３】
図１６は、第１の実施形態で説明した図７の処理の流れを示すフローチャートにパケット送出処理を加えたものである。それ以外の部分については、図７に対する説明と同様のため省略し、図１６において図７と同一部分には同一符号を付して示す。
【００６４】
まず、不正アクセス解析モジュールＭ１により解析を行った結果を不正アクセス判定モジュールＭ２が不正アクセスではないと判定された場合、第１のネットワークインターフェース１５１Ａから受信されたパケットは第２のネットワークインターフェース１５１Ｂへ、第２のネットワークインターフェース１５１Ｂから受信されたパケットは第１のネットワークインターフェース１５１Ａへそれぞれ送出される（Ｓ６１）。
【００６５】
図１７は第１の実施形態の図９に示したフローチャートにパケット破棄を行うかどうかの分岐条件を付け加えた攻撃検知処理のフローチャート図である。この実施形態では、攻撃コード検知処理の実行に際し（ステップＳ３１）、まずパケットを破棄するか否かを判断し（ステップＳ７１）、破棄する必要がある場合にはパケットの破棄を実行して（ステップＳ７２）、ステップＳ３２のパケットに関する情報及び攻撃パターン情報をファイルに保存するようにしている。以後の処理については、図９に示した処理と同一であるので、ここでは同一部分に同一符号を付して示し、その説明を省略する。
【００６６】
尚、説明が重複するため図示及び詳述はしないが、第２及び第３の実施形態についても、上記第４の実施形態で説明した手順と同様の手順、すなわちパケット送出処理とパケット破棄処理を加えることができる。
【００６７】
以上の各実施形態から明らかなように、本発明では、固定部分が存在しない場合の攻撃に対してもパケットの中に攻撃コードが含まれていることを確実に検知することができ、その攻撃に対する防御することが可能になる。さらに攻撃コードが攻撃者によって隠蔽化されていても、擬似的に実行しながら解析を行うため、その攻撃コードを確実に検知し、防御することが可能である。
【００６８】
また、シグネチャ方式では、シグネチャが一致すれば、攻撃と見なして正常な通信を不正アクセスと誤検知してしまう場合があるが、本発明においては確実に攻撃コードを含んでいることが分かるため、誤検知を防ぐことができる。
【００６９】
未知のパターンの不正アクセス方法も、攻撃コードが含まれている攻撃パケットならば、擬似的に解析を行うことで検知し、防御することが可能である。
【図面の簡単な説明】
【００７０】
【図１】第１の実施形態として本発明が適用されるネットワークシステムの全体構成を示す概念図。
【図２】図１に示した不正アクセス検知システムの具体的な構成を示すブロック図。
【図３】図２に示す攻撃パターンデータベースの具体的な登録内容の例を示す図。
【図４】図１に示した不正アクセス検知システムにおけるデータの全体の流れを説明するためのシーケンス図。
【図５】図２に示した不正アクセス解析モジュールの構成を示すブロック図。
【図６】攻撃コード内容の具体例を示す図。
【図７】図２に示した不正アクセス解析モジュールと不正アクセス判定モジュールの処理の流れを示すフローチャート。
【図８】図７に示す処理で、パケットのデータ部に攻撃コードが含まれていると判定する場合の処理の流れを示す概念図。
【図９】図７に示す攻撃コード検知処理の内容を示すフローチャート。
【図１０】本発明の第２の実施形態における不正アクセス解析モジュールと不正アクセス判定モジュールの処理の流れを示すフローチャート。
【図１１】本発明の第３の実施形態における不正アクセス解析モジュールの構成を示すブロック図。
【図１２】上記第３の実施形態における不正アクセス解析モジュールの処理の流れを示すフローチャート。
【図１３】本発明の第４の実施形態に係るネットワークシステムの全体構成を示す概念図。
【図１４】第４の実施形態の特徴とする不正アクセス検知システムの構成を示すブロック図。
【図１５】第４の実施形態の不正アクセス検知システムにおけるデータの全体の流れを示すシーケンス図。
【図１６】第４の実施形態の不正アクセス解析モジュールと不正アクセス判定モジュールの処理の流れを示すフローチャート。
【図１７】第４の実施形態における攻撃コード検知処理の内容を示すフローチャート。
【符号の説明】
【００７１】
１１…通信ネットワーク、
１２…内部ネットワーク、
１３…コンピュータシステム、
１４…端末（不正アクセス発信源）、
１５，１５′…不正アクセス検知システム、１５１，１５１Ａ，１５１Ｂ…ネットワークインターフェース、１５２…攻撃パターンデータベース（ＤＢ）、１５３…プログラムメモリ、１５４…ＣＰＵ、
Ｍ１…不正アクセス解析モジュール、Ｍ１１…ＣＰＵシミュレータ、Ｍ１１１…擬似レジスタ、Ｍ１１２…命令読込プログラム、Ｍ１１３…命令監視プログラム、Ｍ１１４…命令実行プログラム、Ｍ１１５…実行結果書込プログラム、Ｍ１２…擬似主記憶装置、Ｍ１３…無限ループ監視プログラム、Ｍ２…不正アクセス判定モジュール、Ｍ３…不正アクセス履歴記憶モジュール、Ｍ４…不正アクセス警告通知モジュール、Ｍ５…不正アクセス破棄モジュール。
【図１】
2005182187.tif 000003
【図２】
2005182187.tif 000004
【図３】
2005182187.tif 000005
【図４】
2005182187.tif 000006
【図５】
2005182187.tif 000007
【図６】
2005182187.tif 000008
【図７】
2005182187.tif 000009
【図８】
2005182187.tif 000010
【図９】
2005182187.tif 000011
【図１０】
2005182187.tif 000012
【図１１】
2005182187.tif 000013
【図１２】
2005182187.tif 000014
【図１３】
2005182187.tif 000015
【図１４】
2005182187.tif 000016
【図１５】
2005182187.tif 000017
【図１６】
2005182187.tif 000018
【図１７】
2005182187.tif 000019