(57)【特許請求の範囲】
【請求項１】
コンピュータからＣＰＵの状態情報を取得する取得手段と、
前記取得手段により取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習手段と、
前記領域情報と、前記取得手段により取得される状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定手段とを備える監視装置であって、
前記学習手段は、メモリの領域情報が既知であるコンピュータから得られたＣＰＵの状態情報に基づいて特徴を算出し、当該特徴と、領域情報が未知であるコンピュータから得られたＣＰＵの状態情報に基づき算出された特徴とを比較することにより、領域情報が未知であるコンピュータにおけるメモリの領域情報を学習する
ことを特徴とする監視装置。
【請求項２】
コンピュータからＣＰＵの状態情報を取得する取得手段と、
前記取得手段により取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習手段と、
前記領域情報と、前記取得手段により取得される状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定手段とを備える監視装置であって、
前記異常判定手段は、前記取得手段により取得される状態情報に基づいて、前記メモリにおけるデータの格納アドレスを検出し、当該データの格納アドレスが、前記学習手段により得られた前記領域情報におけるデータ領域の範囲を超える場合に、異常があると判定する
ことを特徴とする監視装置。
【請求項３】
コンピュータからＣＰＵの状態情報を取得する取得手段と、
前記取得手段により取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習手段と、
前記領域情報と、前記取得手段により取得される状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定手段とを備える監視装置であって、
前記学習手段は、マルウェアが実行されているコンピュータから得られたＣＰＵの状態情報に基づき、当該状態情報の特徴を算出し、
前記異常判定手段は、当該特徴と、マルウェアの実行有無が未知であるコンピュータから得られたＣＰＵの状態情報に基づき算出された特徴とを比較することにより、異常の有無を判定する
ことを特徴とする監視装置。
【請求項４】
コンピュータを、請求項１ないし３のうちいずれか１項に記載の監視装置における各手段として機能させるためのプログラム。
【請求項５】
コンピュータの異常検知を行う監視装置が実行する監視方法であって、
コンピュータからＣＰＵの状態情報を取得する取得ステップと、
前記取得ステップにより取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習ステップと、
前記領域情報と、前記コンピュータから取得されるＣＰＵの状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定ステップとを備える監視方法であり、
前記学習ステップにおいて、前記監視装置は、メモリの領域情報が既知であるコンピュータから得られたＣＰＵの状態情報に基づいて特徴を算出し、当該特徴と、領域情報が未知であるコンピュータから得られたＣＰＵの状態情報に基づき算出された特徴とを比較することにより、領域情報が未知であるコンピュータにおけるメモリの領域情報を学習する
ことを特徴とする監視方法。
【請求項６】
コンピュータの異常検知を行う監視装置が実行する監視方法であって、
コンピュータからＣＰＵの状態情報を取得する取得ステップと、
前記取得ステップにより取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習ステップと、
前記領域情報と、前記コンピュータから取得されるＣＰＵの状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定ステップとを備える監視方法であり、
前記異常判定ステップにおいて、前記監視装置は、前記取得ステップにより取得される状態情報に基づいて、前記メモリにおけるデータの格納アドレスを検出し、当該データの格納アドレスが、前記学習ステップにより得られた前記領域情報におけるデータ領域の範囲を超える場合に、異常があると判定する
ことを特徴とする監視方法。
【請求項７】
コンピュータの異常検知を行う監視装置が実行する監視方法であって、
コンピュータからＣＰＵの状態情報を取得する取得ステップと、
前記取得ステップにより取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習ステップと、
前記領域情報と、前記コンピュータから取得されるＣＰＵの状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定ステップとを備える監視方法であり、
前記学習ステップにおいて、前記監視装置は、マルウェアが実行されているコンピュータから得られたＣＰＵの状態情報に基づき、当該状態情報の特徴を算出し、
前記異常判定ステップにおいて、前記監視装置は、当該特徴と、マルウェアの実行有無が未知であるコンピュータから得られたＣＰＵの状態情報に基づき算出された特徴とを比較することにより、異常の有無を判定する
ことを特徴とする監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータに対する攻撃を検知する技術に関連するものである。
【背景技術】
【０００２】
コンピュータに対する攻撃手法として、"Injection"、"Buffer Overflow：xBoF"、"標的型：APT（Advanced Persistent Threat）"等がある。比較的攻撃技術レベルの低いInjection 系は、HTML等のプログラム言語を用いて想定外/異常/脅威な動作を行わせるものである。このため、セキュアコーディング方法も確立しており、かつ、コードの静的解析でも検出可能である。これに対して、コードをデータだと詐称、もしくは、安全なコードだと詐称するAPT系やBuffer Overflow系は、セキュアコーディングを行ったとしても、根本的対応が困難である。以下、APT系やBuffer Overflow系において攻撃を行うデータ／コードをマルウェアと呼ぶ。
【０００３】
各種の攻撃方法において、マルウェアは、常に"変種"（所謂、亜種）が現れてZero-Day が恒常化している。換言すると、セキュアコーディングや静的解析を行ったとしても、これをかわす攻撃手法が常に脅威となり、プログラムの安全な実行が困難である状況にある。
【０００４】
上記にようなマルウェアに対する対策として、例えば、syslog等のログ解析に機械学習（Deep Learning）を適用して、マルウェア攻撃の有無の検知を行うこと等が検討されている。しかし、ログ解析だけでは，基本的に攻撃の回避が非常に困難である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−０７６１３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来より、不安定なプログラムを安全に走行させることを目的とした、リングプロテクション（Ring Protection）の技術がある。図１に示すように、リングプロテクションは、リング状の階層構造を有し、各階層はＯＳから提供されたアクセス権を示している。リング間には特別なゲートがあり、内側のリングのリソースから外側のリングのリソースへのアクセスは許可されるが、外側のリングのリソースから内側のリングのリソースへのアクセスは原則禁止される。
【０００７】
リングプロテクションは、元来、あるプロセスの異常が他プロセスに影響を与えない仕組みとして提案されたものであり、マルウェアに対しても有効である。しかし、現状の一般のコンピュータにおいては、リングプロテクションが実装されていない。たとえ、ＣＰＵにリングプロテクションの機能が用意されていても、コンピュータの他のハードウェア／ソフトウェアが未対応なので、リングプロテクションの機能を活用できない。従って、既存のリングプロテクションの技術をマルウェア対策に用いることができない。
【０００８】
一般に普及しているノイマン型のコンピュータは、単一のメモリ上にプログラム領域とデータ領域が混在することを前提とするアーキテクチャとなっており、これがマルウェアの活動（攻撃の成立）を引き起こす主要な要因となっている。
【０００９】
本発明は上記の点に鑑みてなされたものであり、監視対象装置におけるメモリの領域を判別することにより、監視対象装置の異常を検知することを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の実施の形態によれば、コンピュータからＣＰＵの状態情報を取得する取得手段と、
前記取得手段により取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習手段と、
前記領域情報と、前記取得手段により取得される状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定手段とを備える監視装置であって、
前記学習手段は、メモリの領域情報が既知であるコンピュータから得られたＣＰＵの状態情報に基づいて特徴を算出し、当該特徴と、領域情報が未知であるコンピュータから得られたＣＰＵの状態情報に基づき算出された特徴とを比較することにより、領域情報が未知であるコンピュータにおけるメモリの領域情報を学習する
ことを特徴とする監視装置が提供される。
【００１１】
本発明の実施の形態によれば、コンピュータの異常検知を行う監視装置が実行する監視方法であって、
コンピュータからＣＰＵの状態情報を取得する取得ステップと、
前記取得ステップにより取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習ステップと、
前記領域情報と、前記コンピュータから取得されるＣＰＵの状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定ステップとを備える監視方法であり、
前記学習ステップにおいて、前記監視装置は、メモリの領域情報が既知であるコンピュータから得られたＣＰＵの状態情報に基づいて特徴を算出し、当該特徴と、領域情報が未知であるコンピュータから得られたＣＰＵの状態情報に基づき算出された特徴とを比較することにより、領域情報が未知であるコンピュータにおけるメモリの領域情報を学習する
ことを特徴とする監視方法が提供される。
【発明の効果】
【００１２】
本発明の実施の形態によれば、監視対象装置におけるメモリの領域を判別することにより、監視対象装置の異常を検知することを可能とする技術が提供される。
【図面の簡単な説明】
【００１３】
【図１】リングプロテクションの概念を説明するための図である。
【図２】本発明の実施の形態におけるシステムの全体構成図である。
【図３】監視対象装置２００の構成図である。
【図４】ＶＭ環境の例を示す図である。
【図５】監視対象装置２００の基本的な動作を説明するための図である。
【図６】監視装置１００の構成図である。
【図７】監視装置１００の動作を示すフローチャートである。
【図８】異常判定の例を説明するための図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態（本実施の形態）を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明を適用可能な形態は、以下の実施の形態に限られるわけではない。
【００１５】
（システム全体構成）
図２に、本実施の形態におけるシステムの全体構成図を示す。図２に示すように、本実施の形態におけるシステムは、監視装置１００と複数の監視対象装置２００とを含む。監視装置１００と各監視対象装置２００との間では、インターネット等のネットワークを介してデータ通信が可能である。
【００１６】
監視対象装置２００は、ネットワークに接続される一般的なコンピュータである。また、当該コンピュータに使用されるＯＳも一般的なもの（例えば、Ｌｉｎｕｘ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）等）である。各監視対象装置２００は、サービスを提供するサーバとして使用される装置であってもよいし、ユーザのクライアント端末として使用される装置であってもよい。また、監視対象装置２００は物理的なコンピュータであってもよいし、仮想マシンとしてのコンピュータであってもよい。監視装置１００は、各監視対象装置２００の監視を行って、異常を検知する。
【００１７】
（監視対象装置２００の構成）
図３に、監視対象装置２００の構成図を示す。図３に示すように、監視対象装置２００は、メモリ２０１、ＣＰＵ２０２、コンテキスト格納部２０３を含む。図３に示すように、メモリには、データとプログラムが混在して格納されるが、データとプログラムともにビットの羅列であり、一般には、外部からは、メモリ２０１の各アドレスに格納されているビットが、データかプログラムかの識別はできない。
【００１８】
ＣＰＵ２０２は、プログラムカウンタ（ＰＣ）、スタックポインタ（ＳＰ）、汎用レジスタ等の複数のレジスタを有する。プログラムカウンタには、ＣＰＵ２０２が次に読み取る命令が格納されたメモリのアドレスが格納されており、基本的に、命令の実行の都度、インクリメントされる。ＣＰＵ２０２は、プログラムカウンタにより示されるアドレスの命令をメモリ２０１から読み出して実行する。
【００１９】
スタックポインタは、スタックと呼ばれる領域のうち最も最近参照された位置のアドレスを保持するためのレジスタである。スタックは最初に格納したデータを最後に、最後に格納されたデータを最初に取り出すことができる領域であり、新たにデータが格納されるとスタックポインタの値はそのデータ量の分だけ増え、取り出されるとその分だけ減る。
【００２０】
コンテキスト格納部２０３は、ＣＰＵ２０２の状態（コンテキスト）を格納する機能部である。コンテキストは、ＣＰＵ２０２が持つプログラムカウンタ（ＰＣ）、スタックポインタ（ＳＰ）、汎用レジスタ等の各レジスタの値を含む。なお、ＣＰＵ２０２からコンテキストを取得して、保持する機能は、例えばコンテキストスイッチ等のために、一般的なＯＳにより動作するコンピュータに一般的に備えられている機能である。
【００２１】
また、コンテキストを保持するタイミングは、例えば、監視装置１００からのアクセス（情報要求）を受けたタイミング（何等かの割り込みを発生させたタイミング）でもよいし、常時コンテキストを保持・更新（つまり、常にＣＰＵの状態と同じ情報を保持）することとしてもよい。
【００２２】
図４は、監視対象装置２００が仮想マシン（ＶＭ）である場合における、ＶＭ環境の例を示す図である。本例のＶＭ環境は、ハードウェア２５１、ハイパバイザ２５２、監視対象装置２００としてのＶＭを含む。ＶＭ環境では、ハイパバイザ２５２により各ＶＭが管理されており、ハイパバイザ２５２が、各ＶＭについて、図３に示す構成を管理している。すなわち、監視対象装置２００が仮想マシン（ＶＭ）である場合、コンテキスト格納部２０３は、ハイパバイザ２５２が保持するが、以下では、コンテキスト格納部２０３は、仮想的にＶＭ内（つまり、監視対象装置２００内）にあるものとする。つまり、監視対象装置２００が仮想マシンであっても、物理マシンであっても、図３に示す構成が適用される。
【００２３】
図５を参照して、監視対象装置２００の動作の一例を説明する。左側の状態において、プログラムカウンタ（ＰＣ）に２が格納され、レジスタＲ１に４が格納されている。ＣＰＵは、ＰＣに従って、メモリのアドレス２の命令を読み出す。この命令は、「レジスタＲ１に格納されているメモリアドレス４の値をレジスタＲ２にコピー」するという命令である。ＣＰＵはこの命令を実行することで、右側の状態になる。つまり、命令の実行の結果、アドレス４の値（１００）が、Ｒ２に格納されている、また、ＰＣがインクリメントされている。
【００２４】
（監視装置１００の構成）
図６に、監視装置１００の構成図を示す。図６に示すように、監視装置１００は、学習部１０１、監視部１０２、異常判定部１０３を備える。各機能部の動作については、以下の動作説明のところで詳しく説明する。なお、以下の説明では、特に断らない限り、複数の監視対象装置２００における１つの監視対象装置２００を対象にしているが、実際には同様の処理を他の監視対象装置２００に対しても行っている。ただし、複数の監視対象装置２００を対象とすることは必須ではなく、１つの監視対象装置２００を対象としてもよい。
【００２５】
本実施の形態における監視装置１００は、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、監視装置１００が有する機能は、当該コンピュータに内蔵されるＣＰＵやメモリ等のハードウェア資源を用いて、当該装置で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メール等、ネットワークを通して提供することも可能である。
【００２６】
（監視装置１００の動作）
以下、図６に示す構成を有する監視装置１００の動作を図７のフローチャートに沿って説明する。
【００２７】
監視部１０２は、例えば定期的に、監視対象装置２００から、コンテキスト格納部２０３に格納されているコンテキストを取得する（ステップＳ１０１）。コンテキストの取得は、例えば、監視部１０２が監視対象装置２００に対してコンテキスト要求を送信し、監視対象装置２００が、コンテキスト応答としてコンテキストを監視部１０２に返すことにより行われる。当該コンテキストには、現時点でのＣＰＵの状態情報（レジスタの値等）が含まれる。監視部１０２により取得されたコンテキストは、学習部１０１に渡される。
【００２８】
学習部１０１は、監視部１０２により取得されたコンテキストに基づいて、監視対象装置２００のメモリ２０１におけるプログラム領域のアドレス範囲とデータ領域のアドレス範囲とを学習（決定）する（ステップＳ１０２）。具体的には以下のとおりである。以下、プログラム領域のアドレス範囲とデータ領域のアドレス範囲を「領域情報」と呼ぶ。また、以下の処理は一例である。
【００２９】
学習部１０１は、定期的に取得された監視対象装置２００のコンテキストの集合を保持する記憶部を含む。また、学習部１０１は、教師あり学習機能を有する。この場合、まず、学習部１０１に、正解の領域情報を与え、更に、この正解が得られた監視対象装置２００から取得されたコンテキスト集合を与える。この正解が得られた監視対象装置２００は、メモリの領域情報が既知であるコンピュータの一例である。
【００３０】
そして、学習部１０１は、当該コンテキスト集合の特徴を算出する。この特徴は、例えば、コンテキスト集合におけるプログラムカウンタの値（時系列データ）の変化パターン（例：アドレスの遷移等）、コンテキスト集合におけるデータのアドレスを示すレジスタの値（時系列データ）の変化パターン、コンテキスト集合におけるスタックポインタの値（時系列データ）の変化パターン等のうちいずれか１つ又はいずれか複数又は全部である。また、上記の特徴（変化パターン）は、ベクトル等で表わされてもよいし、時系列モデルとして表わされてもよいし、他の形式で表わされてもよい。
【００３１】
学習部１０１は、例えば、上記のような特徴算出を、複数の監視対象装置２００における複数の「正解領域情報とコンテクスト集合の組」に対して行うことで、複数の「特徴と領域情報の組」を得て、記憶部に格納する。このようにして得られた特徴を「特徴Ａ」と呼び、対応する領域情報を領域情報Ａと呼ぶことにする。つまり、記憶部には、複数の「特徴Ａと領域情報Ａの組」が格納される。正解を与えて複数の「特徴Ａと領域情報Ａの組」を学習する処理は、頻繁に行う必要はなく、ある程度の間隔を開けて行えばよい。また、正解を与えて複数の「特徴Ａと領域情報Ａの組」を学習する処理を１回だけ行い、その後は、後述する領域情報Ｂを正解と見なして（領域情報Ａと見なして）、順次、複数の「特徴Ａと領域情報Ａの組」を更新することとしてもよい。
【００３２】
また、学習部１０１は、監視部１０２から定期的に受け取り、記憶部に蓄積されたコンテキスト集合（領域情報が未知）に対して、特徴Ａを求めた方法と同じ方法で特徴（これを特徴Ｂとする）を算出する。学習部１０１は、特徴Ｂを、複数の「特徴Ａと領域情報Ａの組」における各特徴Ａと比較することにより、特徴Ｂに最も近い特徴Ａを特定し、当該特徴Ａに対応する領域情報Ａを、対象としている監視対象装置２００の領域情報（これを領域情報Ｂと呼ぶ）として学習する。
【００３３】
なお、複数の「特徴Ａと領域情報Ａの組」の中の該当する領域情報Ａそのものを、監視対象装置２００の領域情報Ｂとして決定してもよいし、特徴Ｂと複数の特徴Ａとの距離に応じて、複数の「特徴Ａと領域情報Ａの組」の中の該当する領域情報Ａを変更したものを監視対象装置２００の領域情報Ｂとして決定してもよい。例えば、特徴Ｂと、特徴Ａ１と特徴Ａ２とが同程度に近い場合において、特徴Ｂの領域情報Ｂとして、特徴Ａ１の領域情報Ａ１（例：プログラム領域が０〜１００）と特徴Ａ２の領域情報Ａ２（例：プログラム領域が０〜１１０）の平均（例：プログラム領域が０〜１０５）を用いることができる。
【００３４】
なお、上記の例では、学習部１０１は、教師あり学習により領域情報Ｂを得ているが、教師なし学習により領域情報Ｂを取得することとしてもよい。この場合、例えば、コンテクスト集合におけるレジスタの値と、その変化のパターンに基づいて、メモリのアドレスを、データ領域のアドレスと、プログラム領域のアドレスにクラス分けすることで、領域情報Ｂを取得することができる。
【００３５】
学習部１０１により得られた監視対象装置２００の領域情報Ｂは、異常判定部１０３に渡される。また、監視部１０２は、定期的に取得されたコンテキストを順次、異常判定部１０３に渡す。
【００３６】
異常判定部１０３は、監視部１０２から渡されたコンテキストにおける、データのアドレスを示すレジスタ（例：スタックポインタ）の値を参照して、当該レジスタの値が領域情報Ｂに示されるデータ領域のアドレス範囲を超えるかどうかを判定する（ステップＳ１０３）。言いかえると、レジスタの値がプログラム領域のアドレス範囲に侵入しているか否かを判定する。
【００３７】
異常判定部１０３は、レジスタの値が領域情報Ｂに示されるデータ領域のアドレス範囲を超えることを検知した場合に、異常が発生したと判断し、例えば、アラームを出力する（ステップＳ１０４）。アラームには、異常を検知した監視対象装置２００を識別する情報が含まれる。また、アラームに代えて、対象の監視対象装置２００を停止させる命令を当該監視対象装置２００に送信してもよい。当該アラーム、当該命令のいずれも「異常を示す情報」の例である。
【００３８】
図８は、異常と判定される場合の例を説明するための図である。図８に示す例では、領域情報Ｂとして、プログラム領域＝アドレス０〜４０、データ領域＝アドレス４０〜１００が得られている。そして、コンテキストにおける、データのアドレスを示すレジスタの値（例えばスタックポインタの値）が３５であることを検知すると、異常であると判定する。なお、閾値を設け、「プログラム領域のアドレス範囲＋閾値」を超えた場合に異常であると判定してもよい。
【００３９】
また、複数の監視対象装置２００において、同じプログラム（アプリケーション）が実行されている環境においては、ある監視対象装置２００において上記の異常を検知した場合でも、他の監視対象装置２００において同様の事象が生じている場合には、現時点の領域情報Ｂが十分に正確でない可能性が考えられるため、アラームを出力しないこととしてもよい。また、下記のような処理を行ってもよい。
【００４０】
学習部１０１に対し、マルウェアが実行されていることが分かっている監視対象装置のコンテクスト集合を与え、学習部１０１が、当該コンテクスト集合の中のプログラムカウンタの値（時系列データ）の特徴（変化パターンを示すベクトル、時系列モデル等）を算出する。この特徴を特徴Ａと呼ぶ。複数種類のマルウェアに対して複数種類の特徴Ａを取得することとしてもよい。そして、特徴Ａは異常判定部１０３に渡される。異常判定部１０３は、マルウェアの実行有無が未知であるコンピュータからのコンテクストを順次、監視部１０２から受信し、得られたコンテクスト集合から、プログラムカウンタの値の特徴（特徴Ｂと呼ぶ）を算出し、特徴Ａと特徴Ｂを比較して、特徴Ｂに近い（例：閾値以下）特徴Ａが存在する場合に、異常を検知することとしてもよい。なお、前述した異常検知（領域情報に基づく異常検知）で異常が検知され、かつ、この異常検知（マルウェアのコンテクスト特徴に基づく異常検知）で異常が検知された場合にアラームを出力することとしてもよいし、いずれかの異常が検知された場合に、アラームを出力することとしてもよい。
【００４１】
（実施の形態のまとめ）
以上、説明したように、コンピュータからＣＰＵの状態情報を取得する取得手段と、前記取得手段により取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習手段と、前記領域情報と、前記取得手段により取得される状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定手段とを備えることを特徴とする監視装置が提供される。
【００４２】
前記学習手段は、例えば、メモリの領域情報が既知であるコンピュータから得られたＣＰＵの状態情報に基づいて特徴を算出し、当該特徴と、領域情報が未知であるコンピュータから得られたＣＰＵの状態情報に基づき算出された特徴とを比較することにより、領域情報が未知であるコンピュータにおけるメモリの領域情報を学習する。
【００４３】
前記異常判定手段は、例えば、前記取得手段により取得される状態情報に基づいて、前記メモリにおけるデータの格納アドレスを検出し、当該データの格納アドレスが、前記学習手段により得られた前記領域情報におけるデータ領域の範囲を超える場合に、異常があると判定する。
【００４４】
前記学習手段は、マルウェアが実行されているコンピュータから得られたＣＰＵの状態情報に基づき、当該状態情報の特徴を算出し、前記異常判定手段は、当該特徴と、マルウェアの実行有無が未知であるコンピュータから得られたＣＰＵの状態情報に基づき算出された特徴とを比較することにより、異常の有無を判定することとしてもよい。
【００４５】
（第１項）
コンピュータからＣＰＵの状態情報を取得する取得手段と、
前記取得手段により取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習手段と、
前記領域情報と、前記取得手段により取得される状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定手段と
を備えることを特徴とする監視装置。
（第２項）
前記学習手段は、メモリの領域情報が既知であるコンピュータから得られたＣＰＵの状態情報に基づいて特徴を算出し、当該特徴と、領域情報が未知であるコンピュータから得られたＣＰＵの状態情報に基づき算出された特徴とを比較することにより、領域情報が未知であるコンピュータにおけるメモリの領域情報を学習する
ことを特徴とする第１項に記載の監視装置。
（第３項）
前記異常判定手段は、前記取得手段により取得される状態情報に基づいて、前記メモリにおけるデータの格納アドレスを検出し、当該データの格納アドレスが、前記学習手段により得られた前記領域情報におけるデータ領域の範囲を超える場合に、異常があると判定する
ことを特徴とする第１項又は第２項に記載の監視装置。
（第４項）
前記学習手段は、マルウェアが実行されているコンピュータから得られたＣＰＵの状態情報に基づき、当該状態情報の特徴を算出し、
前記異常判定手段は、当該特徴と、マルウェアの実行有無が未知であるコンピュータから得られたＣＰＵの状態情報に基づき算出された特徴とを比較することにより、異常の有無を判定する
ことを特徴とする第１項ないし第３項のうちいずれか１項に記載の監視装置。
（第５項）
コンピュータを、第１項ないし第４項のうちいずれか１項に記載の監視装置における各手段として機能させるためのプログラム。
（第６項）
コンピュータの異常検知を行う監視装置が実行する監視方法であって、
コンピュータからＣＰＵの状態情報を取得する取得ステップと、
前記取得ステップにより取得した状態情報に基づいて、前記コンピュータにおけるメモリの領域情報を学習する学習ステップと、
前記領域情報と、前記コンピュータから取得されるＣＰＵの状態情報とに基づいて、前記コンピュータにおける異常の有無を判定し、異常があると判定した場合に、異常を示す情報を出力する異常判定ステップと
を備えることを特徴とする監視方法。
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【００４６】
１００  監視装置
１０１  学習部
１０２  監視部
１０３  異常判定部
２００  監視対象装置
２０１  メモリ
２０２  ＣＰＵ
２０３  コンテキスト格納部
２５１  ハードウェア
２５２  ハイパーバイザ
【図１】
0006646494.tif 000002
【図２】
0006646494.tif 000003
【図３】
0006646494.tif 000004
【図４】
0006646494.tif 000005
【図５】
0006646494.tif 000006
【図６】
0006646494.tif 000007
【図７】
0006646494.tif 000008
【図８】
0006646494.tif 000009