(57)【特許請求の範囲】
【請求項１】
アプリケーションの識別情報と、前記アプリケーションの処理の際に生成されたプロセスの識別情報とが関連付けられた第１のログを記憶すると共に、前記プロセスの識別情報と、前記プロセスが呼び出したシステムコールの識別情報と、前記システムコールの実行内容とが関連付けられた第２のログを記憶するログ記憶部と、
ファイルをディレクトリに格納して記憶するファイル記憶部と、
前記第１のログから、特定のアプリケーションの識別情報と関連付けられた前記プロセスの識別情報を抽出する第１の抽出部と、
前記第２のログから、前記第１の抽出部が抽出した前記プロセスの識別情報を有する部分を抽出する第２の抽出部と、
前記第２の抽出部が抽出した部分から、ファイル操作に関係するシステムコールの識別情報と関連付けられた前記システムコールの実行内容を抽出する第３の抽出部と、
前記第３の抽出部が抽出した前記システムコールの実行内容が、前記ファイル記憶部中の特定のディレクトリに対する操作を示しているか否かを判定する判定部と、
を備えたことを特徴とするアプリケーション判定システム。
【請求項２】
前記第２のログに含まれる前記システムコールの実行内容は、前記プロセスの識別情報に対応するプロセスが、他のプロセスを起動する所定のシステムコールによって起動した前記他のプロセスの識別情報を含み、
前記第１の抽出部はさらに、前記第２のログにおいて、前記第１のログから抽出した前記プロセスの識別情報と関連付けられた前記システムコールの実行内容に含まれる前記他のプロセスの識別情報を抽出する
ことを特徴とする請求項１に記載のアプリケーション判定システム。
【請求項３】
前記判定部は、前記第３の抽出部が抽出した前記システムコールの実行内容が、機能の利用や設定の変更に係る権限として最高権限を有している場合に操作が可能なディレクトリに対する操作を示しているか否かを判定することを特徴とする請求項１または請求項２に記載のアプリケーション判定システム。
【請求項４】
前記判定部は、前記第３の抽出部が抽出した前記システムコールの実行内容に含まれる操作対象のディレクトリの文字列が、機能の利用や設定の変更に係る権限として最高権限を有している場合に操作が可能なディレクトリの文字列と一致するか否かを判定することを特徴とする請求項３に記載のアプリケーション判定システム。
【請求項５】
前記判定部は、前記第３の抽出部が抽出した前記システムコールの実行内容が、前記ファイル記憶部において前記特定のアプリケーションに割り当てられたディレクトリに対する操作を示しているか否かを判定することを特徴とする請求項１または請求項２に記載のアプリケーション判定システム。
【請求項６】
前記判定部は、前記第３の抽出部が抽出した前記システムコールの実行内容に含まれる操作対象のディレクトリの文字列が、前記ファイル記憶部において前記特定のアプリケーションに割り当てられたディレクトリの文字列と一致するか否かを判定することを特徴とする請求項５に記載のアプリケーション判定システム。
【請求項７】
アプリケーションの識別情報と、前記アプリケーションの処理の際に生成されたプロセスの識別情報とが関連付けられた第１のログを記憶すると共に、前記プロセスの識別情報と、前記プロセスが呼び出したシステムコールの識別情報と、前記システムコールの実行内容とが関連付けられた第２のログを記憶するログ記憶部と、
ファイルをディレクトリに格納して記憶するファイル記憶部と、
前記第１のログから、特定のアプリケーションの識別情報と関連付けられた前記プロセスの識別情報を抽出する第１の抽出部と、
前記第２のログから、前記第１の抽出部が抽出した前記プロセスの識別情報を有するログを抽出する第２の抽出部と、
前記第２の抽出部が抽出した部分から、ファイル操作に関係するシステムコールの識別情報と関連付けられた前記システムコールの実行内容を抽出する第３の抽出部と、
前記第３の抽出部が抽出した前記システムコールの実行内容が、前記ファイル記憶部中の特定のディレクトリに対する操作を示しているか否かを判定する判定部と、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションが実行した処理の内容に基づく判定を行うアプリケーション判定システムに関する。また、本発明は、本アプリケーション判定システムとしてコンピュータを機能させるためのプログラムに関する。
【背景技術】
【０００２】
オープンプラットフォームと呼ばれる汎用的なOS（オペレーティングシステム）を採用する携帯端末の普及に伴い、多くの携帯端末向けのアプリケーションが、通信ネットワーク（インターネット）上の専用サイトや個人サイトを通じて販売および配布されている。汎用OSを採用した携帯端末向けのアプリケーションは、既存の専用組み込みOSを採用した携帯端末向けのアプリケーションと比較して、開発や配布を容易に行うことができる。
【０００３】
しかし、これに伴って、利用者の個人情報の窃盗や、悪性サイトへの誘導、OSの管理者権限の奪取など、利用者が意図せず不利益を被る可能性のある振る舞いを行うアプリケーションも登場している。よって、アプリケーションの安全性を事前に検証し、不正なアプリケーションを検知することは、利用者が安心してアプリケーションを利用できる環境の実現に有効であると共に、安全性を検証したアプリケーションを提供することで、他社との差別化を図ることも可能であり、重要な技術となる。
【０００４】
特許文献１には、携帯電話などの端末にアプリケーションをダウンロードする際にアプリケーションの認証を行うことで、不正なアプリケーションが端末内で実行されることを防止する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２５１０２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
注目するアプリケーションが不正なアプリケーションであるか否かを判定する方法の一つとして、アプリケーションが実行されたときのアプリケーションの挙動を解析する方法が考えられる。アプリケーションの挙動を記録したログとして、アプリケーションログとカーネルログがある。アプリケーションログは、アプリケーションの実行条件や状態に関する情報を記録したログである。カーネルログは、アプリケーションの処理と関連するプロセスが呼び出したシステムコールの情報を記録したログである。
【０００７】
アプリケーションログには、アプリケーションを実行したときのプロセスの起動や終了等のタイミングは記録されているが、プロセスの処理内容は記録されていない。一方、カーネルログには、プロセスの処理内容は記録されているが、各プロセスがどのアプリケーションの処理と関連しているのかということに関する情報は記録されていない。このため、アプリケーションログとカーネルログのそれぞれ単体からは、特定のアプリケーションによる挙動の詳細を知ることが困難であった。
【０００８】
また、アプリケーションログとカーネルログには、注目するアプリケーションの挙動に対応するプロセス以外のプロセスに関する多量の情報も記録されている。この情報は、アプリケーションの挙動を解析する際には冗長な情報である。このような冗長な情報が含まれているため、アプリケーションログとカーネルログの解析が非効率的となる。
【０００９】
本発明は、上述した課題に鑑みてなされたものであって、アプリケーションの挙動を記録したログに基づいて、注目するアプリケーションが不正であるか否かを判定することができるアプリケーション判定システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、上記の課題を解決するためになされたもので、アプリケーションの識別情報と、前記アプリケーションの処理の際に生成されたプロセスの識別情報とが関連付けられた第１のログを記憶すると共に、前記プロセスの識別情報と、前記プロセスが呼び出したシステムコールの識別情報と、前記システムコールの実行内容とが関連付けられた第２のログを記憶するログ記憶部と、ファイルをディレクトリに格納して記憶するファイル記憶部と、前記第１のログから、特定のアプリケーションの識別情報と関連付けられた前記プロセスの識別情報を抽出する第１の抽出部と、前記第２のログから、前記第１の抽出部が抽出した前記プロセスの識別情報を有する部分を抽出する第２の抽出部と、前記第２の抽出部が抽出した部分から、ファイル操作に関係するシステムコールの識別情報と関連付けられた前記システムコールの実行内容を抽出する第３の抽出部と、前記第３の抽出部が抽出した前記システムコールの実行内容が、前記ファイル記憶部中の特定のディレクトリに対する操作を示しているか否かを判定する判定部と、を備えたことを特徴とするアプリケーション判定システムである。
【００１１】
また、本発明のアプリケーション判定システムにおいて、前記第２のログに含まれる前記システムコールの実行内容は、前記プロセスの識別情報に対応するプロセスが、他のプロセスを起動する所定のシステムコールによって起動した前記他のプロセスの識別情報を含み、前記第１の抽出部はさらに、前記第２のログにおいて、前記第１のログから抽出した前記プロセスの識別情報と関連付けられた前記システムコールの実行内容に含まれる前記他のプロセスの識別情報を抽出することを特徴とする。
【００１２】
また、本発明のアプリケーション判定システムにおいて、前記判定部は、前記第３の抽出部が抽出した前記システムコールの実行内容が、機能の利用や設定の変更に係る権限として最高権限を有している場合に操作が可能なディレクトリに対する操作を示しているか否かを判定することを特徴とする。
【００１３】
また、本発明のアプリケーション判定システムにおいて、前記判定部は、前記第３の抽出部が抽出した前記システムコールの実行内容に含まれる操作対象のディレクトリの文字列が、機能の利用や設定の変更に係る権限として最高権限を有している場合に操作が可能なディレクトリの文字列と一致するか否かを判定することを特徴とする。
【００１４】
また、本発明のアプリケーション判定システムにおいて、前記判定部は、前記第３の抽出部が抽出した前記システムコールの実行内容が、前記ファイル記憶部において前記特定のアプリケーションに割り当てられたディレクトリに対する操作を示しているか否かを判定することを特徴とする。
【００１５】
また、本発明のアプリケーション判定システムにおいて、前記判定部は、前記第３の抽出部が抽出した前記システムコールの実行内容に含まれる操作対象のディレクトリの文字列が、前記ファイル記憶部において前記特定のアプリケーションに割り当てられたディレクトリの文字列と一致するか否かを判定することを特徴とする。
【００１６】
また、本発明は、アプリケーションの識別情報と、前記アプリケーションの処理の際に生成されたプロセスの識別情報とが関連付けられた第１のログを記憶すると共に、前記プロセスの識別情報と、前記プロセスが呼び出したシステムコールの識別情報と、前記システムコールの実行内容とが関連付けられた第２のログを記憶するログ記憶部と、ファイルをディレクトリに格納して記憶するファイル記憶部と、前記第１のログから、特定のアプリケーションの識別情報と関連付けられた前記プロセスの識別情報を抽出する第１の抽出部と、前記第２のログから、前記第１の抽出部が抽出した前記プロセスの識別情報を有するログを抽出する第２の抽出部と、前記第２の抽出部が抽出した部分から、ファイル操作に関係するシステムコールの識別情報と関連付けられた前記システムコールの実行内容を抽出する第３の抽出部と、前記第３の抽出部が抽出した前記システムコールの実行内容が、前記ファイル記憶部中の特定のディレクトリに対する操作を示しているか否かを判定する判定部と、としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【００１７】
本発明によれば、アプリケーションの処理の際に生成されたプロセスが呼び出したシステムコールの実行内容が、ファイル記憶部中の特定のディレクトリに対する操作を示しているか否かを判定することによって、注目するアプリケーションが不正であるか否かを判定することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態によるアプリケーション判定システムの構成を示すブロック図である。
【図２】本発明の一実施形態によるアプリケーション判定システムが有する携帯端末の機能構成を示すブロック図である。
【図３】本発明の一実施形態によるアプリケーション判定システムが有するログ解析装置の機能構成を示すブロック図である。
【図４】本発明の一実施形態におけるアプリケーションログの内容を示す参考図である。
【図５】本発明の一実施形態におけるカーネルログの内容を示す参考図である。
【図６】本発明の一実施形態におけるログ解析部の機能構成を示すブロック図である。
【図７】本発明の一実施形態におけるプロセスの親子関係を示す参考図である。
【図８】本発明の一実施形態によるアプリケーション判定システムの動作の手順を示すシーケンス図である。
【図９】本発明の一実施形態におけるアプリケーションの実行ファイルの構成を示す参考図である。
【図１０】本発明の一実施形態によるアプリケーション判定システムの動作の手順を示すフローチャートである。
【図１１】本発明の一実施形態におけるマニフェストファイルの内容を示す参考図である。
【図１２】本発明の一実施形態におけるアプリケーションログの内容を示す参考図である。
【図１３】本発明の一実施形態におけるカーネルログの内容を示す参考図である。
【図１４】本発明の一実施形態におけるカーネルログの内容を示す参考図である。
【図１５】本発明の一実施形態におけるファイル記憶部のディレクトリ構造を示す参考図である。
【図１６】本発明の一実施形態によるアプリケーション判定システムの変形例の機能構成を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照し、本発明の実施形態を説明する。
【００２０】
アプリケーションが処理を実行する際には、端末が有する機能の利用や設定の変更に係る権限が設定され、アプリケーションはその権限の範囲内で処理を実行することが可能である。例えば、一般ユーザ権限が設定された場合、一般ユーザ権限の範囲内で各種処理の実行が可能となる。また、最高権限（管理者権限）であるroot権限（スーパーユーザ権限）が設定された場合、一般ユーザ権限の範囲内で可能な処理に加えて、端末内の重要な設定の変更等が可能となる。
【００２１】
通常、アプリケーションは一般ユーザ権限で動作するように設定されており、一般ユーザ権限が設定されたアプリケーションがアクセスできるディレクトリは限定されている。しかし、不正なアプリケーションはOSの脆弱性を突いてroot権限を不正に取得し、ディレクトリに設定されているアクセス権限（パーミッション）を変更して携帯端末内のディレクトリに自由にアクセスできるようになる。これによって、携帯端末に障害を発生させたり、個人情報を漏洩させたりするなどの不正な行為が行われる。本実施形態では、アプリケーションがディレクトリやファイルにアクセスする挙動を解析することで、注目するアプリケーションが不正なアプリケーションであるか否かを判定する。
【００２２】
図１は、本発明の一実施形態によるアプリケーション判定システムの構成を示している。本実施形態によるアプリケーション判定システムは、携帯電話端末、携帯情報端末、スマートフォン等の携帯端末１と、PC等のログ解析装置２とを有する。携帯端末１とログ解析装置２は、RS232C等のケーブル３で接続されており、ログ解析装置２から携帯端末１を操作することができる。本実施形態によるアプリケーション判定システムは、例えば携帯端末用のアプリケーションを通信ネットワーク上で販売する販売サイトを管理する企業に設置される。
【００２３】
図２は携帯端末１の機能構成を示している。携帯端末１は、アプリケーション１０、アプリケーションログ生成部１１、カーネルログ生成部１２、ログ生成制御部１３、操作情報制御部１４、OS１５、ファイル記憶部１６、操作部１７、表示部１８、通信部１９、および作業領域Ｗ１（ログ記憶部）を有する。
【００２４】
アプリケーション１０、アプリケーションログ生成部１１、カーネルログ生成部１２、ログ生成制御部１３、操作情報制御部１４、およびOS１５は、SRAM等のデバイスで構成される作業領域Ｗ１上で動作する。これらの実行ファイル（プログラム）はファイル記憶部１６に格納されており、これらの実行ファイルがファイル記憶部１６から作業領域Ｗ１に読み込まれることで、これらが起動する。なお、作業領域Ｗ１では、アプリケーション１０等のプロセスのほか、図示していない各種プロセスも起動する。これらのプロセスがOS１５にシステムコールの呼び出しを通知し、OS１５がシステムコールを呼び出すことによって、各プロセスは、図示していないCPUの資源を利用して各種処理を行う。
【００２５】
アプリケーション１０は、OS１５に対するシステムコールの呼び出しやOS１５からの実行結果の受け取り等を行う。これによって、アプリケーション１０は、アプリケーションの処理として規定された各種処理の実行やファイル記憶部１６へのアクセス等を行う。
【００２６】
アプリケーションログ生成部１１は、アプリケーション１０の実行条件や状態に関する情報を記録したアプリケーションログ（第１のログ）を生成する。生成されたアプリケーションログは作業領域Ｗ１に保持される。
【００２７】
図４はアプリケーションログの一例を示している。アプリケーションログは、タイムスタンプ４００、プロセスID４１０、プロセスID４２０、メッセージ種別４３０、メッセージタグおよびメッセージ本体４４０からなる。タイムスタンプ４００は日付および時刻を含む。１つのタイムスタンプ４００、親プロセスID４１０、プロセスID４２０、メッセージ種別４３０、メッセージタグおよびメッセージ本体４４０の組を記録単位としてアプリケーションの挙動がアプリケーションログに記録される。図４に示す例では、５つの記録単位分のアプリケーションログの内容が示されている。
【００２８】
プロセスは、プロセス起動のシステムコールを呼び出すことによって、他のプロセスを起動することができる。以下では、起動元のプロセスを親プロセスと呼び、親プロセスによって起動されたプロセスを子プロセスと呼ぶ。プロセスID４１０およびプロセスID４２０が異なる場合、プロセスID４１０は親プロセスのプロセスIDを示し、プロセスID４２０は子プロセスのプロセスIDを示す。プロセスID４１０およびプロセスID４２０が同一の場合、それらのプロセスIDを有する記録単位は同一のプロセスの挙動を示している。
【００２９】
カーネルログ生成部１２は、アプリケーション１０の処理に関連するプロセスが呼び出したシステムコールの情報を記録したカーネルログ（第２のログ）を生成する。生成されたカーネルログは作業領域Ｗ１に保持される。
【００３０】
図５はカーネルログの一例を示している。カーネルログは、プロセスID５００、メッセージ本体５１０からなる。１つのプロセスID５００とメッセージ本体５１０の組を記録単位としてシステムコールの情報がカーネルログに記録される。図５に示す例では、５つの記録単位分のカーネルログの内容が示されている。なお、アプリケーションログとカーネルログとでは、プロセスIDの管理体系が異なる。このため、同一のプロセスについて、アプリケーションログに記録されるプロセスIDとカーネルログに記録されるプロセスIDは異なる。
【００３１】
ログ生成制御部１３は、アプリケーションログ生成部１１およびカーネルログ生成部１２を起動する処理を行う。また、ログ生成制御部１３は、アプリケーションログおよびカーネルログをログ解析装置２へ送信する処理を行う。
【００３２】
操作情報制御部１４は、操作者がログ解析装置２を操作して入力する操作情報に関する制御を行う。具体的には、操作情報制御部１４はログ解析装置２と通信を行い、ログ解析装置２に入力された操作内容を示す操作情報を受信し、操作情報の内容を解釈してOS１５に通知する。通知を受けたOS１５は各種処理を実行する。また、操作情報制御部１４は、OS１５から処理の実行結果の通知を受け、実行結果を示す実行結果情報をログ解析装置２へ送信する。以下の動作の説明では、実行結果情報に関する処理の説明を省略する。
【００３３】
OS１５は、アプリケーション１０、アプリケーションログ生成部１１、カーネルログ生成部１２、ログ生成制御部１３、および操作情報制御部１４の処理のスケジューリングや作業領域Ｗ１の割り当て等を制御すると共に、ファイル記憶部１６、操作部１７、表示部１８、および通信部１９の各デバイスの入出力を制御する。
【００３４】
ファイル記憶部１６は、フラッシュメモリ等のデバイスで構成され、携帯端末１内で使用する実行ファイル等の各種ファイルを記憶する。操作部１７は、キー（ボタン）やスイッチ等のデバイスで構成され、操作者が操作した結果に基づく信号を出力する。表示部１８は、液晶表示装置等のデバイスで構成され、携帯端末１で実行された処理の結果や携帯端末１の状態等を表示する。通信部１９は、通信モジュール等のデバイスで構成され、ログ解析装置２と通信を行う。
【００３５】
図３はログ解析装置２の機能構成を示している。ログ解析装置２は、ログ解析部２０、操作情報制御部２１、OS２２、ファイル記憶部２３、操作部２４、表示部２５、および通信部２６を有する。
【００３６】
ログ解析部２０、操作情報制御部２１、およびOS２２は、SRAM等のデバイスで構成される作業領域Ｗ２上で動作する。これらの実行ファイル（プログラム）はファイル記憶部２３に格納されており、これらの実行ファイルがファイル記憶部２３から作業領域Ｗ２に読み込まれることで、これらが起動する。なお、作業領域Ｗ２では、ログ解析部２０等のプロセスのほか、図示していない各種プロセスも起動する。これらのプロセスがOS２２にシステムコールの呼び出しを通知し、OS２２がシステムコールを呼び出すことによって、各プロセスは、図示していないCPUの資源を利用して各種処理を行う。
【００３７】
ログ解析部２０は、携帯端末１から受信したアプリケーションログおよびカーネルログを解析し、注目するアプリケーションが不正なアプリケーションであるか否かを判定する。
【００３８】
操作情報制御部２１は、操作者が操作部２４を操作して入力する操作内容に基づく操作情報に関する制御を行う。具体的には、操作情報制御部２１は携帯端末１と通信を行い、操作部２４に入力された操作内容を示す操作情報を送信し、また、実行結果を示す実行結果情報を受信する。OS２２は、ログ解析部２０および操作情報制御部２１の処理のスケジューリングや作業領域Ｗ２の割り当て等を制御すると共に、ファイル記憶部２３、操作部２４、表示部２５、および通信部２６の各デバイスの入出力を制御する。
【００３９】
ファイル記憶部２３は、ハードディスクドライブ等のデバイスで構成され、ログ解析装置２内で使用する実行ファイル等の各種ファイルを記憶する。操作部２４は、キーボードやマウス等のデバイスで構成され、操作者が操作した結果に基づく信号を出力する。表示部２５は、液晶表示装置等のデバイスで構成され、実行結果情報に基づく実行結果やログ解析部２０の処理結果等を表示する。通信部２６は、通信モジュール等のデバイスで構成され、携帯端末１と通信を行う。
【００４０】
図６はログ解析部２０の機能構成を示している。ログ解析部２０は、プロセスID抽出部２０ａ（第１の抽出部）、カーネルログ抽出部２０ｂ（第２の抽出部）、ファイル操作内容抽出部２０ｃ（第３の抽出部）、判定部２０ｄ、および制御部２０ｅを有する。
【００４１】
プロセスID抽出部２０ａは、注目するアプリケーション１０の処理に関するプロセスのプロセスIDをアプリケーションログから抽出する。図７は、プロセスの親子関係の一例を示している。図７では、システム上で最初に起動するinitプロセスが子プロセスを起動し、その子プロセスが親プロセスとして自身の子プロセスを起動する様子が示されている。
【００４２】
一例として、注目するアプリケーション１０のプロセス群７００のプロセスsshd（プロセスID：2005）はinitプロセスによって起動され、プロセスsshd（プロセスID：1921）およびプロセスsshd（プロセスID：8167）を起動している。プロセスsshd（プロセスID：1921）およびプロセスsshd（プロセスID：8167）もそれぞれ子プロセスを起動している。プロセスID抽出部２０ａは、注目するアプリケーション１０について、親子関係にある各プロセスのプロセスIDを抽出する。すなわち、図７に示す例の場合、プロセスIDとして2005、1921、1931、2333、2345、8167、8323、10940が抽出される。
【００４３】
カーネルログ抽出部２０ｂは、プロセスID抽出部２０ａが抽出したプロセスIDを有する部分、すなわち注目するアプリケーションの処理に関係する部分をカーネルログから抽出する。ファイル操作内容抽出部２０ｃは、カーネルログ抽出部２０ｂが抽出した部分から、ファイル操作に関係するシステムコールの実行内容を抽出する。判定部２０ｄは、ファイル操作内容抽出部２０ｃが抽出したシステムコールの実行内容が、ファイル記憶部１６中の特定のディレクトリに対する操作を示しているか否かを判定することによって、注目するアプリケーション１０が不正なアプリケーションであるか否かを判定する。制御部２０ｅは、プロセスID抽出部２０ａ、カーネルログ抽出部２０ｂ、ファイル操作内容抽出部２０ｃ、および判定部２０ｄに対する処理の振り分けの制御を行う。
【００４４】
次に、本実施形態によるアプリケーション判定システムの動作を説明する。図８は、アプリケーション判定システムの動作の手順を示している。図８に示す動作の開始前、注目するアプリケーションは携帯端末１にインストールされてなく、携帯端末１では操作情報制御部１４は起動しているが、アプリケーションログ生成部１１、カーネルログ生成部１２、およびログ生成制御部１３は起動していないものとする。また、図８に示す動作の開始前、ログ解析装置２では、操作情報制御部２１は起動しているがログ解析部２０は起動していないものとする。
【００４５】
まず、ログ解析装置２において、操作者は操作部２４を操作し、アプリケーションログ生成部１１およびカーネルログ生成部１２を起動する指示を入力する。操作部２４が操作されると、OS２２は操作部２４の操作内容を操作情報制御部２１に通知する。操作情報制御部２１は、通知された操作内容に基づいて、アプリケーションログ生成部１１およびカーネルログ生成部１２を起動するための操作情報であるログ生成部起動指示を生成する。このログ生成部起動指示は通信部２６から携帯端末１へ送信される（ステップＳ１００）。
【００４６】
携帯端末１において、通信部１９はログ生成部起動指示を受信する（ステップＳ１０５）。OS１５は、ログ生成部起動指示を操作情報制御部１４に通知し、操作情報制御部１４は、ログ生成部起動指示に基づいて、ログ生成制御部１３を起動するためのシステムコールの呼び出しをOS１５に通知する。OS１５はログ生成制御部１３を起動し、起動したログ生成制御部１３はアプリケーションログ生成部１１およびカーネルログ生成部１２を起動する（ステップＳ１１０）。起動したアプリケーションログ生成部１１およびカーネルログ生成部１２はログの生成を開始する。
【００４７】
続いて、ログ解析装置２において、操作者は操作部２４を操作し、判定対象のアプリケーションをインストールする指示を入力する。操作部２４が操作されると、OS２２は操作部２４の操作内容を操作情報制御部２１に通知する。操作情報制御部２１は、通知された操作内容に基づいて、判定対象のアプリケーションの圧縮ファイルをファイル記憶部２３から読み出す。この圧縮ファイルは通信部２６から携帯端末１へ送信される（ステップＳ１１５）。
【００４８】
携帯端末１において、通信部１９はアプリケーションの圧縮ファイルを受信する（ステップＳ１２０）。続いて、アプリケーションのインストールが実行され、伸張されたアプリケーションの実行ファイルがファイル記憶部１６に格納される（ステップＳ１２５）。
【００４９】
図９はアプリケーションの実行ファイルの構成を示している。図９に示すように実行ファイル９００は、命令列を含む実行コード９０１、アプリケーションのパッケージ名称やアプリケーションが利用するコンポーネント等の情報を含むマニフェストファイル９０２、実行コード９０１の実行時に参照されるライブラリ９０３、およびパラメータ９０４等のファイルで構成されている。
【００５０】
アプリケーションのインストール後、操作者は操作部１７を操作し、アプリケーションを起動する指示を入力する。操作部１７が操作されると、OS１５はアプリケーション１０を起動する（ステップＳ１３０）。アプリケーション１０の挙動は、アプリケーションログ生成部１１によってアプリケーションログとして記録されると共に、カーネルログ生成部１２によってカーネルログとして記録される。
【００５１】
続いて、ログ解析装置２において、操作者は操作部２４を操作し、ログを送信する指示を入力する。操作部２４が操作されると、OS２２は操作部２４の操作内容を操作情報制御部２１に通知する。操作情報制御部２１は、通知された操作内容に基づいて、ログを送信するための操作情報であるログ送信指示を生成する。このログ送信指示は通信部２６から携帯端末１へ送信される（ステップＳ１３５）。
【００５２】
携帯端末１において、通信部１９はログ送信指示を受信する（ステップＳ１４０）。OS１５は、ログ送信指示を操作情報制御部１４に通知し、操作情報制御部１４は、ログ送信指示に基づいて、OS１５を介してログ生成制御部１３にログの送信を指示する。ログ生成制御部１３は、アプリケーションログおよびカーネルログを送信する処理を行う。アプリケーションログおよびカーネルログは通信部１９からログ解析装置２へ送信される（ステップＳ１４５）。
【００５３】
ログ解析装置２において、通信部１９はアプリケーションログおよびカーネルログを受信する（ステップＳ１５０）。受信されたアプリケーションログおよびカーネルログは作業領域Ｗ２に保持される。続いて、操作者は操作部２４を操作し、ログを解析する指示を入力する。操作部２４が操作されると、OS２２はログ解析部２０を起動する（ステップＳ１５５）。ログ解析部２０は、アプリケーションログおよびカーネルログを解析する（ステップＳ１６０）。
【００５４】
図１０は、ステップＳ１６０におけるログ解析部２０の動作の詳細を示している。前述したように、ファイル記憶部２３にはアプリケーションの圧縮ファイルが格納されている。プロセスID抽出部２０ａは、ファイル記憶部２３からアプリケーションの圧縮ファイルを読み出して伸張し、図９に示したマニフェストファイル９０２から、アプリケーションを識別するパッケージ名称を取得する（ステップＳ２００）。
【００５５】
図１１はマニフェストファイルの一例を示している。「package=」に続く文字列１１００がパッケージ名称を示している。プロセスID抽出部２０ａは、マニフェストファイルから「package=」という文字列を検索し、その文字列に続く「"」で挟まれた文字列をパッケージ名称として取得する。なお、携帯端末１からアプリケーションログおよびカーネルログと共にマニフェストファイルをログ解析装置２へ送信し、ログ解析装置２においてログの解析に使用するようにしてもよい。
【００５６】
続いて、プロセスID抽出部２０ａは、アプリケーションログから、パッケージ名称と一致する文字列を有する部分を抽出し、抽出した部分からプロセスIDを抽出する（ステップＳ２０５）。図１２はアプリケーションログの一例を示している。プロセスの起動を示す「Start Proc」に続く文字列１２００がパッケージ名称を示している。さらに、「pid=」に続く数字１２１０が、アプリケーション１０が起動したプロセスのプロセスIDを示している。プロセスID抽出部２０ａは、アプリケーションログから「Start Proc」という文字列を検索し、その文字列に続く空白で挟まれた文字列が、ステップＳ２００で取得したパッケージ名称と一致する場合に、そのパッケージ名称に続く部分から「pid=」という文字列を検索し、その文字列に続く数字をプロセスIDとして取得する。このプロセスIDは、カーネルログの管理体系におけるプロセスIDと一致する。
【００５７】
続いて、プロセスID抽出部２０ａは、ステップＳ２０５で抽出したプロセスIDを親プロセスのプロセスID（以下、親プロセスIDとする）とし、カーネルログから子プロセスのプロセスID（以下、子プロセスIDとする）を抽出する（ステップＳ２１０）。カーネルログにおいて、プロセスの生成に関するシステムコールが記録された部分には、親プロセスと子プロセスも記録されている。本実施形態では、プロセスの生成に関するシステムコールとして、forkに注目する。
【００５８】
図１３はカーネルログの一例を示している。１つの記録単位１３００のメッセージ本体に、プロセスの生成に関するシステムコールを示す「fork」が記録されている。また、メッセージ本体の前のプロセスID「1391」が親プロセスIDを示し、メッセージ本体の最後尾のプロセスID「1392」が子プロセスIDを示す。プロセスID抽出部２０ａは、カーネルログから、「fork」の文字列を検索し、それらのいずれかの文字列を含むメッセージ本体の直前の親プロセスIDが、ステップＳ２０５で抽出したプロセスIDと一致する場合に、メッセージ本体の最後尾のプロセスIDを子プロセスIDとして抽出する。プロセスID抽出部２０ａは、抽出した子プロセスIDを親プロセスIDとして、上記のようにして子プロセスIDを抽出する処理を繰り返す。
【００５９】
続いて、カーネルログ抽出部２０ｂは、ステップＳ２０５，Ｓ２１０で抽出したプロセスIDと一致するプロセスIDが行の先頭に記録されている部分（記録単位）をカーネルログから抽出する（ステップＳ２１５）。ステップＳ２０５，Ｓ２１０で抽出したプロセスIDは、注目するアプリケーション１０に関連するプロセスのプロセスIDであるため、ステップＳ２１５で抽出した部分は、アプリケーション１０の挙動を示している。
【００６０】
続いて、ファイル操作内容抽出部２０ｃは、ステップＳ２１５で抽出した部分から、ファイル操作に関するシステムコールの実行内容を抽出する（ステップＳ２２０）。本実施形態では、ファイル操作に関するシステムコールとして、read、write、およびopenに注目する。
【００６１】
図１４は、openが記録されたカーネルログの一例を示している。１記録単位分に相当する部分１４００には、システムコールを呼び出したプロセスのプロセスID（695）と、システムコールを識別するシステムコール名称（open）と、システムコールの実行内容とが記録されている。システムコールの実行内容には、システムコールによってアクセスされたディレクトリの名称（/data/data/xxx/yyy/zzz）が含まれる。ファイル操作内容抽出部２０ｃは、ステップＳ２０５，Ｓ２１０で抽出したプロセスIDと一致するプロセスIDを行の先頭に有し、「read」、「write」、および「open」のいずれかと一致する文字列をメッセージ本体に有する記録単位があった場合に、その記録単位のメッセージ本体（記録単位全体でもよい）をシステムコールの実行内容として抽出する。
【００６２】
続いて、判定部２０ｄは、ステップＳ２２０で抽出したシステムコールの実行内容に基づいて、注目するアプリケーション１０が不正なアプリケーションであるか否かを判定する（ステップＳ２２５）。この判定には、不正なアプリケーションが行うファイル操作に基づいて予め定義した不正ファイル操作ルールが用いられる。不正ファイル操作ルールはファイル記憶部２３に格納されている。
【００６３】
携帯端末向けのオープンプラットフォームでは、アプリケーションがアクセスできるディレクトリは、そのアプリケーション専用に割り当てられた特定の領域に制限されている。図１５は、ファイル記憶部１６のディレクトリ構成を示している。ファイル記憶部１６には階層構造を有するディレクトリが作成されている。ディレクトリＤ１には、インストールされたアプリケーションの実行ファイルが格納される。また、ディレクトリＤ２は、各アプリケーションが用いるデータを保管するディレクトリであり、ディレクトリＤ２の下に、各アプリケーションの名称と同じ名称を有するディレクトリＤ３ａ〜Ｄ３ｃが並んでいる。
【００６４】
アプリケーションは、通常、そのアプリケーションに対応するディレクトリおよびそのディレクトリ下にあるディレクトリにしかアクセスすることができない。したがって、自身に専用に割り当てられたディレクトリとは異なる、他のアプリケーションに専用に割り当てられたディレクトリにアクセスするアプリケーションは不正なアプリケーションである。
【００６５】
また、図１５において、領域ＲＯＭは、OS等の重要なファイルが格納されている領域であり、一般ユーザ権限が設定されたアプリケーションがアクセスできないよう、領域ＲＯＭにはアクセス権限（パーミッション）が設定されている。このアクセス権限の変更は、root権限を有する場合のみ可能である。root権限を不正に取得した悪意のアプリケーションは、領域ＲＯＭのアクセス権限を変更し、領域ＲＯＭの重要なファイルにアクセスする。したがって、root権限を不正に取得して領域ＲＯＭにアクセスするアプリケーションは不正なアプリケーションである。
【００６６】
不正ファイル操作ルールには、各アプリケーションがアクセスしてはならない上記のようなディレクトリの名称が含まれる。すなわち、不正ファイル操作ルールには、ディレクトリＤ２下のディレクトリであって、注目するアプリケーション以外のアプリケーション専用のディレクトリの名称と、図１５の領域ＲＯＭに含まれるディレクトリの名称とが含まれる。
【００６７】
判定部２０ｄは、ステップＳ２２０で抽出したシステムコールの実行内容の文字列と、不正ファイル操作ルールに含まれる文字列とを比較し、ステップＳ２２０で抽出したシステムコールの実行内容の文字列の中に、不正ファイル操作ルールに含まれる文字列と一致する文字列があった場合、注目するアプリケーションが不正なアプリケーションであると判定する。また、ステップＳ２２０で抽出したシステムコールの実行内容の文字列の中に、不正ファイル操作ルールに含まれる文字列と一致する文字列がなかった場合、判定部２０ｄは、注目するアプリケーションが不正なアプリケーションではないと判定する。
【００６８】
上記の判定において、不正ファイル操作ルールの内容に基づいて、不正なアプリケーションの種別を識別してもよい。例えば、ステップＳ２２０で抽出したシステムコールの実行内容の文字列の中に、注目するアプリケーション以外のアプリケーション専用のディレクトリの名称と一致する文字列があった場合、注目するアプリケーションが、他のアプリケーションによって管理される個人情報等にアクセスする情報漏洩タイプのアプリケーションであると識別することができる。また、ステップＳ２２０で抽出したシステムコールの実行内容の文字列の中に、図１５の領域ＲＯＭに含まれるディレクトリの名称と一致する文字列があった場合、注目するアプリケーションが、root権限を不正に取得するタイプのアプリケーションであると識別することができる。上記の判定結果に応じて、不正なアプリケーションの種別を示す種別情報を生成し、判定結果と共にファイル記憶部２３に保存してもよい。
【００６９】
次に、本実施形態の変形例を説明する。ログ解析装置２におけるログ解析の機能を携帯端末１が有していてもよい。図１６は、ログ解析の機能を実装した携帯端末の機能構成を示している。図１６に示す携帯端末１ａは、図２に示した携帯端末１の構成に加えて、図３に示したログ解析装置２が有するログ解析部２０を有している。アプリケーション１０の起動後、ログ解析部２０は、作業領域Ｗ１に保持されているアプリケーションログおよびカーネルログに基づいて、図１０に示した処理を行う。なお、マニフェストファイルは、ファイル記憶部１６に格納されているアプリケーションの実行ファイルから取得される。また、ファイル記憶部１６には不正ファイル操作ルールが格納されており、図１０のステップＳ２２５では、この不正ファイル操作ルールが用いられる。
【００７０】
また、ログ解析装置２はログの収集機能とログの解析機能とを有しているが、ログの収集機能をログ解析装置２とは別の装置に持たせてもよい。例えば、携帯端末１からログを収集する機能を有する端末を用意し、ログ解析装置２はその端末からログを受信して解析を行う。
【００７１】
上述した携帯端末１，１ａおよびログ解析装置２の各機能は、各装置の動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより、実現される。ここで、「コンピュータ」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００７２】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００７３】
上述したように、本実施形態によれば、アプリケーションの挙動を記録したアプリケーションログおよびカーネルログに基づいて、注目するアプリケーションが不正であるか否かを判定することができる。特に、注目するアプリケーションの挙動に対応するプロセス以外のプロセスに関する多量の冗長な情報を解析対象から排除することが可能となるので、アプリケーションログおよびカーネルログの解析を効率的に行うことができ、注目するアプリケーションが不正であるか否かを判定する際の判定精度を向上することができる。
【００７４】
また、カーネルログから、親プロセスIDと関連付けられた子プロセスIDを抽出し、ログの解析に用いることによって、アプリケーションの挙動をより詳細に解析することができ、注目するアプリケーションが不正であるか否かを判定する際の判定精度を向上することができる。
【００７５】
また、カーネルログに記録されたシステムコールの実行内容が、root権限を有している場合に操作が可能なディレクトリ（図１５の領域ＲＯＭのディレクトリ）に対する操作を示しているか否か、あるいはファイル記憶部１６において特定のアプリケーションに割り当てられたディレクトリ（図１５のディレクトリＤ３ａ〜Ｄ３ｃ）に対する操作を示しているか否かを判定することによって、携帯端末のroot権限を奪うアプリケーションや、個人情報を漏洩させるアプリケーションを検出することができる。
【００７６】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【００７７】
１，１ａ・・・携帯端末、２・・・ログ解析装置、３・・・ケーブル、１０・・・アプリケーション、１１・・・アプリケーションログ生成部、１２・・・カーネルログ生成部、１３・・・ログ生成制御部、１４，２１・・・操作情報制御部、１５，２２・・・OS、１６，２３・・・ファイル記憶部、１７，２４・・・操作部、１８，２５・・・表示部、１９，２６・・・通信部、２０・・・ログ解析部、２０ａ・・・プロセスID抽出部、２０ｂ・・・カーネルログ抽出部、２０ｃ・・・ファイル操作内容抽出部、２０ｄ・・・判定部、２０ｅ・・・制御部、Ｗ１，Ｗ２・・・作業領域
【図１】
0005478384.tif 000002
【図２】
0005478384.tif 000003
【図３】
0005478384.tif 000004
【図４】
0005478384.tif 000005
【図５】
0005478384.tif 000006
【図６】
0005478384.tif 000007
【図７】
0005478384.tif 000008
【図８】
0005478384.tif 000009
【図９】
0005478384.tif 000010
【図１０】
0005478384.tif 000011
【図１１】
0005478384.tif 000012
【図１２】
0005478384.tif 000013
【図１３】
0005478384.tif 000014
【図１４】
0005478384.tif 000015
【図１５】
0005478384.tif 000016
【図１６】
0005478384.tif 000017