<インストール制御装置>
以下、図面を参照し、本発明の実施形態を説明する。図1は、本発明の一実施形態によるインストール制御装置の構成を示している。このインストール制御装置は、例えば携帯端末に実装される。本実施形態によるインストール制御装置は、通信部40、インストール実行部41、インストール制御部42、操作部43、表示部44、および記憶部45を有する。
通信部40は、インターネット上のサーバ等の通信装置と通信を行う。インストール実行部41(インストーラ)は、アプリケーションのインストールを実行する。インストール制御部42は、インストール実行部41によるアプリケーションのインストールを制御する。操作部43は、ユーザが操作するキーボードやマウス等を有し、ユーザの操作結果に応じた信号を出力する。表示部44は、ユーザの操作結果等を表示する。
記憶部45は、インストール制御装置で使用される各種ファイルや情報を記憶する。記憶部45が記憶する主なファイルとして、アプリケーションファイル、署名ファイル、およびインストール設定ファイルがある。
アプリケーションファイルは、インストールの対象となるアプリケーションの実行ファイルを含む各種ファイルの圧縮ファイルである。
署名ファイルは、アプリケーションファイルのハッシュ値、公開鍵情報、安全性検証結果、および安全性付随情報を含むファイル本体と、そのファイル本体の全体のハッシュ値を秘密鍵で暗号化した署名情報とを含む。
アプリケーションファイルのハッシュ値は、アプリケーションファイルから、SHA-1等のハッシュ関数を用いて求めたハッシュ値である。
公開鍵情報は、署名ファイルの検証に用いる公開鍵の情報である。本実施形態では、記憶部45に予め公開鍵が格納されていることを想定しており、公開鍵情報は公開鍵IDである。公開鍵を外部から取得する場合には、公開鍵情報は、公開鍵を保持しているサーバのURLまたはIPアドレスと公開鍵IDとを含む。
安全性検証結果は、署名ファイルに対応するアプリケーションが不正であるか否かを検証した安全性検証の結果を示している。詳細は後述するが、アプリケーションの販売サイト等においてアプリケーション判定システムは、アプリケーションを実行したときの挙動を解析して安全性検証を行う。この安全性検証の結果が署名ファイルに付与されている。
安全性検証結果は、Black/Whiteのいずれかを示している。Blackは、アプリケーションが不正であることを示している。Whiteは、アプリケーションが不正でないことを示している。
安全性付随情報は、安全性検証結果に付随する情報である。安全性付随情報には、安全性検証結果がBlackであった場合に不正なアプリケーションの種別(マルウェア、トロイの木馬等)を示す情報と、安全性検証を行った際に注目したアプリケーションの挙動(ファイル操作、通信等)を示す情報と、その挙動別の詳細な判定結果を示す情報とが含まれる。
インストール設定ファイルは、インストール制御部42の処理内容を規定するファイルである。インストール設定ファイルには、インストール制御部42の処理内容として選択することが可能な複数の選択項目が含まれる。図2は、インストール設定ファイルに含まれる選択項目の一例を示している。
署名ファイルの取得に関しては、署名ファイルを取得できなかった場合の処理内容が規定されている。この場合、以下の2種類の処理内容のいずれかを選択することが可能である。
A.エラー処理を行ってインストールを中止する。
B.警告を表示して処理を進める。
署名ファイルの検証に関しては、署名ファイルの検証が成功しなかった場合の処理内容が規定されている。この場合、以下の2種類の処理内容のいずれかを選択することが可能である。
C.エラー処理を行ってインストールを中止する。
D.警告を表示して処理を進める。
安全性検証結果の参照に関しては、White、Blackのそれぞれの安全性検証結果に対する処理内容が規定されている。この場合、以下の2種類の処理内容のいずれかを選択することが可能である。
E.White、Blackの全てについてユーザにインストールの可否を確認する。
F.Whiteについてユーザにインストールの可否を確認することなくインストールを実行する。
ユーザは、安全性と利便性を考慮して、操作部43を操作して上記の処理内容を指定しておくことで、インストール制御部42の処理内容を指定しておくことができる。インストール制御部42は、ユーザが指定した内容に従って、インストール設定ファイルから処理内容の情報を読み出し、その情報に従ってインストールの制御を行う。
次に、本実施形態によるインストール制御装置の動作を説明する。図3は、インストール制御装置の動作の手順を示している。操作部43が操作され、ユーザによってアプリケーションのインストール指示が入力されると、操作部43はインストール指示を示す信号をインストール制御部42へ出力する。インストール制御部42は、通信部40を介してインターネット上の販売サイトと通信を行い、アプリケーションファイルを受信する(ステップS10)。受信されたアプリケーションファイルは記憶部45に格納される。
続いて、インストール制御部42は、通信部40を介してインターネット上の署名ファイル管理サイトと通信を行い、アプリケーションファイルに対応する署名ファイルを受信する(ステップS15)。このとき、インストール制御部42は、アプリケーションファイルを識別するパッケージ名称を示す情報を署名ファイル管理サイトへ送信し、署名ファイル管理サイトのサーバは、このパッケージ名称に基づいて、アプリケーションファイルに対応する署名ファイルを検索して取得し、署名ファイルをインストール制御装置へ送信する。署名ファイル管理サイトはアプリケーションの販売サイトと同一であってもよい。
続いて、インストール制御部42は、記憶部45から署名ファイルを読み出し、署名ファイルに含まれる公開鍵情報が示す公開鍵IDを有する公開鍵を記憶部45から読み出す(ステップS20)。公開鍵を外部から取得する場合には、インストール制御部42は、通信部40を介して、公開鍵情報が示すサーバと通信を行い、公開鍵を含む情報を受信する。続いて、インストール制御部42は、公開鍵を用いて、署名ファイルに含まれる署名情報を復号化し、ハッシュ値を取得する(ステップS25)。
続いて、インストール制御部42は、署名ファイルの本体ファイル(アプリケーションファイルのハッシュ値、公開鍵情報、安全性検証結果、および安全性付随情報を含む)のハッシュ値を算出し、算出したハッシュ値と、ステップS25で取得したハッシュ値とを比較することによって、署名ファイルの完全性(署名ファイルが改竄されていないこと)の検証を行う(ステップS30)。署名ファイルの本体ファイルから算出したハッシュ値と、ステップS25で取得したハッシュ値とが一致した場合、検証は成功となる。また、署名ファイルの本体ファイルから算出したハッシュ値と、ステップS25で取得したハッシュ値とが一致しなかった場合、検証は失敗となる。
署名ファイルの検証が成功した場合、インストール制御部42は記憶部45からアプリケーションファイルを読み出してハッシュ値を算出し、算出したハッシュ値と、署名ファイルに含まれるアプリケーションファイルのハッシュ値とを比較することによって、アプリケーションファイルの完全性(アプリケーションファイルが改竄されていないこと)の検証を行う(ステップS35)。アプリケーションファイルから算出したハッシュ値と、署名ファイルに含まれるアプリケーションファイルのハッシュ値とが一致した場合、検証は成功となる。また、アプリケーションファイルから算出したハッシュ値と、署名ファイルに含まれるアプリケーションファイルのハッシュ値とが一致しなかった場合、検証は失敗となる。
アプリケーションファイルのハッシュ値の検証が成功した場合、インストール制御部42は、署名ファイルに含まれる安全性検証結果を参照し、アプリケーションの安全性の判定を行う(ステップS40)。安全性検証結果がWhiteであった場合、インストール制御部42はインストール実行部41にアプリケーションのインストールを指示する。指示を受けたインストール実行部41は、記憶部45からアプリケーションファイルを読み出して圧縮ファイルを伸張し、アプリケーションの実行ファイルを記憶部45に格納すると共に、アプリケーションを実行するための各種設定を行う(ステップS45)。
安全性検証結果がBlackであった場合、インストール制御部42は、インストールを行うかどうかをユーザに確認させるための確認画面を表示部44に表示させる(ステップS50)。このとき、表示部44は、署名ファイルの完全性の検証結果と、アプリケーションファイルの完全性の検証結果と、アプリケーションの安全性検証結果とを表示すると共に、アプリケーションをインストールすることによるリスクを説明するメッセージとを表示する。
続いて、インストール制御部42は、ユーザが操作部43を操作した結果に基づいて、アプリケーションのインストールの可否を判定する(ステップS55)。ユーザが操作部43を介して、アプリケーションのインストールを許可する指示を入力した場合、インストール制御部42は、インストールが許可されたと判定する。また、ユーザが操作部43を介して、アプリケーションのインストールを拒否する指示を入力した場合、インストール制御部42は、インストールが拒否されたと判定する。インストールが許可されたと判定した場合、処理はステップS45に進み、アプリケーションのインストールが実行される。
ステップS30で署名ファイルの検証が失敗した場合、ステップS35でアプリケーションのハッシュ値の検証が失敗した場合、またはステップS55でインストールが拒否されたと判定した場合、インストール制御部42はエラーメッセージを表示部44に表示させる(ステップS60)。
図3に示した処理内容は、前述したインストール設定ファイルに規定されたA〜Eの処理内容のうち、A,C,Fが選択された場合の処理内容を示している。前述したように、ユーザは、インストール制御部42の処理内容を予め指定しておくことができる。例えば、処理内容Fを処理内容Eに変更した場合、図3に示す処理の手順は図4のように変更される。
図4に示す処理では、図3に示す処理に対して、ステップS65,S70が追加されている。ステップS40で安全性検証結果がWhiteであった場合、インストール制御部42は、インストールを行うかどうかをユーザに確認させるための確認画面を表示部44に表示させる(ステップS65)。このとき、表示部44は、署名ファイルの完全性の検証結果と、アプリケーションファイルの完全性の検証結果と、アプリケーションの安全性検証結果とを表示すると共に、アプリケーションをインストールすることによるリスクを説明するメッセージとを表示する。
続いて、インストール制御部42は、ユーザが操作部43を操作した結果に基づいて、アプリケーションのインストールの可否を判定する(ステップS70)。ユーザが操作部43を介して、アプリケーションのインストールを許可する指示を入力した場合、インストール制御部42は、インストールが許可されたと判定する。また、ユーザが操作部43を介して、アプリケーションのインストールを拒否する指示を入力した場合、インストール制御部42は、インストールが拒否されたと判定する。インストールが許可されたと判定した場合、処理はステップS45に進み、アプリケーションのインストールが実行される。また、インストールが拒否されたと判定した場合、処理はステップS60に進む。
図3、図4に示したように、インストール設定ファイルに規定された処理内容の選択に応じて、インストール制御部42の処理内容が変化する。
本実施形態では、アプリケーションの安全性検証結果はBlackとWhiteの2種類であったが、Grayを加えた3種類としてもよい。Grayは、アプリケーションが不正であるとは言えないが、不正である可能性があることを示している。
上述したように、本実施形態によれば、アプリケーションの完全性の検証結果と共に、従来のアプリケーションの配信元からは得られない安全性の検証結果を得ることができ、アプリケーションの完全性および安全性の検証結果に基づくインストール制御を行うことができる。
また、従来の署名情報は、ファイルが改竄されていないことと、ファイルの配信元が信頼できる機関であることとを確認する手段として用いることを目的としていた。そのため、署名検証に成功しないファイルの受領やアプリケーションのインストールを防止することはできたものの、アプリケーションに付随する情報に基づいて、利用者がリスクを承諾したうえでインストールを行うなどのきめの細かい制御を行うことが不可能であった。
これに対して、本実施形態では、ユーザがアプリケーションの完全性および安全性の検証結果を参照して、リスクを承諾した上でインストールの実行を許可するなどの制御が可能となる。また、ユーザは、インストール設定ファイルに規定されたインストール制御部42の処理内容を選択することが可能となる。このため、安全性や利便性に対するユーザの意思を反映した、きめの細かいインストール制御を行うことができる。
<アプリケーション判定システム>
次に、アプリケーションの安全性検証を行うアプリケーション判定システムについて説明する。
アプリケーションが処理を実行する際には、端末が有する機能の利用や設定の変更に係る権限が設定され、アプリケーションはその権限の範囲内で処理を実行することが可能である。例えば、一般ユーザ権限が設定された場合、一般ユーザ権限の範囲内で各種処理の実行が可能となる。また、最高権限(管理者権限)であるroot権限(スーパーユーザ権限)が設定された場合、一般ユーザ権限の範囲内で可能な処理に加えて、端末内の重要な設定の変更等が可能となる。
通常、アプリケーションは一般ユーザ権限で動作するように設定されており、一般ユーザ権限が設定されたアプリケーションがアクセスできるディレクトリは限定されている。しかし、不正なアプリケーションはOSの脆弱性を突いてroot権限を不正に取得し、ディレクトリに設定されているアクセス権限(パーミッション)を変更して携帯端末内のディレクトリに自由にアクセスできるようになる。これによって、携帯端末に障害を発生させたり、個人情報を漏洩させたりするなどの不正な行為が行われる。本アプリケーション判定システムは、アプリケーションがディレクトリやファイルにアクセスする挙動を解析することで、注目するアプリケーションが不正なアプリケーションであるか否かを判定する。
図5は、本実施形態によるアプリケーション判定システムの構成を示している。本実施形態によるアプリケーション判定システムは、携帯電話端末、携帯情報端末、スマートフォン等の携帯端末1と、PC等のログ解析装置2とを有する。携帯端末1とログ解析装置2は、RS232C等のケーブル3で接続されており、ログ解析装置2から携帯端末1を操作することができる。本実施形態によるアプリケーション判定システムは、例えば携帯端末用のアプリケーションを通信ネットワーク上で販売する販売サイトを管理する企業に設置される。
図6は携帯端末1の機能構成を示している。携帯端末1は、アプリケーション10、アプリケーションログ生成部11、カーネルログ生成部12、ログ生成制御部13、操作情報制御部14、OS15、ファイル記憶部16、操作部17、表示部18、通信部19、および作業領域W1(ログ記憶部)を有する。
アプリケーション10、アプリケーションログ生成部11、カーネルログ生成部12、ログ生成制御部13、操作情報制御部14、およびOS15は、SRAM等のデバイスで構成される作業領域W1上で動作する。これらの実行ファイル(プログラム)はファイル記憶部16に格納されており、これらの実行ファイルがファイル記憶部16から作業領域W1に読み込まれることで、これらが起動する。なお、作業領域W1では、アプリケーション10等のプロセスのほか、図示していない各種プロセスも起動する。これらのプロセスがOS15にシステムコールの呼び出しを通知し、OS15がシステムコールを呼び出すことによって、各プロセスは、図示していないCPUの資源を利用して各種処理を行う。
アプリケーション10は、OS15に対するシステムコールの呼び出しやOS15からの実行結果の受け取り等を行う。これによって、アプリケーション10は、アプリケーションの処理として規定された各種処理の実行やファイル記憶部16へのアクセス等を行う。
アプリケーションログ生成部11は、アプリケーション10の実行条件や状態に関する情報を記録したアプリケーションログ(第1のログ)を生成する。生成されたアプリケーションログは作業領域W1に保持される。
図8はアプリケーションログの一例を示している。アプリケーションログは、タイムスタンプ400、プロセスID410、プロセスID420、メッセージ種別430、メッセージタグおよびメッセージ本体440からなる。タイムスタンプ400は日付および時刻を含む。1つのタイムスタンプ400、親プロセスID410、プロセスID420、メッセージ種別430、メッセージタグおよびメッセージ本体440の組を記録単位としてアプリケーションの挙動がアプリケーションログに記録される。図8に示す例では、5つの記録単位分のアプリケーションログの内容が示されている。
プロセスは、プロセス起動のシステムコールを呼び出すことによって、他のプロセスを起動することができる。以下では、起動元のプロセスを親プロセスと呼び、親プロセスによって起動されたプロセスを子プロセスと呼ぶ。プロセスID410およびプロセスID420が異なる場合、プロセスID410は親プロセスのプロセスIDを示し、プロセスID420は子プロセスのプロセスIDを示す。プロセスID410およびプロセスID420が同一の場合、それらのプロセスIDを有する記録単位は同一のプロセスの挙動を示している。
カーネルログ生成部12は、アプリケーション10の処理に関連するプロセスが呼び出したシステムコールの情報を記録したカーネルログ(第2のログ)を生成する。生成されたカーネルログは作業領域W1に保持される。
図9はカーネルログの一例を示している。カーネルログは、プロセスID500、メッセージ本体510からなる。1つのプロセスID500とメッセージ本体510の組を記録単位としてシステムコールの情報がカーネルログに記録される。図9に示す例では、5つの記録単位分のカーネルログの内容が示されている。なお、アプリケーションログとカーネルログとでは、プロセスIDの管理体系が異なる。このため、同一のプロセスについて、アプリケーションログに記録されるプロセスIDとカーネルログに記録されるプロセスIDは異なる。
ログ生成制御部13は、アプリケーションログ生成部11およびカーネルログ生成部12を起動する処理を行う。また、ログ生成制御部13は、アプリケーションログおよびカーネルログをログ解析装置2へ送信する処理を行う。
操作情報制御部14は、操作者がログ解析装置2を操作して入力する操作情報に関する制御を行う。具体的には、操作情報制御部14はログ解析装置2と通信を行い、ログ解析装置2に入力された操作内容を示す操作情報を受信し、操作情報の内容を解釈してOS15に通知する。通知を受けたOS15は各種処理を実行する。また、操作情報制御部14は、OS15から処理の実行結果の通知を受け、実行結果を示す実行結果情報をログ解析装置2へ送信する。以下の動作の説明では、実行結果情報に関する処理の説明を省略する。
OS15は、アプリケーション10、アプリケーションログ生成部11、カーネルログ生成部12、ログ生成制御部13、および操作情報制御部14の処理のスケジューリングや作業領域W1の割り当て等を制御すると共に、ファイル記憶部16、操作部17、表示部18、および通信部19の各デバイスの入出力を制御する。
ファイル記憶部16は、フラッシュメモリ等のデバイスで構成され、携帯端末1内で使用する実行ファイル等の各種ファイルを記憶する。操作部17は、キー(ボタン)やスイッチ等のデバイスで構成され、操作者が操作した結果に基づく信号を出力する。表示部18は、液晶表示装置等のデバイスで構成され、携帯端末1で実行された処理の結果や携帯端末1の状態等を表示する。通信部19は、通信モジュール等のデバイスで構成され、ログ解析装置2と通信を行う。
図7はログ解析装置2の機能構成を示している。ログ解析装置2は、ログ解析部20、操作情報制御部21、OS22、ファイル記憶部23、操作部24、表示部25、および通信部26を有する。
ログ解析部20、操作情報制御部21、およびOS22は、SRAM等のデバイスで構成される作業領域W2上で動作する。これらの実行ファイル(プログラム)はファイル記憶部23に格納されており、これらの実行ファイルがファイル記憶部23から作業領域W2に読み込まれることで、これらが起動する。なお、作業領域W2では、ログ解析部20等のプロセスのほか、図示していない各種プロセスも起動する。これらのプロセスがOS22にシステムコールの呼び出しを通知し、OS22がシステムコールを呼び出すことによって、各プロセスは、図示していないCPUの資源を利用して各種処理を行う。
ログ解析部20は、携帯端末1から受信したアプリケーションログおよびカーネルログを解析し、注目するアプリケーションが不正なアプリケーションであるか否かを判定する。
操作情報制御部21は、操作者が操作部24を操作して入力する操作内容に基づく操作情報に関する制御を行う。具体的には、操作情報制御部21は携帯端末1と通信を行い、操作部24に入力された操作内容を示す操作情報を送信し、また、実行結果を示す実行結果情報を受信する。OS22は、ログ解析部20および操作情報制御部21の処理のスケジューリングや作業領域W2の割り当て等を制御すると共に、ファイル記憶部23、操作部24、表示部25、および通信部26の各デバイスの入出力を制御する。
ファイル記憶部23は、ハードディスクドライブ等のデバイスで構成され、ログ解析装置2内で使用する実行ファイル等の各種ファイルを記憶する。操作部24は、キーボードやマウス等のデバイスで構成され、操作者が操作した結果に基づく信号を出力する。表示部25は、液晶表示装置等のデバイスで構成され、実行結果情報に基づく実行結果やログ解析部20の処理結果等を表示する。通信部26は、通信モジュール等のデバイスで構成され、携帯端末1と通信を行う。
図10はログ解析部20の機能構成を示している。ログ解析部20は、プロセスID抽出部20a(第1の抽出部)、カーネルログ抽出部20b(第2の抽出部)、ファイル操作内容抽出部20c(第3の抽出部)、判定部20d、および制御部20eを有する。
プロセスID抽出部20aは、注目するアプリケーション10の処理に関するプロセスのプロセスIDをアプリケーションログから抽出する。図11は、プロセスの親子関係の一例を示している。図11では、システム上で最初に起動するinitプロセスが子プロセスを起動し、その子プロセスが親プロセスとして自身の子プロセスを起動する様子が示されている。
一例として、注目するアプリケーション10のプロセス群700のプロセスsshd(プロセスID:2005)はinitプロセスによって起動され、プロセスsshd(プロセスID:1921)およびプロセスsshd(プロセスID:8167)を起動している。プロセスsshd(プロセスID:1921)およびプロセスsshd(プロセスID:8167)もそれぞれ子プロセスを起動している。プロセスID抽出部20aは、注目するアプリケーション10について、親子関係にある各プロセスのプロセスIDを抽出する。すなわち、図11に示す例の場合、プロセスIDとして2005、1921、1931、2333、2345、8167、8323、10940が抽出される。
カーネルログ抽出部20bは、プロセスID抽出部20aが抽出したプロセスIDを有する部分、すなわち注目するアプリケーションの処理に関係する部分をカーネルログから抽出する。ファイル操作内容抽出部20cは、カーネルログ抽出部20bが抽出した部分から、ファイル操作に関係するシステムコールの実行内容を抽出する。判定部20dは、ファイル操作内容抽出部20cが抽出したシステムコールの実行内容が、ファイル記憶部16中の特定のディレクトリに対する操作を示しているか否かを判定することによって、注目するアプリケーション10が不正なアプリケーションであるか否かを判定する。制御部20eは、プロセスID抽出部20a、カーネルログ抽出部20b、ファイル操作内容抽出部20c、および判定部20dに対する処理の振り分けの制御を行う。
次に、本実施形態によるアプリケーション判定システムの動作を説明する。図12は、アプリケーション判定システムの動作の手順を示している。図12に示す動作の開始前、注目するアプリケーションは携帯端末1にインストールされてなく、携帯端末1では操作情報制御部14は起動しているが、アプリケーションログ生成部11、カーネルログ生成部12、およびログ生成制御部13は起動していないものとする。また、図12に示す動作の開始前、ログ解析装置2では、操作情報制御部21は起動しているがログ解析部20は起動していないものとする。
まず、ログ解析装置2において、操作者は操作部24を操作し、アプリケーションログ生成部11およびカーネルログ生成部12を起動する指示を入力する。操作部24が操作されると、OS22は操作部24の操作内容を操作情報制御部21に通知する。操作情報制御部21は、通知された操作内容に基づいて、アプリケーションログ生成部11およびカーネルログ生成部12を起動するための操作情報であるログ生成部起動指示を生成する。このログ生成部起動指示は通信部26から携帯端末1へ送信される(ステップS100)。
携帯端末1において、通信部19はログ生成部起動指示を受信する(ステップS105)。OS15は、ログ生成部起動指示を操作情報制御部14に通知し、操作情報制御部14は、ログ生成部起動指示に基づいて、ログ生成制御部13を起動するためのシステムコールの呼び出しをOS15に通知する。OS15はログ生成制御部13を起動し、起動したログ生成制御部13はアプリケーションログ生成部11およびカーネルログ生成部12を起動する(ステップS110)。起動したアプリケーションログ生成部11およびカーネルログ生成部12はログの生成を開始する。
続いて、ログ解析装置2において、操作者は操作部24を操作し、判定対象のアプリケーションをインストールする指示を入力する。操作部24が操作されると、OS22は操作部24の操作内容を操作情報制御部21に通知する。操作情報制御部21は、通知された操作内容に基づいて、判定対象のアプリケーションの圧縮ファイルをファイル記憶部23から読み出す。この圧縮ファイルは通信部26から携帯端末1へ送信される(ステップS115)。
携帯端末1において、通信部19はアプリケーションの圧縮ファイルを受信する(ステップS120)。続いて、アプリケーションのインストールが実行され、伸張されたアプリケーションの実行ファイルがファイル記憶部16に格納される(ステップS125)。
図13はアプリケーションの実行ファイルの構成を示している。図13に示すように実行ファイル900は、命令列を含む実行コード901、アプリケーションのパッケージ名称やアプリケーションが利用するコンポーネント等の情報を含むマニフェストファイル902、実行コード901の実行時に参照されるライブラリ903、およびパラメータ904等のファイルで構成されている。
アプリケーションのインストール後、操作者は操作部17を操作し、アプリケーションを起動する指示を入力する。操作部17が操作されると、OS15はアプリケーション10を起動する(ステップS130)。アプリケーション10の挙動は、アプリケーションログ生成部11によってアプリケーションログとして記録されると共に、カーネルログ生成部12によってカーネルログとして記録される。
続いて、ログ解析装置2において、操作者は操作部24を操作し、ログを送信する指示を入力する。操作部24が操作されると、OS22は操作部24の操作内容を操作情報制御部21に通知する。操作情報制御部21は、通知された操作内容に基づいて、ログを送信するための操作情報であるログ送信指示を生成する。このログ送信指示は通信部26から携帯端末1へ送信される(ステップS135)。
携帯端末1において、通信部19はログ送信指示を受信する(ステップS140)。OS15は、ログ送信指示を操作情報制御部14に通知し、操作情報制御部14は、ログ送信指示に基づいて、OS15を介してログ生成制御部13にログの送信を指示する。ログ生成制御部13は、アプリケーションログおよびカーネルログを送信する処理を行う。アプリケーションログおよびカーネルログは通信部19からログ解析装置2へ送信される(ステップS145)。
ログ解析装置2において、通信部19はアプリケーションログおよびカーネルログを受信する(ステップS150)。受信されたアプリケーションログおよびカーネルログは作業領域W2に保持される。続いて、操作者は操作部24を操作し、ログを解析する指示を入力する。操作部24が操作されると、OS22はログ解析部20を起動する(ステップS155)。ログ解析部20は、アプリケーションログおよびカーネルログを解析する(ステップS160)。
図14は、ステップS160におけるログ解析部20の動作の詳細を示している。前述したように、ファイル記憶部23にはアプリケーションの圧縮ファイルが格納されている。プロセスID抽出部20aは、ファイル記憶部23からアプリケーションの圧縮ファイルを読み出して伸張し、図13に示したマニフェストファイル902から、アプリケーションを識別するパッケージ名称を取得する(ステップS200)。
図15はマニフェストファイルの一例を示している。「package=」に続く文字列1100がパッケージ名称を示している。プロセスID抽出部20aは、マニフェストファイルから「package=」という文字列を検索し、その文字列に続く「"」で挟まれた文字列をパッケージ名称として取得する。なお、携帯端末1からアプリケーションログおよびカーネルログと共にマニフェストファイルをログ解析装置2へ送信し、ログ解析装置2においてログの解析に使用するようにしてもよい。
続いて、プロセスID抽出部20aは、アプリケーションログから、パッケージ名称と一致する文字列を有する部分を抽出し、抽出した部分からプロセスIDを抽出する(ステップS205)。図16はアプリケーションログの一例を示している。プロセスの起動を示す「Start Proc」に続く文字列1200がパッケージ名称を示している。さらに、「pid=」に続く数字1210が、アプリケーション10が起動したプロセスのプロセスIDを示している。プロセスID抽出部20aは、アプリケーションログから「Start Proc」という文字列を検索し、その文字列に続く空白で挟まれた文字列が、ステップS200で取得したパッケージ名称と一致する場合に、そのパッケージ名称に続く部分から「pid=」という文字列を検索し、その文字列に続く数字をプロセスIDとして取得する。このプロセスIDは、カーネルログの管理体系におけるプロセスIDと一致する。
続いて、プロセスID抽出部20aは、ステップS205で抽出したプロセスIDを親プロセスのプロセスID(以下、親プロセスIDとする)とし、カーネルログから子プロセスのプロセスID(以下、子プロセスIDとする)を抽出する(ステップS210)。カーネルログにおいて、プロセスの生成に関するシステムコールが記録された部分には、親プロセスと子プロセスも記録されている。本実施形態では、プロセスの生成に関するシステムコールとして、forkに注目する。
図17はカーネルログの一例を示している。1つの記録単位1300のメッセージ本体に、プロセスの生成に関するシステムコールを示す「fork」が記録されている。また、メッセージ本体の前のプロセスID「1391」が親プロセスIDを示し、メッセージ本体の最後尾のプロセスID「1392」が子プロセスIDを示す。プロセスID抽出部20aは、カーネルログから、「fork」の文字列を検索し、それらのいずれかの文字列を含むメッセージ本体の直前の親プロセスIDが、ステップS205で抽出したプロセスIDと一致する場合に、メッセージ本体の最後尾のプロセスIDを子プロセスIDとして抽出する。プロセスID抽出部20aは、抽出した子プロセスIDを親プロセスIDとして、上記のようにして子プロセスIDを抽出する処理を繰り返す。
続いて、カーネルログ抽出部20bは、ステップS205,S210で抽出したプロセスIDと一致するプロセスIDが行の先頭に記録されている部分(記録単位)をカーネルログから抽出する(ステップS215)。ステップS205,S210で抽出したプロセスIDは、注目するアプリケーション10に関連するプロセスのプロセスIDであるため、ステップS215で抽出した部分は、アプリケーション10の挙動を示している。
続いて、ファイル操作内容抽出部20cは、ステップS215で抽出した部分から、ファイル操作に関するシステムコールの実行内容を抽出する(ステップS220)。本実施形態では、ファイル操作に関するシステムコールとして、read、write、およびopenに注目する。
図18は、openが記録されたカーネルログの一例を示している。1記録単位分に相当する部分1400には、システムコールを呼び出したプロセスのプロセスID(695)と、システムコールを識別するシステムコール名称(open)と、システムコールの実行内容とが記録されている。システムコールの実行内容には、システムコールによってアクセスされたディレクトリの名称(/data/data/xxx/yyy/zzz)が含まれる。ファイル操作内容抽出部20cは、ステップS205,S210で抽出したプロセスIDと一致するプロセスIDを行の先頭に有し、「read」、「write」、および「open」のいずれかと一致する文字列をメッセージ本体に有する記録単位があった場合に、その記録単位のメッセージ本体(記録単位全体でもよい)をシステムコールの実行内容として抽出する。
続いて、判定部20dは、ステップS220で抽出したシステムコールの実行内容に基づいて、注目するアプリケーション10が不正なアプリケーションであるか否かを判定する(ステップS225)。この判定には、不正なアプリケーションが行うファイル操作に基づいて予め定義した不正ファイル操作ルールが用いられる。不正ファイル操作ルールはファイル記憶部23に格納されている。
携帯端末向けのオープンプラットフォームでは、アプリケーションがアクセスできるディレクトリは、そのアプリケーション専用に割り当てられた特定の領域に制限されている。図19は、ファイル記憶部16のディレクトリ構成を示している。ファイル記憶部16には階層構造を有するディレクトリが作成されている。ディレクトリD1には、インストールされたアプリケーションの実行ファイルが格納される。また、ディレクトリD2は、各アプリケーションが用いるデータを保管するディレクトリであり、ディレクトリD2の下に、各アプリケーションの名称と同じ名称を有するディレクトリD3a〜D3cが並んでいる。
アプリケーションは、通常、そのアプリケーションに対応するディレクトリおよびそのディレクトリ下にあるディレクトリにしかアクセスすることができない。したがって、自身に専用に割り当てられたディレクトリとは異なる、他のアプリケーションに専用に割り当てられたディレクトリにアクセスするアプリケーションは不正なアプリケーションである。
また、図19において、領域ROMは、OS等の重要なファイルが格納されている領域であり、一般ユーザ権限が設定されたアプリケーションがアクセスできないよう、領域ROMにはアクセス権限(パーミッション)が設定されている。このアクセス権限の変更は、root権限を有する場合のみ可能である。root権限を不正に取得した悪意のアプリケーションは、領域ROMのアクセス権限を変更し、領域ROMの重要なファイルにアクセスする。したがって、root権限を不正に取得して領域ROMにアクセスするアプリケーションは不正なアプリケーションである。
不正ファイル操作ルールには、各アプリケーションがアクセスしてはならない上記のようなディレクトリの名称が含まれる。すなわち、不正ファイル操作ルールには、ディレクトリD2下のディレクトリであって、注目するアプリケーション以外のアプリケーション専用のディレクトリの名称と、図19の領域ROMに含まれるディレクトリの名称とが含まれる。
判定部20dは、ステップS220で抽出したシステムコールの実行内容の文字列と、不正ファイル操作ルールに含まれる文字列とを比較し、ステップS220で抽出したシステムコールの実行内容の文字列の中に、不正ファイル操作ルールに含まれる文字列と一致する文字列があった場合、注目するアプリケーションが不正なアプリケーションであると判定する。また、ステップS220で抽出したシステムコールの実行内容の文字列の中に、不正ファイル操作ルールに含まれる文字列と一致する文字列がなかった場合、判定部20dは、注目するアプリケーションが不正なアプリケーションではないと判定する。
上記の判定において、不正ファイル操作ルールの内容に基づいて、不正なアプリケーションの種別を識別してもよい。例えば、ステップS220で抽出したシステムコールの実行内容の文字列の中に、注目するアプリケーション以外のアプリケーション専用のディレクトリの名称と一致する文字列があった場合、注目するアプリケーションが、他のアプリケーションによって管理される個人情報等にアクセスする情報漏洩タイプのアプリケーションであると識別することができる。また、ステップS220で抽出したシステムコールの実行内容の文字列の中に、図19の領域ROMに含まれるディレクトリの名称と一致する文字列があった場合、注目するアプリケーションが、root権限を不正に取得するタイプのアプリケーションであると識別することができる。上記の判定結果に応じて、不正なアプリケーションの種別を示す種別情報を生成し、判定結果と共にファイル記憶部23に保存してもよい。
次に、本アプリケーション判定システムの変形例を説明する。ログ解析装置2におけるログ解析の機能を携帯端末1が有していてもよい。図20は、ログ解析の機能を実装した携帯端末の機能構成を示している。図20に示す携帯端末1aは、図6に示した携帯端末1の構成に加えて、図7に示したログ解析装置2が有するログ解析部20を有している。アプリケーション10の起動後、ログ解析部20は、作業領域W1に保持されているアプリケーションログおよびカーネルログに基づいて、図14に示した処理を行う。なお、マニフェストファイルは、ファイル記憶部16に格納されているアプリケーションの実行ファイルから取得される。また、ファイル記憶部16には不正ファイル操作ルールが格納されており、図14のステップS225では、この不正ファイル操作ルールが用いられる。
また、ログ解析装置2はログの収集機能とログの解析機能とを有しているが、ログの収集機能をログ解析装置2とは別の装置に持たせてもよい。例えば、携帯端末1からログを収集する機能を有する端末を用意し、ログ解析装置2はその端末からログを受信して解析を行う。
また、上記ではファイル操作に関係するアプリケーションの挙動に注目しているが、通信に関係するアプリケーションの挙動に注目する方法もある。不正なアプリケーションはOSの脆弱性を突いてroot権限を不正に取得し、iptablesによる制限を解除して不正なウェブサイトにアクセスできるようになる。以下では、アプリケーションが通信を行う挙動を解析することで、注目するアプリケーションが不正なアプリケーションであるか否かを判定する方法を説明する。
図21はログ解析部20の機能構成を示している。図10に示した機能構成と比較すると、ファイル操作内容抽出部20cに代えて通信内容抽出部20fを備え、判定部20dの機能が変更されている。通信内容抽出部20fは、カーネルログ抽出部20bが抽出した部分から、通信(ソケット通信)に関係するシステムコールの実行内容を抽出する。判定部20dは、通信内容抽出部20fが抽出したシステムコールの実行内容が、特定のIPアドレス(または特定のIPアドレスおよびポート番号)を通信相手とする通信を示しているか否かを判定することによって、注目するアプリケーション10が不正なアプリケーションであるか否かを判定する。
図22は、図12のステップS160におけるログ解析部20の動作の詳細を示している。図14に示した動作と比較して、ステップS220a,S225aが異なる。ステップS215に続いて、通信内容抽出部20fは、ステップS215で抽出した部分から、通信(ソケット通信)に関するシステムコールの実行内容を抽出する(ステップS220a)。本実施形態では、通信に関するシステムコールとして、recv、connect、およびsendに注目する。
図23は、connectが記録されたカーネルログの一例を示している。1記録単位分に相当する部分1400aには、システムコールを呼び出したプロセスのプロセスID(5205)と、システムコールを識別するシステムコール名称(connect)と、システムコールの実行内容とが記録されている。システムコールの実行内容には、システムコールによって実行された通信の相手のIPアドレス(aaa.bbb.ccc.ddd)とポート番号(xx)が含まれる。通信内容抽出部20fは、ステップS205,S210で抽出したプロセスIDと一致するプロセスIDを行の先頭に有し、「recv」、「connect」、および「send」のいずれかと一致する文字列をメッセージ本体に有する記録単位があった場合に、その記録単位のメッセージ本体(記録単位全体でもよい)をシステムコールの実行内容として抽出する。
続いて、判定部20dは、ステップS220aで抽出したシステムコールの実行内容に基づいて、注目するアプリケーション10が不正なアプリケーションであるか否かを判定する(ステップS225a)。この判定には、不正なアプリケーションが行う通信に基づいて予め定義した不正通信相手リストが用いられる。不正通信相手リストはファイル記憶部23に格納されている。
インターネット上では、フィッシングサイトやウイルス感染サイト等、悪性のウェブサイトの情報をブラックリストとして公表しているウェブサイトがある。このウェブサイトから、不正な通信相手のIPアドレス等を取得することが可能である。また、既知の不正なアプリケーションが通信を行ったときの挙動を解析することによって、そのアプリケーションが通信を行った際の通信相手のIPアドレス等を取得することが可能である。上記のようにして取得したIPアドレス等が不正通信相手リストに記録されている。
図24は不正通信相手リストの一例を示している。不正通信相手リストには、IPアドレス、ポート番号、FQDN(Fully Qualified Domain Name)、および種別が含まれる。IPアドレス、ポート番号、およびFQDNは、不正なアプリケーションが行う通信の相手(宛先)の情報である。2つのIPアドレスが「〜」で結ばれている場合は、2つのIPアドレスを起点および終点とするIPアドレスの範囲を示している。種別は、通信の種別を示している。
判定部20dは、ステップS220で抽出したシステムコールの実行内容から「sin_addr=inet_addr」という文字列を検索し、その文字列に続く部分から、「"」で挟まれた数字列を通信相手のIPアドレスとして取得する。また、判定部20dは、ステップS220で抽出したシステムコールの実行内容から「sin_port=htons」という文字列を検索し、その文字列に続く「(」と「)」で挟まれた数字をポート番号として取得する。
さらに、判定部20dは、システムコールの実行内容から取得したIPアドレスとポート番号との組合せを、不正通信相手リストに含まれるIPアドレスとポート番号との組合せと比較する。システムコールの実行内容から取得したIPアドレスとポート番号との組合せが、不正通信相手リストに含まれるIPアドレスとポート番号との組合せのいずれかと一致した場合、判定部20dは、注目するアプリケーションが不正なアプリケーションであると判定する。また、システムコールの実行内容から取得したIPアドレスとポート番号との組合せが、不正通信相手リストに含まれるIPアドレスとポート番号との組合せのいずれとも一致しなかった場合、判定部20dは、注目するアプリケーションが不正なアプリケーションではないと判定する。なお、不正通信相手リストにIPアドレスは記録されているがポート番号は記録されていない場合、IPアドレスのみについて、上記と同様の判定が行われる。
上記の判定において、不正通信相手リストに含まれる通信相手の種別に基づいて、不正なアプリケーションの種別を識別してもよい。例えば、ステップS220aで抽出したシステムコールの実行内容が、広告サイトとの通信として不正通信相手リストに記録されている場合、注目するアプリケーションが、広告サイトへ誘導する通信を行うタイプのアプリケーションであると識別することができる。また、ステップS220aで抽出したシステムコールの実行内容が、ボットネットの通信として不正通信相手リストに記録されている場合、注目するアプリケーションが、マルウェア感染を企むボットネットと通信を行うタイプのアプリケーションであると識別することができる。上記の判定結果に応じて、不正なアプリケーションの種別を示す種別情報を生成し、判定結果と共にファイル記憶部23に保存してもよい。
上述した携帯端末1,1aおよびログ解析装置2の各機能は、各装置の動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより、実現される。
上述したように、本実施形態のアプリケーション判定システムによれば、アプリケーションの挙動を記録したアプリケーションログおよびカーネルログに基づいて、注目するアプリケーションが不正であるか否かを判定することができる。特に、注目するアプリケーションの挙動に対応するプロセス以外のプロセスに関する多量の冗長な情報を解析対象から排除することが可能となるので、アプリケーションログおよびカーネルログの解析を効率的に行うことができ、注目するアプリケーションが不正であるか否かを判定する際の判定精度を向上することができる。
また、カーネルログから、親プロセスIDと関連付けられた子プロセスIDを抽出し、ログの解析に用いることによって、アプリケーションの挙動をより詳細に解析することができ、注目するアプリケーションが不正であるか否かを判定する際の判定精度を向上することができる。
また、カーネルログに記録されたシステムコールの実行内容が、root権限を有している場合に操作が可能なディレクトリ(図19の領域ROMのディレクトリ)に対する操作を示しているか否か、あるいはファイル記憶部16において特定のアプリケーションに割り当てられたディレクトリ(図19のディレクトリD3a〜D3c)に対する操作を示しているか否かを判定することによって、携帯端末のroot権限を奪うアプリケーションや、個人情報を漏洩させるアプリケーションを検出することができる。
また、カーネルログから、親プロセスIDと関連付けられた子プロセスIDを抽出し、ログの解析に用いることによって、アプリケーションの挙動をより詳細に解析することができ、注目するアプリケーションが不正であるか否かを判定する際の判定精度を向上することができる。
また、カーネルログに記録されたシステムコールの実行内容が、既知の悪性ウェブサイトのIPアドレスを通信相手とする通信を示しているか否か、あるいは既知の悪性アプリケーションの挙動を解析して得られるIPアドレスを通信相手とする通信を示しているか否かを判定することによって、広告サイトへ誘導する通信を行うアプリケーションや、マルウェア感染を企むボットネットと通信を行うアプリケーション等の不正なアプリケーションを検出することができる。
また、カーネルログに記録されたシステムコールの実行内容からIPアドレスとポート番号を抽出し、不正通信相手リストに含まれるIPアドレスとポート番号の組合せと一致するか否かを判定することによって、通信プロトコル毎に通信相手を区別して詳細に判定を行うことができる。
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。