明細書 コ ンピュータ ウィルス検出装置 技術分野
この発明は、 電子メール、 WE B、 ピア ' ツー ' ピアのフ ァイル交換 ソフ ト ウェア等によ り 、 イ ンターネッ トなどコ ンピュータの外部から導 入されるなどして実行可能となったプログラムの実行をモニタ リ ングし て、 コンピュータ ウィルスの振る舞い、 若しく は、 コンピュータ ウィル スに類似した振る舞いを検出し、 プログラムの実行停止等の対応をする こ と に関する。 背景技術
現在、 コンピュータ ウィルス (以下、 単に 「ウィルス」 とい う場合が ある。) の検出技術は、 パターンマッチングを用いる ものが主流である。 この技術は、 例えば、 特開 2 0 0 3 — 2 1 6 4 4 4、 特開 2 0 0 2 — 1 9 6 9 4 2、 WO 0 2 / 0 8 6 7 1 7 A 1 などによ り 開示されてい る。 パターンマッチングは、 コンピュータのメモリや、 ハー ドディスク 上のファイルに着目 し、 過去に発見されたウィルスの特徴的なシグネチ ャ と比較してウィルスを検出する。 パターンマッチングは誤検出が少な い技術であるが、 既知のウィルス しか検出できない。
現在、一日 に、約 1 0〜 2 0種類の新しいウィルスが見つかつている。 一般ユーザが使用するコンピュータが、 そのよ う な新しいウィルスを検 出し、 対処するこ と ができるよ う にするためには、 頻繁にァップデー ト される ウィルス · シグネチヤ · フ ァイルを速やかにアンチウィルス会社 から入手して、 コンピュータにイ ンス ト一ルしなければいけない。 と こ
ろで、 新しいウィルスは、 過去のウィルスをほんの少し変えたものが多 い。 このため、 実際のウィルスの振る舞いは、 どれも非常に似ている と いう特徴がある。 それにもかかわらず、 ウィルスのプログラムとい う情 報と してのパターンは異なるので、 ウィルスが発見されるごとに、 ウイ ルス . シグネチヤ . ファイルをイ ンス トールする必要がある。
ウィルスの検出技術には、 パターンマ ッチングの他に、 ヒ ユーリ ステ イ ツ ク スキャ ンがある。 ヒ ュー リ スティ ッ ク スキャンは、 擬似的にコー ドを実行し、 ウィルスに似た挙動をしないかを、 エミ ユ レーシヨ ンに基 づいて判断を行な う。 しかし、 実行フ ァイルのイ ンス トラクシヨ ンを全 てエミ ユ レーシヨ ンできる とは限らない。 また、 プロ グラムサイズが大 き く 、 又は/及び、 複雑に暗号化されたウィルスのエミ ユ レ一シヨ ンに は、 非常に時間がかかる。 発明の開示
本発明では、 コンピュータ上で、 新規にプロセスを生成するか、 また は実行中のプロセスにアタ ッチ (A t t a c h ) して、 プロセスを監視 対象と し、 コンピュータに重要な変更を加えるこ とができるシステムコ ールなどの呼び出しを監視するこ とで、 振る舞いを監視する。 そして、 監視対象であるプロセスの振る舞いと、 過去のコンピュータ ウィルスの 特徴的な振る舞いと、 を比較する。 ウィルスの特徴的な振る舞いが検出 される と、 監視対象であるプロセスを中止できるよ う に、 ユーザに通知 などをする。 ここで、 監視対象プロセスは、 主に、 イ ンターネッ トに接 続するプロセスを指す。
図 1 は、 コ ンピュータでのプロセスの実行を概念的に説明する図であ る。 上位の層にアプリ ケーショ ン 1 0 1 、 1 0 2、 電子メ ^ ~ルソフ ト ゥ エア 1 0 3 、 W E Bブラ ウザ 1 0 4が動作する。 この う ち、 アプリ ケー
シヨ ン 1 0 2 、 電子メールソフ ト ウェア 1 0 3、 W E Bブラ.ゥザ 1 0 4 が、 イ ンタ一ネッ トに接続などして、 コンピュータの外部からプロダラ ムを導入するプロ グラムを実行するプロセスである とする。本発明では、 それらのプロセス と、 システムコール A P I 層 1 0 5 と、 の間に、 本発 明によるセキュ リ ティ層を設ける。 こ のセキュ リ ティ層は、 システムコ ールの呼び出しを監視する層である。
システムコール A P I 層 1 0 5 の下には、 オペレーティ ングシステム (以下では、 「 O S」 と略記する場合がある。) を実現するカーネル層 1 0 6があ り 、 その下層に、 デパイス ドライバ/ハー ドウェア 1 0 7 の層 がある。
通常のコンピュータにおける o S においては、 カーネルモー ドと、 ュ 一ザモー ドと、 に分かれて処理が行なわれる。 システムコール A P I 層 1 0 5 よ り上の部分 1 0 8 は、 ユーザモー ドで処理が行なわれる部分で あ り、 システムコール A P I 層 1 0 5 よ り 下の部分 1 0 9 は、 カーネル モ ドで処理が行なわれる部分である。
ユーザモー ドで実行するプロセスは、 個別のコンテキス ト と、 仮想ァ ドレス空間を持っている。 そのため、 同 じユーザモー ドで実行するプロ セス同士が、 他のプロセスのメモリ をアクセスできないよ う になってい る。
本発明は、 アプリ ケーショ ンプログラムの実行に際して設定するべき ブレークポイ ン トの位置と、 そのアプリ ケーショ ンプログラムの実行が そのプレークポイ ン トに到達したときに、 そのアプリ ケーショ ンプロ グ ラムのスタ ックの内容に基づいて、 そのアプリ ケーショ ンプログラムが コンピュータ ウィルス性を有するかど う かを判断する判断プロ グラムと を関違付けて保持し、 アプリ ケーショ ンプロ グラムにブレークポイ ン ト を設定し、 アプリ ケーショ ンプログラムの実行がブレークポイ ン トに到
達した時には、 そのブレークポイ ン トの位置と関連付けて保持された判 断プロ グラムを実行するコ ンピュータ ウィルス検出装置を提供する。 また、 コ ンピュータ ウ ィ ルス検出装置は、 アプリ ケーショ ンプロ グラ ムを保持し、保持されたアプリ ケーショ ンプロ グラムを実行する と きに、 ブレークポイ ン トをアプリ ケーショ ンプログラムに設定するよ う になつ ていてもよい。
また、 ブレークポイ ン トの位置は、 システムコール A P I 関数に基づ いて定められていても よい。 このよ う にするこ とによ り 、 図 1 のセキュ リティ層が実現される。
また、 アプリ ケーショ ンプログラムの実行が、 プレークポイ ン ト に到 達したと きには、 システムコール A P I 関数の引数を検査してもよい。
さ らに、 システムコール A P I 関数が、 システム リ ソースを変更する ものである場合には、 システムコールの実行の前に、 コンピュータ ウイ ルス検出装置がシステムリ ソースの複製が生成されるよ う になっていて もよい。
また、 コ ンピュータ ウィ ルス検出装置は、 アプリ ケーショ ンプロ グラ ムがコ ンピュータ ウ ィルス性を有する と判断された際には、 システムコ ール A P I 関数の実行を阻止するよ う になつていてもよい。
また、システムコール A P I 関数が通信を行な う ものである場合には、 コ ンピュータ ウィルス検出装置は、 その通信を失敗させる よ う外部の通 信機器 (例えば、 ルータ) に命令を出力する よ う になっていてもよい。 また、 アプリ ケーショ ンプログラムがコンピュータ ウィルス性を有す るかどう かは、 アプリ ケーショ ンプロ グラムが到達したブレークポイン トの履歴に基づいて判断されるよ う になつていてもよい。
また、 本発明において、 アプリ ケーショ ンプログラムは、 J a V a (登 録商標) などの言語で記述されたプロ グラムを実行するためのパーチヤ
ルマシンであっても よい。 また、 そのバーチャルマシンは、 携帯電話で 動作するものであってもよい。
W I N D OW S (登録商標) を含めた O S においては、 プロセスの振 る舞いをコン ト ロールする方法と して、 カーネル ドライバを書き、 シス テムコールをフックする方法がある (例えば、 コンピュータァソシエイ ッ社の e T r u s t A c c e s s C o n t r o l " S o f t h o o k "で用いられている方法)。 一方、 本発明によるプロセスの振る舞 いの監視は、 デバッガとい う ソフ ト ウエア開発で使われる機能を使用し て行なわれる。
本発明における振る舞いの監視は、 全てユーザモー ド、 つま り アプリ ケーシヨ ン層で行なわれる とい う特徴を有する。 これによ り 、 カーネル ドライバを用いる場合にしばしば引き起こ されるシステムダウンなどの 致命的なエラ一の発生が無い。
以下では、 本発明の理解を助けるために、 従来におけるデバッガの機 能について概説を行な う。 .
図 2は、 アプリ ケーショ ンプログラムを実行するプロセス 2 0 1 と、 デバッガ 2 0 2 と、 の関係を例示する。 ( 1 ) まず、 デバッガ 2 0 2 が、 プロセス 2 0 1 にアタ ッチする。 アタ ッチによ り、 プロセス 2 0 1 とデ パッガ 2 0 2 と の関係が O Sによ り管理されるよ う になる。 すなわち、 O Sは、 デバッガ 2 0 2 にプロセス 2 0 1 を関連付け、 例えば、 プロセ ス 2 0 1 の状態に変化が発生する と、 デバッガ 2 0 2 に通知が行なわれ るよ う になる。 ( 2 ) 次に、 デバッガ 2 0 2 は、 プロセス 2 0 1 にプレー クポイ ン トを設定する。 「ブレークポイ ン ト」 は、 プロセス 2 0 1 のプロ グラムカウンタが所定の値になった場合に、 C P Uの実行を停止させる メモ リ ア ドレスを示す。 そのよ う なメモリ ア ドレスを指定するこ と を、 ブレークポイ ン トの設定という。 ブレークポイ ン トの設定を行な う方法
と しては、 ブレークポイ ン トが示すメモリ ア ドレス値を C P Uに設定し た り 、 プレークポイ ン トのプロ グラムカ ウンタ値が示すメモリ ア ドレス の命令を特殊な命令に置換した りする こ とによ り実現される (例えば、
J o n a t h a n B . R o s e n b e r g著、 n o w D e b u g g e r s W o r k、 A l g o r i t h m s , D a t a S t r u c t u r e s , a n d A r c h i t e c t u r e〃、 W i l e y C o m p u t e r P u b 1 i s h i n g 、 1 9 9 7年参照。)。 その後、 プロ セス 2 0 1 が矣行を開始し、 ブレークポイ ン トに到達する と、 ( 2 ) 実行 が停止したこ とが O S に通知される。 こ の通知は、 プロセス 2 0 1 が行 な う という よ り も、 プロセスの実行がブレークポイン トに到達する こ と によ り C P Uに割り込みが発生し、 その割り込みを処理するための処理 ルーチンによ り行なわれる。 なお、 処理ルーチンは、 O Sの初期化など によ り適宜設定されている。 O Sが通知を受ける と、 ( 4 ) デバッガ 2 0 2 に通知が行き、 デバッガ 2 0 2 はプロセス 2 0 1 の実行がプレークポ イ ン トに到達したこと を知る。 その後、 デバッガ 2 0 2の利用者の操作 によ り 、 ( 5 ) プロセス 2 0 1 のデバッグの操作が行なわれる。 デバッグ 操作の代表的なものと しては、 プロセスのスタ ックの内容を読み、 関数 や手続きが呼ばれたシーケンスを調べた り 、 引数や変数の値などを調べ た りする。
なお、 ブレークポイ ン トはプロセスごと に設定されるもの'である。 し たがって、 「アプリ ケーショ ンプロ グラムを実行するプロセスにプレー クポイ ン トを設定する」 という記述が正確であるが、 記述が長く なるの で、 以降では、 アプリ ケーショ ンプログラムと、 アプリ ケーショ ンプロ グラムを実行するプロセス と、を同一視して、 「アプリ ケーショ ンプログ ラムにブレークポイン トを設定する」 などと記述する場合がある。
図 3 は、 従来技術において、 高級言語での関数や手続きの呼び出しが
どのよ う にコンパイルされるかを例示する。 高級言語において、 符号 3 0 1 に示すよ う な Γ f (引数 1 , 引数 2 , …, 引数 n ) ; 」 という 関数な いし手続き (以後、 「関数」 と省略する。) の呼び出しが記述されている とする。 これを ンパイルする と、 符号 3 0 2 に示すよ う なマシンイ ン ス ト ラ タ シヨ ンに変換される。 すなわち、 p u s h命令によ り 引数をス タ ックに積み、 最後に、 「 c a 1 1 f 」 によ り 、 f を呼び出す。 多く の C P Uでは、 c a l l f のよ う な、 関数を呼び出すマシンイ ンス ト ラ ク ショ ンの実行によ り 、 呼び出された関数の処理から戻る際にプロ グラ ムカウンタへ設定される値がスタ ックに積まれる。
図 4 は、 関数 f のコ ンパイル結果を例示する。 f の呼び出しが行なわ れる と、 まず、 「 p u s h f p J とい う マシンイ ンス ト ラク ショ ンによ り、 f の呼び出しの前のフ レームポイ ンタ ( f p ) の値がスタ ック に積 まれる。 「フ レームポイ ンタ」 は、 関数呼び出しのためのスタ ックの部分 を示すための C P Uのレジスタである。 フ レームポイ ンタは、 後述する よ う に、 関数の呼び出し列 (コールシーケンス) を得るために重要な役 割をする。 次に、 「m o v e s p→ f p」 によ り スタ ッ クポイ ンタ ( s p ) の値をフ レームポイ ンタ .( f p ) にセッ トする。 これによ り 、 現在 呼び出されている f のスタ ック の部分をフ レームポイ ンタ ( f p ) が指 すよ う になる。 その後、 f の処理が行なわれる。 f の呼び出しから復帰 する際には、 Γ ρ ο ρ f p」 によ り 、 f の呼び出しの前のフ レームポィ ンタ ( f p ) の値が設定され、 「 r e t 」 によ り 、 f の呼び出しから復帰 する。 例えば、 スタ ックに積まれているプログラムカウンタの値が、 プ ログラムカ ウンタ 設定される。
図 5 は、 スタ ックに値が積まれた状態を例示する。 スタ ック 5 0 1 の 一番上の部分に積まれている値 (すなわち、 スタ ック の一番上の部分に 格納されている値) が、 現在実行中の関数に係るものであり 、 エリ ア 5
0 1 の部分には、 引数の値が積まれている。 エリ ア 5 0 3 には、 関数呼 び出し後のプログラムカ ウンタが積まれている。 エリ ア 5 0 4 には、 関 数呼び出し前のフ レームポイ ンタ ( f p ) の値が積まれている。 エ リ ア 5 0 5 には、 関数の中で定義されている 自動変数の値などが格納されて いる。 フ レームポイ ンタ ( f p ) は、 エリ ア 5 0 4の上部を指してお り 、 エリ ァ 5 0 4 に積まれている値は、 前の関数呼び出しの時にスタ ック 5 0 1 に積まれたフ レームポイ ンタ ( f ) が格納されている位置の上を 指している。 したがって、 フ レームポイ ンタの値をたどるこ とによ り 、 どのよ う な呼び出し列を経て、 関数が呼び出されたかを知るこ とができ る。 また、 スタ ックに積まれたプログラムカウンタの値を調べるこ とに よ り 、関数がプロ グラムのどの位置から呼ばれたかを知るこ とができ る。 また、 スタ ックに積まれた引数を調べるこ とによ り 、 関数にどのよ う な 値が与えられたかを知るこ とができる。
本発明に係るコンピュータ ウィルス検出装置は、 このよ う なデバッガ の機能を利用する こ とによ り 、プロセスの振る舞いを監視する。ただし、 従来技術におけるデバッガにおいては、 人間がデパッガを操作してデパ ッグ対象のプロセスを調査するのに対して、 本発明に係る コ ンピュータ ゥィルス検出装置によるプロセスの振る舞いの監視は、 自動的に行なわ れる。
また、 本発明は、 商用ソフ ト ウェアにまつわる課題を解決するもので ある。 以下、 スパイ ウェアを例に用いて説明する。 スパイ ウェアは、 ィ ンターネッ ト経由でその作成者または発信者に情報を送信するアプリ ケ ーシヨ ンプログラムである。 スパイ ウェアは、 パック ドア ' ウィルス と 似た振る舞いをする。 悪質なスパイ ウェアは、 ユーザ情報や、 キース ト ロークを盗み、 特定の通信チャネルを通して、 他のマシンへ情報を送信 する。
しかし、 アンチウィルス企業の多く は、 そのポリ シーと してスパイ ゥ エアなどの商用ソフ ト ウエアを検出しない。 ハー ドディスク を破棄する 際に使用するデータを消去する商用ソフ ト ウエアがあ り 、 それが友人か ら電子メールと して送られてく るかも知れないからである。 ユーザの意 図通り にデータを消去するプログラムは、 アンチウィルスでは検出 しな い
したがって、 プロ グラムを実行した結果が、 コンピュータや、 ユーザ のビジネスにイ ンパク トを与えるものであっても、 現在のアンチウィル ス技術では、 それらの脅威を完全に防ぐこ とは不可能である。
現在のウィルスは、 わずかに L i n u x (登録商標) で活動する もの があるが、 圧倒的に W I N D OW S (登録商標) で活動する。 その一つ の原因と して、 W I N D OW S (登録商標) を使う ほとんどの人々は、 ァ ドミ ニス ト レータ権限をロ グオン · ュ一ザに加えているこ とが挙げら れる。 ア ドミニス ト レータ権限は、 アプリ ケーショ ンをイ ンス トールす る際に必要だが、 U N I X (登録商標) のよ う にシステム管理者のため に一時的に、 r o o t (特権ユーザ) になる習慣が W I N D OW S (登 録商標) にはない。 W I N D OW S (登録商標) では、 ア ド ミ ニス ト レ ータのよ う な特権ユーザのまま、 メールで送られてきた不審なファイル がしばしば実行される。
ァ ドミ ニス ト レータ権限は、システムの全ての資源にアクセスでき る。 つま り はシステムが稼動するために必要な重要なファイルを改ざんでき る。 こ ういった環境で、 ウィルスを実行する と、 コ ンピュータの重要な ファイルが改ざんされ、 さ らにはインターネッ トを通して、 世界中のコ ンピュータがウィルスに感染するこ とがある。プロダラムの実行環境は、 ユーザのためにもっ と適切に保護されるべきである。
図面の簡単な説明
図 1 は、 従来技術における、 コ ンピュータでのプロセスの実行を概念 的に説明する図である。
図 2 は、 従来技術における、 アプリ ケーショ ンプロ グラムを実行する プロセスと、 デバッガと、 の関係を例示する。
図 3 は、 従来技術において、 高級言語での関数や手続きの呼び出 しが どのよ う にコンパイルされるかを例示する。
図 4は、 従来技術における関数のコンパイル結果を例示する。
図 5 は、従来技術において、スタ ックに値が積まれた状態を例示する。 図 6 は、 従来技術において、 仮想プロセス空間に D L L ファイルがマ ッ ビングされた状態を例示する。
図 7は、 従来技術におけるプロセスの仮想メモ リ空間を示す。
図 8 は、 本発明における処理のフローチヤ一 トを例示する。
図 9 は、 本発明の実施形態 1 に係る コ ンピュータ ウ ィルス検出装置の 機能ブロ ック図を例示する。
図 1 0は、ブレークボイ ト情報が保持されている状態の一例を示す。 図 1 1 は、 アプリ ケーショ ンプロ グラムごとにブレークポイ ン ト情報 が提供されている様子を例示する。
図 1 2 は、 コンピュータ ウィルス検出装置の処理のフローチャー トを 例示する。
図 1 3 は、 本発明の実施形態 2 に係るコンピュータ ウイルス検出装置 による表示画面を例示する。
図 1 4は、 本発明の実施形態 2 に係る コンビユ ー.タ ウイルス検出装置 め機能プロ ック図を例示する。
図 1 5は、 コンピュータ ウィルス検出装置の処理のフローチャー トを 例示する。
図 1 6 は、 本発明の実施形態 3 におけるブレークポイ ン ト情報を例示 する。
図 1 7は、 コンピュータ ウィルス検出装置の処理のフローチャー トを 例示する。
図 1 8 は、 本発明の実施形態 7 に係る コンピュータ ウィルス検出装置 の機能プロ ック図を例示する。
図 1 9 は、 コンピュータ ウィルス検出装置の処理のフローチャー トを 例示する。
図 2 0は、 本発明の実施形態 8 の概要を例示する。
図 2 1 は、 本発明の実施形態 8 に係る コンピュータ ウイルス検出装置 の機能ブロ ック図を例示する。
図 2 2は、 通信阻止命令の一例を示す。
図 2 3 は、 コンピュータ ウィルス検出装置の処理のフローチャー トを 例示する。
図 2 4は、 本発明の実施形態 8 に係る通信機器の機能ブロ ック図を例 示する。
図 2 5 は、 通信機器の処理のフローチャー トである。
図 2 6 は、 本発明の実施形態 9 に係る コ ンピュータ ウィルス検出装置 の機能プロ ック図を例示する。
図 2 7は、 コンピュータ ウィルス検出装置の処理のフロ ^"チャー トを 例示する。
図 2 8 は、 本発明の実施形態 1 0 に係るコ ンピュータ ウィルス検出装 置の使用の形態を例示する。
図 2 9 は、 本発明の実施形態 1 1 に係るコンピュータ ウィルス検出装 置の使用の形態を例示する。
発明を実施するための最良の形態
以下、 本発明を実施するための最良の形態について、 図を用いて実施 形態と して説明する。 なお、 本発明は、 これら実施形態に何ら限定され るものではなく 、 その要旨を逸脱しない範囲において、 種々なる態様で 実施し得る。
(本発明の概要)
本発明は、 プロ グラムの振る舞いに着目 し、 プロ グラムがウィルスか ど う かを判断する。 本発明を具現化したプロセス と 、 監視対象のプロセ スは、 デバッガ ( D e b u g g e r ) と、 デパツギ ( D e b u g g e e ) の関係に類似した関係を持つ。 デバッガは、 本発明を具現化したプロセ スに対応し、 デバツギは、 監視対象のプロセスに対応する。
デバッグされるプロセスをデバツギという。 本発明は、 監視対象プロ セスをデバツギと して実行する。実行中のプロセスを監視する場合には、 実行中のプロセスにアタ ッチする。
本発明を具現化するプロセスは、 監視対象プロセスの振る舞いをチェ ックするため、 システムに重要な変更を加えるシステムコール (または A P I 関数) にブレークポイ ン ト (B r e a k p o i n t s ) を設定す る。
ブレークポイン トは、 I n t e l (登録商標) C P Uの場合には、 I n t 3のハー ドウェア割り 込みイ ンス トラクシヨ ンを、 プレークポイ ン トが示すメモリ ア ドレスに配置するこ とによ り 実現できる。 プロセスの 実行がプレークポイ ン トに到達する と、 そのプロセスの実行は停止し、 本発明に係るコンピュータ ウィルス検出装置が、 そのプロセスのスタ ッ クの内容などを調査して、 監視対象のプロセスの振る舞いと、 過去のコ ンピュータ ウイルスの特徴的な振る舞いを比較する。
ウィルスの特徴的な振る舞いと しては、 以下のものを挙げるこ とがで
さる。
• 自分自身をシステムフォルダに; ^ピーする。
• ネッ ト ワークで共有されたディ レク ト リ を採す。 そして、 自分自 身をコ ピーする。
' メールのア ドレス帳にアクセス し、 ウィルスを添付したメールを 大量に送信する。
• ファイル交換ソフ ト ウェアがイ ンス トールされていれば、 それを 使って自分自身をばらま く 。
* 重要なシステムファイルを消す。 または改ざんする。
' 再起動しても、 自分自身が実行されるよ う に、 システムを変更す る。
本発明は、 監視対象プロセスの A P I 呼び出しを過去のコ ンピュータ ウィルスの振る舞いなどと比較し、 監視対象プロセスの停止や、 ユーザ への警告を発する。
以下、 W I N D OW S (登録商標) を例に具体的に述べる。 W I N D O W S (登録商標) では、 フ ァイルやディ レク ト リ を操作する A P I は、 K E R N E L 3 2. D L L とい う ファイルに含まれている。 レジス ト リ に関違する A P I は、 AD VA P I 3 2. D L Lに含まれている。 ネッ ト ワークの共有 ドライブを操作する A P I は、 MP R . D L Lに含まれ ている。 以下、 これらを D L Lファイルと呼ぶ。
監視対象のプ口セスがどの A P I を呼び出そ う と しているか判断する 方法を以下に述べる。 監視対象プロセスが実行を開始する と きに、 D L Lファイルは、 仮想プロセス空間にマッピングされる。
図 6 は、 仮想プロセス空間 6 0 1 に、 K e r n e 1 3 2. D 1 1 、 M R P . D 1 1 、 A d V a p i 3 2. D 1 1 がマッ ピングされた状態を例 示する。 このよ う にマッピングが行なわれるこ とによ り 、 監視対象プロ
セスは、 例えば、 A d v a p i 3 2. D 1 1 で定義されている R e g C r e a t e K e y E x などの関数を呼び出すことができる。
図 7 は、プロセスの仮想メ モ リ 空間を示す。仮想メ モ リ空間 7 0 0 は、 メモ リ ア ドレスの小さい方力 ら、 イ ンス ト ラ ク ショ ンの部分 7 0 1 、 ヒ ープの部分 7 0 2、 D L Lファイルがマッ ピングされる部分 7 0 3 、 ス タ ッ ク の部分 7 0 4を有する。 部分 7 0 3は、 ヒープの部分 7 0 2 と ス タ ック の部分 7 0 4 と の間に位置し、 D L Lファイルがマッピングされ る。 すなわち、 部分 7 0 3 のメ モ リ ア ドレスに対して参照を行な う と、 ファイルと して格納されている D L Lファイルの内容が得られる。
D L Lファイルのマ ップア ドレス (D L Lファイルが仮想メ モ リ 空間 へマッ ピングされた部分の最初のア ドレス) は、 イ メージベース と呼ば れ、 各 D L Lでユニークに、 他と重複しないよ う決められている。
例えば、 レジス ト リ を操作する R e g O p e n K e y E x Aとい う A P I は、 AD VA P I 3 2. D L Lに含まれている。
R e g O p e n K e y E x Aのア ドレスを、 「 AD V A P I 3 2 . D L
Lのイ メージべース」 + 「 R e g O p e n K e y E x Aの R V A」 によ り求める。なお、 「 R V A」とは、 R e l a t i v e V i r t u a l A d d r e s s の略である。 すなわち、 D L Lフアイノレの中に、 A P I の 定義が現れる相対的な位置である。
ア ドレスが求められたら、 デバッガ用 A P I などを使用 してブレーク ポイ ン トを設定する。
監視対象プロセスの実行が、 ブレーク ポイ ン トにヒ ッ ト した ら、 A P I の引数などを解析する。
監視対象プロセスが、 レジス ト リゃシステムファイルに変更を加える A P I を呼び出した 合、 このステップで、 バックアップを作成する。 ウィルスの特徴を検出したらプロセスの停止、 またはユーザにレポ一
トする。 検出しなければ処理を続ける。
具体例を説明する。 多く の W I ND OW S (登録商標) ウィルスは実 行する と再起動時に、 システムに常駐するために、 以下のレジス ト リ へ 値を追加する。
H K E Y_L O C A L_MA C H I N E ¥ S O F TWA R E ¥M I
C R O S O F T ¥W i n d o w s ¥ C u r r e n t V e r s i o n ¥ R u n
参考と して、 このキーに値を追加するメ ジャーなウィルスを以下に挙げ る。
N I MD A, L O V E L A T T E R , T R O J _M A T R I X , W
3 2一 MAG I S T R , T R O J _HY B R I S,WO RM一 K L E Z, WO RM_B U G B E A R , W O R M一 B A D T R A N S , J S _ E X C E P T I O N, WO RM—L I R B A
メールで受け取った不明なプログラムがシステムに常駐する必要はない と考えられる。
上記レジス ト リ を追加するには、 次の 2ステップの A P I 呼び出しが 必要である。
R e g C r e a t e K e y E x A ··· R u nの下に新しいキーを 作る。
R e g S e t V a l u e E x A … 値をセッ トする。
上の 2つの A P I は、 AD VA P I 3 2. D L Lに含まれている。 こ こでは、 AD V A P I 3 2. D L Lのイ メージベースが 0 x 7 7 D 8 〇 0 0 0 である とする'。数字の 0 Xは、 1 6進数であるこ と を示す。 また、 R e g C r e a t e K e y E x Aの R V Aが 0 x 2 9 4 2 7、 R e g S e t V a l u e E x Aの R VAが 0 x 2 C 5 8 Dである とする。
R e g C r e a t e K e y E x Aのア ドレスは、
0 x 7 7 D 8 0 0 0 0 + 0 x 2 9 4 2 7 = 0 x 7 D A 9 4 2 7 R e g S e t V a 1 u e E x Aのア ドレスは、
O x 7 7 D 8 0 0 0 0 + O x 2 C 5 8 D = O x 7 7 D A C 5 8 D で求め られる。 これらは仮想ァ ドレス空聞であるから同時に複数のプロ セスが実行されていても、 同じ仮想ァ ドレスで D L Lフ ァイルがマ ップ される。
ァ ドレスを求めたら、 それらへプレークポイ ン トを設定する。
も し、 監視対象のプロセスが、 W I N D OW S (登録商標) 起動時に 自動実行するプログラムであれば、 R e g C r e a t e K e y E x Aの ブレークポイ ン トがヒ ッ トする。 次にスタ ックを解析する。 C言語など のコンパイ ラでは、 スタ ック を介して引数が受け渡されるよ う なマシン イ ンス ト ラクシヨ ンが生成されるためである。
8 0 0 0 0 0 0 2 0 0 4 1 f 0 2 8 AD V A P I 3 2 ! R e g C r e a t e K e y E x A
例えば、 上記の数値が得られたとする。 R e g C r e a t e K e y E x Aを呼ぶ際には、 2番目の引数はレジス ト リ の位置である。 この例で は、 メ モ リ ア ドレス 4 1 f 0 2 8ヘレジス ト リ の位置が入っている。 そ こで、 メ モ リ ア ドレス 4 I f 0 2 8 をチェ ックする。
> 4 1 f 0 2 8
4 1 f 0 2 8 S O F TWAR E ¥M i c r o s o
4 1 f 0 3 8 f t ¥W i n d o w s ¥ C u r r e
4 1 f 0 4 8 n t V e r s i o n ¥ R u n ¥V i
4 1 f 0 5 8 u s
A P I と引数から 監視プロセスは、 R u nの下に V i r s という キーを作ろう と しているこ とが分かる。
プロ グラム実行前の状態に復帰する場合には、 V i r u s キーを削除
すればよい。 そこで、 システムコールの実行の前にレジス ト リ などのシ ステム リ ソースの変更の履歴や、 システム リ ソースの複製、 などを保持 するよ う にしてもよい。
同様に、 プロ グラムの振る舞いを把握するために必要な A P I をチェ ック し、 その呼び出しの傾向を解析する。
呼び出しを監視する A P I と、 引数の対応 (以下これを検出ルールと 呼ぶ) は、 ハー ドコーディ ングではなく 、 検出ルールを記したファイル を外部、 例えばイ ンターネッ トから読み込むこ とで追加、 変更できるこ とが望ま しい。
この方法では、ファイルをスキャンするオーバーへッ ドは、一切無い。 ゥィルスの特徴的な振る舞いを検出したら、 監視対象のプロセスをユー ザの意思によ り 、 中止させられるよ う に、 ダイアログボックス等を表示 するのが好適である。
または、 プロ グラムを中止せずに、 続けて実行する。 フローチャー ト を図 8 に例示する。
(実施形態 1 )
本発明の実施形態 1 と して、 ブレークポイ ン ト位置情報と、 アプリ ケ ーショ ンプログラムがそのプレークポイ ン ト位置情報で示すブレークポ イ ン トに到達した場合に実行する判断プロ グラムと、 を関連付けて保持 し、 ブレークポイ ン トをアプリ ケーショ ンプロ グラムに設定して、 判断 プログラムを実行する コ ンピュータ ウィルス検出装置について説明する ,
(実施形態 1 : 構成)
図 9 は、 本実施形態に係るコンピュータ ウィルス検出装置の機能プロ ック図を例示する。 コ ンピュータ ウィ ルス検出装置 9 0 0 は、 ブレーク ポイ ン ト情報保持部 9 0 1 と、 ブレークポイン ト設定部 9 0 2 と、 判断 プログラム実行部 9 0 3 と、 を有する。
なお、 以下の説明から明らかになる よ う に、 これらの部を有する コン ピュータ ウィルス検出装置は、 コ ンピュータで動作するプログラム と し て実現が可能である。 したがって、 図 9 は、 そのよ う なプロ グラムのモ ジュール構成を示す図である と解釈する こ と もできる。 すなわち、 その よ う なプログラムは、 ブレークポイ ン ト情報保持部をプログラムによ り 実現するブレークポイ ン ト情報保持ステップと、 ブレークポイ ン ト設定 部をプロ グラムによ り 実現するブレークポイ ン ト設定ステップと、 判断 プロ グラム実行部をプログラムによ り 実現する判断プログラム実行ステ ップと、 をコンピュータに実行させるためのプロ グラムである。
「ブレークポイ ン ト情報保持部」 9 0 1 は、 ブレークポイ ン ト情報を 保持する。 例えば、 ハー ドディスクや半導体メモリ などに、 プレークポ イ ン ト情報を保持する。 「ブレークポイ ン ト情報」 と は、 ブレークポイ ン ト位置情報と、 判断プロ グラムと、 を含む情報である。 「含む」 とあるの で、 ブレークポイ ン ト情報の成分は、 ブレークポイ ン ト位置情報と判断 プログラムとに限られない場合がある。
'「ブレークポイ ン ト位置情報」 と は、 アプリ ケーショ ンプロ グラムの 実行に際して設定するべきブレークポイ ン ト の位置を示す情報である。 ブレークポイ ン トの位置は、 例えば、 アプリ ケーショ ンプロ グラムのメ モリ ア ドレスによって示される。 また、 アプリ ケーショ ンプロ グラムが 呼び出す関数、 手続き、 メ ソッ ド (以下、 「関数など」 とい う。) の名前 によつても示される場合がある。
「判断プロ グラム」 とは、 そのアプリ ケーショ ンプログラムの実行が 前記ブレークポイン トに到達したと きに、 そのアプリ ケーショ ンプログ ラムの実行で参照されるスタ ックの内容に基づいて、 そのアプリ ケーシ ョ ンプログラムがコ ンビユ^ "タ ウィルス性を有するかどうかの判断を行 な うためのプロ グラムである。 「そのアプリ ケーショ ンプログラム」とは.
後で説明されるブレークポイ ン ト設定部 9 0 2 によ り ブレークポイ ン ト 位置情報で示される位置にブレークポイ ン トが設定されるアプリ ケーシ ヨ ンプロ グラムを意味する。 「前記プレークポイ ン ト」 とは、 プレークポ イ ン ト位置情報が示す位置に設定されたブレークポイ ン トを意味する。
「アプリ ケーショ ンプロ グラムがコ ンピュータ ウィルス性を有する」 場合とは、 アプリ ケーショ ンプログラム自身がコ ンピュータ ウィルスで ある場合のみならず、 アプリ ケーショ ンプロ グラムがコ ンピュータ ウイ ルスに感染した場合、 アプリ ケーショ ンプロ グラムのパグゃセキユ リ テ ィホールなどが利用 されて設計時には想定されていなかった動作をする 場合、 などを含む。例えば、 ウェブサーバプロ グラムのバグを利用 して、 悪意を持った人間が、 通常の操作では得るこ とができないファイルの内 容を得るなどの動作をする場合である。
そのアプリ ケーショ ンプロ グラムの実行で参照されるスタ ックの内容 に基づいて、 そのアプリ ケーショ ンプロ グラムがコンピュータ ウィルス 性を有するかどう かの判断を行なう 方法と しては、 種々のものがある。 例えば、 そのアプリ ケーショ ンプロ グラムの実行で参照されるスタ ック を、 スタ ッ ク の上部からフ レームポイ ンタをたどってスタ ッ クの下部ま でたどるこ とができるかどう かを判断する。 コンピュータ ウィルスの中 には、 スタ ッ ク の内容を破壊するこ と によ り 、 アプリ ケーシ ョ ンプロ グ ラムが正常に動作する'ならば呼び出さない態様でシステムコ一ルなどを 呼び出す。 そこで、 スタ ッ クの内容が破壊されていないかどうかを判断 する。 その判断の一つと して、 フ レームポイ ンタをたど り、 プロ グラム の実行において最初に呼ばれる関数など (例えば、 — s t a r t u p と いう名前の関数など) の呼び出しまでたどるこ とができるかどうカ^こよ り 、 アプリ ケーショ ンプログラムがコ ンピュータ ウィルス性を有するか どうかの判断を行なう。
また、 アプリ ケーショ ンプログラムが、 ブレークポイ ン トに到達した 際、 どのよ う な関数などの呼び出し系列を経て到達したかを調べる こ と で、コンピュータ ウィルス性を有するかどう かの判断を行なっても よい。 も し、 想定されない関数などの呼び出しの系列の後にブレークポイ ン ト に到達している場合には、 コ ンピュータ ウィルス性を有するこ とが疑わ れ.る。 '
また、 ブレークボイ ン トが設定された関数などの引数を調べるこ とに よ り 、 アプリ ケーショ ンプログラムがコンピュータ ウィルス性を有する かどう かを判断してもよい。 例えば、 電子メールを用いて他のコンビュ ータに自 らを感染させる コ ンピュータ ウィルスは、 電子メールア ドレス を取得するために電子メ ールア ドレスのァ ドレス帳をアクセスする。 そ こで、 ァ ドレス帳へのアクセスを行な うための引数が指定されているか どう かに基づいて、 判断を行なう よ う になっていてもよい。
なお、 多く の場合、 コ ンピュータ ウ ィルス検出装置を実現するプログ ラムを実行するプロセス と、 アプリ ケーショ ンプロ グラムを実行するプ 口セス とは、 異なるプロセスであ り 、 通常は、 コンピュータ ウィルス検 出装置を実現するプロ グラムが、 アプリ ケーシ ョ ンプロ グラムを実行す るプロセスのメモ リ 空間の內容、 特にスタ ックの內容を読むこ とはでき ない。 しかし、 オペレーティ ングシステムは、 特定の関係にあるプロセ ス間であれば、 あるプロセスが他のプロセスのメモ リ 空間やレジスタの 内容を読んだり 、 変更した りするこ と を許可する機能を有しているのが 通常である。 ここでいう 「特定の関係」 の例と しては、 親子関係や、 同 じユーザが実行しているプロセスであ り 、 他のプロセスに対して所定の システムコール (例えば、 a t t a c hなど) を実行したという 関係、 などがある。 したがって、 コンピュータ ウィルス検出装置をプロ グラム によ り実現する場合には、 そのプログラムを実行するプロセス と、 アブ
リ ケーシヨ ンプログラムを実行するプロセス と、 は特定の関係になつて いる必要がある。
なお、 ほとんどのオペレーティ ングシステムでは、 他のプロセスのメ モ リ 空間やレジスタの内容を読んだり 、 変更したりするためのシステム コールが提供されている。 あるいは、 Z d e V / r o c とい うスぺシ ャルデバイスを用いて、 他のプロセスのメモ リ 空間やレジスタの內容を 読んだり 、 変更したりするこ とができるよ う になつている場合もある。 判断プログラムは、 例えば、 イ ンタープリ タによって実行される もの であってもよい。 例えば、 判断プログラムが L i s p 、 P e r 1 、 R u b yなどの言語によ り記述されていても よい。また、判断プログラムは、 コ ンピュータが直接実行でき るマシンィ ンス トラク ショ ンの列からなつ ていてもよい。 この場合には、 コンピュータ ウ ィルス検出装置を実現す るプロ グラムの一部と して、判断プロ グラムが組み込まれていても よい。 あるいは、 判断プロ グラムが、 例えば、 動的ライプヲ リ などと して、 動 的にコ ンピュータ ウィルス検出装置を実現するプロ グラムにロー ドされ るよ う になっていてもよい。 なお、 判断プロ グラムが、 イ ンタープリ タ で実行されるものであったり 、 動的にロー ドされるものであったり する 場合には、 判断プログラムを差し替えるこ とが容易に行なえる。
図 1 0は、 ブレークポイ ン ト情報がブレークポイ ン ト情報保持部 9 0 1 によ り保持されている状態の一例を示す。 図 1 0 ( a ) においては、 ブレークポイン ト情報がテーブルに保持されている。 列 1 0 0 1 には、 ブレークポイン ト位置情報が格納され、 列 1 0 0 2 には、 判断プロ ダラ ムが格納される。 図 1 0 ( b ) は、 判断プログラムへのポイ ンタがテー プルに格納されている状態の一例を示す。 そのポイ ンタは、 コ ンビユ ー タ ウ ィルス検出装置を実現するプログラムを実行するプロセスのメ モ リ 空間内部における特定の場所を指す。
図 1 1 は、 アプリ ケ シヨ ンプロ グラムごと にブレークポイン ト情報 が提供されている様子を例示する。 ブレークポイン ト情報保持部 9 0 1 は、 このよ う に、 アプリ ケーショ ンプロ グラムごと にブレ^"クポイ ン ト 情報を保持していてもよい。
「ブレークポイ ン ト設定部」 9 0 2 は、 アプリ ケーショ ンプロ グラム に、 ブレークポイン ト情報保持部 9 0 1 で保持されたブレークポイ ン ト 情報に基づいて、 ブレ^ "クポイ ン ト情報を設定する。 すなわち、 ブレー クポィ ン ト情報に含まれるブレークボイ ン ト位置情報が示す位置にブレ ークポイ ン トを設定する。 この設定は、 オペレーティ ングシステムが提 供するシステムコールやスペシャルデパイ スを用いて行な う。 「基づい て」 と は、 例えば、 ブレークポイ ン ト位置情報が関数などの名前を用い て表現されている場合には、 関数などの名前から、 その関数などのア ド レスを得る こ とを意味する。 関数などの名前と、 そのア ド レス と、 の対 応付けは、 アプリ ケーショ ンプロ グラムのシンボルテーブルを読むこ と などによって得るこ とができる。
「判断プロ グラム実行部」 9 0 3 は、 前記ァプリ ケーショ ンプロ ダラ ムの実行が、 ブレークポイ ン ト設定部 9 0 2で設定されたプレークポィ ン トに到達したと き、 前記ブレークポイ ン ト情報に含まれる判断プロ グ ラムを実行する。 「前記アプリ ケーショ ンプログラム」 とは、 ブレークポ イ ン ト設定部 9 0 2 によ り ブレークポイ ン トが設定されたアプリ ケーシ ヨ ンプログラムである。 コンピュータ ウィルス検出装置は、 ブレークポ イ ン トが設定されたアプリ ケーショ ンプログラムの実行がブレークポィ ン トに到達するまで待つこ と を行な う。 このためには、 例えば、 w a i t システムコールが呼び出される。 アプリ ケーショ ンプロ グラムの実行 がブレークポイン トに到達する と、 ( 1 ) w a i t システムコールからコ ンピュータ ウィルス検出装置の処理が再開し、 ( 2 )どのブレークポイ ン
トに到達したかを判断し、 ( 3 ) 判断プロ グラム実行部 9 0 3 に、 判断プ ログラムを実行させる。 アプリケーショ ンプロ グラムがどのブレークポ イ ン トに到達したかを判断するには、 アプリ ケーショ ンプログラムを実 行するプロセスのレジスタに保持されているプログラムカ ウンタの値を 取得するごとによ り判断する。
(実施形態 1 : 処理)
図 1 2は、 コ ンピュータ ウ ィルス検出装置の処理のフ ローチャー トを 例示する。
ステ ップ S 1 2 0 1 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイ ン トを、 アプリ ケーショ ンプロ グラムに設定する。 例 えば、 この処理はプレークポイン ト設定部 9 0 2 によ り行なわれる。 ステップ S 1 2 0 2において、アプリ ケーショ ンプログラムの実行が、 ブレークポイ ン トに到達するまで待つ。 この処理は、 例えば、 w a i t システムコールを実行するこ とによ り 、 実現される。
ステップ S 1 2 0 3 において、 アプリ ケーショ ンプログラムの実行が 到達したブレークポイ ン トに対応する判断プロ グラムを実行する。 例え ば、 この処理は判断プログラム実行部 9 0 3によ り行なう ώ
ステップ S 1 2 0 4において、 処理を終了するかどう かを判断する。 例えば、 ステップ S 1 2 0 3 における判断プロ グラムの実行によ り 、 ァ プリ ケーシヨ ンプロ グラムがコンピュータ ウィルス性を有する と判断さ れた場合には、 処理を終了する。 も し、 処理を終了しないと判断された 場合には、 ステップ S 1 2 0 5へ処理を移行する。
ステップ S 1 2 0 5 において、 アプリ ケーショ ンプログラムの実行を 続ける。アプリ ケーショ ンプログラムがブレークポイン トに到達する と、 アプリ ケーショ ンプログラムの実行が停止するので、 停止したと ころか ら処理を再開させる。 例えば、 アプリ ケーショ ンプログラムを実行する
プロセスにシグナル (例えば、 S I G _ C O N T ) を送る。 その後、 ス テツプ S 1 2 0 2へ処理を移行する。
なお、 コ ンピュータ ウィルス検出装置は、 ブレークポイン ト情報保持 ステップと、 ブレークポイ ン ト設定ステップと、 判断プログラム実行ス テツプと、 を含むコ ンピュータ ウ ィルス検出方法を使用するための装置 と考えるこ とができ る。 「ブレークポイ ン ト情報保持ステップ」 は、 ブレ ーク ポイ ン ト情報を保持するステ ップであ り 、 Γブレークポイ ン ト設定 ステップ J は、 アプリ ケーショ ンプログラムに、 ブレークポイン ト情報 保持ステップで保持されたブレークポイ ン ト情報に基づいて、 ブレーク ポイ ン トを設定するステップであ り 、 「判断プログラム実行ステップ」と は、 アプリ ケーショ ンプログラムの実行が、 ブレークポイ ン ト設定ステ ップで設定されたブレークポイン トに到達したと き、 ブレークポイ ン ト, 情報に含まれる判断プロ グラムを実行するステップである。 すなわち、 ブレークポイ ン ト情報保持ステップは、 ブレークポイ ン ト情報保持部を 動作するステップであ り 、 ブレークポイン ト設定ステップは、 ブレーク ポイ ン ト設定部を動作するステップであり 、 判断プロ グラム実行ステッ プは判断プロ グラム実行部を実行するステップである。 なお、 本発明に 係る コ ンピュータ ウィルス検出方法の使用は、 本発明に係るコンビユ ー タ ウィルス検出装置に限定されるこ とはない。
(実施形態 1 : 主な効果)
本実施形態によ り 、 オペレーティ ングシステムのカーネル内部に修正 を加えるこ となく 、 アプリ ケーショ ンプロ グラムを実行するプロセスの 振る舞いを、 コンピュータ ウィルス検出装置によ り監視するこ とができ るので、 システムダウンの発生を回避することが可能となる。 また、 コ ンピュータ ウィルスの振る舞いは非常に似ている場合が多いので、 従来 のアンチウィルスソフ ト ウエアにおいて必要であった、 パターンフアイ
ルを最新のものに更新し続けるこ との必要性が低く なった り 、 パターン ファイルの更新が不要となったりする。
(実施形態 2 )
本発明の実施形態 2 と して、 アプリ ケーショ ンプロ グラムを保持する コ ンピュータ ウィルス検出装置を説明する。
図 1 3 は、 本実施形態に係るコンピュータ ウィルス検出装置による表 示画面を例示する。 ウィ ン ドウ 1 3 0 1 は、 本実施形態に係る コ ンビュ ータ ウィルス検出装置が表示する ウィ ン ドウである。 そのウィ ン ドウの サブウィ ン ドウ 1 3 0 2 に、 アプリ ケーショ ンプロ グラムのアイ コンが 表示されている。 必要に応じて、 ウィ ン ドウ 1 3 0 1 の外に表示されて いるアイ コ ン (例えば、 アイ コ ン 1 3 0 4 ) を ドラ ッグして、 サブウイ ン ドウ 1 3 0 2の内部に移動させるこ とができる。 サブウィ ン ドウ 1 3 0 2 の内部に表示されたアイ コ ン (例えば、 アイ コ ン 1 3 0 3 ) をダブ ルク リ ックなどするこ と によ り 、 アプリ ケーショ ンプログラムを実行す るプロセスが、 コンピュータ ウィルス検出装置を実行するプロセスの子 プロセスと して生成され、 その振る舞いが監視される。
(実施形態 2 : 構成)
図 1 4は、 本実施形態に係る コ ンピュータ ウィルス検出装置の機能ブ ロ ック図を例示する。 コンピュータ ウィルス検出装置 1 4 0 0 は、 プレ —クポイ ン ト情報保持部 9 0 1 と、 ブレークポイ ン ト設定部 9 0 2 と、 判断プログラム実行部 9 0 3 と、 アプリ ケーショ ンプロ グラム保持部 1 4 0 1 と、 プロ グラム実行開始部 1 4 0 2 と、 ブレークポイ ン ト設定命 令部 1 4 0 3 と、 を有する。
したがって、 本実施形態に係るコ ンピュータ ウィルス検出装置は、 実 施形態 1 に係るコ ンピュータ ウ ィ ルス検出装置が、 さ らに、 アプリ ケー ショ ンプログラム保持部 1 4 0 1 と、プログラム実行開始部 1 4 0 2 と、
ブレークポイ ン ト設定命令部 1 4 0 3 と、 を有する構成となっている。 なお、 本明細書においては、 同じ定義が適用される部には、 でき るだけ 同じ符号を割り 当てるこ と にする。 なお、 同じ符号が割り 当てられてい るこ とは、 実際の製造などにおいて、 同一の構成などになるこ と を意味 するものではない。
「アプリ ケーショ ンプロ グラ ム保持部」 1 4 0 1 は、 アプリ ケーショ ンプログラムを保持する。 保持には、 ¾々の形態がある。 例えば、 ァプ リ ケーシヨ ンプログラム全体を格納する形態がある。 また、 アプリ ケー ショ ンプログラムが格納されている場所、 例えばファイルシステムにお けるパスなどで表現される、 を格納する形態もあり得る。
「プロ グラム実行開始部」 1 4 0 2 は、 アプリ ケーショ ンプロ グラム 保持部 1 4 0 1 で保持されたアプリ ケーショ ンプロ グラムの実行を開始 する。 例えば、 コ ン ピュータ ウ ィルス検出装置を実現するプロ グラムを 実行するプロセスの子プロセス と して、 アプリ ケーショ ンプロ グラムの 実行を開始する。
「ブレークポイ ン ト設定命令部」 1 4 0 3 は、 プロ グラム実行開始部 1 4 0 2 で実行が開始されるアプリ ケーショ ンプロ グラムに対して、 ブ レークポイ ン ト設定部 9 0 2 に、 プ„レークポイ ン トの設定を命令する。 例えば、 ブレークポイ ン ト設定部 9 0 2 を実現する関数などの呼び出し を行なう。
(実施形態 2 : 処理)
図 1 5 は、 本実施形態に係るコ ンピュータ ウィルス検出装置の処理の フローチヤ一トを例示する。
ステップ S 1 5 0 1 において、 アプリ ケーショ ンプログラムを保持す る。 この処理は、 アプリ ケーショ ンプロ グラム保持部 1 4 0 1 によ り行 なわれる。 例えば、 図 1 3 において、 アイ コン 1 3 0 4をサプウィ ン ド
ゥ 1 3 0 2の内部に ドラ ッグされたこ と を検出し、 アイ コン 1 3 0 4が 表わすアプリ ケーショ ンプロ グラムを保持する。
ステップ S 1 5 0 2 において、 アプリ ケーショ ンプロ グラムが選択さ れるまで待つ。 例えば、 図 1 3 において、 サプウィ ン ドウ 1 3 0 2 の内 部のアイ コンがダブルク リ ック されるまで待つ。
ステップ S 1 5 0 3 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイ ン トを、 選択されたアプリ ケーショ ンに設定するこ と を命ずる。 この処理は、 ブレークポイ ン ト設定命令部 1 4 0 3によ り行 なわれる。
ステップ S 1 5 0 4において、ブレークポイ ン トの設定の完了を待つ。 例えば、 ブレークポイン ト設定部 9 0 2 を実現する関数などの呼び出し から戻るまで待つ。
ステップ S 1 5 0 5 において、 選択されたアプリ ケーショ ンプロ ダラ ムを実行する。 よ り正確に述べる と、 選択されたアプリ ケーショ ンプロ グラムを実行するためのプロセスを実行させる。 ステップ S 1 5 0 5 の 後は、 図 1 2 のフローチャー トのステップ S 1 2 0 2、 ステップ S 1 2 0 3、ステップ S 1 2 0 4、ステップ S 1 2 0 5 を実行するこ と となる。 最近のオペレーティ ングシステムにおいては、 一つのプロセスの中で複 数のス レツ ドを並列 / /平行に動作させる こ とが可能となっている。 そこ で、 ステップ S 1 2 0 2、 ステップ S 1 2 0 3 、 ステップ S 1 2 0 4、 ステップ S 1 2 0 5 の実行は、 図 1 5 のフローチャー トを実行するス レ ッ ドとは別のス レツ ドによ り行なわれてもよい。
ステップ S 1 5 0 6 によ り 、 処理を終了するかどう かを判断する。 例 えば、 コンピュータ ウィルス検出装置の操作者が、 終了ポタンを押した かどう 力 によ り判断する。 も し、 終了でなければ、 ステップ S 1 5 0 2 へ戻る。
(実施形態 2 : 主な効果)
本実施形態によ り 、 振る舞いを監視するべきアプリ ケーショ ンプロ グ ラムを実行するプロセスを容易に生成するこ とが可能と なる。 また、 コ ンピュータ ウィルスを外部から導入する虞が無いアプリ ケーショ ンプロ グラムは、 監視の対象と しないよ う にするこ とができるので、 ブレーク ポイ ン トの設定によ り 、 そのよ う なアプリ ケーショ ンプログラムを実行 するス ピー ドを低下させるこ とがない。
(実施形態 3 )
本発明の実施形態 3 と して、 システムコール A P I 関数にブレークポ イ ン ト を設定し、 プロセスの振る舞いを監視するコ ンピュータ ウィルス 検出装置について説明する。
(実施形態 3 : 構成)
本実施形態に係る コ ンピュータ ウイルス検出装置は、 実施形態 1 又は 2のコ ンピュータ ウィルス検出装置のブレークポイ ン ト情報保持部 9 0 1 が保持するブレークポイ ン ト情報を、 アプリ ケーショ ンプロ グラムの システムコール A P I 関数に基づいて定められるよ う にしたものである, 「システム コール A P I 関数」 とは、 システムコールを呼び出すため のライブラ リ 関数などを意味する。 そのよ う なライブラ リ 関数などは、 通常は、 システムコールに対する引数をスタ ックに積み、 トラ ップ命令 を実行するよ う になっている。 トラ ップ命令の実行によ り 、 オペレーテ イ ングシステムによ り C P Uに設定された割り 込みルーチンが起動され. オペレーティ ングシステム内部の処理が開始される。 スタ ックに引数を 積み、 トラ ップ命令を実行する処理を、 直接に高級言語で表現する こ と は困難であるので、 そのよ う な処理を行なう ライブラ リ 関数などが用意 されている。
図 1 6 は、 本実施形態におけるブレークポイ ン ト情報を例示する。 図
1 6 において、 R e g C r e a t e K e y E x Aがシステムコ一ノレ A P I 関数の名前となっている。 したがって、 ブレークポイ ン ト設定部がプ レークポイン トを設定する場合には、 システムコール A P I 関数の名前 をア ドレスに変換する必要がある。 その変換の処理については、 概要の 項で説明した通りである。
(実施形態 3 : 主な効果)
コンピュータ ウィルスは、 システムコール A P I 関数を用いて、 自身 をコ ンピュータに感染させるこ とが多いので、 システムコール A P I 関 数の呼び出しを検出して、 アプリ ケ一ショ ンプログラムがコ ンピュータ ウィルス性を有するかどう かを判断するこ とで、 少ないブレークポイ ン トの設定で的確に判断するこ とが可能となる。
(実施形態 4 )
本発明の実施形態 4 と して、 システムコール A P I 関数の引数の検査 に基づいて、 判断を行なう コ ンピュータ ウィルス検出装置について説明 する。
(実施形態 4 : 構成)
本実施形態に係るコ ンピュータ ウィルス検出装置は、 実施形態 3 に係 るコンピュータ ウィルス検出装置において、 判断プログラムに、 システ ムコール検査プロ グラムを含ませた構成と なっている。 「システムコ一 ル検査プログラム」 とは、 そのアプリ ケーショ ンプロ グラムが呼び出す システムコール A P I 関数の引数の検査に基づいて、 そのアプリ ケーシ ヨ ンプログラムがコ ンビユ ^ ~タ ウィルス性を有するかどう かの判断をす るためのプロ グラムである。 「そのアプリ ケーショ ンプロ グラム」 とは、 ブレークポイ ン ト設定部 9 0 2 によ り ブレークポイ ン トが設定されたァ プリ ケーシヨ ンプログラムを意味する。
したがって、 本実施形態においては、 アプリ ケーショ ンプロ グラムの
実行がブレークポイ ン トに到達する と、 アプリ ケーショ ンプログラムの システムコール A P I 関数の引数が検査されるこ とになる。 この検査の 結果に基づいて、 アプリ ケーショ ンプロ グラムがコンピュータ ウィルス 性を有するかどうかが判断される。
なお、 本実施形態において、 引数が検査されるシステムコール A P I 関数は、ブレ一クポイン トが設定されたものに限定はされない。例えば、 アプリ ケーショ ンプロ グラムのマシンイ ンス ト ラ ク シ ョ ンを全て調べて 全てのシステムコール A P I 関数の引数が検査されるよ う になつていて もよい。 また、 到達したプレークポイ ン トでのシステムコ ^ "ル A P I 関 数の引数を記憶しておき、 後にブレークポイ ン トに到達したときに、 記 憶されたシステムコール A P I 関数に引数を検査するよ う になつていて もよい。
(実施形態 4 : 主な効果)
本実施形態では、システムコール A P I 関数の引数の検査に基づいて、 コ ンピュータ ウィルス性が判断されるので、 よ り 的確に判断を行な う こ とが可能となる。
(実施形態 5 )
本発明の実施形態 5 と して、 到達したブレークポイ ン トにおけるシス テムコール A P I 関数の引数を検査するコ ンピュータ ウィルス検出装置 について説明する。
(実施形態 5 : 構成)
本実施形態に係る コンピュータ ウイルス検出装置は、 実施形態 4 に係 るコ ンピュータ ウィルス検出装置において、 システムコール検查プロ グ ラムによって検査される引数を、 ブレークポイ ン ト情報保持部 9 0 1 が 保持するブレークポイン ト位置情報で定められるシステムコール A P I 関数の引数と したものである。
例えば、 図 1 6 に例示されるよ う に、 R e g C r e a t e K e y E x Aとい う システムコール A P I 関数に.ブレークポイン トが設定され、 ァ プリ ケーショ ンプログラムの実行がそのブレークポイ ン トに到達した場 合には、 システムコール検査プロ グラムは、 その R e g C r e a t e K e y E x Aの引数を検查する。 その検査の例は、 本発明の概要の項で述 ベたとおり である。
(実施形態 5 : 主な効果)
本実施形態によ り 、 呼び出されたシステムコール A P I 関数の引数の 検査に基づいてコ ンピュータ ウィルス性の判断がされるので、 よ り 的確 に判断を行なえる。
(実施形態 6 ) - 本発明の実施形態 6 と して、 システム リ ソースを変更するシステムコ ール A P I 関数が呼ばれた場合、 変更されるシステム リ ソースの複製を 生成する コンピュータ ウィルス検出装置について説明する。
(実施形態 6 : 構成)
本実施形態に係るコンピュータ ウィ ルス検出装置は、 実施形態 4また は 5 のコンピュータ ウィルス検出装置において、 判断プロ グラムに、 複 製作成プロ グラムを含ませた構成となっている。 「複製作成プログラム」 は、 そのアプリ ケーショ ンプログラムのシステムコール A P I 関数によ り システム リ ソースが変更される場合に、 その変更される システム リ ソ ースの複製を生成する。 「そのアプリ ケーショ ンプロ グラム」 と は、 プレ ークポイ ン ト設定部 9 0 2 によ り ブレークポイ ン トの設定が行なわれた アプリ ケーショ ンプログラムである。
したがって、 本実施形態においては、 ブレークポイ ン ト位置情報は、 システム リ ソースを変更するシステムコール A P I 関数の位置を示すこ と となる n こ こでい うシステム リ ソース とは、 例えば、 レジス ト リ 、 フ
アイルなど.、 コンピュータが使用する リ ソースの う ち、 複製が可能なリ ソースを意味する。
例えば、 レジス ト リ を変更するシステムコール A P I 関数にブレーク ポイ ン トを設定しておき、 アプリ ケーショ ンプログラムの実行が、 その ブレークポイ ン トに到達した場合には、 レジス ト リ の複製をする複製作 成プログラムが実行される。 複製が作成される と、 システムコールによ り レジス ト リ の変更が行なわれる。レジス ト リ の複製するにあつたては、 レジス ト リ 全体を複製してもよいし、 変更される部分だけを複製しても よい。 レジス ト リ の変更される部分は、 システムコール A P I 関数の引 数によ り判断するこ とができる。
なお、 本実施形態において、 複製作成プロ グラムの実行は、 アプリ ケ ーシヨ ンプロ グラムがコンビュ タ ウィルス性を有する と判断される場 合に行なう よ う にしてもよい。 これによ り 、 作成される複製の量を減ら すこ とができる。
(実施形態 6 : 処理)
図 1 7 は、 本実施形態に係るコンピュータ ウィルス検出装置の処理の フローチヤ一トを例示する。
ステ ップ S 1 7 0 1 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイン トをアプリ ケーショ ンプログラムに設定する。
ステップ S 1 7 0 2 において、 アプリ ケーショ ンプログラムの実行が ブレークボイ ン トに到達するまで待つ。
ステップ S 1 7 0 3 において、 判断プログラムを実行する。
ステップ S 1 7 0 4 において、 判断プログラムの実行の結果が、 ァプ リ ケーシヨ ンプロ グラムがコンピュータ ウィルス性を有するものである かど う かを判定する。 も し、 コンピュータ ウィルス性を有するものであ れば、 ステップ S 1 7 0 5 へ処理を移行させ、 そ う でなければ、 ステツ
プ S 1 7 0 7へ処理をスキップさせる。
ステップ S 1 7 0 5 において、 アプリ ケーシ ョ ンプロ グラムがシステ ム リ ソースを変更しよ う と しているかどう かを判定する。 この判定は、 到達したブレークポイ ン トに係るシステムコール A P I 関数の種類、 そ の引数を調べるこ とによ り行な う こ とができる。 も し、 システム リ ソー スを変更しよ う と している場合には、 ステップ S 1 7 0 6へ処理を移行 させ、 そうでなければ、 ステップ S 1 7 0 7へ処理をスキップさせる。 ステップ S 1 7 0 6 において、 複製作成プロ グラムによ り 、 システム リ ソースの複製を作成する。
ステップ S 1 7 0 ' 7 において、 全体の処理を終了するかどう かを判断 する。 も し、 終了 しないと判断される と、 ステップ S 1 7 0 8 へ処理を 移行させる。
ステップ S 1 7 0 8 において、 アプリ ケーショ ンプログラムの実行を 続け、 ステップ S 1 7 0 2へ処理を移行させる。 も し、 アプリ ケーショ ンプログラムがコンピュータ ウィルスであ り 、 システム リ ソースが不正 なものに変更されても、 ステップ S 1 7 0 6で作成された複製によ り シ ステムを復元するこ とができる。
(実施形態 6 : 主な効果)
本実施形態においては、 変更されるシステム リ ソースの複製が作成さ れるので、 アプリ ケーショ ンプログラムがコンピュータ ウィルスであり コ ンピュータが感染したと しても、 システムリ ソースの複製を用いてシ ステムの復旧が可能となる。
(実施形態 7 )
本発明の実施形態 7 と して、 アプリ ケーショ ンプロ グラムがコンビュ —タ ウ ィ ルス性を有する と判断された場合に、 システムコール A P I 関 数の実行をさせないコ ンピュータ ウィルス検出装置について説明する。
(実施形態 7 : 構成)
図 1 8 は、 本実施形態に係るコ ンピュータ ウィルス検出装置の機能ブ 口 ック図を例示する。 本実施形態に係る コンピュータ ウイルス検出装置 の構成は、 実施形態 1 から 6 のいずれかのコ ンピュータ ウィルス検出装 置が、 実行阻止部を有する構成となっている。 したがって、 例えば、 コ ンピュータ ウィルス検出装置 1 8 0 0 は、 ブレークポイ ン ト情報保持部 9 0 1 と、 ブレークポイ ン ト設定部 9 0 2 と、 判断プロ グラム実行部 9 0 3 と、 矣行阻止部 1 8 0 1 と、 を有する。 コ ンピュータ ウィルス検出 装置 1 8 0 0 は、 このほかに、 アプリ ケーショ ンプロ グラム保持部、 プ ログラム実行開始部、ブレークポイ ン ト設定命令部を有していてもよい。
「実行阻止部」 1 8 0 1 は、 判断プログラム実行部 9 0 3 による判断 の結果、 判断の対象となったアプリ ケーショ ンプログラムがコ ンビユー タ ウィルス性を有すると判断された場合に、 アプリ ケーショ ンプロ ダラ ムのシステムコール A P I 関数の実行をさせないための部である。
スタ ッ ク の使用が図 5 に例示されたものである'場合には、 実行阻止部 1 8 0 1 は、 フ レームポイ ンタ ( f p ) の値を用いて、 部分 5 0 4 に格 納されている関数呼び出し前のフ レームポイ ンタの値を取得してフ レー ムポイ ンタ ( f p ) に設定し、 プログラムカ ウンタの値を部分 5 0 3 に 格納されている値にして、 システムコール A P I 関数の実行をさせない よ う にする。
(実施形態 7 : 処理)
図 1 9 は、 本実施形態に係るコ ンピュータ ウィルス検出装置の処理の フローチヤ一 トを例示する。
ステップ S 1 9 0 1 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイン トを、 アプリ ケーショ ンプログラムに設定する。 ステップ S 1 9 0 2において、 アプリ ケーショ ンプロ グラムの実行が
ブレークポイン トに到達するまで待つ。
ステップ S 1 9 0 3 において、 判断プログラムを実行する。
ステップ S 1 9 0 4 において、 判断プロ グラムの結果、 アプリ ケーシ ヨ ンプロ グラムがコンピュータ ウィルス性を有するかどうかを判定する , も し、 コ ンピュータ ウィルス性を有するのであれば、 ステップ S 1 9 0 5 へ処理を移行させ、 そ うでなければ、 ステップ S 1 9 0 6 へ処理をス キップさせる。
ステップ S 1 9 0 5 において、 システムコール A P I 関数の実行をさ せないよ う にする。 この処理において、 実行阻止部 1 8 0 1 を用いる。 ステップ S 1 9 0 6 において、 全体の処理を終了させるかどう かを判 断する。 も し、 終了させないのであれば、 ステップ S 1 9 0 7へ処理を 移行させる。
ステップ S 1 9 0 7 において、 アプリ ケーショ ンプロ グラムの実行を 続ける。 その後、 ステップ S 1 9 0 2 処理を移行させる。
(実施形態 7 : 主な効果)
本実施形態においては、 危険なシステムコールの実行が阻止されるの で、 例えば、 特定のワ ^ " ドプロセッサのマク ロプログラムがコンビ タ ウィ ルス性を有する場合に、 ヮー ドプロセ ッサの機能を停止させるこ となく 、 危険なマク ロプロ グラムの実行を阻止するこ とが可能とな り 、 危険なシステム コールの実行を阻止しつつ、 アプリ ケーショ ンプログラ ムの実行を継続するこ とができ る。
(実施形態 8 )
本発明の実施形態 8 と して、 コ ンピュータ ウイルス性を有するアプリ ケーシヨ ンプログラムの通信を阻止する コンビユ ^ "タ ウィルス検出装置 と、 通信機器と、 について説明する。
図 2 0 は、 本実施形態の概要を例示する。 コ ンピュータ 2 0 0 1 が、
通信機器 2 0 0 2を介して外部の通信網 2 0 0 3に接続されている。 通 信機器 2 0 0 2の代表的な例と しては、 ルータがある。 コンピュータ 2 0 0 1の内部では、 アプリ ケーショ ンプロ グラムを実行するプロセス 2 0 0 4 と、 コ ンピュータ ウィルス検出装置を実現するプロセス 2 0 0 5 が動作し、 プロセス 2 0 0 5は、 プロセス 2 0 0 4の振る舞いを監視し ている。 も し、 プロセス 2 0 0 4が実行するアプリ ケーショ ンプロダラ ムがコ ンピュータ ウ ィルス性を有し、 外部に対して通信 2 0 0 6 を行な お う と した とする。 この場合、 プロセス 2 0 0 5は、 プロセス 2 0 0 4 が外部に対して有害な通信を行な う と している とみなして、 その有害な 通信を阻止するために、 通信機器 2 0 0 2に対して通信阻止命令 2 0 0 7を出力する。通信機器 2 0 0 2は、通信阻止命令 2 0 0 7に基づいて、 プロセス 2 0 0 4が行なおう とする通信のパケッ トを中継しないなどし て、 通信を阻止する。
(実施形態 8 : コ ンピュータ ウィルス検出装置の構成)
図 2 1 は、 本実施形態に係るコ ンピュータ ウィルス検出装置の機能プ ロ ック図を例示する。 本実施形態に係るコ ンピュータ ウィルス検出装置 の構成は、 実施形態 1ないし 7のいずれか一におけるコ ンピュータ ウイ ルス検出装置が、 通信阻止命令出力部を有する構成となっている。 例え ば、 コンピュータ ウィルス検出装置 2 1 0 0は、 ブレークポイ ン ト情報 保持部 9 0 1 と、 ブレークポイ ン ト設定部 9 0 2 と、 判断プログラム実 行部 9 0 3 と、 通信阻止命令出力部 2 1 0 1 と、 を有する。
「通信阻止命令出力部」 2 1 0 1 は、 判断プロ グラム実行部 9 0 3に よる判断の結果、 判断の対象となったアプリ ケーショ ンプログラムがコ ンピュータ ウィルス性を有する と判断された場合、 そのアプリ ケーショ ンプログラムが通信システムコール A P I 関数を実行する と きに、 通信 阻止命令を出力する。 「通信阻止命令」 とは、 外部の通信機器に対して、
アプリ ケーショ ンプロ グラムが実行する通信システムコール A P I 関数 による通信を失敗させるための命令である。
例えば、 コンピュータ ウィルス性を持つと判断されたアプリ ケーショ ンプロ グラムが、 コンピュータの外部に対してデータを送信しよ う と し た り 、コンピュータの外部からデータを受信しょ う と した りするために、 通信のためのシステムコール A P I 関数を実行する と、外部の通信機器、 例えばルータ、 に対して、 その通信を失敗させる命令が出力される。 図 2 2 は、 通信阻止命令の一例を示す。 この例では、 通信阻止命令は XM Lなどの構造化文書と して記述されている。 図 2 2 は、 例えば図 2 0 において、 コンピュータ 2 0 0 1 の I Pア ドレスが 1 9 2 . 1 6 8 . 1 9 3 . 0 6 3 であ り 、 プロセス 2 0 0 4が、 I Pア ドレス力 S 1 0 . 1 3 9. 2 1 0. 2 5 4であ り 、 ポー トが 2 5番である通信を行なお う と した場合に出力される通信阻止命令を示している。 このよ う な通信阻止 命令は、 例えば、 S O A P ( S i m l e O b j e c t A c c e s s P r o t o c o l ) によ り 、 このよ う な通信阻止命令が外部の通信 機器に出力されるよ う になつていてもよい。
(実施形態 8 : コ ンピュータ ウィルス検出装置の処理)
図 2 3 は、 本実施形態に係るコ ンピュータ ウ ィルス検出装置の処理の フローチヤ一トを例示する。
ステップ S 2 3 0 1 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイン トを、 アプリ ケーショ ンプロ グラムに設定する。 ステップ S 2 3 0 2 において、 アプリ ケーショ ンプログラムの実行が プレークポイン トに到達するまで待つ。
ステップ S 2 3 0 3 において判断プログラムを実行する。
ステップ S 2 3 0 4 において、 アプリ ケーショ ンプログラムが、 コン ピュータ ウィルス性を有するかどうかの判定を行な う。 も し、 コンビュ
—タ ウィルス性を有する と判定される と、 ステップ S 2 3 0 5 へ処理を 移行させ、そ うでなければ、ステップ S 2 3 0 7 へ処理をスキップする。 ステップ S 2 3 0 5において、 到達したブレークポイ ン トが通信シス テムコール A P I 関数かどう かを判断する。 も し、 通信システムコール A P I 関数であれば、 処理をステップ S 2 3 0 6へ移行させ、 そ うでな ければ、 ステップ S 2 3 0 7へ処理をスキップさせる。
ステップ S 2 3 0 6 において、 外部の通信機器に通信阻止命令を出力 する。 この処理は、 通信阻止命令出力部 ' 2 1 0 1 によ り行なわれる。 ステップ S 2 3 0 7 において、 全体の処理を終了するかどう か判定す る。 も し、 終了しないのであれば、 処理をステップ S 2 3 0 8 へ移行さ せる。
ステップ S 2 3 0 8 において、 アプリ ケーショ ンプログラムの実行を 続ける。 も し、 実行が続いて、 有害な通信が行なわれたと しても、 ステ ップ S 2 3 0 6 において出力された通信阻止命令によ り 、 通信が阻止さ れるこ とになる。
(実施形態 8 : 通信機器の構成)
図 2 4は、 本実施形態に係る通信機器の機能プロ ック図を例示する。 通信機器 2 4 0 0 は、 通信阻止命令受信部 2 4 0 1 と、 通信阻止部 2 4 0 2 と、 を有する。
「通信阻止命令受信部」 2 4 0 1 は、 通信阻止命令を受信する。 通信 阻止命令は、 例えば、 通信阻止命令出力部 2 1 0 1 によ り 出力される も のであ り 、 X M Lで記述された場合には、図 2 2 に例示したものと なる。 通信阻止命令を受信するためのポー トを用意しておき、 通信阻止命令受 信部 2 4 0 1 は、 このポー トに通信阻止命令が送信されるまで待つ。 ま た、 必要に応じて、 通信阻止命令を出力 したプログラムが正当なプロ グ ラムであるこ とを認証するための処理を行なってもよい。
「通信阻止部」 2 4 0 2は、 通信阻止命令受信部 2 4 0 1 で受信され た通信阻止命令に基づいて、 通信を阻止する。 例えば、 通信阻止命令が 図 2 2 に示すものである場合、 1 9 2. 1 6 9 . 1 9 3. 0 6 3 の I P ア ドレス力 ら、 1 0 . 1 3 9 . 2 1 0 . 2 5 4 の I Pア ドレスのコ ンビ ユータ の 2 5番ポー トへ行く 通信パケッ トの中継をしないなどの処理を 行な う。
(実施形態 8 : 通信機器の処理) '
図 2 5 は、本実施形態に係る通信機器の処理のフローチヤ一 トである。 通信機器は、 このブ ローチヤー トによ り示される処理を繰り 返し実行す る。
ステップ S 2 5 0 1 において、 通信阻止命令が受信されるまで待つ。 この処理は、 通信阻止命令受信部 2 4 0 1 によ り行なう。
ステップ S 2 5 0 2において、 通信阻止命令に基づいて通信を阻止す る。 この処理は、 通信阻止部 2 4 0 2 によ り行なう。
(実施形態 8 : 主な効果)
本実施形態によれば、 いわゆるスパイ ウェアなどのプログラムがコン ピュータのデータを外部に送信するこ と を防止するこ とが可能となる。 また、 電子メールを介して感染が広がるコンピュータ ウィルスが送信す る電子メールの送信を阻止するこ とが可能となる。
(実施形態 9 )
本発明の実施形態 9 と して、 アプリ ケーショ ンプロ グラムが到達した ブレークポイ ン トの履歴に基づいて、 アプリ ケーショ ンプロ グラムがコ ンピュータ ウィルス性を有するかどう か判断するコンピュータ ウィルス 検出装置について説明する。
(実施形態 9 : 構成)
図 2 6 は、 本実施形態に係るコ ンピュータ ウィルス検出装置の機能ブ
ロ ック図を例示する。 コ ンピュータ ウ ィルス検出装置 2 6 0 0は、 ブレ ークポイ ン ト情報保持部 9 0 1 と、 ブレークポイ ン ト設定部 9 0 2 と、 判断プロ グラム実行部 9 0 3 と、 履歴保持部 2 6 0 1 と、 を有する。 し たがって、 図 2 6 に機能ブロ ック図が例示されたコ ンピュータ ウィルス 検出装置は、 実施形態 1 に係るコンピュータ ウィルス検出装置が履歴保 持部 2 6 0 1 を有する構成となっている。 なお、 本実施形態に保るコ ン ピュータ ウィルス検出装置は、 他の実施形態、 すなわち、 実施形態 2 か ら実施形態 8 のいずれか一に係る コ ンピュータ ウィルス検出装置が、 履 歴保持部 2 6 0 1 を有するものであってもよい。
「履歴保持部」 2 6 0 1 は、 ブレークポイン ト設定部 9 0 2 で設定さ れたブレークボイ ン トに前記アプリ ケーショ ンプログラムが到達した履 歴を保持する。 「前記アプリ ケーショ ンプロ グラム」 とは、 ブレークボイ ン ト設定部 9 0 2 によ り ブレークポイ ン トが設定されたアプリ ケーショ ンプロ グラムを意眛する。 .
したがって、 本実施形態においては、 アプリ ケーショ ンプロ グラムの 実行がブレークポイ ン トに到達する と、 例えば、 どのブレークポイ ン ト に到達したか、 その日時、 ブレ^クポイ ン トがシステムコール A P I 関 数であれば、 その引数、 などを履歴と して追加する。 この処理は、 判断 プログラムが行なっても よいし、 あるいは、 判断プログラムに含まれる プログラムや、 コ ンピュータ ウ ィルス検出装置 2 6 0 0 の部によって行 なわれてもよい。 なお、 履歴保持部 2 6 0 1 が複数のアプリ ケーショ ン プログラムが到達したブレークポイ ン トの履歴を保持する場合には、 ァ プリ ケーショ ンプログラムを識別する識別情報も履歴と して追加される のが好ま しい。
本実施形態においては、 判断プログラムは、 履歴検査プログラムを有 する。 「履歴検査プログラム」 と は、 履歴保持部 2 6 0 1 で保持された履
歴に基づいて、 そのアプリ ケーショ ンプログラムがコンピュータ ウィル ス性を有するかどう かを判断する。
例えば、 いわゆるデーモンプログラムと呼ばれるアプリ ケーショ ンプ ログラムがある。デーモンプログラムは、コ ンピュータ内部に常駐して、 要求が受信でき るのを待ち、 その要求に対してサービスを提供するアブ リ ケ ショ ンプロ グラムである。 このよ う なデーモンプロ グラムが提供 するサービスの内容は定型; (匕されてお り 、 したがって、 デーモンプログ ラムの動作はほぼ一定である。 例えば、 デーモンプロ グラムの う ち、 ゥ エブページの送信要求に対して、 要求されたウェブページを返信するァ プリ ケーシヨ ンプロ グラム (例えば、 A p a c h e と名前が付けられた プログラムが有名である) は、 特定のポー トに要求が送信されるのを待 ち、 要求されたウェブページを格鈉するファイルをオープンし、 そのフ アイルに対して r e a dを行ない、 r e a d の結果を返信し、 ファイル をク ローズして、 ロ グファイルに書き込む、 とい う処理を繰り 返し行な う。 また、 オープンするべきファイルの場所は、 特定のディ レク ト リ 下 である とい う特性を持つ。 したがって、 このよ う な一定の処理から逸脱 した処理を行な う と、 そのデーモンプロ グラムがコ ンピュータ ウィルス やワームに感染した可能性が高い。 本実施形態では、 このよ う にして、 アプリ ケーショ ンプロ グラムがコンピュータ ウィルス性を有するかど う かを判断する。
よ り具体的な例と しては、 ブレークポイ ン ト ごと に、 到達した回数を 記録しておき、 これまで到達したことがないプレークポイ ン トに到達し たならば、 アプリ ケーショ ンプロ グラムがコンピュータ ウィルス性を有 する と判断する。 あるいは、 ブレークポイ ン ト の位置がシステムコール A P I 関数である場合には、履歴に基づいて、その引数の規則を抽出し、 その規則に合致しない引数が与えられた場合には、 アプリ ケーショ ンプ
ログラムがコ ンピュータ ウ ィルス性を有する と判断する。 例えば、 ファ ィルをオープンする際に指定されるフ ァイルのパスに関する規則を、 ヮ ィル ドカー ドや正規表現と して抽出し、 そのワイル ドカー ドや正規表現 に適合しないパスのファイルをオープンしょ う と した場合には、 アプリ ケーショ ンプログラムがコ ンピュータ ウィルス性を有する と ¾断する。 なお、 本実施形態は、 デーモンプロ グラムにのみ適用できるのみなら ず、 他のアプリ ケーショ ンプログラムにも適用が可能である。 例えば、 一般人による ヮー ドプロセッサなどの使用は定型的なものである。 そこ で、定型的な使用で呼び出されるシステムコール以外が呼び出される と、 そのワー ドプロセッサがコ ンピュータ ウィルス性を有する と判断される よ う になつていても よい。 ヮー ドプロセッサを例に用いたが、 表計算プ ログラム、 プレゼンテーショ ンプロ グラム、 メーラ、 ブラ ウザなどのァ プリ ケーショ ンプロ グラムにも適用ができる。
(実施形態 9 : 処理)
図 2 7 は、 本実施形態に係る コ ンピュータ ウ ィルス検出装置の処理の フローチャー トを例示する。 '
ステップ S 2 7 0 1 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイ ン トを、 アプリケーショ ンプログラムに設定する。 ステップ S 2 7 0 2 において、 アプリ ケーショ ンプロ グラムの実行が ブレークポイン トに到達するまで待つ。
ステップ S 2 7 0 3 において、 ブレークポイ ン トに到達した履歴を追 加する。
ステップ S 2 7 0 4において、 判断プログラムを実行する。 ここで、 履歴検査プログラムも実行されるこ とになる。
ステップ S 2 7 0 5 において、 終了するべきかどう かを判定する。 も し、 終了しないのであれば、 ステップ S 2 7 0 6へ処理を移行させる。
ステップ S 2 7 0 6 において、 アプリ ケーショ ンプロ グラムの実行を 続ける。 その後、 ステップ S 2 7 0 2 に処理を移行させる。
なお、 ステ ップ S 2 7 0 3 の処理は、 判断プロ グラ ムを実行した後で 行なわれるよ う になっていてもよい。
(実施形態 9 : 主な効果)
本実施形態によれば、 アプリ ケーショ ンプロ グラムの動作がこれまで と異なる傾向を示すかどう かに基づいて、 コンピュータ ウィルス性を判 断するので、 一定の動作を繰り返し行な うデーモンプロ グラムなどの振 る舞いの監視に有用である。 また、 正常な動作の履歴があればコンビュ ータ ウィルス性の判断が行なえるので、 判断プログラムの作成が容易と なる。
(実施形態 1 0 )
本発明の実施形態 1 0 と して、 アプリ ケーショ ンプログラムがパーチ ャルマシンであるコンピュータ ウィルス検出装置について説明する。
(実施形態 1 0 : 構成)
図 2 8 は、 本実施形態に係るコ ンピュータ ウィルス検出装 Sの使用の 形態を例示する。 .コンピュータ 2 8 0 1 の内部で、 コンピュータ ウィル ス検出装置 2 8 0 2 とパーチャルマシン 2 8 0 3が動作している。 コン ピュータ ウィルス検出装置 2 8 0 2 は、 実施形態 1 ないし 9 のいずれか 一のコンピュータ ウィルス検出装置を実現するプロ グラムである。 コン ピュータ ウィルス検出装置 2 8 0 2 は、 パーチャルマシン 2 8 0 3 にブ レークポイン トを設定し、 振る舞いを監視する。
「パーチャルマシン」 とは、 他のプロ グラム 2 8 0 5 を実行するァプ リ ケーシヨ ンプロ グラムである。 通常は、 他のプログラム 2 8 0 5 は、 想定されたアーキテクチャのコンピュータのマシンイ ンス ト ラクショ ン で記述される。 代表的な例と しては、 J a v a (登録商標) で記述され、
コンパイルされたプロ グラムを実行するものがある。 J a v a (登録商 標) のプロ グラムは、 インターネッ トからダウンロー ドされるこ とが想 定されているので、 多く の場合、 その出所 素性が不明であ り 、 危険な プログラムである場合がある。 そこで、 例えば、 J a v a (登録商標) のパーチャルマシンは、 実行するプロ グラムが O Sへの A P I ( 2 8 0 4 ) を自 由に使ってコ ンピュータの リ ソースにアクセスする こ とを制限 するよ う に設計されている。 しかし、 バーチャルマシンのバグを利用 し て、 バーチャルマシン上で動く プログラム 2 8 0 5がコンピュータのリ ソースに自由にアクセスする場合がある。
そこで、 本実施形態のコンピュータ ウィルス検出装置 2 8 0 2が、 パ 一チャルマシン 2 8 0 3にブレークポイ ン トを設定して、 パーチャルマ シン 2 8 0 3 の振る舞いを検出し、 パーチャルマシン 2 8 0 3 がコ ンビ ユータ ウィルス性を有するプログラムを実行していないかど う かを判断 する。 なお、 本実施形態においては、 パーチャルマシンがコンピュータ ウィルス性を有する とは、 コンピュータ ウィルス性を有するプログラム をパーチャルマシンが実行するこ と をも意味するものとする。
(実施形態 1 0 : 主な効果)
'本実施形態によ り 、 バーチャルマシンのバグなどを利用するプロ グラ ムの実行を阻止するこ とができる。
(実施形態 1 1 )
本発明の実施形態 1 1 と して、 実施形態 1 0 におけるコンピュータを 携帯電話と した実施形態について説明する。
(実施形態 1 1 : 構成)
図 2 9 は、 本実施形態に係るコンピュータ ウィルス検出装置の使用の 形態を例示する。 図 2 8 のコンピュータ 2 8 0 1 が携帯電話 2 9 0 1 に 置き換わっている。
(実施形態 1 1 : 主な効果)
携帯電話の高機能化にはめざま しいものがある。 例えば、 イ ンターネ ッ ト用のブラ ウザは言う に及ばず、 J a v a (登録商標) のバーチャル マシンも携帯電話の内部で動作するよ う になっている。 また、 従来はパ —ソナルコンピュータで動作していたオペレーティ ングシステムが携帯 電話の内部でも動作するよ う になってきており 、 携帯電話で動作するプ ログラムが複雑化している。
しかし、 携帯電話の販売が開始された後に、 パグゃセキュ リ ティ ホー ルが見つかる場合がある。 一方、 携帯電話はパーソナルコンピュータ以 上の台数が巿場に出回り 、 携帯端末の回収にはコス トがかかる う え、 時 間も要する。 このため、 携帯電話で動作するバーチャルマシンなどのバ グゃセキュ リ ティ ホールを悪用 したコンピュータ ウィルスが作成される と、その感染規模は予想もっかないこ と とな り 、社会的な影響が大きい。 例えば、 パーチャルマシンのバグなどを利用 して、 あらゆる携帯電話の ア ドレス帳のデータが収集され、 プライバシ情報の漏洩につながる。 そこで、 本発明のコ ンピュータ ウィルス検出装置を実現するプロ ダラ ムを、 携帯電話の内部で動作させておき、 パーチャルマシンにブレーク ポイン トを設定して振る舞いを検出するこ とによ り 、 バグゃセキユ リ テ ィホールなどを.悪用 したコンピュータ ウィルスの動作を未然に防ぐこ と が可能となる。
産業上の利用可能性
上記のよ う に本発明によれば、 登録された命令の実行有無によ り 監視 対象プロセスの実行を中止、 あるいは実行前の状態にロールパックでき るよ う にな り 、 従来に比してユーザの負担を軽減してウィ ルスへの感染 予防、 及ぴ、 システムのク リ ^"ンアップができ る。
また、 本癸明は、 プログラム実行時の振る舞いを検出するため、 従来
のシグネチヤスキャ ンでは必要であったスキャ ン前の圧縮ファイルの解 凍や、 暗号化フアイルの復号化等の前処理を必要と しない。
したがって、 本発明は、 コ ンピュータ ウ ィルス検出装置と して有用であ る。