(57)【特許請求の範囲】
【請求項１】
アプリケーションの構成要素である複数のファイルを含むパッケージファイルに含まれる前記複数のファイルから、所定の圧縮形式で圧縮されているファイルを抽出する抽出部と、
前記抽出部によって抽出されたファイルを展開して得られるファイルのファイル名が、アプリケーションの構成要素として必須であるファイルのファイル名と一致するか否かを判定する判定部と、
を備えたことを特徴とするマルウェア検知装置。
【請求項２】
前記所定の圧縮形式はZIP形式であることを特徴とする請求項１に記載のマルウェア検知装置。
【請求項３】
前記判定部はさらに、前記抽出部によって抽出されたファイルの拡張子が「.zip」または「.apk」であるか否かを判定することを特徴とする請求項１または請求項２に記載のマルウェア検知装置。
【請求項４】
前記判定部はさらに、前記抽出部によって抽出されたファイルに、実行可能形式のバイナリファイルが含まれているか否かを判定することを特徴とする請求項１〜請求項３のいずれか一項に記載のマルウェア検知装置。
【請求項５】
請求項１に記載のマルウェア検知装置としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルウェアを検知するマルウェア検知装置に関する。また、本発明は、本マルウェア検知装置としてコンピュータを機能させるためのプログラムにも関する。
【背景技術】
【０００２】
汎用OS（オペレーティングシステム）を用いたオープンプラットフォームを採用する、スマートフォンと呼ばれる携帯情報端末が普及している。ネットワークを介して入手可能なアプリケーションをスマートフォンに導入することにより、スマートフォンの様々な機能を柔軟かつ容易に拡張することが可能である。しかし、アプリケーションの中には、利用者の許諾を伴わずに、端末に格納された個人情報を収集して外部に送信するマルウェアとして動作する悪性アプリケーションが存在する。特に、正規のアプリケーションを装いつつ、こうした不正な振る舞いを行うアプリケーションは、トロイの木馬と呼ばれ、その脅威に気付くことが困難である。
【０００３】
スマートフォンとPC（パーソナルコンピュータ）を比較した場合、スマートフォンは、利用者との結びつきがPCよりも緊密な機器であり、氏名、電話番号、メールアドレス、住所録、メールの送受信履歴、インターネットの閲覧履歴等の個人情報が集積している。また、端末の高機能化と、常に携帯されることから、従来のPCでは収集されなかった位置情報等の情報も容易に取得可能となり、情報が悪用される脅威に直面する。したがって、アプリケーションを容易に入手可能な環境において個人情報が悪用される脅威からスマートフォンの利用者を保護する必要がある。
【０００４】
PC向けに一般的に用いられるマルウェア検知技術として、実行コードを含むプログラムを逆アセンブルして、コード内のAPI（Application Program Interface）の呼び出しやデータの制御フローを解析してマルウェアの特徴を抽出する静的検知手法がある（例えば、非特許文献1参照）。しかし、プログラムの逆アセンブルと特徴の抽出に多くの計算処理能力を必要とするため、PCと比較してCPUの処理能力やメモリの搭載容量が乏しいスマートフォンでは、検知に時間がかかること、および消費電力が増大することが課題となる。
【０００５】
したがって、スマートフォンのマルウェア検知には、静的検知手法よりも少ない処理量で実現できる手法が利用されている。具体的には、アプリケーションを構成するファイルの名称（ファイル名）があらかじめ登録されたブラックリストを用いてアプリケーションを検査し、ブラックリストに登録されているファイル名と一致するファイル名が発見された場合にマルウェアを検知する手法が用いられる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】泉田大宗、橋本政朋、森彰、“動的エミュレーションと静的解析を併用したバイナリコードの解析手法”、情報処理学会研究報告. マルチメディア通信と分散処理研究会報告、2010年2月25日
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、アプリケーションを構成するファイルのファイル名と、ブラックリストに登録されたファイル名との照合を行うことによるマルウェアの検知から逃れるため、マルウェアの作成者が、ブラックリストに登録されているファイル名を有する悪意のファイルのファイル名の全部または一部（例えば、拡張子）を変更してアプリケーションのファイルに追加する場合がある。このため、マルウェア検知の回避が可能となり、的確なマルウェア検知を実現することができないという問題があった。また、ブラックリストに登録されていない新規なマルウェアを検知することができないという問題があった。
【０００８】
本発明は、上述した課題に鑑みてなされたものであって、ブラックリストを利用したマルウェア検知手法では検知できないマルウェアをより的確に検知することができるマルウェア検知装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、上記の課題を解決するためになされたもので、アプリケーションの構成要素である複数のファイルを含むパッケージファイルに含まれる前記複数のファイルから、所定の圧縮形式で圧縮されているファイルを抽出する抽出部と、前記抽出部によって抽出されたファイルを展開して得られるファイルのファイル名が、アプリケーションの構成要素として必須であるファイルのファイル名と一致するか否かを判定する判定部と、を備えたことを特徴とするマルウェア検知装置である。
【００１０】
また、本発明のマルウェア検知装置において、前記所定の圧縮形式はZIP形式であることを特徴とする。
【００１１】
また、本発明のマルウェア検知装置において、前記判定部はさらに、前記抽出部によって抽出されたファイルの拡張子が「.zip」または「.apk」であるか否かを判定することを特徴とする。
【００１２】
また、本発明のマルウェア検知装置において、前記判定部はさらに、前記抽出部によって抽出されたファイルに、実行可能形式のバイナリファイルが含まれているか否かを判定することを特徴とする。
【００１３】
また、本発明は、上記のマルウェア検知装置としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【００１４】
本発明によれば、パッケージファイルに含まれる複数のファイルから、所定の圧縮形式で圧縮されているファイルを抽出し、抽出されたファイルを展開して得られるファイルのファイル名が、アプリケーションの構成要素として必須であるファイルのファイル名と一致するか否かを判定することによって、ブラックリストを利用したマルウェア検知手法では検知できないマルウェアをより的確に検知することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態によるマルウェア検知装置の構成を示すブロック図である。
【図２】本発明の一実施形態によるマルウェア検知装置の動作の手順を示すフローチャートである。
【図３】本発明の一実施形態におけるマルウェア検知手法を説明するための参考図である。
【図４】マルウェアが実行されて情報漏洩等の被害が発生するまでの手順を示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照し、本発明の実施形態を説明する。本実施形態では、一例として、スマートフォンに搭載されるOSの一つであるAndroid（登録商標）で動作するアプリケーションを対象としたマルウェア検知手法を説明する。本実施形態のマルウェア検知手法では、アプリケーションを構成するファイルのうち所定の圧縮形式で圧縮されているファイルを展開して得られるファイルのファイル名に基づいてマルウェアを検知する。本明細書および図面では、便宜上、必要に応じてAndroid（登録商標）という文字列を*andrd*という文字列で代用している。すなわち、*andrd*という文字列はAndroid（登録商標）という文字列と等価である。
【００１７】
以下、本実施形態のマルウェア検知手法を説明する。アプリケーションの実行ファイルであるapkファイル（パッケージファイル）は、拡張子が「.apk」のファイルであり、アプリケーションが利用する機能や権限が定義されたマニフェストファイル（拡張子が.xml）、命令列を含む実行コード（拡張子が「.dex」）、アプリケーションが利用する画像ファイル等の各種リソースファイルをZIP形式で圧縮したファイルである。図３に示すように、正規のアプリケーション３００は、マニフェストファイル３１０、実行コード３２０、その他のファイル（画像ファイル３３０等）で構成されている。
【００１８】
マニフェストファイル３１０と実行コード３２０はapkファイルの構成要素として必須のファイルである。また、マニフェストファイル３１０と実行コード３２０は、正規のアプリケーションとして正しくインストールおよび実行するために必要なファイルであり、かつ、正常な動作を行うためにはファイル名（拡張子を含む）を変更してはいけないファイルである。マニフェストファイル３１０のファイル名（拡張子を含む）は常に「*andrd*Manifest.xml」であり、実行コード３２０のファイル名（拡張子を含む）は常に「classes.dex」である。
【００１９】
一方、図３に示すように、マルウェア４００は、マニフェストファイル４１０、実行コード４２０、エクスプロイトコード４３０、およびZIP形式のファイル４４０で構成されている。マニフェストファイル４１０と実行コード４２０は正規のアプリケーションにも含まれているが、エクスプロイトコード４３０とファイル４４０はマルウェアに特有のファイルである。エクスプロイトコード４３０は、実行可能形式のバイナリファイルである。エクスプロイトコード４３０が実行されると、アプリケーションは、管理者権限であるroot権限を奪い、情報漏洩等の悪意の挙動を示す。ファイル４４０は、ZIP形式で圧縮されたファイルである。
【００２０】
ファイル４４０を展開すると、マニフェストファイル４４１、実行コード４４２、その他のファイル（画像ファイル４４３）が得られる。マニフェストファイル４４１と実行コード４４２はapkファイルの構成要素として必須のファイルであり、ファイル４４０自体もapkファイルである。つまり、マルウェア４００は、悪性アプリケーションとしてのapkファイルであるファイル４４０を内包している。ブラックリストを利用したマルウェア検知から逃れるために、マルウェアの作成者は悪性apkファイルのファイル名や拡張子を変更する。図３の例では、ファイル４４０の拡張子が「.apk」から「.png」に変更されている。マルウェア４００を上記のように構成することによって、アプリケーションを構成するファイルの名称（ファイル名）と、ブラックリストに登録されているファイル名とを比較するマルウェア検知において、マルウェアとして検知されないようになる。
【００２１】
マルウェア４００は以下のように実行される。図４は、マルウェア４００が実行されて情報漏洩等の被害が発生するまでの手順を示している。端末の利用者がマルウェア４００を端末にインストールし（ステップＳ２００）、マルウェア４００を起動すると（ステップＳ２１０）、実行コード４２０がエクスプロイトコード４３０を実行する（ステップＳ２２０）。マルウェア４００が利用できる権限はマニフェストファイル４１０によって制限されているが、エクスプロイトコード４３０の実行により、マルウェア４００はroot権限を得ることができる。
【００２２】
root権限を得ることにより、実行コード４２０は、apkファイルとしての構成を有するファイル４４０（悪性アプリケーション）をインストールし（ステップＳ２３０）、悪性アプリケーションを起動する（ステップＳ２４０）。起動した悪性アプリケーションは情報漏洩等の動作を行い、被害が発生する（ステップＳ２５０）。
【００２３】
図３に示したように、マルウェア４００は、所定の圧縮形式（図３の例ではZIP形式）で圧縮されたファイル４４０を有し、ファイル４４０を展開して得られるファイルには、アプリケーションの構成要素として必須であるマニフェストファイル４１０と実行コード４２０が含まれるという特徴がある。本実施形態では、この特徴の有無を検査することによりマルウェアの有無を判定する手法をとっている。
【００２４】
次に、本実施形態のマルウェア検知手法を適用したマルウェア検知装置（アプリケーション解析装置）の構成と動作を説明する。図１は、本実施形態によるマルウェア検知装置の構成を示している。図１に示すように、マルウェア検知装置は、記憶部１０、抽出部１１、および判定部１２を有する。
【００２５】
記憶部１０は、マルウェア検知の対象となるアプリケーションのapkファイルや、マルウェア検知の結果等を記憶する。抽出部１１は、apkファイルからZIP形式のファイル（図３のファイル４４０）を抽出する。判定部１２は、抽出部１１によって抽出されたファイルを展開して得られるファイル（図３のマニフェストファイル４４１等）のファイル名が、アプリケーションの構成要素として必須であるファイルのファイル名と一致するか否かを判定する。
【００２６】
図２はマルウェア検知装置の動作を示している。以下、マルウェア検知装置の動作を説明する。まず、抽出部１１は、マルウェア検知の対象であるアプリケーションのapkファイルを記憶部１０から読み出す。apkファイルはZIP形式で圧縮されており、抽出部１１はapkファイルを展開（伸長）する（ステップＳ１００）。続いて、抽出部１１は、apkファイルを展開して得られた各ファイルのヘッダを参照し、ZIP形式であることを示す情報がヘッダに格納されているファイルを抽出する（ステップＳ１１０）。具体的には、ファイルのヘッダの先頭4バイトがリトルエンディアンで「0x04034b50」またはビッグエンディアンで「PK\003\004」であるZIP形式のファイルが抽出される。
【００２７】
続いて、判定部１２は、抽出部１１によって抽出されたZIP形式のファイルを展開（伸長）し、得られた各ファイルの名称（ファイル名）を確認し、マルウェア検知の対象であるアプリケーションのapkファイルがマルウェアであるか否かを判定する（ステップＳ１２０）。具体的には、ファイル名が「*andrd*Manifest.xml」であるファイルと、ファイル名が「classes.dex」であるファイルとの両方が確認された場合、ZIP形式のファイルは悪性アプリケーションであるため、判定部１２は、マルウェア検知の対象であるアプリケーションのapkファイルがマルウェアであると判定し、判定結果を記憶部１０に格納する。
【００２８】
また、ファイル名が「*andrd*Manifest.xml」であるファイルと、ファイル名が「classes.dex」であるファイルとの少なくとも一方が確認されなかった場合、ZIP形式のファイルは悪性アプリケーションではないため、判定部１２は、マルウェア検知の対象であるアプリケーションのapkファイルがマルウェアではないと判定し、判定結果を記憶部１０に格納する。また、ステップＳ１１０でZIP形式のファイルが抽出されなかった場合も、判定部１２は、マルウェア検知の対象であるアプリケーションのapkファイルがマルウェアではないと判定し、判定結果を記憶部１０に格納する。上記では、判定結果を記憶部１０に格納しているが、判定結果を図示せぬ表示部に表示してもよい。
【００２９】
以上のようにしてマルウェアを検知することができるが、さらに以下のようにしてもよい。前述したように、ブラックリストを利用したマルウェア検知から逃れるために、マルウェアであるapkファイルに含まれる悪性apkファイル（図３のファイル４４０）のファイル名や拡張子が変更されることに着目し、悪性apkファイルに関する付随情報を得てもよい。例えば、判定部１２は、抽出部１１によって抽出されたZIP形式のファイルの拡張子が「.zip」または「.apk」であるか否かを判定する。
【００３０】
抽出部１１によって抽出されたZIP形式のファイルの拡張子が「.zip」でも「.apk」でもない場合、判定部１２は、悪性度が高いと判定し、悪性度が高いことを示す付随情報を、ステップＳ１２０で得られた判定結果と関連付けて記憶部１０に格納する。あるいは、ステップＳ１２０でファイル名が「*andrd*Manifest.xml」であるファイルと、ファイル名が「classes.dex」であるファイルとの両方が確認され、かつ、上記のようにZIP形式のファイルの拡張子が「.zip」でも「.apk」でもない場合に、マルウェア検知の対象であるアプリケーションのapkファイルがマルウェアであると判定してもよい。
【００３１】
また、マルウェア検知の対象であるアプリケーションのapkファイルにエクスプロイトコードのような実行可能形式のバイナリファイルが含まれているか否かを判定し、悪性apkファイルに関する付随情報を得てもよい。例えば、判定部１２は、ステップＳ１００でapkファイルを展開して得られた各ファイルのヘッダを参照し、実行可能形式のバイナリファイルであることを示す情報がヘッダに格納されているファイルがあるか否かを判定する。具体的には、判定部１２は、ファイルのヘッダの先頭4バイトがリトルエンディアンで「0X464C457F」またはビッグエンディアンで「0x7F454C46」であるファイルがあるか否かを判定する。
【００３２】
実行可能形式のバイナリファイルであることを示す情報がヘッダに格納されているファイルがある場合、判定部１２は、悪性度が高いと判定し、悪性度が高いことを示す付随情報を、ステップＳ１２０で得られた判定結果と関連付けて記憶部１０に格納する。あるいは、ステップＳ１２０でファイル名が「*andrd*Manifest.xml」であるファイルと、ファイル名が「classes.dex」であるファイルとの両方が確認され、かつ、上記のようにapkファイルに実行可能形式のバイナリファイルが含まれている場合に、マルウェア検知の対象であるアプリケーションのapkファイルがマルウェアであると判定してもよい。
【００３３】
上述したように、本実施形態によれば、apkファイルに含まれる複数のファイルからZIP形式のファイルを抽出し、抽出されたファイルを展開して得られるファイルのファイル名が、アプリケーションの構成要素として必須であるマニフェストファイルや実行コードのファイル名と一致するか否かを判定することによって、ブラックリストを利用したマルウェア検知手法では検知できないマルウェアをより的確に検知することができる。
【００３４】
また、ZIP形式のファイルの拡張子が「.zip」または「.apk」であるか否かを判定することや、apkファイルに実行可能形式のバイナリファイルが含まれているか否かを判定することによって、マルウェア検知の対象であるアプリケーションのapkファイルがよりマルウェアらしい特徴を有しているか否かに関する付随情報を得ることができる。
【００３５】
本実施形態のマルウェア検知手法を、例えばスマートフォン用のアプリケーションを通信ネットワーク上で販売する販売サイトにおけるアプリケーションの事前審査に適用することが可能である。また、本実施形態のマルウェア検知手法をアンチウイルスソフトに適用することも可能である。
【００３６】
上述したマルウェア検知装置は、その動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより、実現される。ここで、「コンピュータ」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００３７】
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であってもよい。
【００３８】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【００３９】
１０・・・記憶部、１１・・・抽出部、１２・・・判定部
【図１】
0005667957.tif 000002
【図２】
0005667957.tif 000003
【図３】
0005667957.tif 000004
【図４】
0005667957.tif 000005