(57)【要約】【課題】実行ファイルのファイル種別を考慮し、実行ファイルがマルウェアであるか否かの判定を高精度に行うこと。【解決手段】マルウェア判定装置１０は、マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する。そして、マルウェア判定装置１０は、各実行ファイルから特徴を抽出し、該各実行ファイルの特徴と判別されたファイル種別とに基づいて、各実行ファイルの特徴ベクトルを作成する。続いて、マルウェア判定装置１０は、作成された各実行ファイルの特徴ベクトルを教師データとして入力し、マルウェアか否かを判定する分類器を作成し、作成された分類器を用いて、判定対象のファイルのマルウェアらしさを示すスコアを算出し、算出されたスコアに基づいて、判定対象のファイルがマルウェアであるか否かを判定する。【選択図】        図１
2017004123.tif 000002
【特許請求の範囲】
【請求項１】
マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別部と、
前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴と前記判別部によって判別されたファイル種別とに基づいて、各実行ファイルの特徴ベクトルを作成する抽出部と、
前記抽出部によって作成された各実行ファイルの特徴ベクトルを教師データとして入力し、マルウェアか否かを判定する分類器を作成する作成部と、
前記作成部によって作成された分類器を用いて、判定対象のファイルのマルウェアらしさを示すスコアを算出する算出部と、
前記算出部によって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定部と、
を備えることを特徴とする判定装置。
【請求項２】
前記抽出部は、前記各実行ファイルから特徴を抽出し、該特徴に対して、前記判別部によって判別されたファイル種別を示す文字列を追記し、該ファイル種別を示す文字列が追記された特徴から前記特徴ベクトルを作成することを特徴とする請求項１に記載の判定装置。
【請求項３】
前記抽出部は、前記各実行ファイルから特徴を抽出し、該特徴とともに、前記判別部によって判別されたファイル種別を示す文字列を特徴として用いて、各実行ファイルの特徴ベクトルを作成することを特徴とする請求項１に記載の判定装置。
【請求項４】
マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別部と、
前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴に基づいて、各実行ファイルの特徴ベクトルを作成する抽出部と、
前記判別部によって判別されたファイル種別毎に前記特徴ベクトルを教師データとして入力し、前記ファイル種別毎に分類器をそれぞれ作成する作成部と、
判定対象のファイルのファイル種別に対応する分類器を選択し、該分類器を用いて、前記判定対象のファイルのマルウェアらしさを示すスコアを算出する算出部と、
前記算出部によって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定部と、
を備えることを特徴とする判定装置。
【請求項５】
判定装置が実行する判定方法であって、
マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別工程と、
前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴と前記判別工程によって判別されたファイル種別とに基づいて、各実行ファイルの特徴ベクトルを作成する抽出工程と、
前記抽出工程によって作成された各実行ファイルの特徴ベクトルを教師データとして入力し、マルウェアか否かを判定する分類器を作成する作成工程と、
前記作成工程によって作成された分類器を用いて、判定対象のファイルのマルウェアらしさを示すスコアを算出する算出工程と、
前記算出工程によって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定工程と、
を含んだことを特徴とする判定方法。
【請求項６】
マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別工程と、
前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴に基づいて、各実行ファイルの特徴ベクトルを作成する抽出工程と、
前記判別工程によって判別されたファイル種別毎に前記特徴ベクトルを教師データとして入力し、前記ファイル種別毎に分類器をそれぞれ作成する作成工程と、
判定対象のファイルのファイル種別に対応する分類器を選択し、該分類器を用いて、前記判定対象のファイルのマルウェアらしさを示すスコアを算出する算出工程と、
前記算出工程によって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定工程と、
を含んだことを特徴とする判定方法。
【請求項７】
マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別ステップと、
前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴と前記判別ステップによって判別されたファイル種別とに基づいて、各実行ファイルの特徴ベクトルを作成する抽出ステップと、
前記抽出ステップによって作成された各実行ファイルの特徴ベクトルを教師データとして入力し、マルウェアか否かを判定する分類器を作成する作成ステップと、
前記作成ステップによって作成された分類器を用いて、判定対象のファイルのマルウェアらしさを示すスコアを算出する算出ステップと、
前記算出ステップによって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定ステップと、
をコンピュータに実行させるための判定プログラム。
【請求項８】
マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別ステップと、
前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴に基づいて、各実行ファイルの特徴ベクトルを作成する抽出ステップと、
前記判別ステップによって判別されたファイル種別毎に前記特徴ベクトルを教師データとして入力し、前記ファイル種別毎に分類器をそれぞれ作成する作成ステップと、
判定対象のファイルのファイル種別に対応する分類器を選択し、該分類器を用いて、前記判定対象のファイルのマルウェアらしさを示すスコアを算出する算出ステップと、
前記算出ステップによって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定ステップと、
をコンピュータに実行させるための判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、判定装置、判定方法および判定プログラムに関する。
【背景技術】
【０００２】
近年、実行ファイルがマルウェアか判定を行う手法として、実行ファイルを実行して判定する動的判定と、実行ファイルを実行せずに判定する静的判定の２手法が用いられ、判定に特に速度が求められる場合は静的判定が用いられる。
【０００３】
静的判定の手法として代表的なものに、ハッシュ値一致判定、および、パターンマッチ判定（シグニチャスキャン）が挙げられる。ハッシュ値一致判定は、予め既知のマルウェアのＭＤ５、ＳＨＡ１、ＳＨＡ２５６等のハッシュ値をデータベースとして持ち、検査対象ファイルのハッシュ値がそのデータベースに合致すればマルウェアとするものである。パターンマッチ判定は、予め既知のマルウェアに含まれる特定の文字列やバイトコードをデータベースとして持ち、検査対象ファイル中にそれらのデータベース登録された文字列・バイトコードのいずれかを含んでいればマルウェとするものである。
【０００４】
これらの手法は既存マルウェアを改造した亜種マルウェアや新種のマルウェアの検知は難しかった。そのため、亜種・新種のマルウェアを判定する手法として、ヒューリスティック判定が提案されている。これは、これまでの経験に基づいて、マルウェアらしさを定義し、その定義に従って判定するものである。
【０００５】
例えば、ヒューリスティック判定として機械学習技術を用いる手法が提案されている（例えば、特許文献１参照）。このような機械学習技術を用いる手法では、例えば、実行ファイル中に含まれる可読文字列を予め学習し、マルウェアで良く用いられる語が検査ファイル中にどの程度含まれるかを基準にそのマルウェアらしさを判定する。
【０００６】
また、機械学習ではまず学習対象のデータ(学習データ)を、いくつかのパラメータの組に変換してから機械学習アルゴリズムで学習を行う。この個々のパラメータを特徴、パラメータの組を数ベクトルで表したものを特徴ベクトルと呼ぶ。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−２７７１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記した従来の技術では、実行ファイルにおける、32ビットアプリケーション、Visual  Basicアプリケーション、32ビットデバイスドライバー、32ビットダイナミックリンクライブラリファイル、64ビットアプリケーションといったファイル種別を考慮せずに、実行ファイルがマルウェアであるか否かの判定を行っていたため、判定の精度が低くなる場合があるという課題があった。つまり、ファイル種別が異なる実行ファイル同士では、その特徴が相反することが多いため、ファイル種別を考慮しない場合には判定精度が低くなる場合がある。
【０００９】
例えば、３２ビットアプリケーションにおいては、マルウェアでのみ頻出する特徴が、６４ビットアプリケーションの場合にはグッドウェアでも出現することがある。このような場合には、ファイル種別を考慮せずに判定すると、この特徴を有する３２ビットアプリケーションのマルウェアと６４ビットアプリケーションのグッドウェアとを精度よく分類することが困難になる。
【００１０】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、実行ファイルのファイル種別を考慮し、実行ファイルがマルウェアであるか否かの判定を高精度に行うことを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、判定装置は、マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別部と、前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴と前記判別部によって判別されたファイル種別とに基づいて、各実行ファイルの特徴ベクトルを作成する抽出部と、前記抽出部によって作成された各実行ファイルの特徴ベクトルを教師データとして入力し、マルウェアか否かを判定する分類器を作成する作成部と、前記作成部によって作成された分類器を用いて、判定対象のファイルのマルウェアらしさを示すスコアを算出する算出部と、前記算出部によって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定部と、を備えることを特徴とする。
【００１２】
また、判定装置は、マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別部と、前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴に基づいて、各実行ファイルの特徴ベクトルを作成する抽出部と、前記判別部によって判別されたファイル種別毎に前記特徴ベクトルを教師データとして入力し、前記ファイル種別毎に分類器をそれぞれ作成する作成部と、判定対象のファイルのファイル種別に対応する分類器を選択し、該分類器を用いて、前記判定対象のファイルのマルウェアらしさを示すスコアを算出する算出部と、前記算出部によって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定部と、を備えることを特徴とする。
【００１３】
また、判定方法は、判定装置が実行する判定方法であって、マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別工程と、前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴と前記判別工程によって判別されたファイル種別とに基づいて、各実行ファイルの特徴ベクトルを作成する抽出工程と、前記抽出工程によって作成された各実行ファイルの特徴ベクトルを教師データとして入力し、マルウェアか否かを判定する分類器を作成する作成工程と、前記作成工程によって作成された分類器を用いて、判定対象のファイルのマルウェアらしさを示すスコアを算出する算出工程と、前記算出工程によって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定工程と、を含んだことを特徴とする。
【００１４】
また、判定方法は、マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別工程と、前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴に基づいて、各実行ファイルの特徴ベクトルを作成する抽出工程と、前記判別工程によって判別されたファイル種別毎に前記特徴ベクトルを教師データとして入力し、前記ファイル種別毎に分類器をそれぞれ作成する作成工程と、判定対象のファイルのファイル種別に対応する分類器を選択し、該分類器を用いて、前記判定対象のファイルのマルウェアらしさを示すスコアを算出する算出工程と、前記算出工程によって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定工程と、を含んだことを特徴とする。
【００１５】
また、判定プログラムは、マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別ステップと、前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴と前記判別ステップによって判別されたファイル種別とに基づいて、各実行ファイルの特徴ベクトルを作成する抽出ステップと、前記抽出ステップによって作成された各実行ファイルの特徴ベクトルを教師データとして入力し、マルウェアか否かを判定する分類器を作成する作成ステップと、前記作成ステップによって作成された分類器を用いて、判定対象のファイルのマルウェアらしさを示すスコアを算出する算出ステップと、前記算出ステップによって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定ステップと、をコンピュータに実行させることを特徴とする。
【００１６】
また、判定プログラムは、マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する判別ステップと、前記各実行ファイルから特徴を抽出し、該各実行ファイルの特徴に基づいて、各実行ファイルの特徴ベクトルを作成する抽出ステップと、前記判別ステップによって判別されたファイル種別毎に前記特徴ベクトルを教師データとして入力し、前記ファイル種別毎に分類器をそれぞれ作成する作成ステップと、判定対象のファイルのファイル種別に対応する分類器を選択し、該分類器を用いて、前記判定対象のファイルのマルウェアらしさを示すスコアを算出する算出ステップと、前記算出ステップによって算出されたスコアに基づいて、前記判定対象のファイルがマルウェアであるか否かを判定する判定ステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１７】
本願に開示する判定装置、判定方法および判定プログラムは、実行ファイルのファイル種別を考慮し、実行ファイルがマルウェアであるか否かの判定を高精度に行うことが可能であるという効果を奏する。
【図面の簡単な説明】
【００１８】
【図１】図１は、第一の実施形態に係るマルウェア判定装置の概要を示す構成図である。
【図２】図２は、ファイル種別判定部による実行ファイルのファイル種別を判別する処理を説明する図である。
【図３】図３は、特徴抽出部による実行ファイルの特徴を抽出する処理を説明する図である。
【図４】図４は、特徴抽出部による各特徴に対してファイル種別を表す文字列を追記する処理を説明する図である。
【図５】図５は、特徴抽出部による特徴ベクトルを作成する処理を説明する図である。
【図６】図６は、特徴抽出部による各特徴に対してファイル種別を表す文字列を追記して特徴ベクトルを作成する効果を説明する図である。
【図７】図７は、第一の実施形態に係るマルウェア判定装置による学習処理の流れを示すフローチャートである。
【図８】図８は、第一の実施形態に係るマルウェア判定装置による判定処理の流れを示すフローチャートである。
【図９】図９は、特徴抽出部によるファイル種別を表す文字列を特徴の一つとして用いて、特徴ベクトルを作成する処理を説明する図である。
【図１０】図１０は、ファイル種別を表す文字列を追記し、かつ、ファイル種別を表す文字列を特徴の一つとして用いて、特徴ベクトルを作成する処理を説明する図である。
【図１１】図１１は、第三の実施形態に係るマルウェア判定装置の概要を示す構成図である。
【図１２】図１２は、分類器作成部によるファイル種別毎に分類器を作成する処理を説明する図である。
【図１３】図１３は、第三の実施形態に係るマルウェア判定装置による学習処理の流れを示すフローチャートである。
【図１４】図１４は、第三の実施形態に係るマルウェア判定装置による判定処理の流れを示すフローチャートである。
【図１５】図１５は、判定プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１９】
以下に、本願に係る判定装置、判定方法および判定プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係る判定装置、判定方法および判定プログラムが限定されるものではない。
【００２０】
［第一の実施形態］
以下の実施形態では、第一の実施形態に係るマルウェア判定装置の構成および処理の流れを順に説明し、その後、最後に第一の実施形態による効果を説明する。
【００２１】
［マルウェア判定装置の構成］
まず、図１を用いて、マルウェア判定装置１０の構成を説明する。図１は、第一の実施形態に係るマルウェア判定装置の概要を示す構成図である。図１に示すように、このマルウェア判定装置１０は、学習部１１、分類器記憶部１２および判定制御部１３を有する。以下にこれらの各部の処理を説明する。
【００２２】
学習部１１は、学習データから特徴ベクトルを生成し、特徴ベクトルから単一の分類器を作成し、分類器を分類器記憶部１２に格納する。学習部１１は、ファイル種別判別部１１ａ、特徴抽出部１１ｂおよび分類器作成部１１ｃを有する。
【００２３】
ファイル種別判別部１１ａは、マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する。具体的には、ファイル種別判別部１１ａは、既知のマルウェアおよびグッドウェアである既知マルウェア・グッドウェア２０からなる学習データセットの入力を受け付け、学習データセットに含まれる各実行ファイルのファイル種別を判別し、判別結果の情報を付加した学習データセットを特徴抽出部１１ｂに出力する。
【００２４】
ここで、図２の例を用いて、ファイル種別判定部１１ａによる実行ファイルのファイル種別を判別する処理を説明する。図２は、ファイル種別判定部による実行ファイルのファイル種別を判別する処理を説明する図である。図２に例示するように、学習データセットを入力として受け取り、各実行ファイルのファイル種別を判別した上で、その判別結果（当該データのファイル種別）の情報を付加した学習データを特徴抽出部１１ｂに出力する。なお、ファイル種別の判別には、例えば、PeStudio、PEInfo等の専用ツールを用いることが考えられる。ただし、ファイル種別を判別できる方法であれば、これらに限定されるものではない。
【００２５】
ここで、学習データセットは、既存のマルウェアとグッドウェアの実行ファイル、および、その実行ファイルがマルウェアなのかグッドウェアかの分類を示す情報で構成される。なお、以下では、学習データセットの構成要素（実行ファイルと分類情報の組）を学習データと呼ぶ。例えば、図２の例では、「学習データ１」は、「実行ファイル１」と、実行ファイル１がマルウェアであることを示す「マルウェア」とで構成される。
【００２６】
また、図２に例示するように、例えば、ファイル種別判定部１１ａは、「学習データ１」について、ファイル種別が「３２ビットアプリケーション」であることを判別すると、その判別結果の情報を「学習データ１」に付加した「学習データ１＝（実行ファイル１、マルウェア、３２ビットアプリケーション）」を特徴抽出部１１ｂに出力する。
【００２７】
特徴抽出部１１ｂは、各実行ファイルから特徴を抽出し、該各実行ファイルの特徴とファイル種別判別部１１ａによって判別されたファイル種別とに基づいて、各実行ファイルの特徴ベクトルを作成する。具体的には、特徴抽出部１１ｂは、ファイル種別の情報が付加された学習データセットをファイル種別判別部１１ａから受け付けると、学習データセットの各実行ファイルから特徴を抽出し、該特徴に対して、ファイル種別を示す文字列を追記し、該ファイル種別を示す文字列が追記された特徴から、分類器にかけるための特徴ベクトルを作成し、特徴ベクトルを分類器作成部１１ｃに出力する。以下では、第１ステップと第２ステップの２段階のステップに分けて特徴抽出について詳しく説明する。
【００２８】
図３の例を用いて、第１ステップにおける特徴抽出の処理を説明する。図３は、特徴抽出部による実行ファイルの特徴を抽出する処理を説明する図である。まず、第１ステップにおいて、実行ファイルの特徴としては、例えば、ＰＥ（Portable  Executable）ヘッダ情報の属性値が考えられる。ＰＥヘッダ情報では、１つの属性で単一の値をもつものもあれば、１属性で複数の値をもつものがある。例えば、「base_of_code」という属性は１つの値のみをもつが、「characteristics」という属性は、その値として「Executable」、「32bit  word  machine」、「Debug  information  stripped」など複数の値をもつ。これらは、それぞれを１つの特徴として取り扱う。つまり、characteristicsの例では、１属性で３つの特徴を抽出したものとして扱う。
【００２９】
例えば、図３の例では、ファイル種別が「３２ビットアプリケーション」であることを示すファイル種別情報つきの「実行ファイル１」について、「base_of_code」の値「0x100」と、「characteristics」の値「Executable」、「32bit  word  machine」および「Debug  information  stripped」とを実行ファイルの特徴として抽出する。
【００３０】
次に、図４の例を用いて、第２ステップにおける特徴抽出の処理を説明する。図４は、特徴抽出部による各特徴に対してファイル種別を表す文字列を追記する処理を説明する図である。図４に例示するように、特徴抽出部１１ｂは、抽出した各特徴に対して、当該実行ファイルのファイル種別を表す文字列を追記する。図４の例を用いて説明すると、実行ファイルの各特徴「0x100」、「Executable」、「32bit  word  machine」および「Debug  information  stripped」に対して、それぞれ「32Bit_」という文字列を先頭に追記した特徴「｛32Bit_0x100、32Bit_Executable、32Bit_32bit  word  machine、  32Bit_Debug  information  stripped｝」を作成する。なお、文字列は、異なるファイル種別を区別できるものであれば何でもよい。
【００３１】
次に、特徴ベクトルの作成について説明する。特徴ベクトルの作成には、例えば、各特徴が出現したかしないかで１／０の２値を割り当てる方法、各特徴の出現回数を割り当てる方法等の教師あり機械学習で一般的に用いられる手法を利用する。なお、上記特徴ベクトルに対し、特徴選択や次元圧縮等の次元削減処理を施したものを、改めてその実行ファイルの特徴ベクトルとしてもよい。ここで、特徴選択とは、目的の精度がより良くなるように、各特徴を取捨選択する手法である。次元圧縮の代表的な手法としては、例えば、主成分分析があり、これは相関がある特徴同士を自動的に１つの特徴にまとめてしまうものである。
【００３２】
ここで、図５の例を用いて、特徴抽出部１１ｂによる特徴ベクトルを作成する処理について説明する。図５は、特徴抽出部による特徴ベクトルを作成する処理を説明する図である。図５の例では、各特徴が出現したかしないかで１／０の２値を割り当てる方法を用いて特徴抽出部による特徴ベクトルを作成し、次元圧縮の処理を行っていないものとする。また、図５に例示するように、ファイル種別が「３２ビットアプリケーション」であることを示すファイル種別情報つきの「実行ファイル１」について、「base_of_code」の値「0x100」と、「characteristics」の値「Executable」、「32bit  word  machine」および「Debug  information  stripped」とが特徴として抽出され、図４の例で説明したように、各特徴に「32Bit_」という文字列が追記された特徴「｛32Bit_0x100、32Bit_Executable、32Bit_32bit  word  machine、  32Bit_Debug  information  stripped｝」を作成したものとする。
【００３３】
そして、実行ファイル１の特徴において、「32Bit_0x100」、「32Bit_Executable」、「32Bit_32bit  word  machine」、「32Bit_Debug  information  stripped」、「32Bit_INIT」、「32Bit_0x2000」、「64Bit_0x100」、「64Bit_Executable」・・・がそれぞれ出現したかに応じて値を割り当て、特徴ベクトル「（１，１，１，１，０，０，０，０・・・）」を作成する。
【００３４】
ここで、図６を用いて、特徴抽出部１１ｂによる各特徴に対してファイル種別を表す文字列を追記して特徴ベクトルを作成することの効果を説明する。図６は、特徴抽出部による各特徴に対してファイル種別を表す文字列を追記して特徴ベクトルを作成する効果を説明する図である。
【００３５】
第一の実施形態に係るマルウェア判定装置１０では、ファイル種別を表す情報を特徴ベクトルの中に取り込むことにより、ファイル種別が異なる実行ファイル同士は、必ず、別々の特徴ベクトルに変換することが出来る。例えば、従来手法のようにファイル種別を加味しない場合には、ファイル種別が異なるマルウェアとグッドウェアで同一の特徴あるいは特徴ベクトルを有してしまう。例えば、図６に例示するように、従来手法では、３２ビットアプリケーションの実行ファイルＡに関する特徴ベクトルと、６４ビットアプリケーションの実行ファイルＡに関する特徴ベクトルは、両者とも「特徴ベクトル＝（0x100、Executable）＝（１，１）」となるため、同一の特徴ベクトルとなる。つまり、ファイル種別を加味しない場合には、３２ビットアプリケーションの実行ファイルＡの特徴も、６４ビットアプリケーションの実行ファイルＡも、｛0x100、Executable｝となるため、特徴ベクトルも同一のものとなる。
【００３６】
これに対して、第一の実施形態に係るマルウェア判定装置１０では、お互いを全く異なる特徴ベクトルに変換するため、マルウェア/グッドウェアを精度よく判定しやすくなる。例えば、図６に例示するように、３２ビットアプリケーションの実行ファイルＡに関する特徴ベクトルが「特徴ベクトル＝（32Bit_0x100、32Bit_Executable、64Bit_0x100、64Bit_Executable）＝（１，１，０，０）」となり、６４ビットアプリケーションの実行ファイルＡに関する特徴ベクトルが「特徴ベクトル＝（32Bit_0x100、32Bit_Executable、64Bit_0x100、64Bit_Executable）＝（０，０，１，１）」となる。このため、ファイル種別が異なる実行ファイルの特徴ベクトルは、互いに全く異なるものとなるため、後述する判定制御部１３によるマルウェアの判定処理を精度よく行うことが可能となる。
【００３７】
分類器作成部１１ｃは、特徴抽出部１１ｂによって作成された各実行ファイルの特徴ベクトルを教師データとして入力し、マルウェアか否かを判定する分類器を作成する。具体的には、分類器作成部１１ｃは、特徴ベクトルを特徴抽出部１１ｂから受け付けると、特徴ベクトルを教師データとして入力して、マルウェアか否かを判定する分類器を作成し、作成した分類器を分類器記憶部１２に格納する。ここで、分類器の作成には教師あり学習を用いる。教師あり学習としては、例えば、ロジスティック回帰、サポートベクターマシン（ＳＶＭ）、決定木、単純ベイズ、パーセプトロン、Passive-Aggressive（PA）、Adaptive  Regularization  of  Weight  Vectors（AROW）等を用いることが考えられる。
【００３８】
分類器記憶部１２は、分類器作成部１１ｃによって作成された分類器を記憶する。分類器記憶部１２は、一般のデータベース（例えば、MySQLやPostgreSQL等）を用いてもよいし、表形式やテキスト形式での記憶など、その方法の種類は問わないものとする。
【００３９】
判定制御部１３は、作成された分類器を用いてマルウェアの判定を行う。判定制御部１３は、ファイル種別判別部１３ａ、特徴抽出部１３ｂ、スコア算出部１３ｃおよび判定部１３ｄを有する。
【００４０】
ファイル種別判別部１３ａは、マルウェアであるのかグッドウェアであるのかを判定したい実行ファイルである判定対象ファイル３０を入力として受け取り、そのファイル種別を判別する。そして、判別後、ファイル種別判別部１３ａは、判別結果(ファイル種別)の情報を付加した判定対象ファイル３０を特徴抽出部１３ｂに出力する。
【００４１】
特徴抽出部１３ｂは、前述した特徴抽出部１１ｂと同様の方法で、判定対象ファイル３０を特徴ベクトルに変換する。そして、特徴抽出部１３ｂは、特徴ベクトルに変換された判定対象ファイル３０をスコア算出部１３ｃに出力する。
【００４２】
スコア算出部１３ｃは、分類器作成部１１ｃによって作成された分類器を用いて、判定対象ファイル３０のマルウェアらしさを示すスコアを算出する。具体的には、スコア算出部１３ｃは、分類器記憶部１２に格納されている分類器を用いて、判定対象ファイル３０のマルウェアらしさを表すスコアを算出する。なお、マルウェアらしさのスコアを算出する方法としては、例えば、マルウェアで良く用いられる特徴が、判定対象の実行ファイルの特徴ベクトル中にどの程度含まれるかを基準に判定を行う方法等、公知の方法を利用することができる。
【００４３】
判定部１３ｄは、スコア算出部１３ｃによって算出されたスコアに基づいて、判定対象のファイルがマルウェアであるか否かを判定する。具体的には、判定部１３ｄは、スコアが所定の閾値以上であるか否かを判定しスコアが閾値以上であれば判定対象ファイル３０をマルウェアと判定し、スコアが閾値未満であれば判定対象ファイル３０をグッドウェアと判定し、その判定結果４０を出力する。なお、判定結果４０は、マルウェアまたはグッドウェアの分類のみでも良いし、それにスコアやファイル種別の情報を付け加えてもよい。
【００４４】
このように、マルウェア判定装置１０は、機械学習を用いたマルウェア判定において、実行ファイルのファイル種別を加味して特徴ベクトルを作成し、該特徴ベクトルを用いて分類器を作成するため、ファイル種別を加味しない場合に比べ、マルウェアの判定処理について高い判定精度を達成することが可能となる。
【００４５】
［マルウェア判定装置による処理］
次に、図７、図８を用いて、第一の実施形態に係るマルウェア判定装置１０による処理を説明する。図７は、第一の実施形態に係るマルウェア判定装置による学習処理の流れを示すフローチャートである。図８は、第一の実施形態に係るマルウェア判定装置による判定処理の流れを示すフローチャートである。
【００４６】
まず、図７を用いて、第一の実施形態に係るマルウェア判定装置１０による学習処理の流れについて説明する。図７に示すように、マルウェア判定装置１０のファイル種別判別部１１ａは、学習データセットの各実行ファイルのファイル種別を判定する（ステップＳ１０１）。そして、特徴抽出部１１ｂは、学習データから特徴ベクトルを生成する（ステップＳ１０２）。例えば、特徴抽出部１１ｂは、ファイル種別の情報が付加された学習データセットをファイル種別判別部１１ａから受け付けると、学習データセットの各実行ファイルから特徴を抽出し、該特徴に対して、ファイル種別を示す文字列を追記し、該ファイル種別を示す文字列が追記された特徴から、分類器にかけるための特徴ベクトルを作成する。
【００４７】
続いて、分類器作成部１１ｃは、単一の分類器を作成し（ステップＳ１０３）、分類器記憶部１２に分類器を格納する（ステップＳ１０４）。例えば、分類器作成部１１ｃは、学習ベクトルを特徴抽出部１１ｂから受け付けると、特徴ベクトルを教師データとして入力して、マルウェアか否かを判定する分類器を作成し、作成した分類器を分類器記憶部１２に格納する。
【００４８】
次に、図８を用いて、第一の実施形態に係るマルウェア判定装置１０による判定処理の流れについて説明する。図８に示すように、マルウェア判定装置１０のファイル種別判別部１３ａは、判定対象ファイル３０のファイル種別を判定する（ステップＳ２０１）。そして、特徴抽出部１３ｂは、特徴抽出部１１ｂと同様の方法で、判定対象ファイル３０から特徴ベクトルを生成する（ステップＳ２０２）。
【００４９】
続いて、スコア算出部１３ｃは、分類器記憶部１２に記憶された分類器を用いて、マルウェアらしさを表すスコアを算出する（ステップＳ２０３）。そして、判定部１３ｄは、スコアからマルウェア判定を行う（ステップＳ２０４）。具体的には、判定部１３ｄは、スコアが所定の閾値以上であるか否かを判定しスコアが閾値以上であれば判定対象ファイル３０をマルウェアと判定し、スコアが閾値未満であれば判定対象ファイル３０をグッドウェアと判定する。
【００５０】
[第一の実施形態の効果]
上述してきたように、マルウェア判定装置１０は、マルウェアであることが既知のファイルとグッドウェアであることが既知のファイルとを含む各実行ファイルのファイル種別をそれぞれ判別する。そして、マルウェア判定装置１０は、各実行ファイルから特徴を抽出し、該各実行ファイルの特徴と判別されたファイル種別とに基づいて、各実行ファイルの特徴ベクトルを作成する。続いて、マルウェア判定装置１０は、作成された各実行ファイルの特徴ベクトルを教師データとして入力し、マルウェアか否かを判定する分類器を作成し、作成された分類器を用いて、判定対象のファイルのマルウェアらしさを示すスコアを算出し、算出されたスコアに基づいて、判定対象のファイルがマルウェアであるか否かを判定する。このため、マルウェア判定装置１０は、実行ファイルのファイル種別を考慮し、実行ファイルがマルウェアであるか否かの判定を高精度に行うことが可能である。
【００５１】
［第二の実施形態］
上述した第一の実施形態では、各実行ファイルから特徴を抽出し、該特徴に対して、ファイル種別を示す文字列を追記し、該ファイル種別を示す文字列が追記された特徴から特徴ベクトルを作成する場合について説明したが、これに限定されるものではなく、各実行ファイルから特徴を抽出し、該特徴とともに、ファイル種別を示す文字列を特徴として用いて、各実行ファイルの特徴ベクトルを作成するようにしてもよい。
【００５２】
そこで、以下では第二の実施形態として、各実行ファイルから特徴を抽出し、該特徴とともに、ファイル種別を示す文字列を特徴の一つとして用いて、各実行ファイルの特徴ベクトルを作成する場合について説明する。なお、第一の実施形態と同様の構成および処理については、説明を省略する。
【００５３】
特徴抽出部１１ｂは、各実行ファイルから特徴を抽出し、該特徴とともに、ファイル種別判別部１１ａによって判別されたファイル種別を示す文字列を特徴として用いて、各実行ファイルの特徴ベクトルを作成する。つまり、第二の実施形態では、上述した特徴抽出における第２ステップ目の処理が、第一の実施形態と異なる。
【００５４】
具体的には、特徴抽出部１１ｂは、実行ファイルそのものから抽出した特徴、すなわち第１ステップ目で抽出した特徴に加えて、当該ファイルのファイル種別を表す文字列も特徴の１つとして用いて、特徴ベクトルを作成する。ここで、図９の例を用いて、特徴ベクトルを作成する処理を説明する。図９は、特徴抽出部によるファイル種別を表す文字列を特徴の一つとして用いて、特徴ベクトルを作成する処理を説明する図である。図９の例では、ファイル種別が３２ビットアプリケーションの実行ファイルを特徴ベクトルに変換する場合について説明する。図９に示すように、例えば、従来のようにファイル種別を加味しない場合には、特徴ベクトルとして、「特徴ベクトル＝（Section数、Executable、…、INIT）」が作成される。これに対して、第二の実施形態では、ファイル種別を表す文字列も特徴の１つとして用いられた特徴ベクトルとして、「特徴ベクトル＝（Section数、Executable、…、INIT、32Bit）」を作成する。
【００５５】
なお、図１０に例示するように、第一の実施形態と第二の実施形態の特徴ベクトル作成方法を組み合わせて特徴ベクトルを作成してもよい。つまり、各実行ファイルから特徴を抽出し、該特徴に対して、ファイル種別を示す文字列を追記し、さらに、ファイル種別を示す文字列を特徴として用いて、各実行ファイルの特徴ベクトルを作成するようにしてもよい。
【００５６】
このように、第二の実施形態に係るマルウェア判定装置では、ファイル種別を表す情報を特徴の一つとして用いることで、ファイル種別が異なる実行ファイル同士は異なる特徴をもつことになるため、グッドウェアとマルウェアの分解能が向上し、判定精度を向上させることが可能である。
【００５７】
［第三の実施形態］
上述した第一の実施形態と第二の実施形態では、各実行ファイルの特徴とファイル種別とに基づいて、各実行ファイルの特徴ベクトルを作成し、該特徴ベクトルを教師データとして分類器を作成する場合について説明したが、これに限定されるものではなく、ファイル種別毎に特徴ベクトルを教師データとして入力することで、ファイル種別毎に分類器をそれぞれ作成するようにしてもよい。
【００５８】
そこで、以下では第三の実施形態として、ファイル種別毎に特徴ベクトルを教師データとして入力することで、ファイル種別毎に分類器をそれぞれ作成する場合について説明する。なお、第一の実施形態と同様の構成および処理については、説明を省略する。
【００５９】
まず、図１１を用いて、第三の実施形態に係るマルウェア判定装置１０Ａの構成を説明する。図１１は、第三の実施形態に係るマルウェア判定装置の概要を示す構成図である。図１１に示すように、分類器記憶部１２は、複数の分類器１〜分類器Ｎを記憶する。なお、以下では、Ｎ個の分類器を作成し、Ｎ個の分類器を記憶する場合を例に説明する。
【００６０】
特徴抽出部１１ｂは、各実行ファイルから特徴を抽出し、該各実行ファイルの特徴に基づいて、各実行ファイルの特徴ベクトルを作成する。ここで、第三の実施形態では、第一の実施形態の特徴抽出における第２ステップ目の処理を実行しない。すなわち、特徴ベクトルの作成にファイル種別の情報は用いない。
【００６１】
分類器作成部１１ｃは、ファイル種別判別部１１ａによって判別されたファイル種別毎に特徴ベクトルを教師データとして入力し、ファイル種別毎にＮ個の分類器をそれぞれ作成する。具体的には、分類器作成部１１ｃは、特徴ベクトルに変換済みのファイル種別情報付の学習データセットを入力として受け取り、ファイル種別毎に、マルウェア／グッドウェアを判定する分類器を個別に作成する。
【００６２】
例えば、分類器作成部１１ｃは、図１２に例示するように、３２ビットアプリケーションの学習データセットを入力として、３２ビットアプリケーション用の分類器を作成する。また、分類器作成部１１ｃは、６４ビットアプリケーションの学習データセットを入力として、６４ビットアプリケーション用の分類器を作成する。また、分類器作成部１１ｃは、ＶｉｓｕａｌＢａｓｉｃアプリケーションの学習データセットを入力として、ＶｉｓｕａｌＢａｓｉｃアプリケーション用の分類器を作成する。
【００６３】
また、分類器作成部１１ｃは、学習データ数がある閾値以下のファイル種別があった場合には、ファイル種別を考慮せず、全学習データを用いて分類器を作成してもよい。例えば、分類器作成部１１ｃは、ファイル種別判別部１１ａによって判別されたファイル種別毎の学習データについて、それぞれ学習データの数が所定の閾値以上であるか否かを判定する。そして、分類器作成部１１ｃは、学習データの数が所定の閾値以上であると判定された場合には、上記の処理と同様に、そのファイル種別の学習データのみを用いて分類器を個別に作成する。また、分類器作成部１１ｃは、学習データの数が所定の閾値未満であると判定された場合には、ファイル種別を考慮せず、全学習データを用いて分類器を作成する。つまり、学習データの数があまりに少ない場合には、精度のよい分類器を作成できない場合があるため、学習データ数がある閾値以下のファイル種別については、ファイル種別を考慮せず、全学習データを用いて分類器を作成する。
【００６４】
スコア算出部１３ｃは、判定対象ファイル３０のファイルのファイル種別に対応する分類器を選択し、該分類器を用いて、判定対象ファイル３０のマルウェアらしさを示すスコアを算出する。具体的には、スコア算出部１３ｃは、判定対象ファイル３０のファイル種別と一致する分類器を分類器記憶部１２から選択して読み出し、読み出した分類器を用いて判定対象ファイル３０のマルウェアらしさを表すスコアを算出する。
【００６５】
次に、図１３、図１４を用いて、第三の実施形態に係るマルウェア判定装置１０Ａによる処理を説明する。図１３は、第三の実施形態に係るマルウェア判定装置による学習処理の流れを示すフローチャートである。図１４は、第三の実施形態に係るマルウェア判定装置による判定処理の流れを示すフローチャートである。
【００６６】
まず、図１３を用いて、第三の実施形態に係るマルウェア判定装置１０Ａによる学習処理の流れについて説明する。図１３に示すように、マルウェア判定装置１０Ａのファイル種別判別部１１ａは、学習データセットの各実行ファイルのファイル種別を判定する（ステップＳ３０１）。そして、特徴抽出部１１ｂは、学習データから特徴ベクトルを生成する（ステップＳ３０２）。
【００６７】
続いて、分類器作成部１１ｃは、ファイル種別毎に別々の分類器を作成し（ステップＳ３０３）、分類器記憶部１２に各分類器を格納する（ステップＳ３０４）。例えば、分類器作成部１１ｃは、特徴ベクトルに変換済みのファイル種別情報付の学習データセットを入力として受け取り、ファイル種別毎に、マルウェア／グッドウェアを判定する分類器を個別に作成し、作成した分類器を分類器記憶部１２に格納する。
【００６８】
次に、図１４を用いて、第三の実施形態に係るマルウェア判定装置１０Ａによる判定処理の流れについて説明する。図１４に示すように、マルウェア判定装置１０Ａのファイル種別判別部１３ａは、判定対象ファイル３０のファイル種別を判定する（ステップＳ４０１）。そして、特徴抽出部１３ｂは、特徴抽出部１１ｂと同様の方法で、判定対象ファイル３０から特徴ベクトルを生成する（ステップＳ４０２）。
【００６９】
続いて、スコア算出部１３ｃは、判定対象ファイルのファイル種別にマッチする分類器を分類器記憶部１２から選択し、選択された分類器を用いて、マルウェアらしさを表すスコアを算出する（ステップＳ４０３）。そして、判定部１３ｄは、スコアからマルウェア判定を行う（ステップＳ４０４）。
【００７０】
このように、第三の実施形態に係るマルウェア判定装置では、実行ファイルのファイル種別毎に異なる分類器を作成し、判定対象ファイル３０のファイル種別に対応する分類器を用いて、当該ファイルがマルウェアか否かを判定するので、高精度なマルウェア判定を実現することが可能である。
【００７１】
［システム構成等］
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central  Processing  Unit）および当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７２】
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７３】
［プログラム］
また、上記実施形態において説明したマルウェア判定装置が実行する処理について、コンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第一の実施形態に係るマルウェア判定装置が実行する処理について、コンピュータが実行可能な言語で記述した判定プログラムを作成することもできる。この場合、コンピュータが判定プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる判定プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された判定プログラムをコンピュータに読み込ませて実行することにより上記の実施形態と同様の処理を実現してもよい。以下に、マルウェア判定装置と同様の機能を実現する判定プログラムを実行するコンピュータの一例を説明する。
【００７４】
図１５は、判定プログラムを実行するコンピュータ１０００を示す図である。図１５に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有し、これらの各部はバス１０８０によって接続される。
【００７５】
メモリ１０１０は、図１５に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１５に例示するように、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、図１５に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブに挿入される。シリアルポートインタフェース１０５０は、図１５に例示するように、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、図１５に例示するように、例えばディスプレイ１１３０に接続される。
【００７６】
ここで、図１５に例示するように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の判定プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０９０に記憶される。
【００７７】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、取得手順、比較手順、振分制御手順を実行する。
【００７８】
なお、判定プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、判定プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００７９】
１０、１０Ａ  マルウェア判定装置
１１  学習部
１１ａ、１３ａ  ファイル種別判別部
１１ｂ、１３ｂ  特徴抽出部
１１ｃ  分類器作成部
１２  分類器記憶部
１３  判定制御部
１３ｃ  スコア算出部
１３ｄ  判定部
２０  既知マルウェア・グッドウェア
３０  判定対象ファイル
４０  判定結果
【図１】
2017004123.tif 000003
【図２】
2017004123.tif 000004
【図３】
2017004123.tif 000005
【図４】
2017004123.tif 000006
【図５】
2017004123.tif 000007
【図６】
2017004123.tif 000008
【図７】
2017004123.tif 000009
【図８】
2017004123.tif 000010
【図９】
2017004123.tif 000011
【図１０】
2017004123.tif 000012
【図１１】
2017004123.tif 000013
【図１２】
2017004123.tif 000014
【図１３】
2017004123.tif 000015
【図１４】
2017004123.tif 000016
【図１５】
2017004123.tif 000017