(57)【要約】【課題】多大なコストをかけることなく大量のプログラムを監視する。【解決手段】アクセス監視部２０が、監視対象プログラム３０からホスト資源へのアクセス要求を検知し、アクセス要求を検知した場合に、当該アクセス要求の種類に基づいて、当該アクセス要求がホスト資源に影響を与えるものであるか否かを判定する。そして、アクセス監視部２０は、アクセス要求がホスト資源に影響を与えるものでないと判定した場合には、当該アクセス要求によって要求されたホスト資源に監視対象プログラム３０をアクセスさせ、一方、ホスト資源に影響を与えるものであると判定した場合には、当該アクセス要求によって要求されたホスト資源の代わりに、当該ホスト資源と同一になるように作成した仮想資源に監視対象プログラム３０をアクセスさせる。【選択図】        図１
2010020713.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上で動作するプログラムから当該コンピュータの資源へのアクセスを監視するアクセス監視システムであって、
前記プログラムから前記資源へのアクセス要求を検知する検知手段と、
前記検知手段によって前記アクセス要求が検知された場合に、当該アクセス要求の種類に基づいて、当該アクセス要求が前記コンピュータの資源に影響を与えるものであるか否かを判定する判定手段と、
前記判定手段によって前記アクセス要求が前記資源に影響を与えるものでないと判定された場合には、当該アクセス要求によって要求された資源に前記プログラムをアクセスさせ、一方、前記資源に影響を与えるものであると判定された場合には、当該アクセス要求によって要求された資源の代わりに、当該資源と同一になるように作成した仮想資源に前記プログラムをアクセスさせる制御手段と、
を備えたことを特徴とするアクセス監視システム。
【請求項２】
前記検知手段は、プロセス単位あるいは前記プログラムを構成するモジュール単位で前記アクセス要求を検知し、
前記制御手段は、前記プロセス単位あるいはモジュール単位で、前記アクセス要求によって要求された資源あるいは前記仮想資源へ前記プログラムをアクセスさせることを特徴とする請求項１に記載のアクセス監視システム。
【請求項３】
前記制御手段は、前記アクセス要求が前記資源を新規に作成するものであった場合には、当該資源に対応する仮想資源を新規に作成することを特徴とする請求項１または２に記載のアクセス監視システム。
【請求項４】
前記制御手段は、前記アクセス要求が既存の資源を改変するものであった場合には、当該資源の複製を作成し、作成した複製を当該資源に対応する仮想資源とすることを特徴とする請求項１、２または３に記載のアクセス監視システム。
【請求項５】
前記制御手段は、前記アクセス要求が既存の資源を改変するものであった場合に、当該資源の複製を作成する前に、当該資源に対応する仮想資源が過去に作成または改変されているか否かを確認し、作成または改変されていた場合には、当該仮想資源に前記プログラムをアクセスさせることを特徴とする請求項３または４に記載のアクセス監視システム。
【請求項６】
前記制御手段は、前記資源に対応する仮想資源が過去に作成または改変されているか否かを確認する際に、実行中のプロセスの生存期間内で当該仮想資源が作成または改変されているか否かを確認することを特徴とする請求項５に記載のアクセス監視システム。
【請求項７】
前記制御手段は、前記資源に対応する仮想資源が過去に作成または改変されているか否かを確認する際に、操作者から指定された期間内で当該仮想資源が作成または改変されているか否かを確認することを特徴とする請求項５に記載のアクセス監視システム。
【請求項８】
コンピュータ上で動作するプログラムから当該コンピュータの資源へのアクセスを監視するアクセス監視方法であって、
前記プログラムから前記資源へのアクセス要求を検知する検知工程と、
前記検知工程によって前記アクセス要求が検知された場合に、当該アクセス要求の種類に基づいて、当該アクセス要求が前記コンピュータの資源に影響を与えるものであるか否かを判定する判定工程と、
前記判定工程によって前記アクセス要求が前記資源に影響を与えるものでないと判定された場合には、当該アクセス要求によって要求された資源に前記プログラムをアクセスさせ、一方、前記資源に影響を与えるものであると判定された場合には、当該アクセス要求によって要求された資源の代わりに、当該資源と同一になるように作成した仮想資源に前記プログラムをアクセスさせる制御工程と、
を含んだことを特徴とするアクセス監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータ上で動作するプログラムから当該コンピュータの資源へのアクセスを監視するアクセス監視システムおよびアクセス監視方法に関する。
【背景技術】
【０００２】
従来、コンピュータウィルスやワームなどの悪性プログラムや、脆弱性を有する可能性がある信頼できないプログラムなどを仮想マシン上に構築したＯＳ（Operating System）環境で実行し、それらの振る舞いを監視する手法が知られている（「仮想マシン」については、たとえば、非特許文献１または２参照）。仮想マシン上のＯＳ環境で不正プログラムを実行することによって、不正プログラムが破壊的な振る舞いをしたとしても、その影響がホストシステムにまで及ばないようにすることができる。すなわち、ホストシステムから隔離された環境で、不正プログラムを実行することができる。
【０００３】
一方、プロセス単位で、信頼できないプロセスとその実行環境であるホストシステムを隔離する手法も存在している。この手法では、所定のサブディレクトリを仮想的なルートディレクトリとして監視対象プロセスに見せかけ、そのルートディレクトリ構造以外のファイルへのアクセスは一切禁止することにより、プロセスと、その実行環境を提供しているホストシステムとの隔離を実現している（たとえば、非特許文献３参照）。
【０００４】
【非特許文献１】Paul Barham、Boris Dragovic、Keir Fraser、Steven Hand、Tim Harris、Alex Ho、Rolf Neugebauer、Ian Pratt、Andrew Warfield、”Xen and the Art of Virtualization”、University of Cambridge Computer Laboratory、［online］、［平成２０年６月５日検索］、インターネット＜URL:http://www.cl.cam.ac.uk/research/srg/netos/papers/2003-xensosp.pdf＞
【非特許文献２】”ＶＭｗａｒｅ  ｗｏｒｋｓｔａｔｉｏｎ”、［online］、ヴイエムウェア株式会社、［平成２０年６月５日検索］、インターネット＜URL:http://www.vmware.com/jp/virtualization/＞
【非特許文献３】ＦｒｅｅＢＳＤ、「ｊａｉｌ」、［online］、［平成２０年６月５日検索］、インターネット＜URL:http://www.freebsd.org/cgi/man.cgi?query=jail&format=html＞
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、仮想マシン上にＯＳ環境を構築して実行環境を作成する手法は、隔離といった点では有用ではあるが、プログラム一つを実行するためにＯＳ環境一つを用意する必要があり、多大なコスト（コンピュータ資源に要するコスト）がかかる。そのため、大量のプログラムを監視するには適していない。
【０００６】
また、プロセス単位で隔離する手法では、完全に隔離された不自然なコンピュータ環境上でプログラムが実行されるため、隔離された環境で実行されていることが不正プログラムによって容易に検知されてしまい、正常な振る舞いを期待できないことが多い。また、隔離された環境で不正プログラムを正常に動作させるには、その不正プログラムが利用する資源環境（ファイルやレジストリなど）と同一の環境を用意する必要があり、これも非常にコストがかかる。そのため、やはり大量のプログラムを監視するには適していない。
【０００７】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、多大なコストをかけることなく大量のプログラムを監視することができるアクセス監視システムおよびアクセス監視方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明は、コンピュータ上で動作するプログラムから当該コンピュータの資源へのアクセスを監視するアクセス監視システムであって、前記プログラムから前記資源へのアクセス要求を検知する検知手段と、前記検知手段によって前記アクセス要求が検知された場合に、当該アクセス要求の種類に基づいて、当該アクセス要求が前記コンピュータの資源に影響を与えるものであるか否かを判定する判定手段と、前記判定手段によって前記アクセス要求が前記資源に影響を与えるものでないと判定された場合には、当該アクセス要求によって要求された資源に前記プログラムをアクセスさせ、一方、前記資源に影響を与えるものであると判定された場合には、当該アクセス要求によって要求された資源の代わりに、当該資源と同一になるように作成した仮想資源に前記プログラムをアクセスさせる制御手段と、を備えたことを特徴とする。
【０００９】
また、本発明は、上記の発明において、前記検知手段は、プロセス単位あるいは前記プログラムを構成するモジュール単位で前記アクセス要求を検知し、前記制御手段は、前記プロセス単位あるいは前記モジュール単位で、前記アクセス要求によって要求された資源あるいは前記仮想資源へ前記プログラムをアクセスさせることを特徴とする。
【００１０】
また、本発明は、上記の発明において、前記制御手段は、前記アクセス要求が前記資源を新規に作成するものであった場合には、当該資源に対応する仮想資源を新規に作成することを特徴とする。
【００１１】
また、本発明は、上記の発明において、前記制御手段は、前記アクセス要求が既存の資源を改変するものであった場合には、当該資源の複製を作成し、作成した複製に対応する仮想資源とすることを特徴とする。
【００１２】
また、本発明は、上記の発明において、前記制御手段は、前記アクセス要求が既存の資源を改変するものであった場合に、当該資源の複製を作成する前に、当該資源に対応する仮想資源が過去に作成または改変されているか否かを確認し、作成または改変されていた場合には、当該仮想資源に前記プログラムをアクセスさせることを特徴とする。
【００１３】
また、本発明は、上記の発明において、前記制御手段は、前記資源に対応する仮想資源が過去に作成または改変されているか否かを確認する際に、実行中のプロセスの生存期間内で当該仮想資源が作成または改変されているか否かを確認することを特徴とする。
【００１４】
また、本発明は、上記の発明において、前記制御手段は、前記資源に対応する仮想資源が過去に作成または改変されているか否かを確認する際に、操作者から指定された期間内で当該仮想資源が作成または改変されているか否かを確認することを特徴とする。
【００１５】
また、本発明は、コンピュータ上で動作するプログラムから当該コンピュータの資源へのアクセスを監視するアクセス監視方法であって、前記プログラムから前記資源へのアクセス要求を検知する検知工程と、前記検知工程によって前記アクセス要求が検知された場合に、当該アクセス要求の種類に基づいて、当該アクセス要求が前記コンピュータの資源に影響を与えるものであるか否かを判定する判定工程と、前記判定工程によって前記アクセス要求が前記資源に影響を与えるものでないと判定された場合には、当該アクセス要求によって要求された資源に前記プログラムをアクセスさせ、一方、前記資源に影響を与えるものであると判定された場合には、当該アクセス要求によって要求された資源の代わりに、当該資源と同一になるように作成した仮想資源に前記プログラムをアクセスさせる制御工程と、を含んだことを特徴とする。
【発明の効果】
【００１６】
本発明によれば、プログラムから資源へのアクセス要求を検知し、アクセス要求が検知された場合に、当該アクセス要求の種類に基づいて、当該アクセス要求がコンピュータの資源に影響を与えるものであるか否かを判定し、アクセス要求が資源に影響を与えるものでないと判定された場合には、当該アクセス要求によって要求された資源にプログラムをアクセスさせ、一方、資源に影響を与えるものであると判定された場合には、当該アクセス要求によって要求された資源の代わりに、当該資源と同一になるように作成した仮想資源にプログラムをアクセスさせるので、多大なコストをかけることなく大量のプログラムを監視することができるという効果を奏する。
【００１７】
また、本発明によれば、プロセス単位あるいはプログラムを構成するモジュール単位でアクセス要求を検知し、プロセス単位あるいはモジュール単位で、アクセス要求によって要求された資源あるいは仮想資源へプログラムをアクセスさせるので、監視対象のプログラムが複数のモジュールで構成されている場合であっても、各モジュールの動作を阻害することなくプログラムを監視することができるという効果を奏する。
【００１８】
また、本発明によれば、アクセス要求が資源を新規に作成するものであった場合には、当該資源に対応する仮想資源を新規に作成するので、安全に大量のプログラムを監視することができるという効果を奏する。
【００１９】
また、本発明によれば、アクセス要求が既存の資源を改変するものであった場合には、当該資源の複製を作成し、作成した複製を当該資源に対応する仮想資源とするので、資源環境の用意にかかるコストを削減することができるとともに、容易に大量のプログラムを監視することができるという効果を奏する。
【００２０】
また、本発明によれば、アクセス要求が既存の資源を改変するものであった場合に、当該資源の複製を作成する前に、当該資源に対応する仮想資源が過去に作成または改変されているか否かを確認し、作成または改変されていた場合には、当該仮想資源にプログラムをアクセスさせるので、同じホスト資源が何度も改変される処理が行われるような場合でも、ホスト資源を正常に改変しているように見せかけることができ、監視対象のプログラムに対して処理の整合性を保証することができるという効果を奏する。
【００２１】
また、本発明によれば、資源に対応する仮想資源が過去に作成または改変されているか否かを確認する際に、実行中のプロセスの生存期間内で当該仮想資源が作成または改変されているか否かを確認するので、監視対象のプログラムに対し、プロセス単位で処理の整合性を保証することができるという効果を奏する。
【００２２】
また、本発明によれば、資源に対応する仮想資源が過去に作成または改変されているか否かを確認する際に、操作者から指定された期間内で当該仮想資源が作成または改変されているか否かを確認するので、監視対象のプログラムに対し、操作者から指定された監視期間内で処理の整合性を保証することができる。
【発明を実施するための最良の形態】
【００２３】
以下に添付図面を参照して、この発明に係るアクセス監視システムおよびアクセス監視方法の好適な実施例を詳細に説明する。
【実施例】
【００２４】
まず、図１を用いて、本実施例に係るアクセス監視システムの概要について説明する。図１は、本実施例に係るアクセス監視システムの概要を説明するための説明図である。同図に示すように、本実施例に係るアクセス監視システムは、ホストシステム１０と、アクセス監視部２０と、監視対象プログラム３０とを備える。
【００２５】
ホストシステム１０は、各種プログラムを動作させるためのＯＳや各種の資源が実装されたコンピュータである。ここで、「資源」とは、ホストシステム１０上でプログラムをＯＳ上で動作させるために必要な各種のリソースであり、たとえば、ファイルやレジストリ、カーネルデータ構造体などである。なお、以下では、ホストシステム１０に実装されている資源を「ホスト資源」と呼ぶ。
【００２６】
アクセス監視部２０は、ホストシステム１０上で動作するプログラムであり、監視対象プログラム３０からホスト資源へのアクセスを監視する。たとえば、このアクセス監視部２０は、複数のモジュールから構成されるモジュールライブラリとして実装される。
【００２７】
監視対象プログラム３０は、アクセス監視システムによる監視の対象となるプログラムであり、アクセス監視部２０の上で動作する。たとえば、この監視対象プログラム３０は、コンピュータウィルスやワームなどの悪性プログラムや、脆弱性を有する可能性がある信頼できないプログラムなどである。
【００２８】
このような構成のもと、本実施例では、アクセス監視部２０が、半透過的な仮想隔離環境で監視対象プログラム３０を動作させて、その動作を監視する。具体的には、アクセス監視部２０は、監視対象プログラム３０からホスト資源へのアクセス要求を検知する（同図の（１）を参照）。そして、アクセス要求を検知した場合には、アクセス監視部２０は、検知したアクセス要求の種類に基づいて、そのアクセス要求がホスト資源に影響を与えるものであるか否かを判定する（同図の（２）を参照）。
【００２９】
ここで、ホスト資源に影響を与えるアクセス要求とは、ホストシステム１０を破壊する可能性があるアクセス要求であり、たとえば、ファイルやレジストリ、カーネルデータ構造体などの資源に対して書き込みや削除を行うようなアクセス要求である。一方、ホスト資源に影響を与えないアクセス要求とは、ホストシステム１０を破壊する可能性がないアクセス要求であり、たとえば、資源に対して読み取りのみを行うようなアクセス要求である。
【００３０】
そして、アクセス監視部２０は、検知したアクセス要求がホスト資源に影響を与えるものでないと判定した場合には、そのアクセス要求によって要求されたホスト資源に監視対象プログラム３０をアクセスさせる（同図の（３）を参照）。
【００３１】
一方、アクセス監視部２０は、検知したアクセス要求がホスト資源に影響を与えるものであると判定した場合には、そのアクセス要求によって要求されたホスト資源の代わりに、当該ホスト資源と同一になるように作成した「仮想資源」に監視対象プログラム３０をアクセスさせる（同図の（４）を参照）。このとき、アクセス監視部２０は、アクセス要求がホスト資源を新規に作成するものであった場合には、そのホスト資源に対応する仮想資源を新規に作成する。
【００３２】
このように、本実施例では、アクセス監視部２０が、監視対象プログラム３０からホスト資源へのアクセス要求を検知した場合に、そのアクセス要求の種類に基づいて、要求されたホスト資源またはそのホスト資源と同一になるように作成した仮想資源のいずれかに監視対象プログラム３０をアクセスさせる。
【００３３】
かかるアクセスの制御は、全て、アクセス監視部２０の内部、すなわち、監視対象プログラム３０の外部で行われる。そのため、監視対象プログラム３０に対しては、あたかもホスト資源に正常にアクセスできているように見せかけることができるので、監視によって監視対象プログラム３０の動作が妨げられることはない。
【００３４】
以上のように、本実施例によれば、仮想ＯＳを用いることなく、プログラムの動作を監視することができる。また、監視対象プログラム３０の動作に必要な仮想資源が動的に作成されるので、監視対象プログラム３０が利用する資源環境をあらかじめ用意しておく必要もない。したがって、本実施例によれば、多大なコストをかけることなく大量のプログラムを監視することができるようになる。
【００３５】
なお、ここでは説明の便宜上、１つのアクセス監視部２０のみを示したが、ホストシステム１０上では、複数のアクセス監視部２０を並列して動作させることが可能である。また、ここでは説明の便宜上、１つの監視対象プログラム３０のみを示したが、アクセス監視部２０上では、複数の監視対象プログラム３０を動作させることが可能である。
【００３６】
次に、図２および３を用いて、本実施例に係るアクセス監視システムの構成について説明する。図２は、本実施例に係るアクセス監視システムの構成を示すブロック図である。同図に示すように、このアクセス監視システムは、ホストシステム１０と、ホストシステム１０上で動作する複数のアクセス監視部２０と、各アクセス監視部２０上で動作する複数の監視対象プログラム３０とを備える。
【００３７】
ここで、監視対象プログラム３０は、それぞれ複数のモジュール３１から構成されている。そして、各アクセス監視部２０は、プロセス単位（プログラム単位）またはモジュール単位で、監視対象プログラム３０の動作を監視する。
【００３８】
図３は、プロセス単位またはモジュール単位での監視を示す図である。同図に示すように、たとえば、アクセス監視システムは、監視対象プログラム３０を構成する複数のモジュールのうち、一部のモジュール３２をホストシステム１０上で通常に動作させ、他のモジュール３１はアクセス監視部２０上で動作させる。この場合、いずれのモジュールをホストシステム１０上、あるいは、アクセス監視部２０上で動作させるかは、監視対象プログラム３０を起動する際に操作者に選択させてもよいし、システムの稼動前にモジュールごとにあらかじめ設定しておいてもよい。
【００３９】
なお、ここで説明する構成はあくまで一例であり、アクセス監視システムは他のさまざまな形態でも実施が可能である。アクセス監視システムの他の実施形態については、後に例をあげて説明する。
【００４０】
次に、図４を用いて、アクセス監視部２０の構成について説明する。図４は、アクセス監視部２０の構成を示す機能ブロック図である。同図に示すように、アクセス監視部２０は、特に、プログラム実行部２１と、資源アクセス監視部２２と、資源アクセス制御部２３と、動作ログ保存部２４と、仮想資源処理部２５とを有する。なお、ここでは、各機能部が有する機能の概要について説明し、各機能部によって行われる処理については、後に詳細に説明する。
【００４１】
プログラム実行部２１は、アクセス監視部２０によって提供される半透過的な仮想隔離環境で監視対象プログラム３０を動作させるためのモジュールである。このプログラム実行部２１は、後述する監視用モジュールを監視対象プログラム３０に挿入することによって、アクセス監視システムが提供する半透過的な仮想隔離環境で監視対象プログラム３０を実行させる。
【００４２】
具体的には、プログラム実行部２１は、メモリ空間において、監視対象プログラム３０のコードに監視用モジュールのコードを挿入し、そのうえで、監視対象プログラム３０を実行する。または、監視モジュールをＤＬＬ（Dynamic Link Library）の一部としてホストシステム１０側に実装させておき、監視対象プログラム３０には、各監視モジュールを呼び出すためのＡＰＩ（Application Programming Interface）が記述されたコードを監視対象プログラム３０に挿入し、これにより、監視対象プログラム３０が実行時に監視モジュールを呼び出すようにしてもよい。
【００４３】
資源アクセス監視部２２は、監視対象プログラム３０からホスト資源へのアクセス要求を検知する監視用モジュールである。なお、資源アクセス監視部２２は、操作者によって、監視対象プログラムを構成するモジュールの中から監視対象のモジュールが指定されていた場合には、モジュール単位でアクセス要求を検知する。
【００４４】
資源アクセス制御部２３は、資源アクセス監視部２２によってアクセス要求が検知された場合に、当該アクセス要求の種類に基づいて、当該アクセス要求がホスト資源に影響を与えるものであるか否かを判定する監視用モジュールである。
【００４５】
動作ログ保存部２４は、仮想資源処理部２５によるアクセス制御の履歴を動作ログとして保存する記憶部である。具体的には、この動作ログ保存部２４は、監視対象プログラム３０からアクセス要求によって要求されたホスト資源と、当該ホスト資源に対応するものとして作成された仮想資源とを対応付けた情報を動作ログとして保存する。
【００４６】
仮想資源処理部２５は、資源アクセス制御部２３による判定の結果に基づいて、監視対象プログラム３０からホストシステム１０へのアクセスを制御する監視用モジュールである。
【００４７】
具体的には、仮想資源処理部２５は、資源アクセス制御部２３によって、監視対象プログラム３０からのアクセス要求がホスト資源に影響を与えるものでないと判定された場合には、当該アクセス要求によって要求されたホスト資源に監視対象プログラム３０をアクセスさせる。
【００４８】
一方、仮想資源処理部２５は、資源アクセス制御部２３によって、監視対象プログラム３０からのアクセス要求がホスト資源に影響を与えるものであると判定された場合には、当該アクセス要求によって要求されたホスト資源の代わりに、当該ホスト資源と同一になるように作成した仮想資源に監視対象プログラム３０をアクセスさせる。
【００４９】
そして、仮想資源処理部２５は、上記したアクセス制御を行った場合には、監視対象プログラム３０からアクセス要求によって要求されたホスト資源と、実際に監視対象プログラム３０をアクセスさせた仮想資源とを対応付けた情報を動作ログとして動作ログ保存部２４に保存する。
【００５０】
なお、仮想資源処理部２５は、操作者によって、監視対象プログラム３０を構成するモジュール３１の中から監視対象のモジュールが指定されていた場合には、指定されたモジュールについて、アクセス要求によって要求されたホスト資源または仮想資源へのアクセスを制御する。
【００５１】
次に、図５および６を用いて、上述した各機能部によって行われる処理の詳細について説明する。まず、図５を用いて、プログラム実行部２１によって行われる処理の処理手順について説明する。図５は、プログラム実行部２１によって行われる処理の処理手順を示すフローチャートである。
【００５２】
なお、ここでは、アクセス監視システムの利用者に監視対象プログラム３０を指定させることにより、アクセス監視部２０上で監視対象プログラム３０を起動させる場合について説明する。
【００５３】
同図に示すように、この場合には、プログラム実行部２１は、利用者によって監視対象プログラム３０が指定されると（ステップＳ１０１，Ｙｅｓ）、続いて、指定された監視対象プログラム３０全体を監視するか、監視対象プログラム３０を構成するモジュール単位で監視するかを利用者に選択させる。
【００５４】
そして、モジュール単位で監視すると選択された場合には（ステップＳ１０２，Ｙｅｓ）、プログラム実行部２１は、さらに、利用者に監視対象のモジュールを指定させる。
【００５５】
ここで、監視対象のモジュールが指定された場合（ステップＳ１０３，Ｙｅｓ）、または、監視対象プログラム３０全体を監視すると選択されていた場合（ステップＳ１０２，Ｎｏ）には、プログラム実行部２１は、すでに指定されている監視対象プログラム３０に対して監視用モジュール（資源アクセス監視部２２、資源アクセス制御部２３、仮想資源処理部２５）を挿入する（ステップＳ１０４）。
【００５６】
そして、プログラム実行部２１は、監視用モジュールを挿入した監視対象プログラム３０をアクセス監視部２０上で起動させる（ステップＳ１０５）。
【００５７】
次に、図６を用いて、資源アクセス監視部２２、資源アクセス制御部２３および仮想資源処理部２５によって行われる処理の処理手順について説明する。図６は、資源アクセス監視部２２、資源アクセス制御部２３および仮想資源処理部２５によって行われる処理の処理手順を示すフローチャートである。なお、ここで説明する処理手順は、図５に示した処理手順で監視対象プログラム３０が起動された後に実行される。
【００５８】
同図に示すように、資源アクセス監視部２２が、ホスト資源へのアクセス要求を検知した場合には（ステップＳ２０１，Ｙｅｓ）、資源アクセス制御部２３が、当該アクセス要求の種類に基づいて、当該アクセス要求がホスト資源に影響を与えるものであるか否かを判定する（ステップＳ２０２）。
【００５９】
そして、資源アクセス制御部２３によって、アクセス要求がホスト資源に影響を与えるものであると判定された場合には（ステップＳ２０２，Ｙｅｓ）、仮想資源処理部２５が、そのアクセス要求がホスト資源を新規に作成するものであるか否かを判定する（ステップＳ２０３）。
【００６０】
そして、アクセス要求がホスト資源を新規に作成するものであった場合には（ステップＳ２０３，Ｙｅｓ）、仮想資源処理部２５が、所定の格納場所に、当該ホスト資源に対応する仮想資源を新規に作成する（ステップＳ２０４）。その後、仮想資源処理部２５は、アクセス要求によって要求されたホスト資源の代わりに、作成した仮想資源に監視対象プログラム３０をアクセスさせる（ステップＳ２０５）。
【００６１】
たとえば、アクセス要求が、ホストシステム１０のＣドライブに「ｔｅｓｔ．ｔｘｔ」というファイルを作成することを要求するものであったとする。その場合には、アクセス要求仮想資源処理部２５は、たとえばＣドライブの「ｖｉｒｔ」フォルダに、「ｔｅｓｔ．ｔｘｔ」と同じ内容の「ｖｉｒｔｕａｌ＿ｔｅｓｔ．ｔｘｔ」というファイルを作成する。そして、仮想資源処理部２５は、作成した「ｖｉｒｔｕａｌ＿ｔｅｓｔ．ｔｘｔ」に監視対象プログラム３０をアクセスさせる。
【００６２】
この場合には、後述するステップＳ２１０の処理において、「Ｃ：￥ｔｅｓｔ．ｔｘｔ」と「Ｃ：￥ｖｉｒｔ￥ｖｉｒｔｕａｌ＿ｔｅｓｔ．ｔｘｔ」とを対応付けた情報が動作ログ保存部２４に作成される。
【００６３】
一方、アクセス要求が既存のホスト資源を改変するものであった場合には（ステップＳ２０３，Ｎｏ）、仮想資源処理部２５は、動作ログ保存部２４に保存されている動作ログを参照し、アクセスを要求されたホスト資源に対応する仮想資源が過去に作成されているか否かを判定する（ステップＳ２０６）。
【００６４】
そして、仮想資源が作成されていた場合には（ステップＳ２０６，Ｙｅｓ）、仮想資源処理部２５は、アクセス要求によって要求されたホスト資源の代わりに、すでに作成されている仮想資源に監視対象プログラム３０をアクセスさせる（ステップＳ２０５）。
【００６５】
たとえば、動作ログ保存部２４に、「Ｃ：￥ｔｅｓｔ．ｔｘｔ」と「Ｃ：￥ｖｉｒｔ￥ｖｉｒｔｕａｌ＿ｔｅｓｔ．ｔｘｔ」とを対応付けた情報が保存されていたとする。また、アクセス要求が、Ｃドライブの「ｔｅｓｔ．ｔｘｔ」に”ｔｈｉｓ  ｉｓ  ｔｅｓｔ”というデータを書き込むことを要求するものであったとする。その場合には、仮想資源処理部２５は、Ｃドライブの「ｖｉｒｔ」フォルダにある「ｖｉｒｔｕａｌ＿ｔｅｓｔ．ｔｘｔ」に監視対象プログラム３０をアクセスさせる。この結果、「ｖｉｒｔｕａｌ＿ｔｅｓｔ．ｔｘｔ」に”ｔｈｉｓ  ｉｓ  ｔｅｓｔ”が書き込まれる。
【００６６】
一方、仮想資源が作成されていなかった場合には（ステップＳ２０６，Ｎｏ）、仮想資源処理部２５は、アクセスを要求されたホスト資源（たとえば、ファイルなど）を所定の格納場所にコピーし、コピーした資源を仮想資源とする（ステップＳ２０７）。その後、仮想資源処理部２５は、アクセス要求によって要求されたホスト資源の代わりに、コピーにより作成した仮想資源に監視対象プログラム３０をアクセスさせる（ステップＳ２０５）。
【００６７】
また、資源アクセス制御部２３によって、アクセス要求がホスト資源に影響を与えるものでないと判定された場合には（ステップＳ２０２，Ｎｏ）、仮想資源処理部２５は、動作ログ保存部２４に保存されている動作ログを参照して、アクセスを要求されたホスト資源に対応する仮想資源が作成されているか否かを判定する（ステップＳ２０８）。
【００６８】
そして、仮想資源が作成されていた場合には（ステップＳ２０８，Ｙｅｓ）、仮想資源処理部２５は、アクセス要求によって要求されたホスト資源の代わりに、すでに作成されている仮想資源に監視対象プログラム３０をアクセスさせる（ステップＳ２０５）。
【００６９】
一方、仮想資源が作成されていなかった場合には（ステップＳ２０８，Ｎｏ）、仮想資源処理部２５は、アクセスを要求されたホスト資源に監視対象プログラム３０をアクセスさせる（ステップＳ２０９）。
【００７０】
こうして、監視対象プログラム３０をホスト資源または仮想資源にアクセスさせた後に、仮想資源処理部２５は、それぞれのアクセスの履歴を動作ログとして動作ログ保存部２４に保存する（ステップＳ２１０）。
【００７１】
なお、上記の処理手順では、仮想資源処理部２５が、アクセス要求が既存のホスト資源を改変するものであった場合に、そのホスト資源をコピーする前に、当該ホスト資源に対応する仮想資源が過去に作成または改変されているか否かを確認することとした。
【００７２】
このとき、たとえば、仮想資源処理部２５は、実行中のプロセスの生存期間内で、その仮想資源が作成または改変されているか否かを確認する。または、たとえば、仮想資源処理部２５は、操作者から指定された期間内で当該仮想資源が作成または改変されているか否かを確認するようにしてもよい。
【００７３】
上述してきたように、本実施例では、資源アクセス監視部２２が、監視対象プログラム３０からホスト資源へのアクセス要求を検知し、資源アクセス制御部２３が、資源アクセス監視部２２によってアクセス要求が検知された場合に、当該アクセス要求の種類に基づいて、当該アクセス要求がホスト資源に影響を与えるものであるか否かを判定する。そして、仮想資源処理部２５が、資源アクセス制御部２３によってアクセス要求がホスト資源に影響を与えるものでないと判定された場合には、当該アクセス要求によって要求されたホスト資源に監視対象プログラム３０をアクセスさせ、一方、ホスト資源に影響を与えるものであると判定された場合には、当該アクセス要求によって要求されたホスト資源の代わりに、当該ホスト資源と同一になるように作成した仮想資源に監視対象プログラム３０をアクセスさせる。したがって、本実施例によれば、仮想ＯＳを用いることなく、プログラムの動作を監視することができる。また、監視対象プログラム３０の動作に必要な仮想資源が動的に作成されるので、監視対象プログラム３０が利用する資源環境をあらかじめ用意しておく必要もない。したがって、本実施例によれば、多大なコストをかけることなく大量のプログラムを監視することができる。
【００７４】
また、本実施例では、資源アクセス監視部２２が、プロセス単位あるいは監視対象プログラム３０を構成するモジュール単位でアクセス要求を検知し、仮想資源処理部２５が、プロセス単位あるいはモジュール単位で、アクセス要求によって要求されたホスト資源あるいは仮想資源に監視対象プログラム３０をアクセスさせる。したがって、本実施例によれば、監視対象のプログラムが複数のモジュールで構成されている場合であっても、各モジュールの動作を阻害することなくプログラムを監視することができる。
【００７５】
また、本実施例では、仮想資源処理部２５が、監視対象プログラム３０からのアクセス要求がホスト資源を新規に作成するものであった場合には、当該ホスト資源に対応する仮想資源を新規に作成する。したがって、本実施例によれば、ホスト資源に影響を与えるアクセス要求が発生した場合でも、監視対象プログラム３０に対して、あたかもホスト資源に正常にアクセスできているように見せかけることができる。また、ホストホストシステム１０とは隔離された環境で監視対象プログラム３０を実行させることができるので、安全に大量のプログラムを監視することができる。
【００７６】
また、本実施例では、仮想資源処理部２５が、監視対象プログラム３０からのアクセス要求が既存のホスト資源を改変するものであった場合には、当該ホスト資源の複製を作成し、作成した複製を当該ホスト資源に対応する仮想資源とする。したがって、ホスト資源に影響を与えるアクセス要求が発生した場合でも、監視対象プログラム３０に対して、あたかもホスト資源に正常にアクセスできているように見せかけることができる。また、監視対象プログラム３０が利用する資源環境と同一の環境をあらかじめ用意しておかなくとも、必要な仮想資源が自動的に作成されるので、資源環境の用意にかかるコストを削減することができるとともに、容易に大量のプログラムを監視することができる。
【００７７】
また、本実施例では、仮想資源処理部２５が、アクセス要求が既存のホスト資源を改変するものであった場合に、そのホスト資源をコピーする前に、当該ホスト資源に対応する仮想資源が過去に作成または改変されているか否かを確認し、作成または改変されていた場合には、当該仮想資源に監視対象プログラム３０をアクセスさせる。これにより、同じホスト資源が何度も改変される処理が行われるような場合でも、ホスト資源を正常に改変しているように見せかけることができ、監視対象プログラム３０に対して処理の整合性を保証することができる。
【００７８】
また、本実施例では、仮想資源処理部２５が、ホスト資源に対応する仮想資源が過去に作成または改変されているか否かを確認する際に、実行中のプロセスの生存期間内で当該仮想資源が作成または改変されているか否かを確認することとした。これにより、監視対象プログラム３０に対し、プロセス単位で処理の整合性を保証することができる。
【００７９】
また、本実施例では、仮想資源処理部２５が、ホスト資源に対応する仮想資源が過去に作成または改変されているか否かを確認する際に、操作者から指定された期間内で当該仮想資源が作成または改変されているか否かを確認してもよいとした。これにより、たとえば、操作者から監視期間が指定された場合に、監視対象プログラム３０に対し、監視期間内で処理の整合性を保証することができる。
【００８０】
ところで、上記実施例では、アクセス監視部２０をホストシステム１０上で動作させる場合について説明した。しかしながら、本発明に係るアクセス監視システムの実施形態はこれに限られるわけではなく、他のさまざまな形態でも実施が可能である。
【００８１】
図６は、アクセス監視システムの他の実施形態を示す図である。たとえば、同図に示すように、アクセス監視部２０の一部をホストシステム１０の一部として動作させてもよい。この場合、具体的には、アクセス監視部２０が有するモジュール（プログラム実行部２１、資源アクセス監視部２２、資源アクセス制御部２３、仮想資源処理部２５）のうち、１つまたは２つ以上のモジュールを、カーネルモジュールとしてホストシステム１０内で動作させる。
【００８２】
ここで、アクセス監視部２０が有するモジュールを全てホストシステム１０内で動作させるか、一部を動作させるかは、システム全体の実装の形態に依存する。そして、監視対象プログラム３０は、ホストシステム１０上、または、アクセス監視部２０の一部の上で動作させる。
【００８３】
これまでに説明してきたように、アクセス監視システムによれば、１つのプログラムを解析するのに必要なコストを低く抑えることができる。また、実環境に近い環境で監視対象プログラム３０を動作させることができるので、監視対象プログラムの動作を阻害することがない。したがって、大量かつ正確にプログラムを解析することが可能になる。
【００８４】
かかるアクセス監視システムは、コンピュータウィルスやワームといった悪性プログラムの解析や、脆弱性を有するプログラムなどの信頼できないプログラムの解析などに利用することができる。また、脆弱性を有するアクセス監視システム上で動作させることによって、ハニーポットとして利用することも可能である。この他、軽量な仮想マシンとして利用するなど、アクセス監視システムは、ここで説明した例に限られず、他にも各種の形態で利用することが可能である。
【産業上の利用可能性】
【００８５】
以上のように、本発明に係るアクセス監視システムおよびアクセス監視方法は、コンピュータ上で動作するプログラムから当該コンピュータの資源へのアクセスを監視するに有用であり、特に、多大なコストをかけることなく大量のプログラムを監視することが求められる場合に適している。
【図面の簡単な説明】
【００８６】
【図１】本実施例に係るアクセス監視システムの概要を説明するための説明図である。
【図２】本実施例に係るアクセス監視システムの構成を示すブロック図である。
【図３】プロセス単位またはモジュール単位での監視を示す図である。
【図４】アクセス監視部の構成を示す機能ブロック図である。
【図５】プログラム実行部によって行われる処理の処理手順を示すフローチャートである。
【図６】資源アクセス監視部、資源アクセス制御部および仮想資源処理部によって行われる処理の処理手順を示すフローチャートである。
【図７】アクセス監視システムの他の実施形態を示す図である。
【符号の説明】
【００８７】
１０    ホストシステム
２０    アクセス監視部
２１    プログラム実行部
２２    資源アクセス監視部
２３    資源アクセス制御部
２４    動作ログ保存部
２５    仮想資源処理部
３０    監視対象プログラム
３１，３２    モジュール
【図１】
2010020713.tif 000003
【図２】
2010020713.tif 000004
【図３】
2010020713.tif 000005
【図４】
2010020713.tif 000006
【図５】
2010020713.tif 000007
【図６】
2010020713.tif 000008
【図７】
2010020713.tif 000009