(57)【要約】【課題】システムの内部まで詳細に監視することを課題とする。【解決手段】この情報処理装置は、不正な攻撃や侵入を示す挙動を特定する挙動情報を記憶するルールＤＢを有する。そして、情報処理装置は、当該装置を示すコンピュータシステムで実行されるプロセスの内部のモジュール毎に、当該モジュールにより発生した各種情報を収集し、収集された各種情報に基づいて、不正な攻撃や侵入を示す挙動をモジュール毎に監視する。その一方で、情報処理装置は、収集された各種情報が、ルールＤＢに記憶される挙動情報と一致する場合に、不正な攻撃や侵入が発生したと検知する。【選択図】        図２
2010092174.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムに対する不正な攻撃や侵入を検知する不正検知方法であって、
前記コンピュータシステムで実行されるプロセスの内部のモジュール毎に、当該モジュールにより発生した各種情報を収集する情報収集工程と、
前記情報収集工程により収集された各種情報に基づいて、前記不正な攻撃や侵入を示す挙動を前記モジュール毎に監視する監視工程と、
を含んだことを特徴とする不正検知方法。
【請求項２】
前記情報収集工程により収集された各種情報が、前記不正な攻撃や侵入を示す挙動を特定する挙動情報を記憶する挙動情報記憶部に記憶される挙動情報と一致する場合に、前記不正な攻撃や侵入が発生したと検知する検知工程とをさらに備えたことを特徴とする請求項１に記載の不正検知方法。
【請求項３】
前記挙動情報記憶部は、前記挙動情報に対応付けて、前記不正な攻撃や侵入が発生した場合に実行する制御内容をさらに記憶するものであって、
前記検知工程により不正な攻撃や侵入が発生したと検知された場合に、当該検知された不正な攻撃や侵入と一致する挙動情報に対応する制御内容を前記挙動情報記憶部から特定し、特定した制御内容を実行する制御実施工程をさらに備えたことを特徴とする請求項２に記載の不正検知方法。
【請求項４】
前記情報収集工程と前記監視工程と前記制御実施工程とを実行するモニターを前記モジュール毎に、前記プロセス内部に挿入することを特徴とする請求項３に記載の不正検知方法。
【請求項５】
コンピュータシステムに対する不正な攻撃や侵入を検知する不正検知装置であって、
前記コンピュータシステムで実行されるプロセスの内部のモジュール毎に、当該モジュールにより発生した各種情報を収集する情報収集手段と、
前記情報収集手段により収集された各種情報に基づいて、前記不正な攻撃や侵入を示す挙動を前記モジュール毎に監視する監視手段と、
を備えたことを特徴とする不正検知装置。
【請求項６】
前記不正な攻撃や侵入を示す挙動を特定する挙動情報を記憶する挙動情報記憶手段と、
前記情報収集手段により収集された各種情報が、前記挙動情報記憶部に記憶される挙動情報と一致する場合に、前記不正な攻撃や侵入が発生したと検知する検知手段とをさらに備えたことを特徴とする請求項５に記載の不正検知装置。
【請求項７】
コンピュータシステムに対する不正な攻撃や侵入を検知することをコンピュータに実行する不正検知プログラムであって、
前記コンピュータシステムで実行されるプロセスの内部のモジュール毎に、当該モジュールにより発生した各種情報を収集する情報収集手順と、
前記情報収集手順により収集された各種情報に基づいて、前記不正な攻撃や侵入を示す挙動を前記モジュール毎に監視する監視手順と、
をコンピュータに実行させることを特徴とする不正検知プログラム。
【請求項８】
前記情報収集工程により収集された各種情報が、前記不正な攻撃や侵入を示す挙動を特定する挙動情報を記憶する挙動情報記憶部に記憶される挙動情報と一致する場合に、前記不正な攻撃や侵入が発生したと検知する検知工程とをさらに備えたことを特徴とする請求項７に記載の不正検知プログラム。
【請求項９】
コンピュータシステムに対する不正な攻撃や侵入を検知する情報処理システムであって、
前記コンピュータシステムで実行されるプロセスの内部のモジュール毎に、当該モジュールにより発生した各種情報を収集する情報収集手段と、
前記情報収集手段により収集された各種情報に基づいて、前記不正な攻撃や侵入を示す挙動を前記モジュール毎に監視する監視手段と、
を備えたことを特徴とする情報処理システム。
【請求項１０】
前記不正な攻撃や侵入を示す挙動を特定する挙動情報を記憶する挙動情報記憶手段と、
前記情報収集手段により収集された各種情報が、前記挙動情報記憶部に記憶される挙動情報と一致する場合に、前記不正な攻撃や侵入が発生したと検知する検知手段とをさらに備えたことを特徴とする請求項９に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータシステムに対する不正な攻撃や侵入を検知する不正検知方法、不正検知装置、不正検知プログラムおよび情報処理システムに関する。
【背景技術】
【０００２】
従来より、コンピュータシステムの脆弱性などのセキュリティホールを攻撃して侵入する不正プログラム（ウイルス、ワームなどのマルウェア）が個人・企業を問わず社会的に重要な問題となっている。
【０００３】
この不正プログラムは、コンピュータの制御を奪い、コンピュータに格納されているデータの破壊や外部への不正なデータ送信および侵入したコンピュータを利用して新たに第三者に対する攻撃活動を行う。例えば、コンピュータシステムで実行されるプロセスの内部では、複数のモジュールが動作しており、このモジュールに脆弱性が存在する場合に該当のモジュールを狙った攻撃と侵入が行われる。
【０００４】
このような不正プログラムに対して、システム内部の挙動を監視することで攻撃および侵入を検知する方法としてＨＩＤＳ（Host  Based  Intrusion  Detection  System）があり、プロセス単位での挙動監視による様々な検知手法が提案されている。また、別の手法としては、許可されないファイル入出力イベントやプロセス生成イベントの監視によるアクセスコントロールの検知を行う手法も提案されているが、ファイル入出力やプロセス生成イベントを伴わない攻撃や侵入を検知できない。
【０００５】
最近では、システム内のシステムコールやＡＰＩ（Application  Programming  Interface）の読み出し回数などの統計情報、関数のコールシーケンスを利用する検知手法が提案されている（非特許文献１と２参照）。具体的には、図１０に示すように、一つのプロセスは、複数のＡＰＩを実行し、それぞれのＡＰＩは、複数のSystem  Callを実行する。この場合、非特許文献１や２では、図１１に示すように、プロセスとＡＰＩとの間にＡＰＩモニターを実行し、ＡＰＩとシステムコール（System  Call）との間にシステムコールモニターを実行して、これらのモニターにより攻撃や侵入を検知している。
【０００６】
また、インターネットの普及によって広く一般的に使用されるようになったWebブラウザに特化した攻撃や侵入を検知する手法としては、ＧＰＬ（GNU  Public  License）でも配布されているsnortのようなシグネチャベースによる検知をブラウザレベルで実現し、攻撃コードの含まれたコンテンツからブラウザを保護する技術が提案されている（非特許文献３参照）。
【０００７】
【非特許文献１】“Intrusion  detection  using  sequences  of  system  calls”、Journal  of  Computer  Security  1998、［online］、［平成２０年９月２２日検索］、インターネット＜http://www.cs.unm.edu/~steveah/jcs-accepted.pdf＞
【非特許文献２】“Native  API  Based  Windows（登録商標）  Anomaly  Intrusion  Detection  Method  Using  SVM”、IEEE  International  Conference  on  Sensor  Networks，Ubiquitous，and  Trustworthy  Computing  2006、［online］、［平成２０年９月２２日検索］、インターネット＜http://ieeexplore.ieee.org/iel5/10902/34301/01636219.pdf?tp=&isnumber=&arnumber=1636219＞
【非特許文献３】“Firekeeper”、［online］、［平成２０年９月２２日検索］、インターネット＜http://firekeeper.mozdev.org＞
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記した従来の技術は、システムの内部まで詳細に監視することができないという課題があった。具体的には、非特許文献１や２では、システムで実行されるプロセス毎のＡＰＩやシステムコール呼び出しの挙動を監視しているため、ローカル関数の呼び出しやローカル変数などのプロセスの内部状態の挙動を監視することができない。
【０００９】
すなわち、非特許文献１や２で実現されているＡＰＩやシステムコール呼び出しなどの挙動監視では、同一プロセス内部の複数のモジュールからのＡＰＩやシステムコール呼び出しが混同することによって、異常（不正）検知の精度が低下する。同様に、非特許文献３では、Webブラウザ毎の挙動を監視しているため、Webブラウザ内部の各種スクリプト実行環境の挙動を監視することができない。
【００１０】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、システムの内部まで詳細に監視することを可能とする不正検知方法、不正検知装置、不正検知プログラムおよび情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、本発明は、コンピュータシステムに対する不正な攻撃や侵入を検知する不正検知方法であって、前記コンピュータシステムで実行されるプロセスの内部のモジュール毎に、当該モジュールにより発生した各種情報を収集する情報収集工程と、前記情報収集工程により収集された各種情報に基づいて、前記不正な攻撃や侵入を示す挙動を前記モジュール毎に監視する監視工程と、を含んだことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、システムの内部まで詳細に監視することが可能である。さらには、不正な攻撃や侵入を実行する不正プログラムを素早く正確に検知することができる。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、この発明に係る不正検知方法、不正検知装置、不正検知プログラムおよび情報処理システムの実施例を詳細に説明する。なお、以下では、本実施例に係る情報処理装置（情報処理システム）の概要、情報処理装置の構成および処理の流れを順に説明し、最後に本実施例に対する種々の変形例を説明する。
【実施例１】
【００１４】
［情報処理装置の概要］
まず、図１を用いて、情報処理装置（情報処理システム）の概要を説明する。図１は、実施例１に係る情報処理装置の概要を説明するための図である。なお、ここで示した情報処理装置とは、本願が開示する特許請求の範囲に記載の「不正検知方法」を実行している装置のことである。
【００１５】
本願が開示する情報処理装置とは、プログラムに従って演算処理を実行するコンピュータシステムであり、例えば、Webサーバ、コンテンツサーバ、DNSサーバなどユーザにサービスを提供するサーバ装置をはじめ、個人的に使用されるパーソナルコンピュータシステム、ルータやL3スイッチなどのネットワーク機器などの装置である。
【００１６】
上記した情報処理装置は、インターネットの普及により見知らす第三者装置と情報のやり取りを行う機会が非常に増えた結果、悪意のある第三者と情報をやり取りする機会も増えた。このような悪意のある第三者により不正なプログラムが実行された情報処理装置は、当該装置が不正な処理を実行するだけでなく、当該装置が接続されるLAN（例えば、社内LANや家庭内LANなど）の他の装置や当該装置を踏み台にした新たな不正行為が実行されるなど、様々な問題が発生する。このような問題は、単に個人的な問題に留まらず、社会的に大きな問題（犯罪）へと繋がっており、非常に大きな問題となっている。このようなことから、各種サーバなどの情報処理装置を抱える企業などでは、不正な攻撃や侵入を実行する不正プログラムを素早く正確に検知する手法が切望されている。
【００１７】
なお、不正な攻撃とは、コンピュータシステムに対して、本来それが実行しようとする処理とは異なる意図しない動作を実行させようとすることを示し、侵入とは、攻撃によって本来意図しない動作をさせることによってシステムの一部もしくは全部の制御を奪うことを示す。
【００１８】
そこで、実施例１に係る情報処理装置は、上記したように、プログラムに従って演算処理を実行する装置であり、システムの内部まで詳細に監視することを可能とし、さらには、不正な攻撃や侵入を実行する不正プログラムを素早く正確に検知することができる。
【００１９】
具体的には、図１に示すように、実施例１に係る情報処理装置は、コンピュータシステムで実行されるプロセスの内部のモジュール毎に、モニター（例えば、監視プログラム）を挿入する。そして、情報処理装置は、このモニターによって、当該モジュールにより発生した各種情報を収集し、不正な攻撃や侵入を示す挙動をモジュール毎に監視する。さらに、実施例１に係る情報処理装置は、モニターにより収集された各種情報に基づいて、不正な攻撃や侵入の発生を検知する。
【００２０】
このようにすることで、実施例１に係る情報処理装置は、「プロセスＡのモジュールＡがシステムコール１を呼び出し、モジュールＢがシステムコール２とシステムコール３を呼び出した」というシステム内部に関する詳細な情報を取得することができる。したがって、実施例１に係る情報処理装置は、コンピュータシステムで実行されるプロセスの内部のモジュール毎に、モジュールにより発生した各種情報を収集することにより、システムの内部まで詳細に監視することを可能とし、さらには、不正な攻撃や侵入を実行する不正プログラムを素早く正確に検知することができる。
【００２１】
［情報処理装置の構成］
次に、図２を用いて、図１に示した情報処理装置の構成を説明する。図２は、実施例１に係る情報処理装置の構成を示すブロック図である。図２に示すように、この情報処理装置１は、ＯＳ（Operating  System）などの制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、実行される複数のプロセス（プロセス１０、プロセス２０・・・）と、記憶部３０と、検知部３３とを有する。なお、プロセス１０とプロセス２０とは、基本的な構成が同じであるので、ここではプロセス１０についてのみ説明する。
【００２２】
かかるプロセス１０は、その内部に複数のモジュール（モジュールＡ１１ａ、モジュールＢ１１ｂ・・・）と、モジュールごとにモニター（モニター１５ａ、モニター１５ｂ・・・）とを有し、情報処理装置１が実行する処理である。なお、図示したモジュールやモニターは例示であり、図示した数に限定されるものではなく、また、プロセスごとに数も異なる。
【００２３】
モジュールＡ１１ａとモジュールＢ１１ｂは、プログラム実行時にプロセス１０の空間内にロードされるプログラム部品であり、例えば、ＤＬＬ（Dynamic  Link  Library）などがこれに該当する。また、モジュールＡ１１ａとモジュールＢ１１ｂは、プロセス１０の指示により、ＡＰＩを呼び出して実行したり、ＡＰＩは、システムコールを呼び出して実行したりする。
【００２４】
モニター１５ａは、モジュールに埋め込まれた（挿入された）挙動監視を行うプログラムであり、図３に示すように、監視部１６と、制御部１７とを内部に有する。なお、モニター１５ｂもモニター１５ａと同様の構成を有するので、ここでは詳細な説明は省略する。なお、図３は、モニターの内部構成を例示した図である。
【００２５】
監視部１６は、コンピュータシステムで実行されるプロセスの内部のモジュール毎に、当該モジュールにより発生した各種情報を収集し、収集した各種情報に基づいて、不正な攻撃や侵入を示す挙動をモジュール毎に監視する。具体的には、監視部１６は、情報処理装置１で実行されたプロセス１０のモジュールＡ１１ａにより発生した情報として、プロセス１０のＡＰＩ呼び出しやシステムコール呼び出しを収集して、後述する蓄積ＤＢ３１に格納する。そして、監視部１６は、蓄積ＤＢ３１に蓄積される情報に基づいて、モジュールＡ１１ａが動作したときに発生する事象及びＣＰＵやメモリの状態変化を監視する。
【００２６】
情報処理装置１で実行されたプロセス１０のモジュールＡ１１ａにより発生した情報として、例えば、監視部１６は、モジュールの種類、呼び出された関数の種類、引数の値、読み出し元アドレス、タイムスタンプなどを取得して、取得したこれらの情報とこれらの情報を出力したプロセス及びモジュールとを対応付けて、蓄積ＤＢ３１に格納する。
【００２７】
制御部１７は、後述する検知部３３により不正な攻撃や侵入が発生したと検知された場合に、当該検知された不正な攻撃や侵入と一致する挙動情報に対応する制御内容をルールＤＢ３２から特定し、特定した制御内容を実行する。具体的には、制御部１７は、ルールＤＢ３２から特定された制御内容が「遮断制御」の場合には、検知部３３により不正が検知されたモジュールまたはプロセスの動作を停止させる。
【００２８】
また、制御部１７は、ルールＤＢ３２から特定された制御内容が「ログ出力」の場合には、所定の領域（例えば、/tempや一時領域など）に実行されるモジュールや関数などのログを出力する。また、制御部１７は、ルールＤＢ３２から特定された制御内容が「管理者に通知（XXX@AAA.com）」の場合には、メーラーを起動してメールアドレス（XXX@AAA.com）に対して、モジュールまたはプロセスに不正な攻撃や侵入があったことを通知する。なお、ここで管理者に通知する情報としては、検知部３３により不正が検知されたモジュールまたはプロセスなどを通知する。
【００２９】
図２に戻り、記憶部３０は、ネットワーク通信を行うためのアドレス情報やルーティング情報、各種処理に必要なデータおよびプログラムを格納するとともに、蓄積ＤＢ３１と、ルールＤＢ３２とを有する。
【００３０】
蓄積ＤＢ３１は、モニター１５ａやモニター１５ｂの各監視部によりモジュール毎に収集された情報を記憶する。具体的には、蓄積ＤＢ３１は、図４に示すように、各監視部により収集された情報の収集元（発信元）を示す「プロセス」と「モジュール」とに対応付けて、収集された内容を示す「情報」を記憶する。例えば、蓄積ＤＢ３１は、「プロセス、モジュール、情報」として「プロセス１０、モジュールＡ、呼び出された関数名（関数Ａ）」や「プロセス２０、モジュールＢ、呼び出された関数名（関数Ｚ）と引数（ＺＺ）」などを記憶する。
【００３１】
なお、図４は、蓄積ＤＢに記憶される情報の例を示す図である。また、図４では、「プロセス」や「モジュール」に対応付けて記憶することにより、一つのテーブルで収集される情報を管理しているが、各プロセスや各モジュールごとに異なるテーブルを設けて記憶するようにしてもよい。
【００３２】
ルールＤＢ３２は、不正な攻撃や侵入を示す挙動を特定する挙動情報と不正な攻撃や侵入が発生した場合に実行する制御内容を記憶する。言い換えれば、ルールＤＢ３２は、正常状態では呼び出されるはずのないＡＰＩやシステムコールの種類を予め定義した情報を記憶する。具体的には、ルールＤＢ３２は、図５に示すように、「プロセス」と「モジュール」とに対応付けて、不正な攻撃や侵入を示す挙動を特定する「挙動情報」、不正な攻撃や侵入が発生した場合に実行する「制御内容」を記憶する。
【００３３】
例えば、ルールＤＢ３２は、「プロセス、モジュール、挙動情報、制御内容」として「プロセス１０、モジュールＡ、呼び出された関数名（関数Ｂ）、遮断制御」や「プロセス２０、モジュールＸ、呼び出された関数名（関数Ｚ）と引数（ＺＺ）、ログ出力」、「プロセス１０、モジュールＢ、関数Ｂの後に関数ＺＺが実行、遮断制御・ログ出力」などを記憶する。
【００３４】
このルールＤＢ３２は、単に特定の関数が呼び出されたか、関数の引数が間違っていないかなどの情報以外にも、例えば、「関数Ａの後に関数Ｂが呼び出される」などのように、関数の呼び出し列（コールシーケンス）を記憶することもできる。また、ルールＤＢ３２は、文字列情報、文字列や文字列長の累積値などの閾値を挙動情報として記憶することもでき、そうすることにより、文字列の動的確保を行うスクリプト実行環境の関数を監視することで、不正な処理を検知することができる。
【００３５】
さらに、ルールＤＢ３２は、制御内容として上記した情報以外にも、例えば、「管理者（XXX@AAA.com）へ通知」などを記憶しておくこともでき、この場合、制御部１７は、メーラーを起動してメールアドレス（XXX@AAA.com）に対して、モジュールまたはプロセスに不正な攻撃や侵入があったことを通知する。また、ルールＤＢ３２は、一つの挙動情報に複数の制御内容（例えば、遮断制御とログ出力など）を対応付けて記憶することもできる。
【００３６】
なお、図５は、ルールＤＢに記憶される情報の例を示す図である。また、図５では、一つのテーブルで収集される情報を管理しているが、各プロセスや各モジュールごとに異なるテーブルを設けて記憶するようにしてもよい。
【００３７】
検知部３３は、監視部１６により収集された各種情報が、不正な攻撃や侵入を示す挙動を特定する挙動情報を記憶するルールＤＢ３２に記憶される挙動情報と一致する場合に、不正な攻撃や侵入が発生したと検知する。具体的には、検知部３３は、蓄積ＤＢ３１に記憶される各レコードとルールＤＢ３２の各レコードを参照して、蓄積ＤＢ３１に記憶される情報がルールＤＢ３２にも記憶されている場合に、不正な攻撃や侵入が発生したと検知する。
【００３８】
図４及び図５を参照しつつ説明すると、図４の蓄積ＤＢ３１に記憶される「プロセス１０、モジュールＡ、呼び出された関数名（関数Ａ）」は、図５のルールＤＢ３２に記憶されていないことから、検知部３３は、この情報に関しては、正常な状態であると認識する。また、図４の蓄積ＤＢ３１に記憶される「プロセス２０、モジュールＢ、呼び出された関数名（関数Ｚ）と引数（ＺＺ）」は、図５のルールＤＢ３２に同じ内容（図５の３行目）が記憶されていることから、検知部３３は、不正な攻撃や侵入が発生したと検知する。
【００３９】
不正な攻撃や侵入が発生したと検知した検知部３３は、検知した不正な内容「プロセス２０、モジュールＢ、呼び出された関数名（関数Ｚ）と引数（ＺＺ）」を制御部１７に出力する。これを受けた制御部１７は、受け付けた情報に基づいて、制御内容（上記した例では「管理者（XXX@AAA.com）に通知」）を特定し、特定した制御内容を実行する。
【００４０】
［情報処理装置による処理］
次に、図６を用いて、情報処理装置による処理を説明する。図６は、実施例１に係る情報処理装置における処理の流れを示すフローチャートである。
【００４１】
図６に示すように、情報処理装置１は、プロセス内部のモジュールが実行される（ステップＳ１０１肯定）、実行されたモジュールに組み込まれたモニターにより、モジュール毎に各種情報を取得して蓄積ＤＢ３１に蓄積格納する（ステップＳ１０２）。
【００４２】
続いて、情報処理装置１は、ステップＳ１０２により蓄積ＤＢ３１に蓄積された情報とルールＤＢ３２に記憶される挙動情報とを比較し（ステップＳ１０３）、挙動情報と一致するか否かを判定する（ステップＳ１０４）。
【００４３】
そして、情報処理装置１は、蓄積された情報と挙動情報と一致する場合（ステップＳ１０４肯定）、当該挙動情報に対応する制御情報をルールＤＢ３２から特定し（ステップＳ１０５）、特定した制御情報を実行する（ステップＳ１０６）。
【００４４】
一方、蓄積された情報と挙動情報と一致しない場合（ステップＳ１０４否定）、情報処理装置１は、処理を終了する。なお、上記したステップＳ１０１〜ステップＳ１０６の処理は、起動されたモジュールが終了するまで繰り返し実行される。また、繰り返すタイミングとしては、所定の周期（例えば、５分ごと）や新しい情報が収集・蓄積される度ごとなど任意に設定することができる。
【００４５】
［実施例１による効果］
このように、実施例１によれば、コンピュータシステムで実行されるプロセスの内部のモジュール毎に、当該モジュールにより発生した各種情報を収集し、収集された各種情報に基づいて、不正な攻撃や侵入を示す挙動をモジュール毎に監視することができる。その結果、システムの内部まで詳細に監視することが可能である。
【００４６】
また、実施例１によれば、収集された各種情報が、不正な攻撃や侵入を示す挙動を特定する挙動情報を記憶するルールＤＢ３２に記憶される挙動情報と一致する場合に、不正な攻撃や侵入が発生したと検知することができる。その結果、不正な攻撃や侵入を素早く正確に検知することができる。
【００４７】
また、実施例１によれば、不正な攻撃や侵入が発生したと検知された場合に、当該検知された不正な攻撃や侵入と一致する挙動情報に対応する制御内容をルールＤＢ３２から特定し、特定した制御内容を実行することができる。その結果、適切な対応を迅速に行うことができる結果、不正な処理による第２次被害を防止することができる。
【実施例２】
【００４８】
ところで、本実施例で開示する情報処理装置は、Webブラウザを標的とした攻撃及び侵入についても同様の効果を発揮することができる。そこで、実施例２では、情報処理装置１を用いて、Webブラウザを標的とした攻撃及び侵入を検知する場合について説明する。
【００４９】
［情報処理装置の概要（実施例２）］
Webブラウザを標的とした攻撃及び侵入は、Webブラウザのスクリプト実行環境を悪用した手法と組み合わせて行われる。これに対して、スクリプト実行環境の一部もしくは全部に制約を掛ける設定がWebブラウザ自身に備わっているが、Webブラウジングの利便性を著しく低下させる要因になっている。
【００５０】
このようなWebブラウザを標的とした攻撃に対して、本願が開示する情報処理装置は、Webブラウザ内部のjava（登録商標）scriptやVBScriptなどのスクリプト実行環境の挙動を監視することで、攻撃と侵入を検知する。つまり、実施例２に係る情報処理装置は、スクリプト実行環境の挙動の監視と挙動情報を抽出するために、スクリプト実行環境からのＡＰＩやシステムコールもしくはローカル関数の呼び出しを監視する。なお、「ローカル関数の呼び出しを監視する」とは、EIP（命令ポインタ）が特定の関数の先頭アドレスを指した場合、その関数が呼び出されたと判断することを示す。
【００５１】
そうすることにより、実施例２に係る情報処理装置は、例えば、何らかの脆弱性を突く攻撃と組み合わせてスクリプト実行環境を悪用する「ヒープレイアウト操作」や、脆弱性を突いた攻撃ではなく、スクリプト言語の仕様に基づいて悪意のある動作をする「スクリプトマルウェア（java（登録商標）script  Malware）」などのWebブラウザを標的とした攻撃及び侵入を検知することができる。
【００５２】
なお、スクリプト実行環境とは、スクリプト言語を処理するモジュールのことであり、例えば、「jscript.dll（java（登録商標）script）」や「vbscript.dll（VBscriptを処理するモジュール）」などが該当する。また、「ヒープレイアウト操作」とは、上記したように、何らかの脆弱性を突く攻撃と組み合わせてスクリプト実行環境を悪用するものであり、例えば、「HeapSpray」という手法が存在する。具体的には、これらの手法は、予めスクリプト実行環境からメモリのヒープレイアウを操作し、脆弱性を突いた後、EIP（命令ポインタ）を操作したメモリ上の場所に移動させ任意の命令を実行させることに利用される。これによって、攻撃の安定性が向上するため、頻繁にこのような組み合わせで実行される。
【００５３】
また、「スクリプトマルウェア」とは、上記したように、脆弱性を突いた攻撃ではなく、スクリプト言語の仕様に基づいて悪意のある動作をするものであるが、例えば、「java（登録商標）scriptポートスキャン」などが存在する。この「java（登録商標）scriptポートスキャン」は、java（登録商標）scriptを実行するとポートスキャンを実行するもので、インターネット側から読み込んだjava（登録商標）scriptがイントラネット側のネットワークに対してポートスキャンを行う。この攻撃によって、イントラネット側のホスト（各種サーバ）の生存状況を外部に把握されてしまう。
【００５４】
実施例２に係る情報処理装置は、上記した「ヒープレイアウト操作」や「スクリプトマルウェア」などのWebブラウザを標的とした攻撃及び侵入を検知することができる。
【００５５】
［情報処理装置の構成］
次に、図７を用いて、実施例２に係る情報処理装置の構成を説明する。図７は、実施例２に係る情報処理装置の構成を示すブロック図である。図７に示すように、この情報処理装置１は、ＯＳ（Operating  System）などの制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有するとともに、実行される複数のWebブラウザ（Webブラウザ５０、Webブラウザ６０・・・）と、記憶部７０と、検知部７３とを有する。なお、Webブラウザ５０とWebブラウザ６０とは、基本的な構成が同じであるので、ここではWebブラウザ５０についてのみ説明する。
【００５６】
かかるWebブラウザ５０は、その内部に複数のスクリプト（スクリプトＡ５１ａ、スクリプトＢ５１ｂ・・・）と、スクリプトごとにモニター（モニター５５ａ、モニター５５ｂ・・・）とを有する。なお、図示したスクリプトやモニターは例示であり、図示した数に限定されるものではなく、また、スクリプトごとに数も異なる。
【００５７】
スクリプトＡ５１ａとスクリプトＢ５１ｂは、Webブラウザ５０により実行されるスクリプト環境であり、例えば、jscript.dllやvbscript.dllなどがこれに該当する。モニター５５ａは、モジュールに埋め込まれた（挿入された）挙動監視を行うプログラムであり、実施例１と同様、監視部５６と、制御部５７とを内部に有する。なお、モニター５５ｂもモニター５５ａと同様の構成を有するので、ここでは詳細な説明は省略する。
【００５８】
監視部５６は、コンピュータシステムで実行されるWebブラウザの内部のスクリプト毎に、当該スクリプトにより発生した各種情報を収集し、収集した各種情報に基づいて、不正な攻撃や侵入を示す挙動をスクリプト毎に監視する。具体的には、監視部５６は、情報処理装置１で実行されたWebブラウザ５０のスクリプトＡ５１ａにより発生した情報として、「ページフレームのＵＲＬ、呼び出された関数名、引数情報、タイムスタンプ」などを収集して、後述する蓄積ＤＢ３１に格納する。そして、監視部５６は、蓄積ＤＢ７１に蓄積される情報に基づいて、スクリプトＡ５１ａが動作したときに発生する事象を監視する。
【００５９】
これにより、ページフレームごとの情報取得、呼び出された関数とその引数の値、タイムスタンプでソート（蓄積ＤＢ７１に記憶される情報をソート）することによって、呼び出された関数のコールシーケンスなどを得ることが可能である。また、例えば、「HeapSpray」などのように確保されている文字列の累積と閾値との比較をして攻撃を検知する必要がある場合などは、常にWebブラウジングを継続しているといつかは閾値を必ず超えてしまうので、攻撃や侵入の検知をページ毎で行うことにより、攻撃や侵入を行う不正なページ（ＵＲＬ）の検出も可能である。
【００６０】
制御部５７は、実施例１と同様、後述する検知部７３により不正な攻撃や侵入が発生したと検知された場合に、当該検知された不正な攻撃や侵入と一致する挙動情報に対応する制御内容をルールＤＢ７２から特定し、特定した制御内容を実行する。具体的には、制御部５７は、ルールＤＢ７２から特定された制御内容が「遮断制御」の場合には、検知部７３により不正が検知されたモジュールまたはプロセスの動作を停止させる。
【００６１】
記憶部７０は、実施例１と同様、ネットワーク通信を行うためのアドレス情報やルーティング情報、各種処理に必要なデータおよびプログラムを格納するとともに、蓄積ＤＢ７１と、ルールＤＢ７２とを有する。
【００６２】
蓄積ＤＢ７１は、モニター５５ａやモニター５５ｂの各監視部によりスクリプト毎に収集された情報を記憶する。具体的には、蓄積ＤＢ７１は、図８に示すように、各監視部により収集された情報の収集元（発信元）を示す「Webブラウザ」と「スクリプト」とに対応付けて、収集された内容を示す「情報」を記憶する。例えば、蓄積ＤＢ７１は、「Webブラウザ、スクリプト、情報」として「Webブラウザ５０、スクリプトＸ、呼び出された関数名（関数Ｘ）」や「Webブラウザ６０、スクリプトＸ、呼び出された関数名（関数Ｙ）と引数（ＺＺ）」などを記憶する。
【００６３】
なお、図８は、蓄積ＤＢに記憶される情報の例を示す図である。また、実施例１と同様、図８では、「Webブラウザ」や「スクリプト」に対応付けて記憶することにより、一つのテーブルで収集される情報を管理しているが、Webブラウザやスクリプトごとに異なるテーブルを設けて記憶するようにしてもよい。
【００６４】
ルールＤＢ７２は、実施例１と同様、不正な攻撃や侵入を示す挙動を特定する挙動情報と不正な攻撃や侵入が発生した場合に実行する制御内容を記憶する。具体的には、ルールＤＢ７２は、図９に示すように、「Webブラウザ」と「スクリプト」とに対応付けて、不正な攻撃や侵入を示す挙動を特定する「挙動情報」、不正な攻撃や侵入が発生した場合に実行する「制御内容」を記憶する。
【００６５】
例えば、ルールＤＢ７２は、「Webブラウザ、スクリプト、挙動情報、制御内容」として「Webブラウザ５０、スクリプトＸ、−、遮断制御」や「Webブラウザ６０、スクリプトＸ、呼び出された関数名（関数Ｚ）、無し」などを記憶する。なお、図９は、ルールＤＢに記憶される情報の例を示す図である。また、実施例１と同様、図９では、一つのテーブルで収集される情報を管理しているが、各プロセスや各モジュールごとに異なるテーブルを設けて記憶するようにしてもよい。
【００６６】
ここで挙動情報が「−」となっているのは、その処理が正常時には実行されないことを示しており、例えば、上記した「Webブラウザ５０、スクリプトＸ、−、遮断制御」では、「Webブラウザ５０」が「スクリプトＸ」を実行することはない。すなわち、「Webブラウザ５０」が「スクリプトＸ」を実行した場合、詳細な情報を取得する必要も無く、不正な処理であることを示している。
【００６７】
なお、ルールＤＢ７２についても実施例１のルールＤＢ３２と同様、単に特定の関数が呼び出されたか、関数の引数が間違っていないかなどの情報以外にも、関数の呼び出し列（コールシーケンス）、文字列情報、文字列や文字列長の累積値などの閾値を記憶することもできる。また、ルールＤＢ３２は、実施例１のルールＤＢ３２と同様、制御内容として上記した情報以外にも、例えば、「管理者（XXX@AAA.com）へ通知」や複数の制御情報の組み合わせなどを記憶しておくこともできる。
【００６８】
検知部７３は、監視部５６により収集された各種情報が、不正な攻撃や侵入を示す挙動を特定する挙動情報を記憶するルールＤＢ７２に記憶される挙動情報と一致する場合に、不正な攻撃や侵入が発生したと検知する。具体的には、検知部７３は、蓄積ＤＢ７１に記憶される各レコードとルールＤＢ７２の各レコードを参照して、蓄積ＤＢ７１に記憶される情報がルールＤＢ７２にも記憶されている場合に、不正な攻撃や侵入が発生したと検知する。
【００６９】
図８及び図９を参照しつつ説明すると、図８の蓄積ＤＢ７１に記憶される「Webブラウザ５０、スクリプトＸ、呼び出された関数名（関数Ｘ）」は、図９のルールＤＢ７２に「Webブラウザ５０、スクリプトＸ、−、遮断制御」が記憶されていることから、検知部７３は、不正な攻撃や侵入が発生したと検知する。上記したように、「Webブラウザ５０」が「スクリプトＸ」を実行することは正常時には起こりえないことから、「スクリプトＸ」にモニターを組み込んでおけない。このような場合のために、Webブラウザ内のスクリプトだけでなく、Webブラウザに対応付けてモニターを組み込ませておく。そうすることで、上記した実行されないスクリプトが実行された場合であっても、不正な攻撃や侵入が発生したと検知することができる。
【００７０】
また、検知部７３は、図８の蓄積ＤＢ７１に記憶される「Webブラウザ６０、スクリプトＸ、呼び出された関数名（関数Ｙ）と引数（ＺＺ）」は、図９のルールＤＢ７２に同じ内容が記憶されていていないことから、検知部３３は、この情報に関しては、正常な処理であると判定する。
【００７１】
［実施例２による効果］
このように、実施例２によれば、システムの詳細な挙動把握が可能になり、正確な異常検知が可能になる。また、Webブラウザにおけるスクリプト実行環境を利用した攻撃やマルウェアへの感染を防ぐことができる。また、このようにWebブラウザへの攻撃及び侵入に利用されるスクリプト実行環境に対象を絞って監視することで、Webブラウザ内部の他のモジュール（例えば、HTML処理エンジンなど）の動作による雑音を少なく対象箇所の情報の抽出と検知が可能であり、攻撃及び侵入の遮断を動的に制御（例えば、プロセスの強制終了）することが可能である。
【００７２】
上記した「雑音を少なく対象箇所の情報の抽出と検知が可能である」とは、従来手法の場合、プロセス内部の複数のモジュールからのＡＰＩやシステムコール呼び出しが混同していたが、本願が開示する情報処置装置ではこのような混同が生じないことので、上記したように、『「雑音を少なく」対象箇所の情報の抽出と検知が可能である』としている。例えば、従来では、特定のモジュールが行う異常な挙動と、他のモジュールの正常な動作について、これらを区別できず、一括りにプロセスの挙動として見ていた。本願では、モジュール毎に挙動が監視できるので、他の正常なモジュールの動作との混同は生じない。
【００７３】
また、スクリプト実行環境を利用した攻撃には、上記したように、「脆弱性に対する攻撃（例えば、ヒープレイアウト操作）」と「スクリプトマルウェア」がある。「脆弱性に対する攻撃」では、Ｗｅｂブラウザの脆弱性を突く攻撃コードが埋め込まれたコンテンツをWebブラウザが読み込み、スクリプト実行環境がそれを実行することで攻撃が発動し侵入を許してしまう。ここでいうWebブラウザの脆弱性とは、Webブラウザ自身の脆弱性だけでなく、plug-inなどのBHO（Browser  Helper  Object）の脆弱性なども含まれる。脆弱性に対して攻撃を行う際に、スクリプト実行環境を利用してメモリのレイアウトを操作することで安定して攻撃を実行させる方法が併用される。
【００７４】
スクリプト実行環境を利用してメモリのレイアウトを不正に操作することで、Webブラウザへの脆弱性に対する攻撃の成功率を上げる手法（例えば、「HeapSpray」や「Heap風水」など）は、Webブラウザのヒープ領域に不正な命令コードを含む文字列を埋め込むことで、Webブラウザの脆弱性を突いて制御を奪った後に先ほど埋め込んだ不正な命令コードを実行させるものである。
【００７５】
このような攻撃に利用される特異な挙動に対して、文字列の動的確保を行うスクリプト実行環境の関数を監視することで、不正な処理を検知することができる。例えば、「HeapSpray」では、文字列を確保する際に、同じ内容の文字列を大量に確保することから、文字列確保を行う関数の引数として与えられる文字列情報を取得し、確保する文字列の類似や文字列長の累積値が閾値を超えたかどうかを元に検知の判断を行う（例えば、閾値を超えた場合に、異常と検知する）。
【００７６】
なお、上記した「文字列を確保する」とは、具体的には、長さＮの文字列を確保するときは、メモリ上に長さＮの文字列が格納できるだけの領域を確保し、そこに文字列が格納されることである。例えば、「java（登録商標）script」の「Array()配列」に対して文字列オブジェクト「str」を代入すると、「java（登録商標）script」の処理モジュールから最終的にＡＰＩの「HeapAlloc()」が呼び出されてメモリ上に領域が確保される。
【００７７】
また、「スクリプトマルウェア」は、Webブラウザの脆弱性は突かず、スクリプト探知で動作して攻撃行動をするものである。このような攻撃は、ファイルの作成やプロセスの生成は行わずメモリ上で動作することからファイル入出力やプロセス生成の制御では防ぐことができない一方で、スクリプト実行環境が発行するパケット送信命令について、それを行う関数の引数として与えられる通信先によって不正かどうかを判断することができる。
【００７８】
例えば、「java（登録商標）script  Portscan」と呼ばれる手法では、外部のWebサーバに仕掛けられた不正な「java（登録商標）script」をWebブラウザで読み込むことで、イントラネットに対してWebブラウザがポートスキャンを行ってしまう。この際、「java（登録商標）script」から発行されるパケット送信命令の通信先がイントラネットのアドレスであった場合、また複数のイントラネットのアドレス対してパケットを送信しようとする場合、上記の挙動である可能性が高いとして、Webブラウザに対する攻撃や侵入を検知することができる。
【実施例３】
【００７９】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、（１）モニター構成、（２）第三者装置、（３）適用例、（４）システム構成等、（５）プログラムにそれぞれ区分けして異なる実施例を説明する。
【００８０】
（１）モニター構成
例えば、実施例１または２で図示したモニターの構成は、これに限定されるものではく、例えば、監視部だけをモニターの内部に構成することもできる。また、モニター自体をプロセスの外部（情報処理装置内）に構成させることもできる。
【００８１】
（２）第三者装置
また、本願が開示する不正検知装置は、必ずしも情報処理装置内に組み込まれている必要はなく、情報処理装置（演算処理装置）と別の筺体であってもよい。
【００８２】
（３）適用例
本願が開示する不正検知装置は、特に具体例で挙げたようなWebブラウザに対する攻撃を検知可能なことにより、危険なWebページかどうかを判別可能なハニーポットとして利用可能である。
【００８３】
（４）システム構成等
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報（例えば、図４、図５、図８、図９など）については、特記する場合を除いて任意に変更することができる。
【００８４】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合（例えば、監視部と制御部とを統合するなど）して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８５】
（５）プログラム
なお、本実施例で説明した不正検知方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【産業上の利用可能性】
【００８６】
以上のように、本発明に係る不正検知方法、不正検知装置、不正検知プログラムおよび情報処理システムは、コンピュータシステムに対する不正な攻撃や侵入を検知することに有用であり、特に、システムの内部まで詳細に監視することに適する。
【図面の簡単な説明】
【００８７】
【図１】実施例１に係る情報処理装置の概要を説明するための図である。
【図２】実施例１に係る情報処理装置の構成を示すブロック図である。
【図３】モニターの内部構成を例示した図である。
【図４】蓄積ＤＢに記憶される情報の例を示す図である。
【図５】ルールＤＢに記憶される情報の例を示す図である。
【図６】実施例１に係る情報処理装置における処理の流れを示すフローチャートである。
【図７】実施例２に係る情報処理装置の構成を示すブロック図である。
【図８】蓄積ＤＢに記憶される情報の例を示す図である。
【図９】ルールＤＢに記憶される情報の例を示す図である。
【図１０】従来技術を説明するための図である。
【図１１】従来技術を説明するための図である。
【符号の説明】
【００８８】
１  情報処理装置
１０  プロセス
１１ａ  モジュールＡ
１１ｂ  モジュールＢ
１５ａ、５５ａ  モニター
１５ｂ、５５ｂ  モニター
１６、５６  監視部
１７、５７  制御部
２０  プロセス
３０、７０  記憶部
３１、７１  蓄積ＤＢ
３２、７２  ルールＤＢ
３３、７３  検知部
５０、６０  Wｅｂブラウザ
５１ａ  スクリプトＡ
５１ｂ  スクリプトＢ
【図１】
2010092174.tif 000003
【図２】
2010092174.tif 000004
【図３】
2010092174.tif 000005
【図４】
2010092174.tif 000006
【図５】
2010092174.tif 000007
【図６】
2010092174.tif 000008
【図７】
2010092174.tif 000009
【図８】
2010092174.tif 000010
【図９】
2010092174.tif 000011
【図１０】
2010092174.tif 000012
【図１１】
2010092174.tif 000013