マルウェア判定システムおよびプログラム
【課題】未知の実行ファイルがマルウェアであるか否かを迅速に判定することができるマルウェア判定システムおよびプログラムを提供する。
【解決手段】ファイル実行部24は第1の実行ファイルを実行する。ファイル検出部23は、第1の実行ファイルが実行されたときに新たに生成された第2の実行ファイルを検出する。関数抽出部12は、第1の実行ファイルに含まれる関数と、第2の実行ファイルに含まれる関数とを抽出する。関数比較部13は、第1の実行ファイルから抽出された関数と、第2の実行ファイルから抽出された関数とを比較し、比較結果に基づいて第1の実行ファイルがマルウェアであるか否かを判定する。
【解決手段】ファイル実行部24は第1の実行ファイルを実行する。ファイル検出部23は、第1の実行ファイルが実行されたときに新たに生成された第2の実行ファイルを検出する。関数抽出部12は、第1の実行ファイルに含まれる関数と、第2の実行ファイルに含まれる関数とを抽出する。関数比較部13は、第1の実行ファイルから抽出された関数と、第2の実行ファイルから抽出された関数とを比較し、比較結果に基づいて第1の実行ファイルがマルウェアであるか否かを判定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、実行ファイル(拡張子が.exe等の実行形式のファイル)がマルウェアであるか否かを判定するマルウェア判定システムに関する。また、本発明は、本マルウェア判定システムとしてコンピュータを機能させるためのプログラムにも関する。
【背景技術】
【0002】
昨今、ウイルス対策システムで検知できない未知のマルウェアが急増している。このような状況のため、迅速かつ見逃しなく、正規の実行ファイルとマルウェアを見分ける手法が必要とされている。
【0003】
これまで、未知の実行ファイルを安全な環境で実行させたときの通信挙動を監視して、マルウェアらしい外部への攻撃が観測された場合に、未知の実行ファイルが悪性であると判定する手法が提案されてきた(例えば、非特許文献1,2参照)。他の手法として、マルウェアのコードを静的解析によって抽出し、マルウェアらしいコードの有無を手動で検査する判定手法が提案されている(例えば、非特許文献3,4参照)。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】堀合啓一,今泉隆文,田中英彦,“マルウェア亜種の動的挙動を利用した自動分類手法の提案と実装”,情報処理学会論文誌,Vol.50,No.4
【非特許文献2】藤原将志,寺田真敏,安部哲哉,菊池浩明,“マルウェアの感染動作に基づく分類に関する検討”,情報処理学会研究報告. CSEC,IPSJ SIG Notes 2008(21) pp.177-182,2008年3月
【非特許文献3】安本幸希,森井昌克,中尾康二,“マルウェアコードの類似度判定による機能推定”,電子情報通信学会技術研究報告,ISEC2007-93,pp.31-36,2007年11月
【非特許文献4】岩村誠,伊藤光恭,村岡洋一,“機械語命令列の類似性に基づく自動マルウェア分類システム”,情報処理学会,コンピュータセキュリティシンポジウム(CSS2009),A8-4,2009年10月
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、非特許文献1,2に記載の手法では、日時やユーザ操作などのある条件が揃ったときのみ発症するマルウェアに対しては、その通信挙動を抽出するまでに時間を要するという問題がある。また、マルウェアらしい通信挙動をマルウェア毎に予め定義しておく必要があり、未知の挙動を持つマルウェアを判定できない問題もある。
【0006】
非特許文献3,4に記載の手法においても、コードを厳密に抽出する必要があり、解析に時間を要する問題がある。また、マルウェアらしいコードをマルウェア毎に予め定義しておく必要があり、未知のコードを持つマルウェアを判定できない問題もある。
【0007】
本発明は、上述した課題に鑑みてなされたものであって、未知の実行ファイルがマルウェアであるか否かを迅速に判定することができるマルウェア判定システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
マルウェアは、コンピュータ内に自身のコード(関数を含む)をコピーする特性や、コンピュータ内の既存の実行ファイルに自身のコードを追加する特性を有する。したがって、マルウェアによる感染では、マルウェアの実行ファイルが有する関数が感染先の実行ファイルに遺伝するという特徴がある。関数とは、実行ファイルの実行時に呼び出されるシステムコール等の関数であり、アプリケーションインタフェース(API)も含むものとする。APIとは、あるOSやミドルウェア向けのソフトウェアを開発する際に使用できる命令や関数の集合のことであり、多くのソフトウェアが共通して利用する機能として、OSやミドルウェアの形でまとめて提供されているものである。
【0009】
上記に鑑み、本発明は、第1の実行ファイルを実行する実行手段と、前記第1の実行ファイルが実行されたときに新たに生成された第2の実行ファイルを検出する検出手段と、前記第1の実行ファイルに含まれる関数と、前記第2の実行ファイルに含まれる関数とを抽出する抽出手段と、前記第1の実行ファイルから抽出された関数と、前記第2の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、を備えたことを特徴とするマルウェア判定システムである。
【0010】
また、本発明は、第1の実行ファイルを実行する実行手段と、前記第1の実行ファイルが実行されたときに、前記第1の実行ファイルと異なる第2の実行ファイルの更新を検出する検出手段と、前記第1の実行ファイルに含まれる関数と、前記第1の実行ファイルの実行後に更新された前記第2の実行ファイルに含まれる関数とを抽出する抽出手段と、前記第1の実行ファイルから抽出された関数と、前記第2の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、を備えたことを特徴とするマルウェア判定システムである。
【0011】
また、本発明は、第1の実行ファイルと、前記第1の実行ファイルを実行したときに新たに生成された第2の実行ファイルとを実行する実行手段と、前記第1の実行ファイルが実行されたときに新たに生成された前記第2の実行ファイルと、前記第2の実行ファイルが実行されたときに新たに生成された第3の実行ファイルとを検出する検出手段と、前記第1の実行ファイルに含まれる関数と前記第3の実行ファイルに含まれる関数とを抽出する抽出手段と、前記第1の実行ファイルから抽出された関数と前記第3の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、を備えたことを特徴とするマルウェア判定システムである。
【0012】
また、本発明は、第1の実行ファイルと、前記第1の実行ファイルを実行したときに更新された第2の実行ファイルとを実行する実行手段と、前記第1の実行ファイルが実行されたときに前記第2の実行ファイルの更新を検出し、前記第2の実行ファイルが実行されたときに第3の実行ファイルの更新を検出する検出手段と、前記第1の実行ファイルに含まれる関数と、前記第2の実行ファイルの実行後に更新された前記第3の実行ファイルに含まれる関数とを抽出する抽出手段と、前記第1の実行ファイルから抽出された関数と、前記第3の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、を備えたことを特徴とするマルウェア判定システムである。
【0013】
また、本発明は、上記のマルウェア判定システムとしてコンピュータを機能させるためのプログラムである。
【発明の効果】
【0014】
本発明によれば、実行対象の実行ファイルから抽出された関数と、新たに生成された実行ファイルまたは更新された実行ファイルから抽出された関数とを比較した結果に基づいてマルウェアの判定を行うことによって、未知の実行ファイルがマルウェアであるか否かを迅速に判定することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の一実施形態によるマルウェア判定システムの構成を示すブロック図である。
【図2】本発明の一実施形態において、実行ファイルに含まれる関数を抽出した結果を示す参考図である。
【図3】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図4】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図5】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図6】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図7】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図8】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図9】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図10】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図11】本発明の一実施形態によるマルウェア判定システムの構成を示すブロック図である。
【発明を実施するための形態】
【0016】
以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態によるマルウェア判定システムの構成を示している。図1に示すマルウェア判定システムは管理装置1とファイル実行装置2を有する。管理装置1とファイル実行装置2は、例えばPC(Personal Computer)で構成される。
【0017】
管理装置1は、制御部10、通信部11、関数抽出部12、関数比較部13、および記憶部14を有する。制御部10は、記憶部14に格納されている制御用のプログラムに従って、管理装置1内の各部を制御する。通信部11はファイル実行装置2と通信を行う。関数抽出部12は、実行ファイルから関数を抽出する処理を行う。関数の抽出には、既存のコード解析ツールを用いることが可能である。図2は、あるマルウェアに含まれる関数を抽出した結果を示している。関数比較部13は、2つの実行ファイルから抽出された関数を比較して、比較結果に基づいて、実行ファイルがマルウェアであるか否かを判定する。記憶部14は、ファイル実行装置2から取得された実行ファイル等を記憶する。
【0018】
ファイル実行装置2は、制御部20、通信部21、記憶部22、ファイル検出部23、ファイル実行部24、ハッシュ値算出部25、およびシステム復元部26を有する。制御部20は、記憶部22に格納されている制御用のプログラムに従って、ファイル実行装置2内の各部を制御する。通信部21は管理装置1と通信を行う。記憶部22は実行ファイル等を記憶する。記憶部22は複数のフォルダを有し、実行ファイルは、例えばシステム(system)フォルダに格納されている。
【0019】
システムフォルダとは、PCの各種アプリケーションが保存・管理されているフォルダである。マルウェアは、多数の実行ファイルが管理されているフォルダに自身をコピーすることで他の実行ファイルと見分け難くすることを目的として、システムフォルダに感染することが多い。本実施形態では、正規のアプリケーションのインストール先およびマルウェアの感染先がシステムフォルダであることを想定しているが、これ以外であっても、以下の手法を同様に適用することが可能である。
【0020】
ファイル検出部23は、実行ファイルの実行により新たに生成されたファイルまたは更新されたファイルを検出する。ファイル実行部24は、マルウェアであるか否かの判定対象となる実行ファイルを実行する。ハッシュ値算出部25は、SHA-1(Secure Hash Algorithm 1)等のアルゴリズムにより実行ファイルのハッシュ値を算出する。算出されたハッシュ値は、更新されたファイルを検出する際に用いられる。システム復元部26は、マルウェアに感染したファイル実行装置2のシステムを感染前の状態に復元する。
【0021】
以下、本実施形態によるマルウェア判定システムを用いたマルウェアの判定方法を説明する。以下では、一例として3つの判定方法を説明する。
【0022】
<第1の判定方法>
図3は、正規のインストーラとマルウェアの実行時の動作を示している。正規のインストーラの実行ファイル300が実行されると、正規のアプリケーションの実行ファイル310が生成され、システムフォルダに格納される。インストーラとアプリケーションの機能が異なるため、インストーラの実行ファイル300が有する関数セット(B)と、アプリケーションの実行ファイル310が有する関数セット(A)は、全く異なったものとなる。
【0023】
一方、マルウェアの実行ファイル320が実行されると、ユーザの目から隠蔽するため、および自動起動コードとして常駐するために、実行ファイル320のコピーである実行ファイル330がシステムフォルダに格納される。一般的なマルウェアの場合、実行ファイル320が有する関数セット(B)と、実行ファイル330が有する関数セット(A)は同様のものとなる。したがって、関数セット(B)と関数セット(A)を比較することによって、マルウェアの判定を行うことができる。
【0024】
図4は、第1の判定方法の手順を示している。まず、ファイル検出部23は、システムフォルダに存在する実行ファイルをリスト化した実行ファイルリストを生成する(ステップS100)。実行ファイルリストには、例えば実行ファイルのファイル名が含まれる。続いて、通信部21は、判定対象となる実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS105)。
【0025】
続いて、関数抽出部12は、ステップS105で管理装置1から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS110)。続いて、ファイル実行部24は判定対象の実行ファイルを実行する(ステップS115)。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【0026】
実行ファイルの実行後、ファイル検出部23は、記憶部22から実行ファイルリストを読み出し、実行ファイルリストに基づいて、新たに生成された実行ファイルを検出する。具体的には、ファイル検出部23は、実行ファイルリスト中のファイル名と、システムフォルダ内の実行ファイルのファイル名とを照合する。システムフォルダ内の実行ファイルのファイル名が実行ファイルリストになかった場合、ファイル検出部23は、その実行ファイルが新たに生成された実行ファイルであると判定する(ステップS120)。
【0027】
続いて、通信部21は、新たに生成された実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS125)。関数抽出部12は、ステップS125で管理装置1から取得した実行ファイルを記憶部14から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS130)。
【0028】
関数比較部13は、記憶部14から2つの関数リストを読み出し、各関数リストに含まれる関数を比較し、2つの関数リストに含まれる全ての関数が一致するか否かを判定する(ステップS135)。全ての関数が一致した場合、関数比較部13は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部14に格納する(ステップS140)。また、一致しない関数があった場合、関数比較部13は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部14に格納する(ステップS145)。
【0029】
上記では、判定対象の実行ファイルから抽出された関数セット(B)と、新たに生成された実行ファイルから抽出された関数セット(A)とが完全に一致した場合に判定対象の実行ファイルがマルウェアであると判定しているが、これ以外でもよい。例えば、関数セット(B)の全ての関数が関数セット(A)に含まれる場合や、関数セット(B)の関数のうち所定の割合以上の関数が関数セット(A)に含まれる場合に判定対象の実行ファイルがマルウェアであると判定してもよい。
【0030】
<第2の判定方法>
マルウェアの中には、コンピュータに予めインストールされている実行ファイルに自身の関数セットを追加することで感染するタイプのものがある。図5は、このタイプのマルウェアの実行時の動作を示している。マルウェアの実行ファイル500が実行されると、アプリケーションの実行ファイル510に実行ファイル500の関数セットが追加される。したがって、判定対象の実行ファイルから抽出された関数セットと、判定対象の実行ファイルを実行することによって更新された実行ファイルから抽出された関数セットとを比較することによって、マルウェアの判定を行うことができる。
【0031】
図6は、第2の判定方法の手順を示している。まず、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS200)。続いて、通信部21は、判定対象となる実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS205)。
【0032】
続いて、関数抽出部12は、ステップS205で管理装置1から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS210)。続いて、ファイル実行部24は判定対象の実行ファイルを実行する(ステップS215)。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【0033】
実行ファイルの実行後、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS220)。続いて、ファイル検出部23は、記憶部22から2つのハッシュ値リストを読み出し、各ハッシュ値リスト内のハッシュ値を比較した結果に基づいて、更新されたファイルを検出する。具体的には、ファイル検出部23は、同一のファイル名を有するファイルに関して実行ファイルの実行前後のハッシュ値同士を比較し、ハッシュ値が異なっている場合に、その実行ファイルが更新された実行ファイルであると判定する(ステップS225)。
【0034】
続いて、通信部21は、更新された実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS230)。関数抽出部12は、ステップS230で管理装置1から取得した実行ファイルを記憶部14から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS235)。
【0035】
関数比較部13は、記憶部14から2つの関数リストを読み出し、各関数リストに含まれる関数を比較し、判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれるか否かを判定する(ステップS240)。判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれる場合、関数比較部13は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部14に格納する(ステップS245)。また、判定対象の実行ファイルの関数リストに含まれる関数の一部が、更新された実行ファイルの関数リストに含まれない場合、関数比較部13は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部14に格納する(ステップS250)。
【0036】
<第3の判定方法>
図3に示したマルウェアは自身の実行ファイルをシステムフォルダにコピーする。このため、システムフォルダにコピーされた実行ファイルをシステムフォルダから取り出して別のフォルダに格納し、システムフォルダの状態を元に戻した後、取り出した実行ファイルを実行すると、再度実行ファイルがシステムフォルダにコピーされる。
【0037】
図7は、この時の動作を示している。マルウェアの実行ファイル700が実行されると、実行ファイル700のコピーである実行ファイル710がシステムフォルダに格納される。実行ファイル710を取り出して、すなわち、実行ファイル710をシステムフォルダ以外のフォルダに移動して、実行ファイル710を実行すると、実行ファイル710のコピーである実行ファイル720がシステムフォルダに格納される。したがって、判定対象の実行ファイルから抽出された関数セットと、システムフォルダから取り出した実行ファイルを実行することによって生成された実行ファイルから抽出された関数セットとを比較することによって、マルウェアの判定を行うことができる。
【0038】
図8は、第3の判定方法の手順を示している。まず、ファイル検出部23は、システムフォルダに存在する実行ファイルをリスト化した実行ファイルリストを生成する(ステップS300)。実行ファイルリストには、例えば実行ファイルのファイル名が含まれる。続いて、通信部21は、判定対象となる実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS305)。
【0039】
続いて、関数抽出部12は、ステップS305で管理装置1から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS310)。続いて、ファイル実行部24は判定対象の実行ファイルを実行する(ステップS315)。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【0040】
実行ファイルの実行後、ファイル検出部23は、記憶部22から実行ファイルリストを読み出し、実行ファイルリストに基づいて、新たに生成された実行ファイルを検出する(ステップS320)。新たに生成された実行ファイルを検出する方法は、図4のステップS120で実行ファイルを検出する方法と同様である。
【0041】
続いて、制御部20は、新たに生成された実行ファイルをシステムフォルダから取り出し、システムフォルダ以外のフォルダに格納する(ステップS325)。続いて、システム復元部26はシステムフォルダを復元する(ステップS330)。これによって、システムフォルダは実行ファイルの実行前の状態となる。この復元には、VMware(登録商標)等の仮想マシン管理ツールを用いることができる。
【0042】
続いて、ファイル実行部24は、ステップS325で取り出された実行ファイルを実行する(ステップS335)。実行ファイルの実行後、ファイル検出部23は、記憶部22から実行ファイルリストを読み出し、実行ファイルリストに基づいて、新たに生成された実行ファイルを検出する(ステップS340)。新たに生成された実行ファイルを検出する方法は、図4のステップS120で実行ファイルを検出する方法と同様である。
【0043】
続いて、通信部21は、新たに生成された実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS345)。関数抽出部12は、ステップS345で管理装置1から取得した実行ファイルを記憶部14から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS350)。
【0044】
関数比較部13は、記憶部14から2つの関数リストを読み出し、各関数リストに含まれる関数を比較し、2つの関数リストに含まれる全ての関数が一致するか否かを判定する(ステップS360)。全ての関数が一致した場合、関数比較部13は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部14に格納する(ステップS365)。また、一致しない関数があった場合、関数比較部13は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部14に格納する(ステップS370)。
【0045】
上記では、判定対象の実行ファイルから抽出された関数セット(B)と、新たに生成された実行ファイルから抽出された関数セット(A’)とが完全に一致した場合に判定対象の実行ファイルがマルウェアであると判定しているが、これ以外でもよい。例えば、関数セット(B)の全ての関数が関数セット(A’)に含まれる場合や、関数セット(B)の関数のうち所定の割合以上の関数が関数セット(A’)に含まれる場合に判定対象の実行ファイルがマルウェアであると判定してもよい。
【0046】
<第4の判定方法>
図5に示したマルウェアは、コンピュータに予めインストールされている実行ファイルに自身の関数セットを追加する。関数セットが追加された実行ファイルをシステムフォルダから取り出して別のフォルダに格納し、システムフォルダの状態を元に戻した後、取り出した実行ファイルを実行すると、再度システムフォルダ内の実行ファイルに関数セットが追加される。
【0047】
図9は、この時の動作を示している。マルウェアの実行ファイル900が実行されると、アプリケーションの実行ファイル910に実行ファイル900の関数セットが追加される。実行ファイル910を取り出して、すなわち、実行ファイル910をシステムフォルダ以外のフォルダに移動して、実行ファイル910を実行すると、アプリケーションの実行ファイル920に実行ファイル910の関数セットが追加される。したがって、判定対象の実行ファイルから抽出された関数セットと、システムフォルダから取り出した実行ファイルを実行することによって更新された実行ファイルから抽出された関数セットとを比較することによって、マルウェアの判定を行うことができる。
【0048】
図10は、第4の判定方法の手順を示している。まず、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS400)。続いて、通信部21は、判定対象となる実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS405)。
【0049】
続いて、関数抽出部12は、ステップS405で管理装置1から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS410)。続いて、ファイル実行部24は判定対象の実行ファイルを実行する(ステップS415)。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【0050】
実行ファイルの実行後、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS420)。続いて、ファイル検出部23は、記憶部22から2つのハッシュ値リストを読み出し、各ハッシュ値リスト内のハッシュ値を比較した結果に基づいて、更新されたファイルを検出する(ステップS425)。更新された実行ファイルを検出する方法は、図6のステップS225で実行ファイルを検出する方法と同様である。
【0051】
続いて、制御部20は、更新された実行ファイルをシステムフォルダから取り出し、システムフォルダ以外のフォルダに格納する(ステップS430)。続いて、システム復元部26はシステムフォルダを復元する(ステップS435)。これによって、システムフォルダは実行ファイルの実行前の状態となる。
【0052】
続いて、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS440)。続いて、ファイル実行部24は、ステップS430で取り出された実行ファイルを実行する(ステップS445)。
【0053】
実行ファイルの実行後、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS450)。続いて、ファイル検出部23は、ステップS440,S450で生成した2つのハッシュ値リストを記憶部22から読み出し、各ハッシュ値リスト内のハッシュ値を比較した結果に基づいて、更新されたファイルを検出する(ステップS455)。更新された実行ファイルを検出する方法は、図6のステップS225で実行ファイルを検出する方法と同様である。
【0054】
続いて、通信部21は、更新された実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS460)。関数抽出部12は、ステップS460で管理装置1から取得した実行ファイルを記憶部14から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS465)。
【0055】
関数比較部13は、記憶部14から2つの関数リストを読み出し、各関数リストに含まれる関数を比較し、判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれるか否かを判定する(ステップS470)。判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれる場合、関数比較部13は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部14に格納する(ステップS475)。また、判定対象の実行ファイルの関数リストに含まれる関数の一部が、更新された実行ファイルの関数リストに含まれない場合、関数比較部13は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部14に格納する(ステップS480)。
【0056】
<変形例>
上記では、管理装置1とファイル実行装置2の2台のコンピュータが連携してマルウェアの判定を行っているが、1台のコンピュータでマルウェアの判定を行ってもよい。図11は、この場合の構成を示している。図11に示すファイル実行装置3は、関数抽出部12、関数比較部13、制御部20、通信部21、記憶部22、ファイル検出部23、ファイル実行部24、ハッシュ値算出部25、およびシステム復元部26を有する。図11において、図1と同一の構成には同一の符号が付与されている。ファイル実行装置3は、第1〜第3の動作例で示した動作と同様の動作を行うことによって、マルウェアの判定を行う。ただし、2台の装置間の通信に係る処理は除く。
【0057】
上述した管理装置1、ファイル実行装置2,3の各機能は、各装置の動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより、実現される。ここで、「コンピュータ」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0058】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0059】
上述したマルウェアの判定方法では、実行ファイルを強制的に実行することによって、特定の条件の発生の有無に関係なく、迅速にマルウェアの判定を行うことができる。また、マルウェア毎に異なる挙動ではなく、マルウェアに共通する関数セットの遺伝に注目した判定を行うことで、マルウェアらしいコードを予め定義しておく必要はないので、未知の実行ファイルがマルウェアであるか否かを迅速に判定することができる。
【0060】
また、上記の第3の判定方法および第4の判定方法では、ファイルのコピーや関数セットの追加が繰り返されるという挙動の有無を監視することに加えて、第1の判定方法および第2の判定方法で用いている、関数セットの遺伝に注目した判定を行うので、マルウェアであるか否かの判定をより正確に行うことができる。
【0061】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。上記の手法は、Security Operation Centerにおける未知の実行ファイルの判定業務や、Telecom-ISACのCyber Clean Centerにおける検体の分類業務、ウイルス対策ソフトのベンダにおける検体分類業務に活用できる。
【符号の説明】
【0062】
1・・・管理装置、2,3・・・ファイル実行装置、10,20・・・制御部、11,21・・・通信部、12・・・関数抽出部(抽出手段)、13・・・関数比較部(判定手段)、14,22・・・記憶部、23・・・ファイル検出部(検出手段)、24・・・ファイル実行部(実行手段)、25・・・ハッシュ値算出部、26・・・システム復元部
【技術分野】
【0001】
本発明は、実行ファイル(拡張子が.exe等の実行形式のファイル)がマルウェアであるか否かを判定するマルウェア判定システムに関する。また、本発明は、本マルウェア判定システムとしてコンピュータを機能させるためのプログラムにも関する。
【背景技術】
【0002】
昨今、ウイルス対策システムで検知できない未知のマルウェアが急増している。このような状況のため、迅速かつ見逃しなく、正規の実行ファイルとマルウェアを見分ける手法が必要とされている。
【0003】
これまで、未知の実行ファイルを安全な環境で実行させたときの通信挙動を監視して、マルウェアらしい外部への攻撃が観測された場合に、未知の実行ファイルが悪性であると判定する手法が提案されてきた(例えば、非特許文献1,2参照)。他の手法として、マルウェアのコードを静的解析によって抽出し、マルウェアらしいコードの有無を手動で検査する判定手法が提案されている(例えば、非特許文献3,4参照)。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】堀合啓一,今泉隆文,田中英彦,“マルウェア亜種の動的挙動を利用した自動分類手法の提案と実装”,情報処理学会論文誌,Vol.50,No.4
【非特許文献2】藤原将志,寺田真敏,安部哲哉,菊池浩明,“マルウェアの感染動作に基づく分類に関する検討”,情報処理学会研究報告. CSEC,IPSJ SIG Notes 2008(21) pp.177-182,2008年3月
【非特許文献3】安本幸希,森井昌克,中尾康二,“マルウェアコードの類似度判定による機能推定”,電子情報通信学会技術研究報告,ISEC2007-93,pp.31-36,2007年11月
【非特許文献4】岩村誠,伊藤光恭,村岡洋一,“機械語命令列の類似性に基づく自動マルウェア分類システム”,情報処理学会,コンピュータセキュリティシンポジウム(CSS2009),A8-4,2009年10月
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、非特許文献1,2に記載の手法では、日時やユーザ操作などのある条件が揃ったときのみ発症するマルウェアに対しては、その通信挙動を抽出するまでに時間を要するという問題がある。また、マルウェアらしい通信挙動をマルウェア毎に予め定義しておく必要があり、未知の挙動を持つマルウェアを判定できない問題もある。
【0006】
非特許文献3,4に記載の手法においても、コードを厳密に抽出する必要があり、解析に時間を要する問題がある。また、マルウェアらしいコードをマルウェア毎に予め定義しておく必要があり、未知のコードを持つマルウェアを判定できない問題もある。
【0007】
本発明は、上述した課題に鑑みてなされたものであって、未知の実行ファイルがマルウェアであるか否かを迅速に判定することができるマルウェア判定システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
マルウェアは、コンピュータ内に自身のコード(関数を含む)をコピーする特性や、コンピュータ内の既存の実行ファイルに自身のコードを追加する特性を有する。したがって、マルウェアによる感染では、マルウェアの実行ファイルが有する関数が感染先の実行ファイルに遺伝するという特徴がある。関数とは、実行ファイルの実行時に呼び出されるシステムコール等の関数であり、アプリケーションインタフェース(API)も含むものとする。APIとは、あるOSやミドルウェア向けのソフトウェアを開発する際に使用できる命令や関数の集合のことであり、多くのソフトウェアが共通して利用する機能として、OSやミドルウェアの形でまとめて提供されているものである。
【0009】
上記に鑑み、本発明は、第1の実行ファイルを実行する実行手段と、前記第1の実行ファイルが実行されたときに新たに生成された第2の実行ファイルを検出する検出手段と、前記第1の実行ファイルに含まれる関数と、前記第2の実行ファイルに含まれる関数とを抽出する抽出手段と、前記第1の実行ファイルから抽出された関数と、前記第2の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、を備えたことを特徴とするマルウェア判定システムである。
【0010】
また、本発明は、第1の実行ファイルを実行する実行手段と、前記第1の実行ファイルが実行されたときに、前記第1の実行ファイルと異なる第2の実行ファイルの更新を検出する検出手段と、前記第1の実行ファイルに含まれる関数と、前記第1の実行ファイルの実行後に更新された前記第2の実行ファイルに含まれる関数とを抽出する抽出手段と、前記第1の実行ファイルから抽出された関数と、前記第2の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、を備えたことを特徴とするマルウェア判定システムである。
【0011】
また、本発明は、第1の実行ファイルと、前記第1の実行ファイルを実行したときに新たに生成された第2の実行ファイルとを実行する実行手段と、前記第1の実行ファイルが実行されたときに新たに生成された前記第2の実行ファイルと、前記第2の実行ファイルが実行されたときに新たに生成された第3の実行ファイルとを検出する検出手段と、前記第1の実行ファイルに含まれる関数と前記第3の実行ファイルに含まれる関数とを抽出する抽出手段と、前記第1の実行ファイルから抽出された関数と前記第3の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、を備えたことを特徴とするマルウェア判定システムである。
【0012】
また、本発明は、第1の実行ファイルと、前記第1の実行ファイルを実行したときに更新された第2の実行ファイルとを実行する実行手段と、前記第1の実行ファイルが実行されたときに前記第2の実行ファイルの更新を検出し、前記第2の実行ファイルが実行されたときに第3の実行ファイルの更新を検出する検出手段と、前記第1の実行ファイルに含まれる関数と、前記第2の実行ファイルの実行後に更新された前記第3の実行ファイルに含まれる関数とを抽出する抽出手段と、前記第1の実行ファイルから抽出された関数と、前記第3の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、を備えたことを特徴とするマルウェア判定システムである。
【0013】
また、本発明は、上記のマルウェア判定システムとしてコンピュータを機能させるためのプログラムである。
【発明の効果】
【0014】
本発明によれば、実行対象の実行ファイルから抽出された関数と、新たに生成された実行ファイルまたは更新された実行ファイルから抽出された関数とを比較した結果に基づいてマルウェアの判定を行うことによって、未知の実行ファイルがマルウェアであるか否かを迅速に判定することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の一実施形態によるマルウェア判定システムの構成を示すブロック図である。
【図2】本発明の一実施形態において、実行ファイルに含まれる関数を抽出した結果を示す参考図である。
【図3】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図4】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図5】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図6】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図7】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図8】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図9】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図10】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図11】本発明の一実施形態によるマルウェア判定システムの構成を示すブロック図である。
【発明を実施するための形態】
【0016】
以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態によるマルウェア判定システムの構成を示している。図1に示すマルウェア判定システムは管理装置1とファイル実行装置2を有する。管理装置1とファイル実行装置2は、例えばPC(Personal Computer)で構成される。
【0017】
管理装置1は、制御部10、通信部11、関数抽出部12、関数比較部13、および記憶部14を有する。制御部10は、記憶部14に格納されている制御用のプログラムに従って、管理装置1内の各部を制御する。通信部11はファイル実行装置2と通信を行う。関数抽出部12は、実行ファイルから関数を抽出する処理を行う。関数の抽出には、既存のコード解析ツールを用いることが可能である。図2は、あるマルウェアに含まれる関数を抽出した結果を示している。関数比較部13は、2つの実行ファイルから抽出された関数を比較して、比較結果に基づいて、実行ファイルがマルウェアであるか否かを判定する。記憶部14は、ファイル実行装置2から取得された実行ファイル等を記憶する。
【0018】
ファイル実行装置2は、制御部20、通信部21、記憶部22、ファイル検出部23、ファイル実行部24、ハッシュ値算出部25、およびシステム復元部26を有する。制御部20は、記憶部22に格納されている制御用のプログラムに従って、ファイル実行装置2内の各部を制御する。通信部21は管理装置1と通信を行う。記憶部22は実行ファイル等を記憶する。記憶部22は複数のフォルダを有し、実行ファイルは、例えばシステム(system)フォルダに格納されている。
【0019】
システムフォルダとは、PCの各種アプリケーションが保存・管理されているフォルダである。マルウェアは、多数の実行ファイルが管理されているフォルダに自身をコピーすることで他の実行ファイルと見分け難くすることを目的として、システムフォルダに感染することが多い。本実施形態では、正規のアプリケーションのインストール先およびマルウェアの感染先がシステムフォルダであることを想定しているが、これ以外であっても、以下の手法を同様に適用することが可能である。
【0020】
ファイル検出部23は、実行ファイルの実行により新たに生成されたファイルまたは更新されたファイルを検出する。ファイル実行部24は、マルウェアであるか否かの判定対象となる実行ファイルを実行する。ハッシュ値算出部25は、SHA-1(Secure Hash Algorithm 1)等のアルゴリズムにより実行ファイルのハッシュ値を算出する。算出されたハッシュ値は、更新されたファイルを検出する際に用いられる。システム復元部26は、マルウェアに感染したファイル実行装置2のシステムを感染前の状態に復元する。
【0021】
以下、本実施形態によるマルウェア判定システムを用いたマルウェアの判定方法を説明する。以下では、一例として3つの判定方法を説明する。
【0022】
<第1の判定方法>
図3は、正規のインストーラとマルウェアの実行時の動作を示している。正規のインストーラの実行ファイル300が実行されると、正規のアプリケーションの実行ファイル310が生成され、システムフォルダに格納される。インストーラとアプリケーションの機能が異なるため、インストーラの実行ファイル300が有する関数セット(B)と、アプリケーションの実行ファイル310が有する関数セット(A)は、全く異なったものとなる。
【0023】
一方、マルウェアの実行ファイル320が実行されると、ユーザの目から隠蔽するため、および自動起動コードとして常駐するために、実行ファイル320のコピーである実行ファイル330がシステムフォルダに格納される。一般的なマルウェアの場合、実行ファイル320が有する関数セット(B)と、実行ファイル330が有する関数セット(A)は同様のものとなる。したがって、関数セット(B)と関数セット(A)を比較することによって、マルウェアの判定を行うことができる。
【0024】
図4は、第1の判定方法の手順を示している。まず、ファイル検出部23は、システムフォルダに存在する実行ファイルをリスト化した実行ファイルリストを生成する(ステップS100)。実行ファイルリストには、例えば実行ファイルのファイル名が含まれる。続いて、通信部21は、判定対象となる実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS105)。
【0025】
続いて、関数抽出部12は、ステップS105で管理装置1から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS110)。続いて、ファイル実行部24は判定対象の実行ファイルを実行する(ステップS115)。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【0026】
実行ファイルの実行後、ファイル検出部23は、記憶部22から実行ファイルリストを読み出し、実行ファイルリストに基づいて、新たに生成された実行ファイルを検出する。具体的には、ファイル検出部23は、実行ファイルリスト中のファイル名と、システムフォルダ内の実行ファイルのファイル名とを照合する。システムフォルダ内の実行ファイルのファイル名が実行ファイルリストになかった場合、ファイル検出部23は、その実行ファイルが新たに生成された実行ファイルであると判定する(ステップS120)。
【0027】
続いて、通信部21は、新たに生成された実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS125)。関数抽出部12は、ステップS125で管理装置1から取得した実行ファイルを記憶部14から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS130)。
【0028】
関数比較部13は、記憶部14から2つの関数リストを読み出し、各関数リストに含まれる関数を比較し、2つの関数リストに含まれる全ての関数が一致するか否かを判定する(ステップS135)。全ての関数が一致した場合、関数比較部13は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部14に格納する(ステップS140)。また、一致しない関数があった場合、関数比較部13は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部14に格納する(ステップS145)。
【0029】
上記では、判定対象の実行ファイルから抽出された関数セット(B)と、新たに生成された実行ファイルから抽出された関数セット(A)とが完全に一致した場合に判定対象の実行ファイルがマルウェアであると判定しているが、これ以外でもよい。例えば、関数セット(B)の全ての関数が関数セット(A)に含まれる場合や、関数セット(B)の関数のうち所定の割合以上の関数が関数セット(A)に含まれる場合に判定対象の実行ファイルがマルウェアであると判定してもよい。
【0030】
<第2の判定方法>
マルウェアの中には、コンピュータに予めインストールされている実行ファイルに自身の関数セットを追加することで感染するタイプのものがある。図5は、このタイプのマルウェアの実行時の動作を示している。マルウェアの実行ファイル500が実行されると、アプリケーションの実行ファイル510に実行ファイル500の関数セットが追加される。したがって、判定対象の実行ファイルから抽出された関数セットと、判定対象の実行ファイルを実行することによって更新された実行ファイルから抽出された関数セットとを比較することによって、マルウェアの判定を行うことができる。
【0031】
図6は、第2の判定方法の手順を示している。まず、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS200)。続いて、通信部21は、判定対象となる実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS205)。
【0032】
続いて、関数抽出部12は、ステップS205で管理装置1から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS210)。続いて、ファイル実行部24は判定対象の実行ファイルを実行する(ステップS215)。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【0033】
実行ファイルの実行後、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS220)。続いて、ファイル検出部23は、記憶部22から2つのハッシュ値リストを読み出し、各ハッシュ値リスト内のハッシュ値を比較した結果に基づいて、更新されたファイルを検出する。具体的には、ファイル検出部23は、同一のファイル名を有するファイルに関して実行ファイルの実行前後のハッシュ値同士を比較し、ハッシュ値が異なっている場合に、その実行ファイルが更新された実行ファイルであると判定する(ステップS225)。
【0034】
続いて、通信部21は、更新された実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS230)。関数抽出部12は、ステップS230で管理装置1から取得した実行ファイルを記憶部14から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS235)。
【0035】
関数比較部13は、記憶部14から2つの関数リストを読み出し、各関数リストに含まれる関数を比較し、判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれるか否かを判定する(ステップS240)。判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれる場合、関数比較部13は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部14に格納する(ステップS245)。また、判定対象の実行ファイルの関数リストに含まれる関数の一部が、更新された実行ファイルの関数リストに含まれない場合、関数比較部13は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部14に格納する(ステップS250)。
【0036】
<第3の判定方法>
図3に示したマルウェアは自身の実行ファイルをシステムフォルダにコピーする。このため、システムフォルダにコピーされた実行ファイルをシステムフォルダから取り出して別のフォルダに格納し、システムフォルダの状態を元に戻した後、取り出した実行ファイルを実行すると、再度実行ファイルがシステムフォルダにコピーされる。
【0037】
図7は、この時の動作を示している。マルウェアの実行ファイル700が実行されると、実行ファイル700のコピーである実行ファイル710がシステムフォルダに格納される。実行ファイル710を取り出して、すなわち、実行ファイル710をシステムフォルダ以外のフォルダに移動して、実行ファイル710を実行すると、実行ファイル710のコピーである実行ファイル720がシステムフォルダに格納される。したがって、判定対象の実行ファイルから抽出された関数セットと、システムフォルダから取り出した実行ファイルを実行することによって生成された実行ファイルから抽出された関数セットとを比較することによって、マルウェアの判定を行うことができる。
【0038】
図8は、第3の判定方法の手順を示している。まず、ファイル検出部23は、システムフォルダに存在する実行ファイルをリスト化した実行ファイルリストを生成する(ステップS300)。実行ファイルリストには、例えば実行ファイルのファイル名が含まれる。続いて、通信部21は、判定対象となる実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS305)。
【0039】
続いて、関数抽出部12は、ステップS305で管理装置1から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS310)。続いて、ファイル実行部24は判定対象の実行ファイルを実行する(ステップS315)。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【0040】
実行ファイルの実行後、ファイル検出部23は、記憶部22から実行ファイルリストを読み出し、実行ファイルリストに基づいて、新たに生成された実行ファイルを検出する(ステップS320)。新たに生成された実行ファイルを検出する方法は、図4のステップS120で実行ファイルを検出する方法と同様である。
【0041】
続いて、制御部20は、新たに生成された実行ファイルをシステムフォルダから取り出し、システムフォルダ以外のフォルダに格納する(ステップS325)。続いて、システム復元部26はシステムフォルダを復元する(ステップS330)。これによって、システムフォルダは実行ファイルの実行前の状態となる。この復元には、VMware(登録商標)等の仮想マシン管理ツールを用いることができる。
【0042】
続いて、ファイル実行部24は、ステップS325で取り出された実行ファイルを実行する(ステップS335)。実行ファイルの実行後、ファイル検出部23は、記憶部22から実行ファイルリストを読み出し、実行ファイルリストに基づいて、新たに生成された実行ファイルを検出する(ステップS340)。新たに生成された実行ファイルを検出する方法は、図4のステップS120で実行ファイルを検出する方法と同様である。
【0043】
続いて、通信部21は、新たに生成された実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS345)。関数抽出部12は、ステップS345で管理装置1から取得した実行ファイルを記憶部14から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS350)。
【0044】
関数比較部13は、記憶部14から2つの関数リストを読み出し、各関数リストに含まれる関数を比較し、2つの関数リストに含まれる全ての関数が一致するか否かを判定する(ステップS360)。全ての関数が一致した場合、関数比較部13は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部14に格納する(ステップS365)。また、一致しない関数があった場合、関数比較部13は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部14に格納する(ステップS370)。
【0045】
上記では、判定対象の実行ファイルから抽出された関数セット(B)と、新たに生成された実行ファイルから抽出された関数セット(A’)とが完全に一致した場合に判定対象の実行ファイルがマルウェアであると判定しているが、これ以外でもよい。例えば、関数セット(B)の全ての関数が関数セット(A’)に含まれる場合や、関数セット(B)の関数のうち所定の割合以上の関数が関数セット(A’)に含まれる場合に判定対象の実行ファイルがマルウェアであると判定してもよい。
【0046】
<第4の判定方法>
図5に示したマルウェアは、コンピュータに予めインストールされている実行ファイルに自身の関数セットを追加する。関数セットが追加された実行ファイルをシステムフォルダから取り出して別のフォルダに格納し、システムフォルダの状態を元に戻した後、取り出した実行ファイルを実行すると、再度システムフォルダ内の実行ファイルに関数セットが追加される。
【0047】
図9は、この時の動作を示している。マルウェアの実行ファイル900が実行されると、アプリケーションの実行ファイル910に実行ファイル900の関数セットが追加される。実行ファイル910を取り出して、すなわち、実行ファイル910をシステムフォルダ以外のフォルダに移動して、実行ファイル910を実行すると、アプリケーションの実行ファイル920に実行ファイル910の関数セットが追加される。したがって、判定対象の実行ファイルから抽出された関数セットと、システムフォルダから取り出した実行ファイルを実行することによって更新された実行ファイルから抽出された関数セットとを比較することによって、マルウェアの判定を行うことができる。
【0048】
図10は、第4の判定方法の手順を示している。まず、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS400)。続いて、通信部21は、判定対象となる実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS405)。
【0049】
続いて、関数抽出部12は、ステップS405で管理装置1から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS410)。続いて、ファイル実行部24は判定対象の実行ファイルを実行する(ステップS415)。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【0050】
実行ファイルの実行後、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS420)。続いて、ファイル検出部23は、記憶部22から2つのハッシュ値リストを読み出し、各ハッシュ値リスト内のハッシュ値を比較した結果に基づいて、更新されたファイルを検出する(ステップS425)。更新された実行ファイルを検出する方法は、図6のステップS225で実行ファイルを検出する方法と同様である。
【0051】
続いて、制御部20は、更新された実行ファイルをシステムフォルダから取り出し、システムフォルダ以外のフォルダに格納する(ステップS430)。続いて、システム復元部26はシステムフォルダを復元する(ステップS435)。これによって、システムフォルダは実行ファイルの実行前の状態となる。
【0052】
続いて、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS440)。続いて、ファイル実行部24は、ステップS430で取り出された実行ファイルを実行する(ステップS445)。
【0053】
実行ファイルの実行後、ハッシュ値算出部25は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部22に格納する(ステップS450)。続いて、ファイル検出部23は、ステップS440,S450で生成した2つのハッシュ値リストを記憶部22から読み出し、各ハッシュ値リスト内のハッシュ値を比較した結果に基づいて、更新されたファイルを検出する(ステップS455)。更新された実行ファイルを検出する方法は、図6のステップS225で実行ファイルを検出する方法と同様である。
【0054】
続いて、通信部21は、更新された実行ファイルのコピーを管理装置1へ送信する。管理装置1の通信部11は実行ファイルを受信し、記憶部14に格納する(ステップS460)。関数抽出部12は、ステップS460で管理装置1から取得した実行ファイルを記憶部14から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部12は、抽出した関数をリスト化した関数リストを記憶部14に格納する(ステップS465)。
【0055】
関数比較部13は、記憶部14から2つの関数リストを読み出し、各関数リストに含まれる関数を比較し、判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれるか否かを判定する(ステップS470)。判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれる場合、関数比較部13は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部14に格納する(ステップS475)。また、判定対象の実行ファイルの関数リストに含まれる関数の一部が、更新された実行ファイルの関数リストに含まれない場合、関数比較部13は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部14に格納する(ステップS480)。
【0056】
<変形例>
上記では、管理装置1とファイル実行装置2の2台のコンピュータが連携してマルウェアの判定を行っているが、1台のコンピュータでマルウェアの判定を行ってもよい。図11は、この場合の構成を示している。図11に示すファイル実行装置3は、関数抽出部12、関数比較部13、制御部20、通信部21、記憶部22、ファイル検出部23、ファイル実行部24、ハッシュ値算出部25、およびシステム復元部26を有する。図11において、図1と同一の構成には同一の符号が付与されている。ファイル実行装置3は、第1〜第3の動作例で示した動作と同様の動作を行うことによって、マルウェアの判定を行う。ただし、2台の装置間の通信に係る処理は除く。
【0057】
上述した管理装置1、ファイル実行装置2,3の各機能は、各装置の動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより、実現される。ここで、「コンピュータ」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0058】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0059】
上述したマルウェアの判定方法では、実行ファイルを強制的に実行することによって、特定の条件の発生の有無に関係なく、迅速にマルウェアの判定を行うことができる。また、マルウェア毎に異なる挙動ではなく、マルウェアに共通する関数セットの遺伝に注目した判定を行うことで、マルウェアらしいコードを予め定義しておく必要はないので、未知の実行ファイルがマルウェアであるか否かを迅速に判定することができる。
【0060】
また、上記の第3の判定方法および第4の判定方法では、ファイルのコピーや関数セットの追加が繰り返されるという挙動の有無を監視することに加えて、第1の判定方法および第2の判定方法で用いている、関数セットの遺伝に注目した判定を行うので、マルウェアであるか否かの判定をより正確に行うことができる。
【0061】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。上記の手法は、Security Operation Centerにおける未知の実行ファイルの判定業務や、Telecom-ISACのCyber Clean Centerにおける検体の分類業務、ウイルス対策ソフトのベンダにおける検体分類業務に活用できる。
【符号の説明】
【0062】
1・・・管理装置、2,3・・・ファイル実行装置、10,20・・・制御部、11,21・・・通信部、12・・・関数抽出部(抽出手段)、13・・・関数比較部(判定手段)、14,22・・・記憶部、23・・・ファイル検出部(検出手段)、24・・・ファイル実行部(実行手段)、25・・・ハッシュ値算出部、26・・・システム復元部
【特許請求の範囲】
【請求項1】
第1の実行ファイルを実行する実行手段と、
前記第1の実行ファイルが実行されたときに新たに生成された第2の実行ファイルを検出する検出手段と、
前記第1の実行ファイルに含まれる関数と、前記第2の実行ファイルに含まれる関数とを抽出する抽出手段と、
前記第1の実行ファイルから抽出された関数と、前記第2の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、
を備えたことを特徴とするマルウェア判定システム。
【請求項2】
第1の実行ファイルを実行する実行手段と、
前記第1の実行ファイルが実行されたときに、前記第1の実行ファイルと異なる第2の実行ファイルの更新を検出する検出手段と、
前記第1の実行ファイルに含まれる関数と、前記第1の実行ファイルの実行後に更新された前記第2の実行ファイルに含まれる関数とを抽出する抽出手段と、
前記第1の実行ファイルから抽出された関数と、前記第2の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、
を備えたことを特徴とするマルウェア判定システム。
【請求項3】
第1の実行ファイルと、前記第1の実行ファイルを実行したときに新たに生成された第2の実行ファイルとを実行する実行手段と、
前記第1の実行ファイルが実行されたときに新たに生成された前記第2の実行ファイルと、前記第2の実行ファイルが実行されたときに新たに生成された第3の実行ファイルとを検出する検出手段と、
前記第1の実行ファイルに含まれる関数と前記第3の実行ファイルに含まれる関数とを抽出する抽出手段と、
前記第1の実行ファイルから抽出された関数と前記第3の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、
を備えたことを特徴とするマルウェア判定システム。
【請求項4】
第1の実行ファイルと、前記第1の実行ファイルを実行したときに更新された第2の実行ファイルとを実行する実行手段と、
前記第1の実行ファイルが実行されたときに前記第2の実行ファイルの更新を検出し、前記第2の実行ファイルが実行されたときに第3の実行ファイルの更新を検出する検出手段と、
前記第1の実行ファイルに含まれる関数と、前記第2の実行ファイルの実行後に更新された前記第3の実行ファイルに含まれる関数とを抽出する抽出手段と、
前記第1の実行ファイルから抽出された関数と、前記第3の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、
を備えたことを特徴とするマルウェア判定システム。
【請求項5】
請求項1〜請求項4のいずれかに記載のマルウェア判定システムとしてコンピュータを機能させるためのプログラム。
【請求項1】
第1の実行ファイルを実行する実行手段と、
前記第1の実行ファイルが実行されたときに新たに生成された第2の実行ファイルを検出する検出手段と、
前記第1の実行ファイルに含まれる関数と、前記第2の実行ファイルに含まれる関数とを抽出する抽出手段と、
前記第1の実行ファイルから抽出された関数と、前記第2の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、
を備えたことを特徴とするマルウェア判定システム。
【請求項2】
第1の実行ファイルを実行する実行手段と、
前記第1の実行ファイルが実行されたときに、前記第1の実行ファイルと異なる第2の実行ファイルの更新を検出する検出手段と、
前記第1の実行ファイルに含まれる関数と、前記第1の実行ファイルの実行後に更新された前記第2の実行ファイルに含まれる関数とを抽出する抽出手段と、
前記第1の実行ファイルから抽出された関数と、前記第2の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、
を備えたことを特徴とするマルウェア判定システム。
【請求項3】
第1の実行ファイルと、前記第1の実行ファイルを実行したときに新たに生成された第2の実行ファイルとを実行する実行手段と、
前記第1の実行ファイルが実行されたときに新たに生成された前記第2の実行ファイルと、前記第2の実行ファイルが実行されたときに新たに生成された第3の実行ファイルとを検出する検出手段と、
前記第1の実行ファイルに含まれる関数と前記第3の実行ファイルに含まれる関数とを抽出する抽出手段と、
前記第1の実行ファイルから抽出された関数と前記第3の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、
を備えたことを特徴とするマルウェア判定システム。
【請求項4】
第1の実行ファイルと、前記第1の実行ファイルを実行したときに更新された第2の実行ファイルとを実行する実行手段と、
前記第1の実行ファイルが実行されたときに前記第2の実行ファイルの更新を検出し、前記第2の実行ファイルが実行されたときに第3の実行ファイルの更新を検出する検出手段と、
前記第1の実行ファイルに含まれる関数と、前記第2の実行ファイルの実行後に更新された前記第3の実行ファイルに含まれる関数とを抽出する抽出手段と、
前記第1の実行ファイルから抽出された関数と、前記第3の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第1の実行ファイルがマルウェアであるか否かを判定する判定手段と、
を備えたことを特徴とするマルウェア判定システム。
【請求項5】
請求項1〜請求項4のいずれかに記載のマルウェア判定システムとしてコンピュータを機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2011−221745(P2011−221745A)
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【出願番号】特願2010−89521(P2010−89521)
【出願日】平成22年4月8日(2010.4.8)
【出願人】(000208891)KDDI株式会社 (2,700)
【出願人】(304023318)国立大学法人静岡大学 (416)
【Fターム(参考)】
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【出願日】平成22年4月8日(2010.4.8)
【出願人】(000208891)KDDI株式会社 (2,700)
【出願人】(304023318)国立大学法人静岡大学 (416)
【Fターム(参考)】
[ Back to top ]