(58)【調査した分野】(Int.Cl.,DB名)
アプリケーションに関連付けられた前記挙動ベクトルによって特徴付けられた前記挙動が良性ではないと判定したことに応じて、前記アプリケーションを使用から削除または制限するステップ
をさらに含む、請求項1に記載の方法。
アプリケーションに関連付けられた前記挙動ベクトルによって特徴付けられた前記挙動が良性ではないと判定したことに応じて、前記アプリケーションを使用から削除または制限するための手段
をさらに備える、請求項7に記載のモバイルコンピューティングデバイス。
【発明を実施するための形態】
【0009】
「例示的」または「例」という単語は、本明細書では「例、事例、または例示の働きをすること」を意味するために使用される。「例示的」または「例」として本明細書に記載される任意の態様または実施形態は、他の態様または実施形態に比べて好ましいか、または有利であると必ずしも解釈されるべきではない。
【0010】
図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として分類することができる。
【0011】
コンピューティングデバイス102は、プロセッサ104、メモリ106、およびインターフェース110を含むことができる。コンピューティングデバイス102は、ディスプレイデバイス、ユーザインターフェース(たとえば、キーボード、タッチスクリーンなど)、電源デバイス(たとえば、バッテリ)、ならびに通常コンピューティングデバイスに関連する他の構成要素を含むことができることを諒解されたい。コンピューティングデバイス102は、モバイルデバイスまたは非モバイルデバイスであり得る。たとえば、インターフェース110は、呼およびデータを、ワイヤレスリンクを介してワイヤレスネットワークに/から送信および受信するワイヤレストランシーバであり得るか、またはネットワーク(たとえば、インターネット)への直接接続用の有線インターフェースであり得る。したがって、コンピューティングデバイス102は、モバイルデバイス、ワイヤレスデバイス、携帯電話、携帯情報端末、モバイルコンピュータ、タブレット、パーソナルコンピュータ、ラップトップコンピュータ、サーバコンピュータ、または任意のタイプのコンピューティングデバイスであり得る。
【0012】
コンピューティングデバイス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により、使用から削除または制限されてもよい。
【0013】
後述しているように、本発明の態様は、コンピューティングデバイス102のプロセッサ104および/もしくはコンピューティングデバイス102の他の回路ならびに/または他のデバイスによる命令の実行と連携して実装できることを諒解されたい。詳細には、コンピューティングデバイス102の回路は、プロセッサ104を含むがこれに限定されず、プログラムの制御、ルーチン、または命令の実行の下で動作して、本発明の実施形態による方法またはプロセスを実行することができる。たとえば、そのようなプログラムは、(たとえば、メモリ106および/または他の位置に記憶されている)ファームウェアまたはソフトウェアに実装され得るし、プロセッサ104などのプロセッサ、および/またはコンピューティングデバイス102の他の回路によって実装され得る。さらに、プロセッサ、マイクロプロセッサ、回路、コントローラなどの用語は、論理、コマンド、命令、ソフトウェア、ファームウェア、機能などを実行することが可能な任意のタイプの論理または回路を指すことを諒解されたい。
【0014】
さらに、クエリロガー108、挙動分析エンジン122、および分類器132の機能の一部もしくは全部は、コンピューティングデバイス102自体によって実行され得るし、かつ/または、機能の一部もしくは全部は、インターフェース110を介して(ワイヤレスまたは有線で)コンピューティングデバイス102に接続された別のコンピューティングデバイスによって実行され得ることを諒解されたい。したがって、機能の一部および/または全部は別のコンピューティングデバイスによって実行され得るし、結果はコンピューティングデバイス102に戻され得る。また、特定の態様によれば、分類器132は機械学習分類器であり得るし、コンピューティングデバイス102はモバイルデバイスであり得る。
【0015】
図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により、使用から削除または制限される。クエリロガー、アクションのログ、挙動分析エンジン、および挙動ベクトルの態様は、以下でより詳細に記載される。
【0016】
さらに
図2を参照すると、挙動ベクトル130は、アクションのログ120の一組のクエリ210に基づいて生成することができる。挙動分析エンジン122は、ログ120によって記録されたアクションをクエリ210に基づいて分析して、アプリケーションの挙動を特徴付ける挙動ベクトル130を生成することができ、その結果、分類器は、アプリケーションについての挙動ベクトル130を良性またはマルウェアとして判定および分類することができる。
図3も参照すると、挙動分析エンジン122によって利用され得るクエリ310、アクション320、およびアクションの属性330の例を提供するチャート300が示される。
【0017】
たとえば、一組のクエリ310は、存在クエリ、数量クエリ、順序クエリ、またはカテゴリクエリ(ブロック312)のうちの少なくとも1つまたは複数を含むことができる。クエリ310は、実際の挙動または予想された挙動であり得る。さらなる説明として、挙動分析エンジン122は、デバイス依存のアクション220およびデバイス独立のアクション222を分析することができる。例として、
図3に示されたように、アクション320は、アプリケーションインストール、デバイス情報、通信、およびユーザとのやりとりを含むことができる。さらに、アクション320は、アクセスデバイス情報、ブート時起動、ユーザデータ、パッケージインストール、センサ、位置、媒体、カメラ、SMS、通話、電話情報(ブロック322)を含むことができる。また、開始時刻、終了時刻、事前、事後、存在(ブロック332)などのアクションの属性330は、挙動分析エンジン122によって利用され得る。これらは、挙動分析エンジン122によって利用され得るクエリ、アクション、およびアクションの属性の例にすぎず、多くの他のタイプが利用できることを諒解されたい。
【0018】
前述されたように、1)コンピューティングデバイス102上のアプリケーションの挙動を記録してアクションのログ120を生成するメカニズムを実装するクエリロガー108、2)アクションのログ120を分析し、コンピューティングデバイス102上で動作するアプリケーションの挙動を記述する挙動ベクトル130を生成する挙動分析エンジン122、および、3)挙動ベクトル130を良性またはマルウェアのいずれかのカテゴリに分類する分類器132の3つの構成要素を利用することができる。
【0019】
このようにして、挙動ベクトル130は、コンピューティングデバイス上のマルウェアを検出する挙動分析フレームワークで使用することができる。結果として得られた挙動ベクトル130は、ログ記録から抽出された客観的な観察を含む。一例として、挙動分析エンジン122は、アクションに関するクエリ210(たとえば、「ユーザの同意なしのアプリケーションインストールか?」、「アプリケーションはゲームのように挙動すべきか?」、「ウェブサイトはニュースのように動作すべきか?」、「アプリケーションはSMSメッセージを処理すべきか?」、「アプリケーションは通話を処理すべきか?」など)に回答する。これらのクエリ210に対する回答は、挙動ベクトル130を作成する。
【0020】
例として、各アクションは、4つのタイプのクエリ310である、存在クエリ、数量クエリ、順序クエリ、およびカテゴリクエリのうちの1つまたは複数に関連付けることができる。たとえば、存在クエリ310はアクションセットの存在を参照することができる。このクエリの一例として、クエリは、アプリケーションがデバイス情報にアクセスしたか(たとえば、電話情報にアクセスしたか、位置情報にアクセスしたか、など)どうかを判定することであり得る。挙動分析エンジン122は、アクションのログ120がアプリケーションによるデバイスアクセスの任意のログを含むかどうかを判定することができ、挙動ベクトル130はこれに基づいて設定することができる。たとえば、挙動ベクトル130は、電話情報がアクセスされたことを示すように設定することができる。
【0021】
さらに、数量クエリ310は、アクションの発生回数を参照することができる。このクエリの一例として、クエリは、アプリケーションによるアクションの発生回数を特定することであり得る。一例として、これは送られたSMS(たとえば、SMSを介した発信通信)の数であり得る。したがって、挙動分析エンジン122は、アクションのログ120から送られたSMSの数を特定することができる。このクエリは、SMSが何回送られたかを示す挙動ベクトル130を生成するために使用することができる。
【0022】
別の例として、順序クエリ310は、一連のアクションの発生回数を参照することができる。このクエリの一例として、クエリは、アプリケーションがインストールされる前に(たとえば、インストール前30秒以内に)発生したユーザとのやりとりの回数を特定することであり得る。したがって、挙動分析エンジン122は、アクションのログ120から、アプリケーションがインストールされる前に発生したユーザとのやりとり(たとえば、UIイベント)の回数を特定することができる。このクエリは、アプリケーションのインストール前のUIイベントの数量を示す挙動ベクトル130を生成するために使用することができる。
【0023】
別の例として、カテゴリクエリ310は、アプリケーションがあるカテゴリに属するかどうかを参照することができる。このクエリの一例として、クエリは、アプリケーションがロケーションベースのサービスであるかどうかを判定することであり得る。したがって、挙動分析エンジン122は、アクションのログ120から、アプリケーションがロケーションベースのサービスであるかどうか、および(ログに基づいて)位置情報がアクセスされているカテゴリにアプリケーションが属するかどうかを判定することができる。一例として、このクエリは、位置情報が検索される回数に関係する挙動ベクトル130として使用することができる。
【0024】
さらに、多種多様な異なるタイプのアクション320である、アプリケーションインストール、デバイス情報、通信、ユーザとのやりとり、アクセスデバイス情報、ブート時起動、ユーザデータ、パッケージインストール、センサ、位置、媒体、カメラ、SMS、通話、および電話情報(ブロック322)は、挙動分析エンジン122によって利用されて、挙動ベクトル130を生成することができる。アクションのログ120によって記録されたようなこれらのアクションの各々は、挙動分析エンジン122によって利用されて、アプリケーションの挙動を特徴付ける挙動ベクトル130を生成することができる。その上、多種多様な異なるタイプのアクションの属性330である、開始時刻、終了時刻、事前、事後、および存在(ブロック332)は、挙動分析エンジン122によって利用されて、挙動ベクトル130を生成することができる。アクションのログ120によって記録されたようなこれらのアクションの属性の各々は、挙動分析エンジン122によって利用されて、アプリケーションの挙動を特徴付ける挙動ベクトル130の生成に役立つことができる。
【0025】
特に、
図2に示されたように、挙動ベクトル130[1,0,0.207,0,2,5,...]は、アクションのログ120によって記録されたようなクエリ、アクション、アクションの属性などに基づいて、挙動分析エンジン122によって生成されて、アプリケーションの挙動を特徴付けることができる。一例として、異なるタイプのアクションの場合、約5の挙動ベクトルは頻繁な使用を示すことができ、約1〜2の挙動ベクトルはまれな使用を示すことができ、約0の挙動ベクトルは未使用を示すことができる。多種多様な異なるタイプのアプリケーション、監視されたアクション、および、挙動ベクトル130を生成する挙動分析エンジン122によるそれらの分析は、以下に記載される。
【0026】
アクションのログ120によって記録され、かつ挙動分析エンジン122によって分析されたような、実際のアクションに基づく挙動ベクトル130の生成に関して、観察または監視されるべきこれらのアクションは、マルウェアを識別する高い確率を表すので、監視されるべき挙動またはアクションのタイプを識別することに基づく場合がある。たとえば、システムの専門家は、どのセットのシステムイベントが、マルウェアである高い確率を有する高レベルの挙動またはアクションに関係するかを識別することができる。
【0027】
図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を生成することができる。
【0028】
一例として、ゲームアプリケーションの場合、クエリロガー108は、ネットワーク428の使用(たとえば、ウェブサイトとのネットワーク通信)、ユーザインターフェースイベントおよびセンサ420の使用(たとえば、ユーザがゲームで遊ぶときコンピューティングデバイスを保持するユーザとのタッチセンサ)に関するアプリケーションライブラリ412およびネイティブライブラリ414の実質的な使用のアクション、ならびに実質的な媒体のアクションなどの他のアクションのログを生成することができる。このようにして、挙動分析エンジン122は、クエリロガー108からのアプリケーションについてのアクションのログ120を分析して、頻繁なネットワークの使用、センサの使用、および媒体の使用などのアプリケーションの挙動を特徴付けるアプリケーションについての挙動ベクトル130を生成することができる。多種多様な異なるタイプのアプリケーション、監視されたアクション、および、挙動ベクトル130を生成する挙動分析エンジン122によるそれらの分析は、以下に記載される。
【0029】
図5を参照すると、
図5は、分類器132がアプリケーションを良性またはマルウェアとして識別できるように、アプリケーションの挙動を特徴付ける挙動ベクトル130を生成するために、挙動分析エンジン122を利用してクエリロガー108からのアクションのログ120を分析した結果を示す表500である。
【0030】
表500に示されたように、複数のアプリケーションは、挙動分析エンジンを利用して分析される。特に、以下のアプリケーション、ゲーム502、ユーチューブ504、ノートパッド506、フィットネス508、ニュース510、偽装ユーチューブ520、偽装ホテル検索522、スパイウェア524、偽装ゲーム526、および偽装ムービープレーヤ528が、良性538またはマルウェア536として分類される。
【0031】
これらのアプリケーションの各々について、挙動ベクトル529は、クエリロガーからのアクションのログの分析に基づいて、挙動分析エンジンによって生成される。挙動ベクトルは、頻繁な使用530、まれな使用532、および未使用534であるように簡略化される。数値的な一例として、約5の挙動ベクトルは頻繁な使用を示すことができ、約1〜2の挙動ベクトルはまれな使用を示すことができ、約0の挙動ベクトルは未使用を示すことができる。当然、任意の数値指示を利用することができる。挙動ベクトルは、ユーザインターフェース(UI)アクション550、通信アクション552、センサアクション554、位置556、媒体アクション558、カメラアクション560、SMSアクション562、通話アクション564、および電話情報566に基づいて生成される。これに基づいて、アプリケーションは、マルウェアアプリケーション536または良性アプリケーション538として示される。
【0032】
アプリケーションが良性またはマルウェアとして識別され得るように、アプリケーションの挙動を特徴付ける挙動ベクトルを生成するために、挙動分析エンジンを利用してクエリロガーからのアクションのログを分析した結果を示す様々な例がここで記載される。たとえば、頻繁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として分類される。
【0033】
一方、まれ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として分類される。
【0034】
広範な挙動ベクトル130のセットを生成するために挙動分析エンジン122により、クエリロガー108からのアクションのログ120から分析された広範なアクションのセットを有することによって、十分に分化している特徴を分析してアプリケーションがマルウェアとして、または良性として分類されるべきかを判定できることが分かっている。多くの悪意のあるアプリケーションが、ユーザ情報を盗み、かつ/または虚偽の課金を行って金を稼ぐ(たとえば、偽のSMS課金)ように試みることがある。さらに、アプリケーションがマルウェアか良性かを判定するためにコンピューティングデバイス102上のアプリケーションを特徴付け、比較し、分類する目的で挙動分析を利用することは、(シグネチャベースのマルウェア検出とは対照的に)限られたプロセッサおよびメモリの機能を利用し、新しいマルウェアまたは新しい必要なシグネチャに関するサーバからの更新を待つ必要なしに、すぐに行うことができる。
【0035】
さらに
図6を参照すると、本発明の別の態様によれば、サーバ620を含むシステム600は、一群のコンピューティングデバイス602からの挙動レポートを集約するために利用することができる。ただ1つのコンピューティングデバイス602が示されているが、以下に記載される態様は、複数または一群のコンピューティングデバイス602に関する。コンピューティングデバイス602の構成要素および機能は、前にコンピューティングデバイス102を参照して記載された方式と同じ方式で動作するので、これらの構成要素および機能は簡潔のために詳細には繰り返さない。一態様では、サーバ620は、少なくとも処理回路624、挙動分析エンジン626、およびグローバル分類器628を含む構成要素622を備える。処理回路624は送信機および受信機を含むことができる。挙動分析エンジン、クエリロガー、挙動ベクトル、分類器など、ならびに他の構成要素および機能の使用は、詳細に前に説明されている。処理回路624は、処理回路624または他の構成要素に結合されたメモリに記憶された命令に基づいて、受信機、送信機、挙動分析エンジン626、グローバル分類器628、ならびに他の構成要素を実装し、それらと動作するための命令を実行するように構成することができる。サーバが利用するプロセッサおよびメモリが当技術分野でよく知られていることは、当業者によって諒解されよう。
【0036】
一態様では、サーバ620の処理回路624の受信機は、(たとえば、コンピューティングデバイス602がその挙動分析エンジン608を介してアプリケーションの挙動が疑わしい場合があると判断するか、または不定期に挙動ベクトルが更新情報を設定したとき(判定ブロック612参照))、複数の異なるコンピューティングデバイス602から複数の挙動ベクトルセット610を受信することができる。前述されたように、挙動ベクトルセット610は、アプリケーションの挙動を特徴付ける。サーバ620の挙動分析エンジン626は、コンピューティングデバイス602から受信された挙動ベクトルセット610に基づいて、グローバル分類器628を更新することができる。さらに、後述しているように、グローバル分類器628は、疑わしい挙動を有するとアプリケーションを識別した(たとえば、ブロック612)、コンピューティングデバイス602から受信されたアプリケーションについての挙動ベクトルセットを、良性またはマルウェアとして分類することができる。
【0037】
特定の一態様では、コンピューティングデバイス602は、アプリケーションの挙動が疑わしいと判断することができ、そのアプリケーションについての挙動ベクトルセット610をサーバ620に送信して、サーバ620に挙動ベクトルセット610を分析させることができる。サーバ620のグローバル分類器628は、送信された挙動ベクトルセット610を良性またはマルウェアとして分類することができる。アプリケーションについての挙動ベクトルセット610がマルウェアとして分類された場合、マルウェアインジケータを複数のコンピューティングデバイス602に送信することができ、コンピューティングデバイス602はアプリケーションを削除632することができる。
【0038】
さらに、サーバ620は、処理回路624の送信機を介して、複数のコンピューティングデバイス602に更新情報を送信することができ、更新情報は、複数のコンピューティングデバイス602の挙動分析エンジン608を更新するために使用される。このようにして、挙動ベクトルセットのすべておよび一群のコンピューティングデバイス602から受信された他のデータに基づいて、サーバ620は、コンピューティングデバイス自体によって実行された挙動分析を周期的に更新することができる。
【0039】
したがって、サーバ620は、一群のコンピューティングデバイス602からの挙動レポートを集約することによって、クラウドソーシングサーバとして動作する。経時的に大量の入力セットを収集することによって、より正確で更新された挙動モデルが迅速な方式で生成され、すべての動作中のコンピューティングデバイス602に伝えることができる。また、アプリケーションがマルウェアであると判定されたとき、コンピューティングデバイス602のすべてにこれを通知することができる。
【0040】
動作の一例として、
図6に示されたように、コンピューティングデバイス602のクエリロガー604は、アプリケーションの挙動を記録して、アクションのログ606を生成することができる。次に、コンピューティングデバイス602の挙動分析エンジン608は、アクションのログ606を分析して、アプリケーションの挙動を特徴付ける挙動ベクトルセット610を生成することができる。一例として、挙動ベクトルセット610は、少なくとも1つの数値を含むことができる。判定ブロック612で、挙動ベクトルセットがアプリケーションについて疑わしい何かを示すことをコンピューティングデバイス602の分類器が見つけなかった(たとえば、それがマルウェアである可能性が低い)場合、ログは削除され(ブロック616)、プロセスは終了する(ブロック618)。これらの機能の多くは詳細に前述された。
【0041】
しかしながら、コンピューティングデバイス602により挙動が疑わしいと判定された(判定ブロック612)場合、コンピューティングデバイス602は、アプリケーションの使用をブロックすることができ(ブロック614)、挙動ベクトルセット610をサーバ620に送信することができる。サーバ620は、処理回路624を介して挙動ベクトルセット610を受信することができ、挙動ベクトルセット610を検査して、アプリケーションが良性かマルウェアかを判定することができる。また、コンピューティングデバイス602からサーバ620に送信された挙動ベクトルセット610は、アプリケーションがブロックされたことのインジケータも含むことができる。加えて、コンピューティングデバイス602は、ログならびに他のデータをサーバ620に送信することができる。このステップは、リアルタイムに(すなわち、挙動が分類されたそのときに)発生する場合があるか、または後で(たとえば、デバイスが帯域幅または電力により良くアクセスしたとき)発生する場合があることに留意されたい。
【0042】
受信された挙動ベクトルセット610に基づいて、サーバ620のグローバル分類器628は、アプリケーションを良性またはマルウェアとして分類することができる。アプリケーションについての挙動ベクトルセット610がマルウェアとして分類された場合、マルウェアインジケータを複数のコンピューティングデバイス602に送信することができる。これに基づいて、コンピューティングデバイス602がマルウェア指示を受信した(判定ブロック630)場合、コンピューティングデバイス602はアプリケーションを削除することができる(ブロック632)。しかしながら、アプリケーションがマルウェアでなかった場合、ログを削除することができ(ブロック616)、プロセスは完了または終了し(ブロック618)、その結果、コンピューティングデバイス602は、アプリケーションの利用を含む正常動作を維持することができる。
【0043】
別の態様では、アプリケーションの挙動が疑わしくないとコンピューティングデバイス602が判定したとき(ブロック612)、コンピューティングデバイス602は、時々アプリケーションに関係するそれらの挙動ベクトルセット610(ならびに、ログ、クエリ、および他の情報)をサーバ620に送信し、その結果、サーバ620の挙動分析エンジン626およびグローバル分類器628は、コンピューティングデバイス602によって利用されているアプリケーションに関する幅広い情報を受信する。このようにして、コンピューティングデバイス602のすべては、サーバ620がその挙動モデリングにおいて更新され続けるように協調作業する。
【0044】
同様に、サーバ620は、処理回路624を介して、時々複数のコンピューティングデバイス602に更新情報を送信し、更新情報はコンピューティングデバイス602によって使用されて、それらの挙動分析エンジン608および分類器を更新し、それらの挙動モデリングおよびアプリケーションの分析を全体的に更新することができる。また、サーバ620は、処理回路624を介して、時々複数のコンピューティングデバイス602に更新されたクエリを送信し、コンピューティングデバイスは、更新されたクエリを利用してそれらのアクションのログ606を照会し、それらのクエリロガー604を更新することができ、更新されたクエリは、コンピューティングデバイスの挙動分析エンジン608および分類器と連携して利用されて、挙動モデリングおよびアプリケーションの分析を更新することができる。このようにして、挙動更新情報、挙動ベクトルセット、クエリ、ならびにサーバ620から受信された他のデータに基づいて、コンピューティングデバイス602は、コンピューティングデバイス602自体によって実行された挙動分析を周期的に更新することができる。
【0045】
したがって、サーバ620は、一群のコンピューティングデバイス602からの挙動レポートを集約することによって、クラウドソーシングサーバとして動作する。本質的に、サーバ620は、一群のコンピューティングデバイス602からの協調的なアップロードから得られた良性および悪性の挙動モデルに対して、アプリケーションの挙動を評価することができる。経時的に大量の入力セットを収集することによって、より正確で更新された挙動モデルが迅速な方式で生成され、すべての動作中のコンピューティングデバイス602に伝えることができる。個々のコンピューティングデバイスによる偏りを説明することができる。その上、個々のコンピューティングデバイス602は、他のコンピューティングデバイスからの一群のレポートに基づいて生成された挙動モデルを活用することができる。また、アプリケーションがマルウェアであると判定されたとき、コンピューティングデバイス602のすべてにこれを通知することができる。さらに、マルウェア検出のための個々のコンピューティングデバイス602上の監視および計算のオーバーヘッドは、クラウドベースのサーバ620を利用することによって低減することができる。特に、協調的な分析を利用することによって、大量の挙動ベクトルおよびログは、時宜を得たマルウェア検出用に、一群のコンピューティングデバイス602からサーバ620によって蓄積することができる。したがって、結果として得られた挙動モデルは、正確(低い誤検出および検出漏れ)と一般的(多種多様な異なるタイプのマルウェアを捕捉できる)の両方であり得る。各コンピューティングデバイス602での挙動分析エンジン608用の挙動モデルは一意であることに留意されたい。さらに、サーバ620から受信された特徴全体は、コンピューティングデバイス602用に一意に修正される。
【0046】
一例として、一群のコンピューティングデバイス602をサーバ620と協調させる際に、3つの異なるステップである、初期化、協調的な挙動モデリングおよびマルウェア検出、ならびに挙動モデルの更新を利用することができる。初期化に関して、(たとえば、コンピューティングデバイス602用の)挙動分析エンジンおよび分類器は、一組の既知の悪いアプリケーション、すなわちマルウェア、および一組の既知の良いアプリケーションによって訓練することができる。訓練プロセスは、標準の監修された機械学習技法を使用して遂行することができる。コンピューティングデバイス602がユーザに提供される前に、コンピューティングデバイス602は、その挙動分析エンジン608用の最新の挙動モデルをサーバ620から得る必要があり得る。加えて、サーバ620は、挙動分析エンジンを利用してAPIログから、記録されるべきAPIのリスト、および挙動ベクトル(たとえば、アプリケーションの挙動の簡潔な表現)をどのように生成するかに関する指示を、コンピューティングデバイス602に提供することができる。
【0047】
協調的な挙動モデリングおよびマルウェア検出に関して、前述されたように、ユーザが自分のコンピューティングデバイス602を利用しているとき、コンピューティングデバイス602は、動作中のアプリケーションごとに挙動分析エンジン608を利用して、挙動ベクトル610を周期的に監視および計算し、分類器を利用することによって、このアプリケーションがマルウェアと同様に挙動するか、良性アプリケーションと同様に挙動するかを判定することができる。コンピューティングデバイス602によって悪意があると分類されたアプリケーションは、サーバ620によって確認され得るし、コンピューティングデバイス602から削除される(ブロック632)か、またはインストールを拒否されるべきである。良性として分類されたアプリケーションは、完全なアクセス許可を得て動作することができる。疑わしいと判定された(ブロック612)、たとえば、コンピューティングデバイス602自体によってローカルに疑惑を検出されたが、さらなる調査が必要なアプリケーションの場合、これらのケースでは、コンピューティングデバイス602は、アプリケーションを制約付きの環境に入れることができ、制限されたアクセスしか許可されない場合がある。次いで、このアプリケーションは、前述されたように、さらなる調査のためにサーバ620に報告することができる。
【0048】
挙動モデルの更新に関して、協調作業を可能にするために、コンピューティングデバイス602は、前述されたように、それらの挙動ベクトル610および他のデータをサーバ620に周期的にアップロードする。サーバ620は、さらにコンピューティングデバイス602から元のログも要求することができる。リソースが豊富なマシン(またはクラスタ)であり得るサーバ620は、挙動分析エンジン626およびグローバル分類器628を介して、徹底的な分析を実行し、次いで挙動モデルを更新することができる。更新後モデルが著しく変化した場合、サーバ620は、コンピューティングデバイス602の挙動分析エンジン608および分類器に更新された挙動モデルを強要することができる。より多くのデータが収集されるにつれて、変化は低頻度になり得るし、モデルは安定する。
【0049】
したがって、前述されたシステムは、静的分析およびシグネチャベースのアンチウイルス手法と補完関係にある、保護の追加の層として働くことができる。1つの特定の利益に関して、アンチウイルスのデータベースに追加されていないマルウェア、またはインストール時に良性であるように見せかけるマルウェアを検出することができる。特に、サーバ620は、一群のコンピューティングデバイス602からの挙動レポートを集約することによって、クラウドソーシングサーバとして動作する。本質的に、サーバ620は、一群のコンピューティングデバイス602からの協調的なアップロードから得られた良性および悪性の挙動モデルに対して、アプリケーションの挙動を評価することができる。経時的に大量の入力セットを収集することによって、より正確で更新された挙動モデルが迅速な方式で生成され、すべての動作中のコンピューティングデバイス602に伝えることができる。
【0050】
コンピューティングデバイスまたはサーバがモバイルデバイスまたはワイヤレスデバイスである場合、それは、任意の適切なワイヤレス通信技術に基づくか、または場合によってはそれをサポートするワイヤレスネットワークにより、1つまたは複数のワイヤレス通信リンクを介して通信することができることを諒解されたい。たとえば、いくつかの態様では、コンピューティングデバイスまたはサーバは、ワイヤレスネットワークを含むネットワークと関連付けることができる。いくつかの態様では、ネットワークは、ボディエリアネットワークまたはパーソナルエリアネットワーク(たとえば、超広帯域ネットワーク)を備えることができる。いくつかの態様では、ネットワークは、ローカルエリアネットワークまたはワイドエリアネットワークを備えることができる。ワイヤレスデバイスは、たとえばCDMA、TDMA、OFDM、OFDMA、WiMAX、およびWi-Fiなどの多種多様なワイヤレス通信技術、プロトコル、または規格のうちの1つまたは複数をサポートするか、または場合によっては使用することができる。同様に、ワイヤレスデバイスは、多種多様な対応する変調方式または多重化方式のうちの1つまたは複数をサポートするか、または場合によっては使用することができる。したがって、ワイヤレスデバイスは、上記または他のワイヤレス通信技術を使用して、1つまたは複数のワイヤレス通信リンクを確立し、それを介して通信するのに適した構成要素(たとえばエアインターフェース)を含むことができる。たとえば、デバイスは、ワイヤレス媒体を介した通信を容易にする様々な構成要素(たとえば、信号発生器および信号処理器)を含むことができる、関連する送信機および受信機の構成要素(たとえば、送信機および受信機)を有するワイヤレス送受信機を備えることができる。よく知られているように、モバイルワイヤレスデバイスは、したがって、他のモバイルデバイス、携帯電話、他の有線およびワイヤレスのコンピュータ、インターネットウェブサイトなどとワイヤレスに通信することができる。
【0051】
本明細書に記載された技法は、符号分割多元接続(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)という名称の組織からの文書に記述されている。
【0052】
本明細書の教示は、多種多様な装置(たとえば、デバイス)に組み込む(たとえば、それらの内部に実装するか、またはそれらによって実行する)ことができる。たとえば、本明細書で教示された1つまたは複数の態様は、電話(たとえば、携帯電話)、携帯情報端末(「PDA」)、タブレット、モバイルコンピュータ、ラップトップコンピュータ、タブレット、エンターテインメントデバイス(たとえば、音楽デバイスもしくはビデオデバイス)、ヘッドセット(たとえば、ヘッドフォン、イヤピースなど)、医療用デバイス(たとえば、生体センサ、心拍数モニタ、歩数計、EKGデバイスなど)、ユーザI/Oデバイス、コンピュータ、サーバ、POSデバイス、エンターテインメントデバイス、セットトップボックス、または任意の他の適切なデバイスに組み込むことができる。これらのデバイスは、様々な電力要件およびデータ要件を有する場合がある。
【0053】
いくつかの態様では、ワイヤレスデバイスは、通信システム用のアクセスデバイス(たとえば、Wi-Fiアクセスポイント)を備えることができる。そのようなアクセスデバイスは、たとえば、有線またはワイヤレスの通信リンクを介した、別のネットワーク(たとえば、インターネットまたはセルラーネットワークなどのワイドエリアネットワーク)への接続を提供することができる。したがって、アクセスデバイスは、別のデバイス(たとえば、Wi-Fi局)が他のネットワークまたは何らかの他の機能にアクセスすることを可能にすることができる。加えて、デバイスのうちの1つまたは両方は携帯型であるか、または場合によっては比較的非携帯型であり得ることを諒解されたい。
【0054】
情報および信号は、多種多様な異なる技術および技法のいずれかを使用して表され得ることを、当業者は理解されよう。たとえば、上記の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【0055】
本明細書で開示された実施形態に関連して記載された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者はさらに諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、上記では概してそれらの機能に関して記載された。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、記載された機能を特定の適用例ごとに様々な方法で実装できるが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
【0056】
本明細書で開示された実施形態に関連して記載された様々な例示的な論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または、本明細書に記載された機能を実行するように設計されたそれらの任意の組合せで、実装または実行することができる。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装することができる。
【0057】
本明細書で開示された実施形態に関連して記載された方法またはアルゴリズムのステップは、直接ハードウェアで具現化されるか、プロセッサによって実行されるソフトウェアモジュールで具現化されるか、またはその2つの組合せで具現化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体に常駐することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC内に常駐することができる。ASICはユーザ端末内に常駐することができる。代替として、プロセッサおよび記憶媒体は、ユーザ端末内に個別構成要素として常駐することができる。
【0058】
1つまたは複数の例示的な実施形態では、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装することができる。コンピュータプログラム製品としてソフトウェアに実装された場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、命令もしくはデータ構造の形態で所望のプログラムコードを搬送もしくは記憶するために使用でき、コンピュータによってアクセスできる、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0059】
開示された実施形態の上記の説明は、任意の当業者が本発明を作製または使用することを可能にするために提供される。これらの実施形態への様々な修正が当業者には容易に明らかになり、本明細書に定義された一般原理は、本発明の趣旨または範囲を逸脱することなく他の実施形態に適用することができる。したがって、本発明は、本明細書に示された実施形態に限定されるものではなく、本明細書で開示された原理および新規の特徴に一致する最大の範囲を与えられるものである。