(57)【要約】【課題】リパッケージされて悪性コードが添付されたアプリケーションを探知し、危険度計算を通じたリパッケージアプリケーションの分析システム及び分析方法を提供する。【解決手段】アプリケーション圧縮を解除し、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルを抽出するデコンパイラ１０２と、デコンパイラ１０２が抽出した各ファイルにおいて、特定情報の改ざんの有無を分析する分析モジュール１０６と、分析情報により、アンドロイドアプリケーションが悪性コードを含んでいる可能性を示す危険度を点数に換算する危険度計算モジュール１１０と、を含み、分析対象となるアンドロイドアプリケーションを、危険度により、正常アプリケーション、リパッケージ疑心アプリケーション、リパッケージ悪性アプリケーションのいずれかに分類する。【選択図】図２
2014063490.tif 000002
【特許請求の範囲】
【請求項１】
アンドロイドアプリケーションを分析してリパッケージアプリケーションを探知するシステムであって、
分析対象となるアンドロイドアプリケーションをロードし、前記アプリケーション圧縮を解除し、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルを抽出するデコンパイラ１０２と、
前記デコンパイラ１０２が抽出した前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルと前記Ｄｅｘファイルにおいて、特定情報の変調の有無を分析する分析モジュール１０６と、
悪性コードの作製及び配布と関連したパブリッシャーのＩＤを集めたブラックリストと、悪性コードの作製及び配布と無関係なパブリッシャーのＩＤを集めたファイトリストと、悪性パッケージの名前と悪性コード文字列についての情報を保存するブラックリストデータベース１０８と、
前記分析モジュール１０６が生成した前記アンドロイドアプリケーションについての分析情報が伝送されると、前記分析情報により、前記アンドロイドアプリケーションが悪性コードを含んでいる可能性を示す危険度を点数に換算する危険度計算モジュール１１０と、を含み、
前記分析対象となるアンドロイドアプリケーションを、前記危険度により、正常アプリケーション、リパッケージ疑心アプリケーション、リパッケージ悪性アプリケーションのいずれかに分類することを特徴とする危険度計算を通じたリパッケージアプリケーションの分析システム。
【請求項２】
前記分析モジュール１０６は、
前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルに含まれたアプリケーション情報のうち、パッケージの名前とメインアクティビティの名前を抽出し、前記パッケージの名前と前記メインアクティビティの名前の類似性の程度を分析し、前記危険度計算モジュール１１０に伝達する名前分析器１０６ａと、
前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルに含まれたパブリッシャーＩＤが、前記ファイトリストまたは前記ブラックリストから発見されるかを分析し、その結果を前記危険度計算モジュール１１０に伝達するＩＤ分析器１０６ｂと、
前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルまたは前記Ｄｅｘファイルにおいて、悪性パッケージの名前または悪性コード文字列が発見されるかを分析し、その結果を前記危険度計算モジュール１１０に伝達するストリング分析器１０６ｃと、
を含む請求項１に記載の危険度計算を通じたリパッケージアプリケーションの分析システム。
【請求項３】
請求項１または２の記載による分析システムを用いたリパッケージアプリケーションの探知方法であって、
デコンパイラ１０２が分析対象となるアンドロイドアプリケーションをロードし、前記アプリケーションの圧縮を解除し、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルを抽出する第１段階と、
分析モジュール１０６が前記デコンパイラ１０２が抽出した前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルまたは前記Ｄｅｘファイルにおいて、特定情報の改ざんの有無を分析する第２段階と、
前記分析モジュール１０６が生成した前記アンドロイドアプリケーションについての分析情報が伝送されると、危険度計算モジュール１１０が、前記分析情報により、前記アンドロイドアプリケーションが悪性コードを含んでいる可能性を示す危険度を点数に換算する第３段階と、
危険度計算モジュール１１０が、前記アンドロイドアプリケーションを、前記危険度により、正常アプリケーション、リパッケージ疑心アプリケーション、リパッケージ悪性アプリケーションのいずれかに分類する第４段階と、
を含む危険度計算を通じたリパッケージアプリケーションの分析方法。
【請求項４】
前記第２段階は、
前記分析モジュール１０６に含まれた名前分析器１０６ａが、前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルに含まれたアプリケーション情報のうち、パッケージの名前とメインアクティビティの名前を抽出し、前記パッケージの名前と前記メインアクティビティの名前の類似性の程度を分析し、前記危険度計算モジュール１１０に伝達する第２‐１段階と、
前記分析モジュール１０６に含まれたＩＤ分析器１０６ｂが、前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルに含まれたパブリッシャーＩＤが前記ブラックリストから発見されるかを分析し、その結果を前記危険度計算モジュール１１０に伝達する第２‐２段階と、
前記分析モジュール１０６に含まれたストリング分析器１０６ｃが、前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルまたは前記Ｄｅｘファイルにおいて、悪性パッケージの名前または悪性コード文字列が発見されるかを分析し、その結果を前記危険度計算モジュール１１０に伝達する第２‐３段階と、
を含む請求項３に記載の危険度計算を通じたリパッケージアプリケーションの分析方法。
【請求項５】
前記第２‐１段階において、前記名前分析器１０６ａの分析の結果、
前記メインアクティビティの名前が、「パッケージの名前」と「パッケージの名前の最後の部分」が「．」で結合された形態である場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を５％加算し、
前記メインアクティビティの名前が前記パッケージの名前と異なり、前記メインアクティビティの名前に前記パッケージの名前が含まれていない場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を５０％加算し、
前記メインアクティビティの名前が前記パッケージの名前と異なり、前記メインアクティビティの名前に前記パッケージの名前が含まれている場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を１５％加算することを特徴とする請求項４に記載の危険度計算を通じたリパッケージアプリケーションの分析方法。
【請求項６】
前記第２‐２段階において、前記ＩＤ分析器１０６ｂの分析の結果、
前記パブリッシャーＩＤが、前記ファイトリストに含まれた場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を加算せず、
前記パブリッシャーＩＤが前記ブラックリストに含まれた場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を２０％加算し、
前記パブリッシャーＩＤが前記ファイトリストと前記ブラックリストのいずれにも含まれていない場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を１０％加算することを特徴とする請求項４に記載の危険度計算を通じたリパッケージアプリケーションの分析方法。
【請求項７】
前記第２‐３段階において、前記ストリング分析器１０６ｃの分析の結果、前記悪性パッケージの名前と前記悪性コード文字列が発見されなかった場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を加算せず、
前記悪性パッケージの名前が発見された場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を１２％加算し、
前記悪性コード文字列が発見された場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を３０％加算することを特徴とする請求項４に記載の危険度計算を通じたリパッケージアプリケーションの分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、危険度計算を通じたリパッケージアプリケーションの分析システム及び分析方法に関し、より詳しくは、アンドロイドスマートフォンに設置されたアプリケーションがリパッケージされたものであるかを点数化し、悪性コードの存在の有無を確認するようにする、危険度計算を通じたリパッケージアプリケーションの分析システム及び分析方法に関する。
【背景技術】
【０００２】
スマートフォンの動作を制御する運用体系（ОＳ）には、アップルのｉОＳ、グーグルのアンドロイド、ノキアのシンビアン、リムのブラックベリー、マイクロソフトのウィンドモバイル等がある。この中で、ｉОＳとアンドロイドが最も多く用いられているが、アップルが運用するアップストアを通じてのみ、閉鎖的にアプリケーションを配布するｉОＳとは異なり、アンドロイドОＳを用いるスマートフォンは、いくつかの経路を通じてアプリケーションをダウンロードされ得る。
【０００３】
多様な形態のアプリケーションマーケットを通じて伝播されるアンドロイド用アプリケーションには、悪意的な意図で作製された悪性コードが一緒に含まれており、使用者がアプリケーションを用いる間、使用者が意図しなかった情報の流出が生じてしまうことがある。
【０００４】
スマートフォン用のワクチンプログラムや悪性コード探知プログラムが多く公開されてはいるが、一日にも数万個ずつ公開されるアプリケーションを全て検査することは、現実的に不可能であり、これをダウンロードされて用いる使用者が、個別的に悪性コードの存在の有無を検査して注意するより仕方がない。
【０００５】
特に、正常のアンドロイドマーケットではなく、私設マーケットであるブラックマーケットに登録されるアプリケーションは、最小限の検証手続きもないので、リパッケージ等の悪意的なアプリケーションの流通経路で多く活用されていることが実状である。
【０００６】
図１は、従来技術によるアンドロイドアプリケーションの悪性コード探知システムの構造を示すブロック図である。
【０００７】
図１に示すように、悪性コード探知システムが設置された携帯端末１は、リヌックスカーネル（Linux（登録商標） Kernel）５に基づき、サンプルアプリケーション１０が実行されるアプリケーション部２と、携帯電話検査（Scan）１２、実時間探知（Real Time）１４、検査目録（History）１６の確認、パターンアップデート（Pattern Update）１８等の機能を行うためのアプリケーションフレームワーク（Application Framework）３と、ファイルチェック（Check File）２０と暗号化されたクリプト（Crypto）２２とで構成されるライブラリ（Libraries）４と、からなる。
【０００８】
パターンサーバー５０は、前記携帯端末１の悪性コードと危険ファイルの診断のためのパターンアップデートのためのパターンデータ５４と、前記パターンデータ５４を暗号化し、前記携帯端末１に提供するためのクリプトサーバ（Crypto Server）５２とからなる。
【０００９】
携帯端末１のＳＤカードフォルダ及びアプリケーションに対する検査が始まると、ＳＤカードの全体のファイル目録と、前記携帯端末１に設置されているアプリケーション目録をロードする。
【００１０】
アンドロイド運用体系における実行ファイルの拡張子はａｐｋであり、いくつかのファイルが圧縮されている。
【００１１】
アプリケーションフレームワーク３は、拡張子がａｐｋである実行ファイルに対して、シグネチャー（Signature）基盤のパターン検査を進行する。前記シグネチャー基盤のパターン検査は、事前に定義されて保存された悪性コードとのパターンを比較するものであって、悪性コードの有無の検査のために、パターンが一致するか否かを判断する。
【００１２】
パターンに対する判断の結果、検査された実行ファイルのパターンと一致するパターンが存在する場合、該当実行ファイルを悪性コードと規定する。また、判断の結果、検査された実行ファイルのパターンと一致するパターンが存在しない場合は、２次でヒューリスティック検査を通じて、当該ファイルの危険性の有無を判断するようになる。
【００１３】
このような検査が全て完了すると、検査結果をデータベースに保存する。
【００１４】
また、ヒューリスティック検査により、ファイルの危険性の有無を診断する方法は、先ず、ａｐｋの拡張子を有するファイルの圧縮を解除し、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔ．ｘｍｌファイルを確認する。
【００１５】
前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔ．ｘｍｌファイルは、インターネット連結、住所録接続、システム接続等のような権限が保存されているファイルであって、バイトを比較して、どんな権限がパターンデータベースにあるかを確認する。
【００１６】
前記パターンデータベースは、ヒューリスティックパターンとウィルスパターンに区分される。
【００１７】
ヒューリスティックパターン検査は、一例として、インターネット接続権限と、それ以外の権限とが組み合わせられる場合、危険性のあるファイルとみなすが、これは、インターネット接続権限と住所録読取り、データ読取り、文字メッセージ読取り、携帯電話記録確認、位置情報確認、携帯電話情報確認等の権限が組み合わされると、他のサーバに伝送が可能となるからである。
【００１８】
このような問題のあるアプリケーションの場合は、使用者が知らない間に携帯電話の情報を取得して外部に送ることができるので、危険性のある悪性アプリケーションとみなし、使用者に知らせることが好ましい。
【００１９】
ところが、このような探知方法は、アプリケーションを第三者が新たな方式で再構成した「リパッケージアプリケーション」に適用する場合、悪性コードであるか否かを探知できない危険がある。すなわち、アプリケーションに含まれたＤｅｘファイルを新たに作ってリパッケージアプリケーションを作った場合は、正常のアプリケーションが付与された正常の権限として認識し、悪性コードとして把握しないこともあり得る。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】韓国公開番号１０−２０１１‐００８４６９３Ａ
【発明の概要】
【発明が解決しようとする課題】
【００２１】
本発明は、上記問題点に鑑みなされたものであり、その目的は、アンドロイドアプリケーションに含まれたＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルにおいて、名前やＩＤ、ストリングを分析し、第三者により無断でリパッケージされながら悪性コードが添付されたアプリケーションを探知可能にする、危険度計算を通じたリパッケージアプリケーションの分析システム及び分析方法を提供することにある。
【００２２】
また、本発明の他の目的は、リパッケージアプリケーションの危険度をそれぞれの区間別に点数化することにより、リパッケージアプリケーション、リパッケージ疑心アプリケーション、正常アプリケーションに、段階別に分類可能にする、危険度計算を通じたリパッケージアプリケーションの分析システム及び分析方法を提供することにある。
【課題を解決するための手段】
【００２３】
上述した目的を達成するために、本発明は、アンドロイドアプリケーションを分析してリパッケージアプリケーションを探知するシステムであって、分析対象となるアンドロイドアプリケーションをロードし、前記アプリケーション圧縮を解除し、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルを抽出するデコンパイラ１０２と、前記デコンパイラ１０２が抽出した前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルまたは前記Ｄｅｘファイルにおいて、特定情報の変調の有無を分析する分析モジュール１０６と、悪性コードの作製及び配布と関連したパブリッシャーのＩＤを集めたブラックリストと、悪性コードの作製及び配布と無関係なパブリッシャーのＩＤを集めたファイトリストと、悪性パッケージの名前と悪性コード文字列についての情報を保存するブラックリストデータベース１０８と、前記分析モジュール１０６が生成した前記アンドロイドアプリケーションについての分析情報が伝送されると、前記分析情報により、前記アンドロイドアプリケーションが悪性コードを含んでいる可能性を示す危険度を点数に換算する危険度計算モジュール１１０と、を含み、前記分析対象となるアンドロイドアプリケーションを、前記危険度により、正常アプリケーション、リパッケージ疑心アプリケーション、リパッケージ悪性アプリケーションのいずれかに分類することを特徴とする。
【００２４】
前記分析モジュール１０６は、前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルに含まれたアプリケーション情報のうち、パッケージの名前とメインアクティビティの名前を抽出し、前記パッケージの名前と前記メインアクティビティの名前の類似性の程度を分析し、前記危険度計算モジュール１１０に伝達する名前分析器１０６ａと、前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルに含まれたパブリッシャーＩＤが、前記ファイトリストまたは前記ブラックリストから発見されるかを分析し、前記危険度計算モジュール１１０に伝達するＩＤ分析器１０６ｂと、前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルまたは前記Ｄｅｘファイルにおいて、悪性パッケージの名前または悪性コード文字列が発見されるかを分析し、前記危険度計算モジュール１１０に伝達するストリング分析器１０６ｃと、を含む。
【００２５】
他の実施例による本発明は、上述した分析システムを用いたリパッケージアプリケーションの探知方法であって、デコンパイラ１０２が分析対象となるアンドロイドアプリケーションをロードし、前記アプリケーションの圧縮を解除し、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルを抽出する第１段階と、分析モジュール１０６が前記デコンパイラ１０２が抽出した前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルまたは前記Ｄｅｘファイルにおいて、特定情報の悪意有る改ざんの有無を分析する第２段階と、前記分析モジュール１０６が生成した前記アンドロイドアプリケーションについての分析情報が伝送されると、危険度計算モジュール１１０が、前記分析情報により、前記アンドロイドアプリケーションが悪性コードを含んでいる可能性を示す危険度を点数に換算する第３段階と、危険度計算モジュール１１０が、前記アンドロイドアプリケーションを、前記危険度により、正常アプリケーション、リパッケージ疑心アプリケーション、リパッケージ悪性アプリケーションのいずれかに分類する第４段階と、を含む。
【００２６】
前記第２段階は、前記分析モジュール１０６に含まれた名前分析器１０６ａが、前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルに含まれたアプリケーション情報のうち、パッケージの名前とメインアクティビティの名前を抽出し、前記パッケージの名前と前記メインアクティビティの名前の類似性の程度を分析し、前記危険度計算モジュール１１０に伝達する第２‐１段階と、前記分析モジュール１０６に含まれたＩＤ分析器１０６ｂが、前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルに含まれたパブリッシャーＩＤが前記ブラックリストから発見されるかを分析し、前記危険度計算モジュール１１０に伝達する第２‐２段階と、前記分析モジュール１０６に含まれたストリング分析器１０６ｃが、前記ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルまたは前記Ｄｅｘファイルにおいて、悪性パッケージの名前または悪性コード文字列が発見されるかを分析し、前記危険度計算モジュール１１０に伝達する第２‐３段階と、を含む。
【００２７】
前記第２‐１段階において、前記名前分析器１０６ａの分析の結果、前記メインアクティビティの名前が、「パッケージの名前」と「パッケージの名前の最後の部分」が「．」で結合された形態である場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を５％加算し、前記メインアクティビティの名前が前記パッケージの名前と異なり、前記メインアクティビティの名前に前記パッケージの名前が含まれていない場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を５０％加算し、前記メインアクティビティの名前が前記パッケージの名前と異なり、前記メインアクティビティの名前に前記パッケージの名前が含まれている場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を１５％加算することを特徴とする。
【００２８】
前記第２‐２段階において、前記ＩＤ分析器１０６ｂの分析の結果、前記パブリッシャーＩＤが、前記ファイトリストに含まれた場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を加算せず、前記パブリッシャーＩＤが前記ブラックリストに含まれた場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を２０％加算し、前記パブリッシャーＩＤが前記ファイトリストと前記ブラックリストのいずれにも含まれていない場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を１０％加算することを特徴とする。
【００２９】
前記第２‐３段階において、前記ストリング分析器１０６ｃの分析の結果、前記悪性パッケージの名前と前記悪性コード文字列が発見されなかった場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を加算せず、前記悪性パッケージの名前が発見された場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を１２％加算し、前記悪性コード文字列が発見された場合は、前記危険度計算モジュール１１０が、前記アンドロイドアプリケーションに対する危険度点数を３０％加算することを特徴とする。
【発明の効果】
【００３０】
本発明によると、悪性アプリケーションに改ざんされたリパッケージに対する汎用的な探知が可能となる。
【００３１】
また、点数化した危険度計算方式を適用することにより、悪性アプリケーション探知の誤謬を最小化し、評判探知を通じて、知られていない脅威的なアプリケーションを事前に探知して遮断することができる。
【図面の簡単な説明】
【００３２】
【図１】従来技術によるアンドロイドアプリケーションの悪性コード探知システムの構造を示すブロック図である。
【図２】本発明の実施例による悪性コード分析システムの構造を示すブロック図である。
【図３】図２の分析システムを用いた悪性コード分析方法の過程を示すフローチャートである。
【図４】正常アプリケーションにおけるパッケージの名前とメインアクティビティの名前の構造を示す表である。
【図５】リパッケージ悪性アプリケーションにおけるパッケージの名前とメインアクティビティの名前の構造を示す表である。
【図６】リパッケージ疑心アプリケーションにおけるパッケージの名前とメインアクティビティの名前の構造を示す表である。
【図７】アプリケーションにおけるパブリッシャーＩＤが表示された部分を示す表である。
【図８】悪性パッケージの名前と悪性コード文字列の代表的な事例を示す表である。
【図９】危険度点数によるアプリケーションの種類を示す表である。
【発明を実施するための形態】
【００３３】
以下、添付した図面に基づき、本発明の好適な実施例について詳述する。
【００３４】
図２は、本発明の実施例による悪性コード分析システムの構造を示すブロック図であり、図３は、図２の分析システムを用いた悪性コード分析方法の過程を示すフローチャートである。
【００３５】
図２と図３を参照して、分析システムと分析方法を同時に説明する。
【００３６】
本発明の分析システム１００は、デコンパイラ１０２、アプリケーションデータベース１０４、分析モジュール１０６、ブラックリストデータベース１０８、危険度計算モジュール１１０を含む。
【００３７】
デコンパイラ１０２は、アプリケーションデータベース１０４に保存されたアンドロイド用アプリケーションファイル（拡張子がａｐｋである実行ファイル）をロードし、アプリケーションファイルの圧縮を解除（デコンパイル）し、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルを抽出する。抽出されたＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルは、分析モジュール１０６に伝達され、リパッケージアプリケーションの探知が行われる。
【００３８】
ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルは、アプリケーションがどんなアクティブを行い、ここに必要な権限はどんなものであるか等についての情報を持っているファイルであって、プロジェクトのバージョンや名前、実行権限等のアプリケーション情報を含んでいる。
【００３９】
Ｄｅｘファイルは、コンパイルされたＪａｖａ（登録商標）クラスで作った実行ファイルであり、アンドロイド端末のダルビック仮想マシン（Dalvik virtual machine）が認識可能に、Ｊａｖａ（登録商標）クラスファイルをバイトコードに変換させたファイルである。ダルビック仮想マシンは、Ｄｅｘファイルにおいて、特定のＪａｖａ（登録商標）クラスをロードし、アプリケーションが目標とする動作を実行させる。
【００４０】
ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルは、デコンパイラ１０２により、テキスト文書にデコンパイルされ、Ｄｅｘファイルは、Ｊａｒファイル（＊．Ｊａｒ）またはＪａｖａ（登録商標）ファイル（＊．Ｊａｖａ（登録商標））にデコンパイルされる。
【００４１】
分析モジュール１０６は、デコンパイラ１０２によって圧縮が解除されて伝達されたＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルにおいて、特定情報の変調の有無を把握し、アプリケーションが悪意的な目的によりリパッケージされたものであるかを把握する。
【００４２】
名前分析器１０６ａは、デコンパイルされたＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルに含まれたアプリケーション情報のうち、パッケージの名前とメインアクティビティの名前がある程度同一であるかを分析する。
【００４３】
アクティビティは、アプリケーションの基本となる単位であって、数個のアクティビティが集まって一つのアプリケーションを構成する。その中で、アプリケーションの動作が始まるとき、最初に実行されるアクティビティをメインアクティビティと定義する。
【００４４】
アンドロイドアプリケーションにおいて、パッケージの名前とメインアクティビティの名前が同一であると、プログラムに誤謬が生じるため、正常のアンドロイドアプリケーションでも、パッケージの名前とメインアクティビティの名前は同一ではない。
【００４５】
また、二つの名前が異なる場合も、アプリケーションの動作に何らの問題がないので、開発者の選択により自由に名前を定めることができる。しかし、殆どのアンドロイドアプリケーションでは、パッケージの名前の最後の部分をメインアクティビティの名前に用いる場合が多いので、このような傾向を用いてリパッケージの有無を判断する。
【００４６】
図４は、正常アプリケーションにおけるパッケージの名前とメインアクティビティの名前の構造を示す表である。
【００４７】
パッケージの名前またはメインアクティビティの名前は、拡張子または文句が「．」により連結される構造を有するが、「パッケージの名前の最後の部分」とは、最後にある「．」の次にある文字列を意味する。
【００４８】
図４では、パッケージの名前は、「ｃｏｍ．ｄｓｅｆｆｅｃｔｓ．ＭｏｎｋｅｙＪｕｍｐ２」であり、その中で、最後にある「ＭｏｎｋｅｙＪｕｍｐ２」が「パッケージの名前の最後の部分」となる。
【００４９】
正常のメインアクティビティの名前は、パッケージの名前の後に、「．」と「パッケージの名前の最後の部分」が追加された形態（ｃｏｍ．ｄｓｅｆｆｅｃｔｓ．ＭｏｎｋｅｙＪｕｍｐ２．ＭｏｎｋｅｙＪｕｍｐ２）からなる。
【００５０】
このような形態を有する場合は、正常のアプリケーションとみなす。
【００５１】
メインアクティビティの名前を確認するためには、デコンパイルされたＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルを分析し、「ａｎｄｒｏｉｄ：ｎａｍｅ＝“ａｎｄｒｏｉｄ．ｉｎｔｅｎｔ．ａｃｔｉｏｎ．ＭＡＩＮ”」の文句が書かれたアクティビティから探す。
【００５２】
また、図５は、リパッケージ悪性アプリケーションにおけるパッケージの名前とメインアクティビティの名前の構造を示す表である。
【００５３】
図５に示すように、パッケージの名前（ｃｏｍ．ｐｏｗｅｒ．ＳｕｐｅｒＳｏｌｏ）とメインアクティビティの名前（ｃｏｍ．ａｎｄｒｏｉｄ．ｒｏｏｔ．ｍａｉｎ）が全く異なる場合は、リパッケージアプリケーションと判断する。
【００５４】
また、パッケージの名前とメインアクティビティの名前が全く同一ではないが、パッケージの名前になかった単語が追加されて、メインアクティビティの名前として用いられる場合もある。このような場合は、正常のアプリケーションとみなさないが、そうとしても、リパッケージアプリケーションと断定することもできない。したがって、一定の点数を付与し、最終的にアプリケーションを分析するとき、点数による危険度を計算するが、このようなアプリケーションを「リパッケージ疑心アプリケーション」と定義する。
【００５５】
図６は、リパッケージ疑心アプリケーションにおけるパッケージの名前とメインアクティビティの名前の構造を示す表である。
【００５６】
図６に示すように、メインアクティビティの名前（ａｄ．ｎｏｔｉｆｙ．ＯｐｅｒａＵｐｄａｔｅｒＡｃｔｉｖｉｔｙ）にパッケージの名前（ａｄ．ｎｏｔｉｆｙ）が含まれてはいるが、パッケージの名前の後に「パッケージの名前の最後の部分」が追加されたものではなく、全く異なる文字列（ＯｐｅｒａＵｐｄａｔｅｒＡｃｔｉｖｉｔｙ）が追加された場合は、リパッケージ疑心アプリケーションであるものと分類する。
【００５７】
一方、ＩＤ分析器１０６ｂは、デコンパイルされたＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルに含まれたアプリケーション情報のうち、パブリッシャーＩＤを分析し、悪性コードと関連したことのあるパブリッシャーであるかを分析する。
【００５８】
パブリッシャーＩＤは、アプリケーションに広告を記載するとき、識別用として用いられるＩＤであって、特定の配布者の身分を示す役割をする。
【００５９】
図７は、アプリケーションにおけるパブリッシャーＩＤが表示された部分を示す表である。アプリケーションでは、「ＰＵＢＬＩＳＨＥＲ_ＩＤ」を表示する部分において、「ａｎｄｒｏｉｄ：ｖａｌｕｅ＝」の後にある値がパブリッシャーＩＤである。図７では、「ａ１４ａｆ８６ｃ０ｄｃｂ０ｆ４」がパブリッシャーＩＤである。
【００６０】
分析システム１００は、既存の悪性コードの作製や配布と関連したものと認定されたパブリッシャーＩＤを集めたブラックリストを用いて、リパッケージアプリケーションを探知する。
【００６１】
悪性パブリッシャーのＩＤを記載したブラックリストは、ブラックリストデータベース１０８に保存され、ブラックリストデータベース１０８は周期的にまたはイベントが生じる度に更新される。
【００６２】
ブラックリストデータベース１０８には、ブラックリスト以外に、ファイトリストも保存される。ファイトリストは、悪性コードと関連のない正常のパブリッシャーのＩＤを集めたものであって、特定のパブリッシャーＩＤがファイトリストにあれば、特定のパブリッシャーが作製して配布したアプリケーションは、正常のアプリケーションであるものとみてもよいと言える。ＩＤ分析器１０６ｂは、ファイトリストとブラックリストを全て検索し、パブリッシャーＩＤが発見されたかを確認する。
【００６３】
一方、ストリング分析器１０６ｃは、デコンパイルされたＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルに悪性パッケージの名前や悪性コード文字列（Ｍａｌｗａｒｅ
Ｓｔｒｉｎｇ）が含まれているかを分析し、リパッケージアプリケーションを探知する。
【００６４】
悪性パッケージの名前とは、過去、悪性コードを含むアプリケーションのパッケージの名前として用いられたことのある名称を意味する。また、悪性コード文字列とは、悪性アプリケーションにおいてよく用いられる文字列として、過去に探知された悪性アプリケーションを分析して発見された文字列に対する情報を含む。
【００６５】
図８は、悪性パッケージの名前と悪性コード文字列の代表的な事例を示す表である。
【００６６】
代表的な悪性パッケージの名前と悪性コード文字列に対する情報は、ブラックリストデータベース１０８に保存され、新たな悪性コードが発見される度に、ブラックリストのアップデートを行う。
【００６７】
名前分析器１０６ａ、ＩＤ分析器１０６ｂ、ストリング分析器１０６ｃがそれぞれ分析したアプリケーションの分析情報は、危険度計算モジュール１１０に伝達される。
【００６８】
アプリケーション分析情報は、分析対象となるアプリケーションにおいて、パッケージの名前とメインアクティビティの名前がある程度同一であるか、パブリッシャーＩＤがブラックリストデータベース１０８のファイトリストまたはブラックリストにおいて発見されたか、悪性パッケージの名前や悪性コード文字列が発見されたか等に対するデータを含む。
【００６９】
アプリケーション分析情報を受けた危険度計算モジュール１１０は、分析された情報の程度に応じて、当該アプリケーションの危険度を点数に換算する。危険度は、分析対象となるアンドロイドアプリケーションの悪意的なリパッケージ過程において、悪性コードが挿入された可能性を示す指標となる。
【００７０】
点数に換算された危険度が、ある範囲にあるかにより、分析システム１００は、リパッケージアプリケーションであるかを判断し、リパッケージアプリケーションの実行を遮断する。
【００７１】
危険度計算モジュール１１０は、分析モジュール１０６から伝達される分析情報に基づき、アプリケーションの危険度を点数に表示するが、総点を基準として、名前分析器１０６ａの分析情報を５０％反映し、ＩＤ分析器１０６ｂの分析情報を２０％、ストリング分析器１０６ｃの分析情報を３０％反映して総点を計算する。
【００７２】
例えば、総点が１００点であると仮定すると、名前が同一か否かを分析した点数を５０点と、パブリッシャーＩＤの危険度を２０点と、悪性コードの危険度を３０点とするものである。
【００７３】
このような構成を用いたリパッケージアプリケーションの分析方法を説明すると図３の通りである。
【００７４】
先ず、分析システム１００が、分析対象となる特定のアプリケーションをロードする（Ｓ１０２）。特定のアプリケーションは、アプリケーションデータベース１０４に保存されたものであっても、または使用者のアンドロイドモバイル端末に設置されたアプリケーションであってもよい。
【００７５】
デコンパイラ１０２は、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルをデコンパイルして分析モジュール１０６に伝達する（Ｓ１０４）。
【００７６】
名前分析器１０６ａは、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルを分析し、パッケージの名前とメインアクティビティの名前の類似性の程度を分析し、分析された情報を危険度計算モジュール１１０に伝達し、危険度を点数化する（Ｓ１０６）。
【００７７】
危険度計算モジュール１１０の分析結果、図４のように、メインアクティビティの名前が、パッケージの名前とパッケージの名前の最後の部分とが結合された形態である場合は、正常のアプリケーションとみなし、危険度点数を５点と計算する。
【００７８】
また、図５のように、メインアクティビティの名前がパッケージの名前と全く異なる場合は、リパッケージアプリケーションとみなし、危険度計算モジュール１１０は、危険度点数を５０点と計算する。
【００７９】
また、図６のように、パッケージの名前をそのまま含んだ状態で、パッケージの名前にはなかった文字列が追加されて、メインアクティビティの名前として用いられた場合は、リパッケージ疑心アプリケーションとなみし、危険度計算モジュール１１０は、危険度点数を１５点と計算する。
【００８０】
一方、ＩＤ分析器１０６ｂは、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルを分析し、パブリッシャーＩＤがファイトリストまたはブラックリストから発見されるかを分析し、分析された情報を危険度計算モジュール１１０に伝達し、危険度を点数化する（Ｓ１０８）。
【００８１】
パブリッシャーＩＤがファイトリストに含まれた場合は、危険度点数を０点と、ブラックリストに含まれた場合は２０点と、ファイトリストとブラックリストに全て含まれていない場合は１０点と計算する。
【００８２】
ストリング分析器１０６ｃは、ＡｎｄｒｏｉｄＭａｎｉｆｅｓｔファイルとＤｅｘファイルを分析し、悪性パッケージの名前と悪性コード文字列が発見されたかを分析し、分析された情報を危険度計算モジュール１１０に伝達し、危険度を点数化する（Ｓ１１０）。
【００８３】
悪性パッケージの名前や悪性コード文字列が全く発見されなかった場合は、危険度点数０点と計算し、悪性パッケージの名前のみが発見された場合は１２点と、悪性コード文字列が発見された場合は３０点と計算する。悪性コード文字列が発見された場合は、悪性パッケージの名前の発見の有無とは関係なく、最高点数である３０点と計算する。
【００８４】
危険度計算モジュール１１０は、アプリケーションの分析情報を用いて、分析対象のアプリケーションの危険度を最終的に換算し、その結果により、悪性コードが挿入されたリパッケージアプリケーションを探知する（Ｓ１１２）。
【００８５】
若し、パッケージの名前とメインアクティビティの名前が同一であると共に、最後の部分が同一であり（５点）、パブリッシャーＩＤがファイトリストにあり（０点）、悪性パッケージの名前や悪性コード文字列が全く発見されなければ（０点）、当該アプリケーションの危険度点数は、１００点満点中５点となる。
【００８６】
また、パッケージの名前とメインアクティビティの名前が全く異なり（５０点）、パブリッシャーのＩＤがブラックリストにあり（２０点）、悪性コード文字列が発見されると（３０点）、総点が１００満点中１００点となり、１００％リパッケージ悪性アプリケーションとみなす。
【００８７】
ある程度の点数を基準として、正常、疑心、悪性のアプリケーションと定義するかは、アプリケーションの性格や種類、配布経路等によるが、代替的に区間を決めて設定することができる。
【００８８】
図９は、危険度点数によるアプリケーションの種類を示す表である。
【００８９】
図９に示すように、本発明では、危険度を１００点満点としたとき、危険度が０点以上４０点未満であると、正常アプリケーションと、４０点以上７０点未満であると、リパッケージ疑心アプリケーションと、７０点以上であれば、リパッケージ悪性アプリケーションと定義する。
【００９０】
分析システム１００は、リパッケージアプリケーションが発見されると、当該アプリケーションの発見を使用者に通知し、リパッケージアプリケーションの実行を遮断する（Ｓ１１４）。
【００９１】
分析システム１００により実行が遮断されるアプリケーションは、「リパッケージ悪性アプリケーション」であることが一般であるが、使用者の設定した保安等級に応じては、「リパッケージ疑心アプリケーション」も実行を遮断させることができる。
【００９２】
以上、添付した図面に基づき、本発明の好適な実施例について説明したが、上述した本発明の技術的構成は、本発明の属する技術の分野における当業者が、本発明のその技術的思想や必須的特徴を変更することなく、他の具体的な形態で実施され得ることを理解することができる。そのため、上述した実施例は、全ての面において例示的なものであり、限定的なものではないと理解されなければならず、本発明の範囲は、上記した詳細な説明よりは、後述する特許請求の範囲により定められ、特許請求の範囲の意味及び範囲、またその等価概念から導出される全ての変更または変形された形態が本発明の範囲に含まれるものと解釈されなければならない。
【符号の説明】
【００９３】
１００：分析システム
１０２：デコンパイラ
１０４：アプリケーションデータベース
１０６：分析モジュール
１０８：ブラックリストデータベース
１１０：危険度計算モジュール
【図１】
2014063490.tif 000003
【図２】
2014063490.tif 000004
【図３】
2014063490.tif 000005
【図４】
2014063490.tif 000006
【図５】
2014063490.tif 000007
【図６】
2014063490.tif 000008
【図７】
2014063490.tif 000009
【図８】
2014063490.tif 000010
【図９】
2014063490.tif 000011