マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出する単一ログ/ファイル抽出部と、前記単一ログ/ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、2つ以上の異なる条件について抽出する文字列抽出部と、前記文字列抽出部により抽出された文字列に基づいて、2つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するルール生成部と、を備えたことを特徴とするソフトウェア検知ルール生成装置。マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出する複数ログ/ファイル抽出部と、前記複数ログ/ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出する文字列抽出部と、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するルール生成部と、を備えたことを特徴とするソフトウェア検知ルール生成装置。さらに、前記ルール生成部により生成されたマルウェア検知ルールの有効性を検証するルール検証部を備えた、ことを特徴とする請求項1または請求項2に記載のソフトウェア検知ルール生成装置。単一ログ/ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出し、文字列抽出部が、前記単一ログ/ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、2つ以上の異なる条件について抽出し、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、2つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成する、ことを特徴とするソフトウェア検知ルール生成方法。複数ログ/ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出し、文字列抽出部が、前記複数ログ/ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出し、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成する、ことを特徴とするソフトウェア検知ルール生成方法。単一ログ/ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出するステップと、文字列抽出部が、前記単一ログ/ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、2つ以上の異なる条件について抽出するステップと、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、2つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するステップと、をコンピュータに実行させるためのソフトウェア検知ルール生成プログラム。複数ログ/ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出するステップと、文字列抽出部が、前記複数ログ/ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出するステップと、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するステップと、をコンピュータに実行させるためのソフトウェア検知ルール生成プログラム。上述のように、マルウェアの検知に利用する攻撃に関連する文字列は、Android登録商標向けのアプリケーションが安全であるか否かを解析するオペレータが手動で抽出しており、さらに、その文字列は正規表現で記述することが可能な単純な文字列である。このため、類似の挙動を示すマルウェアにその文字列が含まれているとは限らず、マルウェアの検知において見逃しFalseNegativeが生じるという問題がある。また、正常なアプリケーションがその文字列に該当する可能性も高くなり、マルウェアの検知において積極的誤検知FalsePositiveが生じるという問題がある。本発明は、このような事情を考慮してなされたもので、マルウェアの検知を高精度に行うことができるソフトウェア検知ルールマルウェアを検知するルールを生成することができるソフトウェア検知ルール生成装置、ソフトウェア検知ルール生成方法およびソフトウェア検知ルール生成プログラムを提供することを課題とする。1上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成装置は、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出する単一ログ/ファイル抽出部と、前記単一ログ/ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、2つ以上の異なる条件について抽出する文字列抽出部と、前記文字列抽出部により抽出された文字列に基づいて、2つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するルール生成部と、を備えたことを特徴とする。2上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成装置は、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出する複数ログ/ファイル抽出部と、前記複数ログ/ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出する文字列抽出部と、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するルール生成部と、を備えたことを特徴とする。3本発明は、上記した1または上記した2に記載のソフトウェア検知ルール生成装置において、さらに、前記ルール生成部により生成されたマルウェア検知ルールの有効性を検証するルール検証部を備えた、ことを特徴とする。4上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成方法は、単一ログ/ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出し、文字列抽出部が、前記単一ログ/ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、2つ以上の異なる条件について抽出し、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、2つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成する、ことを特徴とする。5上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成方法は、複数ログ/ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出し、文字列抽出部が、前記複数ログ/ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出し、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成する、ことを特徴とする。6上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成プログラムは、単一ログ/ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出するステップと、文字列抽出部が、前記単一ログ/ファイル抽出部により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件に応じた文字列を、2つ以上の異なる条件について抽出するステップと、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、2つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するステップと、をコンピュータに実行させるためのソフトウェア検知ルール生成プログラムである。7上記の課題を解決するために、本発明に係るソフトウェア検知ルール生成プログラムは、複数ログ/ファイル抽出部が、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出するステップと、文字列抽出部が、前記複数ログ/ファイル抽出部により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件に応じた文字列を抽出するステップと、ルール生成部が、前記文字列抽出部により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成するステップと、をコンピュータに実行させるためのソフトウェア検知ルール生成プログラムである。本発明によれば、マルウェアの検知を高精度に行うことができるソフトウェア検知ルールマルウェアを検知するルールを生成することができる。以下、図面を参照し、本発明の実施形態について説明する。[第1実施形態]図1は、本発明の第1実施形態に係るAndroid登録商標のソフトウェア検知ルール生成装置1の概略的な構成を示すブロック図である。また、図1には、アプリケーションデータベースアプリケーションDB21と、ルールデータベースルールDB22も示してある。アプリケーションデータベース21は、Android登録商標のアプリケーションを記憶する。本実施形態では、アプリケーションデータベース21は、正常なアプリケーションを記憶するデータベース正常アプリケーションデータベースと、マルウェア悪性のアプリケーションを記憶するデータベースマルウェアデータベースと、正常なものであるかあるいは悪性のものであるかが不明なアプリケーションを記憶するデータベース不明アプリケーションデータベースと、を有する。ここで、それぞれのアプリケーションマルウェアも含むのデータは、挙動ログのデータと、構成ファイルのデータから構成される。また、アプリケーションデータベース21に記憶されるそれぞれのアプリケーションが正常なものであるか、悪性のものであるか、あるいは、いずれであるかが不明なものであるかは、任意の手法により、あらかじめ確認されて既知になっているとする。ソフトウェア検知ルール生成装置1は、アプリケーションデータベース21に記憶されたアプリケーションに基づいて、マルウェアを検知するルールマルウェア検知ルールをソフトウェア検知ルールとして生成し、生成したマルウェア検知ルールを検証する。ソフトウェア検知ルール生成装置1は、有効であると検証されたマルウェア検知ルールをルールデータベース22に記憶させる。ルールデータベース22は、ソフトウェア検知ルール生成装置1により有効であると検証されたマルウェア検知ルールを記憶する。ルールデータベース22に記憶されたマルウェア検知ルールは、マルウェアの検知に使用することができる。本実施形態に係るソフトウェア検知ルール生成装置1について詳しく説明する。本実施形態に係るソフトウェア検知ルール生成装置1は、単一ログ/ファイル抽出部11と、文字列抽出部12と、ルール生成部13と、ルール検証部14と、を備える。本実施形態に係るソフトウェア検知ルール生成装置1において行われる概略的な動作の例を示す。単一ログ/ファイル抽出部11は、アプリケーションデータベース21のマルウェアデータベースに記憶されたマルウェアを入力し、入力したマルウェアを構成する挙動ログと構成ファイルについて、単一の挙動ログまたは単一の構成ファイルを抽出する。単一ログ/ファイル抽出部11は、抽出した単一の挙動ログまたは単一の構成ファイルを文字列抽出部12に出力する。ここで、抽出する単一の挙動ログまたは単一の構成ファイルの種類は、例えば、あらかじめ定められている。文字列抽出部12は、単一ログ/ファイル抽出部11から入力された単一の挙動ログまたは単一の構成ファイルを解析し、この単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた手順条件で、文字列を抽出する。文字列抽出部12は、抽出した文字列に関する情報をルール生成部13に出力する。ルール生成部13は、文字列抽出部12から入力された文字列に関する情報に基づいて、マルウェア検知ルールを生成作成する。ルール生成部13は、生成したマルウェア検知ルールをルール検証部14に出力する。ルール検証部14は、ルール生成部13から入力されたマルウェア検知ルール本実施形態では、マルウェア検知ルールの候補について、有効性を検証する。ルール検証部14は、有効であると検証したマルウェア検知ルールをルールデータベース22に記憶させる。ここで、本実施形態では、ルール検証部14は、アプリケーションデータベース21のマルウェアデータベースに記憶されたマルウェアおよび正常アプリケーションデータベースに記憶された正常なアプリケーションを入力し、入力したマルウェアにマルウェア検知ルールを適用してマルウェアの検知を行った結果および入力した正常なアプリケーションに当該マルウェア検知ルールを適用してマルウェアの検知を行った結果に基づいて、当該マルウェア検知ルールが有効であるか否かを判定検証する。なお、アプリケーションデータベース21のマルウェアデータベースに複数のマルウェアが記憶されている場合には、例えば、個々のマルウェアについて、単一ログ/ファイル抽出部11と文字列抽出部12による処理を行い、その後、これら複数のマルウェアについての処理結果に基づいて、ルール生成部13による処理を行い、その後、この処理結果に基づいて、ルール検証部14による処理を行う。次に、本実施形態に係るソフトウェア検知ルール生成装置1において行われる具体的な動作の例を示す。本実施形態では、挙動ログの中の一例であるカーネルログに関するマルウェア検知ルールを生成する場合を示す。単一ログ/ファイル抽出部11は、アプリケーションデータベース21のマルウェアデータベースに記憶された1個のマルウェアを入力し、入力したマルウェアを構成するカーネルログを抽出する。単一ログ/ファイル抽出部11は、抽出したカーネルログを文字列抽出部12に出力する。ここで、単一ログ/ファイル抽出部11は、複数のマルウェアを入力する場合には、それぞれのマルウェアのカーネルログを抽出して取得し、それぞれのマルウェアのカーネルログを文字列抽出部12に出力する。文字列抽出部12は、単一ログ/ファイル抽出部11から入力されたカーネルログを解析し、このカーネルログから、あらかじめ定められた手順条件で、マルウェア検知ルールの生成に必要となる文字列を抽出する。文字列抽出部12は、抽出した文字列に関する情報をルール生成部13に出力する。ここで、文字列抽出部12は、複数のマルウェアのカーネルログを入力する場合には、それぞれのマルウェアのカーネルログから文字列を抽出して取得し、それぞれのマルウェアのカーネルログごとに、抽出した文字列に関する情報を文字列抽出部12に出力する。文字列抽出の処理手順として、カーネルログにおける文字列抽出の処理手順1~カーネルログにおける文字列抽出の処理手順2を示す。カーネルログにおける文字列抽出の処理手順1文字列抽出部12は、マルウェアのカーネルログの全て全ての行を文字列抽出の対象とし、または、当該カーネルログからあらかじめ定められた特定のシステムコールの行の部分を抽出して、抽出した特定のシステムコールの行の部分のみを文字列抽出の対象とする。ここで、特定のシステムコールとしては、任意のものが用いられてもよく、例えば、ファイルの読み書きに関するシステムコール、あるいは、外部との通信に関するシステムコールなどを用いることができる。カーネルログにおける文字列抽出の処理手順2文字列抽出部12は、文字列抽出の対象カーネルログの全ての行、または、特定のシステムコールの行の部分を構成する各行から、あらかじめ定められた条件この例では、システムコールに応じて文字列を抽出する。ここで、抽出する文字列としては、任意のものが用いられてもよく、例えば、ファイル名、あるいは、通信相手などの文字列を用いることができる。一例として、特定のシステムコールとしてexecveを用いる場合を示す。このシステムコールexecveは、アプリケーションがファイルを実行する際にログに出現する。したがって、文字列抽出部12は、このシステムコールexecveの行の部分から、ファイル名のデータを文字列として抽出する。図2は、文字列抽出部12におけるシステムコールexecveに関する入力の例と出力の例を示す図である。図2に示される入力は、システムコールexecveの行の部分に相当する。そして、文字列抽出部12は、図2に示される入力から、図2に示される出力sleepというファイル名のデータを文字列のデータとして抽出する。他の一例として、特定のシステムコールとしてconnectを用いる場合を示す。このシステムコールconnectは、外部のネットワークとの接続の際に出現する。したがって、文字列抽出部12は、このシステムコールconnectの行の部分から、通信相手のデータを文字列として抽出する。この通信相手のデータとして、本実施形態では、接続先のIPアドレスとポート番号を用いる。図3は、文字列抽出部12におけるシステムコールconnectに関する入力の例と出力の例を示す図である。図3に示される入力は、システムコールconnectの行の部分に相当する。そして、文字列抽出部12は、図3に示される入力から、図3に示される出力210.196.3.183_80という接続先のIPアドレスとポート番号のデータを文字列のデータとして抽出する。文字列抽出部12からルール生成部13に出力する、抽出した文字列に関する情報について説明する。文字列抽出部12は、抽出した文字列に関する情報として、抽出した文字列のデータと、この抽出に用いたシステムコールを含み、これら文字列のデータとシステムコールが対応付けられる情報を用いる。これにより、抽出した文字列に関する情報に基づいて、どのような文字列がどのようなシステムコールに出現したかを把握することができる。なお、抽出した文字列に関する情報としては、上記の例に限定されず、例えば、抽出した文字列のデータに、この抽出に用いたシステムコールを特定する情報が付与されれば、他の態様の情報が用いられてもよい。また、文字列抽出部12は、一度出現して抽出した文字列例えば、同一のシステムコールと文字列との対応については、二度目以降に出現した場合には抽出しないまたは、抽出したときには、削除する。つまり、同じ文字列の情報については、最初の1回だけ採用する。なお、このような同じ文字列の情報の重複は、例えば、1個のマルウェアにおいて存在する場合や、あるいは、複数のマルウェアにわたって存在する場合があり得る。また、他の構成例として、同じ文字列の情報について重複して抽出して採用する構成が用いられてもよい。また、文字列抽出部12は、抽出した文字列に関する情報に、時系列順の番号タイムスタンプの情報を付与して含める。これにより、1個のマルウェアこの例では、カーネルログにおいて、抽出した文字列に関する情報が複数ある場合には、文字列抽出部12は、タイムスタンプが付与された複数の抽出した文字列に関する情報を列挙して、時系列データとして生成する。なお、時系列順の番号としては、例えば、1個のマルウェアこの例では、カーネルログにおいて、文字列または、システムコールが出現した行が早い方に小さい番号を付与し、連続の番号とする。この場合、2つ以上の文字列または、システムコールが同一の行に出現したときには、これら全てに同一の番号を付与する。ここで、本実施形態では、抽出した文字列に関する情報に基づいて、時系列的な処理例えば、時系列アソシエーションの処理を行うために、抽出した文字列に関する情報に時系列順の番号タイムスタンプの情報を付与するが、他の構成例として、タイムスタンプの情報を使用する必要がない場合には、タイムスタンプの情報は用いられなくてもよい。ルール生成部13は、文字列抽出部12から入力された文字列に関する情報に基づいて、マルウェア検知ルールを生成する。ルール生成部13は、生成したマルウェア検知ルールをルール検証部14に出力する。本実施形態では、ルール生成部13は、マルウェア検知ルールの生成対象となる全てのマルウェアについて、生成された時系列データを用いて、アソシエーション分析の処理または時系列アソシエーション分析の処理のうちのいずれかを行い、これによりマルウェア検知ルールを導出する。ここで、ルール生成部13によりアソシエーション分析の処理または時系列アソシエーション分析の処理のうちのいずれを行うかについては、例えば、あらかじめいずれかの処理に設定されてもよく、または、ソフトウェア検知ルール生成装置1に対するユーザ人による操作あるいは外部の装置からの制御信号に応じて、実行する処理を切り替えることが可能な構成が用いられてもよい。また、アソシエーション分析や時系列アソシエーション分析としては、それぞれ、一般的に知られる技術を用いることができる。このため、本実施形態では、これらの概略を説明する。アソシエーション分析の説明アソシエーション分析は、組み合わせアソシエーションルールを効率的に発見する方法である。前提部antecedentと結論部consequenceから構成され、前提部と結論部の組み合わせで1つのルールとなる。信頼度C:Confidenceは、ルールの前提Xが発生したときに、結論Yが起こる割合を示す。つまり、信頼度の数値が高いほど、ルールの前提と結論との結び付きが強いことを意味する。信頼度は、式1で表される。信頼度={前提Xと結論Yを共に含むトランザクションの件数}/{前提Xを含むトランザクションの件数}1支持度S:Supportは、条件となる前提Xと結論Yを同時に満たすトランザクションが全てのトランザクションに占める割合を示す。支持度は、式2で表される。支持度={前提Xと結論Yを共に含むトランザクションの件数}/{全てのトランザクションの件数}2アソシエーション分析では、信頼度と支持度を利用して、ルールを生成する。ルールの生成には、アプリオリアルゴリズムを用いる。アプリオリアルゴリズムは、信頼度と支持度に閾値を設け、その閾値を超える信頼度と支持度を持つルールを重要なものと見なすようにするアルゴリズムである。なお、閾値は、ユーザが指定する。さらに、アソシエーション分析では、アプリオリアルゴリズムを用いて生成したルールここでは、ルールの候補のうちで、リフト値L:Liftを計算して、リフト値が所定の閾値を超えたものルールの候補のみをルールとして出力する。リフト値は、式3で表される。リフト値=信頼度X→Y/結論Y3本実施形態では、文字列抽出部12によりアソシエーション分析の処理を行って、各マルウェアに出現する文字列の組み合わせを抽出することにより、効率的にマルウェアに関するルールマルウェア検知ルールを生成することができる。ここで、アソシエーション分析による頻出パターン分析においては、信頼度C、支持度S、リフト値L等を用いて有効性を判断するが、一例として、次のような値を利用することができる。C=0S=0L=1時系列アソシエーション分析の説明時系列アソシエーション分析は、アソシエーション分析の際に、時間的な前後関係を考慮して、ルールを生成する方法である。図4a、図4b、図4cを参照して、アソシエーション分析の具体例および時系列アソシエーション分析の具体例を示す。図4aは、システムコールの時系列データの一例を示す図である。システムコールの時系列データとして、時系列の1番目に、{システムコールexecveにおいて、ファイル名xxxxxxxxの文字列が出現する}という情報が取得されており、時系列の2番目に、{システムコールconnectにおいて、通信相手接続先のIPアドレスとポート番号xxxxxxxの文字列が出現する}という情報が取得されているとする。図4bは、図4aに示される順番でシステムコールおよび対応する文字列が存在した場合における、アソシエーション分析の処理により生成されるルールアソシエーションルール生成結果の一例を示す図である。この例では、アソシエーションルール生成結果として、2つのルールが生成される。この場合、ルール生成部13は、これら2つのルールを、マルウェア検知ルールとして、ルール検証部14に出力する。1つ目のルールは、[{システムコールexecveにおいて、ファイル名xxxxxxxxの文字列が出現する}ことが成立した場合に、それより後の行で、{システムコールconnectにおいて、通信相手接続先のIPアドレスとポート番号xxxxxxxの文字列が出現する}ことが成立する]というルールである。このルールでは、前提部Xは{システムコールexecveにおいて、ファイル名xxxxxxxxの文字列が出現する}ことであり、結論部Yは{システムコールconnectにおいて、通信相手接続先のIPアドレスとポート番号xxxxxxxの文字列が出現する}ことである。2つ目のルールは、[{システムコールconnectにおいて、通信相手接続先のIPアドレスとポート番号xxxxxxxの文字列が出現する}ことが成立した場合に、それより後の行で、{システムコールexecveにおいて、ファイル名xxxxxxxxの文字列が出現する}ことが成立する]というルールである。このルールでは、前提部Xは{システムコールconnectにおいて、通信相手接続先のIPアドレスとポート番号xxxxxxxの文字列が出現する}ことであり、結論部Yは{システムコールexecveにおいて、ファイル名xxxxxxxxの文字列が出現する}ことである。図4cは、図4aに示される順番でシステムコールおよび対応する文字列が存在した場合における、時系列アソシエーション分析の処理により生成されるルール時系列アソシエーションルール生成結果の一例を示す図である。この例では、時系列アソシエーションルール生成結果として、1つのルールが生成される。この場合、ルール生成部13は、この1つのルールを、マルウェア検知ルールとして、ルール検証部14に出力する。この1つのルールは、[{システムコールexecveにおいて、ファイル名xxxxxxxxの文字列が出現する}ことが成立した場合に、それより後の行で、{システムコールconnectにおいて、通信相手接続先のIPアドレスとポート番号xxxxxxxの文字列が出現する}ことが成立する]というルールである。このルールでは、前提部Xは{システムコールexecveにおいて、ファイル名xxxxxxxxの文字列が出現する}ことであり、結論部Yは{システムコールconnectにおいて、通信相手接続先のIPアドレスとポート番号xxxxxxxの文字列が出現する}ことである。ここで、時系列アソシエーション分析により取得されるルールでは、必ず、前提部Xが発生する時間が、結論部Yが発生する時間よりも前でなければならない。なお、本実施形態では、早い行に出現する方が早い時間であるとしている。ルール検証部14は、ルール生成部13から入力されたマルウェア検知ルール本実施形態では、マルウェア検知ルールの候補について、有効性を検証する。ルール検証部14は、有効であると検証したマルウェア検知ルールをルールデータベース22に記憶させる。ここで、本実施形態では、ルール検証部14は、アプリケーションデータベース21のマルウェアデータベースに記憶されたマルウェアおよび正常アプリケーションデータベースに記憶された正常なアプリケーションを入力し、入力したマルウェアにマルウェア検知ルールを適用してマルウェアの検知を行った結果および入力した正常なアプリケーションに当該マルウェア検知ルールを適用してマルウェアの検知を行った結果に基づいて、当該マルウェア検知ルールが有効であるか否かを判定検証する。この例では、ルール検証部14は、ルール生成部13により生成されて入力されたそれぞれのマルウェア検知ルールの有効性を検証するために、アプリケーションデータベース21から入力したマルウェアのカーネルログと、アプリケーションデータベース21から入力した正常なアプリケーションのカーネルログの両方を使用する。具体的には、ルール検証部14は、それぞれのマルウェア検知ルールについて、そのルールのパターンに該当するマルウェアが幾つ存在するか、および、そのルールのパターンに該当する正常なアプリケーションが幾つ存在するかを検出して、有効性の検証を行う。図5は、マルウェアと正常なアプリケーションについてルールの該当数の一例を示す図である。図5の例では、ルール検証部14は、[{システムコールexecveにおいて、ファイル名xxxxxxxxの文字列が出現する}ことが成立した場合に、それより後の行で、{システムコールconnectにおいて、通信相手接続先のIPアドレスとポート番号xxxxxxxの文字列が出現する}ことが成立する]というルールについて、有効性の検証を行っている。そして、ルール検証部14は、アプリケーションデータベース21から入力されたnnは1以上の整数個のマルウェアのそれぞれについて、このルールが該当するか否かを判定し、この結果、このルールがn個のうちのaaは0以上でn以下の整数個のマルウェアに該当することを判定している。つまり、a/n件該当している。また、ルール検証部14は、アプリケーションデータベース21から入力されたmmは1以上の整数個の正常なアプリケーションのそれぞれについて、このルールが該当するか否かを判定し、この結果、このルールがm個のうちのbbは0以上でm以下の整数個のマルウェアに該当することを判定している。つまり、b/m件該当している。一例として、ルール検証部14は、マルウェアについて判定したルールの該当数の割合a/nと、正常なアプリケーションについて判定した当該ルールの該当数の割合b/mとを比較して、マルウェアについて判定した当該ルールの該当数の割合a/nの方が大きい場合に、当該ルールが有効であると検証する。他の一例として、ルール検証部14は、マルウェアについて判定したルールの該当数の割合a/nがあらかじめ定められた閾値第1の閾値を超え、且つ、正常なアプリケーションについて判定した当該ルールの該当数の割合b/mがあらかじめ定められた閾値第2の閾値以下である場合に、当該ルールが有効であると検証する。ここで、ルールが有効であるか否かを判定する方法としては、様々な方法が用いられてもよい。例えば、本実施形態では、マルウェアにルールを適用した結果と正常なアプリケーションに当該ルールを適用した結果の両方に基づいて当該ルールが有効であるか否かを判定するが、他の構成例として、マルウェアにルールを適用した結果のみに基づいて当該ルールが有効であるか否かを判定する構成が用いられてもよく、あるいは、正常なアプリケーションにルールを適用した結果のみに基づいて当該ルールが有効であるか否かを判定する構成が用いられてもよい。具体例として、ルール検証部14は、マルウェアについて判定したルールの該当数の割合a/nがあらかじめ定められた閾値第3の閾値を超える場合に、当該ルールが有効であると検証する。他の具体例として、ルール検証部14は、正常なアプリケーションについて判定したルールの該当数の割合b/mがあらかじめ定められた閾値第4の閾値以下である場合に、当該ルールが有効であると検証する。なお、ルール検証部14は、ルールの検証にマルウェアと正常なアプリケーションのうちの一方のみを使用する場合には、使用するもののみをアプリケーションデータベース21から入力すればよい。ルール検証部14は、有効性を確認したルールマルウェア検知ルールをルールデータベース22に記憶させて登録する。これにより、ルールデータベース22に記憶されたマルウェア検知ルールを使用して、アプリケーション例えば、新たなアプリケーションがマルウェアであるか否かの評価を行うことができる。なお、例えば、ソフトウェア検知ルール生成装置1によりメールデータベース22に記憶されたマルウェア検知ルールのうちで、ユーザここでは、例えば、ルールを管理する者により選択して取得したソフトウェア検知ルールを新たなアプリケーションの評価を行う際に利用することもできる。ここで、この例では、アプリケーションマルウェアも含むを構成する挙動ログの中の一例であるカーネルログに関するマルウェア検知ルールを生成する場合を示したが、他の例として、挙動ログの中の他の例であるアプリケーションログやパケットキャプチャログなどに関するマルウェア検知ルールを生成することもできる。また、他の例として、アプリケーションマルウェアも含むを構成する構成ファイルに関するマルウェア検知ルールを生成することもできる。具体例として、構成ファイルの中の一例であるマニフェストファイルなどに関するマルウェア検知ルールを生成することができる。この場合、例えば、ログにおけるシステムコールおよびそれに対応する文字列の代わりに、構成ファイルにおける抽出情報の種別例えば、パーミッション情報などの種別およびそれに対応する文字列を用いることができる。なお、文字列を抽出する対象として、ペイロードを用いることも可能である。図6a、図6b、図6c、図6dは、本実施形態に係るソフトウェア検知ルール生成装置1により行われる処理の全体の概略を示す図である。図6aは、単一ログ/ファイル抽出部11によりマルウェアから抽出される情報の例を示す。具体的には、各マルウェアから単一の挙動ログまたは単一の構成ファイルが抽出され、zzは1以上の整数個のマルウェアについて、z個のログ/ファイル抽出情報それぞれ、単一の挙動ログまたは単一の構成ファイル101-1~101-zが抽出される。図6bは、文字列抽出部12により各ログ/ファイル抽出情報101-1~101-zに基づいて抽出される文字列に関する情報の例を示す。具体的には、各ログ/ファイル抽出情報101-1~101-zに基づいて文字列に関する情報が抽出され、z個のログ/ファイル抽出情報101-1~101-zについて、z個の文字列抽出情報抽出した文字列に関する情報111-1~111-zが得られる。図6cは、ルール生成部13により生成されるルールマルウェア検知ルールの例を示す。具体的には、ルール生成部13によりz個の文字列抽出情報111-1~111-nに基づいてkこの例では、kは1以上の整数個のルールが生成される。図6dは、ルール検証部14により各ルールの有効性を検証した結果の例を示す。具体的には、ルール検証部14により、k個のルールのそれぞれについて、ルールに該当するマルウェアの件数と、ルールに該当する正常なアプリケーションの件数が得られる。なお、この例では、各ルールに該当するか否かを判定する対象とするマルウェアの数図5に示されるnに相当する値および正常なアプリケーションの数図5に示されるmに相当する値があらかじめ定められているとする。本実施形態に係るソフトウェア検知ルール生成装置1は、図6a~dに示される一連の処理を行うことで、マルウェア検知ルールを生成することができ、さらに、生成したマルウェア検知ルールについて検証を行って、有効性があると判定されるマルウェア検知ルールのみを選び出すことができる。以上のように、本実施形態に係るソフトウェア検知ルール生成装置1では、Android登録商標向けの悪意のあるアプリケーションマルウェアに関する挙動ログや構成ファイルの中から、マルウェアの検知に適した特徴的な文字列を自動的に抽出し、マルウェア検知ルールを自動的に生成する。具体的には、本実施形態に係るソフトウェア検知ルール生成装置1では、単一ログ/ファイル抽出部11が、マルウェアを構成する挙動ログまたは構成ファイルのうちの単一の挙動ログまたは単一の構成ファイルを抽出し、文字列抽出部12が、単一ログ/ファイル抽出部11により抽出された単一の挙動ログまたは単一の構成ファイルから、あらかじめ定められた条件例えば、システムコール、パーミッション情報などに応じた文字列を、2つ以上の異なる条件について抽出し、ルール生成部13が、文字列抽出部12により抽出された文字列に基づいて、2つ以上の異なる条件について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成し、ルール検証部14が、ルール生成部13により生成されたマルウェア検知ルールの有効性を検証する。これにより、マルウェアの検知を高精度に行うことができるソフトウェア検知ルールマルウェア検知ルールを生成する。本実施形態に係るソフトウェア検知ルール生成装置1によれば、例えば、従来のシグネチャベースの方式では得ることができなかった、マルウェアに共通する文字列の組み合わせからなるルール例えば、図4bや図4cに示されるルールを得ることができる。これにより、より高精度にマルウェアやその亜種を発見することができ、さらに、積極的誤検知FalsePositiveが少ないマルウェア検知ルールを生成することができる。また、従来では、Android登録商標向けのアプリケーションが安全であるか否かを解析するオペレータ人が、マルウェアの検知に利用する文字列を、手動で抽出しており、マルウェア検知ルールを生成する作業にコストや時間を要していたが、本実施形態に係るソフトウェア検知ルール生成装置1によれば、このようなコストや時間を大幅に削減することができる。本実施形態に係るソフトウェア検知ルール生成装置1によれば、マルウェアを構成する挙動ログと構成ファイルについて、単一の挙動ログまたは単一の構成ファイルを抽出して文字列を抽出する構成であるため、例えば、様々な種類の挙動ログや構成ファイルを抽出して文字列を抽出する場合と比べて、種類が少ないという点で、演算量を少なくすることが可能である。具体例として、本実施形態に係るソフトウェア検知ルール生成装置1では、マルウェアの挙動ログや構成ファイルに含まれる、攻撃に関わる特徴的な文字列の抽出作業において、精度の高い文字列を自動的に抽出することができ、抽出した文字列を使用して、マルウェアに頻出する文字列の組み合わせを導出することにより、精度の高いマルウェア検知ルールを自動的に生成することができる。例えば、挙動ログの一つであるカーネルログにはAndroid登録商標のアプリケーションがいずれのファイルを実行したのかを示す記録や、誰と通信したのかを示す記録が含まれており、これらに関連する文字列を抽出することができる。また、構成ファイルの一つであるマニフェストファイルに含まれるパーミッション情報はAndroid登録商標のアプリケーションに特有の文字列であり、マルウェアに用いられやすいパーミッション、要するに文字列を自動的に抽出することができる。このような方法により、マルウェアの見逃しFalseNegativeや積極的誤検知FalsePositiveを低減することができる。ここで、本実施形態では、図4bや図4cに示されるマルウェア検知ルールのように、システムコールなどとそれに対応する文字列との対応を2つ組み合わせたルールを生成する場合を示したが、他の例として、システムコールなどとそれに対応する文字列との対応を3つ以上組み合わせたルールを生成することも可能である。また、本実施形態では、ルール生成部13によりマルウェア検知ルールを生成した後に、ルール生成部13により生成したマルウェア検知ルールの有効性をルール検証部14により検証する構成を示したが、他の構成例として、ソフトウェア検知ルール生成装置1にルール検証部14を備えない構成を用いることも可能である。ルール検証部14を備えないソフトウェア検知ルール生成装置1では、ルール生成部13により生成されたマルウェア検知ルールをルールデータベース22に記憶させる。なお、ソフトウェア検知ルール生成装置1にルール検証部14を備えるか否かは任意であるが、通常は、ルール検証部14を備えた方が、ソフトウェア検知ルール生成装置1により生成されるマルウェア検知ルールルール検証部14を備えない場合にはルール生成部13により生成されるマルウェア検知ルール、ルール検証部14を備える場合にはルール検証部14により有効であると検証されたマルウェア検知ルールの精度が高くなると考えられる。[第2実施形態]図7は、本発明の第2実施形態に係るAndroid登録商標のソフトウェア検知ルール生成装置31の概略的な構成を示すブロック図である。また、図7には、アプリケーションデータベースアプリケーションDB51と、ルールデータベースルールDB52も示してある。ここで、アプリケーションデータベース51は、第1実施形態に係る図1に示されるアプリケーションデータベース21と同様に、Android登録商標のアプリケーションを記憶する。そして、アプリケーションデータベース51は、正常なアプリケーションを記憶するデータベース正常アプリケーションデータベースと、マルウェア悪性のアプリケーションを記憶するデータベースマルウェアデータベースと、正常なものであるかあるいは悪性のものであるかが不明なアプリケーションを記憶するデータベース不明アプリケーションデータベースと、を有する。また、ルールデータベース52は、第1実施形態に係る図1に示されるルールデータベース22と同様に、ソフトウェア検知ルール生成装置31により有効であると検証されたマルウェア検知ルールを記憶する。本実施形態に係るソフトウェア検知ルール生成装置31について詳しく説明する。本実施形態に係るソフトウェア検知ルール生成装置31は、複数ログ/ファイル抽出部41と、文字列抽出部42と、ルール生成部43と、ルール検証部44と、を備える。本実施形態に係るソフトウェア検知ルール生成装置31において行われる概略的な動作の例を示す。複数ログ/ファイル抽出部41は、アプリケーションデータベース21のマルウェアデータベースに記憶されたマルウェアを入力し、入力したマルウェアを構成する挙動ログと構成ファイルについて、複数の種類のものを抽出する。複数ログ/ファイル抽出部41は、抽出した挙動ログや構成ファイルを文字列抽出部42に出力する。ここで、複数ログ/ファイル抽出部41が、マルウェアを構成する挙動ログと構成ファイルについて、複数を抽出する態様としては、様々な態様が用いられてもよい。第1の例として、複数ログ/ファイル抽出部41が、1個のマルウェアについて、複数の種類の挙動ログを抽出する態様、あるいは、複数の種類の構成ファイルを抽出する態様、あるいは、1種類以上の挙動ログと1種類以上の構成ファイルを抽出する態様を用いることができる。第2の例として、複数ログ/ファイル抽出部41が、あるマルウェアについて1種類の挙動ログまたは1種類の構成ファイルを抽出し、これとは異なる種類のもの挙動ログまたは構成ファイルを他のマルウェアについて抽出する態様を用いることができる。また、前記した第1の例と第2の例を組み合わせた態様を用いることもできる。文字列抽出部42は、複数ログ/ファイル抽出部41から入力された複数種類の抽出結果挙動ログや構成ファイルを解析し、この複数種類の抽出結果から、あらかじめ定められた手順条件で、文字列を抽出する。文字列抽出部42は、抽出した文字列に関する情報をルール生成部43に出力する。ルール生成部43は、文字列抽出部42から入力された文字列に関する情報に基づいて、マルウェア検知ルールを生成する。ルール生成部43は、生成したマルウェア検知ルールをルール検証部44に出力する。ルール検証部44は、第1実施形態に係る図1に示されるルール検証部14と同様に、ルール生成部43から入力されたマルウェア検知ルール本実施形態では、マルウェア検知ルールの候補について、有効性を検証する。ルール検証部44は、有効であると検証したマルウェア検知ルールをルールデータベース52に記憶させる。次に、本実施形態に係るソフトウェア検知ルール生成装置31において行われる具体的な動作の例を示す。本実施形態では、挙動ログの中の一例であるカーネルログおよび構成ファイルの中の一例であるマニフェストファイルに関するマルウェア検知ルールを生成する場合を示す。複数ログ/ファイル抽出部41は、アプリケーションデータベース51のマルウェアデータベースに記憶された1個のマルウェアを入力し、入力したマルウェアを構成するカーネルログおよびマニフェストファイルを抽出する。複数ログ/ファイル抽出部41は、抽出したカーネルログおよびマニフェストファイルを文字列抽出部42に出力する。ここで、複数ログ/ファイル抽出部41は、複数のマルウェアを入力する場合には、それぞれのマルウェアのカーネルログおよびマニフェストファイルを抽出して取得し、それぞれのマルウェアのカーネルログおよびマニフェストファイルを文字列抽出部42に出力する。文字列抽出部42は、複数ログ/ファイル抽出部41から入力されたカーネルログおよびマニフェストファイルについて、それぞれを解析し、それぞれから、あらかじめ定められた手順条件で、マルウェア検知ルールの生成に必要となる文字列を抽出する。文字列抽出部42は、抽出した文字列に関する情報をルール生成部43に出力する。ここで、文字列抽出部42は、複数のマルウェアのカーネルログおよびマニフェストファイルを入力する場合には、それぞれのマルウェアのカーネルログおよびマニフェストファイルから文字列を抽出して取得し、それぞれのマルウェアのカーネルログおよびマニフェストファイルごとに、抽出した文字列に関する情報を文字列抽出部42に出力する。文字列抽出の処理手順の例を示す。カーネルログにおける文字列抽出の処理手順としては、第1実施形態で示したカーネルログにおける文字列抽出の処理手順1~カーネルログにおける文字列抽出の処理手順2と同様な処理手順を用いることができる。具体例として、文字列抽出部42は、カーネルログにおいて、システムコールexecveの行の部分からファイル名のデータを文字列として抽出すること、あるいは、システムコールconnectの行の部分から通信相手のデータを文字列として抽出することができる。また、文字列抽出の処理手順として、マニフェストファイルにおける文字列抽出の処理手順1~マニフェストファイルにおける文字列抽出の処理手順2を示す。マニフェストファイルにおける文字列抽出の処理手順1文字列抽出部42は、マルウェアのマニフェストファイルの全て全ての行を文字列抽出の対象とし、または、当該マニフェストファイルからあらかじめ定められた特定のパーミッション情報の行の部分を抽出して、抽出した特定のパーミッション情報の行の部分のみを文字列抽出の対象とする。マニフェストファイルにおける文字列抽出の処理手順2文字列抽出部42は、文字列抽出の対象マニフェストファイルの全ての行、または、特定のパーミッション情報の行の部分を構成する各行から、あらかじめ定められた条件この例では、パーミッション情報に応じて文字列を抽出する。文字列抽出部42からルール生成部43に出力する、抽出した文字列に関する情報について説明する。文字列抽出部42は、抽出した文字列に関する情報として、カーネルログから抽出した文字列のデータと、この抽出に用いたシステムコールを含み、これら文字列のデータとシステムコールが対応付けられるとともに、マニフェストファイルから抽出した文字列のデータと、この抽出に用いた抽出情報の種別この例では、パーミッション情報という種別を含み、これら文字列のデータと抽出情報の種別が対応付けられる情報を用いる。これにより、抽出した文字列に関する情報に基づいて、カーネルログにおいてどのような文字列がどのようなシステムコールに出現したか、および、マニフェストファイルにおいてどのような文字列がどのような抽出情報の種別に出現したかを把握することができる。なお、抽出した文字列に関する情報としては、上記の例に限定されず、例えば、カーネルログについては、抽出した文字列のデータに、この抽出に用いたシステムコールを特定する情報が付与されれば、他の態様の情報が用いられてもよい。また、マニフェストファイルについては、抽出した文字列のデータに、この抽出に用いた抽出情報の種別を特定する情報が付与されれば、他の態様の情報が用いられてもよい。また、文字列抽出部42は、一度出現して抽出した文字列の組み合わせ例えば、同一のシステムコールと文字列との対応と、同一の文字列からなるパーミッション情報との組み合わせについては、二度目以降に出現した場合には抽出しないまたは、抽出したときには、削除する。つまり、同じ文字列の組み合わせの情報については、最初の1回だけ採用する。なお、このような同じ文字列の組み合わせの情報の重複は、例えば、1個のマルウェアにおいて存在する場合や、あるいは、複数のマルウェアにわたって存在する場合があり得る。また、他の構成例として、同じ文字列の組み合わせの情報について重複して抽出して採用する構成が用いられてもよい。また、文字列抽出部42は、抽出した文字列に関する情報に、時系列順の番号タイムスタンプの情報を付与して含めることもできる。これにより、1個のマルウェアこの例では、カーネルログあるいはマニフェストファイルのそれぞれにおいて、抽出した文字列に関する情報が複数ある場合には、文字列抽出部42は、タイムスタンプが付与された複数の抽出した文字列に関する情報を列挙して、時系列データとして生成する。なお、時系列順の番号としては、例えば、1個のマルウェアこの例では、カーネルログあるいはマニフェストファイルのそれぞれにおいて、文字列または、システムコールあるいは抽出情報の種別が出現した行が早い方に小さい番号を付与し、連続の番号とする。この場合、2つ以上の文字列または、システムコールあるいは抽出情報の種別が同一の行に出現したときには、これら全てに同一の番号を付与する。ここで、本実施形態では、抽出した文字列に関する情報に基づいて、時系列的な処理例えば、時系列アソシエーションの処理を行うために、抽出した文字列に関する情報に時系列順の番号タイムスタンプの情報を付与するが、他の構成例として、タイムスタンプの情報を使用する必要がない場合には、タイムスタンプの情報は用いられなくてもよい。他の例として、抽出した文字列に関する情報としては、上記の例に限定されず、それぞれの種類の挙動ログや構成ファイルについて独立した情報が用いられてもよい。例えば、抽出した文字列に関する情報として、カーネルログとマニフェストファイルのそれぞれについて独立した情報を用いることもできる。具体的には、文字列抽出部42は、抽出した文字列に関する情報として、カーネルログから抽出した文字列のデータと、この抽出に用いたシステムコールを含み、これら文字列のデータとシステムコールが対応付けられる情報を用い、また、抽出した文字列に関する情報として、マニフェストファイルから抽出した文字列のデータと、この抽出に用いた抽出情報の種別この例では、パーミッション情報という種別を含み、これら文字列のデータと抽出情報の種別が対応付けられる情報を用いる。この他の例では、文字列抽出部42は、一度出現して抽出した文字列例えば、同一のシステムコールと文字列との対応、同一の文字列からなるパーミッション情報については、二度目以降に出現した場合には抽出しないまたは、抽出したときには、削除する。つまり、ある1種類の挙動ログまたは構成ファイルについて、同じ文字列の情報については、最初の1回だけ採用する。なお、このような同じ文字列の情報の重複は、例えば、1個のマルウェアにおいて存在する場合や、あるいは、複数のマルウェアにわたって存在する場合があり得る。また、他の構成例として、同じ文字列の情報について重複して抽出して採用する構成が用いられてもよい。ルール生成部43は、文字列抽出部42から入力された文字列に関する情報に基づいて、マルウェア検知ルールを生成する。ルール生成部43は、生成したマルウェア検知ルールをルール検証部44に出力する。本実施形態では、ルール生成部43は、マルウェア検知ルールの生成対象となる全てのマルウェアについて、生成された時系列データを用いて、アソシエーション分析の処理または時系列アソシエーション分析の処理のうちのいずれかを行い、これによりマルウェア検知ルールを導出する。ここで、ルール生成部43によりアソシエーション分析の処理または時系列アソシエーション分析の処理のうちのいずれを行うかについては、例えば、あらかじめいずれかの処理に設定されてもよく、または、ソフトウェア検知ルール生成装置31に対するユーザ人による操作あるいは外部の装置からの制御信号に応じて、実行する処理を切り替えることが可能な構成が用いられてもよい。また、アソシエーション分析や時系列アソシエーション分析としては、それぞれ、一般的に知られる技術を用いることができる。なお、これらの概略は、第1実施形態で説明したものと同様である。図8a、図8b、図8cを参照して、アソシエーション分析の具体例を示す。図8aは、カーネルログにおけるシステムコールと文字列との対応の一例を示す図である。システムコールのデータとして、{システムコールconnectにおいて、通信相手接続先のアドレスあるいは他の識別情報などexample.comの文字列が出現する}という情報が取得されているとする。図8bは、マニフェストファイルにおけるパーミッション情報の文字列の一例を示す図である。パーミッション情報のデータとして、{パーミッション情報として、READ_PHONE_STATEの文字列が出現する}という情報が取得されているとする。ここで、READ_PHONE_STATEは、端末固有の情報を抽出するものである。図8cは、図8aに示されるシステムコールおよび対応する文字列が存在するとともに、図8bに示されるパーミッション情報の文字列が存在した場合における、アソシエーション分析の処理により生成されるルールアソシエーションルール生成結果の一例を示す図である。この例では、アソシエーションルール生成結果として、1つのルールが生成される。この場合、ルール生成部43は、この1つのルールを、マルウェア検知ルールとして、ルール検証部44に出力する。このルールは、[カーネルログに関して{システムコールconnectにおいて、通信相手接続先のアドレスあるいは他の識別情報などexample.comの文字列が出現する}ことが成立するとともに、マニフェストファイルに関して{パーミッション情報として、READ_PHONE_STATEの文字列が出現する}ことが成立する]というルールである。ここで、図8cに示されるルールの例では、カーネルログにおいて特定のシステムコールの文字列が出現するとともに、マニフェストファイルにおいて特定のパーミッション情報の文字列が出現すればルールに該当するルールを満たすこととし、これらの文字列などが出現する時間本実施形態では、行の前後については考慮していない。なお、ここでは、アソシエーション分析の例を示したが、他の例として、時系列アソシエーション分析が用いられてもよい。ルール検証部44は、ルール生成部43から入力されたマルウェア検知ルール本実施形態では、マルウェア検知ルールの候補について、有効性を検証する。ルール検証部44は、有効であると検証したマルウェア検知ルールをルールデータベース52に記憶させる。ここで、ルール検証部44により行われる動作は、第1実施形態に係る図1に示されるルール検証部14について説明したものと同様である。以上のように、本実施形態に係るソフトウェア検知ルール生成装置31では、Android登録商標向けの悪意のあるアプリケーションマルウェアに関する挙動ログや構成ファイルの中から、マルウェアの検知に適した特徴的な文字列を自動的に抽出し、マルウェア検知ルールを自動的に生成する。具体的には、本実施形態に係るソフトウェア検知ルール生成装置31では、複数ログ/ファイル抽出部41が、マルウェアを構成する挙動ログまたは構成ファイルのうちの複数種類を抽出し、文字列抽出部42が、複数ログ/ファイル抽出部41により抽出された挙動ログまたは構成ファイルのうちの複数種類のそれぞれから、あらかじめ定められた条件例えば、システムコール、パーミッション情報などに応じた文字列を抽出し、ルール生成部43が、文字列抽出部42により抽出された文字列に基づいて、挙動ログまたは構成ファイルのうちの複数種類について条件に応じて特定の文字列が出現するという要件を含むマルウェア検知ルールを生成し、ルール検証部44が、ルール生成部43により生成されたマルウェア検知ルールの有効性を検証する。これにより、マルウェアの検知を高精度に行うことができるソフトウェア検知ルールマルウェア検知ルールを生成する。本実施形態に係るソフトウェア検知ルール生成装置31によれば、例えば、従来のシグネチャベースの方式では得ることができなかった、マルウェアに共通する文字列の組み合わせからなるルール例えば、図8cに示されるルールを得ることができる。これにより、より高精度にマルウェアやその亜種を発見することができ、さらに、積極的誤検知FalsePositiveが少ないマルウェア検知ルールを生成することができる。また、従来では、Android登録商標向けのアプリケーションが安全であるか否かを解析するオペレータ人が、マルウェアの検知に利用する文字列を、手動で抽出しており、マルウェア検知ルールを生成する作業にコストや時間を要していたが、本実施形態に係るソフトウェア検知ルール生成装置31によれば、このようなコストや時間を大幅に削減することができる。ここで、本実施形態では、第1実施形態のようにそれぞれの種類ごとの挙動ログまたは構成ファイルに対して処理を行ってルールを生成するのではなく、複数の種類全ての種類でもよいの挙動ログまたは構成ファイルから文字列を抽出した後に、アソシエーション分析を行うことで、複数の種類全ての種類でもよいの挙動ログまたは構成ファイルを考慮したルールを生成する。これにより、例えば、カーネルログにおける文字列とマニフェストファイルにおけるパーミッション情報との組み合わせによるルールなどを生成することができる。具体的に、図8cに示される例では、マルウェアを構成するマニフェストファイルの中に端末固有の情報を抽出するREAD_PHONE_STATEというパーミッション情報が存在し、且つ、当該マルウェアを構成するカーネルログのファイル中にアプリケーションの特定の通信先があるこの例では、connectに対応してexample.comという文字列が存在するという組み合わせのルールを生成することができる。この例では、端末固有の情報を取得し、さらに、例えば、マルウェアに頻出する通信相手example.comに対して通信することからマルウェアの可能性が高いとみなしたルールを生成することができる。これにより、Android登録商標向けのアプリケーションに特化したマルウェアの検出を容易化することができる。具体例として、本実施形態に係るソフトウェア検知ルール生成装置31では、マルウェアの挙動ログや構成ファイルに含まれる、攻撃に関わる特徴的な文字列の抽出作業において、精度の高い文字列を自動的に抽出することができ、抽出した文字列を使用して、マルウェアに頻出する文字列の組み合わせを導出することにより、精度の高いマルウェア検知ルールを自動的に生成することができる。例えば、挙動ログの一つであるカーネルログにはAndroid登録商標のアプリケーションがいずれのファイルを実行したのかを示す記録や、誰と通信したのかを示す記録が含まれており、これらに関連する文字列を抽出することができる。また、構成ファイルの一つであるマニフェストファイルに含まれるパーミッション情報はAndroid登録商標のアプリケーションに特有の文字列であり、マルウェアに用いられやすいパーミッション、要するに文字列を自動的に抽出することができる。このような方法により、マルウェアの見逃しFalseNegativeや積極的誤検知FalsePositiveを低減することができる。このように、本実施形態に係るソフトウェア検知ルール生成装置31では、マルウェアを構成する挙動ログや構成ファイルに含まれる文字列の組み合わせを導出する際に、第1実施形態のように単一の種類の挙動ログまたは構成ファイルに限らず、挙動ログや構成ファイルのうちの複数の種類のものの中に含まれる文字列の組み合わせを選択することにより、Android登録商標向けのアプリケーションに特有な複数種類の挙動ログや構成ファイルの関連性を反映させたマルウェア検知ルールを生成することができる。ここで、マルウェア検知ルールを生成するために文字列を抽出する対象とする挙動ログや構成ファイルとしては、任意のものが用いられてもよい。また、挙動ログや構成ファイルからどのような文字列を抽出するかについては、任意の態様が用いられてもよい。また、本実施形態では、挙動ログと構成ファイルのうちの2種類本実施形態では、カーネルログとマニフェストファイルのそれぞれから抽出された文字列合わせて、2つの文字列を用いたルールを生成する場合を示したが、他の例として、挙動ログや構成ファイルのうちでルールを生成するために使用するものの種類の数は3種類以上であってもよく、また、ルールを生成するために使用する文字列の数は3つ以上であってもよい。また、本実施形態では、ルール検証部44を備えたソフトウェア検知ルール生成装置31を示したが、第1実施形態において述べたのと同様に、ルール検証部44を備えないソフトウェア検知ルール生成装置31を実施することも可能である。[第3実施形態]図9は、本発明の第3実施形態に係るAndroid登録商標のソフトウェア検知ルール生成システムの概略的な構成を示すブロック図である。本実施形態に係るソフトウェア検知ルール生成システムは、アプリケーションデータベースアプリケーションDB71と、2つのソフトウェア検知ルール生成装置第1のソフトウェア検知ルール生成装置61、第2のソフトウェア検知ルール生成装置62と、ルールデータベースルールDB72と、を備える。アプリケーションデータベース71は、第1実施形態に係る図1に示されるアプリケーションデータベース21と同様に、Android登録商標のアプリケーションを記憶する。そして、アプリケーションデータベース71は、正常なアプリケーションを記憶するデータベース正常アプリケーションデータベースと、マルウェア悪性のアプリケーションを記憶するデータベースマルウェアデータベースと、正常なものであるかあるいは悪性のものであるかが不明なアプリケーションを記憶するデータベース不明アプリケーションデータベースと、を有する。第1のソフトウェア検知ルール生成装置61は、第1実施形態に係る図1に示されるソフトウェア検知ルール生成装置1と概略的に同様な構成を有している。そして、第1のソフトウェア検知ルール生成装置61は、アプリケーションデータベース71に記憶されたアプリケーションに基づいて、マルウェアを検知するルールマルウェア検知ルールをソフトウェア検知ルールとして生成し、生成したマルウェア検知ルールを検証する。第1のソフトウェア検知ルール生成装置61は、有効であると検証されたマルウェア検知ルールをルールデータベース72に記憶させる。第2のソフトウェア検知ルール生成装置62は、第1実施形態に係る図1に示されるソフトウェア検知ルール生成装置1と概略的に同様な構成を有している。そして、第2のソフトウェア検知ルール生成装置62は、アプリケーションデータベース71に記憶されたアプリケーションに基づいて、マルウェアを検知するルールマルウェア検知ルールをソフトウェア検知ルールとして生成し、生成したマルウェア検知ルールを検証する。第2のソフトウェア検知ルール生成装置62は、有効であると検証されたマルウェア検知ルールをルールデータベース72に記憶させる。ルールデータベース72は、第1のソフトウェア検知ルール生成装置61により有効であると検証されたマルウェア検知ルールを記憶するとともに、第2のソフトウェア検知ルール生成装置62により有効であると検証されたマルウェア検知ルールを記憶する。ルールデータベース72に記憶されたマルウェア検知ルールは、マルウェアの検知に使用することができる。ここで、本実施形態では、アプリケーションデータベース71とルールデータベース72は、それぞれ、2つのソフトウェア検知ルール生成装置第1のソフトウェア検知ルール生成装置61、第2のソフトウェア検知ルール生成装置62に共通となっている。また、本実施形態では、第1のソフトウェア検知ルール生成装置61においてマルウェア検知ルールを生成するために単一ログ/ファイル抽出部図1に示される単一ログ/ファイル抽出部11に相当するものによりマルウェアから抽出する挙動ログまたは構成ファイルの種類と、第2のソフトウェア検知ルール生成装置62においてマルウェア検知ルールを生成するために単一ログ/ファイル抽出部図1に示される単一ログ/ファイル抽出部11に相当するものによりマルウェアから抽出する挙動ログまたは構成ファイルの種類とを異ならせて、設定してある。つまり、本実施形態では、第1のソフトウェア検知ルール生成装置61と第2のソフトウェア検知ルール生成装置62とで、マルウェアから異なる種類の挙動ログまたは構成ファイルを抽出して、マルウェア検知ルールを生成する。これにより、ルールデータベース72には、各ソフトウェア検知ルール生成装置61、62から、マルウェアから異なる種類の挙動ログまたは構成ファイルを抽出して生成されたマルウェア検知ルールが記憶される。具体例として、マルウェアを構成する挙動ログの例であるカーネルログ、アプリケーションログ、パケットキャプチャログなどや、マルウェアを構成する構成ファイルの例であるマニフェストファイルなどについて、2種類のものに関して、それぞれ、第1のソフトウェア検知ルール生成装置61と第2のソフトウェア検知ルール生成装置62により、マルウェア検知ルールを生成してルールデータベース72に記憶させる。そして、ルールデータベース72に記憶されたマルウェア検知ルールについて、前記した2種類のものを複合的に利用することにより、Android登録商標向けのマルウェアを検出する。一例として、第1のソフトウェア検知ルール生成装置61によりカーネルログに基づいてマルウェア検知ルールを生成し、第2のソフトウェア検知ルール生成装置62によりマニフェストファイルに基づいてマルウェア検知ルールを生成する。これらのマルウェア検知ルールが記憶されたルールデータベース72を利用して、例えば、まず、カーネルログから生成されたマルウェア検知ルールを使用してマルウェアである可能性があるアプリケーション当該マルウェア検知ルールに該当するアプリケーションを抽出し、その後、当該抽出したアプリケーションについて、マニフェストファイルから生成されたマルウェア検知ルールを使用してマルウェアであるか否かを判定する。このように、複合的にマルウェア検知ルールを利用することで、例えば、積極的誤検知FalsePositiveを低減しながら、高精度にマルウェアを検出することができる。以上のように、本実施形態に係るソフトウェア検知ルール生成システムでは、異なる種類の挙動ログや構成ファイルについて、マルウェア検知ルールを生成することができる。従って、本実施形態に係るソフトウェア検知ルール生成システムによれば、異なる種類の挙動ログや構成ファイルについて生成されたマルウェア検知ルールを複合的に使用して、Android登録商標向けのアプリケーションに特化したマルウェアの検出を容易化することができる。ここで、本実施形態では、2つのソフトウェア検知ルール生成装置第1のソフトウェア検知ルール生成装置61、第2のソフトウェア検知ルール生成装置62を備える構成を示したが、他の構成例として、3つ以上のソフトウェア検知ルール生成装置を備える構成が用いられてもよく、この場合、例えば、これら3つ以上のソフトウェア検知ルール生成装置がアプリケーションデータベース71とルールデータベース72のそれぞれと接続される。また、本実施形態では、複数のソフトウェア検知ルール生成装置に共通のアプリケーションデータベース71を備える構成を示したが、他の構成例として、ソフトウェア検知ルール生成装置ごとに異なるアプリケーションデータベースを備える構成が用いられてもよい。また、本実施形態では、複数のソフトウェア検知ルール生成装置のそれぞれとして、全て、第1実施形態に係る図1に示されるソフトウェア検知ルール生成装置1と概略的に同様な構成を有するものを用いる構成を示したが、他の構成例として、複数のソフトウェア検知ルール生成装置のうちの一部として、第1実施形態に係る図1に示されるソフトウェア検知ルール生成装置1と概略的に同様な構成を有するものを用い、残りとして、第2実施形態に係る図7に示されるソフトウェア検知ルール生成装置31と概略的に同様な構成を有するものを用いる構成が実施されてもよい。さらに他の構成例として、複数のソフトウェア検知ルール生成装置のうちのそれぞれとして、全て、第2実施形態に係る図7に示されるソフトウェア検知ルール生成装置31と概略的に同様な構成を有するものを用いる構成が実施されてもよい。また、本実施形態では、複数のソフトウェア検知ルール生成装置のそれぞれにルール検証部例えば、図1に示されるルール検証部14または図7に示されるルール検証部44に相当するものを備える構成を示したが、他の構成例として、複数のソフトウェア検知ルール生成装置の一部または全部にルール検証部を備えない構成が実施されてもよい。以上の実施形態のまとめ以上、本発明の実施形態について図面を参照して詳述したが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。また、以上に示した各実施形態に係る各装置の機能例えば、図1や図7や図9に示されるソフトウェア検知ルール生成装置1、31、61、62における単一ログ/ファイル抽出部11または複数ログ/ファイル抽出部41、文字列抽出部12、42、ルール生成部13、43、あるいはルール検証部14、44のうちの1つ以上の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、処理を行ってもよい。なお、ここで言うコンピュータシステムとは、オペレーティングシステムOperatingSystem;OSや周辺機器等のハードウェアを含むものであってもよい。また、コンピュータ読み取り可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、ROMReadOnlyMemory、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVDDigitalVersatileDisk等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことを言う。さらに、コンピュータ読み取り可能な記録媒体とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ例えばDRAMDynamicRandomAccessMemoryのように、一定時間プログラムを保持しているものも含むものとする。また、上記のプログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する伝送媒体は、インターネット等のネットワーク通信網や電話回線等の通信回線通信線のように情報を伝送する機能を有する媒体のことを言う。また、上記のプログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル差分プログラムであっても良い。