(57)【特許請求の範囲】
【請求項１】
悪意のあるソフトウェア（以下、「マルウェア」と記す）あるいはマルウェアを送受信する通信を検出する悪意のあるソフトウェアを検出するソフトウェア検出装置であって、
ファイルあるいは送受信する通信データ（以下、ファイルあるいは通信データをまとめて「オブジェクト」と記す）を記憶するオブジェクト記憶手段と、
予め用意した静的な単語辞書を参照して、または、ネットワーク上の検索エンジンの結果を用いて、前記オブジェクト記憶手段に記録されたオブジェクトより文字列として印字及び可読なバイト列を単語として抽出する単語抽出手段と、
前記単語抽出手段によって抽出された単語の集合を元に、サポートベクターマシンを用いてオブジェクトごとに特徴ベクトルを構成する特徴抽出手段と、
前記特徴ベクトルに機械学習システムを適用することにより新たに観測した特徴ベクトルを元に前記オブジェクトがマルウェアであるか否かを判定する判定手段と、
を有し、
前記単語抽出手段は、
文字列の英数字以外を区切り文字に置換し、大文字が２文字以上連続している場合には、該当した大文字を一つの単語としてマークし、マークされた以外に大文字がある場合は、該当した大文字の前に区切り文字を挿入し、該文字列を区切り文字によって分割し、分割した各々の文字列を単語として抽出する手段を含む
ことを特徴とするソフトウェア検出装置。
【請求項２】
前記機械学習システムは、
任意に設定が可能な周期が到来する毎に新たな学習データをフィードバックすることによって再学習を可能とする
請求項１記載のソフトウェア検出装置。
【請求項３】
前記判定手段は、
マルウェアであるか否かのみならず、マルウェアの種別に関して学習並びに判定を行う手段を含む
請求項１記載のソフトウェア検出装置。
【請求項４】
前記判定手段は、
前記オブジェクトの全体または一部のみを使って判定する手段を含む
請求項１または３記載のソフトウェア検出装置。
【請求項５】
オブジェクト記憶手段、単語抽出手段、特徴抽出手段、判定手段を有し、悪意のあるソフトウェア（以下、「マルウェア」と記す）あるいはマルウェアを送受信する通信を検出する装置における、悪意のあるソフトウェアを検出するソフトウェア検出方法であって、
前記単語抽出手段は、ファイルあるいは送受信する通信データ（以下、ファイルあるいは通信データをまとめて「オブジェクト」と記す）を記憶する前記オブジェクト記憶手段に記録されたオブジェクトより、予め用意した静的な単語辞書を参照して、または、ネットワーク上の検索エンジンの結果を用いて、文字列として印字及び可読なバイト列を単語として抽出する単語抽出ステップと、
前記特徴抽出手段が、前記単語抽出ステップによって抽出された単語の集合を元に、サポートベクターマシンを用いてオブジェクトごとに特徴ベクトルを構成する特徴抽出ステップと、
前記判定手段が、前記特徴ベクトルに機械学習システムを適用することにより新たに観測した特徴ベクトルを元に前記オブジェクトがマルウェアであるか否かを判定する判定ステップと、
を行い、
前記単語抽出ステップにおいて、
文字列の英数字以外を区切り文字に置換し、大文字が２文字以上連続している場合には、該当した大文字を一つの単語としてマークし、マークされた以外に大文字がある場合は、該当した大文字の前に区切り文字を挿入し、該文字列を区切り文字によって分割し、分割した各々の文字列を単語として抽出する
ことを特徴とするソフトウェア検出方法。
【請求項６】
前記判定ステップにおいて、
任意に設定が可能な周期が到来する毎に新たな学習データをフィードバックすることによって再学習を可能とする前記機械学習システムを用いる、
請求項５記載のソフトウェア検出方法。
【請求項７】
前記判定ステップにおいて、
マルウェアであるか否かのみならず、マルウェアの種別に関して学習並びに判定を行う請求項５記載のソフトウェア検出方法。
【請求項８】
前記判定ステップにおいて、
前記オブジェクトの全体または一部のみを使って判定する
請求項５または７記載のソフトウェア検出方法。
【請求項９】
請求項１乃至４のいずれか１項に記載のソフトウェア検出装置を構成する各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア検出方法及び装置及びプログラムに係り、特に、教師付き機械学習システムを用いたマルウェアあるいはマルウェアを送受信する通信の検出を行うためのソフトウェア検出方法及び装置及びプログラムに関する。
【背景技術】
【０００２】
ワームやボットネットと呼ばれるマルウェア（悪意のあるソフトウェア）による被害が拡大・深刻化している。マルウェアに感染したコンピュータはネットワークに接続された他のコンピュータに対して不正あるいは有害な動作を行うことが特徴であり、迷惑メールの大量送信や、サーバへの不正な大量アクセスによるサービス妨害攻撃といった悪質な行動を行うためのツールとして使われる。マルウェアの脅威は外部に対する攻撃のみならず、感染したコンピュータからクレジット番号やアドレス帳などの個人情報を抽出し、外部のコンピュータに送信する活動も存在する。このようなマルウェアによる被害を未然に防ぐためにはマルウェア本体、あるいはマルウェア本体を送受信している通信を検出する技術が必要となる。
【０００３】
マルウェアにはパターンマッチングによる検出や逆アセンブラによる静的解析を避けるために意図的に複雑な暗号化や圧縮（パッキングと呼ばれる）を施したものが多い。パッキングされた実行ファイルは実行時に自分自身を復号してメモリ上に展開する。
【０００４】
一般にマルウェアの詳細な分析を実施するためには、パッキングされた実行ファイルを様々な技術を駆使して復号する必要がある。
【０００５】
更に復号したファイルに対して、逆アセンブルやデバッガを用いる手法が一般的に利用されている（例えば、比特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】K. Rozinov. "Reverse Code Engineering: An In-Depth Analysis of the Bagle Virus". Bell Labs - Government communication Laboratory - Internet Research, August 2004. http://old.idapalace.net/papers/bagle_analysis_v. 1.0. pdf
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記のような復号・逆アセンブル、デバッガを用いる手法は時間と演算リソースがかかるため、リアルタイムでマルウェアを含む通信を検出する用途には向かない。
【０００８】
マルウェアを実際のオペレーティングシステム上で実行し、その挙動を分析することによってマルウェアであるかを検出するアプローチとして、例えば、文献「伊藤光恭、針生剛男、谷本直人、岩村誠、八木毅、川古谷裕平、青木一史、秋山満昭、中山心太、"マルウェア対策技術"，ＮＴＴ技術ジャーナル2010年３月号、pp. 40-44. http://www.ntt.co.jp/journal/1003/files/jn201003040.html」に記載された方法もあるが、やはり時間と演算リソースを消費するため、即時的な検出・判定ができないという問題があった。
【０００９】
本発明は、上記の点に鑑みなされたもので、未知のパターンにも対応可能な高速かつ処理の軽いマルウェア及びマルウェアを含む通信の検出を実現することが可能なソフトウェア検出方法及び装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の課題を解決するため、本発明（請求項１）は、悪意のあるソフトウェア（以下、「マルウェア」と記す）あるいはマルウェアを送受信する通信を検出する悪意のあるソフトウェアを検出するソフトウェア検出装置であって、
ファイルあるいは送受信する通信データ（以下、ファイルあるいは通信データをまとめて「オブジェクト」と記す）を記憶するオブジェクト記憶手段と、
予め用意した静的な単語辞書を参照して、または、ネットワーク上の検索エンジンの結果を用いて、前記オブジェクト記憶手段に記録されたオブジェクトより文字列として印字及び可読なバイト列を単語として抽出する単語抽出手段と、
前記単語抽出手段によって抽出された単語の集合を元に、サポートベクターマシンを用いてオブジェクトごとに特徴ベクトルを構成する特徴抽出手段と、
前記特徴ベクトルに機械学習システムを適用することにより新たに観測した特徴ベクトルを元に前記オブジェクトがマルウェアであるか否かを判定する判定手段と、
を有し、
前記単語抽出手段は、
文字列の英数字以外を区切り文字に置換し、大文字が２文字以上連続している場合には、該当した大文字を一つの単語としてマークし、マークされた以外に大文字がある場合は、該当した大文字の前に区切り文字を挿入し、該文字列を区切り文字によって分割し、分割した各々の文字列を単語として抽出する手段を含む。
【００１１】
また、本発明（請求項２）は、前記機械学習システムにおいて、
任意に設定が可能な周期が到来する毎に新たな学習データをフィードバックすることによって再学習を可能とする。
【００１２】
また、本発明（請求項３）は、前記単語抽出手段において、
任意の単語辞書を参照して、印字可能な文字から可読な単語集合を抽出する手段を含む。
【００１４】
また、本発明（請求項３）は、前記判定手段において、
マルウェアであるか否かのみならず、マルウェアの種別に関して学習並びに判定を行う手段を含む。
【００１５】
また、本発明（請求項４）は、上記請求項１または３の前記判定手段において、
前記オブジェクトの全体または一部のみを使って判定する手段を含む。
【００１６】
また、本発明（請求項５）は、オブジェクト記憶手段、単語抽出手段、特徴抽出手段、判定手段を有し、悪意のあるソフトウェア（以下、「マルウェア」と記す）あるいはマルウェアを送受信する通信を検出する装置における、悪意のあるソフトウェアを検出するソフトウェア検出方法であって、
前記単語抽出手段は、ファイルあるいは送受信する通信データ（以下、ファイルあるいは通信データをまとめて「オブジェクト」と記す）を記憶する前記オブジェクト記憶手段に記録されたオブジェクトより文字列として、予め用意した静的な単語辞書を参照して、または、ネットワーク上の検索エンジンの結果を用いて、印字及び可読なバイト列を単語として抽出する単語抽出ステップと、
前記特徴抽出手段が、前記単語抽出ステップによって抽出された単語の集合を元に、サポートベクターマシンを用いてオブジェクトごとに特徴ベクトルを構成する特徴抽出ステップと、
前記判定手段が、前記特徴ベクトルに機械学習システムを適用することにより新たに観測した特徴ベクトルを元に前記オブジェクトがマルウェアであるか否かを判定する判定ステップと、
を行い、
前記単語抽出ステップにおいて、
文字列の英数字以外を区切り文字に置換し、大文字が２文字以上連続している場合には、該当した大文字を一つの単語としてマークし、マークされた以外に大文字がある場合は、該当した大文字の前に区切り文字を挿入し、該文字列を区切り文字によって分割し、分割した各々の文字列を単語として抽出する。
【００１７】
また、本発明（請求項６）は、前記判定ステップにおいて、
任意に設定が可能な周期が到来する毎に新たな学習データをフィードバックすることによって再学習を可能とする前記機械学習システムを用いる。
【００２０】
また、本発明（請求項７）は、前記判定ステップにおいて、
マルウェアであるか否かのみならず、マルウェアの種別に関して学習並びに判定を行う。
【００２１】
また、本発明（請求項８）は、上記請求項５または７の前記判定ステップにおいて、
前記オブジェクトの全体または一部のみを使って判定する。
【００２２】
また、本発明（請求項９）は、請求項１乃至４のいずれか１項に記載のソフトウェア検出装置を構成する各手段としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【００２３】
上記のように、本発明では、ソフトウェアファイルに含まれる可読な文字列に着目し、マルウェアを構成するプログラム中に含まれるメッセージ、通信に利用するために用いられるホスト名、実行コマンド名、関数名やライブラリ名などのマルウェアを特徴付ける情報を（特徴ベクトル）を収集しておき、この内容と検査対象のファイルに含まれる文字列とを比較することにより、マルウェアを検出するため、未知のパターンにも対応可能な高速なマルウェア及びマルウェアを含む通信の検出が可能になる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施の形態におけるシステムの構成例である。
【図２】本発明の一実施の形態における文字列処理のフローチャートである。
【発明を実施するための形態】
【００２５】
本発明は、マルウェアと通常のデータの比較にあたり、データに含まれる印字可能な文字列を適切に処理し、可読な単語集合とした際に単語集合間に差異が存在するという性質を利用する。可読な文字列にはマルウェアを構成するプログラム中に含まれるメッセージ、通信に利用するために用いられるホスト名、実行コマンド名に加え、関数名やライブラリ名などがあり、マルウェアに関する様々な情報を収集することができる。
【００２６】
マルウェアにはコードの一部のみを改変した亜種と呼ばれるソフトウェアが存在する。今日のマルウェアの大多数はオリジナルが開発された後に、多数の亜種が開発されることが知られているが、亜種のコードの大部分はオリジナルと変わらないため、印字可能な文字列の特徴はオリジナルとほぼ同様となる可能性が高い。
【００２７】
以下に、本発明の概要を示す。
【００２８】
（１）はじめにファイルあるいは送受信する通信データ（以下、ファイルあるいは通信データをまとめて「オブジェクト」とする）を後述するオブジェクト記録部によって記録する。
【００２９】
（２）次に、後述する単語抽出部が、上記の記録したオブジェクトにより文字列として印字及び可読なバイト列を単語として抽出し、単語集合とする。
【００３０】
（３）次に、上記の単語集合を元にオブジェクト毎に特徴ベクトルを構成し、さらに上記の特徴ベクトルに機械学習システムを適用することによって、判定機能により新たに観測した特徴ベクトルを元に該オブジェクトがマルウェアであるか否かを判定する。ここで、特徴ベクトルはある単語が存在したか否かを「０」、「１」で表現したもの、あるいは、単語毎の頻度、あるいは、単語毎の頻度を正規化した値、あるいは単語毎のｔｆ−ｉｄｆ値など、任意に定めることができる。
【００３１】
上記の教師付き機械学習システムは、任意の設定が可能な周期が到来する毎に、新たなデータをフィードバックすることによって再学習が可能である。ここで、新たなデータとは、先行技術などの方法でリアルタイムではないものの、時間をかけてマルウェアあるいは通常ファイルと判定されたファイルに関するデータなどである。
【００３２】
上記の（２）の単語抽出部は、任意の単語辞書を利用することによって、印字可能な文字列から可読な単語集合を抽出する。このとき、予め用意した静的な辞書の他、ネットワーク上の検索エンジンの結果を利用することもできる。すなわち、印字可能な文字列を任意に指定が可能な検索エンジンで検索し、その結果が１件以上、あるいは、一般にＸ件以上であったときに可読であると判定する。
【００３３】
上記の判定機能では、マルウェアであるか通常のファイルであるのかの判定のみならず、他のクラスの分類を実現する機械学習によってマルウェアの種別に関しても判定を行う機能を有する。
【００３４】
オブジェクトに対する判定は、そのオブジェクトの全体ではなく、一部のみを使って判定を実施することも可能である。例えば、通信データの場合、全てのデータを受信し終わる前に、現在までに受信したデータを用いて判定することができる。
【００３５】
以下図面と共に、本発明の実施の形態を詳細に説明する。
【００３６】
図１は、本発明の一実施の形態におけるシステム構成を示す。
【００３７】
検出装置１００は、ネットワーク２００と接続され、オブジェクト記録部１０、オブジェクト記憶部２０、単語抽出部３０、単語辞書３５、特徴抽出部４０、機械学習システム５０、判定部６０から構成される。ここで、オブジェクト記憶部２０及び単語辞書３５は、ハードディスク等の記憶媒体である。
【００３８】
オブジェクト記録部１０は、マルウェアの実行ファイル（バイナリ）あるいはマルウェアを送受信している通信をオブジェクトとしてオブジェクト記憶部２０に記録する。
【００３９】
単語抽出部３０は、オブジェクト記憶部２０からオブジェクトを読み出して、オブジェクトを解析し、はじめに印字可能な文字コードがＸ文字以上連続する文字列を抽出する。Ｘは任意の正数（Ｘ＝１，２，…）に設定が可能である。ここで、印字可能であるとは、例えば、ASCIIコードにおいては、制御文字を除いた０×２０から０×７ｅまでの空白及び図形文字の文字コードを指す。表１に得られた文字列の例を示す。
【００４０】
【表１】
0005569935.tif 000002
なお、表１に示す文字列は単語抽出部３０内のメモリ（図示せず）に格納されるものとする。
【００４１】
さらに、抽出された文字列に対し、任意に設定が可能な規則に従って文字列を処理し、単語の候補とする。図２に文字列処理の例を示す。
【００４２】
ステップ１０１）  文字列の英数字以外を区切り文字に置換する。
【００４３】
ステップ１０２）  大文字が２文字以上連続している場合は、ステップ１０３に移行し、連続していない場合は、ステップ１０４に移行する。
【００４４】
ステップ１０３）  該当した大文字を一つの単語としてマークする。
【００４５】
ステップ１０４）  マークされた以外に大文字がある場合は、ステップ１０５に移行し、ない場合はステップ１０６に移行する。
【００４６】
ステップ１０５）  該当した大文字の前に区切り文字を挿入する。
【００４７】
ステップ１０６）  文字列を区切り文字によって分割し、分割した各々の文字列を単語とする。
【００４８】
上記のフローに従って文字列処理を実施した結果、上記の表１に示す文字列は表２に示す単語候補となる。
【００４９】
【表２】
0005569935.tif 000003
なお、表２に示す文字列は単語抽出部３０内のメモリ（図示せず）に格納されるものとする。
【００５０】
単語抽出部３０は、上記の表２に示す単語候補に対して予め準備しておいた単語辞書３５を用いて、単語辞書３５に登録されている単語にマッチした単語のみ抽出する。あるいは、インターネットの検索エンジンで該当する単語候補を検索し、検索結果の数がある任意に設定が可能な閾値以上であったときのみ単語として抽出する。単語辞書３５とマッチした結果、表３に示す単語集合を得る。
【００５１】
【表３】
0005569935.tif 000004
なお、表３に示す文字列は単語抽出部３０内のメモリ（図示せず）に格納されるものとする。
【００５２】
特徴抽出部４０は、各々のファイルについて表３で得られた単語集合を単語抽出部３０のメモリから読み出して、特徴ベクトルを構成する。すなわち、
ファイルX_i （ｉ＝１，２，…，N）の特徴ベクトル
V_i = {v_i1，v_i2，…，v_ij，…，v_iM}
を各々のファイルX_iに含まれる各単語w_j（ｊ＝１，２，…，Ｍ）を用い、
v_ij = g（w_j，X_i，X，ａ）
のように、w_j，X_i，X，aの関数で定義する。ここで、Xは全てのファイルの集合であり、ａは任意に定義可能な重みパラメータである。
【００５３】
v_ijの構成例としては、例えば、公知のtf−idf値を用いることができる。すなわち、
v_ij = tf_ij * idf_j
であり、
tf_ij = n_ij / sum_k  n_k, j
idf_j = log(N / c)
である。ここで、
・n_ijはファイルF_iにおいて単語w_jが生起した回数；
・sum_k  n_kjは単語w_jが全てのファイルで生起した回数の合計；
・Ｎは全てのファイルの総数；
・ｃは単語w_jを含むファイルの総数；
である。なお、＊は乗算を示す演算子である。
【００５４】
判定部６０は、特徴ベクトルV_iに機械学習システム５０を適用する。
【００５５】
特徴ベクトルV_iに教師付き機械学習システム５０を適用することによって、ファイルを「マルウェア」、「通常ファイル」に分類する。具体的には、予め「マルウェア」、「通常ファイル」のそれぞれのファイルの特徴ベクトルを学習し、新たに得られたファイルについてその特徴ベクトルを元に「マルウェア」であるか「通常ファイル」であるかを判定する。
【００５６】
機械学習システム５０の機械学習の手法としては、公知の教師あり学習の手法を用いることができる。教師あり学習では事前に教師データ(V_1，y_1)，(V_2，y_2)，…，(V_N，y _N)が与えられる。ここで、V_iは前述のファイルX_iに対する特徴ベクトルである。y_iは同ファイルのクラスであり、「０」か「１」の二値をとる。「０」なら通常ファイル、「１」ならマルウェアのように定義する。
【００５７】
上記の教師あり学習は、新たに観測したV_mに対するクラスy_mを高精度に推定する手法であり、サポートベクターマシン（SVM）、ナイーブベイズ法、ニューラルネットワーク、決定木など様々な公知の手法が広く使われている。
【００５８】
以下では、SVMを教師あり学習として適用した結果を例示するが、本発明における機械学習の適用範囲はこの例に限定されることなく、上記の種々の方法が適用可能である。
【００５９】
表４は、機械学習システム５０において、各ファイルに対し、出現する単語及びその出現単語数を分析した結果であり、判定部６０のメモリ（図示せず）に格納される。
【００６０】
【表４】
0005569935.tif 000005
次に、表５は上記の表４を元に、特徴ベクトルを構成した例である。単語は単語辞書３５を元に番号が付けられている。特徴ベクトルの標記は"j： v_ij"とする。すなわち、{単語の番号：tf-idf値}である。ここで、クラスは"１"はマルウェア、"−１"は通常ファイルとした。
【００６１】
【表５】
0005569935.tif 000006
上記の特徴ベクトルにSVMを適用した結果の一例を表６に示す。ここでは、マルウェアを221ファイル、通常ファイルを1526ファイルを利用した。マルウェアは実際のインターネットで収集したものであり、通常ファイルは市販のオペレーティングシステムにインストールされているファイルを用いた。
【００６２】
また、学習には各々100ファイルを用い、残り全てのファイルについて判定を実施した。すなわち、既知の100＋100 = 200ファイルを用いて機械学習を行い、その200ファイルも除いた未知の1547ファイルに対して判定を行った。得られた結果は精度(precision)が99.37%、再現率(Recall)が99.86%と高い精度を得ることができる。
【００６３】
【表６】
0005569935.tif 000007
上記の例のように２クラス、すなわちマルウェアであるか通常ファイルであるかの判定のみならず、他のクラスの分類を実現する機械学習によってマルウェアの種別に関しても機械学習で判定が可能である。すなわち、マルウェアの種別c_k (k＝１，２，…，K)をクラスとし、機械学習を所与の特徴ベクトルに対してクラスC_kを判定する問題設定で適用することにより、そのような分類が可能となる。
【００６４】
また、機械学習システム５０は、任意の設定が可能な周期が到来する毎に新たなデータをフィードバックすることによって再学習が可能である。ここで、新たなデータとは、先行技術などの方法でリアルタイムではないもの、時間をかけてマルウェアあるいは通常ファイルと判定されたファイルに関するデータなどである。
【００６５】
上記のオブジェクトに対する判定はそのオブジェクト全体ではなく、一部のみを使って判定を実施することも可能である。例えば、通信データの場合、全てのデータを受信し終わる前に、現在までに受信したデータを用いて判定する。
【００６６】
上記のように、本発明では、ソフトウェアファイルに含まれる可読な文字列に着目し、マルウェアを構成するプログラム中に含まれるメッセージ、通信に利用するために用いられるホスト名、実行コマンド名、関数名やライブラリ名などのマルウェアを特徴づける情報を（特徴ベクトル）を収集しておき、この内容と検査対象のファイルに含まれる文字列とを比較することにより、マルウェアを検出することができる。
【００６７】
上記の図１に示す検出装置の各構成要素の動作をプログラムとして構築し、検出装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００６８】
また、構築されたプログラムをハードディスクや、フレキシブルディスク、CD-ROM等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【００６９】
なお、本発明は上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【符号の説明】
【００７０】
１０  オブジェクト記録部
２０  オブジェクト記憶部
３０  単語抽出部
３５  単語辞書
４０  特徴抽出部
５０  機械学習システム
６０  判定部
１００  検出装置
２００  ネットワーク
【図１】
0005569935.tif 000008
【図２】
0005569935.tif 000009