(57)【要約】【課題】コンピュータウィルス検出の確実性を向上させたコンピュータウィルス検出装置、コンピュータウィルス検出方法及びコンピュータウィルス検出プログラムを提供する。【解決手段】サーバ１００は、ＤＢ２００内の既知コンピュータウィルスＡＰＩハッシュ値シーケンスと、受信した電子メールに添付されているＰＥ形式の実行ファイルから得られる検出対象ＡＰＩハッシュ値シーケンスとの相似度が閾値以上である場合に、ＰＥ形式の実行ファイルを亜種のコンピュータウィルスであると判定する。また、サーバ１００は、亜種のコンピュータウィルスであると判定したＰＥ形式の実行ファイルに対応する検出対象ＡＰＩハッシュ値シーケンスをＤＢ２００に記憶させ、これをその後のコンピュータウィルス検出において用いる。【選択図】図１
2010009269.tif 000002
【特許請求の範囲】
【請求項１】
既知のコンピュータウィルスの実行に際して処理される命令の配列を表す第１の特徴情報配列を取得する第１の特徴情報配列取得手段と、
検出対象の実行ファイルの実行に際して処理される命令の配列を表す第２の特徴情報配列を取得する第２の特徴情報配列取得手段と、
前記第１の特徴情報配列取得手段により取得された前記第１の特徴情報配列と、前記第２の特徴情報配列取得手段により取得された前記第２の特徴情報配列との相似度を導出する相似度導出手段と、
前記相似度導出手段により導出された前記相似度が閾値以上である場合に、前記検出対象の実行ファイルをコンピュータウィルスであると判定する判定手段とを有するコンピュータウィルス検出装置。
【請求項２】
前記相似度導出手段は、前記第１の特徴情報配列と、前記第２の特徴情報配列とのグローバルアライメントを生成し、その生成したグローバルアライメントに基づいて、Ｃｏｓｉｎｅ相似関数を利用した第１の相似度と、拡張Ｊａｃｃａｒｄ相似関数を利用した第２の相似度とを算出し、更に、前記第１及び第２の相似度の平均値を最終的な相似度として算出する請求項１に記載のコンピュータウィルス検出装置。
【請求項３】
前記第１の特徴情報配列取得手段は、過去に前記判定手段によりコンピュータウィルスであると判定された前記検出対象の実行ファイルの実行に際して処理される命令の配列を表す特徴情報配列を前記第１の特徴情報配列として取得する請求項１又は２に記載のコンピュータウィルス検出装置。
【請求項４】
前記第１の特徴情報配列取得手段は、
前記既知のコンピュータウィルスのｉｄａｔａセクションにおけるｉｍｐｏｒｔ  ｔａｂｌｅの任意の行に記憶されている、ＤＬＬに所属するＡＰＩ関数が記憶されているエントリーポイントを取得し、前記ｉｍｐｏｒｔ  ｔａｂｌｅの任意の行のアドレスと、前記エントリーポイントに記憶されているＡＰＩ関数の名称、及び、該ＡＰＩ関数が所属するＤＬＬの名称とを組み合わせたＡＰＩ情報とを対応付けたＡＰＩ複合情報を生成し、更に、前記ｉｍｐｏｒｔ  ｔａｂｌｅにおける全ての行に対応した前記ＡＰＩ複合情報の集合であるＡＰＩ複合情報テーブルを生成し、
前記既知のコンピュータウィルスのコードセクションにおける、ＡＰＩ関数を呼び出すための任意のＣＡＬＬ命令が呼び出す命令における引数のアドレスを抽出し、更に前記コードセクション内に存在する全てのＣＡＬＬ命令に対応した前記引数のアドレスの集合であるテーブルを生成し、
前記テーブル内のアドレスと前記ＡＰＩ複合情報テーブル内のアドレスとが一致する場合に、前記ＡＰＩ複合情報テーブルにおいて前記引数のアドレスと一致する前記ＡＰＩ複合情報中の前記ＡＰＩ情報の集合を、前記第１の特徴情報配列として取得する請求項１乃至３のいずれかに記載のコンピュータウィルス検出装置。
【請求項５】
前記第２の特徴情報配列取得手段は、
前記検出対象の実行ファイルのｉｄａｔａセクションにおけるｉｍｐｏｒｔ  ｔａｂｌｅの任意の行に記憶されている、ＤＬＬに所属するＡＰＩ関数が記憶されているエントリーポイントを取得し、前記ｉｍｐｏｒｔ  ｔａｂｌｅの任意の行のアドレスと、前記エントリーポイントに記憶されているＡＰＩ関数の名称、及び、該ＡＰＩ関数が所属するＤＬＬの名称を組み合わせたＡＰＩ情報とを対応付けたＡＰＩ複合情報を生成し、更に前記ｉｍｐｏｒｔ  ｔａｂｌｅにおける全ての行に対応した前記ＡＰＩ複合情報の集合であるＡＰＩ複合情報テーブルを生成し、
前記検出対象の実行ファイルのコードセクションにおける、ＡＰＩ関数を呼び出すための任意のＣＡＬＬ命令が呼び出す命令における引数のアドレスを抽出し、更に前記コードセクション内に存在する全てのＣＡＬＬ命令に対応した前記引数のアドレスの集合であるテーブルを生成し、
前記テーブル内のアドレスと前記ＡＰＩ複合情報テーブル内のアドレスとが一致する場合に、前記ＡＰＩ複合情報テーブルにおいて前記引数のアドレスと一致する前記ＡＰＩ複合情報中の前記ＡＰＩ情報の集合を、前記第２の特徴情報配列として取得する請求項１乃至４のいずれかに記載のコンピュータウィルス検出装置。
【請求項６】
前記第１の特徴情報配列取得手段は、
既知のコンピュータウィルスのｉｄａｔａセクションにおけるｉｍｐｏｒｔ  ｔａｂｌｅの任意の行に記憶されている、ＤＬＬに所属するＡＰＩ関数が記憶されているエントリーポイントを取得し、前記ｉｍｐｏｒｔ  ｔａｂｌｅの任意の行のアドレスと、前記エントリーポイントに記憶されているＡＰＩ関数の名称、及び、該ＡＰＩ関数が所属するＤＬＬの名称を組み合わせたＡＰＩ情報と、該ＡＰＩ情報のハッシュ値とを対応付けたテーブルの行を生成し、更に前記ｉｍｐｏｒｔ  ｔａｂｌｅの全ての行に対応した前記テーブルの行の集合であるテーブルを生成し、該テーブル内のハッシュ値の集合を、前記第１の特徴情報配列として取得する請求項１乃至５のいずれかに記載のコンピュータウィルス検出装置。
【請求項７】
前記第２の特徴情報配列取得手段は、
前記検出対象の実行ファイルのｉｄａｔａセクションにおけるｉｍｐｏｒｔ  ｔａｂｌｅの任意の行に記憶されている、ＤＬＬに所属するＡＰＩ関数が記憶されているエントリーポイントを取得し、前記ｉｍｐｏｒｔ  ｔａｂｌｅの任意の行のアドレスと、前記エントリーポイントに記憶されているＡＰＩ関数の名称、及び、該ＡＰＩ関数が所属するＤＬＬの名称を組み合わせたＡＰＩ情報と、該ＡＰＩ情報のハッシュ値とを対応付けたテーブルの行を生成し、更に前記ｉｍｐｏｒｔ  ｔａｂｌｅの全ての行に対応した前記テーブルの行の集合であるテーブルを生成し、該テーブル内のハッシュ値の集合を、前記第２の特徴情報配列として生成する請求項１乃至６のいずれかに記載のコンピュータウィルス検出装置。
【請求項８】
コンピュータウィルス検出装置におけるコンピュータウィルス検出方法であって、
前記コンピュータウィルス検出装置は、
既知のコンピュータウィルスの実行に際して処理される命令の配列を表す第１の特徴情報配列を取得する第１の特徴情報配列取得ステップと、
検出対象の実行ファイルの実行に際して処理される命令の配列を表す第２の特徴情報配列を取得する第２の特徴情報配列取得ステップと、
前記第１の特徴情報配列取得ステップにより取得された前記第１の特徴情報配列と、前記第２の特徴情報配列取得ステップにより取得された前記第２の特徴情報配列との相似度を導出する相似度導出ステップと、
前記相似度導出ステップにより導出された前記相似度が閾値以上である場合に、前記検出対象の実行ファイルをコンピュータウィルスであると判定する判定ステップとを有するコンピュータウィルス検出方法。
【請求項９】
前記相似度導出ステップは、前記第１の特徴情報配列と、前記第２の特徴情報配列とのグローバルアライメントを生成し、その生成したグローバルアライメントに基づいて、Ｃｏｓｉｎｅ相似関数を利用した第１の相似度と、拡張Ｊａｃｃａｒｄ相似関数を利用した第２の相似度とを算出し、更に、前記第１及び第２の相似度の平均値を最終的な相似度として算出する請求項８に記載のコンピュータウィルス検出方法。
【請求項１０】
前記第１の特徴情報配列取得ステップは、過去に前記判定手段によりコンピュータウィルスであると判定された前記検出対象の実行ファイルの実行に際して処理される命令の配列を表す特徴情報配列を前記第１の特徴情報配列として取得する請求項８又は９に記載のコンピュータウィルス検出方法。
【請求項１１】
既知のコンピュータウィルスの実行に際して処理される命令の配列を表す第１の特徴情報配列を取得する第１の特徴情報配列取得ステップと、
検出対象の実行ファイルの実行に際して処理される命令の配列を表す第２の特徴情報配列を取得する第２の特徴情報配列取得ステップと、
前記第１の特徴情報配列取得ステップにより取得された前記第１の特徴情報配列と、前記第２の特徴情報配列取得ステップにより取得された前記第２の特徴情報配列との相似度を導出する相似度導出ステップと、
前記相似度導出ステップにより導出された前記相似度が閾値以上である場合に、前記検出対象の実行ファイルをコンピュータウィルスであると判定する判定ステップとをコンピュータに実行させるコンピュータウィルス検出プログラム。
【請求項１２】
前記相似度導出ステップは、前記第１の特徴情報配列と、前記第２の特徴情報配列とのグローバルアライメントを生成し、その生成したグローバルアライメントに基づいて、Ｃｏｓｉｎｅ相似関数を利用した第１の相似度と、拡張Ｊａｃｃａｒｄ相似関数を利用した第２の相似度とを算出し、更に、前記第１及び第２の相似度の平均値を最終的な相似度として算出する請求項１１に記載のコンピュータウィルス検出プログラム。
【請求項１３】
前記第１の特徴情報配列取得ステップは、過去に前記判定手段によりコンピュータウィルスであると判定された前記検出対象の実行ファイルの実行に際して処理される命令の配列を表す特徴情報配列を前記第１の特徴情報配列として取得する請求項１１又は１２に記載のコンピュータウィルス検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータウィルスを検出するコンピュータウィルス検出装置、コンピュータウィルス検出方法、及び、コンピュータにて実行されるコンピュータウィルス検出プログラムに関する。
【背景技術】
【０００２】
近年のインターネットをはじめとするネットワークの急速な発展に伴い、コンピュータウィルスによる被害は年々深刻なものとなってきている。このコンピュータウィルスによる被害は、時間経過に伴い不特定多数に対し加速度的に被害を与える点や、本来は被害者であるユーザが気づかないうちに加害者となる点などで、深刻の度合いが大きい。コンピュータウィルスは、経済産業省の定義によれば、第三者のプログラムやデータベースに対して意図的に何らかの被害を及ぼすように作られたプログラムであって、自己伝染機能、潜伏機能及び発病機能の少なくとも１つの機能を有するものであるとされている。従来、このようなコンピュータウィルスを検出する様々な装置が提案されている（例えば、特許文献１参照）。
【０００３】
前述したような従来のコンピュータウィルス検出装置は、一般に、シグネチャと称されるコンピュータウィルスに対応する特徴情報配列を用いて、検出対象の実行ファイルに対応する特徴情報配列とのパターンマッチングを行い、実行ファイル内にシグネチャと同一の情報配列が含まれる場合には、その実行ファイルをコンピュータウィルスであると判定する。
【特許文献１】特開２００４−３８２７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
新しく発生したコンピュータウィルスは、一般に過去のコンピュータウィルスに対して相似性を有する亜種であることが多い。一説によれば、このような亜種のコンピュータウィルスは、コンピュータウィルス全体の９０％以上であると言われている。上述した従来のコンピュータウィルス検出装置において、このような亜種のコンピュータウィルスを検出するためには、当該亜種のコンピュータウィルスに対応するシグネチャを用意しておかなければならない。
【０００５】
しかしながら、亜種のコンピュータウィルスに対応するシグネチャを用意するためには、コンピュータウィルス検出ソフトのメーカー等による亜種のコンピュータウィルスの解析、シグネチャの生成といった作業工程が必要であり、ある程度の時間を要する。このようにシグネチャの生成に時間がかかることは、近年の電子メールを媒介として拡散するコンピュータウィルスのように、拡散速度が速いコンピュータウィルスの検出には十分ではなく、被害の広がりを防止することができない恐れがある。
【０００６】
本発明は従来の問題を解決するためになされたもので、コンピュータウィルス検出の確実性を向上させたコンピュータウィルス検出装置、コンピュータウィルス検出方法及びコンピュータウィルス検出プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明に係るコンピュータウィルス検出装置は、既知のコンピュータウィルスの実行に際して処理される命令の配列を表す第１の特徴情報配列を取得する第１の特徴情報配列取得手段と、検出対象の実行ファイルの実行に際して処理される命令の配列を表す第２の特徴情報配列を取得する第２の特徴情報配列取得手段と、前記第１の特徴情報配列取得手段により取得された前記第１の特徴情報配列と、前記第２の特徴情報配列取得手段により取得された前記第２の特徴情報配列との相似度を導出する相似度導出手段と、前記相似度導出手段により導出された前記相似度が閾値以上である場合に、前記検出対象の実行ファイルをコンピュータウィルスであると判定する判定手段とを有する。
【０００８】
この構成によれば、既知のコンピュータウィルスの実行に際して処理される命令の配列を表す第１の特徴情報配列と、検出対象の実行ファイルの実行に際して処理される命令の配列を表す第２の特徴情報配列との相似度が閾値以上である場合には、検出対象の実行ファイルが、既知のコンピュータウィルスに対して相似性を有する亜種のコンピュータウィルスであると判定することにより、亜種のコンピュータウィルスに対応する特徴情報配列が用意されていない場合であっても、その亜種のコンピュータウィルスの検出が可能となる。
【０００９】
また、本発明に係るコンピュータウィルス検出装置は、前記相似度導出手段が、前記第１の特徴情報配列と、前記第２の特徴情報配列とのグローバルアライメントを生成し、その生成したグローバルアライメントに基づいて、Ｃｏｓｉｎｅ相似関数を利用した第１の相似度と、拡張Ｊａｃｃａｒｄ相似関数を利用した第２の相似度とを算出し、更に、前記第１及び第２の相似度の平均値を最終的な相似度として算出する。
【００１０】
このようにして算出された相似度を用いて、亜種のコンピュータウィルスの検出を行うことで、誤検出の少ない、すなわち、確実性の高い検出が可能である。
【００１１】
また、本発明に係るコンピュータウィルス検出装置は、前記第１の特徴情報配列取得手段が、過去に前記判定手段によりコンピュータウィルスであると判定された前記検出対象の実行ファイルの実行に際して処理される命令の配列を表す特徴情報配列を前記第１の特徴情報配列として取得する。
【００１２】
このように、過去にコンピュータウィルスであると判定された実行ファイルの実行に際して処理される命令の配列を表す特徴情報配列を第１の特徴情報配列として用い、当該第１の特徴情報配列と、新たな検出対象の実行ファイルに対応する第２の特徴情報配列との相似度が閾値以上である場合に、当該新たな検出対象の実行ファイルが、既知のコンピュータウィルスに対して相似性を有する亜種のコンピュータウィルスであると判定することにより、更に別の亜種のコンピュータウィルスについても検出が可能となる。
【００１３】
また、本発明に係るコンピュータウィルス検出装置は、前記第１の特徴情報配列取得手段が、前記既知のコンピュータウィルスのｉｄａｔａセクションにおけるｉｍｐｏｒｔ  ｔａｂｌｅの任意の行に記憶されている、ＤＬＬに所属するＡＰＩ関数が記憶されているエントリーポイントを取得し、前記ｉｍｐｏｒｔ  ｔａｂｌｅの任意の行のアドレスと、前記エントリーポイントに記憶されているＡＰＩ関数の名称、及び、該ＡＰＩ関数が所属するＤＬＬの名称とを組み合わせたＡＰＩ情報とを対応付けたＡＰＩ複合情報を生成し、更に、前記ｉｍｐｏｒｔ  ｔａｂｌｅにおける全ての行に対応した前記ＡＰＩ複合情報の集合であるＡＰＩ複合情報テーブルを生成し、前記既知のコンピュータウィルスのコードセクションにおける、ＡＰＩ関数を呼び出すための任意のＣＡＬＬ命令が呼び出す命令における引数のアドレスを抽出し、更に前記コードセクション内に存在する全てのＣＡＬＬ命令に対応した前記引数のアドレスの集合であるテーブルを生成し、前記テーブル内のアドレスと前記ＡＰＩ複合情報テーブル内のアドレスとが一致する場合に、前記ＡＰＩ複合情報テーブルにおいて前記引数のアドレスと一致する前記ＡＰＩ複合情報中の前記ＡＰＩ情報の集合を、前記第１の特徴情報配列として取得する。
【００１４】
また、本発明に係るコンピュータウィルス検出装置は、前記第２の特徴情報配列取得手段が、前記検出対象の実行ファイルのｉｄａｔａセクションにおけるｉｍｐｏｒｔ  ｔａｂｌｅの任意の行に記憶されている、ＤＬＬに所属するＡＰＩ関数が記憶されているエントリーポイントを取得し、前記ｉｍｐｏｒｔ  ｔａｂｌｅの任意の行のアドレスと、前記エントリーポイントに記憶されているＡＰＩ関数の名称、及び、該ＡＰＩ関数が所属するＤＬＬの名称を組み合わせたＡＰＩ情報とを対応付けたＡＰＩ複合情報を生成し、更に前記ｉｍｐｏｒｔ  ｔａｂｌｅにおける全ての行に対応した前記ＡＰＩ複合情報の集合であるＡＰＩ複合情報テーブルを生成し、前記検出対象の実行ファイルのコードセクションにおける、ＡＰＩ関数を呼び出すための任意のＣＡＬＬ命令が呼び出す命令における引数のアドレスを抽出し、更に前記コードセクション内に存在する全てのＣＡＬＬ命令に対応した前記引数のアドレスの集合であるテーブルを生成し、前記テーブル内のアドレスと前記ＡＰＩ複合情報テーブル内のアドレスとが一致する場合に、前記ＡＰＩ複合情報テーブルにおいて前記引数のアドレスと一致する前記ＡＰＩ複合情報中の前記ＡＰＩ情報の集合を、前記第２の特徴情報配列として取得する。
【００１５】
また、本発明に係るコンピュータウィルス検出装置は、前記第１の特徴情報配列取得手段が、既知のコンピュータウィルスのｉｄａｔａセクションにおけるｉｍｐｏｒｔ  ｔａｂｌｅの任意の行に記憶されている、ＤＬＬに所属するＡＰＩ関数が記憶されているエントリーポイントを取得し、前記ｉｍｐｏｒｔ  ｔａｂｌｅの任意の行のアドレスと、前記エントリーポイントに記憶されているＡＰＩ関数の名称、及び、該ＡＰＩ関数が所属するＤＬＬの名称を組み合わせたＡＰＩ情報と、該ＡＰＩ情報のハッシュ値とを対応付けたテーブルの行を生成し、更に前記ｉｍｐｏｒｔ  ｔａｂｌｅの全ての行に対応した前記テーブルの行の集合であるテーブルを生成し、該テーブル内のハッシュ値の集合を、前記第１の特徴情報配列として取得する。
【００１６】
また、本発明に係るコンピュータウィルス検出装置は、前記第２の特徴情報配列取得手段が、前記検出対象の実行ファイルのｉｄａｔａセクションにおけるｉｍｐｏｒｔ  ｔａｂｌｅの任意の行に記憶されている、ＤＬＬに所属するＡＰＩ関数が記憶されているエントリーポイントを取得し、前記ｉｍｐｏｒｔ  ｔａｂｌｅの任意の行のアドレスと、前記エントリーポイントに記憶されているＡＰＩ関数の名称、及び、該ＡＰＩ関数が所属するＤＬＬの名称を組み合わせたＡＰＩ情報と、該ＡＰＩ情報のハッシュ値とを対応付けたテーブルの行を生成し、更に前記ｉｍｐｏｒｔ  ｔａｂｌｅの全ての行に対応した前記テーブルの行の集合であるテーブルを生成し、該テーブル内のハッシュ値の集合を、前記第２の特徴情報配列として生成する。
【００１７】
本発明に係るコンピュータウィルス検出装置におけるコンピュータウィルス検出方法は、前記コンピュータウィルス検出装置が、既知のコンピュータウィルスの実行に際して処理される命令の配列を表す第１の特徴情報配列を取得する第１の特徴情報配列取得ステップと、検出対象の実行ファイルの実行に際して処理される命令の配列を表す第２の特徴情報配列を取得する第２の特徴情報配列取得ステップと、前記第１の特徴情報配列取得ステップにより取得された前記第１の特徴情報配列と、前記第２の特徴情報配列取得ステップにより取得された前記第２の特徴情報配列との相似度を導出する相似度導出ステップと、前記相似度導出ステップにより導出された前記相似度が閾値以上である場合に、前記検出対象の実行ファイルをコンピュータウィルスであると判定する判定ステップとを有する。
【００１８】
また、本発明に係るコンピュータウィルス検出方法は、前記相似度導出ステップが、前記第１の特徴情報配列と、前記第２の特徴情報配列とのグローバルアライメントを生成し、その生成したグローバルアライメントに基づいて、Ｃｏｓｉｎｅ相似関数を利用した第１の相似度と、拡張Ｊａｃｃａｒｄ相似関数を利用した第２の相似度とを算出し、更に、前記第１及び第２の相似度の平均値を最終的な相似度として算出する。
【００１９】
また、本発明に係るコンピュータウィルス検出方法は、前記第１の特徴情報配列取得ステップが、過去に前記判定手段によりコンピュータウィルスであると判定された前記検出対象の実行ファイルの実行に際して処理される命令の配列を表す特徴情報配列を前記第１の特徴情報配列として取得する。
【００２０】
本発明に係るコンピュータウィルス検出プログラムは、既知のコンピュータウィルスの実行に際して処理される命令の配列を表す第１の特徴情報配列を取得する第１の特徴情報配列取得ステップと、検出対象の実行ファイルの実行に際して処理される命令の配列を表す第２の特徴情報配列を取得する第２の特徴情報配列取得ステップと、前記第１の特徴情報配列取得ステップにより取得された前記第１の特徴情報配列と、前記第２の特徴情報配列取得ステップにより取得された前記第２の特徴情報配列との相似度を導出する相似度導出ステップと、前記相似度導出ステップにより導出された前記相似度が閾値以上である場合に、前記検出対象の実行ファイルをコンピュータウィルスであると判定する判定ステップとをコンピュータに実行させる。
【００２１】
また、本発明に係るコンピュータウィルス検出プログラムは、前記相似度導出ステップが、前記第１の特徴情報配列と、前記第２の特徴情報配列とのグローバルアライメントを生成し、その生成したグローバルアライメントに基づいて、Ｃｏｓｉｎｅ相似関数を利用した第１の相似度と、拡張Ｊａｃｃａｒｄ相似関数を利用した第２の相似度とを算出し、更に、前記第１及び第２の相似度の平均値を最終的な相似度として算出する。
【００２２】
また、本発明に係るコンピュータウィルス検出プログラムは、前記第１の特徴情報配列取得ステップが、過去に前記判定手段によりコンピュータウィルスであると判定された前記検出対象の実行ファイルの実行に際して処理される命令の配列を表す特徴情報配列を前記第１の特徴情報配列として取得する。
【発明の効果】
【００２３】
本発明によれば、亜種のコンピュータウィルスが新たに発生し、対応する特徴情報配列が生成されていない場合であっても、その亜種のコンピュータウィルスを検出することが可能であり、コンピュータウィルス検出の確実性が向上する。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態のコンピュータウィルス検出装置について、図面を用いて説明する。
【００２５】
図１は、本発明の実施の形態に係るコンピュータウィルス検出装置を適用したコンピュータシステムの構成を示す図である。図１に示すコンピュータシステムは、ゲートウェイやメールサーバ等として機能するものであり、ＬＡＮ（Local Area Network）４００とインターネット５００との間の通信を中継するとともに、コンピュータウィルスを検出するコンピュータウィルス検出装置としてのサーバ１００と、既知のコンピュータウィルスに対応する特徴情報配列であるシグネチャ等を記憶するデータベース（ＤＢ）２００と、ＬＡＮ４００に接続されるパーソナルコンピュータ（パソコン）３００−１乃至３００−ｋ（以下、これらパソコン３００−１乃至３００−ｋをまとめて「パソコン３００」と称する）と、インターネット５００に接続されるパソコン３１０−１乃至３１０−ｊ（以下、これらパソコン３１０−１乃至３１０−ｊをまとめて「パソコン３１０」と称する）とにより構成される。このコンピュータシステムは、オペレーティングシステムとしてマイクロソフトのＷｉｎｄｏｗｓ（登録商標）を実装して動作する。
【００２６】
図１に示すコンピュータシステムにおいて、パソコン３１０は、パソコン３００に向けて、ＰＥ（Portable Executable）形式の実行ファイルが添付された電子メールを送信する。サーバ１００は、この電子メールを受信する。
【００２７】
ＤＢ２００には、既知コンピュータウィルスのコードセクションから抽出されたＡＰＩ（Application Program Interface）情報の集合（既知コンピュータウィルスＡＰＩシーケンス）、又は、当該ＡＰＩ情報に対応するハッシュ値の集合（既知コンピュータウィルスＡＰＩハッシュ値シーケンス）が第１の特徴情報配列として記憶されている。サーバ１００は、ＤＢ２００から既知コンピュータウィルスＡＰＩシーケンスを読み出し、当該既知コンピュータウィルスＡＰＩシーケンスと、電子メールに添付された実行ファイルに対応する第２の特徴情報配列としてのＡＰＩ情報の集合（検出対象ＡＰＩシーケンス）との相似度を算出する。あるいは、サーバ１００は、ＤＢ２００から既知コンピュータウィルスＡＰＩハッシュ値シーケンスを読み出し、当該既知コンピュータウィルスＡＰＩハッシュ値シーケンスと、電子メールに添付された実行ファイルに対応する第２の特徴情報配列としてのＡＰＩ情報に対応するハッシュ値の集合（検出対象ＡＰＩハッシュ値シーケンス）との相似度を算出する。
【００２８】
サーバ１００は、算出した相似度が閾値以上である場合に、電子メールに添付された実行ファイルを既知コンピュータウィルスの亜種であると判定し、算出した相似度が閾値以下である場合に、電子メールに添付された実行ファイルを既知コンピュータウィルスの亜種でないと判定する。ＤＢ２００には、過去に発生した多くの既知コンピュータウィルスのＡＰＩシーケンス、又は、既知コンピュータウィルスＡＰＩハッシュ値シーケンスが第１の特徴情報配列として記憶されている。この場合に、サーバ１００は、上述した相似度算出処理をすべての既知コンピュータウィルスのＡＰＩシーケンス、又は、既知コンピュータウィルスのＡＰＩハッシュ値シーケンスに対して行う。サーバ１００は、算出した全ての相似度が閾値以下である場合に、電子メールに添付された実行ファイルをコンピュータウィルスでないと判定し、算出したいずれかの類似度が閾値以上である場合に、電子メールに添付された実行ファイルを対応した既知コンピュータウィルスの亜種であると判定する。また、サーバ１００は、閾値以上の相似度が複数存在する場合には、電子メールに添付された実行ファイルを複数の対応した既知コンピュータウィルスの亜種であると判定する。サーバ１００によるコンピュ−タウィルスの検出動作の詳細については後述する。
【００２９】
そして、サーバ１００は、電子メールに添付された実行ファイルがコンピュータウィルスでない場合には、ＬＡＮ４００を介して、パソコン３００へ電子メールを送信する。一方、サーバ１００は、電子メールに添付された実行ファイルがコンピュータウィルスである場合には、当該電子メールを削除し、パソコン３００へは電子メールを送信しない。
【００３０】
以下、フローチャートを参照しつつ、サーバ１００によるコンピュータウィルスの検出動作を説明する。図２及び図３は、サーバ１００によるコンピュータウィルスの検出動作を示すフローチャートである。
【００３１】
サーバ１００は、パソコン３１０からＰＥ形式の実行ファイルが添付された電子メールを受信すると（Ｓ１０１）、当該ＰＥ形式の実行ファイルに基づいて、ＡＰＩ複合情報テーブルを生成する（Ｓ１０２）。
【００３２】
図４は、ＰＥ形式の実行ファイルと、ＤＬＬ（Dynamic Link Library）と、ＡＰＩ複合情報テーブルとの対応関係を示す図である。ＰＥ形式の実行ファイルは、ヘッダ（Ｈｅａｄ）、コードセクション（．ｔｅｘｔ）、及び、ｉｄａｔａセクション（．ｉｄａｔａ）を有する。ＤＬＬは、Ｗｉｎｄｏｗｓ（登録商標）環境において呼び出し可能な関数を含むファイルである。このＤＬＬに含まれている関数はＡＰＩ関数と称され、当該ＡＰＩ関数は特定の機能を提供する。全てのＰＥ形式の実行ファイルは、直接あるいは間接にＡＰＩ関数を利用する。ＰＥ形式の実行ファイルの基本的な動作は、ｉｄａｔａセクションの内容と当該ｉｄａｔａセクションが利用するＡＰＩ関数の並びで表現することができる。
【００３３】
サーバ１００は、ｉｄａｔａセクションにおけるｉｍｐｏｒｔ  ｔａｂｌｅの任意の行に記憶されているアドレスを抽出する。この抽出されるアドレスは、ＤＬＬに所属するＡＰＩ関数が記憶されている領域（エントリーポイント）のアドレスを示すものである。図４の例では、サーバ１００は、ｉｍｐｏｒｔ  ｔａｂｌｅのアドレス「０００４００４２」に記憶されているアドレス「７７８７９４２２」を抽出する。このアドレス「７７８７９４２２」は、ＵＳＥＲ３２．ＤＬＬに所属するＡＰＩ関数であるＧｅｔＭｅｓｓａｇｅが記憶されているエントリーポイントのアドレスを示す。
【００３４】
次に、サーバ１００は、ｉｍｐｏｒｔ  ｔａｂｌｅの各アドレスをキーとし、当該アドレスと、当該アドレスに記憶されているアドレスで特定されるエントリーポイントに記憶されているＡＰＩ関数の名称、及び、当該ＡＰＩ関数が所属するＤＬＬの名称の組み合わせであるＡＰＩ複合情報を生成し、ｉｍｐｏｒｔ  ｔａｂｌｅの全ての行に対応したＡＰＩ複合情報の集合であるＡＰＩ複合情報テーブルを生成する。図４の例では、ｉｍｐｏｒｔ  ｔａｂｌｅの領域のアドレス「０００４００４２」がキーとなり、当該アドレス「０００４００４２」に記憶されているアドレス「７７８７９４２２」で特定されるエントリーポイントに記憶されているＡＰＩ関数であるＧｅｔＭｅｓｓａｇｅの名称、及び、当該ＧｅｔＭｅｓｓａｇｅが所属するＤＬＬであるＵＳＥＲ３２．ＤＬＬの名称の組み合わせであるＡＰＩ情報を対応付けたＡＰＩ複合情報を含むＡＰＩ複合情報テーブルが生成される。
【００３５】
再び、図２に戻って説明する。次に、サーバ１００は、Ｓ１０２にて生成したＡＰＩ複合情報テーブルに含まれるＡＰＩ情報の集合である検出対象ＡＰＩシーケンスを取得する（Ｓ１０３）。
【００３６】
具体的には、サーバ１００は、ＰＥ形式の実行ファイルにおけるコードセクション中に現れる、ＡＰＩ関数を呼び出すためのＣＡＬＬ命令が呼び出す命令における引数であるアドレスを抽出する。
【００３７】
ＰＥ形式の実行ファイルでは、コンパイラによって生成されたコードセクション中のＣＡＬＬ命令は、ＡＰＩ関数を呼び出す際、直接ＤＬＬに所属するＡＰＩ関数を呼び出さずに、当該ＣＡＬＬ命令の引数である、コードセクションのアドレスに存在する命令を呼び出す。図３の例では、コードセクション中のＣＡＬＬ命令は、ＡＰＩ関数（例えば、ＵＳＥＲ３２．ＤＬＬ中のＧｅｔＭｅｓｓａｇｅ）を呼び出す際、直接当該ＡＰＩ関数を呼び出さずに、ＣＡＬＬ命令の引数である、コードセクションのアドレス「０００１４４０８」に存在する、ｊｍｐ  ｄｗｏｒｄ  ｐｔｒ（０００４００４２）命令を呼び出す。このＪＭＰ命令は、引数であるｉｄａｔａセクション内のｉｍｐｏｒｔ  ｔａｂｌｅのアドレス「０００４００４２」にジャンプするものである。
【００３８】
更に、サーバ１００は、ＣＡＬＬ命令が実際に呼び出す命令における引数であるアドレスと、ＡＰＩ複合情報テーブル内のキーであるアドレスとを比較する。ここで、コンピュータウィルスの生成過程において、ジャンクバイトの挿入、無条件分岐から条件分岐への置き換え、無条件ジャンプや呼び出し命令から条件付命令への置き換え、無条件ジャンプからジャンプテーブルへの置き換え等の妨害難読化処理がなされている場合には、ＣＡＬＬ命令が呼び出す命令における引数であるアドレスと、ＡＰＩ複合情報テーブル内のキーであるアドレスとが一致しない。以降の処理は、ＣＡＬＬ命令が呼び出す命令における引数であるアドレスと、ＡＰＩ複合情報テーブル内のキーであるアドレスとが一致する場合に行われる。
【００３９】
そして、ＣＡＬＬ命令が呼び出す命令における引数であるアドレスと、ＡＰＩ複合情報テーブル内のキーであるアドレスとが一致する場合には、サーバ１００は、ＡＰＩ複合情報テーブルにおいて当該キーであるアドレスに対応付けられたＡＰＩ関数の名称、及び、当該ＡＰＩ関数が所属するＤＬＬの名称の組み合わせを取得し、検出対象ＡＰＩシーケンスに挿入する。このように、ＣＡＬＬ命令が呼び出す命令における引数であるアドレスと、ＡＰＩ複合情報テーブル内のキーであるアドレスとが一致する場合にのみ、ＡＰＩ複合情報テーブルにおいてキーであるアドレスに対応付けられたＡＰＩ関数の名称、及び、当該ＡＰＩ関数が所属するＤＬＬの名称の組み合わせを、検出対象ＡＰＩシーケンスに挿入することで、コンピュータウィルスの検出における妨害難読化処理の影響（例えば誤検出）を排除することができる。
【００４０】
更に、サーバ１００は、取得した検出対象ＡＰＩシーケンスを構成する各ＡＰＩ情報に対応する検出対象ＡＰＩハッシュ値シーケンスを取得する（Ｓ１０４）。
【００４１】
具体的には、サーバ１００は、Ｓ１０３にて取得した検出対象ＡＰＩシーケンスに含まれる各ＡＰＩ情報について、当該ＡＰＩ情報と１対１に対応するハッシュ値を取得する。例えば、ＤＢ２００には、予めＡＰＩ情報とハッシュ値とが対応付けて記憶されており、サーバ１００は、Ｓ１０３にて取得した検出対象ＡＰＩシーケンスに含まれる各ＡＰＩ情報をキーとしてＤＢ２００内を検索することにより、当該ＡＰＩ情報に対応するハッシュ値を取得することができる。更に、サーバ１００は、取得したハッシュ値と、対応するＡＰＩ情報とからなるテーブルの行を生成し、ｉｍｐｏｒｔ  ｔａｂｌｅの全ての行に対応したＡＰＩ情報とハッシュ値とからなるテーブルの行の集合であるハッシュ値テーブルを生成する。そして、サーバ１００は、ハッシュ値テーブル内のハッシュ値の集合を、検出対象ＡＰＩハッシュ値シーケンスとして取得する。例えば、検出対象ＡＰＩシーケンスであるＡＰＩ複合情報テーブルに、ＡＰＩ情報が「USER32.DLL FindWindowA」、「USER32.DLL EnumWindows」、「USER32.DLL SendMessageA」、「ADVAPI32.DLL RegOpenKeyExA」、「ADVAPI32.DLL RegQueryValueExA」、「USER32.DLL SendMessageA」の順で含まれる場合、ハッシュ値テーブルは、図５に示すものとなり、検出対象ＡＰＩハッシュ値シーケンスは、ハッシュ値の集合「８７９３４９」となる。
【００４２】
その後、図３に示す動作に移行し、サーバ１００は、ＤＢ２００内の既知コンピュータウィルスＡＰＩハッシュ値シーケンスのうち、未取得のものを１つ取得する（Ｓ１１１）。
【００４３】
ここで、ＤＢ２００内の既知コンピュータウィルスＡＰＩハッシュ値シーケンスは、以下のようにして得られる。すなわち、サーバ１００は、既知のコンピュータウィルスであるＰＥ形式の実行ファイルのｉｄａｔａセクションにおけるｉｍｐｏｒｔ  ｔａｂｌｅの任意の行に記憶されているアドレスを抽出する。この抽出されるアドレスは、上述したように、ＤＬＬに所属するＡＰＩ関数が記憶されている領域であるエントリーポイントのアドレスを示す。次に、サーバ１００は、ｉｍｐｏｒｔ  ｔａｂｌｅの任意の行のアドレスをキーとし、当該アドレスと、当該アドレスに記憶されているアドレスで特定されるエントリーポイントに記憶されているＡＰＩ関数の名称、及び、当該ＡＰＩ関数が所属するＤＬＬの名称の組み合わせであるＡＰＩ情報とからなるＡＰＩ複合情報を生成し、ｉｍｐｏｒｔ  ｔａｂｌｅの全ての行に対応したＡＰＩ複合情報の集合であるＡＰＩ複合情報テーブルを生成する。更に、サーバ１００は、生成したＡＰＩ複合情報テーブルに含まれるＡＰＩ情報の集合である既知コンピュータウィルスＡＰＩシーケンスを生成し、その既知コンピュータウィルスＡＰＩシーケンスを構成する各ＡＰＩ情報に対応するハッシュ値の集合を、既知コンピュータウィルスＡＰＩハッシュ値シーケンスとして取得する。
【００４４】
次に、サーバ１００は、Ｓ１１１にて取得した既知コンピュータウィルスＡＰＩハッシュ値シーケンスと、Ｓ１０４にて取得した検出対象ＡＰＩハッシュ値シーケンスとの相似性を判断するためのグローバルアライメントを生成する（Ｓ１１２）。
【００４５】
具体的には、以下のようにしてグローバルアライメントが生成される。すなわち、サーバ１００は、既知コンピュータウィルスＡＰＩハッシュ値シーケンスにおけるハッシュ値の配列Ｘ＝｛ｘ（１），ｘ（２），・・・，ｘ（ｍ）｝と、検出対象ＡＰＩハッシュ値シーケンスにおけるハッシュ値の配列Ｙ＝｛ｙ（１），ｙ（２），・・・，ｙ（ｎ）｝とを比較する場合、図６に示すように、配列Ｘを行、配列Ｙを列とした、グローバルアライメントに対応するスコア表を生成する。図６に示すスコア表において、スコア値Ｆは
【数１】
2010009269.tif 000003
により算出される。但し、ｓ（ｘ（ｉ），ｙ（ｊ））は、ｘ（ｉ）＝ｙ（ｊ）のとき２であり、ｘ（ｉ）≠ｙ（ｊ）のとき＝０である。また、ｄはギャップペナルティである。
【００４６】
更に、サーバ１００は、生成したスコア表の右下端から左上端に向けて、公知の手法で辿ってきたスコアを線でつなぐ処理を行い、その線が横線となる場合には配列Ｙにギャップを挿入するとともに、縦線となる場合には配列Ｘにギャップを挿入し、斜線となる場合にはギャップを挿入しない。このような処理によって、ギャップが適宜挿入された配列Ｘ及び配列Ｙからなるグローバルアライメントが得られる。
【００４７】
例えば、配列Ｘ＝｛８，７，９，３，４，９｝、配列Ｙ＝｛８，７，３，４，９，６｝であり、ギャップペナルティｄ＝１の場合を考える。この場合、数１を用いると、グローバルアライメントに対応するスコア表は図７に示すものとなる。このスコア表において右下端のスコア「８」から左上端のスコア「０」に向けて辿ってきたスコアを線でつなぐと、図７に示すものとなる。このつないだ線に基づいて、配列Ｘ及び配列Ｙのそれぞれにギャップ（−）が挿入されることにより、配列Ｘ＝｛８，７，９，３，４，９，−｝、配列Ｙ＝｛８，７，−，３，４，９，６｝からなるグローバルアライメントが得られる。
【００４８】
再び、図２に戻って説明する。次に、サーバ１００は、生成した、ギャップ挿入後の配列Ｘ及び配列Ｙからなるグローバルアライメントに基づいて、ギャップ挿入後の配列Ｘ及び配列Ｙをそれぞれベクトルとして用いた、Ｃｏｓｉｎe相似関数
【数２】
2010009269.tif 000004
による第１の相似度ＳCosine（Ｘ，Ｙ）を算出するとともに、拡張Ｊａｃｃａｒｄ相似関数
【数３】
2010009269.tif 000005
による第２の相似度ＳJaccard（Ｘ，Ｙ）を算出する。更に、サーバ１００は、第１の相似度ＳCosine（Ｘ，Ｙ）と第２の相似度ＳJaccard（Ｘ，Ｙ）との平均値
【数４】
2010009269.tif 000006
を、配列Ｘと配列Ｙとの最終的な相似度、すなわち、既知コンピュータウィルスＡＰＩハッシュ値シーケンスと、検出対象ＡＰＩハッシュ値シーケンスとの最終的な相似度として算出する（Ｓ１１３）。
【００４９】
次に、サーバ１００は、算出した最終的な相似度が閾値以上であるか否かを判定する（Ｓ１１４）。最終的な相似度が閾値未満である場合には、一連の処理を終了する。一方、最終的な相似度が閾値以上である場合には、サーバ１００は、配列Ｙ、すなわち、検出対象ＡＰＩハッシュ値シーケンスに対応するＰＥ形式の実行ファイルを、配列Ｘ、すなわち、既知コンピュータウィルスＡＰＩハッシュ値シーケンスに対応する既知のコンピュータウィルスに対する亜種のコンピュータウィルスであると判定する（Ｓ１１５）。発明者の実験によれば、コンピュータウィルスをコンピュータウィルスでないと誤検出すること、及び、コンピュータウィルスでないものをコンピュータウィルスであると誤検出することを防止するためには、適切な閾値は０．５程度となる。
【００５０】
次に、サーバ１００は、Ｓ１１５において亜種のコンピュータウィルスであると判定したＰＥ形式の実行ファイルに対応する検出対象ＡＰＩハッシュ値シーケンスを、既知コンピュータウィルスＡＰＩハッシュ値シーケンスとしてＤＢ２００に記憶させる（Ｓ１１６）。次に、サーバ１００は、ＤＢ２００内の既知コンピュータウィルスＡＰＩハッシュ値シーケンスのうち、未取得のものがあるか否かを判定する（Ｓ１１７）。未取得の既知コンピュータウィルスＡＰＩハッシュ値シーケンスが存在する場合には、サーバ１００は、その未取得の既知コンピュータウィルスＡＰＩハッシュ値シーケンスを１つ取得する処理（Ｓ１１１）以降の動作を繰り返す。
【００５１】
一方、未取得の既知コンピュータウィルスＡＰＩハッシュ値シーケンスが存在しない場合には、一連の動作を終了する。その後、再び、ＰＥ形式の実行ファイルが添付された電子メールの受信以降の動作が繰り返される場合には、サーバ１００は、Ｓ１１１において、ＤＢ２００内の既存の既知コンピュータウィルスＡＰＩシーケンスのハッシュ値の他に、Ｓ１１６において新たにＤＢ２００に記憶された既知コンピュータウィルスＡＰＩハッシュ値シーケンスをも取得し、グローバルアライメントの生成（Ｓ１１２）以降の動作を行う。
【００５２】
このように、本実施形態のコンピュータシステムでは、サーバ１００は、ＤＢ２００に記憶された、既知コンピュータウィルスＡＰＩハッシュ値シーケンスと、受信した電子メールに添付されているＰＥ形式の実行ファイルから得られる検出対象ＡＰＩハッシュ値シーケンスとの相似度を算出し、当該相似度が閾値以上である場合に、ＰＥ形式の実行ファイルを亜種のコンピュータウィルスであると判定する。従って、亜種のコンピュータウィルスに対応するＡＰＩハッシュ値シーケンスがＤＢ２００に記憶されていない場合であっても、当該亜種のコンピュータウィルスの検出が可能であり、コンピュータウィルス検出の確実性を向上させることができる。
【００５３】
また、サーバ１００は、亜種のコンピュータウィルスであると判定したＰＥ形式の実行ファイルに対応する検出対象ＡＰＩハッシュ値シーケンスを、新たな既知コンピュータウィルスＡＰＩハッシュ値シーケンスとしてＤＢ２００に記憶させることで、その後のコンピュータウィルス検出において、その新たな既知コンピュータウィルスＡＰＩハッシュ値シーケンスをも取得して、電子メールに添付されたＰＥ形式の実行ファイルがコンピュータウィルスであるか否かを判定することにより、更に別の亜種のコンピュータウィルスについても検出が可能となる。
【００５４】
図８及び図９は、本発明を用いた実験によるコンピュータウィルスの検出結果を示す図である。図８は、既知のコンピュータウィルスＢａｇｌｅのシリーズで、上から古い順に発生した亜種のコンピュータウィルスＢａｇｌｅ．Ｊ、Ｂａｇｌｅ．Ｋ、Ｂａｇｌｅ．Ｎ、Ｂａｇｌｅ．Ｏ、Ｂａｇｌｅ．Ｗ、Ｂａｇｌｅ．Ｙ、Ｂａｇｌｅ．Ｚ、Ｂａｇｌｅ．ＡＢ、Ｂａｇｌｅ．ＡＥの既知コンピュータウィルスＡＰＩハッシュ値シーケンスをＤＢ２００に記憶して、Ｂａｇｌｅ．Ｊ、Ｂａｇｌｅ．Ｋ、Ｂａｇｌｅ．Ｎ、Ｂａｇｌｅ．Ｏ、Ｂａｇｌｅ．Ｗ、Ｂａｇｌｅ．Ｙ、Ｂａｇｌｅ．Ｚ、Ｂａｇｌｅ．ＡＢ、Ｂａｇｌｅ．ＡＥ及びコンピュータウィルスでないものを、それぞれ電子メールに添付したＰＥ形式の実行ファイルとしてサーバ１００に入力した場合における検出結果を示すものである。コンピュータウィルスでないものを除いたすべての受信実行ファイルが、Ｂａｇｌｅ．Ｊ、Ｂａｇｌｅ．Ｊ、Ｂａｇｌｅ．Ｎ、Ｂａｇｌｅ．Ｏ、Ｂａｇｌｅ．Ｗ、Ｂａｇｌｅ．Ｙ、Ｂａｇｌｅ．Ｚ、Ｂａｇｌｅ．ＡＢまたはＢａｇｌｅ．ＡＥの既知コンピュータウィルスＡＰＩハッシュ値シーケンスでウィルス（図８の「○」）として判定されている。一方、電子メールに添付したＰＥ形式の実行ファイルがコンピュータウィルスでなければ、それをコンピュータウィルスであると誤検出することはない（図８の「×」）。
【００５５】
図８によれば、Ｂａｇｌｅ．Ｊの既知コンピュータウィルスＡＰＩハッシュ値シーケンスでＢａｇｌｅ．Ｊ自体の受信実行ファイルが検出されるだけでなく、Ｂａｇｌｅ．ＫからＢａｇｌｅ．ＡＥまでのすべての亜種のコンピュータウィルスが検出される。したがって、図８のＢａｇｌｅシリーズで最初に発生したＢａｇｌｅ．Ｊの既知コンピュータウィルスＡＰＩハッシュ値シーケンスを生成してＤＢ２００に記憶することで、Ｂａｇｌｅ．Ｊ、Ｂａｇｌｅ．Ｋ、Ｂａｇｌｅ．Ｎ、Ｂａｇｌｅ．Ｏ、Ｂａｇｌｅ．Ｗ、Ｂａｇｌｅ．Ｙ、Ｂａｇｌｅ．Ｚ、Ｂａｇｌｅ．ＡＢ、Ｂａｇｌｅ．ＡＥのすべての受信実行ファイルを検出できる。更にＢａｇｌｅ．Ｋ、Ｂａｇｌｅ．Ｎ、Ｂａｇｌｅ．Ｏ、Ｂａｇｌｅ．Ｗ、Ｂａｇｌｅ．Ｙ、Ｂａｇｌｅ．Ｚ、Ｂａｇｌｅ．ＡＢ、Ｂａｇｌｅ．ＡＥの既知コンピュータウィルスＡＰＩハッシュ値シーケンスさえも生成してＤＢ２００に記憶することが可能である。
【００５６】
また、図９は、既知のコンピュータウィルスＷａｒｅｚｏｖのシリーズで、上から古い順に発生した亜種のコンピュータウィルスＷａｒｅｚｏｖ．Ｃ、Ｗａｒｅｚｏｖ．Ｇｅｎ、Ｗａｒｅｚｏｖ．Ｋ、Ｗａｒｅｚｏｖ．Ｌ、Ｗａｒｅｚｏｖ．Ｎ、Ｗａｒｅｚｏｖ．Ｏ、Ｗａｒｅｚｏｖ．Ｑ、Ｗａｒｅｚｏｖ．ＡＡの既知コンピュータウィルスＡＰＩハッシュ値シーケンスをＤＢ２００に記憶して、Ｗａｒｅｚｏｖ．Ｃ、Ｗａｒｅｚｏｖ．Ｇｅｎ、Ｗａｒｅｚｏｖ．Ｋ、Ｗａｒｅｚｏｖ．Ｌ、Ｗａｒｅｚｏｖ．Ｎ、Ｗａｒｅｚｏｖ．Ｏ、Ｗａｒｅｚｏｖ．Ｑ、Ｗａｒｅｚｏｖ．ＡＡ及びコンピュータウィルスでないものを、それぞれ電子メールに添付したＰＥ形式の実行ファイルとしてサーバ１００に入力した場合における検出結果を示すものである。
【００５７】
図９によれば、Ｗａｒｅｚｏｖ．Ｃの既知コンピュータウィルスＡＰＩハッシュ値シーケンスでＷａｒｅｚｏｖ．Ｃ自体の受信実行ファイルとＷａｒｅｚｏｖ．Ｑの受信実行ファイルがウィルスとして判定されている。しかし、その他の受信実行ファイルはウィルスとして検出されない。また、Ｗａｒｅｚｏｖ．ＡＡの既知コンピュータウィルスＡＰＩハッシュ値シーケンスでは、Ｗａｒｅｚｏｖ．Ｃ及びＷａｒｅｚｏｖ．Ｑ以外の受信実行ファイルがウィルスとして判定されている。図８のように、任意の既知コンピュータウィルスＡＰＩハッシュ値シーケンスですべての受信実行ファイルがウィルスとして判定されないが、６４個の升目の中で４０個（図９の「○」）がウィルスとして判定されている。一方、電子メールに添付したＰＥ形式の実行ファイルがコンピュータウィルスでなければ、それをコンピュータウィルスであると誤検出することはない（図９の「×」）。したがって、図９のＷａｒｅｚｏｖシリーズで最初に発生したＷａｒｅｚｏｖ．Ｃと次に発生したＷａｒｅｚｏｖ．Ｇｅｎの既知コンピュータウィルスＡＰＩハッシュ値シーケンスを生成してＤＢ２００に記憶することで、Ｗａｒｅｚｏｖ．Ｃ、Ｗａｒｅｚｏｖ．Ｇｅｎ、Ｗａｒｅｚｏｖ．Ｋ、Ｗａｒｅｚｏｖ．Ｌ、Ｗａｒｅｚｏｖ．Ｎ、Ｗａｒｅｚｏｖ．Ｏ、Ｗａｒｅｚｏｖ．Ｑ、Ｗａｒｅｚｏｖ．ＡＡのすべての受信実行ファイルを検出できる。更にＷａｒｅｚｏｖ．Ｋ、Ｗａｒｅｚｏｖ．Ｌ、Ｗａｒｅｚｏｖ．Ｎ、Ｗａｒｅｚｏｖ．Ｏ、Ｗａｒｅｚｏｖ．Ｑ、Ｗａｒｅｚｏｖ．ＡＡの既知コンピュータウィルスＡＰＩハッシュ値シーケンスさえも生成してＤＢ２００に記憶することが可能である。
【００５８】
なお、上述した実施形態では、既知コンピュータウィルスＡＰＩハッシュ値シーケンスと、検出対象ＡＰＩハッシュ値シーケンスとの相似度を算出したが、既知コンピュータウィルスＡＰＩシーケンスを第１の特徴情報配列として用い、検出対象ＡＰＩシーケンスを第２の特徴情報配列として用いて、これらの相似度を算出し、その相似度に応じて、ＰＥ形式の実行ファイルがコンピュータウィルスであるか否かを判定するようにしてもよい。
【００５９】
また、上述した実施形態では、サーバ１００は、受信した電子メールに添付されたＰＥ形式の実行ファイルについてコンピュータウィルスの検出を行ったが、インターネットを介したウェブ接続等によってＰＥ形式の実行ファイルを入力した場合にも、同様にして当該ＰＥ形式の実行ファイルについてコンピュータウィルスの検出を行うことが可能である。また、上述した実施形態では、サーバ１００がコンピュータウィルス検出装置として機能する場合について説明したが、クライアントがコンピュータウィルス検出装置として機能する場合にも、同様に本発明を適用することができる。
【産業上の利用可能性】
【００６０】
以上のように、本発明にかかるコンピュータウィルス検出装置、コンピュータウィルス検出方法及びコンピュータウィルス検出プログラムは、コンピュータウィルス検出の確実性を向上させることができ、コンピュータウィルス検出装置、コンピュータウィルス検出方法及びコンピュータウィルス検出プログラムとして有用である。
【図面の簡単な説明】
【００６１】
【図１】コンピュータシステムの構成例を示す図である。
【図２】サーバによるコンピュータウィルスの検出動作を示す第１のフローチャートである。
【図３】サーバによるコンピュータウィルスの検出動作を示す第２のフローチャートである。
【図４】ＰＥ形式の実行ファイルと、ＤＬＬと、ＡＰＩ複合情報テーブルとの対応関係を示す図である。
【図５】ハッシュ値テーブルの一例を示す図である。
【図６】グローバルアライメントに対応するスコア表の構成を示す図である。
【図７】数値が挿入されたグローバルアライメントに対応するスコア表の一例を示す図である。
【図８】コンピュータウィルスの検出結果の第１の例を示す図である。
【図９】コンピュータウィルスの検出結果の第２の例を示す図である。
【符号の説明】
【００６２】
１００  サーバ
２００  ＤＢ
３００−１〜３００−ｋ、３１０−１〜３１０−ｊ  パソコン
４００  ＬＡＮ
５００  インターネット
【図１】
2010009269.tif 000007
【図２】
2010009269.tif 000008
【図３】
2010009269.tif 000009
【図４】
2010009269.tif 000010
【図５】
2010009269.tif 000011
【図６】
2010009269.tif 000012
【図７】
2010009269.tif 000013
【図８】
2010009269.tif 000014
【図９】
2010009269.tif 000015