説明

アプリケーション判定システムおよびプログラム

【課題】アプリケーションの挙動を記録したログに基づいて、注目するアプリケーションが不正であるか否かを判定することができるアプリケーション判定システムおよびプログラムを提供する。
【解決手段】プロセスID抽出部20aは、アプリケーションログから、特定のアプリケーションの識別情報と関連付けられたプロセスの識別情報を抽出する。カーネルログ抽出部20bは、カーネルログから、プロセスID抽出部20aが抽出したプロセスの識別情報を有する部分を抽出する。通信内容抽出部20cは、カーネルログ抽出部20bが抽出した部分から、通信に関係するシステムコールの識別情報と関連付けられたシステムコールの実行内容を抽出する。判定部20dは、通信内容抽出部20cが抽出したシステムコールの実行内容が、特定のIPアドレスを通信相手とする通信を示しているか否かを判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションが実行した処理の内容に基づく判定を行うアプリケーション判定システムに関する。また、本発明は、本アプリケーション判定システムとしてコンピュータを機能させるためのプログラムに関する。
【背景技術】
【0002】
オープンプラットフォームと呼ばれる汎用的なOS(オペレーティングシステム)を採用する携帯端末の普及に伴い、多くの携帯端末向けのアプリケーションが、通信ネットワーク(インターネット)上の専用サイトや個人サイトを通じて販売および配布されている。汎用OSを採用した携帯端末向けのアプリケーションは、既存の専用組み込みOSを採用した携帯端末向けのアプリケーションと比較して、開発や配布を容易に行うことができる。
【0003】
しかし、これに伴って、利用者の個人情報の窃盗や、悪性サイトへの誘導、OSの管理者権限の奪取など、利用者が意図せず不利益を被る可能性のある振る舞いを行うアプリケーションも登場している。よって、アプリケーションの安全性を事前に検証し、不正なアプリケーションを検知することは、利用者が安心してアプリケーションを利用できる環境の実現に有効であると共に、安全性を検証したアプリケーションを提供することで、他社との差別化を図ることも可能であり、重要な技術となる。
【0004】
特許文献1には、携帯電話などの端末にアプリケーションをダウンロードする際にアプリケーションの認証を行うことで、不正なアプリケーションが端末内で実行されることを防止する技術が記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−251021号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
注目するアプリケーションが不正なアプリケーションであるか否かを判定する方法の一つとして、アプリケーションが実行されたときのアプリケーションの挙動を解析する方法が考えられる。アプリケーションの挙動を記録したログとして、アプリケーションログとカーネルログがある。アプリケーションログは、アプリケーションの実行条件や状態に関する情報を記録したログである。カーネルログは、アプリケーションの処理と関連するプロセスが呼び出したシステムコールの情報を記録したログである。
【0007】
アプリケーションログには、アプリケーションを実行したときのプロセスの起動や終了等のタイミングは記録されているが、プロセスの処理内容は記録されていない。一方、カーネルログには、プロセスの処理内容は記録されているが、各プロセスがどのアプリケーションの処理と関連しているのかということに関する情報は記録されていない。このため、アプリケーションログとカーネルログのそれぞれ単体からは、特定のアプリケーションによる挙動の詳細を知ることが困難であった。
【0008】
また、アプリケーションログとカーネルログには、注目するアプリケーションの挙動に対応するプロセス以外のプロセスに関する多量の情報も記録されている。この情報は、アプリケーションの挙動を解析する際には冗長な情報である。このような冗長な情報が含まれているため、アプリケーションログとカーネルログの解析が非効率的となる。
【0009】
本発明は、上述した課題に鑑みてなされたものであって、アプリケーションの挙動を記録したログに基づいて、注目するアプリケーションが不正であるか否かを判定することができるアプリケーション判定システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明は、上記の課題を解決するためになされたもので、アプリケーションの識別情報と、前記アプリケーションの処理の際に生成されたプロセスの識別情報とが関連付けられた第1のログを記憶すると共に、前記プロセスの識別情報と、前記プロセスが呼び出したシステムコールの識別情報と、前記システムコールの実行内容とが関連付けられた第2のログを記憶するログ記憶部と、前記第1のログから、特定のアプリケーションの識別情報と関連付けられた前記プロセスの識別情報を抽出する第1の抽出部と、前記第2のログから、前記第1の抽出部が抽出した前記プロセスの識別情報を有する部分を抽出する第2の抽出部と、前記第2の抽出部が抽出した部分から、通信に関係するシステムコールの識別情報と関連付けられた前記システムコールの実行内容を抽出する第3の抽出部と、前記第3の抽出部が抽出した前記システムコールの実行内容が、特定のIPアドレスを通信相手とする通信を示しているか否かを判定する判定部と、を備えたことを特徴とするアプリケーション判定システムである。
【0011】
また、本発明のアプリケーション判定システムにおいて、前記第2のログに含まれる前記システムコールの実行内容は、前記プロセスの識別情報に対応するプロセスが、他のプロセスを起動する所定のシステムコールによって起動した前記他のプロセスの識別情報を含み、前記第1の抽出部はさらに、前記第2のログにおいて、前記第1のログから抽出した前記プロセスの識別情報と関連付けられた前記システムコールの実行内容に含まれる前記他のプロセスの識別情報を抽出することを特徴とする。
【0012】
また、本発明のアプリケーション判定システムにおいて、前記判定部は、前記第3の抽出部が抽出した前記システムコールの実行内容が、既知の悪性ウェブサイトのIPアドレスを通信相手とする通信を示しているか否かを判定することを特徴とする。
【0013】
また、本発明のアプリケーション判定システムにおいて、前記判定部は、前記第3の抽出部が抽出した前記システムコールの実行内容に含まれる通信相手のIPアドレスが、前記既知の悪性ウェブサイトのIPアドレスと一致するか否かを判定することを特徴とする。
【0014】
また、本発明のアプリケーション判定システムにおいて、前記判定部は、前記第3の抽出部が抽出した前記システムコールの実行内容が、既知の悪性アプリケーションの挙動を解析して得られるIPアドレスを通信相手とする通信を示しているか否かを判定することを特徴とする。
【0015】
また、本発明のアプリケーション判定システムにおいて、前記判定部は、前記第3の抽出部が抽出した前記システムコールの実行内容に含まれる通信相手のIPアドレスが、前記既知の悪性アプリケーションの挙動を解析して得られるIPアドレスと一致するか否かを判定することを特徴とする。
【0016】
また、本発明のアプリケーション判定システムにおいて、前記判定部は、前記第3の抽出部が抽出した前記システムコールの実行内容が、特定のIPアドレスおよびポート番号を通信相手とする通信を示しているか否かを判定することを特徴とする。
【0017】
また、本発明は、アプリケーションの識別情報と、前記アプリケーションの処理の際に生成されたプロセスの識別情報とが関連付けられた第1のログを記憶すると共に、前記プロセスの識別情報と、前記プロセスが呼び出したシステムコールの識別情報と、前記システムコールの実行内容とが関連付けられた第2のログを記憶するログ記憶部と、前記第1のログから、特定のアプリケーションの識別情報と関連付けられた前記プロセスの識別情報を抽出する第1の抽出部と、前記第2のログから、前記第1の抽出部が抽出した前記プロセスの識別情報を有する部分を抽出する第2の抽出部と、前記第2の抽出部が抽出した部分から、通信に関係するシステムコールの識別情報と関連付けられた前記システムコールの実行内容を抽出する第3の抽出部と、前記第3の抽出部が抽出した前記システムコールの実行内容が、特定のIPアドレスを通信相手とする通信を示しているか否かを判定する判定部と、としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【0018】
本発明によれば、アプリケーションの処理の際に生成されたプロセスが呼び出したシステムコールの実行内容が、特定のIPアドレスを通信相手とする通信を示しているか否かを判定することによって、注目するアプリケーションが不正であるか否かを判定することができる。
【図面の簡単な説明】
【0019】
【図1】本発明の一実施形態によるアプリケーション判定システムの構成を示すブロック図である。
【図2】本発明の一実施形態によるアプリケーション判定システムが有する携帯端末の機能構成を示すブロック図である。
【図3】本発明の一実施形態によるアプリケーション判定システムが有するログ解析装置の機能構成を示すブロック図である。
【図4】本発明の一実施形態におけるアプリケーションログの内容を示す参考図である。
【図5】本発明の一実施形態におけるカーネルログの内容を示す参考図である。
【図6】本発明の一実施形態におけるログ解析部の機能構成を示すブロック図である。
【図7】本発明の一実施形態におけるプロセスの親子関係を示す参考図である。
【図8】本発明の一実施形態によるアプリケーション判定システムの動作の手順を示すシーケンス図である。
【図9】本発明の一実施形態におけるアプリケーションの実行ファイルの構成を示す参考図である。
【図10】本発明の一実施形態によるアプリケーション判定システムの動作の手順を示すフローチャートである。
【図11】本発明の一実施形態におけるマニフェストファイルの内容を示す参考図である。
【図12】本発明の一実施形態におけるアプリケーションログの内容を示す参考図である。
【図13】本発明の一実施形態におけるカーネルログの内容を示す参考図である。
【図14】本発明の一実施形態におけるカーネルログの内容を示す参考図である。
【図15】本発明の一実施形態における不正通信相手リストの内容を示す参考図である。
【図16】本発明の一実施形態によるアプリケーション判定システムの変形例の機能構成を示すブロック図である。
【発明を実施するための形態】
【0020】
以下、図面を参照し、本発明の実施形態を説明する。
【0021】
アプリケーションが処理を実行する際には、端末が有する機能の利用や設定の変更に係る権限が設定され、アプリケーションはその権限の範囲内で処理を実行することが可能である。例えば、一般ユーザ権限が設定された場合、一般ユーザ権限の範囲内で各種処理の実行が可能となる。また、最高権限(管理者権限)であるroot権限(スーパーユーザ権限)が設定された場合、一般ユーザ権限の範囲内で可能な処理に加えて、端末内の重要な設定の変更等が可能となる。
【0022】
通常、アプリケーションは一般ユーザ権限で動作するように設定されており、一般ユーザ権限が設定されたアプリケーションが通信できる相手は、端末内のiptablesによって制限されている。しかし、不正なアプリケーションはOSの脆弱性を突いてroot権限を不正に取得し、iptablesによる制限を解除して不正なウェブサイトにアクセスできるようになる。本実施形態では、アプリケーションが通信を行う挙動を解析することで、注目するアプリケーションが不正なアプリケーションであるか否かを判定する。
【0023】
図1は、本発明の一実施形態によるアプリケーション判定システムの構成を示している。本実施形態によるアプリケーション判定システムは、携帯電話端末、携帯情報端末、スマートフォン等の携帯端末1と、PC等のログ解析装置2とを有する。携帯端末1とログ解析装置2は、RS232C等のケーブル3で接続されており、ログ解析装置2から携帯端末1を操作することができる。本実施形態によるアプリケーション判定システムは、例えば携帯端末用のアプリケーションを通信ネットワーク上で販売する販売サイトを管理する企業に設置される。
【0024】
図2は携帯端末1の機能構成を示している。携帯端末1は、アプリケーション10、アプリケーションログ生成部11、カーネルログ生成部12、ログ生成制御部13、操作情報制御部14、OS15、ファイル記憶部16、操作部17、表示部18、通信部19、および作業領域W1(ログ記憶部)を有する。
【0025】
アプリケーション10、アプリケーションログ生成部11、カーネルログ生成部12、ログ生成制御部13、操作情報制御部14、およびOS15は、SRAM等のデバイスで構成される作業領域W1上で動作する。これらの実行ファイル(プログラム)はファイル記憶部16に格納されており、これらの実行ファイルがファイル記憶部16から作業領域W1に読み込まれることで、これらが起動する。なお、作業領域W1では、アプリケーション10等のプロセスのほか、図示していない各種プロセスも起動する。これらのプロセスがOS15にシステムコールの呼び出しを通知し、OS15がシステムコールを呼び出すことによって、各プロセスは、図示していないCPUの資源を利用して各種処理を行う。
【0026】
アプリケーション10は、OS15に対するシステムコールの呼び出しやOS15からの実行結果の受け取り等を行う。これによって、アプリケーション10は、アプリケーションの処理として規定された各種処理の実行やファイル記憶部16へのアクセス等を行う。
【0027】
アプリケーションログ生成部11は、アプリケーション10の実行条件や状態に関する情報を記録したアプリケーションログ(第1のログ)を生成する。生成されたアプリケーションログは作業領域W1に保持される。
【0028】
図4はアプリケーションログの一例を示している。アプリケーションログは、タイムスタンプ400、プロセスID410、プロセスID420、メッセージ種別430、メッセージタグおよびメッセージ本体440からなる。タイムスタンプ400は日付および時刻を含む。1つのタイムスタンプ400、親プロセスID410、プロセスID420、メッセージ種別430、メッセージタグおよびメッセージ本体440の組を記録単位としてアプリケーションの挙動がアプリケーションログに記録される。図4に示す例では、5つの記録単位分のアプリケーションログの内容が示されている。
【0029】
プロセスは、プロセス起動のシステムコールを呼び出すことによって、他のプロセスを起動することができる。以下では、起動元のプロセスを親プロセスと呼び、親プロセスによって起動されたプロセスを子プロセスと呼ぶ。プロセスID410およびプロセスID420が異なる場合、プロセスID410は親プロセスのプロセスIDを示し、プロセスID420は子プロセスのプロセスIDを示す。プロセスID410およびプロセスID420が同一の場合、それらのプロセスIDを有する記録単位は同一のプロセスの挙動を示している。
【0030】
カーネルログ生成部12は、アプリケーション10の処理に関連するプロセスが呼び出したシステムコールの情報を記録したカーネルログ(第2のログ)を生成する。生成されたカーネルログは作業領域W1に保持される。
【0031】
図5はカーネルログの一例を示している。カーネルログは、プロセスID500、メッセージ本体510からなる。1つのプロセスID500とメッセージ本体510の組を記録単位としてシステムコールの情報がカーネルログに記録される。図5に示す例では、5つの記録単位分のカーネルログの内容が示されている。なお、アプリケーションログとカーネルログとでは、プロセスIDの管理体系が異なる。このため、同一のプロセスについて、アプリケーションログに記録されるプロセスIDとカーネルログに記録されるプロセスIDは異なる。
【0032】
ログ生成制御部13は、アプリケーションログ生成部11およびカーネルログ生成部12を起動する処理を行う。また、ログ生成制御部13は、アプリケーションログおよびカーネルログをログ解析装置2へ送信する処理を行う。
【0033】
操作情報制御部14は、操作者がログ解析装置2を操作して入力する操作情報に関する制御を行う。具体的には、操作情報制御部14はログ解析装置2と通信を行い、ログ解析装置2に入力された操作内容を示す操作情報を受信し、操作情報の内容を解釈してOS15に通知する。通知を受けたOS15は各種処理を実行する。また、操作情報制御部14は、OS15から処理の実行結果の通知を受け、実行結果を示す実行結果情報をログ解析装置2へ送信する。以下の動作の説明では、実行結果情報に関する処理の説明を省略する。
【0034】
OS15は、アプリケーション10、アプリケーションログ生成部11、カーネルログ生成部12、ログ生成制御部13、および操作情報制御部14の処理のスケジューリングや作業領域W1の割り当て等を制御すると共に、ファイル記憶部16、操作部17、表示部18、および通信部19の各デバイスの入出力を制御する。
【0035】
ファイル記憶部16は、フラッシュメモリ等のデバイスで構成され、携帯端末1内で使用する実行ファイル等の各種ファイルを記憶する。操作部17は、キー(ボタン)やスイッチ等のデバイスで構成され、操作者が操作した結果に基づく信号を出力する。表示部18は、液晶表示装置等のデバイスで構成され、携帯端末1で実行された処理の結果や携帯端末1の状態等を表示する。通信部19は、通信モジュール等のデバイスで構成され、ログ解析装置2と通信を行う。
【0036】
図3はログ解析装置2の機能構成を示している。ログ解析装置2は、ログ解析部20、操作情報制御部21、OS22、ファイル記憶部23、操作部24、表示部25、および通信部26を有する。
【0037】
ログ解析部20、操作情報制御部21、およびOS22は、SRAM等のデバイスで構成される作業領域W2上で動作する。これらの実行ファイル(プログラム)はファイル記憶部23に格納されており、これらの実行ファイルがファイル記憶部23から作業領域W2に読み込まれることで、これらが起動する。なお、作業領域W2では、ログ解析部20等のプロセスのほか、図示していない各種プロセスも起動する。これらのプロセスがOS22にシステムコールの呼び出しを通知し、OS22がシステムコールを呼び出すことによって、各プロセスは、図示していないCPUの資源を利用して各種処理を行う。
【0038】
ログ解析部20は、携帯端末1から受信したアプリケーションログおよびカーネルログを解析し、注目するアプリケーションが不正なアプリケーションであるか否かを判定する。
【0039】
操作情報制御部21は、操作者が操作部24を操作して入力する操作内容に基づく操作情報に関する制御を行う。具体的には、操作情報制御部21は携帯端末1と通信を行い、操作部24に入力された操作内容を示す操作情報を送信し、また、実行結果を示す実行結果情報を受信する。OS22は、ログ解析部20および操作情報制御部21の処理のスケジューリングや作業領域W2の割り当て等を制御すると共に、ファイル記憶部23、操作部24、表示部25、および通信部26の各デバイスの入出力を制御する。
【0040】
ファイル記憶部23は、ハードディスクドライブ等のデバイスで構成され、ログ解析装置2内で使用する実行ファイル等の各種ファイルを記憶する。操作部24は、キーボードやマウス等のデバイスで構成され、操作者が操作した結果に基づく信号を出力する。表示部25は、液晶表示装置等のデバイスで構成され、実行結果情報に基づく実行結果やログ解析部20の処理結果等を表示する。通信部26は、通信モジュール等のデバイスで構成され、携帯端末1と通信を行う。
【0041】
図6はログ解析部20の機能構成を示している。ログ解析部20は、プロセスID抽出部20a(第1の抽出部)、カーネルログ抽出部20b(第2の抽出部)、通信内容抽出部20c(第3の抽出部)、判定部20d、および制御部20eを有する。
【0042】
プロセスID抽出部20aは、注目するアプリケーション10の処理に関するプロセスのプロセスIDをアプリケーションログから抽出する。図7は、プロセスの親子関係の一例を示している。図7では、システム上で最初に起動するinitプロセスが子プロセスを起動し、その子プロセスが親プロセスとして自身の子プロセスを起動する様子が示されている。
【0043】
一例として、注目するアプリケーション10のプロセス群700のプロセスsshd(プロセスID:2005)はinitプロセスによって起動され、プロセスsshd(プロセスID:1921)およびプロセスsshd(プロセスID:8167)を起動している。プロセスsshd(プロセスID:1921)およびプロセスsshd(プロセスID:8167)もそれぞれ子プロセスを起動している。プロセスID抽出部20aは、注目するアプリケーション10について、親子関係にある各プロセスのプロセスIDを抽出する。すなわち、図7に示す例の場合、プロセスIDとして2005、1921、1931、2333、2345、8167、8323、10940が抽出される。
【0044】
カーネルログ抽出部20bは、プロセスID抽出部20aが抽出したプロセスIDを有する部分、すなわち注目するアプリケーションの処理に関係する部分をカーネルログから抽出する。通信内容抽出部20cは、カーネルログ抽出部20bが抽出した部分から、通信(ソケット通信)に関係するシステムコールの実行内容を抽出する。判定部20dは、通信内容抽出部20cが抽出したシステムコールの実行内容が、特定のIPアドレス(または特定のIPアドレスおよびポート番号)を通信相手とする通信を示しているか否かを判定することによって、注目するアプリケーション10が不正なアプリケーションであるか否かを判定する。制御部20eは、プロセスID抽出部20a、カーネルログ抽出部20b、通信内容抽出部20c、および判定部20dに対する処理の振り分けの制御を行う。
【0045】
次に、本実施形態によるアプリケーション判定システムの動作を説明する。図8は、アプリケーション判定システムの動作の手順を示している。図8に示す動作の開始前、注目するアプリケーションは携帯端末1にインストールされてなく、携帯端末1では操作情報制御部14は起動しているが、アプリケーションログ生成部11、カーネルログ生成部12、およびログ生成制御部13は起動していないものとする。また、図8に示す動作の開始前、ログ解析装置2では、操作情報制御部21は起動しているがログ解析部20は起動していないものとする。
【0046】
まず、ログ解析装置2において、操作者は操作部24を操作し、アプリケーションログ生成部11およびカーネルログ生成部12を起動する指示を入力する。操作部24が操作されると、OS22は操作部24の操作内容を操作情報制御部21に通知する。操作情報制御部21は、通知された操作内容に基づいて、アプリケーションログ生成部11およびカーネルログ生成部12を起動するための操作情報であるログ生成部起動指示を生成する。このログ生成部起動指示は通信部26から携帯端末1へ送信される(ステップS100)。
【0047】
携帯端末1において、通信部19はログ生成部起動指示を受信する(ステップS105)。OS15は、ログ生成部起動指示を操作情報制御部14に通知し、操作情報制御部14は、ログ生成部起動指示に基づいて、ログ生成制御部13を起動するためのシステムコールの呼び出しをOS15に通知する。OS15はログ生成制御部13を起動し、起動したログ生成制御部13はアプリケーションログ生成部11およびカーネルログ生成部12を起動する(ステップS110)。起動したアプリケーションログ生成部11およびカーネルログ生成部12はログの生成を開始する。
【0048】
続いて、ログ解析装置2において、操作者は操作部24を操作し、判定対象のアプリケーションをインストールする指示を入力する。操作部24が操作されると、OS22は操作部24の操作内容を操作情報制御部21に通知する。操作情報制御部21は、通知された操作内容に基づいて、判定対象のアプリケーションの圧縮ファイルをファイル記憶部23から読み出す。この圧縮ファイルは通信部26から携帯端末1へ送信される(ステップS115)。
【0049】
携帯端末1において、通信部19はアプリケーションの圧縮ファイルを受信する(ステップS120)。続いて、アプリケーションのインストールが実行され、伸張されたアプリケーションの実行ファイルがファイル記憶部16に格納される(ステップS125)。
【0050】
図9はアプリケーションの実行ファイルの構成を示している。図9に示すように実行ファイル900は、命令列を含む実行コード901、アプリケーションのパッケージ名称やアプリケーションが利用するコンポーネント等の情報を含むマニフェストファイル902、実行コード901の実行時に参照されるライブラリ903、およびパラメータ904等のファイルで構成されている。
【0051】
アプリケーションのインストール後、操作者は操作部17を操作し、アプリケーションを起動する指示を入力する。操作部17が操作されると、OS15はアプリケーション10を起動する(ステップS130)。アプリケーション10の挙動は、アプリケーションログ生成部11によってアプリケーションログとして記録されると共に、カーネルログ生成部12によってカーネルログとして記録される。
【0052】
続いて、ログ解析装置2において、操作者は操作部24を操作し、ログを送信する指示を入力する。操作部24が操作されると、OS22は操作部24の操作内容を操作情報制御部21に通知する。操作情報制御部21は、通知された操作内容に基づいて、ログを送信するための操作情報であるログ送信指示を生成する。このログ送信指示は通信部26から携帯端末1へ送信される(ステップS135)。
【0053】
携帯端末1において、通信部19はログ送信指示を受信する(ステップS140)。OS15は、ログ送信指示を操作情報制御部14に通知し、操作情報制御部14は、ログ送信指示に基づいて、OS15を介してログ生成制御部13にログの送信を指示する。ログ生成制御部13は、アプリケーションログおよびカーネルログを送信する処理を行う。アプリケーションログおよびカーネルログは通信部19からログ解析装置2へ送信される(ステップS145)。
【0054】
ログ解析装置2において、通信部19はアプリケーションログおよびカーネルログを受信する(ステップS150)。受信されたアプリケーションログおよびカーネルログは作業領域W2に保持される。続いて、操作者は操作部24を操作し、ログを解析する指示を入力する。操作部24が操作されると、OS22はログ解析部20を起動する(ステップS155)。ログ解析部20は、アプリケーションログおよびカーネルログを解析する(ステップS160)。
【0055】
図10は、ステップS160におけるログ解析部20の動作の詳細を示している。前述したように、ファイル記憶部23にはアプリケーションの圧縮ファイルが格納されている。プロセスID抽出部20aは、ファイル記憶部23からアプリケーションの圧縮ファイルを読み出して伸張し、図9に示したマニフェストファイル902から、アプリケーションを識別するパッケージ名称を取得する(ステップS200)。
【0056】
図11はマニフェストファイルの一例を示している。「package=」に続く文字列1100がパッケージ名称を示している。プロセスID抽出部20aは、マニフェストファイルから「package=」という文字列を検索し、その文字列に続く「"」で挟まれた文字列をパッケージ名称として取得する。なお、携帯端末1からアプリケーションログおよびカーネルログと共にマニフェストファイルをログ解析装置2へ送信し、ログ解析装置2においてログの解析に使用するようにしてもよい。
【0057】
続いて、プロセスID抽出部20aは、アプリケーションログから、パッケージ名称と一致する文字列を有する部分を抽出し、抽出した部分からプロセスIDを抽出する(ステップS205)。図12はアプリケーションログの一例を示している。プロセスの起動を示す「Start Proc」に続く文字列1200がパッケージ名称を示している。さらに、「pid=」に続く数字1210が、アプリケーション10が起動したプロセスのプロセスIDを示している。プロセスID抽出部20aは、アプリケーションログから「Start Proc」という文字列を検索し、その文字列に続く空白で挟まれた文字列が、ステップS200で取得したパッケージ名称と一致する場合に、そのパッケージ名称に続く部分から「pid=」という文字列を検索し、その文字列に続く数字をプロセスIDとして取得する。このプロセスIDは、カーネルログの管理体系におけるプロセスIDと一致する。
【0058】
続いて、プロセスID抽出部20aは、ステップS205で抽出したプロセスIDを親プロセスのプロセスID(以下、親プロセスIDとする)とし、カーネルログから子プロセスのプロセスID(以下、子プロセスIDとする)を抽出する(ステップS210)。カーネルログにおいて、プロセスの生成に関するシステムコールが記録された部分には、親プロセスと子プロセスも記録されている。本実施形態では、プロセスの生成に関するシステムコールとして、forkに注目する。
【0059】
図13はカーネルログの一例を示している。1つの記録単位1300のメッセージ本体に、プロセスの生成に関するシステムコールを示す「clone resumed」が記録されている。また、メッセージ本体の前のプロセスID「1391」が親プロセスIDを示し、メッセージ本体の最後尾のプロセスID「1392」が子プロセスIDを示す。プロセスID抽出部20aは、カーネルログから、「fork」の文字列を検索し、それらのいずれかの文字列を含むメッセージ本体の直前の親プロセスIDが、ステップS205で抽出したプロセスIDと一致する場合に、メッセージ本体の最後尾のプロセスIDを子プロセスIDとして抽出する。プロセスID抽出部20aは、抽出した子プロセスIDを親プロセスIDとして、上記のようにして子プロセスIDを抽出する処理を繰り返す。
【0060】
続いて、カーネルログ抽出部20bは、ステップS205,S210で抽出したプロセスIDと一致するプロセスIDが行の先頭に記録されている部分(記録単位)をカーネルログから抽出する(ステップS215)。ステップS205,S210で抽出したプロセスIDは、注目するアプリケーション10に関連するプロセスのプロセスIDであるため、ステップS215で抽出した部分は、アプリケーション10の挙動を示している。
【0061】
続いて、通信内容抽出部20cは、ステップS215で抽出した部分から、通信(ソケット通信)に関するシステムコールの実行内容を抽出する(ステップS220)。本実施形態では、通信に関するシステムコールとして、recv、connect、およびsendに注目する。
【0062】
図14は、connectが記録されたカーネルログの一例を示している。1記録単位分に相当する部分1400には、システムコールを呼び出したプロセスのプロセスID(5205)と、システムコールを識別するシステムコール名称(connect)と、システムコールの実行内容とが記録されている。システムコールの実行内容には、システムコールによって実行された通信の相手のIPアドレス(aaa.bbb.ccc.ddd)とポート番号(xx)が含まれる。通信内容抽出部20cは、ステップS205,S210で抽出したプロセスIDと一致するプロセスIDを行の先頭に有し、「recv」、「connect」、および「send」のいずれかと一致する文字列をメッセージ本体に有する記録単位があった場合に、その記録単位のメッセージ本体(記録単位全体でもよい)をシステムコールの実行内容として抽出する。
【0063】
続いて、判定部20dは、ステップS220で抽出したシステムコールの実行内容に基づいて、注目するアプリケーション10が不正なアプリケーションであるか否かを判定する(ステップS225)。この判定には、不正なアプリケーションが行う通信に基づいて予め定義した不正通信相手リストが用いられる。不正通信相手リストはファイル記憶部23に格納されている。
【0064】
インターネット上では、フィッシングサイトやウイルス感染サイト等、悪性のウェブサイトの情報をブラックリストとして公表しているウェブサイトがある。このウェブサイトから、不正な通信相手のIPアドレス等を取得することが可能である。また、既知の不正なアプリケーションが通信を行ったときの挙動を解析することによって、そのアプリケーションが通信を行った際の通信相手のIPアドレス等を取得することが可能である。上記のようにして取得したIPアドレス等が不正通信相手リストに記録されている。
【0065】
図15は不正通信相手リストの一例を示している。不正通信相手リストには、IPアドレス、ポート番号、FQDN(Fully Qualified Domain Name)、および種別が含まれる。IPアドレス、ポート番号、およびFQDNは、不正なアプリケーションが行う通信の相手(宛先)の情報である。2つのIPアドレスが「〜」で結ばれている場合は、2つのIPアドレスを起点および終点とするIPアドレスの範囲を示している。種別は、通信の種別を示している。
【0066】
判定部20dは、ステップS220で抽出したシステムコールの実行内容から「sin_addr=inet_addr」という文字列を検索し、その文字列に続く部分から、「"」で挟まれた数字列を通信相手のIPアドレスとして取得する。また、判定部20dは、ステップS220で抽出したシステムコールの実行内容から「sin_port=htons」という文字列を検索し、その文字列に続く「(」と「)」で挟まれた数字をポート番号として取得する。
【0067】
さらに、判定部20dは、システムコールの実行内容から取得したIPアドレスとポート番号との組合せを、不正通信相手リストに含まれるIPアドレスとポート番号との組合せと比較する。システムコールの実行内容から取得したIPアドレスとポート番号との組合せが、不正通信相手リストに含まれるIPアドレスとポート番号との組合せのいずれかと一致した場合、判定部20dは、注目するアプリケーションが不正なアプリケーションであると判定する。また、システムコールの実行内容から取得したIPアドレスとポート番号との組合せが、不正通信相手リストに含まれるIPアドレスとポート番号との組合せのいずれとも一致しなかった場合、判定部20dは、注目するアプリケーションが不正なアプリケーションではないと判定する。なお、不正通信相手リストにIPアドレスは記録されているがポート番号は記録されていない場合、IPアドレスのみについて、上記と同様の判定が行われる。
【0068】
上記の判定において、不正通信相手リストに含まれる通信相手の種別に基づいて、不正なアプリケーションの種別を識別してもよい。例えば、ステップS220で抽出したシステムコールの実行内容が、広告サイトとの通信として不正通信相手リストに記録されている場合、注目するアプリケーションが、広告サイトへ誘導する通信を行うタイプのアプリケーションであると識別することができる。また、ステップS220で抽出したシステムコールの実行内容が、ボットネットの通信として不正通信相手リストに記録されている場合、注目するアプリケーションが、マルウェア感染を企むボットネットと通信を行うタイプのアプリケーションであると識別することができる。上記の判定結果に応じて、不正なアプリケーションの種別を示す種別情報を生成し、判定結果と共にファイル記憶部23に保存してもよい。
【0069】
次に、本実施形態の変形例を説明する。ログ解析装置2におけるログ解析の機能を携帯端末1が有していてもよい。図16は、ログ解析の機能を実装した携帯端末の機能構成を示している。図16に示す携帯端末1aは、図2に示した携帯端末1の構成に加えて、図3に示したログ解析装置2が有するログ解析部20を有している。アプリケーション10の起動後、ログ解析部20は、作業領域W1に保持されているアプリケーションログおよびカーネルログに基づいて、図10に示した処理を行う。なお、マニフェストファイルは、ファイル記憶部16に格納されているアプリケーションの実行ファイルから取得される。また、ファイル記憶部16には不正通信相手リストが格納されており、図10のステップS225では、この不正通信相手リストが用いられる。
【0070】
また、ログ解析装置2はログの収集機能とログの解析機能とを有しているが、ログの収集機能をログ解析装置2とは別の装置に持たせてもよい。例えば、携帯端末1からログを収集する機能を有する端末を用意し、ログ解析装置2はその端末からログを受信して解析を行う。
【0071】
上述した携帯端末1,1aおよびログ解析装置2の各機能は、各装置の動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより、実現される。ここで、「コンピュータ」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
【0072】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
【0073】
上述したように、本実施形態によれば、アプリケーションの挙動を記録したアプリケーションログおよびカーネルログに基づいて、注目するアプリケーションが不正であるか否かを判定することができる。特に、注目するアプリケーションの挙動に対応するプロセス以外のプロセスに関する多量の冗長な情報を解析対象から排除することが可能となるので、アプリケーションログおよびカーネルログの解析を効率的に行うことができ、注目するアプリケーションが不正であるか否かを判定する際の判定精度を向上することができる。
【0074】
また、カーネルログから、親プロセスIDと関連付けられた子プロセスIDを抽出し、ログの解析に用いることによって、アプリケーションの挙動をより詳細に解析することができ、注目するアプリケーションが不正であるか否かを判定する際の判定精度を向上することができる。
【0075】
また、カーネルログに記録されたシステムコールの実行内容が、既知の悪性ウェブサイトのIPアドレスを通信相手とする通信を示しているか否か、あるいは既知の悪性アプリケーションの挙動を解析して得られるIPアドレスを通信相手とする通信を示しているか否かを判定することによって、広告サイトへ誘導する通信を行うアプリケーションや、マルウェア感染を企むボットネットと通信を行うアプリケーション等の不正なアプリケーションを検出することができる。
【0076】
また、カーネルログに記録されたシステムコールの実行内容からIPアドレスとポート番号を抽出し、不正通信相手リストに含まれるIPアドレスとポート番号の組合せと一致するか否かを判定することによって、通信プロトコル毎に通信相手を区別して詳細に判定を行うことができる。
【0077】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【0078】
1,1a・・・携帯端末、2・・・ログ解析装置、3・・・ケーブル、10・・・アプリケーション、11・・・アプリケーションログ生成部、12・・・カーネルログ生成部、13・・・ログ生成制御部、14,21・・・操作情報制御部、15,22・・・OS、16,23・・・ファイル記憶部、17,24・・・操作部、18,25・・・表示部、19,26・・・通信部、20・・・ログ解析部、20a・・・プロセスID抽出部、20b・・・カーネルログ抽出部、20c・・・通信内容抽出部、20d・・・判定部、20e・・・制御部、W1,W2・・・作業領域

【特許請求の範囲】
【請求項1】
アプリケーションの識別情報と、前記アプリケーションの処理の際に生成されたプロセスの識別情報とが関連付けられた第1のログを記憶すると共に、前記プロセスの識別情報と、前記プロセスが呼び出したシステムコールの識別情報と、前記システムコールの実行内容とが関連付けられた第2のログを記憶するログ記憶部と、
前記第1のログから、特定のアプリケーションの識別情報と関連付けられた前記プロセスの識別情報を抽出する第1の抽出部と、
前記第2のログから、前記第1の抽出部が抽出した前記プロセスの識別情報を有する部分を抽出する第2の抽出部と、
前記第2の抽出部が抽出した部分から、通信に関係するシステムコールの識別情報と関連付けられた前記システムコールの実行内容を抽出する第3の抽出部と、
前記第3の抽出部が抽出した前記システムコールの実行内容が、特定のIPアドレスを通信相手とする通信を示しているか否かを判定する判定部と、
を備えたことを特徴とするアプリケーション判定システム。
【請求項2】
前記第2のログに含まれる前記システムコールの実行内容は、前記プロセスの識別情報に対応するプロセスが、他のプロセスを起動する所定のシステムコールによって起動した前記他のプロセスの識別情報を含み、
前記第1の抽出部はさらに、前記第2のログにおいて、前記第1のログから抽出した前記プロセスの識別情報と関連付けられた前記システムコールの実行内容に含まれる前記他のプロセスの識別情報を抽出する
ことを特徴とする請求項1に記載のアプリケーション判定システム。
【請求項3】
前記判定部は、前記第3の抽出部が抽出した前記システムコールの実行内容が、既知の悪性ウェブサイトのIPアドレスを通信相手とする通信を示しているか否かを判定することを特徴とする請求項1または請求項2に記載のアプリケーション判定システム。
【請求項4】
前記判定部は、前記第3の抽出部が抽出した前記システムコールの実行内容に含まれる通信相手のIPアドレスが、前記既知の悪性ウェブサイトのIPアドレスと一致するか否かを判定することを特徴とする請求項3に記載のアプリケーション判定システム。
【請求項5】
前記判定部は、前記第3の抽出部が抽出した前記システムコールの実行内容が、既知の悪性アプリケーションの挙動を解析して得られるIPアドレスを通信相手とする通信を示しているか否かを判定することを特徴とする請求項1または請求項2に記載のアプリケーション判定システム。
【請求項6】
前記判定部は、前記第3の抽出部が抽出した前記システムコールの実行内容に含まれる通信相手のIPアドレスが、前記既知の悪性アプリケーションの挙動を解析して得られるIPアドレスと一致するか否かを判定することを特徴とする請求項5に記載のアプリケーション判定システム。
【請求項7】
前記判定部は、前記第3の抽出部が抽出した前記システムコールの実行内容が、特定のIPアドレスおよびポート番号を通信相手とする通信を示しているか否かを判定することを特徴とする請求項1に記載のアプリケーション判定システム。
【請求項8】
アプリケーションの識別情報と、前記アプリケーションの処理の際に生成されたプロセスの識別情報とが関連付けられた第1のログを記憶すると共に、前記プロセスの識別情報と、前記プロセスが呼び出したシステムコールの識別情報と、前記システムコールの実行内容とが関連付けられた第2のログを記憶するログ記憶部と、
前記第1のログから、特定のアプリケーションの識別情報と関連付けられた前記プロセスの識別情報を抽出する第1の抽出部と、
前記第2のログから、前記第1の抽出部が抽出した前記プロセスの識別情報を有する部分を抽出する第2の抽出部と、
前記第2の抽出部が抽出した部分から、通信に関係するシステムコールの識別情報と関連付けられた前記システムコールの実行内容を抽出する第3の抽出部と、
前記第3の抽出部が抽出した前記システムコールの実行内容が、特定のIPアドレスを通信相手とする通信を示しているか否かを判定する判定部と、
としてコンピュータを機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate