説明

所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を有する装置、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を付与する方法及び該方法を装置で実行することが可能なコンピュータプログラム

【課題】所定のリソースを監視する監視プログラムを強制的に終了させることによりコンピュータに対して外部から何らかの攻撃が仕掛けられることを未然に回避できるようにする。
【解決手段】監視プログラムを含む所定のプロセスを実行する。所定のプロセスは、終了した場合に監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスである。所定のプロセスの実行に応じて、監視プログラムを起動し、監視プログラムが外部から強制終了させられた場合、所定のプロセスを終了する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、所定のリソースを監視する監視プログラムを強制的に終了させることによりコンピュータに対して外部から何らかの攻撃が仕掛けられることを未然に回避することができる、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を有する装置、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を付与する方法及び該方法を装置で実行することが可能なコンピュータプログラムに関する。
【背景技術】
【0002】
インターネット技術の急速な発展に伴い、ネットワークを介して接続されているコンピュータに対する外部からの攻撃の種類も多種多様になってきている。最近では、ネットワークを介した外部からの攻撃に対抗するべく、監視プログラムを常時稼働させておき、外部からの許可されていないアクセスを検知した場合には、検知したアクセスを遮断する等の対応策を施すことで外部からの攻撃を防いでいる。
【0003】
監視プログラムによるUSBメモリへのファイル複製の監視、印刷ジョブの監視等は、常駐型のプロセスにより行われることが多い。したがって、常駐型のプロセス自体を外部から強制終了された場合、監視機能自体が無効になるという問題点があった。
【0004】
例えば特許文献1では、監視対象プロセスを専用プロセスが監視し、異常終了時に再起動する方法が開示されている。特許文献2では、複数のホスト間でプログラムを相互監視することで、強制終了されたプロセスが保持するリソースを解放する方法が開示されている。特許文献3では、プロセスを強制終了させた場合に、例外処理を確実に実行させる方法が開示されている。しかし、いずれの方法であっても、プロセスを監視するプロセス自体に対する外部からの強制終了攻撃を防ぐことはできない。
【0005】
そこで、常駐型のプロセス自体が外部から強制終了されないよう、例えば監視プロセスをシステム権限で稼働するサービスプロセスとして、一般ユーザによる強制終了ができないようにすることで、外部からの強制終了攻撃を回避している。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平10−214208号公報
【特許文献2】特開2004−246439号公報
【特許文献3】特開2006−092057号公報
【特許文献4】特開2000−215065号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、監視プロセスをシステム権限で稼働するサービスプロセスとした場合であっても、いわゆる「なりすまし」によりシステム権限を有するユーザとして強制終了攻撃が仕掛けられた場合には、容易に監視プロセスが強制終了され、記憶内容の書き換え等がなされるおそれがある。
【0008】
また、例えば特許文献4に開示してあるように、オペレーションシステムから隠されているハイバネーション用パーティションを利用して監視プロセスを保護することも考えられる。しかし、ハイバネーション用パーティションの存在が必須であり、あらゆるオペレーションシステムに適用することができる汎用性が欠如する。
【0009】
本発明は斯かる事情に鑑みてなされたものであり、所定のリソースを監視する監視プログラムを強制的に終了させることによりコンピュータに対して外部から何らかの攻撃が仕掛けられることを未然に回避することができる、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を有する装置、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を付与する方法及び該方法を装置で実行することが可能なコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために第1発明に係る装置は、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を有する装置であって、前記監視プログラムを含む所定のプロセスを実行することが可能としてあり、該所定のプロセスは、終了した場合に前記監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスであり、該所定のプロセスの実行に応じて、前記監視プログラムを起動する監視プログラム起動手段を備え、前記監視プログラムが外部から強制終了させられた場合、前記所定のプロセスを終了するようにしてある。
【0011】
また、第2発明に係る装置は、第1発明において、前記監視プログラムは、ダイナミックリンクライブラリとして実装され、該ダイナミックリンクライブラリを前記所定のプロセスに注入するようにしてある。
【0012】
また、第3発明に係る装置は、第1又は第2発明において、前記監視プログラム起動手段は、前記所定のプロセスの実行に応じて、新たなスレッドを生成するようにしてあり、生成したスレッド内で監視プログラムを実行する。
【0013】
また、第4発明に係る装置は、第3発明において、生成した新たなスレッドを識別する情報を、稼働しているスレッドを識別する情報を抽出するスレッド抽出プログラムの戻り値から削除するスレッド削除手段を備える。
【0014】
また、第5発明に係る装置は、第1乃至第4発明のいずれか1つにおいて、前記所定のリソースは、前記監視プログラムを実行するコンピュータ本体であり、前記所定のプロセスは、前記コンピュータ本体へのログオン及びログオフを制御するプロセスである。
【0015】
また、第6発明に係る装置は、第1乃至第4発明のいずれか1つにおいて、前記所定のリソースは、他のリソースを監視する他の監視プログラムであり、前記監視プログラムは、前記他の監視プログラムの強制終了を検知する及び/又は前記他の監視プログラムを再起動する。
【0016】
次に、上記目的を達成するために第7発明に係る方法は、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を付与する方法であって、前記監視プログラムを含む所定のプロセスを、該所定のプロセスが終了した場合に前記監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスとし、該所定のプロセスの実行に応じて、前記監視プログラムを起動し、前記監視プログラムが外部から強制終了させられた場合、前記所定のプロセスを終了する。
【0017】
また、第8発明に係る方法は、第7発明において、前記監視プログラムは、ダイナミックリンクライブラリとして実装され、該ダイナミックリンクライブラリを前記所定のプロセスに注入する。
【0018】
また、第9発明に係る方法は、第7又は第8発明において、前記所定のプロセスの実行に応じて、新たなスレッドを生成し、生成したスレッド内で監視プログラムを実行する。
【0019】
また、第10発明に係る方法は、第9発明において、生成した新たなスレッドを識別する情報を、稼働しているスレッドを識別する情報を抽出するスレッド抽出プログラムの戻り値から削除する。
【0020】
また、第11発明に係る方法は、第7乃至第10発明のいずれか1つにおいて、前記所定のリソースは、前記監視プログラムを実行するコンピュータ本体であり、前記所定のプロセスは、前記コンピュータ本体へのログオン及びログオフを制御するプロセスである。
【0021】
また、第12発明に係る方法は、第7乃至第10発明のいずれか1つにおいて、前記所定のリソースは、他のリソースを監視する他の監視プログラムであり、前記監視プログラムは、前記他の監視プログラムの強制終了を検知する及び/又は前記他の監視プログラムを再起動する。
【0022】
次に、上記目的を達成するために第13発明に係るコンピュータプログラムは、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を付与する方法をコンピュータで実行することが可能なコンピュータプログラムであって、前記コンピュータは、前記監視プログラムを含む所定のプロセスを実行することが可能としてあり、該所定のプロセスは、終了した場合に前記監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスであり、前記コンピュータを、該所定のプロセスの実行に応じて、前記監視プログラムを起動する監視プログラム起動手段、及び前記監視プログラムが外部から強制終了させられた場合、前記所定のプロセスを終了する手段として機能させる。
【発明の効果】
【0023】
本発明によれば、所定のリソースを監視する監視プログラムが強制終了させられた場合であっても、コンピュータ自体が動作することができなくなるので外部からコンピュータに対して改ざん、なりすまし等の攻撃を仕掛けることができない。また、監視プログラムが稼働中であってもプロセスリストに表示されることがないので、外部の第三者からの強制終了攻撃を受ける可能性を低減することもできる。
【図面の簡単な説明】
【0024】
【図1】本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータを、CPUを用いて構成した例を示すブロック図である。
【図2】本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータの機能ブロック図である。
【図3】本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータの監視プログラムのプロセス注入を説明するための模式図である。
【図4】本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータのCPUの処理手順を示すフローチャートである。
【図5】本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータの派生スレッド隠蔽の手順を説明するためのモジュール構成図である。
【図6】本発明の実施の形態2に係る強制終了抑制装置を内蔵するコンピュータで稼働するプログラムの関係を示す模式図である。
【図7】本発明の実施の形態3に係る強制終了抑制装置を内蔵するコンピュータの機能ブロック図である。
【図8】本発明の実施の形態3に係る強制終了抑制装置を内蔵するコンピュータのCPUの注入プロセス特定処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0025】
以下、本発明の実施の形態に係る、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を有する装置について、図面に基づいて具体的に説明する。以下の実施の形態は、特許請求の範囲に記載された発明を限定するものではなく、実施の形態の中で説明されている特徴的事項の組み合わせの全てが解決手段の必須事項であるとは限らないことは言うまでもない。
【0026】
また、本発明は多くの異なる態様にて実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。実施の形態を通じて同じ要素には同一の符号を付している。
【0027】
以下の実施の形態では、コンピュータシステムにコンピュータプログラムを導入した、強制終了抑制装置について説明するが、当業者であれば明らかな通り、本発明はその一部をコンピュータで実行することが可能なコンピュータプログラムとして実施することができる。したがって、本発明は、所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を有する装置というハードウェアとしての実施の形態、ソフトウェアとしての実施の形態、又はソフトウェアとハードウェアとの組み合わせの実施の形態をとることができる。コンピュータプログラムは、ハードディスク、DVD、CD、光記憶装置、磁気記憶装置等の任意のコンピュータで読み取ることが可能な記録媒体に記録することができる。
【0028】
本発明の実施の形態によれば、所定のリソースを監視する監視プログラムが強制的に終了させられた場合であっても、コンピュータ自体が動作することができなくなるので外部からコンピュータに対して改ざん、なりすまし等の攻撃を仕掛けることができない。また、監視プログラムが稼働中であってもプロセスリストに表示されることがないので、第三者による強制終了攻撃を受ける可能性を低減することも可能となる。
【0029】
(実施の形態1)
図1は、本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータを、CPUを用いて構成した例を示すブロック図である。本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータ1は、複数の外部コンピュータ3、3、・・・と、ネットワーク2を介してデータ通信することが可能に接続されている。
【0030】
コンピュータ1は、少なくともCPU(中央演算装置)11、メモリ12、記憶装置13、I/Oインタフェース14、ビデオインタフェース15、可搬型ディスクドライブ16、通信インタフェース17及び上述したハードウェアを接続する内部バス18で構成されている。
【0031】
CPU11は、内部バス18を介してコンピュータ1の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置13に記憶しているコンピュータプログラム100に従って、種々のソフトウェア的機能を実行する。メモリ12は、SRAM、SDRAM等の揮発性メモリで構成され、コンピュータプログラム100の実行時にロードモジュールが展開され、コンピュータプログラム100の実行時に発生する一時的なデータ等を記憶する。
【0032】
記憶装置13は、内蔵される固定型記憶装置(ハードディスク)、ROM等で構成されている。記憶装置13に記憶しているコンピュータプログラム100は、プログラム及びデータ等の情報を記録したDVD、CD−ROM等の可搬型記録媒体90から、可搬型ディスクドライブ16によりダウンロードされ、実行時には記憶装置13からメモリ12へ展開して実行される。もちろん、通信インタフェース17を介してネットワーク2に接続されている外部コンピュータ3、3、・・・からダウンロードされたコンピュータプログラムであっても良い。
【0033】
通信インタフェース17は内部バス18に接続されており、インターネット、LAN、WAN等の外部のネットワーク2に接続されることにより、外部コンピュータ3、3、・・・等とデータ送受信を行うことが可能となっている。
【0034】
I/Oインタフェース14は、キーボード21、マウス22等のデータ入力媒体と接続され、データの入力を受け付ける。また、ビデオインタフェース15は、CRTモニタ、LCD等の表示装置23と接続され、所定の画像を表示する。
【0035】
以下、上述した構成のコンピュータ1にて外部コンピュータ3からの監視プログラムの強制終了攻撃に対する動作について説明する。図2は、本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータ1の機能ブロック図である。
【0036】
なお、コンピュータ1は、オペレーティングシステムとしてマイクロソフト社製のウインドウズ(登録商標)を使用しており、監視プログラムをDLL(ダイナミック・リンク・ライブラリ)として実装することを前提に説明する。もちろん、オペレーティングシステムとしてマイクロソフト社製のウインドウズ(登録商標)に限定されるものではなく、リナックス等の他のオペレーティングシステムを用いても良いことは言うまでもない。
【0037】
図2において、所定のプロセスの実行に応じて、監視プログラムを起動する監視プログラム起動部(監視プログラム起動手段)201は、監視プログラム注入部202、注入プロセス起動部203、スレッド生成部204、及びスレッド隠蔽部205を備えている。
【0038】
監視プログラム注入部202は、DLLとして実装されている監視プログラムを、終了した場合に監視プログラムの監視対象となるリソースを使用することができなくなるプロセスへ注入する。終了した場合に監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスとは、例えばコンピュータ本体を監視している監視プログラムに対するログオン及びログオフを制御するログオンプロセス、ネットワークを監視している監視プログラムに対するネットワークプロセス、ウエブを監視している監視プログラムに対するブラウザプロセス等を意味する。
【0039】
本実施の形態1では、オペレーティングシステムが有しているレジストリ(AppInit_DLLs)を使用する。これにより、オペレーティングシステムが起動され、DLLとして実装されている監視プログラムがロードされる。
【0040】
監視プログラムを所定のプロセスに「注入する」手段は、特にレジストリに限定されるものではなく、ウインドウズ(登録商標)に固有の機能であるログイン画面の表示と同時に監視プログラムをロードするDLL「GINA(msgina.dll)」を用いても良いし、メッセージフックを用いても良い。
【0041】
注入プロセス起動部203は、監視プログラムが注入されたプロセスを起動し、注入された監視プログラムをロードする。監視プログラムをロードする方法は特に限定されるものではないが、本実施の形態1では、新たなスレッドを生成して、生成した新たなスレッド(以下、派生スレッド)内で監視プログラムを稼働させる。もちろん、オペレーションシステムから自動的に監視プログラムをロードしても良い。
【0042】
スレッド生成部204は、新たな派生スレッドを生成して、生成した新たな派生スレッド内で監視プログラムを稼働させる。すなわち、派生スレッドと派生スレッドを生成したプロセスとは一体であり、派生スレッドに対して外部から強制終了攻撃が仕掛けられ、派生スレッドが終了させられた場合には、基礎となるプロセス自体も終了する。したがって、監視プログラムを含む新たな派生スレッドを生成したプロセスが、監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスである限り、派生スレッドの終了により所定のリソースを使用することができなくなる。
【0043】
例えば新たな派生スレッドを生成したプロセス、すなわち監視プログラムを注入したプロセスがログオンプロセス(winlogon.exe)である場合、派生スレッドを強制終了させるよう外部から攻撃を受け、派生スレッドが強制終了させられた場合、ログオンプロセスも終了することから、コンピュータ1を再起動しない限りだれもコンピュータ1を使用することができなくなる。したがって、外部から監視プログラムに対して強制終了攻撃が仕掛けられた場合であっても、コンピュータ1内のリソースが改ざん、なりすまし等の攻撃が仕掛けられることを未然に回避することが可能となる。
【0044】
なお、派生スレッドの優先度は、監視プログラムを注入した所定のプロセスが生成している主スレッドよりも低いことが望ましい。例えば監視プログラムを注入したプロセスがログオンプロセス(winlogon.exe)である場合、新たに生成した派生スレッドの優先度をログオン制御する主スレッドの優先度よりも低くしておく。これにより、監視プログラムによって、ログオンプロセスの動作が妨げられる可能性を低減することができる。
【0045】
図3は、本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータ1の監視プログラムのプロセス注入を説明するための模式図である。コンピュータ1は、監視プログラム301を、終了した場合に監視プログラム301の監視対象となる所定のリソースを使用することができなくなるプロセス302へ注入する。プロセス302は、起動時に主スレッド304、複数の副スレッド305、305、・・・に加えて、注入された監視プログラム301を含む新たな派生スレッド303を生成する。
【0046】
図4は、本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータ1のCPU11の処理手順を示すフローチャートである。コンピュータ1のCPU11は、DLLとして実装されている監視プログラムを、終了した場合に監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスへ注入する(ステップS401)。監視プログラムを注入するタイミングは特に限定されるものではない。しかし、オペレーションシステムの起動時に注入することが好ましい。外部からの強制終了攻撃に対して無力になるタイミングを生み出さないからである。
【0047】
CPU11は、監視プログラムが注入されたプロセスを起動する(ステップS402)。該プロセスが起動され、注入された監視プログラムがメモリ12の実行領域へロードされる。
【0048】
CPU11は、新たな派生スレッドを生成して(ステップS403)、生成した新たな派生スレッド内にてロードした監視プログラムを起動する。派生スレッドの優先度は、監視プログラムを注入した所定のプロセスが生成している主スレッドよりも低いことが望ましい。所定のプロセスの動作が妨げられる可能性を低減するためである。
【0049】
また、派生スレッドの存在を、外部へ見せないようにすることが望ましい。図2のスレッド隠蔽部(スレッド削除手段)205は、生成した新たな派生スレッドを識別する情報、例えばスレッドIDを、オペレーティングシステム上で稼働しているスレッドを識別する情報を抽出するスレッド抽出関数の戻り値から削除する。具体的には、ウインドウズ(登録商標)が有しているスレッド列挙APIであるEnumThreads、ToolHelp32等をAPIフックすることにより、プロセス内に存在するスレッドを列挙する場合に、戻り値から削除する。
【0050】
図5は、本発明の実施の形態1に係る強制終了抑制装置を内蔵するコンピュータ1の派生スレッド隠蔽の手順を説明するためのモジュール構成図である。図5に示すように、まずアプリケーション501がAPIである“ToolHelp32 API”502を呼び出す。“ToolHelp32 API”502内のフックポイント503が、アプリケーション501からの呼び出しを検出し、オペレーティングシステム504内の対応するAPIを呼び出す。
【0051】
オペレーティングシステム504内の対応するAPIはアプリケーション501へ、戻り値として存在するスレッドを識別する情報であるスレッドIDを返そうとするので、まず“ToolHelp32 API”502にてアプリケーション501への戻り値を受け取り、受け取った戻り値から新たな派生スレッドを識別する情報であるスレッドIDを削除し、削除した戻り値をアプリケーション501へ受け渡す。このようにすることで、アプリケーション501では、実際には派生スレッドがオペレーティングシステム504上で稼働しているにもかかわらず、“ToolHelp32 API”502の戻り値から削除されているので、列挙されるスレッドIDには新たな派生スレッドに対応するスレッドIDは含まれない。したがって、派生スレッドの存在を隠蔽することが可能となる。
【0052】
以上のように本実施の形態1によれば、監視プログラムをログオンプロセスのような正常に稼働していなければコンピュータ1自体を使用することができないプロセスに含まれるようにすることで、監視プログラムに対する外部からの強制終了攻撃を抑制することができる。すなわち、たとえ強制終了させられた場合であっても、外部の第三者は、コンピュータ1内のリソースの改ざん、なりすまし等の攻撃を仕掛けることができない。
【0053】
また、監視プログラムを含む派生スレッドを含むプロセスが稼働中であっても、派生スレッドを含むプロセスを、稼働中のプロセスを列挙したプロセスリストに表示されないようにすることができる。したがって、外部の第三者から派生スレッドを含むプロセスに対して直接的な強制終了攻撃が仕掛けられることを未然に回避することも可能となる。
【0054】
(実施の形態2)
実施の形態1に係る強制終了抑制装置を内蔵するコンピュータ1では、監視プログラムをログオンプロセスへ注入しているが、本実施の形態2では所定のリソースを監視する監視プログラムが監視対象である点で実施の形態1と相違する。なお、実施の形態2に係る強制終了抑制装置を内蔵するコンピュータ1の構成例及び機能ブロックは、実施の形態1に係る強制終了抑制装置を内蔵するコンピュータ1の構成例及び機能ブロックと同じであるため、同一の符号を付することにより詳細な説明は省略する。
【0055】
図6は、本発明の実施の形態2に係る強制終了抑制装置を内蔵するコンピュータ1で稼働するプログラムの関係を示す模式図である。図6に示すように、終了した場合に監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスへ注入された監視プログラム601は、該プロセスが起動された場合に生成される派生スレッド602とともに稼働する。
【0056】
監視プログラム601の監視対象は、他のプロセス603a、603b、・・・で稼働している他の監視プログラム604a、604b、・・・であり、監視プログラム601は、他の監視プログラム604a、604b、・・・が強制終了したか否かを検知するとともに、強制終了した旨を検知した場合には再起動する。
【0057】
監視プログラム601の監視対象である他の監視プログラム604a、604b、・・・は、それぞれリソース605a、605b、・・・を監視しており、外部から強制終了攻撃を受けた場合にはリソースを監視することができず、外部から改ざん、なりすまし等の攻撃が仕掛けられた場合であっても検知することができない。しかし、監視プログラム601が、他の監視プログラム604a、604b、・・・が外部からの強制終了攻撃を受けて強制終了した旨を検知することができるので、即座に強制終了した他の監視プログラム604a、604b、・・・を再起動することができ、外部からの改ざん、なりすまし等の攻撃から保護することができる。
【0058】
以上のように本実施の形態2によれば、複数の監視プログラム、例えばファイルアクセスの監視プログラム、印刷状況の監視プログラム等を一の監視プログラムで監視することができ、いずれかの監視プログラムが外部からの強制終了攻撃を受けて強制終了した場合であっても、即座に再起動することができる。
【0059】
(実施の形態3)
実施の形態1及び2に係る強制終了抑制装置を内蔵するコンピュータ1では、監視プログラムを注入するプロセスをユーザが選択しているが、本実施の形態3では注入するプロセスをコンピュータ1が自動的に選択する点で実施の形態1及び2と相違する。なお、実施の形態3に係る強制終了抑制装置を内蔵するコンピュータ1の構成例は、実施の形態1及び2に係る強制終了抑制装置を内蔵するコンピュータ1の構成例と同じであるため、同一の符号を付することにより詳細な説明は省略する。
【0060】
図7は、本発明の実施の形態3に係る強制終了抑制装置を内蔵するコンピュータ1の機能ブロック図である。所有プロセス特定部701は、監視対象となる所定のリソースを所有するプロセスを特定する。例えばセッションを所有するプロセス、デスクトップを所有するプロセス等を意味する。
【0061】
より具体的には、オペレーティングシステムがウインドウズ(登録商標)である場合に、監視プログラムがドライブの監視、クリップボードの監視等を行うときには、セッションを所有するプロセスであるwinlogin.exeが監視プログラムを注入するプロセスとなる。また、監視プログラムがシェルの操作の監視を行うときには、デスクトップを所有するExplorer.exeが監視プログラムを注入するプロセスとなる。
【0062】
一方、監視対象となる所定のリソースを所有するプロセスを特定することができない場合、プロセス絞込部702は、監視プログラムを注入するプロセスを絞り込む。監視プログラムを注入するプロセスとしては、同一セッション内の複数のプロセスのうち、最も早期に起動しており、しかも最後まで稼働しているプロセスであることが好ましい。監視プログラムが稼働する時間が最も長くなり、最もセキュリティが高くなるからである。
【0063】
また、一のプロセスに絞り込むことができない場合、監視プログラムを注入する候補となる、複数の注入候補プロセスにまで絞り込み、絞り込まれた複数の注入候補プロセスの共通の親プロセス又は上位プロセスに注入しても良い。さらに、一のプロセスにのみ監視プログラムを注入するのではなく、複数又は全てのプロセスに対して監視プログラムを注入し、少なくともいずれか一のプロセスが稼働する、すなわち必ず少なくとも一の監視プログラムが稼働するようにしても良い。
【0064】
監視プログラム注入部202は、所有プロセス特定部701で特定されたプロセス、又はプロセス絞込部702で絞り込まれて特定されたプロセスに、それぞれ監視プログラムを注入する。
【0065】
図8は、本発明の実施の形態3に係る強制終了抑制装置を内蔵するコンピュータ1のCPU11の注入プロセス特定処理の手順を示すフローチャートである。図8において、コンピュータ1のCPU11は、監視対象となる所定のリソースを所有する所有プロセスを特定することができるか否かを判断する(ステップS801)。
【0066】
CPU11が、所有プロセスを特定することができると判断した場合(ステップS801:YES)、CPU11は、所有プロセスを特定し、特定した所有プロセスに監視プログラムを注入する(ステップS802)。CPU11が、所有プロセスを特定することができないと判断した場合(ステップS801:NO)、CPU11は、同一セッション内で最も早期に起動するプロセスを特定する(ステップS803)。
【0067】
CPU11は、特定したプロセスに監視プログラムを注入し(ステップS804)、注入したプロセスを起動する(ステップS805)。CPU11は、ログオフ処理中であるか否かを判断し(ステップS806)、CPU11が、ログオフ処理中でないと判断した場合(ステップS806:NO)、CPU11は、次に起動するプロセスが存在するか否かを判断する(ステップS807)。CPU11が、次に起動するプロセスが存在しない、すなわち全てのプロセスが起動されていると判断した場合(ステップS807:NO)、CPU11は、処理をステップS806へ戻して、ログオフ処理の待ち状態となる。
【0068】
CPU11が、次に起動するプロセスが存在すると判断した場合(ステップS807:YES)、CPU11は、次に早く起動するプロセスを特定し(ステップS808)、処理をステップS804へ戻し、上述した処理を繰り返す。これにより、複数のプロセスにて監視プログラムを稼働させることができ、それぞれのプロセスの稼働時間を取得することができる。
【0069】
CPU11が、ログオフ処理中であると判断した場合(ステップS806:YES)、CPU11は、同一セッション内で最も稼働時間の長いプロセスを、次回、監視プログラムを注入する注入先のプロセスとして特定する(ステップS809)。これにより、同一セッション内の複数のプロセスのうち、最も早期に起動しており、しかも最後まで稼働しているプロセスを、次回、監視プログラムを注入する注入先のプロセスとして特定することができる。
【0070】
以上のように本実施の形態3によれば、監視プログラムを注入するプロセスを自動的に特定することができ、監視プログラムをログオンプロセスのような正常に稼働していなければコンピュータ1自体を使用することができない、最も効果的なプロセスに含まれるようにすることで、監視プログラムに対する外部からの強制終了攻撃を抑制することができる。
【0071】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変更、改良等が可能である。例えば、監視プログラムのプロセスへの注入方法は、コンピュータ1に導入されているオペレーティングシステムに応じて最も効果的な方法へ変更することができる。
【符号の説明】
【0072】
1 コンピュータ
2 ネットワーク
3 外部コンピュータ
11 CPU
12 メモリ
13 記憶装置
14 I/Oインタフェース
15 ビデオインタフェース
16 可搬型ディスクドライブ
17 通信インタフェース
18 内部バス
23 表示装置
90 可搬型記録媒体
100 コンピュータプログラム

【特許請求の範囲】
【請求項1】
所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を有する装置であって、
前記監視プログラムを含む所定のプロセスを実行することが可能としてあり、
該所定のプロセスは、終了した場合に前記監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスであり、
該所定のプロセスの実行に応じて、前記監視プログラムを起動する監視プログラム起動手段を備え、
前記監視プログラムが外部から強制終了させられた場合、前記所定のプロセスを終了するようにしてある装置。
【請求項2】
前記監視プログラムは、ダイナミックリンクライブラリとして実装され、
該ダイナミックリンクライブラリを前記所定のプロセスに注入するようにしてある請求項1記載の装置。
【請求項3】
前記監視プログラム起動手段は、前記所定のプロセスの実行に応じて、新たなスレッドを生成するようにしてあり、
生成したスレッド内で監視プログラムを実行する請求項1又は2記載の装置。
【請求項4】
生成した新たなスレッドを識別する情報を、稼働しているスレッドを識別する情報を抽出するスレッド抽出プログラムの戻り値から削除するスレッド削除手段を備える請求項3記載の装置。
【請求項5】
前記所定のリソースは、前記監視プログラムを実行するコンピュータ本体であり、
前記所定のプロセスは、前記コンピュータ本体へのログオン及びログオフを制御するプロセスである請求項1乃至4のいずれか一項に記載の装置。
【請求項6】
前記所定のリソースは、他のリソースを監視する他の監視プログラムであり、
前記監視プログラムは、前記他の監視プログラムの強制終了を検知する及び/又は前記他の監視プログラムを再起動する請求項1乃至4のいずれか一項に記載の装置。
【請求項7】
所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を付与する方法であって、
前記監視プログラムを含む所定のプロセスを、該所定のプロセスが終了した場合に前記監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスとし、
該所定のプロセスの実行に応じて、前記監視プログラムを起動し、
前記監視プログラムが外部から強制終了させられた場合、前記所定のプロセスを終了する方法。
【請求項8】
前記監視プログラムは、ダイナミックリンクライブラリとして実装され、
該ダイナミックリンクライブラリを前記所定のプロセスに注入する請求項7記載の方法。
【請求項9】
前記所定のプロセスの実行に応じて、新たなスレッドを生成し、
生成したスレッド内で監視プログラムを実行する請求項7又は8記載の方法。
【請求項10】
生成した新たなスレッドを識別する情報を、稼働しているスレッドを識別する情報を抽出するスレッド抽出プログラムの戻り値から削除する請求項9記載の方法。
【請求項11】
前記所定のリソースは、前記監視プログラムを実行するコンピュータ本体であり、
前記所定のプロセスは、前記コンピュータ本体へのログオン及びログオフを制御するプロセスである請求項7乃至10のいずれか一項に記載の方法。
【請求項12】
前記所定のリソースは、他のリソースを監視する他の監視プログラムであり、
前記監視プログラムは、前記他の監視プログラムの強制終了を検知する及び/又は前記他の監視プログラムを再起動する請求項7乃至10のいずれか一項に記載の方法。
【請求項13】
所定のリソースを監視する監視プログラムの強制終了攻撃に対する耐性を付与する方法をコンピュータで実行することが可能なコンピュータプログラムであって、
前記コンピュータは、前記監視プログラムを含む所定のプロセスを実行することが可能としてあり、
該所定のプロセスは、終了した場合に前記監視プログラムの監視対象となる所定のリソースを使用することができなくなるプロセスであり、
前記コンピュータを、
該所定のプロセスの実行に応じて、前記監視プログラムを起動する監視プログラム起動手段、及び
前記監視プログラムが外部から強制終了させられた場合、前記所定のプロセスを終了する手段
として機能させるコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−248486(P2011−248486A)
【公開日】平成23年12月8日(2011.12.8)
【国際特許分類】
【出願番号】特願2010−118879(P2010−118879)
【出願日】平成22年5月25日(2010.5.25)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.リナックス
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【復代理人】
【識別番号】100117260
【弁理士】
【氏名又は名称】福永 正也
【Fターム(参考)】