(57)【特許請求の範囲】
【請求項１】
モバイル環境用のトロイの木馬化されたアプリケーション（アプリ）を特定するためのコンピュータ実装方法であって、
コンピュータによって、少なくとも１つの外部ソースから、特定のモバイル環境用の複数のアプリを取得する工程と、
前記取得されたアプリのうちの第１の特定のアプリの、コードに関するデータとデジタル署名者と日付とを、前記複数のアプリのうちの第２の特定のアプリの、コードに関するデータとデジタル署名者と比較する工程と、
前記比較に基づいて、前記取得されたアプリのうちの前記第１の特定のアプリが、１）前記取得されたアプリのうちの第２の特定のアプリに含まれるコードの少なくとも所定の閾値、２）前記取得されたアプリのうちの前記第２の特定のアプリに存在しない更なるコード、３）前記取得されたアプリのうちの前記第２の特定のアプリとは異なる署名者、および４）前記取得されたアプリのうちの前記第１の特定のアプリの前記日付であって前記取得されたアプリのうちの前記第２の特定のアプリの日付以降の日付、を含むことを判定する工程と、
前記判定に応答して、前記取得されたアプリのうちの前記第１の特定のアプリを、トロイの木馬化されたアプリであると特定する工程と、
を含む方法。
【請求項２】
複数のアプリにわたる共通のライブラリを、１）前記取得されたアプリのうちの第１の特定のアプリのコードに関するデータを、少なくとも１つの他の取得されたアプリのコードに関するデータと比較すること、並びに２）前記取得されたアプリのうちの前記第１の特定のアプリが、前記取得されたアプリのうちの第２の特定のアプリに含まれるコード及び前記取得されたアプリのうちの前記第２の特定のアプリに存在しない更なるコードの少なくとも１つの所定の閾値を含むことを判定することから除外することを更に含む、請求項１に記載の方法。
【請求項３】
コンピュータによって複数のアプリを取得する工程は、各特定の取得されたアプリに関して、コードに関するデータを前記特定の取得されたアプリから抽出することを更に含む、請求項１に記載の方法。
【請求項４】
コードに関するデータを前記特定の取得されたアプリから抽出することが、
前記特定の取得されたアプリによって使用される各方法の完全修飾名を抽出することを更に含む、請求項３に記載の方法。
【請求項５】
コードに関するデータを前記特定の取得されたアプリから抽出することが、
前記特定の取得されたアプリによって使用される各クラスの完全修飾名を抽出することを更に含む、請求項３に記載の方法。
【請求項６】
コードに関するデータを前記特定の取得されたアプリから抽出することが、
前記特定の取得されたアプリの可能な実行パスを記載するフローグラフを作成することを更に含む、請求項３に記載の方法。
【請求項７】
コードに関するデータを前記特定の取得されたアプリから抽出することが、
生のバイトコードを前記アプリにおける全てのクラスの全ての方法から抽出することと、
前記抽出された生のバイトコードを正規化することと、を更に含む、請求項３に記載の方法。
【請求項８】
コードに関するデータを前記特定の取得されたアプリから抽出することが、
前記正規化され抽出された生のバイトコードのハッシュを作成することを更に含む、請求項７に記載の方法。
【請求項９】
各特定の取得されたアプリに関して、デジタル署名者の身元を前記特定の取得されたアプリから抽出することを更に含む、請求項１に記載の方法。
【請求項１０】
各特定の取得されたアプリに関して、前記特定の取得されたアプリに関する日付を、前記特定のアプリが公開された日付、前記特定のアプリが発見された日付、前記特定のアプリがダウンロードされた日付、及び前記特定のアプリが取得された日付、並びに前記特定のアプリがその見出し内に含む日付からなる日付の群から取得することを更に含む、請求項１に記載の方法。
【請求項１１】
前記取得されたアプリのうちの前記第１の特定のアプリがトロイの木馬化されたアプリであるとの特定に応答して、
人間の分析者による手動での検査のために前記トロイの木馬化されたアプリにフラグを付ける工程、
悪意のあるコードの自動分析のために前記トロイの木馬化されたアプリをキューに入れる工程、
前記トロイの木馬化されたアプリに関する情報を集中型セキュリティコンポーネントに伝送する工程、及び
前記トロイの木馬化されたアプリをブラックリストに載せる工程
からなる工程の群のうちの少なくとも１つの更なる工程を行うことを更に含む、請求項１に記載の方法。
【請求項１２】
前記特定のモバイル環境用の前記複数のアプリはさらに、アンドロイド環境用の複数のアンドロイドアプリを含む、請求項１に記載の方法。
【請求項１３】
コンピュータメモリにロードされてプロセッサにより起動されるときに、
少なくとも１つの外部ソースから、特定のモバイル環境用の複数のアプリを取得する工程と、
前記取得されたアプリのうちの第１の特定のアプリの、コードに関するデータとデジタル署名者と日付とを、前記取得された複数のアプリのうちの第２の特定のアプリの、コードに関するデータとデジタル署名者と比較する工程と、
前記比較に基づいて、前記取得されたアプリのうちの前記第１の特定のアプリが、１）前記取得されたアプリのうちの第２の特定のアプリに含まれるコードの少なくとも所定の閾値、２）前記取得されたアプリのうちの前記第２の特定のアプリに存在しない更なるコード、３）前記取得されたアプリのうちの前記第２の特定のアプリとは異なる署名者、および４）前記取得されたアプリのうちの前記第１の特定のアプリの前記日付であって前記取得されたアプリのうちの前記第２の特定のアプリの日付以降の日付、を含むことを判定する工程と、
前記判定に応答して、前記取得されたアプリのうちの前記第１の特定のアプリを、トロイの木馬化されたアプリであると特定する工程と、
を実行するプログラムコードを格納する少なくとも１つの非一時コンピュータ読み取り可能な媒体。
【請求項１４】
モバイル環境用のトロイの木馬化されたアプリを特定するコンピュータシステムであって、
コンピュータメモリと、
プロセッサと、
少なくとも１つの外部ソースから特定のモバイル環境用の複数のアプリを取得する、前記コンピュータメモリに存在するアプリ取得モジュールと、
比較モジュールであって、
前記取得されたアプリのうちの第１の特定のアプリの、コードに関するデータとデジタル署名者と日付とを、前記取得された複数のアプリのうちの第２の特定のアプリの、コードに関するデータとデジタル署名者と比較し、
前記比較に基づいて、前記取得されたアプリのうちの前記第１の特定のアプリが、１）前記取得されたアプリのうちの第２の特定のアプリに含まれるコードの少なくとも所定の閾値、２）前記取得されたアプリのうちの前記第２の特定のアプリに存在しない更なるコード、３）前記取得されたアプリのうちの前記第２の特定のアプリとは異なる署名者、および４）前記取得されたアプリのうちの前記第１の特定のアプリの前記日付であって前記取得されたアプリのうちの前記第２の特定のアプリの日付以降の日付、を含むことを判定する、
前記コンピュータメモリに存在する比較モジュールと、
前記判定に応答して、前記取得されたアプリのうちの前記第１の特定のアプリをトロイの木馬化されたアプリであると特定するように構成される、トロイの木馬化されたアプリを特定するモジュールであって前記コンピュータメモリに存在するモジュールと、
を有するコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、コンピュータのセキュリティに関し、より具体的には、モバイル環境用のトロイの木馬化されたアプリケーションの特定に関する。
【背景技術】
【０００２】
スマートフォン及びタブレットコンピュータ等のモバイルコンピューティングデバイスの使用が日増しに広まっている。Ａｎｄｒｏｉｄは、次第に優勢な市場シェアを獲得しつつある、そのようなモバイルデバイス用のオープンソースのＬｉｎｕｘ（登録商標）ベースのオペレーティングシステムである。多くの開発者が、Ａｎｄｒｏｉｄデバイス上で起動するアプリケーション（「アプリ」）を作成している。これらのアプリの多くは、Ｇｏｏｇｌｅによって運営されているオンラインＡｎｄｒｏｉｄマーケットを介して購入可能であるか、又は無料で入手可能であるかのいずれかである。Ａｎｄｒｏｉｄアプリを他のオンラインストア及び更なる第三者のサイトからダウンロードすることもできる。Ａｎｄｒｏｉｄ環境がオープンであるという性質のため、誰でもＡｎｄｒｏｉｄアプリを作成及び分配することができる。
【０００３】
それがオープンであるため、Ａｎｄｒｏｉｄプラットホームは、トロイの木馬と呼ばれる攻撃を受けやすい。この攻撃を実装するために、悪意のある者は、オンラインストア又は他のソースからダウンロードした正当なアプリから始める。攻撃者は、アプリのデジタル署名を奪い、更なる（悪意のある）コードをそのアプリに追加し、そのアプリを匿名のデジタル証明書で再署名し、既存のチャネルのうちの１つを介してこの悪意のあるアプリを何も知らないユーザに再分配する。これは、アプリのトロイの木馬化として知られている。事実上、攻撃者は、Ａｎｄｒｏｉｄ開発及び分配環境がオープンであることを利用して、悪意のあるコードを既存の正当なアプリに忍ばせている。正当なアプリをダウンロードして起動させようとするユーザは、だまされてトロイの木馬化されたバージョンをダウンロードさせられる。トロイの木馬化されたアプリがユーザのＡｎｄｒｏｉｄデバイス上で起動すると、攻撃者が追加した新たなコードは、連絡先情報の盗み取り、データ入力のロギング、虚偽通信の送信等の悪意のある機能を実行し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この問題に対処することが望ましい。
【課題を解決するための手段】
【０００５】
トロイの木馬化されたアプリ管理システムは、トロイの木馬化されたＡｎｄｒｏｉｄアプリ等の、モバイル環境用のトロイの木馬化されたアプリを特定する。特定のモバイル環境用の複数のアプリは、１つ以上のアプリストア及び／又は他の第三者ソースから取得される。コード、デジタル署名者、及びいくつかの実施形態において、日付（例えば、公開日）が、取得されたアプリから抽出され、効率的に記憶される。例えば、このデータは、取得されたアプリのうちの１つずつと関連付けられたアレイの別個の要素が存在するように、アプリを表すデータ構造のアレイに記憶され得る。各アプリからのコードの抽出は、アプリにおける全てのクラスの全ての方法からの生のバイトコードの抽出、各クラスの定義された方法名に加えて、アプリに存在するクラス名の抽出、アプリの各クラスにおける各方法のハッシュの抽出、アプリの可能な実行パスを記載するフローグラフの抽出等の異なる実施形態において異なる形態を採り得る。
【０００６】
取得されたアプリのうちのそれぞれの所与の特定の１つに関して、特定の取得されたアプリのコードは、複数のアプリのうちの他の取得されたアプリのコードと比較され、特定の取得されたアプリが、１）他の取得されたアプリのうちの１つと共通のコードの少なくとも１つの所定の閾値を含むか、かつ２）それに含まれない更なるコードを含むかどうかを判定する。一実施形態において、このプロセスは、特定の取得されたアプリのコードを他の取得されたアプリのそれぞれのコードと比較することを含む。別の実施形態において、これは、特定の取得されたアプリのコードが他の取得されたアプリのサブセットのコードのみと比較されるように最適化される。この場合、そのサブセットは、特定の取得されたアプリと共通の少なくともいくつかのコードを有する取得されたアプリのみで構成される。
【０００７】
１）特定の取得されたアプリが取得されたアプリのうちの別の１つと共通のコードの少なくとも１つの所定の閾値を含むこと、及び２）特定の取得されたアプリが他の取得されたアプリに含まれない更なるコードを含むという判定に応答して、特定のアプリのデジタル署名者は、他のアプリのデジタル署名者と比較される。一実施形態において、特定のアプリの日付もまた、他のアプリの日付と比較される。特定のアプリは、１）特定のアプリが他のアプリと共通のコードの少なくとも１つの所定の閾値を含むこと、２）特定のアプリが他のアプリに含まれない更なるコードを含むこと、３）特定のアプリのデジタル署名者が他のアプリのデジタル署名者と同一ではないこと、及び（任意に）４）特定のアプリの日付が他のアプリの日付以降であるという判定に応答して、トロイの木馬化されたアプリであると特定される。
【０００８】
トロイの木馬化されたアプリの特定に応答して、人間の分析者による手動での検査のためにトロイの木馬化されたアプリにフラグを付ける工程、悪意のあるコードの自動分析のためにトロイの木馬化されたアプリをキューに入れる工程、トロイの木馬化されたアプリに関する情報を集中型セキュリティコンポーネントに伝送する工程、トロイの木馬化されたアプリをブラックリストに載せる工程等の更なる工程が行われ得る。
【０００９】
この課題を解決するための手段及び以下の発明を実施するための形態に記載される特徴及び利点は、包括的であるわけではなく、具体的には、多くの更なる特徴及び利点が、この図面、明細書、及び特許請求の範囲に照らして関連分野の技術者に明らかになる。更に、本明細書で使用される言語は、主に、可読性及び説明目的のために選択されており、本発明の主題を線引き又は制限して、そのような本発明の主題の決定に必要とされる特許請求の範囲に訴えるために選択されたものではないことに留意されたい。
【図面の簡単な説明】
【００１０】
【図１】いくつかの実施形態に従う、トロイの木馬化されたアプリ管理システムが実装され得る例示的なネットワークアーキテクチャのブロック図である。
【図２】いくつかの実施形態に従う、トロイの木馬化されたアプリ管理システムの実装に好適なコンピュータシステムのブロック図である。
【図３】いくつかの実施形態に従う、トロイの木馬化されたアプリ管理システムの動作のブロック図である。
【図４】いくつかの実施形態に従う、トロイの木馬化されたアプリ管理システムの動作の流れ図である。
【００１１】
これらの図面は、図解のみを目的として様々な実施形態を示す。当業者であれば、本明細書に記載の原理から逸脱することなく、本明細書に図示される構造及び方法の代替の実施形態を用いることができることを以下の考察から容易に理解する。
【発明を実施するための形態】
【００１２】
図１は、トロイの木馬化されたアプリ管理システム１０１が実装され得る例示的なネットワークアーキテクチャ１００を図示するブロック図である。図示されるネットワークアーキテクチャ１００は、複数のクライアント１０３Ａ、１０３Ｂ、及び１０３Ｎ、並びに複数のサーバ１０５Ａ及び１０５Ｎを備える。図１において、トロイの木馬化されたアプリ管理システム１０１は、サーバ１０５Ａ上に存在するように図示されている。これは一例にすぎず、様々な実施形態において、このシステム１０１の様々な機能が、サーバ１０５、クライアント１０３上でインスタンス化され得るか、又は複数のクライアント１０３間及び／若しくはサーバ１０５間に分散され得ることを理解されたい。
【００１３】
クライアント１０３及びサーバ１０５は、図２に図示され、かつ以下に記載されるコンピュータシステム等のコンピュータシステム２１０を用いて実装され得る。クライアント１０３及びサーバ１０５は、例えば、図２とともに以下に記載されるネットワークインターフェース２４８又はモデム２４７を介して、ネットワーク１０７に通信可能に連結される。クライアント１０３は、例えば、ウェブブラウザ又は他のクライアントソフトウェア（図示せず）を用いて、サーバ１０５上のアプリケーション及び／又はデータにアクセスすることができる。
【００１４】
図１が一例として３つのクライアント及び２つのサーバを図示しているが、実際には、より多くの（又はより少ない）クライアント１０３及び／又はサーバ１０５が配備されてもよい。一実施形態において、ネットワーク１０７は、インターネットの形態である。他のネットワーク１０７又はネットワークベースの環境を他の実施形態で使用してもよい。
【００１５】
図２は、トロイの木馬化されたアプリ管理システム１０１の実装に好適なコンピュータシステム２１０のブロック図である。クライアント１０３及びサーバ１０５は両方ともに、そのようなコンピュータシステム２１０の形態で実装され得る。図示されるように、コンピュータシステム２１０の１つのコンポーネントは、バス２１２である。バス２１２は、少なくとも１つのプロセッサ２１４、システムメモリ２１７（例えば、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ）、入出力（Ｉ／Ｏ）コントローラ２１８、スピーカシステム２２０等の外部音声デバイスに通信可能に連結される音声出力インターフェース２２２、ディスプレイ画面２２４等の外部ビデオ出力デバイスに通信可能に連結されるディスプレイアダプタ２２６、１つ以上のインターフェース、例えば、シリアルポート２３０、ユニバーサルシリアルバス（ＵＳＢ）レセプタクル２３０、パラレルポート（図示せず）等、キーボード２３２に通信可能に連結されるキーボードコントローラ２３３、少なくとも１つのハードディスク２４４（又は磁気媒体の他の形態（複数を含む））に通信可能に連結される記憶装置インターフェース２３４、フロッピーディスク２３８（「フロッピー」は登録商標、以下同じ）を受容するように構成されたフロッピーディスクドライブ２３７、ファイバチャネル（ＦＣ）ネットワーク２９０と接続するように構成されたホストバスアダプタ（ＨＢＡ）インターフェースカード２３５Ａ、ＳＣＳＩバス２３９に接続するように構成されたＨＢＡインターフェースカード２３５Ｂ、光ディスク２４２を受容するように構成された光ディスクドライブ２４０、例えばＵＳＢレセプタクル２２８を介してバス２１２に連結されるマウス２４６（又は他のポインティングデバイス）、例えば、シリアルポート２３０を介してバス２１２に連結されるモデム２４７、及び例えば、バス２１２に直接連結されるネットワークインターフェース２４８等のコンピュータシステム２１０の他のコンポーネントを通信可能に連結する。
【００１６】
他のコンポーネント（図示せず）が、同様に接続され得る（例えば、文書スキャナ、デジタルカメラ、プリンタ等）。逆に、図２に図示される全てのコンポーネントが存在する必要はない。これらのコンポーネントは、図２に示される手法とは異なる手法で相互接続されてもよい。
【００１７】
バス２１２は、プロセッサ２１４とシステムメモリ２１７との間のデータ通信を可能にし、上述のように、ＲＯＭ及び／又はフラッシュメモリ、並びにＲＡＭを含み得る。ＲＡＭは、典型的には、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリである。ＲＯＭ及び／又はフラッシュメモリは、数あるコードの中でも特に、ある基本的なハードウェア動作を制御する基本入出力システム（ＢＩＯＳ）を含み得る。アプリケーションプログラムは、ローカルコンピュータ可読媒体（例えば、ハードディスク２４４、光ディスク２４２）に記憶され、システムメモリ２１７にロードされ、プロセッサ２１４によって実行され得る。アプリケーションプログラムは、例えば、ネットワークインターフェース２４８又はモデム２４７を介して、遠隔位置からシステムメモリ２１７（すなわち、遠隔設置されたコンピュータシステム２１０）にもロードされ得る。図２において、トロイの木馬化されたアプリ管理システム１０１は、システムメモリ２１７内に存在するように図示されている。トロイの木馬化されたアプリ管理システム１０１の仕組みは、図３とともに以下でより詳細に説明される。
【００１８】
記憶装置インターフェース２３４は、１つ以上のハードディスク２４４（及び／又は他の標準の記憶媒体）に連結される。ハードディスク（複数を含む）２４４は、コンピュータシステム２１０の一部であり得るか、又は物理的に別個のものであり、他のインターフェースシステムを介してアクセスされ得る。
【００１９】
ネットワークインターフェース２４８及び／又はモデム２４７は、インターネット等のネットワーク１０７に直接的又は間接的に通信可能に連結され得る。そのような連結は、有線又は無線であり得る。
【００２０】
図３は、いくつかの実施形態に従って、トロイの木馬化されたアプリ管理システム１０１の動作を図示する。上に記載されるように、トロイの木馬化されたアプリ管理システム１０１の機能は、クライアント１０３、サーバ１０５上に存在し得るか、又はトロイの木馬化されたアプリ管理システム１０１の機能がネットワーク１０７上でサービスとして提供されるクラウドベースのコンピューティング環境内を含む、複数のコンピュータシステム２１０間に分配され得る。トロイの木馬化されたアプリ管理システム１０１が単一のエンティティとして図３で図示されているが、図示されるトロイの木馬化されたアプリ管理システム１０１は、所望通りに単一又は複数のモジュールとしてインスタンス化され得る機能の一群を表すことを理解されたい（トロイの木馬化されたアプリ管理システム１０１の特定の複数のモジュールのインスタンス化が、図３に図示される）。トロイの木馬化されたアプリ管理システム１０１のモジュールは、コンピュータシステム２１０のプロセッサ２１４がモジュールを処理し、コンピュータシステム２１０が関連付けられた機能を実行するように、（例えば、オブジェクトコード又は実行可能な画像として）任意のコンピュータシステム２１０のシステムメモリ２１７（例えば、ＲＡＭ、ＲＯＭ、フラッシュメモリ）内にインスタンス化され得ることを理解されたい。本明細書で使用されるとき、「コンピュータシステム」、「コンピュータ」、「クライアント」、「クライアントコンピュータ」、「サーバ」、「サーバコンピュータ」、及び「コンピューティングデバイス」という用語は、記載される機能を実行するように構成及び／又はプログラミングされた１つ以上のコンピュータを意味する。更に、トロイの木馬化されたアプリ管理システム１０１の機能を実装するためのプログラムコードは、コンピュータ可読記憶媒体に記憶され得る。磁気又は光記憶媒体等の有形のコンピュータ可読記憶媒体の任意の形態がこの文脈において使用され得る。本明細書で使用されるとき、「コンピュータ可読記憶媒体」という用語は、内在する物理的な媒体とは別の電気信号を意味しない。
【００２１】
図３に図示されるように、トロイの木馬化されたアプリ管理システム１０１は、以下に詳細に説明されるように、所与のモバイルデバイス環境の入手可能なアプリ３０１を取得し、かつ他のアプリと比較して特定の特徴を有するアプリを特定することによってトロイの木馬化されたアプリ３０３を検出する。一実施形態において、モバイルデバイス環境は、Ａｎｄｒｏｉｄ環境であり、トロイの木馬化されたアプリ管理システム１０１は、Ａｎｄｒｏｉｄアプリ３０１を１つ以上のアプリストア及び／又は他の第三者ソース３０５から取得する。トロイの木馬化されたアプリ管理システム１０１は、Ａｎｄｒｏｉｄ環境内での動作に限定されず、他の実施形態では、他のモバイルデバイス環境のアプリ３０１を取得及び処理し得ることを理解されたい。
【００２２】
トロイの木馬化されたアプリ管理システム１０１のアプリ取得モジュール３１３は、所与のモバイルデバイス環境用の複数のアプリ３０１、例えば、Ａｎｄｒｏｉｄアプリケーションパッケージ（「ＡＰＫ」）ファイルの形態（Ａｎｄｒｏｉｄアプリ３０１を分配及びインストールするために使用されるファイル形式）であるＡｎｄｒｏｉｄアプリ３０１を取得する。アプリ取得モジュール３１３は、アプリ３０１のダウンロードを可能にするアプリストア又は他の第三者ウェブサイト等の１つ以上の外部ソース３０５からアプリ３０１を取得する。一実施形態において、トロイの木馬化されたアプリ管理システム１０１が起動されると、アプリ取得モジュール３１３は、１つ以上の外部ソース３０５からダウンロードすることができる全てのアプリ３０１を取得する。一実施形態において、アプリ取得モジュール３１３は、ユーザデバイス（例えば、スマートフォン、タブレット）上で起動し、新しいアプリ３０１及び／又は未知のアプリ３０１を特定及び取得する。ユーザデバイスベースのアプリ取得モジュール３１３は、取得されたアプリ３０１を中央に位置するトロイの木馬化されたアプリ管理システム１０１（例えば、サーバ１０５上で起動する）に提出する。これは、トロイの木馬化されたアプリ管理システム１０１が、インターネットをクロールする必要もなく、多くの異なるユーザデバイス（図示せず）から提出された新たなアプリ３０１を発見することを可能にする。
【００２３】
トロイの木馬化されたアプリ管理システム１０１の抽出モジュール３０７は、各取得されたアプリ３０１から分析されるコード３０９を抽出する。この文脈において、抽出コード３０９は、方法名又はクラス名等のコード３０９に関するデータを抽出すること、クラス及び／若しくは方法のハッシュをコンピューティングすること、並びにこれらのハッシュを使用すること、又は実際の実行可能なコード３０９自体を抽出することを含み得る。本明細書で使用されるとき、コード３０９の分析、したがって、抽出されるコード３０９は、異なる実施形態において異なる形態を採り得る。一実施形態において、抽出モジュール３０７は、アプリ３０１によって使用される各方法の完全修飾名（すなわち、「ｆｌｏａｔ  ｃｌａｓｓａ：ｍｅｔｈｏｄａ（ｉｎｔ  ｂａｒ，ｆｌｏａｔ［］ａｃｋ）」等のこの方法の完全プロトタイプ）を抽出する。別の実施形態において、抽出モジュール３０７は、アプリ３０１におけるクラス名を抽出する。他の実施形態では、抽出モジュール３０７は、ハッシュ等の名称以外の識別子を用いて方法（又はクラス）を特定する。別の実施形態において、抽出モジュールは、機械／バイトコードの全ブロックを抽出し、それを正規化する。抽出されたバイトコードの正規化は、例えば、実行可能ファイルによって異なり得る指数の正規化を含み得るが、依然として全体の機械コード（例えば、ｄａｌｖｉｋ／ｊａｖａバイトコード）の意味を保持する。更に別の実施形態において、抽出モジュール３０７は、アプリ３０１におけるコード３０９の可能な実行パスのフローグラフを作成する。
【００２４】
抽出モジュール３０７は、各アプリ３０１の署名者３１１の身元も抽出する。Ａｎｄｒｏｉｄアプリ３０１（及び多くの他のモバイル環境用のアプリ３０１）は、分配者（例えば、開発者）によって署名される。例えば、Ａｎｄｒｏｉｄシステムは、全てのアプリ３０１が証明書にデジタル署名されることを必要とし、その秘密鍵は、アプリ３０１の開発者によって保持される。Ａｎｄｒｏｉｄシステムは、適切に署名されていないアプリ３０１をインストール又は起動しない。しかしながら、Ａｎｄｒｏｉｄアプリ３０１に署名するために使用される証明書は、認証局による署名を必要としない。実際、Ａｎｄｒｏｉｄアプリ３０１が分配者によって自ら署名される証明書で署名されることは典型的である。
【００２５】
一実施形態において、抽出モジュール３０７は、各アプリ３０１（例えば、各ＡＰＫファイル）が公開された（又は最初に発見された、取得された、ダウンロードされた等）日付３１５も取得する。日付情報は、例えば、アプリ３０１の見出しにおけるタイムスタンプから取得され得る。別の実施形態において、日付３１５は、抽出又は更に処理されない。
【００２６】
以下でより詳細に説明されるように、異なるアプリ３０１のコード３０９に関するデータ及び署名者３１１（並びに一実施形態において、日付３１５）は、トロイの木馬化されたアプリ３０３を特定するために比較される。この比較を容易にするために、トロイの木馬化されたアプリ管理システム１０１の抽出データ記憶モジュール３１７は、例えば、各エントリが特定のアプリ３０１の抽出されたデータを含むアレイ３２３に（又はデータベース、表、リスト等の別の形式で）抽出されたデータ（コード３０９、署名者３１１、及び任意に日付３１５）を記憶する。一実施形態において、抽出データ記憶モジュール３１７は、メンバとして１）方法、２）署名者、及び（任意に）３）日付を含むクラスのオブジェクトのアレイ３２３に抽出されたデータを記憶する。例えば、アプリのクラスがＡＰＫＩｎｆｏと呼ばれる実施形態において、アプリ３０１からの方法全ての一組の完全修飾名は、ＡＰＫＩｎｆｏ．ｍｅｔｈｏｄｓに記憶される（一組の方法名は、例えば、｛ｖｏｉｄ  ｃｌａｓｓａ：ｍｅｔｈｏｄａ（ｉｎｔ  ａ），ｉｎｔ  ｃｌａｓｓａ：ｍｅｔｈｏｄｂ（ｄｏｕｂｌｅ  ｂ），ｖｏｉｄ  ｃｌａｓｓｂ：ｍｅｔｈｏｄｃ（ｖｏｉｄ），ｖｏｉｄ  ｃｌａｓｓｂ：ｍｅｔｈｏｄｄ（ｃｈａｒ  ｇ）｝を含み得る）。アプリ３０１の署名者３１１は、ＡＰＫＩｎｆｏ．ｓｉｇｎｅｒに記憶され、公開日３１５（又は発見日等）は、ＡＰＫＩｎｆｏ．ｄａｔｅに記憶される。
【００２７】
抽出されたデータの記憶装置の特定の実装例が可変設計パラメータを含むことを理解されたい。例えば、アプリ３０１に関する情報を表すクラス（又は他のデータ構造）の形式、並びにそのインスタンスを記憶するために使用されるアレイ３２３（又は他のデータ構造）の形式は、実施形態によって異なり得る。更に、上述のように、各アプリ３０１から抽出された特定のデータも実施形態によって異なり得る。例えば、いくつかの実施形態において、クラス名、フローグラフ等の方法名以外のコード３０９が抽出される。
【００２８】
データが取得されたアプリ３０１から抽出され、記憶された時点で、その抽出されたデータを他の取得されたアプリ３０１のデータと（又は以下に説明されるように、いくつかの最適化された実施形態において、他の取得されたアプリ３０１のサブセットと）比較することによって、取得されたアプリ３０１のうちの特定の１つがトロイの木馬化されたアプリ３０３であるかどうかが判定され得る。より具体的には、トロイの木馬化されたアプリ管理システム１０１の比較モジュール３１９は、取得されたアプリ３０１のうちの特定の１つから抽出されたコード３０９に関するデータ（例えば、方法名、ハッシュ、生のバイトコード等）を他の取得されたアプリ３０１のそれぞれのコード３０９に関するデータと比較する。一実施形態において、これらの比較を行うことによって、比較モジュール３１９は、トロイの木馬について分析される取得されたアプリ３０１のうちの特定の１つが他の取得されたアプリ３０１のうちのいずれか１つと同一のコード３０９に加えて、いくつかの更なるコード３０９を有するかどうかを判定する。例えば、コード３０９に関する抽出されたデータが方法名の形態である実施形態において、比較モジュール３１９は、アプリ３０１のうちの特定の１つがアプリ３０１のうちの別の１つと同一の方法の全てに加えて１つ以上の更なる方法を有するかどうかを判定する。方法名ではなくクラス名が抽出される実施形態において、特定のアプリ３０１が別のアプリ３０１と同一のクラスに加えて、１つ以上の更なるクラスを有するかどうかが判定される。既存のアプリ３０１をトロイの木馬化するために追加されたコード３０９が新たな別個のクラス又は方法の形態である必要はないが、元の正当なアプリ３０１で見つけられる既存の方法に添付又は挿入され得る。このようにトロイの木馬化されたアプリ３０１を検出するために、比較モジュール３１９は、特定のアプリ３０１が別のアプリ３０１と同一のクラス及び方法を含むが、いくつかの更なるコード３０９が特定のアプリ３０１の方法のうちの１つ以上に存在するかどうかを判定し得る。このシナリオは、トロイの木馬の指標でもある。トロイの木馬化されたアプリ３０３は、悪意のあるコードを既存の正当なアプリ３０１に追加することによって作成されるため、別のアプリ３０１と同一のコード３０９に加えて、いくつかの更なるコード３０９を有するアプリ３０１は、これが異なる著作者／署名者によって製作される場合、疑わしいと見なされる。
【００２９】
いくつかの実施形態において、他のアプリ３０１と比較される特定のアプリ３０１は、疑わしいとしてフラグを付けられるアプリ３０１のうちの別の１つと同一のコード３０９全てを有する必要はないが、その代わりに、共通のコード３０９の少なくとも１つの所定の閾値を有する必要がある。所定の閾値は、実質的過半数（例えば、８５％、９０％、９５％等）を含む所与の百分率の形態であり得、例えば、フローグラフ等によって判定される、方法又はクラスの重要なサブセット、機能の重要な中核であり得る。疑わしいとしてフラグを付けられたアプリ３０１における更なるコード３０９は、１つ以上の更なる方法又はクラス、１つ以上の修正された方法又はクラス、更なる機能又は修正された機能の所定の閾値等を含み得る。多くのアプリ３０１が一般に利用可能な第三者ライブラリ（例えば、広告ライブラリ、ユーザインターフェースライブラリ、通信ライブラリ等）を用いて基本的な機能を実装するため、いくつかの実施形態において、そのようなライブラリは、特定のアプリ３０１が別のアプリ３０１と共通のコード３０９の所定の閾値を有するかどうかを判定するときに考慮から除外される。
【００３０】
トロイの木馬について分析される特定のアプリ３０１のコード３０９に関するデータとアプリ３０１のうちの別の１つのコード３０９に関するデータの比較が、特定のアプリ３０１が疑わしいことを示す場合、比較モジュール３１９は、これら２つのアプリ３０１の署名者３１１も比較し、いくつかの実施形態において、日付３１５も比較する。トロイの木馬化されたアプリ３０３は、正当なアプリ３０１を修正し、その署名を奪い、かつそれを再署名することによって作成されるため、トロイの木馬化されたアプリ３０３は、それが基づく正当なアプリ３０１とは異なる署名者３１１を有することが予想され得る。更に、トロイの木馬化されたアプリ３０３が元となる以前から存在する正当なアプリ３０１に基づくため、トロイの木馬化されたアプリ３０３は、典型的には、それ以降の日付３１５を有する。したがって、アプリ３０１がコード３０９比較に基づいて疑わしいと見なされる場合、これらの更なる比較のうちの１つ又は両方が行われる。これが、問題のこれら２つのアプリ３０１が異なる署名者３１１を有することを示す（かつ一実施形態において、疑わしいアプリ３０１が他のアプリ３０１以降の日付３１５を有することも示す）場合、トロイの木馬化されたアプリ管理システム１０１のトロイの木馬化されたアプリを特定するモジュール３２１は、トロイの木馬化されたアプリ３０３として分析される特定のアプリ３０１を特定する。したがって、別のアプリ３０１と同一のコード３０９（又は共通のコード３０９の少なくとも重要な部分）に加えていくつかの更なるコード３０９を有し、かつ異なる署名者３１１を有する（一実施形態において、それ以降の公開日３１５も有する）アプリ３０１は、トロイの木馬化されたアプリ３０３であると判定される。このように各特定の取得されたアプリ３０１を他の取得されたアプリ３０１と比較することによって、トロイの木馬化されたアプリ３０３が特定される。
【００３１】
トロイの木馬化されたアプリ３０３が特定される場合、それに応答して所望通りに様々な措置が講じられ得る。例えば、トロイの木馬化されたアプリであるとの判決を受けたアプリ３０３は、人間の分析者による手動での検査のためにフラグを付けられ、悪意のあるコードの自動分析のためにキューに入れられ、集中型セキュリティサーバ（図示せず）に報告され、ブラックリストに載せられ得る。言い換えると、トロイの木馬化されたアプリ管理システム１０１は、トロイの木馬を示すある特性を有するアプリ３０１を自動的に特定するフィルタとしての働きをし得る。トロイの木馬化されたアプリ管理システム１０１によってトロイの木馬化されたアプリであるとの判決を受けたアプリ３０１は、その後、例えば、それらを更なる精査及び分析に供すること、並びに／又はユーザをそれらから保護するための措置を講じることによって、所望通りに処理され得る。
【００３２】
トロイの木馬化されたアプリ管理システム１０１の動作を説明するために、いくつかの特定の例がこれからより詳細に説明される。これらの例において説明される実装例の詳細が例にすぎず、他の実施形態において異なる設計が選択されてもよいことを理解されたい。特定の一実施形態において、トロイの木馬化されたＡｎｄｒｏｉｄアプリ３０３は、以下のように特定される。
【００３３】
Ａｎｄｒｏｉｄアプリ３０１（ＡＰＫファイルとして）は、様々な既知のアプリストアウェブサイト３０５からダウンロードされる。クラスＡＰＫＩｎｓｔａｎｃｅは、ダウンロードされたＡＰＫファイルの特定のＡＰＫファイルを表すために使用され、メンバとして１）ＡＰＫＩｎｓｔａｎｃｅ．ｍｅｔｈｏｄｓ、２）ＡＰＫＩｎｓｔａｎｃｅ．ｓｉｇｎｅｒ、及び３）ＡＰＫＩｎｓｔａｎｃｅ．ｄａｔｅを有し、方法は、ＡＰＫファイルにおける一組の全ての方法名であり、署名者は、ＡＰＫファイルのデジタル署名者３１１であり、日付は、ＡＰＫファイルの公開日３１５である。ｎが収集物中のＡＰＫファイルの数である場合、ＡＰＫＩｎｓｔａｎｃｅ  ｏｂｊｅｃｔｓ  ＡＰＫＩｎｆｏ［ｎ］のアレイ３２３が割り当てられる。
【００３４】
ｎ  ＡＰＫファイル数＝１．．ｎのそれぞれに関して、以下の情報が抽出され、ＡＰＫＩｎｆｏ［ｃｏｕｎｔ］に記憶される：１）ＡＰＫファイルからの全ての方法の一組の完全修飾名がＡＰＫＩｎｆｏ［ｃｏｕｎｔ］．ｍｅｔｈｏｄｓに記憶され、２）ＡＰＫファイルのデジタル署名者３１１がＡＰＫＩｎｆｏ［ｃｏｕｎｔ］．ｓｉｇｎｅｒに記憶され、３）各ＡＰＫファイルの公開日３１５がＡＰＫＩｎｆｏ［ｃｏｕｎｔ］．ｄａｔｅに記憶される。
【００３５】
その後、収集物中の各ＡＰＫファイルを調査して、以下のようにこのファイルを他のＡＰＫファイルと比較することによってこのファイルがトロイの木馬化されたかどうかを判定する。ｉが調査されるＡＰＫファイルと等しく、かつ数がＡＰＫＩｎｆｏ  １．．．ｎで表されるｎ  ＡＰＫファイルのそれぞれと等しい場合、数１．．．ｎに関して、数がｉと等しくない場合、ＡＰＫＩｎｆｏ［ｉ］は、ＡＰＫＩｎｆｏ［ｃｏｕｎｔ］と比較される。ＡＰＫＩｎｆｏ［ｉ］．ｍｅｔｈｏｄｓがＡＰＫＩｎｆｏ［ｃｏｕｎｔ］．ｍｅｔｈｏｄｓでも見つけられるあらゆる完全修飾方法を含み、かつＡＰＫＩｎｆｏ［ｉ］．ｍｅｔｈｏｄｓがＡＰＫＩｎｆｏ［ｃｏｕｎｔ］．ｍｅｔｈｏｄｓでは見つけられない少なくとも１つの更なる方法を含み、かつＡＰＫＩｎｆｏ［ｉ］．ｓｉｇｎｅｒがＡＰＫＩｎｆｏ［ｃｏｕｎｔ］．ｓｉｇｎｅｒとは異なるデジタル署名者３１１を示し、かつ（任意に）ＡＰＫＩｎｆｏ［ｉ］．ｄａｔｅがＡＰＫＩｎｆｏ［ｃｏｕｎｔ］．ｄａｔｅ以降である場合、ＡＰＫＩｎｆｏ［ｉ］は、トロイの木馬化されたバージョンのＡＰＫＩｎｆｏ［ｃｏｕｎｔ］であると判定される。
【００３６】
上述の実施形態を修正して、方法レベルではなくクラスレベルで動作させることができる。クラスベースのバージョンの実施形態において、調査されるＡＰＫファイルは、他のＡＰＫファイルの（方法ではなく）あらゆるクラスに加えて、少なくとも１つの更なるクラスを含むかが確認される。方法又はクラスの調査にかかわらず、これらの実施形態は、元のＡＰＫファイルからのコード３０９のスーパーセットを含み（すなわち、全ての同一のコード３０９に加えて、いくつかの更なるコード３０９を有することによって）、かつ元のＡＰＫファイルとは異なる署名者３１１によって署名される新たなＡＰＫファイルを特定する。
【００３７】
上述の実施形態は、コード分析に関して、方法又はクラスに基づくかにかかわらず、計算量Ｏ（Ｎ２）であり、式中、Ｎは、分析されるＡＰＫファイルの数である。最適化を行って、所与のＡＰＫファイルが比較される一組のＡＰＫファイルを減少させることによって、時間計算量を（例えば、Ｏ（Ｎ）にまで）低減させることができる。これは、例えば、ＡＰＫファイルを、収集物中の全ての他のＡＰＫファイルではなく、共通のコード３０９（例えば、方法）を有する他のＡＰＫファイルのみと比較することによって行われ得る。
【００３８】
例えば、最適化された一実施形態において、アレイＡＰＫＩｎｆｏ［１．．ｎ］は、最も少ない方法から最も多い方法までの各要素ＡＰＫＩｎｆｏ［ｃｏｕｎｔ］．ｍｅｔｈｏｄｓにおける方法の数によって（又はクラスの数によって、又はフローグラフ等によって示されるコード３０９の量によって）分類される。収集物中の任意のＡＰＫファイル中に存在する各方法を、その方法が存在する各ＡＰＫファイルのアレイ３２３指数にマッピングするマップ（例えば、ハッシュマップ）が作成される。上述の事前に構築されたマップデータ構造を使用して、表１の偽コードによって実装されるアルゴリズムを用いて、トロイの木馬化されたＡＰＫを効率的に特定することができる。表１の偽コードは、時間計算量を低減させるために最適化される１つの可能な実施形態の特定の例を示すことを理解されたい。
【００３９】
【表１】
0005802848.tif 000002
【００４０】
上述の実施形態への変更が可能であることを理解されたい。概して、このプロセスは、必要な量の共通のコード３０９を有する比較されたアプリ３０１に基づいて、特定のアプリ３０１を収集物中の他のアプリ３０１のサブセットのみと比較することによって最適化され、トロイの木馬化されたアプリ３０３を検出する可能性の低いアプリ３０１間の比較を避けることができる。
【００４１】
図４は、いくつかの実施形態に従う、トロイの木馬化されたアプリ管理システム１０１の動作の工程を図示する。アプリ取得モジュール３１３は、特定のモバイル環境用の複数のアプリ３０１を１つ以上の外部ソース３０５から取得する（４０１）。抽出モジュール３０７は、１）コード３０９に関するデータ、２）デジタル署名者３１１の身元、及び任意に３）公開日３１５を各取得されたアプリ３０１から抽出する（４０３）。抽出データ記憶モジュール３１７は、抽出されたデータ（コード３０９、デジタル署名者３１１、及び任意に日付３１５）を記憶する（４０５）。取得されたアプリ３０１のうちの各所与の特定の１つに関して、比較モジュール３１９は、特定のアプリ３０１のコード３０９に関するデータを他の取得されたアプリ３０１のコード３０９に関するデータと比較し（４０７）、特定のアプリ３０１が、１）他のアプリ３０１のうちの１つと共通のコード３０９の少なくとも１つの所定の閾値を含むか、かつ２）他のアプリ３０１に含まれない更なるコード３０９を含む（例えば、特定のアプリ３０１が、他のアプリ３０１のコード３０９のスーパーセットを有する）かどうかを判定する。このような状況に応答して、比較モジュール３１９は、特定のアプリ３０１のデジタル署名者３１１を他のアプリ３０１のデジタル署名者３１１と、かつ任意に特定のアプリ３０１の日付３１５を他のアプリ３０１の日付３１５と更に比較する（４０９）。トロイの木馬化されたアプリを特定するモジュール３２１は、１）他のアプリ３０１と共通のコード３０９の少なくとも１つの所定の閾値を含む特定のアプリ３０１、２）他のアプリ３０１に含まれない更なるコード３０９を含む特定のアプリ３０１、３）他のアプリ３０１のデジタル署名者３１１とは同一ではない特定のアプリ３０１のデジタル署名者３１１、及び（任意に）４）他のアプリ３０１の日付３１５以降の特定のアプリ３０１の日付３１５に応答して、特定のアプリ３０１をトロイの木馬化されたアプリ３０３であると特定する（４１１）。
【００４２】
当該技術分野に精通している者には明らかなように、本発明は、本発明の精神又は本質的特質から逸脱することなく、他の特定の形態で具現化され得る。同様に、部分、モジュール、エージェント、マネージャ、コンポーネント、機能、手順、動作、層、特徴、属性、方法論、データ構造、並びに他の態様の特定の命名及び区分は、義務的又は重要ではなく、本発明を実装する機構又はその特徴は、異なる名称、区分、及び／又は形式を有し得る。説明のための前述の記載は、特定の実施形態を参照して説明されている。しかしながら、上述の例示の考察は、包括的であること、又は開示される正確な形態に限定すること意図するものではない。上述の教示を考慮して、多くの修正及び変更が可能である。実施形態は、関連原理及びそれらの実践上の用途を最も良く説明するために選択かつ記載されており、したがって、企図される特定の用途に適し得る様々な修正の有無にかかわらず、他の当業者が様々な実施形態を最大限に利用することを可能にする。
【図１】
0005802848.tif 000003
【図２】
0005802848.tif 000004
【図３】
0005802848.tif 000005
【図４】
0005802848.tif 000006