(57)【要約】【課題】マルウェア解析システムの演算負荷及びネットワーク負荷を軽減する。【解決手段】マルウェア検知装置は、ユーザＰＣのような計算機内で発見された、マルウェアである可能性がある擬陽性ファイルをクラスタリングし、擬陽性ファイルを含むクラスタを構築するクラスタ構築部、擬陽性ファイルを含むクラスタから、マルウェア解析システムに送信する１つの検体として擬陽性ファイルを選別する送信検体選択部、選別した検体をマルウェア解析システムへ送信する検体送信部、及び、送信した検体に対応して、マルウェア解析システムから取得した解析レポートを分析して、クラスタに含まれる擬陽性ファイルを、「マルウェア」及び「非マルウェア」のいずれかに分類する解析レポート分析部を有する。【選択図】図３
2012083849.tif 000002
【特許請求の範囲】
【請求項１】
計算機内で発見された、マルウェアである可能性がある擬陽性ファイルをクラスタリングし、前記擬陽性ファイルを含むクラスタを構築するクラスタ構築部、
前記擬陽性ファイルを含む前記クラスタから、マルウェア解析システムに送信する１つの検体として前記擬陽性ファイルを選別する送信検体選択部、
選別した前記検体を前記マルウェア解析システムへ送信する検体送信部、及び、
送信した前記検体に対応して、前記マルウェア解析システムから取得した解析レポートを分析して、前記クラスタに含まれる前記擬陽性ファイルを、「マルウェア」及び「非マルウェア」のいずれかに分類する解析レポート分析部を有することを特徴とするマルウェア検知装置。
【請求項２】
前記送信検体選択部は、前記擬陽性ファイルが生成された生成時刻が、前記クラスタに含まれる中で最も古い擬陽性ファイルを、前記検体として選別される前記擬陽性ファイルとすることを特徴とする請求項１記載のマルウェア検知装置。
【請求項３】
マルウェアである可能性がある擬陽性ファイルを計算機によって検知する方法であって、前記計算機は、該計算機内で発見された前記擬陽性ファイルをクラスタリングし、前記擬陽性ファイルを含むクラスタを構築し、
前記擬陽性ファイルを含む前記クラスタから、マルウェア解析システムに送信する１つの検体として前記擬陽性ファイルを選別し、
選別した前記検体を前記マルウェア解析システムへ送信し、
送信した前記検体に対応して、前記マルウェア解析システムから取得した解析レポートを分析して、前記クラスタに含まれる前記擬陽性ファイルを、「マルウェア」及び「非マルウェア」のいずれかに分類することを特徴とするマルウェア検知方法。
【請求項４】
前記擬陽性ファイルが生成された生成時刻が、前記クラスタに含まれる中で最も古い擬陽性ファイルを、前記検体として選別する前記擬陽性ファイルとすることを特徴とする請求項５記載のマルウェア検知方法。
【請求項５】
計算機内で発見された、マルウェアである可能性がある擬陽性ファイルをクラスタリングし、前記擬陽性ファイルを含むクラスタを構築するクラスタ構築機能、
前記擬陽性ファイルを含む前記クラスタから、マルウェア解析システムに送信する１つの検体として前記擬陽性ファイルを選別する送信検体選択機能、
選別した前記検体を前記マルウェア解析システムへ送信する検体送信機能、及び、
送信した前記検体に対応して、前記マルウェア解析システムから取得した解析レポートを分析して、前記クラスタに含まれる前記擬陽性ファイルを、「マルウェア」及び「非マルウェア」のいずれかに分類する解析レポート分析機能を、前記計算機に実現させるためのマルウェア検知プログラム。
【請求項６】
前記擬陽性ファイルが生成された生成時刻が、前記クラスタに含まれる中で最も古い擬陽性ファイルを前記検体として選別される前記擬陽性ファイルとする前記送信検体選択機能を前記計算機に実現させるための請求項５記載のマルウェア検知プログラム。
【請求項７】
前記擬陽性ファイルが生成された生成時刻が、前記クラスタに含まれる中で最も古い擬陽性ファイルを派生元ファイルとし、前記クラスタに含まれる他の擬陽性ファイルを派生先ファイルとし、前記派生元ファイルを前記検体として選別される前記擬陽性ファイルとする前記送信検体選択機能を前記計算機に実現させるための請求項６記載のマルウェア検知プログラム。
【請求項８】
種別の異なる複数のクラスタ構築モジュールを選択的に実行する前記クラスタ構築機能を前記計算機に実現させるための請求項６に記載のマルウェア検知プログラム。
【請求項９】
ハッシュ値が等しい前記擬陽性ファイルを一つのクラスタとする前記クラスタ構築モジュールを選択的に実行する前記クラスタ構築機能を前記計算機に実現させるための請求項８に記載のマルウェア検知プログラム。
【請求項１０】
実行したプロセスが親子関係にある前記擬陽性ファイルを一つのクラスタとする前記クラスタ構築モジュールを選択的に実行する前記クラスタ構築機能を前記計算機に実現させるための請求項８に記載のマルウェア検知プログラム。
【請求項１１】
前記解析レポート分析手順が「判定不能」とした前記擬陽性ファイルを、再度クラスタリングする前記クラスタ構築機能を前記計算機に実現させるための請求項６に記載のマルウェア検知プログラム。
【請求項１２】
さらに、前記計算機の外部記憶装置に格納されているファイルを検査して、マルウェアである可能性がある前記擬陽性ファイルを前記ファイルの中から発見する擬陽性ファイル検出機能を前記計算機に実現させるための請求項６に記載のマルウェア検知プログラム。
【請求項１３】
「マルウェア」に分類した前記擬陽性ファイルを前記計算機から駆除する前記解析レポート分析機能を、前記計算機に実現させるための請求項５に記載のマルウェア検知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルウェア検知技術に関し、特に、ユーザＰＣからマルウェア解析システムへ検体を送信する技術に関する。。
【背景技術】
【０００２】
マルウェアは、コンピュータプログラムの一種であり、コンピュータ端末内で実行されるとファイルの削除や情報漏洩といった、ユーザにとって有害な活動を行うものである。
【０００３】
これまでのマルウェア対策は、ユーザＰＣ内にインストールしたアンチウイルスソフトが、既知のマルウェアの特徴情報（シグネチャ）を用いてマルウェアを検知し、駆除するのが一般的であったが、日々数千から数万の新種のマルウェアが出現する今日では、特徴情報の更新が間に合わず、検知率が低下してきている。
【０００４】
この問題を解決するために、マルウェアの挙動を分析して、マルウェアであるかどうかを判定する、マルウェア解析システムの研究が進んでいる。マルウェア解析システムを用いたマルウェア検知では、先ずユーザＰＣ内にある擬陽性ファイル発見プログラムが、ユーザＰＣ内を検査して、マルウェアである可能性があるファイル（擬陽性ファイル）を抽出する。次に、擬陽性ファイルを検体として、ユーザＰＣからマルウェア解析システムに送信する。検体を受信したマルウェア解析システムは分析を行い、検体がマルウェアであるかどうかの判定結果および検体の挙動が記された、マルウェア解析レポートをユーザＰＣに返答する。ユーザＰＣでは、マルウェアであると判定されたファイルを駆除する。しかし、大量の擬陽性ファイルがユーザＰＣ上で発見された場合、多数の検体がマルウェア解析システムに送信されるため、マルウェア解析システムの演算負荷及びネットワーク負荷が高くなる問題がある。
【０００５】
このため、マルウェア解析システムの負荷を軽減する試みがなされている。非特許文献１には、マルウェア解析システムにおいて、既に解析済みの検体のハッシュ値及びその解析レポートのデータベースを保持し、ユーザＰＣから新たに受信した検体のハッシュ値がデータベースに含まれない場合に限って新たに解析を行うことで、解析システムの演算負荷を低減する技術が開示されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】“Improving the Efficiency of Dynamic Malware Analysis”, Proceedings of ACM 25th Symposium on Applied Computing, 2010.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１に開示された技術では、全ての擬陽性ファイルが検体として、ユーザＰＣからマルウェア解析システムに送信されるため、マルウェア解析システムのネットワーク負荷は改善されない。また、マルウェア解析システムは、受信した検体が既に解析済みのものであるかを確認するために、検体のハッシュ値の演算をするなどの処理を行うため、これに伴う負荷が発生する。
【課題を解決するための手段】
【０００８】
開示するマルウェア検知装置、検知方法、及びそのプログラムは、次のような構成を有する。マルウェア検知装置は、ユーザＰＣのような計算機内で発見された、マルウェアである可能性がある擬陽性ファイルをクラスタリングし、擬陽性ファイルを含むクラスタを構築するクラスタ構築部、擬陽性ファイルを含むクラスタから、マルウェア解析システムに送信する１つの検体として擬陽性ファイルを選別する送信検体選択部、選別した検体をマルウェア解析システムへ送信する検体送信部、及び、送信した検体に対応して、マルウェア解析システムから取得した解析レポートを分析して、クラスタに含まれる擬陽性ファイルを、「マルウェア」及び「非マルウェア」のいずれかに分類する解析レポート分析部を有する。マルウェア検知方法及びそのプログラムは、マルウェア検知装置による手順を実行し、または、マルウェア検知装置の機能をプログラムとして計算機が実行する。
【０００９】
さたに望ましいマルウェア検知装置の態様は、送信検体選択部は、擬陽性ファイルが生成された生成時刻が、クラスタに含まれる中で最も古い擬陽性ファイルを、検体として選別される擬陽性ファイルとする。
【発明の効果】
【００１０】
本発明によれば、ユーザＰＣからマルウェア解析システムへの検体の送信が、効率化される。
【図面の簡単な説明】
【００１１】
【図１】実施形態のシステムの構成を示す図である。
【図２】ユーザＰＣの物理構成を示す図である。
【図３】ユーザＰＣの論理構成を示す図である。
【図４】クラスタ構築部の論理構成を示す図である。
【図５】擬陽性ファイルＤＢの構成例を示す図である。
【図６】解析レポートＤＢの構成例を示す図である。
【図７】プロセス実行ＤＢの構成例を示す図である。
【図８】解析レポートの一例である。
【図９】解析レポートの一例である。
【図１０】擬陽性ファイル検出部の処理フローチャートである。
【図１１】クラスタ構築部の統括部の処理フローチャートである。
【図１２】クラスタモジュールＡの処理フローチャートである。
【図１３】クラスタモジュールＢの処理フローチャートである。
【図１４】送信検体選択部の処理フローチャートである。
【図１５】検体送信部の処理フローチャートである。
【図１６】レポート受信部の処理フローチャートである。
【図１７】レポート分析部の処理フローチャートである。
【図１８】擬陽性ファイルレコード判定処理のフローチャートである。
【発明を実施するための形態】
【００１２】
図１は、本実施形態のシステムの構成を示す図である。ユーザＰＣ１００はパーソナルコンピュータなどの計算機である。マルウェア解析システム２００はパーソナルコンピュータやサーバのような計算機である。ユーザＰＣ１００とマルウェア解析システムはインターネットなどのネットワーク３００を介して接続されている。
【００１３】
図２は、ユーザＰＣ１００の物理構成を示す図である。ユーザＰＣ１００は、ユーザＰＣ本体１１０と入出力装置１７０から構成される計算機装置である。
【００１４】
ユーザＰＣ本体１１０には、ＣＰＵ１２０、メモリ１３０、インタフェース１４０、外部記憶装置１５０、及びこれらを接続するバス１６０を備えた計算機装置である。一般にパーソナルコンピュータなどと呼ばれる装置がこれに該当する。
【００１５】
ＣＰＵ１２０は処理を実行するための演算装置である。メモリ１３０は、ＣＰＵ１２０で実行する処理プログラムおよびプログラムが使用するデータを記憶する。
【００１６】
メモリ１３０は、処理プログラムとしてマルウェア検出プログラム１３１を記憶している。そして、このマルウェア検出プログラムがＣＰＵ１２０によって実行されることによって、マルウェアを検出する。ＣＰＵ１２０が実行する具体的な処理については後述する。
【００１７】
インタフェース１４０は、ユーザＰＣ１００をネットワークと接続するための、ＬＡＮカードなどの通信装置である。ユーザＰＣ１００はインタフェース１４０を通じてネットワーク３００と接続されている。インタフェース１４０は、図中においてＩＦと記述することがある。
【００１８】
外部記憶装置１５０は、ＨＤＤ（Hard Disk Drive）等から構成され、擬陽性ファイルＤＢ１５１、解析レポートＤＢ１５２、プロセス実行ＤＢ１５３を記憶する。これらのＤＢの具体的な内容については後述する。
【００１９】
入出力装置１７０は、ユーザＰＣに対してデータの入力・出力を行うための装置である。入出力装置の一例としては、キーボードやマウス、ディスプレイがある。
【００２０】
図３は、ユーザＰＣ１００の機能的な構成、および物理的な各装置との関係を示す図である。ＣＰＵ１２０は、擬陽性ファイル検出部１２１、クラスタ構築部１２２、送信検体選択部１２３、検体送信部１２４、レポート受信部１２５、レポート分析部１２６の処理を含むマルウェア検出プログラム１３１を実行する。
【００２１】
擬陽性ファイル検出部１２１は、外部記憶装置１５０内のファイルを検索して、マルウェアである可能性がある擬陽性ファイルを発見する。擬陽性ファイルを発見した場合、ファイルの情報を擬陽性ファイルＤＢ１５１に登録する。
【００２２】
クラスタ構築部１２２は、擬陽性ファイルＤＢ１５１に含まれるレコードのうちファイル種類５０６（図５）が「未定」であるものを対象に、対象のレコードを複数のグループに分類するクラスタリングを行う。図４にクラスタ構築部１２４の論理的な構成を示す。クラスタ構築部１２２は、統括部４０１、クラスタモジュールＡ４０２、クラスタモジュールＢ４０３を含んでいる。クラスタモジュールＡ４０２、クラスタモジュールＢ４０３には、クラスタリングを行うためのプログラムが含まれている。これは、具体的には、擬陽性ファイルＤＢ１５１に含まれている各レコードにクラスタＩＤ５０５を付与する機能である。クラスタモジュールＡ４０２とクラスタモジュールＢ４０３は、種別が異なり、実行するクラスタリングのアルゴリズムが異なる。本実施形態ではクラスタモジュールをＡとＢの２つ記述しているが、実際はクラスタモジュールを１つ以上含む任意の構成がありうる。統括部４０１はこれらのクラスタモジュールの中から一つを選択して実行するためのプログラムである。どのクラスタモジュールを選択するかはシステムの使用者が入出力装置１７０などを通じてマルウェア解析システム２００に予め入力しておく。ここでは、クラスタモジュールＡ４０２は、ハッシュ値が同一である擬陽性ファイルを同一のクラスタに分類する。クラスタモジュールＢ４０３は、プロセスの親子関係に基づいてクラスタリングを行う。クラスタリングには、後述するプロセス実行ＤＢ１５３を用いる。
【００２３】
図５は、擬陽性ファイルＤＢ１５１の構成を示す図である。ＩＤ５０１は、各ファイルにユニークな値（識別子）である。ファイルパス５０２は、ファイルのルートディレクトリからのフルパスを示す文字列である。検出時刻５０３は、ＩＤ５０１によって特定されるファイルが擬陽性ファイルとして、ユーザＰＣ１００において検出された時刻である。生成時刻５０４は、ＩＤ５０１によって特定されるファイルがユーザＰＣ１００において生成された時刻である。クラスタＩＤ５０５はＩＤ５０１によって特定されるファイルが属するクラスタのＩＤ(識別子)である。同一のクラスタに属するファイルには同一のクラスタＩＤ５０５が付与されている。
【００２４】
図５の例では、ＩＤ５０１が１，２，３である擬陽性ファイルはクラスタＩＤ５０５が１であるクラスタに属し、ＩＤ５０１が４，５，６である擬陽性ファイルはクラスタＩＤ５０５が２であるクラスタに属し、ＩＤ５０１が７である擬陽性ファイルはクラスタＩＤ５０５が３であるクラスタに属し、ＩＤ５０１が８である擬陽性ファイルは、クラスタＩＤ５０５が４であるクラスタに属する。
【００２５】
ファイル種類５０６は、ファイルの派生元―派生先関係を示す情報である。ここで、派生元―派生先関係とは以下のように定義する。あるファイルが他のファイルから派生して生成されたものであると確認されたとき、生成されたあるファイルを派生先ファイルと呼ぶ。そうでない他のファイルを派生元ファイルと呼ぶ。ファイルと他のファイルから派生したあるファイルの関係は木構造で表現することができるが、木構造のルートにあるファイルを派生元ファイル、それ以外のファイルは、ノードにあってもリーフにあっても、派生先ファイルと呼ぶ。
【００２６】
図５の例では、ＩＤ５０１が１である擬陽性ファイルc:\a1.exeは派生元ファイルであり、ＩＤ５０２が２、３である擬陽性ファイルc:\a2.exe、c:\a3.exeは、c:\a1.exeから派生した派生先ファイルである。
【００２７】
ステータス５０７はＩＤ５０１によって特定されるファイルがマルウェアと判定されたかどうかを示すフラグである。ステータス５０７は、「マルウェア」「非マルウェア」「判定不能」「解析中」「送信待ち」「クラスタ未構築」などの状態を取りうる。
【００２８】
クラスタリングが未だ行われていない擬陽性ファイルでは、クラスタＩＤが０、ステータス５０７が「クラスタ未構築」となる。図５の例では、ＩＤ５０１が９である擬陽性ファイルはクラスタリングが行われておらず、ファイル種類５０６が「未定」、ステータス５０７が「クラスタ未構築」となっている。
【００２９】
図３に戻って、送信検体選択部１２３は、生成時刻５０４に基づいて、クラスタリングされた擬陽性ファイルを、派生元ファイルと派生先ファイルに分類する。検体送信部１２４は、ファイル種類５０６が派生先ファイルである擬陽性ファイルを、マルウェア解析システム２００に送信する。レポート受信部１２５は、マルウェア解析システム２００からマルウェア解析レポートを受信して、解析レポートＤＢ１５２に保存する。
【００３０】
図６は、解析レポートＤＢ１５２の構成を示す図である。レポートＩＤ６０１はマルウェア解析レポートにユニークな値(識別子)である。受付時刻６０２は、レポートＩＤ６０１によって特定されるレポートを受信した時刻である。コンテンツ６０３は、レポートＩＤ６０１によって特定されるレポートの中身を示す文字列データであり、その詳細については図８および図９を用いて説明する。ステータス６０４は、レポートＩＤ６０１によって特定されるレポートのステータスを示しており、「分析済み」「分析待ち」などの値を取りうる。
【００３１】
図８および図９は、解析レポートの一例であり、コンテンツ６０３に含まれる文字列データの例である。この例ではデータを見やすくするために適宜改行している。コンテンツ６０８に含まれるデータはＸＭＬ形式で記述されている。＜レポート＞タグはレポート全体を包含するタグである。＜レポート＞の中には、＜日時＞タグ、＜検体＞タグ、＜派生先ファイル＞タグを含む。
【００３２】
＜日時＞タグは検体が取得された日付と時刻を含んでいる。
＜検体＞タグは、解析を行ったファイルについての情報を記述するタグである。マルウェア解析システム２００に送信された派生元ファイルに関する解析結果は、＜検体タグ＞内に含まれる。＜検体＞タグは、その内部に＜ファイル＞タグと＜判定＞タグを含む。＜ファイル＞タグには、＜検体＞タグに含まれるファイルのパスとファイル名が含まれている。＜判定＞タグには、＜ファイル＞タグに記述されたファイルがマルウェアであったか否かを示す文字列が格納される。
【００３３】
＜派生先＞タグは、＜検体＞タグで示される検体のファイルから派生したファイルの情報が含まれている。派生先ファイルはその内部に＜ハッシュ値＞タグ、＜ファイル＞タグ、＜判定＞タグを含む。＜ハッシュ値＞タグと＜ファイル＞タグはどちらかの一方のみを＜派生先ファイル＞タグの中に含むこともありうる。
【００３４】
図８に示す解析レポートは、2010年7月7日10:00:55に、検体として送信された派生元ファイルc:\a1.exeはマルウェアであり、この検体の派生先ファイルでc:\a1.exeと同一のハッシュ値を持つあるファイルはマルウェアであるという解析結果を出力したことを示している。
【００３５】
また、図９に示す解析レポートは、2010年7月7日10:00:55に、検体c:\b1.exeは非マルウェアであり、この検体から派生されたc:\b2.exeも非マルウェアであるという解析結果を出力したことを示している。
【００３６】
図３に戻って、レポート分析部１２６は、受信した解析レポートを分析し、あるクラスタに含まれる派生元ファイルおよび派生先ファイルを、「マルウェア」「非マルウェア」「判定不能」に分類する。先ず、＜検体＞タグにより、マルウェア解析システム２００に送信した派生元ファイルを特定する。次に、＜派生先ファイル＞タグ内の情報を基に、派生元ファイルが含まれるクラスタ内の派生先ファイルのステータス５０７を、「マルウェア」「非マルウェア」「判定不能」の何れかに設定する。
【００３７】
クラスタ内の派生先ファイルのうち、「マルウェア」「非マルウェア」の何れにも分類されなかったものについては、ファイル種類５０６を「未定」、ステータス５０７を「判定不能」に設定する。最後に、クラスタ構築部１２２を呼び出し、これらの擬陽性ファイルを対象に再度クラスタリングを行い、派生先ファイルをマルウェア解析システムに送信する。
【００３８】
図７は、プロセス実行ＤＢ１５３の構成を示す図である。プロセス７０１は、プロセスを実行しているファイルのパスを示す文字列である。親プロセス７０２は、プロセス７０１を生成したプロセスを実行しているファイルのパスを示す文字列である。実行日時７０３はプロセス７０１が実行された日付と時刻を示す文字列である。例えば、図７の最初のレコードでは、c:\downloader.exeを実行しているプロセスが、2010/07/07 10:50:00に、c:\b1.exeを実行するプロセスを起動したことを示している。
【００３９】
図１０は、擬陽性ファイル検出部１２１の動作を示すフローチャートである。擬陽性ファイル検出部１２１は、ユーザＰＣ１００に含まれるファイルでこれまでに選択していなかったものの一つを選択し、そのファイルを検査する（Ｓ１００１）。検査したファイルが擬陽性ファイルかどうかを判定し（Ｓ１００２）、擬陽性ファイルであればＳ１００３に、そうでなければＳ１００４に分岐する。
【００４０】
ファイルパス５０２にＳ１００１で検査したファイルのファイルパスを、検出時刻５０３に現在時刻を、生成時刻５０４にファイルの生成時刻を、クラスタＩＤ５０５に０を、ファイル種類５０６に「未定」を、ステータス５０７に「クラスタ未構築」をセットしたレコードを擬陽性ファイルＤＢ１５１に保存し（Ｓ１００３）、Ｓ１００５に移る。
【００４１】
ユーザＰＣ１００に含まれるすべてのファイルの検査を終了したかを判定し（Ｓ１００４）、終了していなかったらＳ１００１に、していたらＳ１００５に移る。
【００４２】
擬陽性ファイル検出部１２１は、クラスタ構築部１２２を呼び出す（Ｓ１００５）。
【００４３】
図１１は、クラスタ構築部１２２の統括部４０１の動作を示すフローチャートである。統括部４０１は、擬陽性ファイルＤＢ１５１より、ファイル種類５０６が「未定」であるレコードを全て取得する（Ｓ１１０１）。クラスタリングに用いるモジュールを選択する（Ｓ１１０２）。選択したクラスタモジュールに、取得した擬陽性ファイルのレコードを与え、実行する（Ｓ１１０３）。統括部４０１は、送信検体選択部１２３を呼び出す（Ｓ１１０４）。
【００４４】
図１２は、クラスタモジュールＡ４０２の動作を示すフローチャートである。クラスタモジュールＡ４０２は、擬陽性ファイルＤＢ１５１のクラスタＩＤ５０５の最大値＋１を、変数Ｎｅｗｉｄに格納する（Ｓ１２０１）。
【００４５】
入力として与えられた擬陽性ファイルレコードの集合で、これまでに選択していなかったものの一つを選択し（Ｓ１２０２）、選択された擬陽性ファイルレコードのファイルパス５０２が示すファイルのハッシュ値を演算する（Ｓ１２０３）。
【００４６】
入力として与えられた擬陽性ファイルレコードの集合の中に、演算したハッシュ値と同値のハッシュ値を持つファイルを、ファイルパス５０２で示すものが存在し、且つそのクラスタＩＤ５０５が０以外であるものが存在するかを判定し（Ｓ１２０４）、存在する場合はＳ１２０５に、存在しない場合はＳ１２０６に分岐する。
【００４７】
選択された擬陽性ファイルレコードのクラスタＩＤ５０５に、ハッシュ値が一致したレコードのクラスタＩＤ５０５を設定する（Ｓ１２０５）。
【００４８】
選択された擬陽性ファイルレコードのクラスタＩＤ５０５に、変数Ｎｅｗｉｄの値を設定する（Ｓ１２０６）。Ｎｅｗｉｄの値を＋１する（Ｓ１２０７）。
【００４９】
クラスタモジュールＡ４０２は、全ての擬陽性ファイルレコードを選択したかを判定し（Ｓ１２０８）、選択していないものがない場合は処理を終了し、選択していないものがある場合はＳ１２０２に分岐する。
【００５０】
図５、図８の例では、c:\a1.exe、c:\a2.exe、c:\a3.exeは、ハッシュ値が同一であるため、クラスタＩＤ５０６が１であるクラスタを構築する。
【００５１】
図１３はクラスタモジュールＢ４０３の動作を示すフローチャートである。クラスタモジュールＢ４０３は、擬陽性ファイルＤＢ１５１のクラスタＩＤ５０５の最大値＋１を、変数Ｎｅｗｉｄに格納する（Ｓ１３０１）。
【００５２】
プロセス実行ＤＢ１５３を参照し、未選択の擬陽性ファイルレコードのうち、ファイルパス５０２が示す擬陽性ファイルの実行日時７０３が最も古いものを選択する（Ｓ１３０２）。
【００５３】
選択された擬陽性ファイルレコードのファイルパス５０２が示すファイルをプロセス７０１とするプロセス実行レコードが存在し、且つ擬陽性ファイルレコードの集合のうち、ファイルパス５０２が当該プロセス実行レコードの親プロセス７０２を示すものが存在するかを判定し（Ｓ１３０３）、存在する場合はＳ１３０４に、存在しない場合はＳ１３０５に分岐する。
【００５４】
選択された擬陽性ファイルレコードのクラスタＩＤ５０５に、存在した親プロセス７０２を示す擬陽性ファイルレコードのクラスタＩＤ５０５を設定する（Ｓ１３０４）。
【００５５】
選択されたレコードのクラスタＩＤに、変数Ｎｅｗｉｄを設定する（Ｓ１３０５）。変数ＮｅｗＩｄの値を＋１する（Ｓ１３０６）。
【００５６】
クラスタモジュールＢ４０３は、全ての擬陽性ファイルレコードを選択したかを判定し（Ｓ１３０７）、選択していないものがない場合は処理を終了し、選択していないものがある場合はＳ１３０２に分岐する。
【００５７】
図５、図７、図９の例では、c:\b1.exeを実行するプロセスが、c:\b2.exe、c:\b3.exeを実行している。よって、これら３つのファイルは、クラスタＩＤが２のクラスタを構築する。
【００５８】
図１４は、送信検体選択部１２３の動作を示すフローチャートである。送信検体選択部１２３は、擬陽性ファイルＤＢ１５１から、ファイル種類５０６が「未定」である擬陽性ファイルレコードの集合を取得する（Ｓ１４０１）。取得したレコード集合を、クラスタＩＤ５０５ごとに、グループ化する（Ｓ１４０２）。
【００５９】
未だ選択されていないグループのうち１つを選択し（Ｓ１４０３）、選択されたグループ内の擬陽性ファイルレコードで、生成時刻５０４が最も古いもののファイル種類５０６を「派生元ファイル」に、それ以外のレコードのファイル種類５０６を「派生先ファイル」に設定する（Ｓ１４０４）。グループ内の全てのレコードのステータス５０７を「送信待ち」に設定する（Ｓ１４０５）。
【００６０】
未だ選択していないグループが存在するかを判定し（Ｓ１４０６）、存在する場合はＳ１４０３に分岐し、存在しない場合はＳ１４０７に分岐する。処理Ｓ１４０７では、検体送信部１２４を呼び出し、処理を終了する（Ｓ１４０７）。
【００６１】
図５の例では、クラスタＩＤが１であるクラスタではc:\a1.exeが、クラスタＩＤが２であるクラスタではc:\b1.exeが派生元ファイルとなり、その他のファイルは派生先ファイルとなる。
【００６２】
図１５は、検体送信部１２４の動作を示すフローチャートである。検体送信部１２４は、擬陽性ファイルＤＢ１５１から、ステータス５０７が「送信待ち」である擬陽性ファイルレコードの集合を取得する（Ｓ１５０１）。
【００６３】
まだ選択されていないレコードののうちの１つを選択し（Ｓ１５０２）、選択されたレコードの種類５０６が「派生元ファイル」であるかを判定し（Ｓ１５０３）、「派生元ファイル」である場合はＳ１５０４に分岐し、「派生先ファイル」である場合はＳ１５０５に分岐する。
【００６４】
レコードのファイルパス５０２が示す擬陽性ファイルを、マルウェア解析システム２００に送信する（Ｓ１５０４）。
【００６５】
レコードのステータス５０７を「解析中」に設定し（Ｓ１５０５）、未だ選択していないレコードが存在するかを判定し（Ｓ１５０６）、存在する場合はＳ１５０２に分岐し、存在しない場合は処理を終了する。
【００６６】
図１６は、レポート受信部１２５の動作を示すフローチャートである。レポート受信部１２５は、マルウェア解析システム２００より、マルウェア解析レポートを受信する（Ｓ１６０１）。現在時刻を受信時刻６０２に、マルウェア解析レポート本文をコンテンツ６０３に、「分析待ち」をステータス６０４にセットした、解析レポートレコードを、解析レポートＤＢ１５２に保存する（Ｓ１６０２）。レポート受信部１２５は、レポート分析部を呼び出して、処理を終了する（Ｓ１６０３）。
【００６７】
図１７は、レポート分析部１２６の動作を示すフローチャートである。レポート分析部１２６は、解析レポートＤＢ１５２からステータス６０４が「分析待ち」である解析レポートレコードの集合を取得する（Ｓ１７０１）。
【００６８】
未だ選択されていない解析レポートレコードの中から１つを選択し（Ｓ１７０２）、選択された解析レポートレコードのコンテンツ６０３から、＜検体＞要素を取得する（Ｓ１７０３）。擬陽性ファイルＤＢ１５１から、ファイルパス５０２が＜検体＞要素に対応するファイルを示すような、擬陽性ファイルレコードを取得する（Ｓ１７０４）。Ｓ１７０４で取得した擬陽性ファイルレコードのクラスタＩＤ５０５を変数Ｔａｒｇｅｔに設定する（Ｓ１７０５）。擬陽性ファイルＤＢ１５１から、クラスタＩＤ５０５が変数Ｔａｒｇｅｔと等しい擬陽性ファイルレコードの集合を取得する（Ｓ１７０６）。
【００６９】
取得した擬陽性ファイルレコードの集合のうち、未選択のものの１つを選択し（Ｓ１７０７）、解析レポートレコードと選択された擬陽性ファイルレコードを入力として、擬陽性ファイルレコード判定処理（図１８）を実行する（Ｓ１７０８）。
【００７０】
全ての擬陽性ファイルレコードを選択したかを判定し（Ｓ１７０９）、未選択のレコードがある場合はＳ１７０７に分岐し、全てのレコードを選択した場合はＳ１７１０に分岐する。全ての解析レポートレコードを選択したかを判定し（Ｓ１７１０）、未選択のレコードがある場合はＳ１７０２に分岐し、全てのレコードを選択した場合はＳ１７１１に分岐する。
【００７１】
、Ｓ１７０１で取得した全解析レポートレコードのステータス５０７を「分析完了」に設定する（Ｓ１７１１）。レポート分析部１２６は、クラスタ構築部１２２を呼び出し、処理を終了する（Ｓ１７１２）。クラスタ構築部１２２は、擬陽性ファイルレコード判定処理で、「マルウェア」、「非マルウェア」の何れでもないと判定された擬陽性ファイルをクラスタリングし、再構築されたクラスタの派生元ファイルを、マルウェア解析システム２００に送信する。
【００７２】
図１８は、レポート分析部１２６の処理の一部（Ｓ１７０８）である、擬陽性ファイルレコード判定処理を示すフローチャートである。擬陽性ファイルレコード判定処理は、入力として与えられた擬陽性ファイルレコードのファイルパス５０２が示すファイルが、入力として与えられた解析レポートレコードのコンテンツ６０３において、「マルウェア」と判定されているかどうかを判定し（Ｓ１８０１）、「マルウェア」と判定されている場合はＳ１８０２に分岐し、「マルウェア」と判定されていない場合はＳ１８０４に分岐する。
【００７３】
擬陽性ファイルレコードのステータス５０７を「マルウェア」に設定し（Ｓ１８０２）、マルウェアと判定されたファイルを、ユーザＰＣ１００から駆除する（Ｓ１８０３）。
【００７４】
擬陽性ファイルレコードのファイルパス５０２が示すファイルが、解析レポートレコードのコンテンツ６０３において、「非マルウェア」と判定されているかどうかを判定し（Ｓ１８０４）、「非マルウェア」と判定されている場合はＳ１８０５に分岐し、「非マルウェア」と判定されていない場合はＳ１８０６に分岐する。
【００７５】
擬陽性ファイルレコードのステータス５０７を「非マルウェア」に設定し（Ｓ１８０５）、処理を終了する。擬陽性ファイルレコードのステータス５０７を「判定不能」に、ファイル種類を「未定」に設定し（処理Ｓ１８０６）、処理を終了する。
【００７６】
図８の例では、派生元ファイルc:\a1.exe、派生先ファイルc:\a2.exe,c:\a3.exeは共に「マルウェア」と判定され、駆除される。図9の例では、派生元ファイルc:\b1.exeと派生先ファイルc:\b2.exeは「非マルウェア」と判断される。一方で、c:\b1.exeと同一のクラスタ（クラスタＩＤ５０５＝２）である派生先c:\b3.exeは、解析レポート内で「マルウェア」とも「非マルウェア」とも判定されず、ファイル種類５０６が「未定」ステータス５０７が「判定不能」となる。
【００７７】
本実施形態によれば、擬陽性ファイルを派生元ファイルと派生先ファイルに分類し、派生元ファイルのみをマルウェア解析システムに送信することで、マルウェア解析システムの演算負荷、及びネットワーク負荷を軽減する。
【００７８】
本実施形態の一部を変形して、次のように実施してもよい。
【００７９】
第一に、マルウェア解析システム２００は、ユーザＰＣ１００に含まれてもよい。マルウェア解析システム２００は、ユーザＰＣ内で動作する１プログラムとなる。この変形例では、ユーザＰＣ１００、マルウェア解析システム２００間で通信が行われないため、通信負荷が無くなるという利点がある。
【００８０】
第二に、クラスタモジュールＡ４０２、クラスタモジュールＢ４０３は、ユーザＰＣ１００内に含まれず、他の端末上に存在してもよい。ユーザＰＣ１００から、擬陽性ファイル及びクラスタリングに必要な情報が、クラスタモジュールＡ４０２、クラスタモジュール４０３を含む端末に送信され、クラスタリングの結果が受信される。この変形例では、ユーザＰＣ１００から、様々な端末上にあるクラスタモジュールを利用することが可能になる。
【符号の説明】
【００８１】
１００…ユーザＰＣ、１１０…ユーザＰＣ本体、１２０…ＣＰＵ、１２１…擬陽性ファイル検出部、１２２…クラスタ構築部、１２３…送信検体選択部、１２４…検体送信部、１２５…レポート受信部、１２６…レポート分析部、１３０…メモリ、１３１…マルウェア検出プログラム、１４０…ＩＦ、１５０…外部記憶装置、１５１…擬陽性ファイルＤＢ、１５２…解析レポートＤＢ、１５３…プロセス実行ＤＢ、１６０…バス、１７０…入出力装置、２００…マルウェア解析システム、３００…ネットワーク、４０１…統括部、４０２…クラスタモジュールＡ、４０３…クラスタモジュールＢ。
【図１】
2012083849.tif 000003
【図２】
2012083849.tif 000004
【図３】
2012083849.tif 000005
【図４】
2012083849.tif 000006
【図５】
2012083849.tif 000007
【図６】
2012083849.tif 000008
【図７】
2012083849.tif 000009
【図８】
2012083849.tif 000010
【図９】
2012083849.tif 000011
【図１０】
2012083849.tif 000012
【図１１】
2012083849.tif 000013
【図１２】
2012083849.tif 000014
【図１３】
2012083849.tif 000015
【図１４】
2012083849.tif 000016
【図１５】
2012083849.tif 000017
【図１６】
2012083849.tif 000018
【図１７】
2012083849.tif 000019
【図１８】
2012083849.tif 000020