(57)【要約】  アプリケーションがマルウェアかどうかを判定するコンピューティングデバイスのための装置および方法が開示されている。コンピューティングデバイスは、コンピューティングデバイス上のアプリケーションの挙動を記録してログを生成するクエリロガーと、クエリロガーからのログを分析して、アプリケーションの挙動を特徴付ける挙動ベクトルを生成する挙動分析エンジンと、アプリケーションについての挙動ベクトルを良性またはマルウェアとして分類する分類器とを含むことができる。
2015511047.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスであって、
前記コンピューティングデバイス上のアプリケーションの挙動を記録してログを生成するクエリロガーと、
前記クエリロガーからの前記ログを分析して、前記アプリケーションの前記挙動を特徴付ける挙動ベクトルを生成する挙動分析エンジンと、
前記アプリケーションについての前記挙動ベクトルを良性またはマルウェアとして分類する分類器と
を備える、コンピューティングデバイス。
【請求項２】
前記挙動ベクトルがマルウェアとして分類された場合、前記挙動ベクトルに関連付けられた前記アプリケーションが使用から削除または制限される、請求項1に記載のコンピューティングデバイス。
【請求項３】
前記挙動ベクトルが、前記ログの一組のクエリに基づいて生成される、請求項1に記載のコンピューティングデバイス。
【請求項４】
前記挙動ベクトルが、特定のアプリケーションについての前記ログのクエリの結果に基づく数値を含む、請求項3に記載のコンピューティングデバイス。
【請求項５】
前記一組のクエリが、存在クエリ、数量クエリ、順序クエリ、またはカテゴリクエリのうちの少なくとも1つを含む、請求項3に記載のコンピューティングデバイス。
【請求項６】
クエリが、実際の挙動または予想された挙動を含む、請求項5に記載のコンピューティングデバイス。
【請求項７】
前記挙動分析エンジンがデバイス独立のアクションを分析する、請求項1に記載のコンピューティングデバイス。
【請求項８】
前記挙動分析エンジンがデバイス依存のアクションを分析する、請求項1に記載のコンピューティングデバイス。
【請求項９】
デバイス依存のアクションが、アプリケーションインストール、デバイス情報、通信、またはユーザとのやりとりのうちの少なくとも1つを含む、請求項8に記載のコンピューティングデバイス。
【請求項１０】
前記分類器が機械学習分類器である、請求項1に記載のコンピューティングデバイス。
【請求項１１】
前記コンピューティングデバイスがモバイルデバイスである、請求項1に記載のコンピューティングデバイス。
【請求項１２】
コンピューティングデバイスでアプリケーションがマルウェアかどうかを判定する方法であって、
前記アプリケーションの挙動を記録してログを生成するステップと、
前記ログを分析して、前記アプリケーションの前記挙動を特徴付ける挙動ベクトルを生成するステップと、
前記アプリケーションについての前記挙動ベクトルを良性またはマルウェアとして分類するステップと
を含む、方法。
【請求項１３】
前記挙動ベクトルがマルウェアとして分類された場合、前記挙動ベクトルに関連付けられた前記アプリケーションが使用から削除または制限される、請求項12に記載の方法。
【請求項１４】
前記挙動ベクトルが、前記ログの一組のクエリに基づいて生成される、請求項12に記載の方法。
【請求項１５】
前記挙動ベクトルが、特定のアプリケーションについての前記ログのクエリの結果に基づく数値を含む、請求項14に記載の方法。
【請求項１６】
前記一組のクエリが、存在クエリ、数量クエリ、順序クエリ、またはカテゴリクエリのうちの少なくとも1つを含む、請求項14に記載の方法。
【請求項１７】
クエリが、実際の挙動または予想された挙動を含む、請求項16に記載の方法。
【請求項１８】
前記ログがデバイス独立のアクションについて分析される、請求項12に記載の方法。
【請求項１９】
前記ログがデバイス依存のアクションについて分析される、請求項12に記載の方法。
【請求項２０】
デバイス依存のアクションが、アプリケーションインストール、デバイス情報、通信、またはユーザとのやりとりのうちの少なくとも1つを含む、請求項19に記載の方法。
【請求項２１】
コンピューティングデバイスで実行されるコンピュータプログラム製品であって、
アプリケーションの挙動を記録してログを生成することと、
前記ログを分析して、前記アプリケーションの前記挙動を特徴付ける挙動ベクトルを生成することと、
前記アプリケーションについての前記挙動ベクトルを良性またはマルウェアとして分類することと
を行うためのコードを備えるコンピュータ可読媒体
を備える、コンピュータプログラム製品。
【請求項２２】
前記挙動ベクトルがマルウェアとして分類された場合、前記挙動ベクトルに関連付けられた前記アプリケーションが使用から削除または制限される、請求項21に記載のコンピュータプログラム製品。
【請求項２３】
前記ログの一組のクエリに基づいて前記挙動ベクトルを生成するためのコードをさらに備える、請求項21に記載のコンピュータプログラム製品。
【請求項２４】
前記一組のクエリが、存在クエリ、数量クエリ、順序クエリ、またはカテゴリクエリのうちの少なくとも1つを含む、請求項23に記載のコンピュータプログラム製品。
【請求項２５】
クエリが、実際の挙動または予想された挙動を含む、請求項24に記載のコンピュータプログラム製品。
【請求項２６】
デバイス独立のアクションについて前記ログを分析するためのコードをさらに備える、請求項21に記載のコンピュータプログラム製品。
【請求項２７】
デバイス依存のアクションについて前記ログを分析するためのコードをさらに備える、請求項21に記載のコンピュータプログラム製品。
【請求項２８】
デバイス依存のアクションが、アプリケーションインストール、デバイス情報、通信、またはユーザとのやりとりのうちの少なくとも1つを含む、請求項27に記載のコンピュータプログラム製品。
【請求項２９】
アプリケーションの挙動を記録してログを生成するための手段と、
前記ログを分析して、前記アプリケーションの前記挙動を特徴付ける挙動ベクトルを生成するための手段と、
前記アプリケーションについての前記挙動ベクトルを良性またはマルウェアとして分類するための手段と
を備える、コンピューティングデバイス。
【請求項３０】
前記挙動ベクトルがマルウェアとして分類された場合、前記挙動ベクトルに関連付けられた前記アプリケーションが使用から削除または制限される、請求項29に記載のコンピューティングデバイス。
【請求項３１】
前記挙動ベクトルが、前記ログの一組のクエリに基づいて生成される、請求項29に記載のコンピューティングデバイス。
【請求項３２】
前記一組のクエリが、存在クエリ、数量クエリ、順序クエリ、またはカテゴリクエリのうちの少なくとも1つを含む、請求項31に記載のコンピューティングデバイス。
【請求項３３】
クエリが、実際の挙動または予想された挙動を含む、請求項32に記載のコンピューティングデバイス。
【請求項３４】
前記ログがデバイス独立のアクションについて分析される、請求項29に記載のコンピューティングデバイス。
【請求項３５】
前記ログがデバイス依存のアクションについて分析される、請求項29に記載のコンピューティングデバイス。
【請求項３６】
デバイス依存のアクションが、アプリケーションインストール、デバイス情報、通信、またはユーザとのやりとりのうちの少なくとも1つを含む、請求項35に記載のコンピューティングデバイス。
【請求項３７】
複数のコンピューティングデバイスから複数の挙動ベクトルセットを受信する処理回路であって、各挙動ベクトルセットがアプリケーションの挙動を特徴付ける、処理回路と、
良性またはマルウェアとして受信された前記挙動ベクトルセットに基づいて、グローバル分類器を更新する挙動分析エンジンと
を備える、サーバ。
【請求項３８】
前記処理回路が、前記受信された挙動ベクトルセットと同時に、または後で、前記コンピューティングデバイスからログデータおよび他のデータをさらに受信する、請求項37に記載のサーバ。
【請求項３９】
前記処理回路が、前記複数のコンピューティングデバイスに更新情報を送信し、前記更新情報が、前記複数のコンピューティングデバイスの挙動分析エンジンを更新するために使用される、請求項37に記載のサーバ。
【請求項４０】
コンピューティングデバイスからの挙動ベクトルセットが、前記アプリケーションが前記コンピューティングデバイスでブロックされたことのインジケータをさらに備える、請求項37に記載のサーバ。
【請求項４１】
前記処理回路が、前記複数のコンピューティングデバイスに更新されたクエリをさらに送信する、請求項37に記載のサーバ。
【請求項４２】
複数のコンピューティングデバイスから複数の挙動ベクトルセットを受信するステップであって、各挙動ベクトルセットがアプリケーションの挙動を特徴付ける、ステップと、
コンピューティングデバイスから受信されたアプリケーションについての挙動ベクトルセットを良性またはマルウェアとして分類するステップと
を含む、サーバで実装される方法。
【請求項４３】
前記受信された挙動ベクトルセットと同時に、または後で、前記コンピューティングデバイスからログデータおよび他のデータを受信するステップをさらに含む、請求項42に記載の方法。
【請求項４４】
前記複数のコンピューティングデバイスに更新情報を送信するステップをさらに含み、前記更新情報が、前記複数のコンピューティングデバイスの挙動分析エンジンを更新するために使用される、請求項42に記載の方法。
【請求項４５】
コンピューティングデバイスからの挙動ベクトルセットが、前記アプリケーションが前記コンピューティングデバイスでブロックされたことのインジケータをさらに備える、請求項42に記載の方法。
【請求項４６】
前記複数のコンピューティングデバイスに更新されたクエリを送信するステップをさらに含む、請求項42に記載の方法。
【請求項４７】
サーバで実行されるコンピュータプログラム製品であって、
複数のコンピューティングデバイスから複数の挙動ベクトルセットを受信することであって、各挙動ベクトルセットがアプリケーションの挙動を特徴付ける、受信することと、
コンピューティングデバイスから受信されたアプリケーションについての挙動ベクトルセットを良性またはマルウェアとして分類することと
を行うためのコードを備えるコンピュータ可読媒体
を備える、コンピュータプログラム製品。
【請求項４８】
前記受信された挙動ベクトルセットと同時に、または後で、前記コンピューティングデバイスからログデータおよび他のデータを受信するためのコードをさらに備える、請求項47に記載のコンピュータプログラム製品。
【請求項４９】
前記複数のコンピューティングデバイスに更新情報を送信するためのコードをさらに備え、前記更新情報が、前記複数のコンピューティングデバイスの挙動分析エンジンを更新するために使用される、請求項47に記載のコンピュータプログラム製品。
【請求項５０】
コンピューティングデバイスからの挙動ベクトルセットが、前記アプリケーションが前記コンピューティングデバイスでブロックされたことのインジケータをさらに備える、請求項47に記載のコンピュータプログラム製品。
【請求項５１】
前記複数のコンピューティングデバイスに更新されたクエリを送信するためのコードをさらに備える、請求項47に記載のコンピュータプログラム製品。
【請求項５２】
複数のコンピューティングデバイスから複数の挙動ベクトルセットを受信するための手段であって、各挙動ベクトルセットがアプリケーションの挙動を特徴付ける、手段と、
コンピューティングデバイスから受信されたアプリケーションについての挙動ベクトルセットを良性またはマルウェアとして分類するための手段と
を備える、サーバ。
【請求項５３】
前記受信された挙動ベクトルセットと同時に、または後で、前記コンピューティングデバイスからログデータおよび他のデータを受信するための手段をさらに備える、請求項52に記載のサーバ。
【請求項５４】
前記複数のコンピューティングデバイスに更新情報を送信するための手段をさらに備え、前記更新情報が、前記複数のコンピューティングデバイスの挙動分析エンジンを更新するために使用される、請求項52に記載のサーバ。
【請求項５５】
コンピューティングデバイスからの挙動ベクトルセットが、前記アプリケーションが前記コンピューティングデバイスでブロックされたことのインジケータをさらに備える、請求項52に記載のサーバ。
【請求項５６】
前記複数のコンピューティングデバイスに更新されたクエリを送信するための手段をさらに備える、請求項52に記載のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、アプリケーションがマルウェアかどうかを検出することが可能なコンピューティングデバイスに関する。
【背景技術】
【０００２】
コンピューティングデバイスは、多くのソースに由来する多様なアプリケーションを実行するために大抵使用されている。残念ながら、悪意のあるアプリケーション(たとえば、マルウェア)は、ユーザのコンピューティングデバイスにたびたびインストールされる。悪意のあるアプリケーションは、よく知られているアプリケーションに大抵なりすますので、ユーザは、通常これに気付かない。さらに、これらの悪意のあるアプリケーションは、それらの機能に必要である以上のアクセス許可を利用する。
【０００３】
マルウェアなどのセキュリティの脅威からコンピューティングデバイスを保護することは、現代のコンピューティングデバイスについての関心事である。マルウェアは、コンピューティングデバイスまたはユーザに害を与えようと試みる、迷惑なアプリケーションを含む。マルウェアの異なるタイプには、トロイの木馬、ワーム、キーロガー、ウイルス、バックドアおよびスパイウェアが含まれる。マルウェアの作者は、クレジットカード番号および銀行口座番号などの個人情報を収集するか、または携帯電話を有料サービスに接続させたいと欲求が動機となっている場合がある。したがって、マルウェアの作者が検出を免れるためのより洗練された方法を開発するように動機付ける金銭的インセンティブが存在する。
【０００４】
従来のマルウェアシグネチャ検出方法は、対象アプリケーションの実際の実行可能部分の不変部分からシグネチャを抽出する。シグネチャベースのマルウェア検出は、マルウェアの変形形態ごとにシグネチャ(たとえば、マルウェアのコード内のユニークなパターン)を必要とする。したがって、シグネチャベースのマルウェア検出を利用して未知のマルウェアを検出することは不可能である。加えて、既知のマルウェアの場合でも、シグネチャの検出とそれがコンピューティングデバイス上で実際に更新される時点との間には、遅延が存在する傾向がある。さらに、シグネチャを使用するマルウェアの検査は、しばしばプロセッサおよびメモリを多く必要とする。このことが、特にモバイルコンピューティングデバイスにとってより難しいものとなる。また、シグネチャの検査は携帯電話などのモバイルデバイスにおいては費用がかかるので、多くの検出器は、よく知られた不正アプリケーションについてのアプリケーションファイル名を検査しているにすぎない。
【０００５】
これらの問題点のために、コンピューティングデバイス上のアプリケーションを特徴付け、比較し、分類して、アプリケーションがマルウェアかどうかを判定する目的で、プロセッサおよびメモリを少ししか必要とせず、より迅速な方式で行われ得る挙動分析を利用することが有利となろう。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明の態様は、アプリケーションがマルウェアかどうかを判定するコンピューティングデバイス用の装置および方法に関係してもよい。コンピューティングデバイスは、コンピューティングデバイス上のアプリケーションの挙動を記録してログを生成するクエリロガーと、クエリロガーからのログを分析して、アプリケーションの挙動を特徴付ける挙動ベクトルを生成する挙動分析エンジンと、アプリケーションについての挙動ベクトルを良性またはマルウェアとして分類する分類器とを含むことができる。
【０００７】
本発明の態様は、アプリケーションがコンピューティングデバイスにとってマルウェアかどうかを判定するサーバ用の装置および方法に関係してもよい。サーバは、各挙動ベクトルセットがアプリケーションの挙動を特徴付けることができる複数のコンピューティングデバイスから複数の挙動ベクトルセットを受信する処理回路と、挙動分析エンジンとを含むことができる。挙動分析エンジンは、良性またはマルウェアとして受信された挙動ベクトルセットに基づいて、グローバル分類器を更新することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の態様を実践できるシステムのブロック図である。
【図２】挙動分析エンジンおよびログの一組のクエリに基づいて生成できる挙動ベクトルを示すブロック図である。
【図３】クエリ、アクション、およびアクションの属性の例を示す表である。
【図４】アプリケーションコードおよびネイティブコードを利用してコンピューティングデバイス上で動作するアプリケーションを示すブロック図である。
【図５】アプリケーションが良性またはマルウェアとして識別されるようにアプリケーションの挙動を特徴付ける挙動ベクトルを生成するために、挙動分析エンジンを利用してクエリロガーからのログを分析した結果を示す表である。
【図６】一群のコンピューティングデバイスからの挙動レポートを集約するために利用できるサーバを示す図である。
【発明を実施するための形態】
【０００９】
「例示的」または「例」という単語は、本明細書では「例、事例、または例示の働きをすること」を意味するために使用される。「例示的」または「例」として本明細書に記載される任意の態様または実施形態は、他の態様または実施形態に比べて好ましいか、または有利であると必ずしも解釈されるべきではない。
【００１０】
図1を参照すると、図1は、本発明の態様を実践できるシステム100のブロック図である。特に、システム100は、アプリケーションがマルウェアかどうかを判定するために使用できるコンピューティングデバイス102を示す。コンピューティングデバイス102は、クエリロガー108、挙動分析エンジン122、および分類器132を備えることができる。一態様では、クエリロガー108は、コンピューティングデバイス上のアプリケーションの挙動を記録して、ログ120を生成することができる。ログ120は、アプリケーションで実行されたか、またはアプリケーションに関連付けられたアクションのログであり得る。したがって、アクションのログ120は、アプリケーションの挙動を示す。挙動分析エンジン122は、クエリロガーからのログ120を分析して、アプリケーションの挙動を特徴付ける挙動ベクトル130を生成することができる。分類器132は、アプリケーションについての挙動ベクトル130を良性140として、またはマルウェア150として分類することができる。挙動ベクトル130がマルウェア150として分類された場合、挙動ベクトル130に関連付けられたアプリケーションは、使用から削除または制限されてもよい。後述しているように、多くの異なる挙動ベクトル130が生成されてアプリケーションの挙動を特徴付けることができ、これらに基づいて、分類器132は、アプリケーションを良性140として、またはマルウェア150として分類することができる。
【００１１】
コンピューティングデバイス102は、プロセッサ104、メモリ106、およびインターフェース110を含むことができる。コンピューティングデバイス102は、ディスプレイデバイス、ユーザインターフェース(たとえば、キーボード、タッチスクリーンなど)、電源デバイス(たとえば、バッテリ)、ならびに通常コンピューティングデバイスに関連する他の構成要素を含むことができることを諒解されたい。コンピューティングデバイス102は、モバイルデバイスまたは非モバイルデバイスであり得る。たとえば、インターフェース110は、呼およびデータを、ワイヤレスリンクを介してワイヤレスネットワークに/から送信および受信するワイヤレストランシーバであり得るか、またはネットワーク(たとえば、インターネット)への直接接続用の有線インターフェースであり得る。したがって、コンピューティングデバイス102は、モバイルデバイス、ワイヤレスデバイス、携帯電話、携帯情報端末、モバイルコンピュータ、タブレット、パーソナルコンピュータ、ラップトップコンピュータ、サーバコンピュータ、または任意のタイプのコンピューティングデバイスであり得る。
【００１２】
コンピューティングデバイス102は、クエリロガー108、挙動分析エンジン122、および分類器132を実装するための命令を実行するように構成されたプロセッサ104を含むことができる。メモリ106は、プロセッサ104に結合されて、プロセッサ104による実行用の命令を記憶することができる。一態様では、コンピューティングデバイス102は、コンピューティングデバイス102上のアプリケーションの挙動を記録してアクションのログ120を生成することができるクエリロガー108と、クエリロガー108からのアクションのログ120を分析して、アプリケーションの挙動を特徴付ける挙動ベクトル130を生成することができる挙動分析エンジン122と、アプリケーションについての挙動ベクトル130を良性140として、またはマルウェア150として分類することができる分類器132とを実装する命令を実行するように構成されたプロセッサ104を含むことができる。挙動ベクトル130がマルウェア150として分類された場合、挙動ベクトル130に関連付けられたアプリケーションは、コンピューティングデバイス102により、使用から削除または制限されてもよい。
【００１３】
後述しているように、本発明の態様は、コンピューティングデバイス102のプロセッサ104および/もしくはコンピューティングデバイス102の他の回路ならびに/または他のデバイスによる命令の実行と連携して実装できることを諒解されたい。詳細には、コンピューティングデバイス102の回路は、プロセッサ104を含むがこれに限定されず、プログラムの制御、ルーチン、または命令の実行の下で動作して、本発明の実施形態による方法またはプロセスを実行することができる。たとえば、そのようなプログラムは、(たとえば、メモリ106および/または他の位置に記憶されている)ファームウェアまたはソフトウェアに実装され得るし、プロセッサ104などのプロセッサ、および/またはコンピューティングデバイス102の他の回路によって実装され得る。さらに、プロセッサ、マイクロプロセッサ、回路、コントローラなどの用語は、論理、コマンド、命令、ソフトウェア、ファームウェア、機能などを実行することが可能な任意のタイプの論理または回路を指すことを諒解されたい。
【００１４】
さらに、クエリロガー108、挙動分析エンジン122、および分類器132の機能の一部もしくは全部は、コンピューティングデバイス102自体によって実行され得るし、かつ/または、機能の一部もしくは全部は、インターフェース110を介して(ワイヤレスまたは有線で)コンピューティングデバイス102に接続された別のコンピューティングデバイスによって実行され得ることを諒解されたい。したがって、機能の一部および/または全部は別のコンピューティングデバイスによって実行され得るし、結果はコンピューティングデバイス102に戻され得る。また、特定の態様によれば、分類器132は機械学習分類器であり得るし、コンピューティングデバイス102はモバイルデバイスであり得る。
【００１５】
図1に示されたような特定の例を参照すると、ニュースアプリケーション160(たとえば、CNN)、ゲーム(たとえば、ボーリング)162、ゲーム(たとえば、スネーク)164、およびゲーム(たとえば、バード)166の4つのアプリケーションが、(ユーザの同意の有無にかかわらず)コンピューティングデバイス102にロードされる場合がある。コンピューティングデバイス102は、これらのアプリケーションが良性かマルウェアかを自動的に判定することができる。特に、クエリロガー108は、コンピューティングデバイス上のアプリケーション160、162、164、および166のアクションまたは挙動を記録して、アクションのログ120を生成することができる。挙動分析エンジン122は、アプリケーションの各々についてアクションのログ120を分析して、各アプリケーション160、162、164、および166の挙動を特徴付けるアプリケーションの各々のための挙動ベクトル130を生成することができる。分類器132は、アプリケーション160、162、164、および166の各々のための挙動ベクトル130を、良性140としてまたはマルウェア150として分類することができる。この例では、ニュースアプリケーション160およびゲームアプリケーション166は、それらの挙動ベクトル130に基づいて良性140として分類され、コンピューティングデバイス102により使用が許可される。一方、ゲームアプリケーション162および164は、それらの挙動ベクトル130に基づいてマルウェア150として分類され、コンピューティングデバイス102により、使用から削除または制限される。クエリロガー、アクションのログ、挙動分析エンジン、および挙動ベクトルの態様は、以下でより詳細に記載される。
【００１６】
さらに図2を参照すると、挙動ベクトル130は、アクションのログ120の一組のクエリ210に基づいて生成することができる。挙動分析エンジン122は、ログ120によって記録されたアクションをクエリ210に基づいて分析して、アプリケーションの挙動を特徴付ける挙動ベクトル130を生成することができ、その結果、分類器は、アプリケーションについての挙動ベクトル130を良性またはマルウェアとして判定および分類することができる。図3も参照すると、挙動分析エンジン122によって利用され得るクエリ310、アクション320、およびアクションの属性330の例を提供するチャート300が示される。
【００１７】
たとえば、一組のクエリ310は、存在クエリ、数量クエリ、順序クエリ、またはカテゴリクエリ(ブロック312)のうちの少なくとも1つまたは複数を含むことができる。クエリ310は、実際の挙動または予想された挙動であり得る。さらなる説明として、挙動分析エンジン122は、デバイス依存のアクション220およびデバイス独立のアクション222を分析することができる。例として、図3に示されたように、アクション320は、アプリケーションインストール、デバイス情報、通信、およびユーザとのやりとりを含むことができる。さらに、アクション320は、アクセスデバイス情報、ブート時起動、ユーザデータ、パッケージインストール、センサ、位置、媒体、カメラ、SMS、通話、電話情報(ブロック322)を含むことができる。また、開始時刻、終了時刻、事前、事後、存在(ブロック332)などのアクションの属性330は、挙動分析エンジン122によって利用され得る。これらは、挙動分析エンジン122によって利用され得るクエリ、アクション、およびアクションの属性の例にすぎず、多くの他のタイプが利用できることを諒解されたい。
【００１８】
前述されたように、1)コンピューティングデバイス102上のアプリケーションの挙動を記録してアクションのログ120を生成するメカニズムを実装するクエリロガー108、2)アクションのログ120を分析し、コンピューティングデバイス102上で動作するアプリケーションの挙動を記述する挙動ベクトル130を生成する挙動分析エンジン122、および、3)挙動ベクトル130を良性またはマルウェアのいずれかのカテゴリに分類する分類器132の3つの構成要素を利用することができる。
【００１９】
このようにして、挙動ベクトル130は、コンピューティングデバイス上のマルウェアを検出する挙動分析フレームワークで使用することができる。結果として得られた挙動ベクトル130は、ログ記録から抽出された客観的な観察を含む。一例として、挙動分析エンジン122は、アクションに関するクエリ210(たとえば、「ユーザの同意なしのアプリケーションインストールか?」、「アプリケーションはゲームのように挙動すべきか?」、「ウェブサイトはニュースのように動作すべきか?」、「アプリケーションはSMSメッセージを処理すべきか?」、「アプリケーションは通話を処理すべきか?」など)に回答する。これらのクエリ210に対する回答は、挙動ベクトル130を作成する。
【００２０】
例として、各アクションは、4つのタイプのクエリ310である、存在クエリ、数量クエリ、順序クエリ、およびカテゴリクエリのうちの1つまたは複数に関連付けることができる。たとえば、存在クエリ310はアクションセットの存在を参照することができる。このクエリの一例として、クエリは、アプリケーションがデバイス情報にアクセスしたか(たとえば、電話情報にアクセスしたか、位置情報にアクセスしたか、など)どうかを判定することであり得る。挙動分析エンジン122は、アクションのログ120がアプリケーションによるデバイスアクセスの任意のログを含むかどうかを判定することができ、挙動ベクトル130はこれに基づいて設定することができる。たとえば、挙動ベクトル130は、電話情報がアクセスされたことを示すように設定することができる。
【００２１】
さらに、数量クエリ310は、アクションの発生回数を参照することができる。このクエリの一例として、クエリは、アプリケーションによるアクションの発生回数を特定することであり得る。一例として、これは送られたSMS(たとえば、SMSを介した発信通信)の数であり得る。したがって、挙動分析エンジン122は、アクションのログ120から送られたSMSの数を特定することができる。このクエリは、SMSが何回送られたかを示す挙動ベクトル130を生成するために使用することができる。
【００２２】
別の例として、順序クエリ310は、一連のアクションの発生回数を参照することができる。このクエリの一例として、クエリは、アプリケーションがインストールされる前に(たとえば、インストール前30秒以内に)発生したユーザとのやりとりの回数を特定することであり得る。したがって、挙動分析エンジン122は、アクションのログ120から、アプリケーションがインストールされる前に発生したユーザとのやりとり(たとえば、UIイベント)の回数を特定することができる。このクエリは、アプリケーションのインストール前のUIイベントの数量を示す挙動ベクトル130を生成するために使用することができる。
【００２３】
別の例として、カテゴリクエリ310は、アプリケーションがあるカテゴリに属するかどうかを参照することができる。このクエリの一例として、クエリは、アプリケーションがロケーションベースのサービスであるかどうかを判定することであり得る。したがって、挙動分析エンジン122は、アクションのログ120から、アプリケーションがロケーションベースのサービスであるかどうか、および(ログに基づいて)位置情報がアクセスされているカテゴリにアプリケーションが属するかどうかを判定することができる。一例として、このクエリは、位置情報が検索される回数に関係する挙動ベクトル130として使用することができる。
【００２４】
さらに、多種多様な異なるタイプのアクション320である、アプリケーションインストール、デバイス情報、通信、ユーザとのやりとり、アクセスデバイス情報、ブート時起動、ユーザデータ、パッケージインストール、センサ、位置、媒体、カメラ、SMS、通話、および電話情報(ブロック322)は、挙動分析エンジン122によって利用されて、挙動ベクトル130を生成することができる。アクションのログ120によって記録されたようなこれらのアクションの各々は、挙動分析エンジン122によって利用されて、アプリケーションの挙動を特徴付ける挙動ベクトル130を生成することができる。その上、多種多様な異なるタイプのアクションの属性330である、開始時刻、終了時刻、事前、事後、および存在(ブロック332)は、挙動分析エンジン122によって利用されて、挙動ベクトル130を生成することができる。アクションのログ120によって記録されたようなこれらのアクションの属性の各々は、挙動分析エンジン122によって利用されて、アプリケーションの挙動を特徴付ける挙動ベクトル130の生成に役立つことができる。
【００２５】
特に、図2に示されたように、挙動ベクトル130[1,0,0.207,0,2,5,...]は、アクションのログ120によって記録されたようなクエリ、アクション、アクションの属性などに基づいて、挙動分析エンジン122によって生成されて、アプリケーションの挙動を特徴付けることができる。一例として、異なるタイプのアクションの場合、約5の挙動ベクトルは頻繁な使用を示すことができ、約1〜2の挙動ベクトルはまれな使用を示すことができ、約0の挙動ベクトルは未使用を示すことができる。多種多様な異なるタイプのアプリケーション、監視されたアクション、および、挙動ベクトル130を生成する挙動分析エンジン122によるそれらの分析は、以下に記載される。
【００２６】
アクションのログ120によって記録され、かつ挙動分析エンジン122によって分析されたような、実際のアクションに基づく挙動ベクトル130の生成に関して、観察または監視されるべきこれらのアクションは、マルウェアを識別する高い確率を表すので、監視されるべき挙動またはアクションのタイプを識別することに基づく場合がある。たとえば、システムの専門家は、どのセットのシステムイベントが、マルウェアである高い確率を有する高レベルの挙動またはアクションに関係するかを識別することができる。
【００２７】
図4を簡単に参照すると、アプリケーションは、アプリケーションコード402およびネイティブコード404を利用して、コンピューティングデバイス102上で動作している場合がある。アプリケーションコード402は、コンピューティングデバイス102のシステムインターフェースのアプリケーションライブラリ412と相互作用することができ、ネイティブコード404は、ネイティブライブラリ414およびカーネル416と相互作用することができる。ネイティブコード404により、アプリケーションおよびアプリケーションコード402がネイティブライブラリ414およびカーネル416の基本的な機能を利用することが可能になる。特に、基本的な機能により、センサ420(たとえば、加速度計、圧力センサなど)、SMS通話422、連絡先リスト424、位置センサ426、ネットワークインターフェース428などのコンピューティングデバイス102のリソースのうちの一部または全部と、アプリケーションが相互作用することが可能になる。ライブラリ(アプリケーションライブラリ412およびネイティブライブラリ414)の各々ならびにカーネル416は、クエリロガー108によって監視され得る。このようにして、クエリロガー108は、コンピューティングデバイス上のアプリケーションのアクションを監視および記録して、アクションのログ120を生成することができる。さらに、挙動分析エンジン122は、次いで、クエリロガー108からのアプリケーションについてのアクションのログ120を分析して、アプリケーションの挙動を特徴付けるアプリケーションについての挙動ベクトル130を生成することができる。
【００２８】
一例として、ゲームアプリケーションの場合、クエリロガー108は、ネットワーク428の使用(たとえば、ウェブサイトとのネットワーク通信)、ユーザインターフェースイベントおよびセンサ420の使用(たとえば、ユーザがゲームで遊ぶときコンピューティングデバイスを保持するユーザとのタッチセンサ)に関するアプリケーションライブラリ412およびネイティブライブラリ414の実質的な使用のアクション、ならびに実質的な媒体のアクションなどの他のアクションのログを生成することができる。このようにして、挙動分析エンジン122は、クエリロガー108からのアプリケーションについてのアクションのログ120を分析して、頻繁なネットワークの使用、センサの使用、および媒体の使用などのアプリケーションの挙動を特徴付けるアプリケーションについての挙動ベクトル130を生成することができる。多種多様な異なるタイプのアプリケーション、監視されたアクション、および、挙動ベクトル130を生成する挙動分析エンジン122によるそれらの分析は、以下に記載される。
【００２９】
図5を参照すると、図5は、分類器132がアプリケーションを良性またはマルウェアとして識別できるように、アプリケーションの挙動を特徴付ける挙動ベクトル130を生成するために、挙動分析エンジン122を利用してクエリロガー108からのアクションのログ120を分析した結果を示す表500である。
【００３０】
表500に示されたように、複数のアプリケーションは、挙動分析エンジンを利用して分析される。特に、以下のアプリケーション、ゲーム502、ユーチューブ504、ノートパッド506、フィットネス508、ニュース510、偽装ユーチューブ520、偽装ホテル検索522、スパイウェア524、偽装ゲーム526、および偽装ムービープレーヤ528が、良性538またはマルウェア536として分類される。
【００３１】
これらのアプリケーションの各々について、挙動ベクトル529は、クエリロガーからのアクションのログの分析に基づいて、挙動分析エンジンによって生成される。挙動ベクトルは、頻繁な使用530、まれな使用532、および未使用534であるように簡略化される。数値的な一例として、約5の挙動ベクトルは頻繁な使用を示すことができ、約1〜2の挙動ベクトルはまれな使用を示すことができ、約0の挙動ベクトルは未使用を示すことができる。当然、任意の数値指示を利用することができる。挙動ベクトルは、ユーザインターフェース(UI)アクション550、通信アクション552、センサアクション554、位置556、媒体アクション558、カメラアクション560、SMSアクション562、通話アクション564、および電話情報566に基づいて生成される。これに基づいて、アプリケーションは、マルウェアアプリケーション536または良性アプリケーション538として示される。
【００３２】
アプリケーションが良性またはマルウェアとして識別され得るように、アプリケーションの挙動を特徴付ける挙動ベクトルを生成するために、挙動分析エンジンを利用してクエリロガーからのアクションのログを分析した結果を示す様々な例がここで記載される。たとえば、頻繁530なUIアクション550、頻繁530な通信アクション552、頻繁530な媒体アクション558、および未使用534またはまれ532な電話、SMS、カメラ、位置などのアクションを示す挙動ベクトル529を有するゲームアプリケーション502は、良性538として分類される。頻繁530なUIアクション550、頻繁530な通信アクション552、頻繁530な媒体アクション558、および未使用534の電話、SMS、カメラ、位置などのアクションを示す挙動ベクトル529を有するユーチューブアプリケーション504は、良性538として分類される。頻繁530なUIアクション550、および未使用534の電話、SMS、カメラ、位置などのアクションを示す挙動ベクトル529を有するノートパッドアプリケーション506は、良性538として分類される。頻繁530なUIアクション550、頻繁530な通信アクション552、頻繁530なセンサアクション554、および未使用534またはまれ532な電話、SMS、カメラ、位置などのアクションを示す挙動ベクトル529を有するフィットネスアプリケーション508は、良性538として分類される。頻繁530なUIアクション550、頻繁530な通信アクション552、頻繁530なセンサアクション554、頻繁530な媒体アクション558、および未使用534またはまれ532な電話、SMS、カメラ、位置などのアクションを示す挙動ベクトル529を有するニュースアプリケーション510は、良性538として分類される。
【００３３】
一方、まれ532なUIアクション550、まれなSMSアクション562ではあるが頻繁530な通信アクション552、頻繁530な位置アクション556、および頻繁530な電話情報566を示す挙動ベクトル529を有する偽装ユーチューブアプリケーション520は、マルウェア536として分類される。まれ532なUIアクション550、まれなSMSアクション562ではあるが頻繁530な通信アクション552、頻繁530な位置アクション556、および頻繁530な電話情報566を示す挙動ベクトル529を有する偽装ホテル検索アプリケーション522は、マルウェア536として分類される。まれ532なUIアクション550ではあるが頻繁530な通信アクション552、頻繁530な位置アクション556、頻繁530な通話564、および頻繁530な電話情報566を示す挙動ベクトル529を有するスパイウェアアプリケーション524は、マルウェア536として分類される。未使用534のUIアクション550ではあるが頻繁530な通信アクション552、頻繁530なSMSアクション562、および頻繁530な電話情報566を示す挙動ベクトル529を有する偽装ゲームアプリケーション526は、マルウェア536として分類される。未使用534のUIアクション550および媒体アクション558ではあるが頻繁530なSMSアクション562を示す挙動ベクトル529を有する偽装ムービープレーヤアプリケーション528は、マルウェア536として分類される。
【００３４】
広範な挙動ベクトル130のセットを生成するために挙動分析エンジン122により、クエリロガー108からのアクションのログ120から分析された広範なアクションのセットを有することによって、十分に分化している特徴を分析してアプリケーションがマルウェアとして、または良性として分類されるべきかを判定できることが分かっている。多くの悪意のあるアプリケーションが、ユーザ情報を盗み、かつ/または虚偽の課金を行って金を稼ぐ(たとえば、偽のSMS課金)ように試みることがある。さらに、アプリケーションがマルウェアか良性かを判定するためにコンピューティングデバイス102上のアプリケーションを特徴付け、比較し、分類する目的で挙動分析を利用することは、(シグネチャベースのマルウェア検出とは対照的に)限られたプロセッサおよびメモリの機能を利用し、新しいマルウェアまたは新しい必要なシグネチャに関するサーバからの更新を待つ必要なしに、すぐに行うことができる。
【００３５】
さらに図6を参照すると、本発明の別の態様によれば、サーバ620を含むシステム600は、一群のコンピューティングデバイス602からの挙動レポートを集約するために利用することができる。ただ1つのコンピューティングデバイス602が示されているが、以下に記載される態様は、複数または一群のコンピューティングデバイス602に関する。コンピューティングデバイス602の構成要素および機能は、前にコンピューティングデバイス102を参照して記載された方式と同じ方式で動作するので、これらの構成要素および機能は簡潔のために詳細には繰り返さない。一態様では、サーバ620は、少なくとも処理回路624、挙動分析エンジン626、およびグローバル分類器628を含む構成要素622を備える。処理回路624は送信機および受信機を含むことができる。挙動分析エンジン、クエリロガー、挙動ベクトル、分類器など、ならびに他の構成要素および機能の使用は、詳細に前に説明されている。処理回路624は、処理回路624または他の構成要素に結合されたメモリに記憶された命令に基づいて、受信機、送信機、挙動分析エンジン626、グローバル分類器628、ならびに他の構成要素を実装し、それらと動作するための命令を実行するように構成することができる。サーバが利用するプロセッサおよびメモリが当技術分野でよく知られていることは、当業者によって諒解されよう。
【００３６】
一態様では、サーバ620の処理回路624の受信機は、(たとえば、コンピューティングデバイス602がその挙動分析エンジン608を介してアプリケーションの挙動が疑わしい場合があると判断するか、または不定期に挙動ベクトルが更新情報を設定したとき(判定ブロック612参照))、複数の異なるコンピューティングデバイス602から複数の挙動ベクトルセット610を受信することができる。前述されたように、挙動ベクトルセット610は、アプリケーションの挙動を特徴付ける。サーバ620の挙動分析エンジン626は、コンピューティングデバイス602から受信された挙動ベクトルセット610に基づいて、グローバル分類器628を更新することができる。さらに、後述しているように、グローバル分類器628は、疑わしい挙動を有するとアプリケーションを識別した(たとえば、ブロック612)、コンピューティングデバイス602から受信されたアプリケーションについての挙動ベクトルセットを、良性またはマルウェアとして分類することができる。
【００３７】
特定の一態様では、コンピューティングデバイス602は、アプリケーションの挙動が疑わしいと判断することができ、そのアプリケーションについての挙動ベクトルセット610をサーバ620に送信して、サーバ620に挙動ベクトルセット610を分析させることができる。サーバ620のグローバル分類器628は、送信された挙動ベクトルセット610を良性またはマルウェアとして分類することができる。アプリケーションについての挙動ベクトルセット610がマルウェアとして分類された場合、マルウェアインジケータを複数のコンピューティングデバイス602に送信することができ、コンピューティングデバイス602はアプリケーションを削除632することができる。
【００３８】
さらに、サーバ620は、処理回路624の送信機を介して、複数のコンピューティングデバイス602に更新情報を送信することができ、更新情報は、複数のコンピューティングデバイス602の挙動分析エンジン608を更新するために使用される。このようにして、挙動ベクトルセットのすべておよび一群のコンピューティングデバイス602から受信された他のデータに基づいて、サーバ620は、コンピューティングデバイス自体によって実行された挙動分析を周期的に更新することができる。
【００３９】
したがって、サーバ620は、一群のコンピューティングデバイス602からの挙動レポートを集約することによって、クラウドソーシングサーバとして動作する。経時的に大量の入力セットを収集することによって、より正確で更新された挙動モデルが迅速な方式で生成され、すべての動作中のコンピューティングデバイス602に伝えることができる。また、アプリケーションがマルウェアであると判定されたとき、コンピューティングデバイス602のすべてにこれを通知することができる。
【００４０】
動作の一例として、図6に示されたように、コンピューティングデバイス602のクエリロガー604は、アプリケーションの挙動を記録して、アクションのログ606を生成することができる。次に、コンピューティングデバイス602の挙動分析エンジン608は、アクションのログ606を分析して、アプリケーションの挙動を特徴付ける挙動ベクトルセット610を生成することができる。一例として、挙動ベクトルセット610は、少なくとも1つの数値を含むことができる。判定ブロック612で、挙動ベクトルセットがアプリケーションについて疑わしい何かを示すことをコンピューティングデバイス602の分類器が見つけなかった(たとえば、それがマルウェアである可能性が低い)場合、ログは削除され(ブロック616)、プロセスは終了する(ブロック618)。これらの機能の多くは詳細に前述された。
【００４１】
しかしながら、コンピューティングデバイス602により挙動が疑わしいと判定された(判定ブロック612)場合、コンピューティングデバイス602は、アプリケーションの使用をブロックすることができ(ブロック614)、挙動ベクトルセット610をサーバ620に送信することができる。サーバ620は、処理回路624を介して挙動ベクトルセット610を受信することができ、挙動ベクトルセット610を検査して、アプリケーションが良性かマルウェアかを判定することができる。また、コンピューティングデバイス602からサーバ620に送信された挙動ベクトルセット610は、アプリケーションがブロックされたことのインジケータも含むことができる。加えて、コンピューティングデバイス602は、ログならびに他のデータをサーバ620に送信することができる。このステップは、リアルタイムに(すなわち、挙動が分類されたそのときに)発生する場合があるか、または後で(たとえば、デバイスが帯域幅または電力により良くアクセスしたとき)発生する場合があることに留意されたい。
【００４２】
受信された挙動ベクトルセット610に基づいて、サーバ620のグローバル分類器628は、アプリケーションを良性またはマルウェアとして分類することができる。アプリケーションについての挙動ベクトルセット610がマルウェアとして分類された場合、マルウェアインジケータを複数のコンピューティングデバイス602に送信することができる。これに基づいて、コンピューティングデバイス602がマルウェア指示を受信した(判定ブロック630)場合、コンピューティングデバイス602はアプリケーションを削除することができる(ブロック632)。しかしながら、アプリケーションがマルウェアでなかった場合、ログを削除することができ(ブロック616)、プロセスは完了または終了し(ブロック618)、その結果、コンピューティングデバイス602は、アプリケーションの利用を含む正常動作を維持することができる。
【００４３】
別の態様では、アプリケーションの挙動が疑わしくないとコンピューティングデバイス602が判定したとき(ブロック612)、コンピューティングデバイス602は、時々アプリケーションに関係するそれらの挙動ベクトルセット610(ならびに、ログ、クエリ、および他の情報)をサーバ620に送信し、その結果、サーバ620の挙動分析エンジン626およびグローバル分類器628は、コンピューティングデバイス602によって利用されているアプリケーションに関する幅広い情報を受信する。このようにして、コンピューティングデバイス602のすべては、サーバ620がその挙動モデリングにおいて更新され続けるように協調作業する。
【００４４】
同様に、サーバ620は、処理回路624を介して、時々複数のコンピューティングデバイス602に更新情報を送信し、更新情報はコンピューティングデバイス602によって使用されて、それらの挙動分析エンジン608および分類器を更新し、それらの挙動モデリングおよびアプリケーションの分析を全体的に更新することができる。また、サーバ620は、処理回路624を介して、時々複数のコンピューティングデバイス602に更新されたクエリを送信し、コンピューティングデバイスは、更新されたクエリを利用してそれらのアクションのログ606を照会し、それらのクエリロガー604を更新することができ、更新されたクエリは、コンピューティングデバイスの挙動分析エンジン608および分類器と連携して利用されて、挙動モデリングおよびアプリケーションの分析を更新することができる。このようにして、挙動更新情報、挙動ベクトルセット、クエリ、ならびにサーバ620から受信された他のデータに基づいて、コンピューティングデバイス602は、コンピューティングデバイス602自体によって実行された挙動分析を周期的に更新することができる。
【００４５】
したがって、サーバ620は、一群のコンピューティングデバイス602からの挙動レポートを集約することによって、クラウドソーシングサーバとして動作する。本質的に、サーバ620は、一群のコンピューティングデバイス602からの協調的なアップロードから得られた良性および悪性の挙動モデルに対して、アプリケーションの挙動を評価することができる。経時的に大量の入力セットを収集することによって、より正確で更新された挙動モデルが迅速な方式で生成され、すべての動作中のコンピューティングデバイス602に伝えることができる。個々のコンピューティングデバイスによる偏りを説明することができる。その上、個々のコンピューティングデバイス602は、他のコンピューティングデバイスからの一群のレポートに基づいて生成された挙動モデルを活用することができる。また、アプリケーションがマルウェアであると判定されたとき、コンピューティングデバイス602のすべてにこれを通知することができる。さらに、マルウェア検出のための個々のコンピューティングデバイス602上の監視および計算のオーバーヘッドは、クラウドベースのサーバ620を利用することによって低減することができる。特に、協調的な分析を利用することによって、大量の挙動ベクトルおよびログは、時宜を得たマルウェア検出用に、一群のコンピューティングデバイス602からサーバ620によって蓄積することができる。したがって、結果として得られた挙動モデルは、正確(低い誤検出および検出漏れ)と一般的(多種多様な異なるタイプのマルウェアを捕捉できる)の両方であり得る。各コンピューティングデバイス602での挙動分析エンジン608用の挙動モデルは一意であることに留意されたい。さらに、サーバ620から受信された特徴全体は、コンピューティングデバイス602用に一意に修正される。
【００４６】
一例として、一群のコンピューティングデバイス602をサーバ620と協調させる際に、3つの異なるステップである、初期化、協調的な挙動モデリングおよびマルウェア検出、ならびに挙動モデルの更新を利用することができる。初期化に関して、(たとえば、コンピューティングデバイス602用の)挙動分析エンジンおよび分類器は、一組の既知の悪いアプリケーション、すなわちマルウェア、および一組の既知の良いアプリケーションによって訓練することができる。訓練プロセスは、標準の監修された機械学習技法を使用して遂行することができる。コンピューティングデバイス602がユーザに提供される前に、コンピューティングデバイス602は、その挙動分析エンジン608用の最新の挙動モデルをサーバ620から得る必要があり得る。加えて、サーバ620は、挙動分析エンジンを利用してAPIログから、記録されるべきAPIのリスト、および挙動ベクトル(たとえば、アプリケーションの挙動の簡潔な表現)をどのように生成するかに関する指示を、コンピューティングデバイス602に提供することができる。
【００４７】
協調的な挙動モデリングおよびマルウェア検出に関して、前述されたように、ユーザが自分のコンピューティングデバイス602を利用しているとき、コンピューティングデバイス602は、動作中のアプリケーションごとに挙動分析エンジン608を利用して、挙動ベクトル610を周期的に監視および計算し、分類器を利用することによって、このアプリケーションがマルウェアと同様に挙動するか、良性アプリケーションと同様に挙動するかを判定することができる。コンピューティングデバイス602によって悪意があると分類されたアプリケーションは、サーバ620によって確認され得るし、コンピューティングデバイス602から削除される(ブロック632)か、またはインストールを拒否されるべきである。良性として分類されたアプリケーションは、完全なアクセス許可を得て動作することができる。疑わしいと判定された(ブロック612)、たとえば、コンピューティングデバイス602自体によってローカルに疑惑を検出されたが、さらなる調査が必要なアプリケーションの場合、これらのケースでは、コンピューティングデバイス602は、アプリケーションを制約付きの環境に入れることができ、制限されたアクセスしか許可されない場合がある。次いで、このアプリケーションは、前述されたように、さらなる調査のためにサーバ620に報告することができる。
【００４８】
挙動モデルの更新に関して、協調作業を可能にするために、コンピューティングデバイス602は、前述されたように、それらの挙動ベクトル610および他のデータをサーバ620に周期的にアップロードする。サーバ620は、さらにコンピューティングデバイス602から元のログも要求することができる。リソースが豊富なマシン(またはクラスタ)であり得るサーバ620は、挙動分析エンジン626およびグローバル分類器628を介して、徹底的な分析を実行し、次いで挙動モデルを更新することができる。更新後モデルが著しく変化した場合、サーバ620は、コンピューティングデバイス602の挙動分析エンジン608および分類器に更新された挙動モデルを強要することができる。より多くのデータが収集されるにつれて、変化は低頻度になり得るし、モデルは安定する。
【００４９】
したがって、前述されたシステムは、静的分析およびシグネチャベースのアンチウイルス手法と補完関係にある、保護の追加の層として働くことができる。1つの特定の利益に関して、アンチウイルスのデータベースに追加されていないマルウェア、またはインストール時に良性であるように見せかけるマルウェアを検出することができる。特に、サーバ620は、一群のコンピューティングデバイス602からの挙動レポートを集約することによって、クラウドソーシングサーバとして動作する。本質的に、サーバ620は、一群のコンピューティングデバイス602からの協調的なアップロードから得られた良性および悪性の挙動モデルに対して、アプリケーションの挙動を評価することができる。経時的に大量の入力セットを収集することによって、より正確で更新された挙動モデルが迅速な方式で生成され、すべての動作中のコンピューティングデバイス602に伝えることができる。
【００５０】
コンピューティングデバイスまたはサーバがモバイルデバイスまたはワイヤレスデバイスである場合、それは、任意の適切なワイヤレス通信技術に基づくか、または場合によってはそれをサポートするワイヤレスネットワークにより、1つまたは複数のワイヤレス通信リンクを介して通信することができることを諒解されたい。たとえば、いくつかの態様では、コンピューティングデバイスまたはサーバは、ワイヤレスネットワークを含むネットワークと関連付けることができる。いくつかの態様では、ネットワークは、ボディエリアネットワークまたはパーソナルエリアネットワーク(たとえば、超広帯域ネットワーク)を備えることができる。いくつかの態様では、ネットワークは、ローカルエリアネットワークまたはワイドエリアネットワークを備えることができる。ワイヤレスデバイスは、たとえばCDMA、TDMA、OFDM、OFDMA、WiMAX、およびWi-Fiなどの多種多様なワイヤレス通信技術、プロトコル、または規格のうちの1つまたは複数をサポートするか、または場合によっては使用することができる。同様に、ワイヤレスデバイスは、多種多様な対応する変調方式または多重化方式のうちの1つまたは複数をサポートするか、または場合によっては使用することができる。したがって、ワイヤレスデバイスは、上記または他のワイヤレス通信技術を使用して、1つまたは複数のワイヤレス通信リンクを確立し、それを介して通信するのに適した構成要素(たとえばエアインターフェース)を含むことができる。たとえば、デバイスは、ワイヤレス媒体を介した通信を容易にする様々な構成要素(たとえば、信号発生器および信号処理器)を含むことができる、関連する送信機および受信機の構成要素(たとえば、送信機および受信機)を有するワイヤレス送受信機を備えることができる。よく知られているように、モバイルワイヤレスデバイスは、したがって、他のモバイルデバイス、携帯電話、他の有線およびワイヤレスのコンピュータ、インターネットウェブサイトなどとワイヤレスに通信することができる。
【００５１】
本明細書に記載された技法は、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、直交周波数分割多元接続(OFDMA)、シングルキャリアFDMA(SC-FDMA)および他のシステムなどの様々なワイヤレス通信システムに使用することができる。「システム」および「ネットワーク」という用語は、しばしば互換的に使用される。CDMAシステムは、ユニバーサル地上無線アクセス(UTRA)、CDMA2000などの無線技術を実装することができる。UTRAは、広帯域CDMA(W-CDMA)およびCDMAの他の変形形態を含む。CDMA2000は、暫定規格である(IS)-2000規格、IS-95規格、およびIS-856規格を包含する。TDMAシステムは、モバイル通信用グローバルシステム(GSM(登録商標))などの無線技術を実装することができる。OFDMAシステムは、発展型ユニバーサル地上無線アクセス(Evolved UTRAまたはE-UTRA)、ウルトラモバイルブロードバンド(UMB)、電気電子技術者協会(IEEE)802.11(Wi-Fi)、IEEE802.16(WiMAX)、IEEE802.20、Flash-OFDM(登録商標)などの無線技術を実装することができる。ユニバーサル地上無線アクセス(UTRA)およびE-UTRAは、ユニバーサルモバイル電気通信システム(UMTS)の一部である。3GPPロングタームエボリューション(LTE)は、ダウンリンクにOFDMAを採用し、アップリンクにSC-FDMAを採用する、E-UTRAを使用するUMTSの近く公開されるリリースである。UTRA、E-UTRA、UMTS、LTE、およびGSM(登録商標)は、「第3世代パートナーシッププロジェクト」(3GPP)という名称の組織からの文書に記述されている。CDMA2000およびUMBは、「第3世代パートナーシッププロジェクト2」(3GPP2)という名称の組織からの文書に記述されている。
【００５２】
本明細書の教示は、多種多様な装置(たとえば、デバイス)に組み込む(たとえば、それらの内部に実装するか、またはそれらによって実行する)ことができる。たとえば、本明細書で教示された1つまたは複数の態様は、電話(たとえば、携帯電話)、携帯情報端末(「PDA」)、タブレット、モバイルコンピュータ、ラップトップコンピュータ、タブレット、エンターテインメントデバイス(たとえば、音楽デバイスもしくはビデオデバイス)、ヘッドセット(たとえば、ヘッドフォン、イヤピースなど)、医療用デバイス(たとえば、生体センサ、心拍数モニタ、歩数計、EKGデバイスなど)、ユーザI/Oデバイス、コンピュータ、サーバ、POSデバイス、エンターテインメントデバイス、セットトップボックス、または任意の他の適切なデバイスに組み込むことができる。これらのデバイスは、様々な電力要件およびデータ要件を有する場合がある。
【００５３】
いくつかの態様では、ワイヤレスデバイスは、通信システム用のアクセスデバイス(たとえば、Wi-Fiアクセスポイント)を備えることができる。そのようなアクセスデバイスは、たとえば、有線またはワイヤレスの通信リンクを介した、別のネットワーク(たとえば、インターネットまたはセルラーネットワークなどのワイドエリアネットワーク)への接続を提供することができる。したがって、アクセスデバイスは、別のデバイス(たとえば、Wi-Fi局)が他のネットワークまたは何らかの他の機能にアクセスすることを可能にすることができる。加えて、デバイスのうちの1つまたは両方は携帯型であるか、または場合によっては比較的非携帯型であり得ることを諒解されたい。
【００５４】
情報および信号は、多種多様な異なる技術および技法のいずれかを使用して表され得ることを、当業者は理解されよう。たとえば、上記の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００５５】
本明細書で開示された実施形態に関連して記載された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者はさらに諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、上記では概してそれらの機能に関して記載された。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、記載された機能を特定の適用例ごとに様々な方法で実装できるが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
【００５６】
本明細書で開示された実施形態に関連して記載された様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または、本明細書に記載された機能を実行するように設計されたそれらの任意の組合せで、実装または実行することができる。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装することができる。
【００５７】
本明細書で開示された実施形態に関連して記載された方法またはアルゴリズムのステップは、直接ハードウェアで具現化されるか、プロセッサによって実行されるソフトウェアモジュールで具現化されるか、またはその2つの組合せで具現化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体に常駐することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC内に常駐することができる。ASICはユーザ端末内に常駐することができる。代替として、プロセッサおよび記憶媒体は、ユーザ端末内に個別構成要素として常駐することができる。
【００５８】
1つまたは複数の例示的な実施形態では、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装することができる。コンピュータプログラム製品としてソフトウェアに実装された場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、命令もしくはデータ構造の形態で所望のプログラムコードを搬送もしくは記憶するために使用でき、コンピュータによってアクセスできる、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【００５９】
開示された実施形態の上記の説明は、任意の当業者が本発明を作製または使用することを可能にするために提供される。これらの実施形態への様々な修正が当業者には容易に明らかになり、本明細書に定義された一般原理は、本発明の趣旨または範囲を逸脱することなく他の実施形態に適用することができる。したがって、本発明は、本明細書に示された実施形態に限定されるものではなく、本明細書で開示された原理および新規の特徴に一致する最大の範囲を与えられるものである。
【符号の説明】
【００６０】
100  システム
102  コンピューティングデバイス
104  プロセッサ
106  メモリ
108  クエリロガー
110  インターフェース
120  アクションのログ
122  挙動分析エンジン
130  挙動ベクトル
132  分類器
140  良性
150  マルウェア
160  ニュースアプリケーション
162  ゲームアプリケーション
164  ゲームアプリケーション
166  ゲームアプリケーション
【図１】
2015511047.tif 000003
【図２】
2015511047.tif 000004
【図３】
2015511047.tif 000005
【図４】
2015511047.tif 000006
【図５】
2015511047.tif 000007
【図６】
2015511047.tif 000008
【手続補正書】
【提出日】平成26年4月25日(2014.4.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイスであって、
前記コンピューティングデバイス上の複数のアプリケーションの各々についてのアクションをアクションのログに記録することと、
各挙動ベクトルがその関連付けられたアプリケーションの挙動を特徴付けるように、かつ前記アクションのログに記録された前記アクションに基づいて、前記複数のアプリケーションの各アプリケーションについての挙動ベクトルを生成することと、
各挙動ベクトルによって特徴付けられた前記挙動が良性かどうかを判定することと
を含む動作を、プロセッサ実行可能命令を用いて実行するように構成された、プロセッサ
を備える、コンピューティングデバイス。
【請求項２】
前記プロセッサが、
アプリケーションに関連付けられた前記挙動ベクトルによって特徴付けられた前記挙動が良性ではないと判定したことに応じて、前記アプリケーションを使用から削除または制限すること
をさらに含む動作を、プロセッサ実行可能命令を用いて実行するように構成された、請求項1に記載のコンピューティングデバイス。
【請求項３】
各アプリケーションについての前記挙動ベクトルを生成することが、
前記アクションのログの一組のクエリに基づいて各挙動ベクトルを生成すること
を含むような動作を、プロセッサ実行可能命令を用いて実行するように前記プロセッサが構成された、請求項1に記載のコンピューティングデバイス。
【請求項４】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成することが、
その関連付けられたアプリケーションについての前記アクションのログのクエリの結果に基づく数値を含むように各挙動ベクトルを生成すること
を含むような動作を、プロセッサ実行可能命令を用いて実行するように前記プロセッサが構成された、請求項3に記載のコンピューティングデバイス。
【請求項５】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成することが、
存在クエリ、数量クエリ、順序クエリ、およびカテゴリクエリのうちの少なくとも1つに基づいて各挙動ベクトルを生成すること
を含むような動作を、プロセッサ実行可能命令を用いて実行するように前記プロセッサが構成された、請求項3に記載のコンピューティングデバイス。
【請求項６】
前記アクションのログの前記一組のクエリに基づいて各挙動ベクトルを生成することが、
実際の挙動または予想された挙動を含むクエリに基づいて前記挙動ベクトルのうちの少なくとも1つを生成すること
をさらに含むような動作を、プロセッサ実行可能命令を用いて実行するように前記プロセッサが構成された、請求項5に記載のコンピューティングデバイス。
【請求項７】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成することが、
デバイス独立のアクションを分析すること
を含むような動作を、プロセッサ実行可能命令を用いて実行するように前記プロセッサが構成された、請求項1に記載のコンピューティングデバイス。
【請求項８】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成することが、
デバイス依存のアクションを分析すること
を含むような動作を、プロセッサ実行可能命令を用いて実行するように前記プロセッサが構成された、請求項1に記載のコンピューティングデバイス。
【請求項９】
前記デバイス依存のアクションを分析することが、アプリケーションインストール情報、デバイス情報、通信情報、およびユーザとのやりとり情報を分析することをさらに含むような動作を、プロセッサ実行可能命令を用いて実行するように前記プロセッサが構成された、請求項8に記載のコンピューティングデバイス。
【請求項１０】
各挙動ベクトルによって特徴付けられた前記挙動が良性かどうかを判定することが、一組の既知の良いアプリケーションおよび一組の既知の悪いアプリケーションを使用することから得られた情報に基づいて訓練された分類器モデルを少なくとも1つの挙動ベクトルに適用することを含むような動作を、プロセッサ実行可能命令を用いて実行するように前記プロセッサが構成された、請求項1に記載のコンピューティングデバイス。
【請求項１１】
前記コンピューティングデバイスがモバイルデバイスである、請求項1に記載のコンピューティングデバイス。
【請求項１２】
コンピューティングデバイスで動作するアプリケーションが良性かどうかを判定する方法であって、
複数のアプリケーションの各々についてのアクションをアクションのログに記録するステップと、
各挙動ベクトルがその関連付けられたアプリケーションの挙動を特徴付けるように、かつ前記アクションのログに記録された前記アクションに基づいて、前記複数のアプリケーションの各アプリケーションについての挙動ベクトルを生成するステップと、
各挙動ベクトルによって特徴付けられた前記挙動が良性かどうかを判定するステップと
を含む、方法。
【請求項１３】
アプリケーションに関連付けられた前記挙動ベクトルによって特徴付けられた前記挙動が良性ではないと判定したことに応じて、前記アプリケーションを使用から削除または制限するステップ
をさらに含む、請求項12に記載の方法。
【請求項１４】
各アプリケーションについての前記挙動ベクトルを生成するステップが、
前記アクションのログの一組のクエリに基づいて各挙動ベクトルを生成するステップ
を含む、請求項12に記載の方法。
【請求項１５】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成するステップが、その関連付けられたアプリケーションについての前記アクションのログのクエリの結果に基づく数値を含むように各挙動ベクトルを生成するステップを含む、請求項14に記載の方法。
【請求項１６】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成するステップが、
存在クエリ、数量クエリ、順序クエリ、およびカテゴリクエリのうちの少なくとも1つに基づいて各挙動ベクトルを生成するステップ
を含む、請求項14に記載の方法。
【請求項１７】
前記アクションのログの前記一組のクエリに基づいて各挙動ベクトルを生成するステップが、
実際の挙動または予想された挙動を含むクエリに基づいて前記挙動ベクトルのうちの少なくとも1つを生成するステップ
をさらに含む、請求項16に記載の方法。
【請求項１８】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成するステップが、
デバイス独立のアクションを分析するステップ
を含む、請求項12に記載の方法。
【請求項１９】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成するステップが、
デバイス依存のアクションを分析するステップ
を含む、請求項12に記載の方法。
【請求項２０】
前記デバイス依存のアクションを分析するステップが、アプリケーションインストール、デバイス情報、通信、およびユーザとのやりとりを分析するステップをさらに含む、請求項19に記載の方法。
【請求項２１】
複数のアプリケーションの各々についてのアクションをアクションのログに記録することと、
各挙動ベクトルがその関連付けられたアプリケーションの挙動を特徴付けるように、かつ前記アクションのログに記録された前記アクションに基づいて、前記複数のアプリケーションの各アプリケーションについての挙動ベクトルを生成することと、
各挙動ベクトルによって特徴付けられた前記挙動が良性かどうかを判定することと
を含む動作をコンピューティングデバイスのプロセッサに実行させるように構成された、プロセッサ実行可能ソフトウェア命令を記憶した、非一時的コンピュータ可読記憶媒体。
【請求項２２】
アプリケーションに関連付けられた前記挙動ベクトルによって特徴付けられた前記挙動が良性ではないと判定したことに応じて、前記アプリケーションを使用から削除または制限すること
をさらに含む動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成された、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２３】
各アプリケーションについての前記挙動ベクトルを生成することが、
前記アクションのログの一組のクエリに基づいて各挙動ベクトルを生成すること
を含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成された、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２４】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成することが、
存在クエリ、数量クエリ、順序クエリ、およびカテゴリクエリのうちの少なくとも1つに基づいて各挙動ベクトルを生成すること
を含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成された、請求項23に記載の非一時的コンピュータ可読記憶媒体。
【請求項２５】
前記アクションのログの前記一組のクエリに基づいて各挙動ベクトルを生成することが、
実際の挙動または予想された挙動を含むクエリに基づいて前記挙動ベクトルのうちの少なくとも1つを生成すること
を含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成された、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成することが、
デバイス独立のアクションを分析すること
を含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成された、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２７】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成することが、
デバイス依存のアクションを分析すること
を含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成された、請求項21に記載の非一時的コンピュータ可読記憶媒体。
【請求項２８】
前記デバイス依存のアクションを分析することが、アプリケーションインストール、デバイス情報、通信、およびユーザとのやりとりを分析することを含むような動作をプロセッサに実行させるように、前記記憶されたプロセッサ実行可能ソフトウェア命令が構成された、請求項27に記載の非一時的コンピュータ可読記憶媒体。
【請求項２９】
複数のアプリケーションの各々についてのアクションをアクションのログに記録するための手段と、
各挙動ベクトルがその関連付けられたアプリケーションの挙動を特徴付けるように、かつ前記アクションのログに記録された前記アクションに基づいて、前記複数のアプリケーションの各アプリケーションについての挙動ベクトルを生成するための手段と、
各挙動ベクトルによって特徴付けられた前記挙動が良性かどうかを判定するための手段と
を備える、コンピューティングデバイス。
【請求項３０】
アプリケーションに関連付けられた前記挙動ベクトルによって特徴付けられた前記挙動が良性ではないと判定したことに応じて、前記アプリケーションを使用から削除または制限するための手段
をさらに備える、請求項29に記載のコンピューティングデバイス。
【請求項３１】
各アプリケーションについての前記挙動ベクトルを生成するための手段が、
前記アクションのログの一組のクエリに基づいて各挙動ベクトルを生成するための手段
を備える、請求項29に記載のコンピューティングデバイス。
【請求項３２】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成するための手段が、
存在クエリ、数量クエリ、順序クエリ、およびカテゴリクエリのうちの少なくとも1つに基づいて各挙動ベクトルを生成するための手段
を備える、請求項31に記載のコンピューティングデバイス。
【請求項３３】
前記アクションのログの前記一組のクエリに基づいて各挙動ベクトルを生成するための手段が、
実際の挙動または予想された挙動を含むクエリに基づいて前記挙動ベクトルのうちの少なくとも1つを生成するための手段
をさらに備える、請求項32に記載のコンピューティングデバイス。
【請求項３４】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成するための手段が、
デバイス独立のアクションを分析するための手段
を備える、請求項29に記載のコンピューティングデバイス。
【請求項３５】
前記アクションのログの前記一組のクエリに基づいて前記挙動ベクトルを生成するための手段が、
デバイス依存のアクションを分析するための手段
を備える、請求項29に記載のコンピューティングデバイス。
【請求項３６】
前記デバイス依存のアクションを分析するための手段が、アプリケーションインストール、デバイス情報、通信、およびユーザとのやりとりを分析するための手段を備える、請求項35に記載のコンピューティングデバイス。
【国際調査報告】
2015511047.tif 000009
2015511047.tif 000010