(57)【特許請求の範囲】
【請求項１】
第１の実行ファイルと、前記第１の実行ファイルを実行したときに新たに生成された第２の実行ファイルとを実行する実行手段と、
前記第１の実行ファイルが実行されたときに新たに生成された前記第２の実行ファイルと、前記第２の実行ファイルが実行されたときに新たに生成された第３の実行ファイルとを検出する検出手段と、
前記第１の実行ファイルに含まれる関数と前記第３の実行ファイルに含まれる関数とを抽出する抽出手段と、
前記第１の実行ファイルから抽出された関数と前記第３の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第１の実行ファイルがマルウェアであるか否かを判定する判定手段と、
を備えたことを特徴とするマルウェア判定システム。
【請求項２】
第１の実行ファイルと、前記第１の実行ファイルを実行したときに更新された第２の実行ファイルとを実行する実行手段と、
前記第１の実行ファイルが実行されたときに前記第２の実行ファイルの更新を検出し、前記第２の実行ファイルが実行されたときに第３の実行ファイルの更新を検出する検出手段と、
前記第１の実行ファイルに含まれる関数と、前記第２の実行ファイルの実行後に更新された前記第３の実行ファイルに含まれる関数とを抽出する抽出手段と、
前記第１の実行ファイルから抽出された関数と、前記第３の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第１の実行ファイルがマルウェアであるか否かを判定する判定手段と、
を備えたことを特徴とするマルウェア判定システム。
【請求項３】
請求項１または請求項２に記載のマルウェア判定システムとしてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行ファイル（拡張子が.exe等の実行形式のファイル）がマルウェアであるか否かを判定するマルウェア判定システムに関する。また、本発明は、本マルウェア判定システムとしてコンピュータを機能させるためのプログラムにも関する。
【背景技術】
【０００２】
昨今、ウイルス対策システムで検知できない未知のマルウェアが急増している。このような状況のため、迅速かつ見逃しなく、正規の実行ファイルとマルウェアを見分ける手法が必要とされている。
【０００３】
これまで、未知の実行ファイルを安全な環境で実行させたときの通信挙動を監視して、マルウェアらしい外部への攻撃が観測された場合に、未知の実行ファイルが悪性であると判定する手法が提案されてきた（例えば、非特許文献１，２参照）。他の手法として、マルウェアのコードを静的解析によって抽出し、マルウェアらしいコードの有無を手動で検査する判定手法が提案されている（例えば、非特許文献３，４参照）。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】堀合啓一，今泉隆文，田中英彦，“マルウェア亜種の動的挙動を利用した自動分類手法の提案と実装”，情報処理学会論文誌，Vol.50，No.4
【非特許文献２】藤原将志，寺田真敏，安部哲哉，菊池浩明，“マルウェアの感染動作に基づく分類に関する検討”，情報処理学会研究報告. CSEC，IPSJ SIG Notes 2008(21) pp.177-182，2008年3月
【非特許文献３】安本幸希，森井昌克，中尾康二，“マルウェアコードの類似度判定による機能推定”，電子情報通信学会技術研究報告，ISEC2007-93，pp.31-36，2007年11月
【非特許文献４】岩村誠，伊藤光恭，村岡洋一，“機械語命令列の類似性に基づく自動マルウェア分類システム”，情報処理学会，コンピュータセキュリティシンポジウム（CSS2009），A8-4，2009年10月
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、非特許文献１，２に記載の手法では、日時やユーザ操作などのある条件が揃ったときのみ発症するマルウェアに対しては、その通信挙動を抽出するまでに時間を要するという問題がある。また、マルウェアらしい通信挙動をマルウェア毎に予め定義しておく必要があり、未知の挙動を持つマルウェアを判定できない問題もある。
【０００６】
非特許文献３，４に記載の手法においても、コードを厳密に抽出する必要があり、解析に時間を要する問題がある。また、マルウェアらしいコードをマルウェア毎に予め定義しておく必要があり、未知のコードを持つマルウェアを判定できない問題もある。
【０００７】
本発明は、上述した課題に鑑みてなされたものであって、未知の実行ファイルがマルウェアであるか否かを迅速に判定することができるマルウェア判定システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
マルウェアは、コンピュータ内に自身のコード（関数を含む）をコピーする特性や、コンピュータ内の既存の実行ファイルに自身のコードを追加する特性を有する。したがって、マルウェアによる感染では、マルウェアの実行ファイルが有する関数が感染先の実行ファイルに遺伝するという特徴がある。関数とは、実行ファイルの実行時に呼び出されるシステムコール等の関数であり、アプリケーションインタフェース（API）も含むものとする。APIとは、あるOSやミドルウェア向けのソフトウェアを開発する際に使用できる命令や関数の集合のことであり、多くのソフトウェアが共通して利用する機能として、OSやミドルウェアの形でまとめて提供されているものである。
【００１１】
上記に鑑み、本発明は、第１の実行ファイルと、前記第１の実行ファイルを実行したときに新たに生成された第２の実行ファイルとを実行する実行手段と、前記第１の実行ファイルが実行されたときに新たに生成された前記第２の実行ファイルと、前記第２の実行ファイルが実行されたときに新たに生成された第３の実行ファイルとを検出する検出手段と、前記第１の実行ファイルに含まれる関数と前記第３の実行ファイルに含まれる関数とを抽出する抽出手段と、前記第１の実行ファイルから抽出された関数と前記第３の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第１の実行ファイルがマルウェアであるか否かを判定する判定手段と、を備えたことを特徴とするマルウェア判定システムである。
【００１２】
また、本発明は、第１の実行ファイルと、前記第１の実行ファイルを実行したときに更新された第２の実行ファイルとを実行する実行手段と、前記第１の実行ファイルが実行されたときに前記第２の実行ファイルの更新を検出し、前記第２の実行ファイルが実行されたときに第３の実行ファイルの更新を検出する検出手段と、前記第１の実行ファイルに含まれる関数と、前記第２の実行ファイルの実行後に更新された前記第３の実行ファイルに含まれる関数とを抽出する抽出手段と、前記第１の実行ファイルから抽出された関数と、前記第３の実行ファイルから抽出された関数とを比較し、比較結果に基づいて前記第１の実行ファイルがマルウェアであるか否かを判定する判定手段と、を備えたことを特徴とするマルウェア判定システムである。
【００１３】
また、本発明は、上記のマルウェア判定システムとしてコンピュータを機能させるためのプログラムである。
【発明の効果】
【００１４】
本発明によれば、実行対象の実行ファイルから抽出された関数と、新たに生成された実行ファイルまたは更新された実行ファイルから抽出された関数とを比較した結果に基づいてマルウェアの判定を行うことによって、未知の実行ファイルがマルウェアであるか否かを迅速に判定することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態によるマルウェア判定システムの構成を示すブロック図である。
【図２】本発明の一実施形態において、実行ファイルに含まれる関数を抽出した結果を示す参考図である。
【図３】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図４】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図５】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図６】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図７】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図８】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図９】本発明の一実施形態におけるマルウェアの判定方法を説明するための参考図である。
【図１０】本発明の一実施形態におけるマルウェアの判定手順を示すフローチャートである。
【図１１】本発明の一実施形態によるマルウェア判定システムの構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照し、本発明の実施形態を説明する。図１は、本発明の一実施形態によるマルウェア判定システムの構成を示している。図１に示すマルウェア判定システムは管理装置１とファイル実行装置２を有する。管理装置１とファイル実行装置２は、例えばPC（Personal Computer）で構成される。
【００１７】
管理装置１は、制御部１０、通信部１１、関数抽出部１２、関数比較部１３、および記憶部１４を有する。制御部１０は、記憶部１４に格納されている制御用のプログラムに従って、管理装置１内の各部を制御する。通信部１１はファイル実行装置２と通信を行う。関数抽出部１２は、実行ファイルから関数を抽出する処理を行う。関数の抽出には、既存のコード解析ツールを用いることが可能である。図２は、あるマルウェアに含まれる関数を抽出した結果を示している。関数比較部１３は、２つの実行ファイルから抽出された関数を比較して、比較結果に基づいて、実行ファイルがマルウェアであるか否かを判定する。記憶部１４は、ファイル実行装置２から取得された実行ファイル等を記憶する。
【００１８】
ファイル実行装置２は、制御部２０、通信部２１、記憶部２２、ファイル検出部２３、ファイル実行部２４、ハッシュ値算出部２５、およびシステム復元部２６を有する。制御部２０は、記憶部２２に格納されている制御用のプログラムに従って、ファイル実行装置２内の各部を制御する。通信部２１は管理装置１と通信を行う。記憶部２２は実行ファイル等を記憶する。記憶部２２は複数のフォルダを有し、実行ファイルは、例えばシステム（system）フォルダに格納されている。
【００１９】
システムフォルダとは、PCの各種アプリケーションが保存・管理されているフォルダである。マルウェアは、多数の実行ファイルが管理されているフォルダに自身をコピーすることで他の実行ファイルと見分け難くすることを目的として、システムフォルダに感染することが多い。本実施形態では、正規のアプリケーションのインストール先およびマルウェアの感染先がシステムフォルダであることを想定しているが、これ以外であっても、以下の手法を同様に適用することが可能である。
【００２０】
ファイル検出部２３は、実行ファイルの実行により新たに生成されたファイルまたは更新されたファイルを検出する。ファイル実行部２４は、マルウェアであるか否かの判定対象となる実行ファイルを実行する。ハッシュ値算出部２５は、SHA-1（Secure Hash Algorithm 1）等のアルゴリズムにより実行ファイルのハッシュ値を算出する。算出されたハッシュ値は、更新されたファイルを検出する際に用いられる。システム復元部２６は、マルウェアに感染したファイル実行装置２のシステムを感染前の状態に復元する。
【００２１】
以下、本実施形態によるマルウェア判定システムを用いたマルウェアの判定方法を説明する。以下では、一例として３つの判定方法を説明する。
【００２２】
＜第１の判定方法＞
図３は、正規のインストーラとマルウェアの実行時の動作を示している。正規のインストーラの実行ファイル３００が実行されると、正規のアプリケーションの実行ファイル３１０が生成され、システムフォルダに格納される。インストーラとアプリケーションの機能が異なるため、インストーラの実行ファイル３００が有する関数セット（Ｂ）と、アプリケーションの実行ファイル３１０が有する関数セット（Ａ）は、全く異なったものとなる。
【００２３】
一方、マルウェアの実行ファイル３２０が実行されると、ユーザの目から隠蔽するため、および自動起動コードとして常駐するために、実行ファイル３２０のコピーである実行ファイル３３０がシステムフォルダに格納される。一般的なマルウェアの場合、実行ファイル３２０が有する関数セット（Ｂ）と、実行ファイル３３０が有する関数セット（Ａ）は同様のものとなる。したがって、関数セット（Ｂ）と関数セット（Ａ）を比較することによって、マルウェアの判定を行うことができる。
【００２４】
図４は、第１の判定方法の手順を示している。まず、ファイル検出部２３は、システムフォルダに存在する実行ファイルをリスト化した実行ファイルリストを生成する（ステップＳ１００）。実行ファイルリストには、例えば実行ファイルのファイル名が含まれる。続いて、通信部２１は、判定対象となる実行ファイルのコピーを管理装置１へ送信する。管理装置１の通信部１１は実行ファイルを受信し、記憶部１４に格納する（ステップＳ１０５）。
【００２５】
続いて、関数抽出部１２は、ステップＳ１０５で管理装置１から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部１２は、抽出した関数をリスト化した関数リストを記憶部１４に格納する（ステップＳ１１０）。続いて、ファイル実行部２４は判定対象の実行ファイルを実行する（ステップＳ１１５）。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【００２６】
実行ファイルの実行後、ファイル検出部２３は、記憶部２２から実行ファイルリストを読み出し、実行ファイルリストに基づいて、新たに生成された実行ファイルを検出する。具体的には、ファイル検出部２３は、実行ファイルリスト中のファイル名と、システムフォルダ内の実行ファイルのファイル名とを照合する。システムフォルダ内の実行ファイルのファイル名が実行ファイルリストになかった場合、ファイル検出部２３は、その実行ファイルが新たに生成された実行ファイルであると判定する（ステップＳ１２０）。
【００２７】
続いて、通信部２１は、新たに生成された実行ファイルのコピーを管理装置１へ送信する。管理装置１の通信部１１は実行ファイルを受信し、記憶部１４に格納する（ステップＳ１２５）。関数抽出部１２は、ステップＳ１２５で管理装置１から取得した実行ファイルを記憶部１４から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部１２は、抽出した関数をリスト化した関数リストを記憶部１４に格納する（ステップＳ１３０）。
【００２８】
関数比較部１３は、記憶部１４から２つの関数リストを読み出し、各関数リストに含まれる関数を比較し、２つの関数リストに含まれる全ての関数が一致するか否かを判定する（ステップＳ１３５）。全ての関数が一致した場合、関数比較部１３は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部１４に格納する（ステップＳ１４０）。また、一致しない関数があった場合、関数比較部１３は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部１４に格納する（ステップＳ１４５）。
【００２９】
上記では、判定対象の実行ファイルから抽出された関数セット（Ｂ）と、新たに生成された実行ファイルから抽出された関数セット（Ａ）とが完全に一致した場合に判定対象の実行ファイルがマルウェアであると判定しているが、これ以外でもよい。例えば、関数セット（Ｂ）の全ての関数が関数セット（Ａ）に含まれる場合や、関数セット（Ｂ）の関数のうち所定の割合以上の関数が関数セット（Ａ）に含まれる場合に判定対象の実行ファイルがマルウェアであると判定してもよい。
【００３０】
＜第２の判定方法＞
マルウェアの中には、コンピュータに予めインストールされている実行ファイルに自身の関数セットを追加することで感染するタイプのものがある。図５は、このタイプのマルウェアの実行時の動作を示している。マルウェアの実行ファイル５００が実行されると、アプリケーションの実行ファイル５１０に実行ファイル５００の関数セットが追加される。したがって、判定対象の実行ファイルから抽出された関数セットと、判定対象の実行ファイルを実行することによって更新された実行ファイルから抽出された関数セットとを比較することによって、マルウェアの判定を行うことができる。
【００３１】
図６は、第２の判定方法の手順を示している。まず、ハッシュ値算出部２５は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部２２に格納する（ステップＳ２００）。続いて、通信部２１は、判定対象となる実行ファイルのコピーを管理装置１へ送信する。管理装置１の通信部１１は実行ファイルを受信し、記憶部１４に格納する（ステップＳ２０５）。
【００３２】
続いて、関数抽出部１２は、ステップＳ２０５で管理装置１から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部１２は、抽出した関数をリスト化した関数リストを記憶部１４に格納する（ステップＳ２１０）。続いて、ファイル実行部２４は判定対象の実行ファイルを実行する（ステップＳ２１５）。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【００３３】
実行ファイルの実行後、ハッシュ値算出部２５は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部２２に格納する（ステップＳ２２０）。続いて、ファイル検出部２３は、記憶部２２から２つのハッシュ値リストを読み出し、各ハッシュ値リスト内のハッシュ値を比較した結果に基づいて、更新されたファイルを検出する。具体的には、ファイル検出部２３は、同一のファイル名を有するファイルに関して実行ファイルの実行前後のハッシュ値同士を比較し、ハッシュ値が異なっている場合に、その実行ファイルが更新された実行ファイルであると判定する（ステップＳ２２５）。
【００３４】
続いて、通信部２１は、更新された実行ファイルのコピーを管理装置１へ送信する。管理装置１の通信部１１は実行ファイルを受信し、記憶部１４に格納する（ステップＳ２３０）。関数抽出部１２は、ステップＳ２３０で管理装置１から取得した実行ファイルを記憶部１４から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部１２は、抽出した関数をリスト化した関数リストを記憶部１４に格納する（ステップＳ２３５）。
【００３５】
関数比較部１３は、記憶部１４から２つの関数リストを読み出し、各関数リストに含まれる関数を比較し、判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれるか否かを判定する（ステップＳ２４０）。判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれる場合、関数比較部１３は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部１４に格納する（ステップＳ２４５）。また、判定対象の実行ファイルの関数リストに含まれる関数の一部が、更新された実行ファイルの関数リストに含まれない場合、関数比較部１３は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部１４に格納する（ステップＳ２５０）。
【００３６】
＜第３の判定方法＞
図３に示したマルウェアは自身の実行ファイルをシステムフォルダにコピーする。このため、システムフォルダにコピーされた実行ファイルをシステムフォルダから取り出して別のフォルダに格納し、システムフォルダの状態を元に戻した後、取り出した実行ファイルを実行すると、再度実行ファイルがシステムフォルダにコピーされる。
【００３７】
図７は、この時の動作を示している。マルウェアの実行ファイル７００が実行されると、実行ファイル７００のコピーである実行ファイル７１０がシステムフォルダに格納される。実行ファイル７１０を取り出して、すなわち、実行ファイル７１０をシステムフォルダ以外のフォルダに移動して、実行ファイル７１０を実行すると、実行ファイル７１０のコピーである実行ファイル７２０がシステムフォルダに格納される。したがって、判定対象の実行ファイルから抽出された関数セットと、システムフォルダから取り出した実行ファイルを実行することによって生成された実行ファイルから抽出された関数セットとを比較することによって、マルウェアの判定を行うことができる。
【００３８】
図８は、第３の判定方法の手順を示している。まず、ファイル検出部２３は、システムフォルダに存在する実行ファイルをリスト化した実行ファイルリストを生成する（ステップＳ３００）。実行ファイルリストには、例えば実行ファイルのファイル名が含まれる。続いて、通信部２１は、判定対象となる実行ファイルのコピーを管理装置１へ送信する。管理装置１の通信部１１は実行ファイルを受信し、記憶部１４に格納する（ステップＳ３０５）。
【００３９】
続いて、関数抽出部１２は、ステップＳ３０５で管理装置１から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部１２は、抽出した関数をリスト化した関数リストを記憶部１４に格納する（ステップＳ３１０）。続いて、ファイル実行部２４は判定対象の実行ファイルを実行する（ステップＳ３１５）。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【００４０】
実行ファイルの実行後、ファイル検出部２３は、記憶部２２から実行ファイルリストを読み出し、実行ファイルリストに基づいて、新たに生成された実行ファイルを検出する（ステップＳ３２０）。新たに生成された実行ファイルを検出する方法は、図４のステップＳ１２０で実行ファイルを検出する方法と同様である。
【００４１】
続いて、制御部２０は、新たに生成された実行ファイルをシステムフォルダから取り出し、システムフォルダ以外のフォルダに格納する（ステップＳ３２５）。続いて、システム復元部２６はシステムフォルダを復元する（ステップＳ３３０）。これによって、システムフォルダは実行ファイルの実行前の状態となる。この復元には、VMware（登録商標）等の仮想マシン管理ツールを用いることができる。
【００４２】
続いて、ファイル実行部２４は、ステップＳ３２５で取り出された実行ファイルを実行する（ステップＳ３３５）。実行ファイルの実行後、ファイル検出部２３は、記憶部２２から実行ファイルリストを読み出し、実行ファイルリストに基づいて、新たに生成された実行ファイルを検出する（ステップＳ３４０）。新たに生成された実行ファイルを検出する方法は、図４のステップＳ１２０で実行ファイルを検出する方法と同様である。
【００４３】
続いて、通信部２１は、新たに生成された実行ファイルのコピーを管理装置１へ送信する。管理装置１の通信部１１は実行ファイルを受信し、記憶部１４に格納する（ステップＳ３４５）。関数抽出部１２は、ステップＳ３４５で管理装置１から取得した実行ファイルを記憶部１４から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部１２は、抽出した関数をリスト化した関数リストを記憶部１４に格納する（ステップＳ３５０）。
【００４４】
関数比較部１３は、記憶部１４から２つの関数リストを読み出し、各関数リストに含まれる関数を比較し、２つの関数リストに含まれる全ての関数が一致するか否かを判定する（ステップＳ３６０）。全ての関数が一致した場合、関数比較部１３は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部１４に格納する（ステップＳ３６５）。また、一致しない関数があった場合、関数比較部１３は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部１４に格納する（ステップＳ３７０）。
【００４５】
上記では、判定対象の実行ファイルから抽出された関数セット（Ｂ）と、新たに生成された実行ファイルから抽出された関数セット（Ａ’）とが完全に一致した場合に判定対象の実行ファイルがマルウェアであると判定しているが、これ以外でもよい。例えば、関数セット（Ｂ）の全ての関数が関数セット（Ａ’）に含まれる場合や、関数セット（Ｂ）の関数のうち所定の割合以上の関数が関数セット（Ａ’）に含まれる場合に判定対象の実行ファイルがマルウェアであると判定してもよい。
【００４６】
＜第４の判定方法＞
図５に示したマルウェアは、コンピュータに予めインストールされている実行ファイルに自身の関数セットを追加する。関数セットが追加された実行ファイルをシステムフォルダから取り出して別のフォルダに格納し、システムフォルダの状態を元に戻した後、取り出した実行ファイルを実行すると、再度システムフォルダ内の実行ファイルに関数セットが追加される。
【００４７】
図９は、この時の動作を示している。マルウェアの実行ファイル９００が実行されると、アプリケーションの実行ファイル９１０に実行ファイル９００の関数セットが追加される。実行ファイル９１０を取り出して、すなわち、実行ファイル９１０をシステムフォルダ以外のフォルダに移動して、実行ファイル９１０を実行すると、アプリケーションの実行ファイル９２０に実行ファイル９１０の関数セットが追加される。したがって、判定対象の実行ファイルから抽出された関数セットと、システムフォルダから取り出した実行ファイルを実行することによって更新された実行ファイルから抽出された関数セットとを比較することによって、マルウェアの判定を行うことができる。
【００４８】
図１０は、第４の判定方法の手順を示している。まず、ハッシュ値算出部２５は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部２２に格納する（ステップＳ４００）。続いて、通信部２１は、判定対象となる実行ファイルのコピーを管理装置１へ送信する。管理装置１の通信部１１は実行ファイルを受信し、記憶部１４に格納する（ステップＳ４０５）。
【００４９】
続いて、関数抽出部１２は、ステップＳ４０５で管理装置１から取得した実行ファイルを読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部１２は、抽出した関数をリスト化した関数リストを記憶部１４に格納する（ステップＳ４１０）。続いて、ファイル実行部２４は判定対象の実行ファイルを実行する（ステップＳ４１５）。このとき実行される実行ファイルはシステムフォルダ以外のフォルダに格納されている。
【００５０】
実行ファイルの実行後、ハッシュ値算出部２５は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部２２に格納する（ステップＳ４２０）。続いて、ファイル検出部２３は、記憶部２２から２つのハッシュ値リストを読み出し、各ハッシュ値リスト内のハッシュ値を比較した結果に基づいて、更新されたファイルを検出する（ステップＳ４２５）。更新された実行ファイルを検出する方法は、図６のステップＳ２２５で実行ファイルを検出する方法と同様である。
【００５１】
続いて、制御部２０は、更新された実行ファイルをシステムフォルダから取り出し、システムフォルダ以外のフォルダに格納する（ステップＳ４３０）。続いて、システム復元部２６はシステムフォルダを復元する（ステップＳ４３５）。これによって、システムフォルダは実行ファイルの実行前の状態となる。
【００５２】
続いて、ハッシュ値算出部２５は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部２２に格納する（ステップＳ４４０）。続いて、ファイル実行部２４は、ステップＳ４３０で取り出された実行ファイルを実行する（ステップＳ４４５）。
【００５３】
実行ファイルの実行後、ハッシュ値算出部２５は、システムファイル内の各実行ファイルのハッシュ値を算出し、ハッシュ値と実行ファイルのファイル名を関連付けたハッシュ値リストを記憶部２２に格納する（ステップＳ４５０）。続いて、ファイル検出部２３は、ステップＳ４４０，Ｓ４５０で生成した２つのハッシュ値リストを記憶部２２から読み出し、各ハッシュ値リスト内のハッシュ値を比較した結果に基づいて、更新されたファイルを検出する（ステップＳ４５５）。更新された実行ファイルを検出する方法は、図６のステップＳ２２５で実行ファイルを検出する方法と同様である。
【００５４】
続いて、通信部２１は、更新された実行ファイルのコピーを管理装置１へ送信する。管理装置１の通信部１１は実行ファイルを受信し、記憶部１４に格納する（ステップＳ４６０）。関数抽出部１２は、ステップＳ４６０で管理装置１から取得した実行ファイルを記憶部１４から読み出し、実行ファイルから関数を抽出する。さらに、関数抽出部１２は、抽出した関数をリスト化した関数リストを記憶部１４に格納する（ステップＳ４６５）。
【００５５】
関数比較部１３は、記憶部１４から２つの関数リストを読み出し、各関数リストに含まれる関数を比較し、判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれるか否かを判定する（ステップＳ４７０）。判定対象の実行ファイルの関数リストに含まれる全ての関数が、更新された実行ファイルの関数リストに含まれる場合、関数比較部１３は、判定対象の実行ファイルがマルウェアであると判定し、判定結果を記憶部１４に格納する（ステップＳ４７５）。また、判定対象の実行ファイルの関数リストに含まれる関数の一部が、更新された実行ファイルの関数リストに含まれない場合、関数比較部１３は、判定対象の実行ファイルが正規のインストーラであると判定し、判定結果を記憶部１４に格納する（ステップＳ４８０）。
【００５６】
＜変形例＞
上記では、管理装置１とファイル実行装置２の２台のコンピュータが連携してマルウェアの判定を行っているが、１台のコンピュータでマルウェアの判定を行ってもよい。図１１は、この場合の構成を示している。図１１に示すファイル実行装置３は、関数抽出部１２、関数比較部１３、制御部２０、通信部２１、記憶部２２、ファイル検出部２３、ファイル実行部２４、ハッシュ値算出部２５、およびシステム復元部２６を有する。図１１において、図１と同一の構成には同一の符号が付与されている。ファイル実行装置３は、第１〜第３の動作例で示した動作と同様の動作を行うことによって、マルウェアの判定を行う。ただし、２台の装置間の通信に係る処理は除く。
【００５７】
上述した管理装置１、ファイル実行装置２，３の各機能は、各装置の動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより、実現される。ここで、「コンピュータ」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００５８】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００５９】
上述したマルウェアの判定方法では、実行ファイルを強制的に実行することによって、特定の条件の発生の有無に関係なく、迅速にマルウェアの判定を行うことができる。また、マルウェア毎に異なる挙動ではなく、マルウェアに共通する関数セットの遺伝に注目した判定を行うことで、マルウェアらしいコードを予め定義しておく必要はないので、未知の実行ファイルがマルウェアであるか否かを迅速に判定することができる。
【００６０】
また、上記の第３の判定方法および第４の判定方法では、ファイルのコピーや関数セットの追加が繰り返されるという挙動の有無を監視することに加えて、第１の判定方法および第２の判定方法で用いている、関数セットの遺伝に注目した判定を行うので、マルウェアであるか否かの判定をより正確に行うことができる。
【００６１】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。上記の手法は、Security Operation Centerにおける未知の実行ファイルの判定業務や、Telecom-ISACのCyber Clean Centerにおける検体の分類業務、ウイルス対策ソフトのベンダにおける検体分類業務に活用できる。
【符号の説明】
【００６２】
１・・・管理装置、２，３・・・ファイル実行装置、１０，２０・・・制御部、１１，２１・・・通信部、１２・・・関数抽出部（抽出手段）、１３・・・関数比較部（判定手段）、１４，２２・・・記憶部、２３・・・ファイル検出部（検出手段）、２４・・・ファイル実行部（実行手段）、２５・・・ハッシュ値算出部、２６・・・システム復元部
【図１】
0005540316.tif 000002
【図２】
0005540316.tif 000003
【図３】
0005540316.tif 000004
【図４】
0005540316.tif 000005
【図５】
0005540316.tif 000006
【図６】
0005540316.tif 000007
【図７】
0005540316.tif 000008
【図８】
0005540316.tif 000009
【図９】
0005540316.tif 000010
【図１０】
0005540316.tif 000011
【図１１】
0005540316.tif 000012