(57)【特許請求の範囲】
【請求項１】
マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出する単一ログ／ファイル抽出部と、
前記単一ログ／ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、２つ以上の異なる条件について抽出する文字列抽出部と、
前記文字列抽出部により抽出された文字列に基づいて、２つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するルール生成部と、
を備えたことを特徴とするソフトウェア検知ルール生成装置。
【請求項２】
マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出する複数ログ／ファイル抽出部と、
前記複数ログ／ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出する文字列抽出部と、
前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するルール生成部と、
を備えたことを特徴とするソフトウェア検知ルール生成装置。
【請求項３】
さらに、前記ルール生成部により生成されたマルウェア検知ルールの有効性を検証するルール検証部を備えた、
ことを特徴とする請求項１または請求項２に記載のソフトウェア検知ルール生成装置。
【請求項４】
単一ログ／ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出し、
文字列抽出部が、前記単一ログ／ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、２つ以上の異なる条件について抽出し、
ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、２つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成する、
ことを特徴とするソフトウェア検知ルール生成方法。
【請求項５】
複数ログ／ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出し、
文字列抽出部が、前記複数ログ／ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出し、
ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成する、
ことを特徴とするソフトウェア検知ルール生成方法。
【請求項６】
単一ログ／ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出するステップと、
文字列抽出部が、前記単一ログ／ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、２つ以上の異なる条件について抽出するステップと、
ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、２つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するステップと、
をコンピュータに実行させるためのソフトウェア検知ルール生成プログラム。
【請求項７】
複数ログ／ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出するステップと、
文字列抽出部が、前記複数ログ／ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出するステップと、
ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するステップと、
をコンピュータに実行させるためのソフトウェア検知ルール生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア検知ルール生成装置、ソフトウェア検知ルール生成方法およびソフトウェア検知ルール生成プログラムに関する。
【背景技術】
【０００２】
従来では、Ａｎｄｒｏｉｄ（登録商標）向けのマルウェア（悪性のアプリケーション）の検知手法は、特徴的な文字列に注目したシグネチャベースの方式が一般的である。
この方式は、マルウェアの挙動ログや構成ファイルの中に、攻撃に関連する文字列（通信先ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、重要ファイルの操作、パッケージ名、コードの特定文字列）が含まれていることを検知（検出）する方式である。
【０００３】
ここで、マルウェアの検出に利用する文字列は、Ａｎｄｒｉｏｄ向けのアプリケーションが安全であるか否かを解析するオペレータが手動で抽出している。
また、挙動ログや構成ファイルの特定の一行に現れる文字列からマルウェアを判断することができるように、マルウェアの検出に利用する文字列として、正規表現で記述することが可能な単純な文字列を設定している。
【０００４】
なお、Ａｎｄｒｏｉｄ（登録商標）向けのマルウェア検知について、従来から研究がなされている（例えば、非特許文献１、２参照。）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】竹森敬祐、磯原隆将、窪田歩、高野智秋、「Ａｎｄｒｏｉｄ携帯電話上での情報漏洩検知」、暗号と情報セキュリティシンポジウム２０１１、Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｏｎｉｃｓ，  Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｅｎｇｉｎｅｅｒｓ、２０１１年１月
【非特許文献２】磯原隆将、竹森敬祐、窪田歩、高野智秋、「Ａｎｄｒｏｉｄ向けアプリケーションの挙動に注目したマルウェア検知」、暗号と情報セキュリティシンポジウム２０１１、Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｏｎｉｃｓ，  Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｅｎｇｉｎｅｅｒｓ、２０１１年１月
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のように、マルウェアの検知に利用する攻撃に関連する文字列は、Ａｎｄｒｏｉｄ（登録商標）向けのアプリケーションが安全であるか否かを解析するオペレータが手動で抽出しており、さらに、その文字列は正規表現で記述することが可能な単純な文字列である。
このため、類似の挙動を示すマルウェアにその文字列が含まれているとは限らず、マルウェアの検知において見逃し（Ｆａｌｓｅ  Ｎｅｇａｔｉｖｅ）が生じるという問題がある。また、正常なアプリケーションがその文字列に該当する可能性も高くなり、マルウェアの検知において積極的誤検知（Ｆａｌｓｅ  Ｐｏｓｉｔｉｖｅ）が生じるという問題がある。
【０００７】
本発明は、このような事情を考慮してなされたもので、マルウェアの検知を高精度に行うことができるソフトウェア検知ルール（マルウェアを検知するルール）を生成することができるソフトウェア検知ルール生成装置、ソフトウェア検知ルール生成方法およびソフトウェア検知ルール生成プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００８】
（１）上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成装置は、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出する単一ログ／ファイル抽出部と、前記単一ログ／ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、２つ以上の異なる条件について抽出する文字列抽出部と、前記文字列抽出部により抽出された文字列に基づいて、２つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するルール生成部と、を備えたことを特徴とする。
【０００９】
（２）上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成装置は、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出する複数ログ／ファイル抽出部と、前記複数ログ／ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出する文字列抽出部と、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するルール生成部と、を備えたことを特徴とする。
【００１０】
（３）本発明は、上記した（１）または上記した（２）に記載のソフトウェア検知ルール生成装置において、さらに、前記ルール生成部により生成されたマルウェア検知ルールの有効性を検証するルール検証部を備えた、ことを特徴とする。
【００１１】
（４）上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成方法は、単一ログ／ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出し、文字列抽出部が、前記単一ログ／ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、２つ以上の異なる条件について抽出し、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、２つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成する、ことを特徴とする。
【００１２】
（５）上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成方法は、複数ログ／ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出し、文字列抽出部が、前記複数ログ／ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出し、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成する、ことを特徴とする。
【００１３】
（６）上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成プログラムは、単一ログ／ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出するステップと、文字列抽出部が、前記単一ログ／ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、２つ以上の異なる条件について抽出するステップと、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、２つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するステップと、をコンピュータに実行させるためのソフトウェア検知ルール生成プログラムである。
【００１４】
（７）上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成プログラムは、複数ログ／ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出するステップと、文字列抽出部が、前記複数ログ／ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出するステップと、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するステップと、をコンピュータに実行させるためのソフトウェア検知ルール生成プログラムである。
【発明の効果】
【００１５】
本発明によれば、マルウェアの検知を高精度に行うことができるソフトウェア検知ルール（マルウェアを検知するルール）を生成することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１実施形態に係るＡｎｄｒｏｉｄ（登録商標）のソフトウェア検知ルール生成装置の概略的な構成を示すブロック図である。
【図２】文字列抽出部におけるシステムコール「ｅｘｅｃｖｅ」に関する入力の例と出力の例を示す図である。
【図３】文字列抽出部におけるシステムコール「ｃｏｎｎｅｃｔ」に関する入力の例と出力の例を示す図である。
【図４】（ａ）はシステムコールの時系列データの一例を示す図であり、（ｂ）はアソシエーションルール生成結果の一例を示す図であり、（ｃ）は時系列アソシエーションルール生成結果の一例を示す図である。
【図５】マルウェアと正常なアプリケーションについてルールの該当数の一例を示す図である。
【図６】（ａ）〜（ｄ）は本発明の第１実施形態に係るソフトウェア検知ルール生成装置により行われる処理の全体の概略を示す図である。
【図７】本発明の第２実施形態に係るＡｎｄｒｏｉｄ（登録商標）のソフトウェア検知ルール生成装置の概略的な構成を示すブロック図である。
【図８】（ａ）はカーネルログにおけるシステムコールと文字列との対応の一例を示す図であり、（ｂ）はマニフェストファイルにおけるパーミッション情報の文字列の一例を示す図であり、（ｃ）はアソシエーションルール生成結果の一例を示す図である。
【図９】本発明の第３実施形態に係るＡｎｄｒｏｉｄ（登録商標）のソフトウェア検知ルール生成システムの概略的な構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照し、本発明の実施形態について説明する。
【００１８】
［第１実施形態］
図１は、本発明の第１実施形態に係るＡｎｄｒｏｉｄ（登録商標）のソフトウェア検知ルール生成装置１の概略的な構成を示すブロック図である。
また、図１には、アプリケーションデータベース（アプリケーションＤＢ）２１と、ルールデータベース（ルールＤＢ）２２も示してある。
【００１９】
アプリケーションデータベース２１は、Ａｎｄｒｏｉｄ（登録商標）のアプリケーションを記憶する。
本実施形態では、アプリケーションデータベース２１は、正常なアプリケーションを記憶するデータベース（正常アプリケーションデータベース）と、マルウェア（悪性のアプリケーション）を記憶するデータベース（マルウェアデータベース）と、正常なものであるかあるいは悪性のものであるかが不明なアプリケーションを記憶するデータベース（不明アプリケーションデータベース）と、を有する。
【００２０】
ここで、それぞれのアプリケーション（マルウェアも含む）のデータは、挙動ログのデータと、構成ファイルのデータから構成される。
また、アプリケーションデータベース２１に記憶されるそれぞれのアプリケーションが正常なものであるか、悪性のものであるか、あるいは、いずれであるかが不明なものであるかは、任意の手法により、あらかじめ確認されて既知になっているとする。
【００２１】
ソフトウェア検知ルール生成装置１は、アプリケーションデータベース２１に記憶されたアプリケーションに基づいて、マルウェアを検知するルール（マルウェア検知ルール）をソフトウェア検知ルールとして生成し、生成したマルウェア検知ルールを検証する。ソフトウェア検知ルール生成装置１は、有効であると検証されたマルウェア検知ルールをルールデータベース２２に記憶させる。
【００２２】
ルールデータベース２２は、ソフトウェア検知ルール生成装置１により有効であると検証されたマルウェア検知ルールを記憶する。
ルールデータベース２２に記憶されたマルウェア検知ルールは、マルウェアの検知に使用することができる。
【００２３】
本実施形態に係るソフトウェア検知ルール生成装置１について詳しく説明する。
本実施形態に係るソフトウェア検知ルール生成装置１は、単一ログ／ファイル抽出部１１と、文字列抽出部１２と、ルール生成部１３と、ルール検証部１４と、を備える。
【００２４】
本実施形態に係るソフトウェア検知ルール生成装置１において行われる概略的な動作の例を示す。
単一ログ／ファイル抽出部１１は、アプリケーションデータベース２１のマルウェアデータベースに記憶されたマルウェアを入力し、入力したマルウェアを構成する挙動ログと構成ファイルについて、単一の挙動ログまたは単一の構成ファイルを抽出する。単一ログ／ファイル抽出部１１は、抽出した単一の挙動ログまたは単一の構成ファイルを文字列抽出部１２に出力する。
ここで、抽出する単一の挙動ログまたは単一の構成ファイルの種類は、例えば、あらかじめ定められている。
【００２５】
文字列抽出部１２は、単一ログ／ファイル抽出部１１から入力された単一の挙動ログまたは単一の構成ファイルを解析し、この単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた手順（条件）で、文字列を抽出する。文字列抽出部１２は、抽出した文字列に関する情報をルール生成部１３に出力する。
【００２６】
ルール生成部１３は、文字列抽出部１２から入力された文字列に関する情報に基づいて、マルウェア検知ルールを生成（作成）する。ルール生成部１３は、生成したマルウェア検知ルールをルール検証部１４に出力する。
【００２７】
ルール検証部１４は、ルール生成部１３から入力されたマルウェア検知ルール（本実施形態では、マルウェア検知ルールの候補）について、有効性を検証する。ルール検証部１４は、有効であると検証したマルウェア検知ルールをルールデータベース２２に記憶させる。
【００２８】
ここで、本実施形態では、ルール検証部１４は、アプリケーションデータベース２１のマルウェアデータベースに記憶されたマルウェアおよび正常アプリケーションデータベースに記憶された正常なアプリケーションを入力し、入力したマルウェアにマルウェア検知ルールを適用してマルウェアの検知を行った結果および入力した正常なアプリケーションに当該マルウェア検知ルールを適用してマルウェアの検知を行った結果に基づいて、当該マルウェア検知ルールが有効であるか否かを判定（検証）する。
【００２９】
なお、アプリケーションデータベース２１のマルウェアデータベースに複数のマルウェアが記憶されている場合には、例えば、個々のマルウェアについて、単一ログ／ファイル抽出部１１と文字列抽出部１２による処理を行い、その後、これら複数のマルウェアについての処理結果に基づいて、ルール生成部１３による処理を行い、その後、この処理結果に基づいて、ルール検証部１４による処理を行う。
【００３０】
次に、本実施形態に係るソフトウェア検知ルール生成装置１において行われる具体的な動作の例を示す。
本実施形態では、挙動ログの中の一例であるカーネルログに関するマルウェア検知ルールを生成する場合を示す。
【００３１】
単一ログ／ファイル抽出部１１は、アプリケーションデータベース２１のマルウェアデータベースに記憶された１個のマルウェアを入力し、入力したマルウェアを構成するカーネルログを抽出する。単一ログ／ファイル抽出部１１は、抽出したカーネルログを文字列抽出部１２に出力する。
ここで、単一ログ／ファイル抽出部１１は、複数のマルウェアを入力する場合には、それぞれのマルウェアのカーネルログを抽出して取得し、それぞれのマルウェアのカーネルログを文字列抽出部１２に出力する。
【００３２】
文字列抽出部１２は、単一ログ／ファイル抽出部１１から入力されたカーネルログを解析し、このカーネルログから、あらかじめ定められた手順（条件）で、マルウェア検知ルールの生成に必要となる文字列を抽出する。文字列抽出部１２は、抽出した文字列に関する情報をルール生成部１３に出力する。
ここで、文字列抽出部１２は、複数のマルウェアのカーネルログを入力する場合には、それぞれのマルウェアのカーネルログから文字列を抽出して取得し、それぞれのマルウェアのカーネルログごとに、抽出した文字列に関する情報を文字列抽出部１２に出力する。
【００３３】
文字列抽出の処理手順として、（カーネルログにおける文字列抽出の処理手順１）〜（カーネルログにおける文字列抽出の処理手順２）を示す。
（カーネルログにおける文字列抽出の処理手順１）
文字列抽出部１２は、マルウェアのカーネルログの全て（全ての行）を文字列抽出の対象とし、または、当該カーネルログからあらかじめ定められた特定のシステムコールの行の部分を抽出して、抽出した特定のシステムコールの行の部分のみを文字列抽出の対象とする。
【００３４】
ここで、特定のシステムコールとしては、任意のものが用いられてもよく、例えば、ファイルの読み書きに関するシステムコール、あるいは、外部との通信に関するシステムコールなどを用いることができる。
【００３５】
（カーネルログにおける文字列抽出の処理手順２）
文字列抽出部１２は、文字列抽出の対象（カーネルログの全ての行、または、特定のシステムコールの行の部分）を構成する各行から、あらかじめ定められた条件（この例では、システムコール）に応じて文字列を抽出する。
ここで、抽出する文字列としては、任意のものが用いられてもよく、例えば、ファイル名、あるいは、通信相手などの文字列を用いることができる。
【００３６】
一例として、特定のシステムコールとして「ｅｘｅｃｖｅ」を用いる場合を示す。
このシステムコール「ｅｘｅｃｖｅ」は、アプリケーションがファイルを実行する際にログに出現する。したがって、文字列抽出部１２は、このシステムコール「ｅｘｅｃｖｅ」の行の部分から、ファイル名のデータを文字列として抽出する。
【００３７】
図２は、文字列抽出部１２におけるシステムコール「ｅｘｅｃｖｅ」に関する入力の例と出力の例を示す図である。
図２に示される入力は、システムコール「ｅｘｅｃｖｅ」の行の部分に相当する。
そして、文字列抽出部１２は、図２に示される入力から、図２に示される出力（「ｓｌｅｅｐ」というファイル名）のデータを文字列のデータとして抽出する。
【００３８】
他の一例として、特定のシステムコールとして「ｃｏｎｎｅｃｔ」を用いる場合を示す。
このシステムコール「ｃｏｎｎｅｃｔ」は、外部のネットワークとの接続の際に出現する。したがって、文字列抽出部１２は、このシステムコール「ｃｏｎｎｅｃｔ」の行の部分から、通信相手のデータを文字列として抽出する。
この通信相手のデータとして、本実施形態では、接続先のＩＰアドレスとポート番号を用いる。
【００３９】
図３は、文字列抽出部１２におけるシステムコール「ｃｏｎｎｅｃｔ」に関する入力の例と出力の例を示す図である。
図３に示される入力は、システムコール「ｃｏｎｎｅｃｔ」の行の部分に相当する。
そして、文字列抽出部１２は、図３に示される入力から、図３に示される出力（「２１０．１９６．３．１８３＿８０」という接続先のＩＰアドレスとポート番号）のデータを文字列のデータとして抽出する。
【００４０】
文字列抽出部１２からルール生成部１３に出力する、抽出した文字列に関する情報について説明する。
文字列抽出部１２は、抽出した文字列に関する情報として、抽出した文字列のデータと、この抽出に用いたシステムコールを含み、これら（文字列のデータとシステムコール）が対応付けられる情報を用いる。これにより、抽出した文字列に関する情報に基づいて、どのような文字列がどのようなシステムコールに出現したかを把握することができる。
【００４１】
なお、抽出した文字列に関する情報としては、上記の例に限定されず、例えば、抽出した文字列のデータに、この抽出に用いたシステムコールを特定する情報が付与されれば、他の態様の情報が用いられてもよい。
【００４２】
また、文字列抽出部１２は、一度出現して抽出した文字列（例えば、同一のシステムコールと文字列との対応）については、二度目以降に出現した場合には抽出しない（または、抽出したときには、削除する）。つまり、同じ文字列の情報については、最初の１回だけ採用する。
【００４３】
なお、このような同じ文字列の情報の重複は、例えば、１個のマルウェアにおいて存在する場合や、あるいは、複数のマルウェアにわたって存在する場合があり得る。
また、他の構成例として、同じ文字列の情報について重複して抽出して採用する構成が用いられてもよい。
【００４４】
また、文字列抽出部１２は、抽出した文字列に関する情報に、時系列順の番号（タイムスタンプ）の情報を付与して含める。これにより、１個のマルウェア（この例では、カーネルログ）において、抽出した文字列に関する情報が複数ある場合には、文字列抽出部１２は、タイムスタンプが付与された複数の抽出した文字列に関する情報を列挙して、時系列データとして生成する。
【００４５】
なお、時系列順の番号としては、例えば、１個のマルウェア（この例では、カーネルログ）において、文字列（または、システムコール）が出現した行が早い方に小さい番号を付与し、連続の番号とする。この場合、２つ以上の文字列（または、システムコール）が同一の行に出現したときには、これら全てに同一の番号を付与する。
【００４６】
ここで、本実施形態では、抽出した文字列に関する情報に基づいて、時系列的な処理（例えば、時系列アソシエーションの処理）を行うために、抽出した文字列に関する情報に時系列順の番号（タイムスタンプ）の情報を付与するが、他の構成例として、タイムスタンプの情報を使用する必要がない場合には、タイムスタンプの情報は用いられなくてもよい。
【００４７】
ルール生成部１３は、文字列抽出部１２から入力された文字列に関する情報に基づいて、マルウェア検知ルールを生成する。ルール生成部１３は、生成したマルウェア検知ルールをルール検証部１４に出力する。
本実施形態では、ルール生成部１３は、マルウェア検知ルールの生成対象となる全てのマルウェアについて、生成された時系列データを用いて、アソシエーション分析の処理または時系列アソシエーション分析の処理のうちのいずれかを行い、これによりマルウェア検知ルールを導出する。
【００４８】
ここで、ルール生成部１３によりアソシエーション分析の処理または時系列アソシエーション分析の処理のうちのいずれを行うかについては、例えば、あらかじめいずれかの処理に設定されてもよく、または、ソフトウェア検知ルール生成装置１に対するユーザ（人）による操作あるいは外部の装置からの制御（信号）に応じて、実行する処理を切り替えることが可能な構成が用いられてもよい。
【００４９】
また、アソシエーション分析や時系列アソシエーション分析としては、それぞれ、一般的に知られる技術を用いることができる。このため、本実施形態では、これらの概略を説明する。
【００５０】
（アソシエーション分析の説明）
アソシエーション分析は、組み合わせ（アソシエーションルール）を効率的に発見する方法である。前提部（ａｎｔｅｃｅｄｅｎｔ）と結論部（ｃｏｎｓｅｑｕｅｎｃｅ）から構成され、前提部と結論部の組み合わせで１つのルールとなる。
信頼度（Ｃ：Ｃｏｎｆｉｄｅｎｃｅ）は、ルールの前提（Ｘ）が発生したときに、結論（Ｙ）が起こる割合を示す。つまり、信頼度の数値が高いほど、ルールの前提と結論との結び付きが強いことを意味する。信頼度は、式（１）で表される。
【００５１】
信頼度  ＝  ｛前提（Ｘ）と結論（Ｙ）を共に含むトランザクションの件数｝
／｛前提（Ｘ）を含むトランザクションの件数｝
・・（１）
【００５２】
支持度（Ｓ：Ｓｕｐｐｏｒｔ）は、条件となる前提（Ｘ）と結論（Ｙ）を同時に満たすトランザクションが全てのトランザクションに占める割合を示す。支持度は、式（２）で表される。
【００５３】
支持度  ＝  ｛前提（Ｘ）と結論（Ｙ）を共に含むトランザクションの件数｝
／｛全てのトランザクションの件数｝
・・（２）
【００５４】
アソシエーション分析では、信頼度と支持度を利用して、ルールを生成する。ルールの生成には、アプリオリ・アルゴリズムを用いる。
アプリオリ・アルゴリズムは、信頼度と支持度に閾値を設け、その閾値を超える信頼度と支持度を持つルールを重要なものと見なすようにするアルゴリズムである。なお、閾値は、ユーザが指定する。
【００５５】
さらに、アソシエーション分析では、アプリオリ・アルゴリズムを用いて生成したルール（ここでは、ルールの候補）のうちで、リフト値（Ｌ：Ｌｉｆｔ）を計算して、リフト値が所定の閾値を超えたもの（ルールの候補）のみをルールとして出力する。リフト値は、式（３）で表される。
【００５６】
リフト値  ＝  信頼度（Ｘ→Ｙ）／結論（Ｙ）
・・（３）
【００５７】
本実施形態では、文字列抽出部１２によりアソシエーション分析の処理を行って、各マルウェアに出現する文字列の組み合わせを抽出することにより、効率的にマルウェアに関するルール（マルウェア検知ルール）を生成することができる。
【００５８】
ここで、アソシエーション分析による頻出パターン分析においては、信頼度（Ｃ）、支持度（Ｓ）、リフト値（Ｌ）等を用いて有効性を判断するが、一例として、次のような値を利用することができる。
Ｃ＝０
Ｓ＝０
Ｌ＝１
【００５９】
（時系列アソシエーション分析の説明）
時系列アソシエーション分析は、アソシエーション分析の際に、時間的な前後関係を考慮して、ルールを生成する方法である。
【００６０】
図４（ａ）、図４（ｂ）、図４（ｃ）を参照して、アソシエーション分析の具体例および時系列アソシエーション分析の具体例を示す。
図４（ａ）は、システムコールの時系列データの一例を示す図である。
システムコールの時系列データとして、時系列の（１）番目に、｛システムコール「ｅｘｅｃｖｅ」において、ファイル名「ｘｘｘｘｘｘｘｘ」の文字列が出現する｝という情報が取得されており、時系列の（２）番目に、｛システムコール「ｃｏｎｎｅｃｔ」において、通信相手（接続先のＩＰアドレスとポート番号）「ｘ  ｘ  ｘ  ｘ  ｘ  ｘ  ｘ」の文字列が出現する｝という情報が取得されているとする。
【００６１】
図４（ｂ）は、図４（ａ）に示される順番でシステムコールおよび対応する文字列が存在した場合における、アソシエーション分析の処理により生成されるルール（アソシエーションルール生成結果）の一例を示す図である。
この例では、アソシエーションルール生成結果として、２つのルールが生成される。この場合、ルール生成部１３は、これら２つのルールを、マルウェア検知ルールとして、ルール検証部１４に出力する。
【００６２】
１つ目のルールは、［｛システムコール「ｅｘｅｃｖｅ」において、ファイル名「ｘｘｘｘｘｘｘｘ」の文字列が出現する｝ことが成立した場合に、それより後の行で、｛システムコール「ｃｏｎｎｅｃｔ」において、通信相手（接続先のＩＰアドレスとポート番号）「ｘ  ｘ  ｘ  ｘ  ｘ  ｘ  ｘ」の文字列が出現する｝ことが成立する］というルールである。
このルールでは、前提部（Ｘ）は｛システムコール「ｅｘｅｃｖｅ」において、ファイル名「ｘｘｘｘｘｘｘｘ」の文字列が出現する｝ことであり、結論部（Ｙ）は｛システムコール「ｃｏｎｎｅｃｔ」において、通信相手（接続先のＩＰアドレスとポート番号）「ｘ  ｘ  ｘ  ｘ  ｘ  ｘ  ｘ」の文字列が出現する｝ことである。
【００６３】
２つ目のルールは、［｛システムコール「ｃｏｎｎｅｃｔ」において、通信相手（接続先のＩＰアドレスとポート番号）「ｘ  ｘ  ｘ  ｘ  ｘ  ｘ  ｘ」の文字列が出現する｝ことが成立した場合に、それより後の行で、｛システムコール「ｅｘｅｃｖｅ」において、ファイル名「ｘｘｘｘｘｘｘｘ」の文字列が出現する｝ことが成立する］というルールである。
このルールでは、前提部（Ｘ）は｛システムコール「ｃｏｎｎｅｃｔ」において、通信相手（接続先のＩＰアドレスとポート番号）「ｘ  ｘ  ｘ  ｘ  ｘ  ｘ  ｘ」の文字列が出現する｝ことであり、結論部（Ｙ）は｛システムコール「ｅｘｅｃｖｅ」において、ファイル名「ｘｘｘｘｘｘｘｘ」の文字列が出現する｝ことである。
【００６４】
図４（ｃ）は、図４（ａ）に示される順番でシステムコールおよび対応する文字列が存在した場合における、時系列アソシエーション分析の処理により生成されるルール（時系列アソシエーションルール生成結果）の一例を示す図である。
この例では、時系列アソシエーションルール生成結果として、１つのルールが生成される。この場合、ルール生成部１３は、この１つのルールを、マルウェア検知ルールとして、ルール検証部１４に出力する。
【００６５】
この１つのルールは、［｛システムコール「ｅｘｅｃｖｅ」において、ファイル名「ｘｘｘｘｘｘｘｘ」の文字列が出現する｝ことが成立した場合に、それより後の行で、｛システムコール「ｃｏｎｎｅｃｔ」において、通信相手（接続先のＩＰアドレスとポート番号）「ｘ  ｘ  ｘ  ｘ  ｘ  ｘ  ｘ」の文字列が出現する｝ことが成立する］というルールである。
このルールでは、前提部（Ｘ）は｛システムコール「ｅｘｅｃｖｅ」において、ファイル名「ｘｘｘｘｘｘｘｘ」の文字列が出現する｝ことであり、結論部（Ｙ）は｛システムコール「ｃｏｎｎｅｃｔ」において、通信相手（接続先のＩＰアドレスとポート番号）「ｘ  ｘ  ｘ  ｘ  ｘ  ｘ  ｘ」の文字列が出現する｝ことである。
【００６６】
ここで、時系列アソシエーション分析により取得されるルールでは、必ず、前提部（Ｘ）が発生する時間が、結論部（Ｙ）が発生する時間よりも前でなければならない。
なお、本実施形態では、早い行に出現する方が早い時間であるとしている。
【００６７】
ルール検証部１４は、ルール生成部１３から入力されたマルウェア検知ルール（本実施形態では、マルウェア検知ルールの候補）について、有効性を検証する。ルール検証部１４は、有効であると検証したマルウェア検知ルールをルールデータベース２２に記憶させる。
【００６８】
ここで、本実施形態では、ルール検証部１４は、アプリケーションデータベース２１のマルウェアデータベースに記憶されたマルウェアおよび正常アプリケーションデータベースに記憶された正常なアプリケーションを入力し、入力したマルウェアにマルウェア検知ルールを適用してマルウェアの検知を行った結果および入力した正常なアプリケーションに当該マルウェア検知ルールを適用してマルウェアの検知を行った結果に基づいて、当該マルウェア検知ルールが有効であるか否かを判定（検証）する。
【００６９】
この例では、ルール検証部１４は、ルール生成部１３により生成されて入力されたそれぞれのマルウェア検知ルールの有効性を検証するために、アプリケーションデータベース２１から入力したマルウェアのカーネルログと、アプリケーションデータベース２１から入力した正常なアプリケーションのカーネルログの両方を使用する。
具体的には、ルール検証部１４は、それぞれのマルウェア検知ルールについて、そのルールのパターンに該当するマルウェアが幾つ存在するか、および、そのルールのパターンに該当する正常なアプリケーションが幾つ存在するかを検出して、有効性の検証を行う。
【００７０】
図５は、マルウェアと正常なアプリケーションについてルールの該当数の一例を示す図である。
図５の例では、ルール検証部１４は、［｛システムコール「ｅｘｅｃｖｅ」において、ファイル名「ｘｘｘｘｘｘｘｘ」の文字列が出現する｝ことが成立した場合に、それより後の行で、｛システムコール「ｃｏｎｎｅｃｔ」において、通信相手（接続先のＩＰアドレスとポート番号）「ｘ  ｘ  ｘ  ｘ  ｘ  ｘ  ｘ」の文字列が出現する｝ことが成立する］というルールについて、有効性の検証を行っている。
【００７１】
そして、ルール検証部１４は、アプリケーションデータベース２１から入力されたｎ（ｎは１以上の整数）個のマルウェアのそれぞれについて、このルールが該当するか否かを判定し、この結果、このルールがｎ個のうちのａ（ａは０以上でｎ以下の整数）個のマルウェアに該当することを判定している。つまり、ａ／ｎ件該当している。
【００７２】
また、ルール検証部１４は、アプリケーションデータベース２１から入力されたｍ（ｍは１以上の整数）個の正常なアプリケーションのそれぞれについて、このルールが該当するか否かを判定し、この結果、このルールがｍ個のうちのｂ（ｂは０以上でｍ以下の整数）個のマルウェアに該当することを判定している。つまり、ｂ／ｍ件該当している。
【００７３】
一例として、ルール検証部１４は、マルウェアについて判定したルールの該当数の割合（ａ／ｎ）と、正常なアプリケーションについて判定した当該ルールの該当数の割合（ｂ／ｍ）とを比較して、マルウェアについて判定した当該ルールの該当数の割合（ａ／ｎ）の方が大きい場合に、当該ルールが有効であると検証する。
他の一例として、ルール検証部１４は、マルウェアについて判定したルールの該当数の割合（ａ／ｎ）があらかじめ定められた閾値（第１の閾値）を超え、且つ、正常なアプリケーションについて判定した当該ルールの該当数の割合（ｂ／ｍ）があらかじめ定められた閾値（第２の閾値）以下である場合に、当該ルールが有効であると検証する。
【００７４】
ここで、ルールが有効であるか否かを判定する方法としては、様々な方法が用いられてもよい。
例えば、本実施形態では、マルウェアにルールを適用した結果と正常なアプリケーションに当該ルールを適用した結果の両方に基づいて当該ルールが有効であるか否かを判定するが、他の構成例として、マルウェアにルールを適用した結果のみに基づいて当該ルールが有効であるか否かを判定する構成が用いられてもよく、あるいは、正常なアプリケーションにルールを適用した結果のみに基づいて当該ルールが有効であるか否かを判定する構成が用いられてもよい。
【００７５】
具体例として、ルール検証部１４は、マルウェアについて判定したルールの該当数の割合（ａ／ｎ）があらかじめ定められた閾値（第３の閾値）を超える場合に、当該ルールが有効であると検証する。
他の具体例として、ルール検証部１４は、正常なアプリケーションについて判定したルールの該当数の割合（ｂ／ｍ）があらかじめ定められた閾値（第４の閾値）以下である場合に、当該ルールが有効であると検証する。
【００７６】
なお、ルール検証部１４は、ルールの検証にマルウェアと正常なアプリケーションのうちの一方のみを使用する場合には、使用するもののみをアプリケーションデータベース２１から入力すればよい。
【００７７】
ルール検証部１４は、有効性を確認したルール（マルウェア検知ルール）をルールデータベース２２に記憶させて登録する。
これにより、ルールデータベース２２に記憶されたマルウェア検知ルールを使用して、アプリケーション（例えば、新たなアプリケーション）がマルウェアであるか否かの評価を行うことができる。
【００７８】
なお、例えば、ソフトウェア検知ルール生成装置１によりメールデータベース２２に記憶されたマルウェア検知ルールのうちで、ユーザ（ここでは、例えば、ルールを管理する者）により選択して取得したソフトウェア検知ルールを新たなアプリケーションの評価を行う際に利用することもできる。
【００７９】
ここで、この例では、アプリケーション（マルウェアも含む）を構成する挙動ログの中の一例であるカーネルログに関するマルウェア検知ルールを生成する場合を示したが、他の例として、挙動ログの中の他の例であるアプリケーションログやパケットキャプチャログなどに関するマルウェア検知ルールを生成することもできる。
【００８０】
また、他の例として、アプリケーション（マルウェアも含む）を構成する構成ファイルに関するマルウェア検知ルールを生成することもできる。具体例として、構成ファイルの中の一例であるマニフェストファイルなどに関するマルウェア検知ルールを生成することができる。この場合、例えば、ログにおける「システムコール」および「それに対応する文字列」の代わりに、構成ファイルにおける「抽出情報の種別（例えば、パーミッション情報などの種別）」および「それに対応する文字列」を用いることができる。
なお、文字列を抽出する対象として、ペイロードを用いることも可能である。
【００８１】
図６（ａ）、図６（ｂ）、図６（ｃ）、図６（ｄ）は、本実施形態に係るソフトウェア検知ルール生成装置１により行われる処理の全体の概略を示す図である。
図６（ａ）は、単一ログ／ファイル抽出部１１によりマルウェアから抽出される情報の例を示す。
具体的には、各マルウェアから単一の挙動ログまたは単一の構成ファイルが抽出され、ｚ（ｚは１以上の整数）個のマルウェアについて、ｚ個のログ／ファイル抽出情報（それぞれ、単一の挙動ログまたは単一の構成ファイル）１０１−１〜１０１−ｚが抽出される。
【００８２】
図６（ｂ）は、文字列抽出部１２により各ログ／ファイル抽出情報１０１−１〜１０１−ｚに基づいて抽出される文字列に関する情報の例を示す。
具体的には、各ログ／ファイル抽出情報１０１−１〜１０１−ｚに基づいて文字列に関する情報が抽出され、ｚ個のログ／ファイル抽出情報１０１−１〜１０１−ｚについて、ｚ個の文字列抽出情報（抽出した文字列に関する情報）１１１−１〜１１１−ｚが得られる。
【００８３】
図６（ｃ）は、ルール生成部１３により生成されるルール（マルウェア検知ルール）の例を示す。
具体的には、ルール生成部１３によりｚ個の文字列抽出情報１１１−１〜１１１−ｎに基づいてｋ（この例では、ｋは１以上の整数）個のルールが生成される。
【００８４】
図６（ｄ）は、ルール検証部１４により各ルールの有効性を検証した結果の例を示す。
具体的には、ルール検証部１４により、ｋ個のルールのそれぞれについて、ルールに該当するマルウェアの件数と、ルールに該当する正常なアプリケーションの件数が得られる。
なお、この例では、各ルールに該当するか否かを判定する対象とするマルウェアの数（図５に示されるｎに相当する値）および正常なアプリケーションの数（図５に示されるｍに相当する値）があらかじめ定められているとする。
【００８５】
本実施形態に係るソフトウェア検知ルール生成装置１は、図６（ａ）〜（ｄ）に示される一連の処理を行うことで、マルウェア検知ルールを生成することができ、さらに、生成したマルウェア検知ルールについて検証を行って、有効性があると判定されるマルウェア検知ルールのみを選び出すことができる。
【００８６】
以上のように、本実施形態に係るソフトウェア検知ルール生成装置１では、Ａｎｄｒｏｉｄ（登録商標）向けの悪意のあるアプリケーション（マルウェア）に関する挙動ログや構成ファイルの中から、マルウェアの検知に適した特徴的な文字列を自動的に抽出し、マルウェア検知ルールを自動的に生成する。
【００８７】
具体的には、本実施形態に係るソフトウェア検知ルール生成装置１では、単一ログ／ファイル抽出部１１が、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出し、文字列抽出部１２が、単一ログ／ファイル抽出部１１により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件（例えば、システムコール、パーミッション情報など）に応じた文字列を、２つ以上の異なる条件について抽出し、ルール生成部１３が、文字列抽出部１２により抽出された文字列に基づいて、２つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成し、ルール検証部１４が、ルール生成部１３により生成されたマルウェア検知ルールの有効性を検証する。これにより、マルウェアの検知を高精度に行うことができるソフトウェア検知ルール（マルウェア検知ルール）を生成する。
【００８８】
本実施形態に係るソフトウェア検知ルール生成装置１によれば、例えば、従来のシグネチャベースの方式では得ることができなかった、マルウェアに共通する文字列の組み合わせからなるルール（例えば、図４（ｂ）や図４（ｃ）に示されるルール）を得ることができる。これにより、より高精度にマルウェアやその亜種を発見することができ、さらに、積極的誤検知（Ｆａｌｓｅ  Ｐｏｓｉｔｉｖｅ）が少ないマルウェア検知ルールを生成することができる。
【００８９】
また、従来では、Ａｎｄｒｏｉｄ（登録商標）向けのアプリケーションが安全であるか否かを解析するオペレータ（人）が、マルウェアの検知に利用する文字列を、手動で抽出しており、マルウェア検知ルールを生成する作業にコストや時間を要していたが、本実施形態に係るソフトウェア検知ルール生成装置１によれば、このようなコストや時間を大幅に削減することができる。
【００９０】
本実施形態に係るソフトウェア検知ルール生成装置１によれば、マルウェアを構成する挙動ログと構成ファイルについて、単一の挙動ログまたは単一の構成ファイルを抽出して文字列を抽出する構成であるため、例えば、様々な種類の挙動ログや構成ファイルを抽出して文字列を抽出する場合と比べて、種類が少ないという点で、演算量を少なくすることが可能である。
【００９１】
具体例として、本実施形態に係るソフトウェア検知ルール生成装置１では、マルウェアの挙動ログや構成ファイルに含まれる、攻撃に関わる特徴的な文字列の抽出作業において、精度の高い文字列を自動的に抽出することができ、抽出した文字列を使用して、マルウェアに頻出する文字列の組み合わせを導出することにより、精度の高いマルウェア検知ルールを自動的に生成することができる。
例えば、挙動ログの一つであるカーネルログにはＡｎｄｒｏｉｄ（登録商標）のアプリケーションがいずれのファイルを実行したのかを示す記録や、誰と通信したのかを示す記録が含まれており、これらに関連する文字列を抽出することができる。また、構成ファイルの一つであるマニフェストファイルに含まれるパーミッション情報はＡｎｄｒｏｉｄ（登録商標）のアプリケーションに特有の文字列であり、マルウェアに用いられやすいパーミッション、要するに文字列を自動的に抽出することができる。
このような方法により、マルウェアの見逃し（Ｆａｌｓｅ  Ｎｅｇａｔｉｖｅ）や積極的誤検知（Ｆａｌｓｅ  Ｐｏｓｉｔｉｖｅ）を低減することができる。
【００９２】
ここで、本実施形態では、図４（ｂ）や図４（ｃ）に示されるマルウェア検知ルールのように、システムコールなどとそれに対応する文字列との対応を２つ組み合わせたルールを生成する場合を示したが、他の例として、システムコールなどとそれに対応する文字列との対応を３つ以上組み合わせたルールを生成することも可能である。
【００９３】
また、本実施形態では、ルール生成部１３によりマルウェア検知ルールを生成した後に、ルール生成部１３により生成したマルウェア検知ルールの有効性をルール検証部１４により検証する構成を示したが、他の構成例として、ソフトウェア検知ルール生成装置１にルール検証部１４を備えない構成を用いることも可能である。
ルール検証部１４を備えないソフトウェア検知ルール生成装置１では、ルール生成部１３により生成されたマルウェア検知ルールをルールデータベース２２に記憶させる。
なお、ソフトウェア検知ルール生成装置１にルール検証部１４を備えるか否かは任意であるが、通常は、ルール検証部１４を備えた方が、ソフトウェア検知ルール生成装置１により生成されるマルウェア検知ルール（ルール検証部１４を備えない場合にはルール生成部１３により生成されるマルウェア検知ルール、ルール検証部１４を備える場合にはルール検証部１４により有効であると検証されたマルウェア検知ルール）の精度が高くなると考えられる。
【００９４】
［第２実施形態］
図７は、本発明の第２実施形態に係るＡｎｄｒｏｉｄ（登録商標）のソフトウェア検知ルール生成装置３１の概略的な構成を示すブロック図である。
また、図７には、アプリケーションデータベース（アプリケーションＤＢ）５１と、ルールデータベース（ルールＤＢ）５２も示してある。
【００９５】
ここで、アプリケーションデータベース５１は、第１実施形態に係る図１に示されるアプリケーションデータベース２１と同様に、Ａｎｄｒｏｉｄ（登録商標）のアプリケーションを記憶する。そして、アプリケーションデータベース５１は、正常なアプリケーションを記憶するデータベース（正常アプリケーションデータベース）と、マルウェア（悪性のアプリケーション）を記憶するデータベース（マルウェアデータベース）と、正常なものであるかあるいは悪性のものであるかが不明なアプリケーションを記憶するデータベース（不明アプリケーションデータベース）と、を有する。
【００９６】
また、ルールデータベース５２は、第１実施形態に係る図１に示されるルールデータベース２２と同様に、ソフトウェア検知ルール生成装置３１により有効であると検証されたマルウェア検知ルールを記憶する。
【００９７】
本実施形態に係るソフトウェア検知ルール生成装置３１について詳しく説明する。
本実施形態に係るソフトウェア検知ルール生成装置３１は、複数ログ／ファイル抽出部４１と、文字列抽出部４２と、ルール生成部４３と、ルール検証部４４と、を備える。
【００９８】
本実施形態に係るソフトウェア検知ルール生成装置３１において行われる概略的な動作の例を示す。
複数ログ／ファイル抽出部４１は、アプリケーションデータベース２１のマルウェアデータベースに記憶されたマルウェアを入力し、入力したマルウェアを構成する挙動ログと構成ファイルについて、複数の種類のものを抽出する。複数ログ／ファイル抽出部４１は、抽出した挙動ログや構成ファイルを文字列抽出部４２に出力する。
【００９９】
ここで、複数ログ／ファイル抽出部４１が、マルウェアを構成する挙動ログと構成ファイルについて、複数を抽出する態様としては、様々な態様が用いられてもよい。第１の例として、複数ログ／ファイル抽出部４１が、１個のマルウェアについて、複数の種類の挙動ログを抽出する態様、あるいは、複数の種類の構成ファイルを抽出する態様、あるいは、１種類以上の挙動ログと１種類以上の構成ファイルを抽出する態様を用いることができる。第２の例として、複数ログ／ファイル抽出部４１が、あるマルウェアについて１種類の挙動ログまたは１種類の構成ファイルを抽出し、これとは異なる種類のもの（挙動ログまたは構成ファイル）を他のマルウェアについて抽出する態様を用いることができる。また、前記した第１の例と第２の例を組み合わせた態様を用いることもできる。
【０１００】
文字列抽出部４２は、複数ログ／ファイル抽出部４１から入力された複数種類の抽出結果（挙動ログや構成ファイル）を解析し、この複数種類の抽出結果から、あらかじめ定められた手順（条件）で、文字列を抽出する。文字列抽出部４２は、抽出した文字列に関する情報をルール生成部４３に出力する。
【０１０１】
ルール生成部４３は、文字列抽出部４２から入力された文字列に関する情報に基づいて、マルウェア検知ルールを生成する。ルール生成部４３は、生成したマルウェア検知ルールをルール検証部４４に出力する。
【０１０２】
ルール検証部４４は、第１実施形態に係る図１に示されるルール検証部１４と同様に、ルール生成部４３から入力されたマルウェア検知ルール（本実施形態では、マルウェア検知ルールの候補）について、有効性を検証する。ルール検証部４４は、有効であると検証したマルウェア検知ルールをルールデータベース５２に記憶させる。
【０１０３】
次に、本実施形態に係るソフトウェア検知ルール生成装置３１において行われる具体的な動作の例を示す。
本実施形態では、挙動ログの中の一例であるカーネルログおよび構成ファイルの中の一例であるマニフェストファイルに関するマルウェア検知ルールを生成する場合を示す。
【０１０４】
複数ログ／ファイル抽出部４１は、アプリケーションデータベース５１のマルウェアデータベースに記憶された１個のマルウェアを入力し、入力したマルウェアを構成するカーネルログおよびマニフェストファイルを抽出する。複数ログ／ファイル抽出部４１は、抽出したカーネルログおよびマニフェストファイルを文字列抽出部４２に出力する。
ここで、複数ログ／ファイル抽出部４１は、複数のマルウェアを入力する場合には、それぞれのマルウェアのカーネルログおよびマニフェストファイルを抽出して取得し、それぞれのマルウェアのカーネルログおよびマニフェストファイルを文字列抽出部４２に出力する。
【０１０５】
文字列抽出部４２は、複数ログ／ファイル抽出部４１から入力されたカーネルログおよびマニフェストファイルについて、それぞれを解析し、それぞれから、あらかじめ定められた手順（条件）で、マルウェア検知ルールの生成に必要となる文字列を抽出する。文字列抽出部４２は、抽出した文字列に関する情報をルール生成部４３に出力する。
ここで、文字列抽出部４２は、複数のマルウェアのカーネルログおよびマニフェストファイルを入力する場合には、それぞれのマルウェアのカーネルログおよびマニフェストファイルから文字列を抽出して取得し、それぞれのマルウェアのカーネルログおよびマニフェストファイルごとに、抽出した文字列に関する情報を文字列抽出部４２に出力する。
【０１０６】
文字列抽出の処理手順の例を示す。
カーネルログにおける文字列抽出の処理手順としては、第１実施形態で示した（カーネルログにおける文字列抽出の処理手順１）〜（カーネルログにおける文字列抽出の処理手順２）と同様な処理手順を用いることができる。具体例として、文字列抽出部４２は、カーネルログにおいて、システムコール「ｅｘｅｃｖｅ」の行の部分からファイル名のデータを文字列として抽出すること、あるいは、システムコール「ｃｏｎｎｅｃｔ」の行の部分から通信相手のデータを文字列として抽出することができる。
【０１０７】
また、文字列抽出の処理手順として、（マニフェストファイルにおける文字列抽出の処理手順１）〜（マニフェストファイルにおける文字列抽出の処理手順２）を示す。
（マニフェストファイルにおける文字列抽出の処理手順１）
文字列抽出部４２は、マルウェアのマニフェストファイルの全て（全ての行）を文字列抽出の対象とし、または、当該マニフェストファイルからあらかじめ定められた特定のパーミッション情報の行の部分を抽出して、抽出した特定のパーミッション情報の行の部分のみを文字列抽出の対象とする。
（マニフェストファイルにおける文字列抽出の処理手順２）
文字列抽出部４２は、文字列抽出の対象（マニフェストファイルの全ての行、または、特定のパーミッション情報の行の部分）を構成する各行から、あらかじめ定められた条件（この例では、パーミッション情報）に応じて文字列を抽出する。
【０１０８】
文字列抽出部４２からルール生成部４３に出力する、抽出した文字列に関する情報について説明する。
文字列抽出部４２は、抽出した文字列に関する情報として、カーネルログから抽出した文字列のデータと、この抽出に用いたシステムコールを含み、これら（文字列のデータとシステムコール）が対応付けられるとともに、マニフェストファイルから抽出した文字列のデータと、この抽出に用いた抽出情報の種別（この例では、「パーミッション情報」という種別）を含み、これら（文字列のデータと抽出情報の種別）が対応付けられる情報を用いる。これにより、抽出した文字列に関する情報に基づいて、カーネルログにおいてどのような文字列がどのようなシステムコールに出現したか、および、マニフェストファイルにおいてどのような文字列がどのような抽出情報の種別に出現したかを把握することができる。
【０１０９】
なお、抽出した文字列に関する情報としては、上記の例に限定されず、例えば、カーネルログについては、抽出した文字列のデータに、この抽出に用いたシステムコールを特定する情報が付与されれば、他の態様の情報が用いられてもよい。また、マニフェストファイルについては、抽出した文字列のデータに、この抽出に用いた抽出情報の種別を特定する情報が付与されれば、他の態様の情報が用いられてもよい。
【０１１０】
また、文字列抽出部４２は、一度出現して抽出した文字列の組み合わせ（例えば、同一のシステムコールと文字列との対応と、同一の文字列からなるパーミッション情報との組み合わせ）については、二度目以降に出現した場合には抽出しない（または、抽出したときには、削除する）。つまり、同じ文字列の組み合わせの情報については、最初の１回だけ採用する。
【０１１１】
なお、このような同じ文字列の組み合わせの情報の重複は、例えば、１個のマルウェアにおいて存在する場合や、あるいは、複数のマルウェアにわたって存在する場合があり得る。
また、他の構成例として、同じ文字列の組み合わせの情報について重複して抽出して採用する構成が用いられてもよい。
【０１１２】
また、文字列抽出部４２は、抽出した文字列に関する情報に、時系列順の番号（タイムスタンプ）の情報を付与して含めることもできる。これにより、１個のマルウェア（この例では、カーネルログあるいはマニフェストファイルのそれぞれ）において、抽出した文字列に関する情報が複数ある場合には、文字列抽出部４２は、タイムスタンプが付与された複数の抽出した文字列に関する情報を列挙して、時系列データとして生成する。
【０１１３】
なお、時系列順の番号としては、例えば、１個のマルウェア（この例では、カーネルログあるいはマニフェストファイルのそれぞれ）において、文字列（または、システムコールあるいは抽出情報の種別）が出現した行が早い方に小さい番号を付与し、連続の番号とする。この場合、２つ以上の文字列（または、システムコールあるいは抽出情報の種別）が同一の行に出現したときには、これら全てに同一の番号を付与する。
【０１１４】
ここで、本実施形態では、抽出した文字列に関する情報に基づいて、時系列的な処理（例えば、時系列アソシエーションの処理）を行うために、抽出した文字列に関する情報に時系列順の番号（タイムスタンプ）の情報を付与するが、他の構成例として、タイムスタンプの情報を使用する必要がない場合には、タイムスタンプの情報は用いられなくてもよい。
【０１１５】
他の例として、抽出した文字列に関する情報としては、上記の例に限定されず、それぞれの種類の挙動ログや構成ファイルについて独立した情報が用いられてもよい。例えば、抽出した文字列に関する情報として、カーネルログとマニフェストファイルのそれぞれについて独立した情報を用いることもできる。具体的には、文字列抽出部４２は、抽出した文字列に関する情報として、カーネルログから抽出した文字列のデータと、この抽出に用いたシステムコールを含み、これら（文字列のデータとシステムコール）が対応付けられる情報を用い、また、抽出した文字列に関する情報として、マニフェストファイルから抽出した文字列のデータと、この抽出に用いた抽出情報の種別（この例では、「パーミッション情報」という種別）を含み、これら（文字列のデータと抽出情報の種別）が対応付けられる情報を用いる。
【０１１６】
この他の例では、文字列抽出部４２は、一度出現して抽出した文字列（例えば、同一のシステムコールと文字列との対応、同一の文字列からなるパーミッション情報）については、二度目以降に出現した場合には抽出しない（または、抽出したときには、削除する）。つまり、ある１種類の挙動ログまたは構成ファイルについて、同じ文字列の情報については、最初の１回だけ採用する。
なお、このような同じ文字列の情報の重複は、例えば、１個のマルウェアにおいて存在する場合や、あるいは、複数のマルウェアにわたって存在する場合があり得る。
また、他の構成例として、同じ文字列の情報について重複して抽出して採用する構成が用いられてもよい。
【０１１７】
ルール生成部４３は、文字列抽出部４２から入力された文字列に関する情報に基づいて、マルウェア検知ルールを生成する。ルール生成部４３は、生成したマルウェア検知ルールをルール検証部４４に出力する。
本実施形態では、ルール生成部４３は、マルウェア検知ルールの生成対象となる全てのマルウェアについて、生成された時系列データを用いて、アソシエーション分析の処理または時系列アソシエーション分析の処理のうちのいずれかを行い、これによりマルウェア検知ルールを導出する。
【０１１８】
ここで、ルール生成部４３によりアソシエーション分析の処理または時系列アソシエーション分析の処理のうちのいずれを行うかについては、例えば、あらかじめいずれかの処理に設定されてもよく、または、ソフトウェア検知ルール生成装置３１に対するユーザ（人）による操作あるいは外部の装置からの制御（信号）に応じて、実行する処理を切り替えることが可能な構成が用いられてもよい。
【０１１９】
また、アソシエーション分析や時系列アソシエーション分析としては、それぞれ、一般的に知られる技術を用いることができる。
なお、これらの概略は、第１実施形態で説明したものと同様である。
【０１２０】
図８（ａ）、図８（ｂ）、図８（ｃ）を参照して、アソシエーション分析の具体例を示す。
図８（ａ）は、カーネルログにおけるシステムコールと文字列との対応の一例を示す図である。
システムコールのデータとして、｛システムコール「ｃｏｎｎｅｃｔ」において、通信相手（接続先のアドレスあるいは他の識別情報など）「ｅｘａｍｐｌｅ．ｃｏｍ」の文字列が出現する｝という情報が取得されているとする。
【０１２１】
図８（ｂ）は、マニフェストファイルにおけるパーミッション情報の文字列の一例を示す図である。
パーミッション情報のデータとして、｛パーミッション情報として、「ＲＥＡＤ＿ＰＨＯＮＥ＿ＳＴＡＴＥ」の文字列が出現する｝という情報が取得されているとする。
ここで、「ＲＥＡＤ＿ＰＨＯＮＥ＿ＳＴＡＴＥ」は、端末固有の情報を抽出するものである。
【０１２２】
図８（ｃ）は、図８（ａ）に示されるシステムコールおよび対応する文字列が存在するとともに、図８（ｂ）に示されるパーミッション情報の文字列が存在した場合における、アソシエーション分析の処理により生成されるルール（アソシエーションルール生成結果）の一例を示す図である。
この例では、アソシエーションルール生成結果として、１つのルールが生成される。この場合、ルール生成部４３は、この１つのルールを、マルウェア検知ルールとして、ルール検証部４４に出力する。
【０１２３】
このルールは、［カーネルログに関して｛システムコール「ｃｏｎｎｅｃｔ」において、通信相手（接続先のアドレスあるいは他の識別情報など）「ｅｘａｍｐｌｅ．ｃｏｍ」の文字列が出現する｝ことが成立するとともに、マニフェストファイルに関して｛パーミッション情報として、「ＲＥＡＤ＿ＰＨＯＮＥ＿ＳＴＡＴＥ」の文字列が出現する｝ことが成立する］というルールである。
【０１２４】
ここで、図８（ｃ）に示されるルールの例では、カーネルログにおいて特定のシステムコールの文字列が出現するとともに、マニフェストファイルにおいて特定のパーミッション情報の文字列が出現すればルールに該当する（ルールを満たす）こととし、これらの文字列などが出現する時間（本実施形態では、行）の前後については考慮していない。
なお、ここでは、アソシエーション分析の例を示したが、他の例として、時系列アソシエーション分析が用いられてもよい。
【０１２５】
ルール検証部４４は、ルール生成部４３から入力されたマルウェア検知ルール（本実施形態では、マルウェア検知ルールの候補）について、有効性を検証する。ルール検証部４４は、有効であると検証したマルウェア検知ルールをルールデータベース５２に記憶させる。
ここで、ルール検証部４４により行われる動作は、第１実施形態に係る図１に示されるルール検証部１４について説明したものと同様である。
【０１２６】
以上のように、本実施形態に係るソフトウェア検知ルール生成装置３１では、Ａｎｄｒｏｉｄ（登録商標）向けの悪意のあるアプリケーション（マルウェア）に関する挙動ログや構成ファイルの中から、マルウェアの検知に適した特徴的な文字列を自動的に抽出し、マルウェア検知ルールを自動的に生成する。
【０１２７】
具体的には、本実施形態に係るソフトウェア検知ルール生成装置３１では、複数ログ／ファイル抽出部４１が、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出し、文字列抽出部４２が、複数ログ／ファイル抽出部４１により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件（例えば、システムコール、パーミッション情報など）に応じた文字列を抽出し、ルール生成部４３が、文字列抽出部４２により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成し、ルール検証部４４が、ルール生成部４３により生成されたマルウェア検知ルールの有効性を検証する。これにより、マルウェアの検知を高精度に行うことができるソフトウェア検知ルール（マルウェア検知ルール）を生成する。
【０１２８】
本実施形態に係るソフトウェア検知ルール生成装置３１によれば、例えば、従来のシグネチャベースの方式では得ることができなかった、マルウェアに共通する文字列の組み合わせからなるルール（例えば、図８（ｃ）に示されるルール）を得ることができる。これにより、より高精度にマルウェアやその亜種を発見することができ、さらに、積極的誤検知（Ｆａｌｓｅ  Ｐｏｓｉｔｉｖｅ）が少ないマルウェア検知ルールを生成することができる。
【０１２９】
また、従来では、Ａｎｄｒｏｉｄ（登録商標）向けのアプリケーションが安全であるか否かを解析するオペレータ（人）が、マルウェアの検知に利用する文字列を、手動で抽出しており、マルウェア検知ルールを生成する作業にコストや時間を要していたが、本実施形態に係るソフトウェア検知ルール生成装置３１によれば、このようなコストや時間を大幅に削減することができる。
【０１３０】
ここで、本実施形態では、第１実施形態のようにそれぞれの種類ごとの挙動ログまたは構成ファイルに対して処理を行ってルールを生成するのではなく、複数の種類（全ての種類でもよい）の挙動ログまたは構成ファイルから文字列を抽出した後に、アソシエーション分析を行うことで、複数の種類（全ての種類でもよい）の挙動ログまたは構成ファイルを考慮したルールを生成する。これにより、例えば、カーネルログにおける文字列とマニフェストファイルにおけるパーミッション情報との組み合わせによるルールなどを生成することができる。
【０１３１】
具体的に、図８（ｃ）に示される例では、マルウェアを構成するマニフェストファイルの中に端末固有の情報を抽出する「ＲＥＡＤ＿ＰＨＯＮＥ＿ＳＴＡＴＥ」というパーミッション情報が存在し、且つ、当該マルウェアを構成するカーネルログのファイル中にアプリケーションの特定の通信先がある（この例では、ｃｏｎｎｅｃｔに対応してｅｘａｍｐｌｅ．ｃｏｍという文字列が存在する）という組み合わせのルールを生成することができる。この例では、「端末固有の情報を取得し、さらに、（例えば、マルウェアに頻出する）通信相手「ｅｘａｍｐｌｅ．ｃｏｍ」に対して通信する」ことからマルウェアの可能性が高いとみなしたルールを生成することができる。これにより、Ａｎｄｒｏｉｄ（登録商標）向けのアプリケーションに特化したマルウェアの検出を容易化することができる。
【０１３２】
具体例として、本実施形態に係るソフトウェア検知ルール生成装置３１では、マルウェアの挙動ログや構成ファイルに含まれる、攻撃に関わる特徴的な文字列の抽出作業において、精度の高い文字列を自動的に抽出することができ、抽出した文字列を使用して、マルウェアに頻出する文字列の組み合わせを導出することにより、精度の高いマルウェア検知ルールを自動的に生成することができる。
例えば、挙動ログの一つであるカーネルログにはＡｎｄｒｏｉｄ（登録商標）のアプリケーションがいずれのファイルを実行したのかを示す記録や、誰と通信したのかを示す記録が含まれており、これらに関連する文字列を抽出することができる。また、構成ファイルの一つであるマニフェストファイルに含まれるパーミッション情報はＡｎｄｒｏｉｄ（登録商標）のアプリケーションに特有の文字列であり、マルウェアに用いられやすいパーミッション、要するに文字列を自動的に抽出することができる。
このような方法により、マルウェアの見逃し（Ｆａｌｓｅ  Ｎｅｇａｔｉｖｅ）や積極的誤検知（Ｆａｌｓｅ  Ｐｏｓｉｔｉｖｅ）を低減することができる。
【０１３３】
このように、本実施形態に係るソフトウェア検知ルール生成装置３１では、マルウェアを構成する挙動ログや構成ファイルに含まれる文字列の組み合わせを導出する際に、第１実施形態のように単一の種類の挙動ログまたは構成ファイルに限らず、挙動ログや構成ファイルのうちの複数の種類のものの中に含まれる文字列の組み合わせを選択することにより、Ａｎｄｒｏｉｄ（登録商標）向けのアプリケーションに特有な複数種類の挙動ログや構成ファイルの関連性を反映させたマルウェア検知ルールを生成することができる。
【０１３４】
ここで、マルウェア検知ルールを生成するために文字列を抽出する対象とする挙動ログや構成ファイルとしては、任意のものが用いられてもよい。また、挙動ログや構成ファイルからどのような文字列を抽出するかについては、任意の態様が用いられてもよい。
また、本実施形態では、挙動ログと構成ファイルのうちの２種類（本実施形態では、カーネルログとマニフェストファイル）のそれぞれから抽出された文字列（合わせて、２つの文字列）を用いたルールを生成する場合を示したが、他の例として、挙動ログや構成ファイルのうちでルールを生成するために使用するものの種類の数は３種類以上であってもよく、また、ルールを生成するために使用する文字列の数は３つ以上であってもよい。
【０１３５】
また、本実施形態では、ルール検証部４４を備えたソフトウェア検知ルール生成装置３１を示したが、第１実施形態において述べたのと同様に、ルール検証部４４を備えないソフトウェア検知ルール生成装置３１を実施することも可能である。
【０１３６】
［第３実施形態］
図９は、本発明の第３実施形態に係るＡｎｄｒｏｉｄ（登録商標）のソフトウェア検知ルール生成システムの概略的な構成を示すブロック図である。
本実施形態に係るソフトウェア検知ルール生成システムは、アプリケーションデータベース（アプリケーションＤＢ）７１と、２つのソフトウェア検知ルール生成装置（第１のソフトウェア検知ルール生成装置６１、第２のソフトウェア検知ルール生成装置６２）と、ルールデータベース（ルールＤＢ）７２と、を備える。
【０１３７】
アプリケーションデータベース７１は、第１実施形態に係る図１に示されるアプリケーションデータベース２１と同様に、Ａｎｄｒｏｉｄ（登録商標）のアプリケーションを記憶する。そして、アプリケーションデータベース７１は、正常なアプリケーションを記憶するデータベース（正常アプリケーションデータベース）と、マルウェア（悪性のアプリケーション）を記憶するデータベース（マルウェアデータベース）と、正常なものであるかあるいは悪性のものであるかが不明なアプリケーションを記憶するデータベース（不明アプリケーションデータベース）と、を有する。
【０１３８】
第１のソフトウェア検知ルール生成装置６１は、第１実施形態に係る図１に示されるソフトウェア検知ルール生成装置１と概略的に同様な構成を有している。
そして、第１のソフトウェア検知ルール生成装置６１は、アプリケーションデータベース７１に記憶されたアプリケーションに基づいて、マルウェアを検知するルール（マルウェア検知ルール）をソフトウェア検知ルールとして生成し、生成したマルウェア検知ルールを検証する。第１のソフトウェア検知ルール生成装置６１は、有効であると検証されたマルウェア検知ルールをルールデータベース７２に記憶させる。
【０１３９】
第２のソフトウェア検知ルール生成装置６２は、第１実施形態に係る図１に示されるソフトウェア検知ルール生成装置１と概略的に同様な構成を有している。
そして、第２のソフトウェア検知ルール生成装置６２は、アプリケーションデータベース７１に記憶されたアプリケーションに基づいて、マルウェアを検知するルール（マルウェア検知ルール）をソフトウェア検知ルールとして生成し、生成したマルウェア検知ルールを検証する。第２のソフトウェア検知ルール生成装置６２は、有効であると検証されたマルウェア検知ルールをルールデータベース７２に記憶させる。
【０１４０】
ルールデータベース７２は、第１のソフトウェア検知ルール生成装置６１により有効であると検証されたマルウェア検知ルールを記憶するとともに、第２のソフトウェア検知ルール生成装置６２により有効であると検証されたマルウェア検知ルールを記憶する。
ルールデータベース７２に記憶されたマルウェア検知ルールは、マルウェアの検知に使用することができる。
【０１４１】
ここで、本実施形態では、アプリケーションデータベース７１とルールデータベース７２は、それぞれ、２つのソフトウェア検知ルール生成装置（第１のソフトウェア検知ルール生成装置６１、第２のソフトウェア検知ルール生成装置６２）に共通となっている。
【０１４２】
また、本実施形態では、第１のソフトウェア検知ルール生成装置６１においてマルウェア検知ルールを生成するために単一ログ／ファイル抽出部（図１に示される単一ログ／ファイル抽出部１１に相当するもの）によりマルウェアから抽出する挙動ログまたは構成ファイルの種類と、第２のソフトウェア検知ルール生成装置６２においてマルウェア検知ルールを生成するために単一ログ／ファイル抽出部（図１に示される単一ログ／ファイル抽出部１１に相当するもの）によりマルウェアから抽出する挙動ログまたは構成ファイルの種類とを異ならせて、設定してある。
【０１４３】
つまり、本実施形態では、第１のソフトウェア検知ルール生成装置６１と第２のソフトウェア検知ルール生成装置６２とで、マルウェアから異なる種類の挙動ログまたは構成ファイルを抽出して、マルウェア検知ルールを生成する。
これにより、ルールデータベース７２には、各ソフトウェア検知ルール生成装置６１、６２から、マルウェアから異なる種類の挙動ログまたは構成ファイルを抽出して生成されたマルウェア検知ルールが記憶される。
【０１４４】
具体例として、マルウェアを構成する挙動ログの例であるカーネルログ、アプリケーションログ、パケットキャプチャログなどや、マルウェアを構成する構成ファイルの例であるマニフェストファイルなどについて、２種類のものに関して、それぞれ、第１のソフトウェア検知ルール生成装置６１と第２のソフトウェア検知ルール生成装置６２により、マルウェア検知ルールを生成してルールデータベース７２に記憶させる。
そして、ルールデータベース７２に記憶されたマルウェア検知ルールについて、前記した２種類のものを複合的に利用することにより、Ａｎｄｒｏｉｄ（登録商標）向けのマルウェアを検出する。
【０１４５】
一例として、第１のソフトウェア検知ルール生成装置６１によりカーネルログに基づいてマルウェア検知ルールを生成し、第２のソフトウェア検知ルール生成装置６２によりマニフェストファイルに基づいてマルウェア検知ルールを生成する。これらのマルウェア検知ルールが記憶されたルールデータベース７２を利用して、例えば、まず、カーネルログから生成されたマルウェア検知ルールを使用してマルウェアである可能性があるアプリケーション（当該マルウェア検知ルールに該当するアプリケーション）を抽出し、その後、当該抽出したアプリケーションについて、マニフェストファイルから生成されたマルウェア検知ルールを使用してマルウェアであるか否かを判定する。
このように、複合的にマルウェア検知ルールを利用することで、例えば、積極的誤検知（Ｆａｌｓｅ  Ｐｏｓｉｔｉｖｅ）を低減しながら、高精度にマルウェアを検出することができる。
【０１４６】
以上のように、本実施形態に係るソフトウェア検知ルール生成システムでは、異なる種類の挙動ログや構成ファイルについて、マルウェア検知ルールを生成することができる。
従って、本実施形態に係るソフトウェア検知ルール生成システムによれば、異なる種類の挙動ログや構成ファイルについて生成されたマルウェア検知ルールを複合的に使用して、Ａｎｄｒｏｉｄ（登録商標）向けのアプリケーションに特化したマルウェアの検出を容易化することができる。
【０１４７】
ここで、本実施形態では、２つのソフトウェア検知ルール生成装置（第１のソフトウェア検知ルール生成装置６１、第２のソフトウェア検知ルール生成装置６２）を備える構成を示したが、他の構成例として、３つ以上のソフトウェア検知ルール生成装置を備える構成が用いられてもよく、この場合、例えば、これら３つ以上のソフトウェア検知ルール生成装置がアプリケーションデータベース７１とルールデータベース７２のそれぞれと接続される。
【０１４８】
また、本実施形態では、複数のソフトウェア検知ルール生成装置に共通のアプリケーションデータベース７１を備える構成を示したが、他の構成例として、ソフトウェア検知ルール生成装置ごとに異なるアプリケーションデータベースを備える構成が用いられてもよい。
【０１４９】
また、本実施形態では、複数のソフトウェア検知ルール生成装置のそれぞれとして、全て、第１実施形態に係る図１に示されるソフトウェア検知ルール生成装置１と概略的に同様な構成を有するものを用いる構成を示したが、他の構成例として、複数のソフトウェア検知ルール生成装置のうちの一部として、第１実施形態に係る図１に示されるソフトウェア検知ルール生成装置１と概略的に同様な構成を有するものを用い、残りとして、第２実施形態に係る図７に示されるソフトウェア検知ルール生成装置３１と概略的に同様な構成を有するものを用いる構成が実施されてもよい。さらに他の構成例として、複数のソフトウェア検知ルール生成装置のうちのそれぞれとして、全て、第２実施形態に係る図７に示されるソフトウェア検知ルール生成装置３１と概略的に同様な構成を有するものを用いる構成が実施されてもよい。
【０１５０】
また、本実施形態では、複数のソフトウェア検知ルール生成装置のそれぞれにルール検証部（例えば、図１に示されるルール検証部１４または図７に示されるルール検証部４４に相当するもの）を備える構成を示したが、他の構成例として、複数のソフトウェア検知ルール生成装置の一部または全部にルール検証部を備えない構成が実施されてもよい。
【０１５１】
（以上の実施形態のまとめ）
以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【０１５２】
また、以上に示した各実施形態に係る各装置の機能（例えば、図１や図７や図９に示されるソフトウェア検知ルール生成装置１、３１、６１、６２における単一ログ／ファイル抽出部１１または複数ログ／ファイル抽出部４１、文字列抽出部１２、４２、ルール生成部１３、４３、あるいはルール検証部１４、４４のうちの１つ以上の機能）を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、処理を行ってもよい。
【０１５３】
なお、ここで言う「コンピュータシステム」とは、オペレーティング・システム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ；ＯＳ）や周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことを言う。
【０１５４】
さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））のように、一定時間プログラムを保持しているものも含むものとする。
また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことを言う。
また、上記のプログラムは、前述した機能の一部を実現するためのものであっても良い。
さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【０１５５】
１、３１、６１、６２…ソフトウェア検知ルール生成装置、１１…単一ログ／ファイル抽出部、１２、４２…文字列抽出部、１３、４３…ルール生成部、１４、４４…ルール検証部、２１、５１、７１…アプリケーションデータベース、２２、５２、７２…ルールデータベース、４１…複数ログ／ファイル抽出部
【図１】
0005732372.tif 000002
【図２】
0005732372.tif 000003
【図３】
0005732372.tif 000004
【図４】
0005732372.tif 000005
【図５】
0005732372.tif 000006
【図６】
0005732372.tif 000007
【図７】
0005732372.tif 000008
【図８】
0005732372.tif 000009
【図９】
0005732372.tif 000010