IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ パロ アルト ネットワークス,インコーポレイテッドの特許一覧

<>
  • 特許-インラインマルウェア検出 図1
  • 特許-インラインマルウェア検出 図2A
  • 特許-インラインマルウェア検出 図2B
  • 特許-インラインマルウェア検出 図3
  • 特許-インラインマルウェア検出 図4
  • 特許-インラインマルウェア検出 図5
  • 特許-インラインマルウェア検出 図6
  • 特許-インラインマルウェア検出 図7A
  • 特許-インラインマルウェア検出 図7B
  • 特許-インラインマルウェア検出 図8A
  • 特許-インラインマルウェア検出 図8B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-27
(45)【発行日】2024-01-11
(54)【発明の名称】インラインマルウェア検出
(51)【国際特許分類】
   G06F 21/56 20130101AFI20231228BHJP
【FI】
G06F21/56 320
【請求項の数】 18
(21)【出願番号】P 2022502913
(86)(22)【出願日】2020-07-06
(65)【公表番号】
(43)【公表日】2022-09-22
(86)【国際出願番号】 US2020040928
(87)【国際公開番号】W WO2021015941
(87)【国際公開日】2021-01-28
【審査請求日】2022-03-09
(31)【優先権主張番号】16/517,465
(32)【優先日】2019-07-19
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/517,463
(32)【優先日】2019-07-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】517392861
【氏名又は名称】パロ アルト ネットワークス,インコーポレイテッド
【氏名又は名称原語表記】Palo Alto Networks,Inc.
【住所又は居所原語表記】3000 Tannery Way,Santa Clara,California 95054,United States of America
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ヒューレット,ウィリアム,レディントン
(72)【発明者】
【氏名】デン,スイシャン
(72)【発明者】
【氏名】ヤン,シェン
(72)【発明者】
【氏名】ラム,ホ,ユ
【審査官】宮司 卓佳
(56)【参考文献】
【文献】米国特許出願公開第2018/0293381(US,A1)
【文献】米国特許出願公開第2018/0300482(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
システムであって、
プロセッサであり、
1つ以上のサンプル分類モデルを含むセットをネットワーク装置に保管し
受信したファイルに関連付けられた受信パケットのシーケンスについてnグラム解析を実行し、前記nグラム解析の実行は、少なくとも1つの保管されたサンプル分類モデルを使用することを含み、
前記受信パケットのシーケンスの前記nグラム解析に少なくとも部分的に基づいて、前記受信したファイルが悪意のものであると決定し、かつ、前記ファイルが悪意のものであるとの決定に応じて、前記受信したファイルの伝搬を防止する、
ように構成されている、プロセッサと、
前記プロセッサに結合され、かつ、前記プロセッサに命令を提供するように構成されている、メモリと、
含み、
前記プロセッサは、
前記ファイルに関連付けられたファイルタイプを決定し、
前記1つ以上のサンプル分類モデルのセットから、前記ファイルに関連付けられた前記決定されたファイルタイプに基づいて、線形分類モデルを選択する、
ように構成されている、
システム。
【請求項2】
前記プロセッサは、
前記受信パケットにおけるnグラムをnグラムの既定のリストに対して比較することによって、前記nグラム解析を少なくとも部分的に実行する、
ように構成されている、請求項1に記載のシステム。
【請求項3】
前記nグラムの既定のリストは、複数の事前に収集されたマルウェアサンプルを使用して生成されたものである、
請求項2に記載のシステム。
【請求項4】
前記nグラム解析を実行することは、観測されたnグラムに対応する重み付けのセットを累積すること、を含む、
請求項に記載のシステム。
【請求項5】
前記重み付けは、単一のフロート値において累積される、
請求項に記載のシステム。
【請求項6】
前記プロセッサは、
前記1つ以上のサンプル分類モデルのセットから、前記ファイルに関連付けられた前記決定されたファイルタイプに基づいて、非線形分類モデルを選択する、
ように構成されている、請求項に記載のシステム。
【請求項7】
前記非線形分類モデルはグラム特徴および非nグラム特徴を含む、
請求項に記載のシステム。
【請求項8】
少なくとも1つの非nグラム特徴は、ファイルサイズに関連付けられている、
請求項に記載のシステム。
【請求項9】
少なくとも1つの非nグラム特徴は、オーバーレイの存在に関連付けられている、
請求項に記載のシステム。
【請求項10】
前記nグラム解析を実行することは、前記特徴が一致するときはいつでも、特徴ベクトル内の特徴について値を更新すること、を含む、
請求項に記載のシステム。
【請求項11】
前記少なくとも1つの保管されたサンプル分類モデルを使用することは、意図されたファイル長に到達するまで、パケットストリームに対して非線形分類器を実行すること、を含む、
請求項1に記載のシステム。
【請求項12】
前記意図されたファイル長は、実際のファイル長ではなく、かつ、前記ファイルの実際の終端に到達する前に裁決が決定される、
請求項11に記載のシステム。
【請求項13】
前記プロセッサは、さらに、
少なくとも1つの更新された分類モデルを受信する、
ように構成されている、請求項1に記載のシステム。
【請求項14】
前記nグラム解析は、トラフィックストリームの単一パス解析として、他のパケット解析を用いてインラインで実行される、
請求項1に記載のシステム。
【請求項15】
前記プロセッサは、さらに、
前記nグラム解析を実行する際に、ホワイトリストにあるnグラムのセット使用する、
ように構成されている、請求項1に記載のシステム。
【請求項16】
前記プロセッサは、さらに、
前記受信したファイルのコピーをセキュリティプラットフォームに送信し、かつ、前記セキュリティプラットフォームからの裁決を待つ間に、前記nグラム解析を実行する、
ように構成されている、請求項1に記載のシステム。
【請求項17】
方法であって、
コンピュータシステムのプロセッサが、1つ以上のサンプル分類を含むセットをネットワーク装置に保管するステップと、
前記プロセッサが、受信したファイルに関連付けられた受信パケットのシーケンスについてnグラム解析を実行するステップであり、前記nグラム解析の実行は、少なくとも1つの保管されたサンプル分類モデルを使用することを含む、ステップと、
前記プロセッサが、前記受信パケットのシーケンスの前記nグラム解析に少なくとも部分的に基づいて、前記受信したファイルが悪意のものであると決定し、かつ、前記ファイルが悪意のものであるとの決定に応じて、前記受信したファイルの伝搬を防止する、ステップと、
含み、
前記プロセッサは、
前記ファイルに関連付けられたファイルタイプを決定し、
前記1つ以上のサンプル分類モデルのセットから、前記ファイルに関連付けられた前記決定されたファイルタイプに基づいて、線形分類モデルを選択する、
ように構成されている、
方法。
【請求項18】
有形のコンピュータ読取り可能な記憶媒体に保管されている、複数のコンピュータ命令を含むコンピュータプログラムであって、
コンピュータ命令が実行されると、コンピュータに、
1つ以上のサンプル分類を含むセットをネットワーク装置に保管するステップと、
受信したファイルに関連付けられた受信パケットのシーケンスについてnグラム解析を実行するステップであり、前記nグラム解析の実行は、少なくとも1つの保管されたサンプル分類モデルを使用することを含む、ステップと、
前記受信パケットのシーケンスの前記nグラム解析に少なくとも部分的に基づいて、前記受信したファイルが悪意のものであると決定し、かつ、前記ファイルが悪意のものであるとの決定に応じて、前記受信したファイルの伝搬を防止する、ステップと、
を実施させ
前記コンピュータのプロセッサは、
前記ファイルに関連付けられたファイルタイプを決定し、
前記1つ以上のサンプル分類モデルのセットから、前記ファイルに関連付けられた前記決定されたファイルタイプに基づいて、線形分類モデルを選択する、
ように構成されている、
コンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
マルウェアは、悪意のあるソフトウェア(例えば、様々な敵対的、侵入的、及び/又は、望ましくないソフトウェアを含む)を参照する一般的な用語である。マルウェアは、コード、スクリプト、アクティブコンテンツ、及び/又は、他のソフトウェアの形態であり得る。マルウェアの使用例は、コンピュータ及び/又はネットワークの動作の中断、機密情報(proprietary information)(例えば、身元、財務、及び/又は、知的財産関連情報といった、秘密情報)の盗用、及び/又は、私的/専有コンピュータシステム及び/又はコンピュータネットワークへのアクセスの獲得、を含む。不幸にも、マルウェアの検出および軽減に役立つ技法が開発されるにつれて、悪意のある作家は、そうした努力を回避する方法を見つけるようになる。従って、マルウェアを識別し、かつ、軽減するための技法を改善する必要性が継続的に存在している。
【図面の簡単な説明】
【0002】
本発明の様々な実施形態が、以下の詳細な説明および添付の図面において開示されている。
図1図1は、悪意のあるアプリケーションが検出され、危害を引き起こすことを防止する環境の一つの実施例を示している。
図2A図2Aは、データ機器の一つの実施形態を示している。
図2B図2Bは、データ機器の一つの実施形態の論理コンポーネントの機能図である。
図3図3は、サンプルを解析するためのシステムに含めることができる論理コンポーネントの一つの実施例を示している。
図4図4は、脅威エンジン(threat engine)の一つの例示的な実施形態の部分を示している。
図5図5は、ツリーの一部について一つの実施例を示している。
図6図6は、データ機器においてインラインマルウェア検出を実行するためのプロセスついて一つの実施例を示している。
図7A図7Aは、ファイルについて一つの例示的なハッシュテーブルを示している。
図7B図7Bは、サンプルについて一つの例示的な脅威署名を示している。
図8A図8Aは、特徴抽出を実行するためのプロセスについて一つの実施例を示している。
図8B図8Bは、モデルを生成するためのプロセスについて一つの実施例を示している。
【発明を実施するための形態】
【0003】
本発明は、プロセス、装置、システム、合成物、コンピュータ読取り可能な記憶媒体上に具現化されたコンピュータプログラム製品、及び/又は、プロセッサを含む、多数の方法で実施することができる。プロセッサに結合されたメモリに保管され、かつ/あるいは、それによって提供される命令を実行するように構成されたプロセッサ、といったものである。この明細書では、これらの実施形態、または、本発明が採用し得るその他の形態は、技法(technique)と称される。一般的に、開示されるプロセスのステップの順序は、本発明の範囲内で変更され得る。特に指示のない限り、タスクを実行するように構成されているものと説明されたプロセッサまたはメモリといったコンポーネントは、所与の時間にタスクを実行するように一時的に構成される一般的なコンポーネント、または、タスクを実行するように製造されている特定のコンポーネントとして実装することができる。ここにおいて使用されるように、用語「プロセッサ(“processor”)」は、コンピュータプログラム命令などのデータを処理するように構成された1つ以上のデバイス、回路、及び/又は、処理コアを参照する。
【0004】
本発明の1つ以上の実施形態の詳細な説明は、本発明の原理を説明する添付の図面と共に、以下で提供されている。本発明は、そうした実施形態に関連して説明されるが、本発明は、任意の実施形態に限定されるものではない。本発明の範囲は、請求項によってのみ限定されるものであり、そして、本発明は、多数の代替物、修正物、および均等物を包含している。本発明の完全な理解を提供するために、以下の説明において多数の具体的な詳細が記載されている。これらの詳細は、例示のために提供されているものであり、そして、本発明は、これらの特定の詳細の一部または全部を伴わずに、請求項に従って実施することができる。明確化のために、発明に関連する技術分野において周知の技術的資料は、発明が不必要に不明瞭にならないように詳細には説明されない。
【0005】
I.概要
【0006】
ファイアウォールは、一般的に、承認された通信がファイアウォールを通過するのを許可し、一方で、不正アクセスからネットワークを保護している。ファイアウォールは、典型的には、ネットワークアクセスのためにファイアウォール機能を提供する、デバイス、一式のデバイス、または、デバイスにおいて実行されるソフトウェアである。例えば、ファイアウォールは、デバイス(例えば、コンピュータ、スマートフォン、または、他のタイプのネットワーク通信可能なデバイス)のオペレーティングシステムの中に統合することができる。ファイアウォールは、また、コンピュータサーバ、ゲートウェイ、ネットワーク/ルーティング(routing)デバイス(例えば、ネットワークルータ)、または、データ機器(例えば、セキュリティ機器、または他のタイプの特殊目的デバイス)といった、様々なタイプのデバイスまたはセキュリティデバイス上のソフトウェアアプリケーションとして統合され、または実行することができ、そして、いくつかの実装では、特定の動作は、ASICまたはFPGAといった、特定目的ハードウェアで実装することができる。
る。
【0007】
ファイアウォールは、典型的に、一式のルールに基づいてネットワーク送信を拒否または許可する。これらのルールのセットは、しばしば、ポリシ(例えば、ネットワークポリシ、またはネットワークセキュリティポリシ)として参照される。例えば、ファイアウォールは、不要な外部トラフィックが保護デバイスに到達するのを防ぐために、一式のルールまたはポリシを適用することによって、インバウンドトラフィック(inbound traffic)をフィルタリングすることができる。ファイアウォールは、また、一式のルールまたはポリシを適用することによってアウトバウンドトラフィックをフィルタリングすることができる(例えば、許可(allow)、ブロック(block)、モニタリング(monitor)、通知(notify)、またはログ(log)、及び/又は、ファイアウォールルールまたはファイアウォールポリシにおいて指定され得る他のアクションであり、これらは、ここにおいて説明されるような、様々な基準に基づいてトリガすることができる)。ファイアウォールは、また、同様に一式のルールまたはポリシを適用することによって、ローカルネットワーク(例えば、イントラネット)トラフィックをフィルタリングすることもできる。
【0008】
セキュリティデバイス(例えば、セキュリティ機器、セキュリティゲートウェイ、セキュリティサービス、及び/又は、他のセキュリティデバイス)は、様々なセキュリティ動作(例えば、ファイアウォール、アンチ-マルウェア、侵入防止/検出、プロキシ、及び/又は、他のセキュリティ機能)、ネットワーク機能(例えば、ルーティング、クオリティ・オブ・サービス(QoS)、ネットワーク関連リソースのワークロードバランシング、及び/又は、他のネットワーク機能)、及び/又は、他のセキュリティ及び/又はネットワーク関連の機能を実行することができる。例えば、ルーティングは、送信元(source)情報(例えば、IPアドレスおよびポート)、宛先(destination)情報(例えば、IPアドレスおよびポート)、および、プロトコル情報に基づいて実行することができる。
【0009】
基本的なパケットフィルタリング・ファイアウォールは、ネットワークを介して送信される個々のパケットを検査することによって、ネットワーク通信トラフィックをフィルタリングする(例えば、ステートレス(stateless)パケットフィルタリング・ファイアウォールである、パケットフィルタリング・ファイアウォールまたは第1世代ファイアウォール)。ステートレスパケットフィルタリング・ファイアウォールは、典型的に、個々のパケット自体を検査し、そして、検査されたパケットに基づいて(例えば、パケットの送信元および宛先のアドレス情報、プロトコル情報、および、ポート番号の組み合わせを使用して)ルールを適用する。
【0010】
アプリケーション・ファイアウォールは、また、(例えば、アプリケーション層フィルタリング・ファイアウォール、または、TCP/IPスタックのアプリケーションレベルにおいて機能する第2世代ファイアウォールを使用して)アプリケーション層フィルタリングを実行することもできる。アプリケーション層フィルタリング・ファイアウォールまたはアプリケーション・ファイアウォールは、一般的に、所定のアプリケーションおよびプロトコル(例えば、ハイパーテキスト転送プロトコル(HTTP)を使用したウェブブラウジング、ドメインネームシステム(DNS)要求、ファイル転送プロトコル(FTP)を使用したファイル転送、および、Telnet、DHCP、TCP、UDP、およびTFTP(GSS)といった、様々な他のタイプのアプリケーションおよび他のプロトコル)を識別することができる。例えば、アプリケーション・ファイアウォールは、標準ポートにおいて通信を試みる未認可(unauthorized)プロトコルをブロックすることができる(例えば、そのプロトコルについて非標準(non-standard)ポートを使用することにより黙って通り抜けること(sneak through)を試みる未認可/外れたポリシプロトコルは、一般的に、アプリケーション・ファイアウォールを使用して識別することができる)。
【0011】
ステートフル・ファイアウォールは、また、ステートフル・ベースのパケット検査を実行することもでき、そこでは、各パケットが、そのネットワーク送信のパケットフロー(packets/packet flow)と関連する一式のパケットのコンテキストの中で検査される。このファイアウォール技術は、一般的に、ステートフル・パケット検査として参照される。ファイアウォールを通過する全ての接続の記録を保持し、そして、パケットが、新しい接続の開始であるか、既存の接続の一部であるか、または、無効なパケットであるかを判断することができるからである。例えば、接続の状態は、それ自体が、ポリシの中のルールをトリガするクライテリアの1つになり得る。
【0012】
先進的または次世代ファイアウォールは、上述のように、ステートレスおよびステートフルなパケットフィルタリングおよびアプリケーション層フィルタリングを実行することができる。次世代ファイアウォールは、また、追加的なファイアウォール技術を実行することもできる。例えば、先進的または次世代ファイアウォールとして、しばしば参照される所定の新しいファイアウォールは、また、ユーザおよびコンテンツを識別することができる。特に、所定の次世代ファイアウォールは、これらのファイアウォールが自動的に識別できるアプリケーションのリストを、何千ものアプリケーションまで拡大している。そうした次世代ファイアウォールの例は、Palo Alto Networksから市販されている(例えば、Palo Alto NetworksのPAシリーズのファイアウォール)。例えば、Palo Alto Networksの次世代ファイアウォールは、様々な識別技術を使用して、企業およびサービスプロバイダが、アプリケーション、ユーザ、およびコンテンツ-単にポート、IPアドレス、およびパケットだけでなく-を識別し、かつ、制御することを可能にする。様々な識別技術は、正確なアプリケーション識別のためのアプリケーションID(App-ID)(例えば、App ID)、ユーザ識別のためのユーザID(User-ID)(例えば、User ID)、および、リアルタイムなコンテンツスキャニングのためのコンテンツID(Content-ID)(例えば、Content ID)といったものである(例えば、Webサーフィンを制御し、かつ、データおよびファイルの転送を制限する)。これらの識別技術により、企業は、従来のポートブロッキングファイアウォールによって提供される従来のアプローチに従う代わりに、ビジネス関連の概念を使用して、アプリケーションの使用を安全に可能にすることができる。また、(例えば、専用装置として実装される)次世代ファイアウォールのための特定目的ハードウェアは、汎用ハードウェアにおいて実行されるソフトウェアよりも、アプリケーション検査についてより高いパフォーマンスレベルを一般的に提供する(例えば、Palo Alto Networks社が提供するセキュリティ機器といったものであり、シングルパス・ソフトウェアエンジンと堅く統合されている、専用の、機能固有の処理を利用し、Palo Alto NetworksのPAシリーズ次世代ファイアウォールについて、レイテンシ(latency)を最小化する一方で、ネットワークのスループットを最大化する)。
【0013】
先進的または次世代ファイアウォールは、また、仮想化ファイアウォールを使用して実装することもできる。そうした次世代ファイアウォールの例は、Palo Alto Networks社から市販されている(Palo Alto Networksのファイアウォールは、VMware(R) ESXiTMおよびNSXTM、Citrix(R)Netscaler SDXTM、KVM/OpenStack(Centos/RHEL、Ubuntu(R))、および、Amazon Web Services(AWS)を含む、様々な商用仮想化環境をサポートしている)。例えば、仮想化ファイアウォールは、物理的フォームファクタ機器で利用可能な、同様の、または、完全に同一の次世代ファイアウォールおよび先進的な脅威防止機能をサポートすることができ、企業は、プライベート、パブリック、およびハイブリッドなクラウドコンピューティング環境へのアプリケーションの流入を安全に可能にすることができる。VMモニタリング、ダイナミックアドレスグループ、およびRESTベースのAPIといった自動化機能により、企業は、VMの変化を動的にモニタすることができ、そのコンテキストをセキュリティポリシに反映させて、それにより、VMの変化時に生じ得るポリシの遅れ(lag)を排除している。
【0014】
II.環境の実施例
【0015】
図1は、悪意のあるアプリケーション(「マルウェア(“malware”)」)が検出され、被害を引き起こさない環境の例を示している。以下でさらに詳細に説明するように、マルウェア分類(例えば、セキュリティプラットフォーム122によって作成される)は、図1に示される環境に含まれる様々なエンティティ間で様々に共有及び/又は改良することができ、ここにおいて説明される技術を用いて、エンドポイントクライアント装置104-110といった装置を、そうしたマルウェアから保護することができる。
【0016】
「アプリケーション(“application”)」という用語は、形式/プラットフォームにかかわらず、プログラム、プログラムのバンドル、マニフェスト、パッケージ、等を総称して指すために、本仕様書の全体を通して使用されている。「アプリケーション」(ここにおいては「サンプル」とも呼ばれる)は、スタンドアロン(standalone)ファイル(例えば、ファイル名「calculator.apk」または「calculator.exe」を有する計算アプリケーション)であってもよく、または、別のアプリケーションの独立したコンポーネント(例えば、モバイル広告SDKまたは計算アプリケーション内に埋め込まれたライブラリ)であってよい。
【0017】
ここにおいて使用される「マルウェア」とは、秘密裡であろうとなかろうと(かつ、違法であろうとなかろうと)、完全な情報を得た場合にはユーザが承認しない/承認しないであろう挙動に関与する。マルウェアの例は、トロイの木馬、ウイルス、ルートキット、スパイウェア、ハッキングツール、キーロガー、等を含む。マルウェアの一つの例は、デスクトップ・アプリケーションであり、それは、エンドユーザの場所を収集し、かつ、リモート・サーバに報告する(しかし、ユーザには、マッピング・サービスといった、場所ベースのサービスを提供しない)。マルウェアのもう別の例は、悪意のあるアンドロイド(登録商標)(Android)アプリケーションパッケージ.apk(APK)であり、それは、エンドユーザにとっては無料ゲームのように見えるが、密かにSMSプレミアムメッセージ(例えば、各10ドルの費用)を送信し、エンドユーザの電話料金請求書を膨らませる。マルウェアの別の例は、アップルのiOSフラッシュライトアプリケーションであり、それは、ユーザの連絡先を密かに収集し、かつ、それらの連絡先をスパマー(spammer)に送信する。他の形態のマルウェアも、ここにおいて説明される技術(例えば、ランサムウェア)を用いて検出/阻止することができる。さらにnグラム(n-gram)/特徴ベクトル/出力蓄積変数は、悪意のあるアプリケーションについて生成されるものとしてここにおいて説明されているが、ここにおいて説明される技術は、また、他の種類のアプリケーション(例えば、アドウェア・プロファイル、グッドウェア・プロファイル、等)のためのプロファイルを生成するために、様々な実施形態でも使用することができる。
【0018】
ここにおいて説明される技術は、種々のプラットフォーム(例えば、デスクトップ、モバイルデバイス、ゲームプラットフォーム、エンベッドシステム、等)及び/又は種々のタイプのアプリケーション(例えば、Android apkファイル、iOSアプリケーション、Windows PEファイル、Adobe Acrobat PDFファイル、等)と組み合わせて使用することができる。図1に示す例示的な環境において、クライアント装置104-108は、ラップトップコンピュータ、デスクトップコンピュータ、およびエンタープライズネットワーク140に存在するタブレットである。クライアント装置110は、エンタープライズネットワーク140の外部に存在するラップトップコンピュータである。
【0019】
データ機器102は、クライアント装置104および106といった、クライアント装置と、エンタープライズネットワーク140外のノード(例えば、外部ネットワーク118を介して到達可能)との間の通信に関するポリシを実施するように構成されている。そうしたポリシの例は、トラフィックシェーピング、サービスの品質、およびトラフィックのルーティングを管理するポリを含む。ポリシの他の例は、受信(および送信)メールの添付ファイル、ウェブサイトのコンテンツ、インスタントメッセージングプログラムを介して交換されるファイル、及び/又は、他のファイル転送、における脅威についてスキャニング(scanning)を要求するといった、セキュリティポリシを含む。いくつかの実施形態において、データ機器102は、また、エンタープライズネットワーク140内に留まるトラフィックに関するポリシを実施するように構成される。
【0020】
データ機器の一つの実施形態が図2Aに示されている。示される例は、種々の実施形態において、データ機器102に含まれる物理的コンポーネントの表現である。具体的に、データ機器102は、高性能マルチコア中央処理ユニット(CPU)202およびランダムアクセスメモリ(RAM)204を含んでいる。データ機器102は、また、ストレージ210(1つ以上のハードディスクまたはソリッドステート・ストレージユニット、といったもの)を含む。様々な実施形態において、データ機器102は、エンタープライズネットワーク140をモニタリングすること、および、開示された技術を実装することに使用される情報を(RAM204、ストレージ210、及び/又は、他の適切なロケーション、のいずれかに)保管する。そうした情報の例は、アプリケーション識別子、コンテンツ識別子、ユーザ識別子、要求されたURL、IPアドレスマッピング、ポリシおよび他のコンフィグレーション情報、署名、ホスト名/URL分類情報、マルウェアプロファイル、および機械学習モデル、を含む。データ機器102は、また、1つ以上の任意的なハードウェアアクセラレータを含み得る。例えば、データ機器102は、暗号化および復号動作を実行するように構成された暗号エンジン206、および、照合器(matching)を実行し、ネットワークプロセッサとして動作し、かつ/あるいは、他のタスクを実行するように構成された、1つ以上のフィールドプログラマブルゲートアレイ208を含み得る。
【0021】
データ機器102によって実行されるものとしてここにおいて説明される機能性は、種々の方法で提供/実装することができる。例えば、データ機器102は、専用のデバイスまたはデバイスセットであってよい。データ機器102によって提供される機能は、汎用コンピュータ、コンピュータサーバ、ゲートウェイ、及び/又は、ネットワーク/ルーティング・デバイス上のソフトウェアとして統合され、または、実行され得る。いくつかの実施形態において、データ機器102によって提供されるものとして説明される少なくともいくつかのサービスが、代わりに(または、これに加えて)、クライアント装置において実行するソフトウェアによって、クライアント装置(例えば、クライアント装置104またはクライアント装置110)に提供される。
【0022】
データ機器102がタスクを実行するものとして記述されるときはいつでも、単一のコンポーネント、コンポーネントのサブセット、またはデータ機器102の全てのコンポーネントは、タスクを実行するために協働することができる。同様に、データ機器102のコンポーネントがタスクを実行するものとして説明されるときはいつでも、サブコンポーネントは、タスクを実行することができ、かつ/あるいは、コンポーネントは、他のコンポーネントと共にタスクを実行することができる。様々な実施形態において、データ機器102の一部は、1つ以上の第三者によって提供される。データ機器102に利用可能な計算リソースの量といった要因に応じて、データ機器102の種々の論理コンポーネント及び/又は特徴は省略されてよく、そして、ここにおいて説明される技術はそれに応じて適合される。同様に、追加の論理コンポーネント/特徴を、データ機器102の実施形態に、適用可能なように含めることができる。種々の実施形態におけるデータ機器102に含まれるコンポーネントの一つの例は、(例えば、パケットフロー解析に基づいてアプリケーションを識別するために種々のアプリケーション署名を使用して)アプリケーションを識別するように構成されているアプリケーション識別エンジンである。例えば、アプリケーション識別エンジンは、セッションが関与するトラフィックのタイプを決定することができる。Webブラウジング-ソーシャルネットワーキング、Webブラウジング-ニュース、SSH、等といったものである。
【0023】
図2Bは、データ機器の一つの実施形態の論理コンポーネントの機能図である。示される例は、種々の実施形態においてデータ機器102に含まれ得る論理コンポーネントの表現である。別段の規定がない限り、データ機器102の種々の論理コンポーネントは、一般的に、1つ以上のスクリプト(例えば、該当する場合、Java、python、等で書かれたもの)のセット(set)を含む種々の方法で実装可能である。
【0024】
図示のように、データ機器102はファイアウォールを備え、かつ、管理プレーン232およびデータプレーン234を含んでいる。管理プレーンは、ポリシの設定およびログデータの表示のめのユーザインターフェイスを提供するといったことにより、ユーザインタラクション(user interaction)の管理について責任を負う。データプレーンは、パケット処理およびセッション処理を実行するといったことにより、データ管理について責任を負う。
【0025】
ネットワークプロセッサ236は、クライアント装置108といった、クライアント装置からパケットを受信し、そして、それらを処理のためにデータプレーン234に提供するように構成されている。フローモジュール238は、新しいセッションの一部としてパケットを識別するときはいつでも、新しいセッションフローを生成する。その後のパケットは、フロールックアップに基づいて、セッションに属しているものとして識別される。該当する場合、SSL復号エンジン240によってSSL復号化が適用される。そうでなければ、SSL復号エンジン240による処理は省略される。復号エンジン240は、データ機器102がSSL/TLSおよびSSHの暗号化トラフィックを検査および制御することを助け、そして、従って、そうでなければ暗号化トラフィック内に隠されたままであり得る脅威を停止することを助ける。復号エンジン240は、また、機密性の高いコンテンツがエンタープライズネットワーク140から去るのを防止することを助けることができる。復号は、URLカテゴリ、トラフィック元、トラフィック宛先、ユーザ、ユーザグループ、およびポート、といったパラメータに基づいて選択的に制御することができる(例えば、イネーブルされ、または、ディセーブルされる)。復号ポリシ(例えば、復号するセッションを指定するもの)に加えて、復号プロファイルは、ポリシによって制御されるセッションの様々なオプションを制御するために割り当てることができる。例えば、特定の暗号スイートおよび暗号化プロトコルバージョンの使用が要求され得る。
【0026】
アプリケーション識別(APP-ID)エンジン242は、セッションが関与するトラフィックのタイプを決定するように構成されている。一つの例として、アプリケーション識別エンジン242は、受信データ内のGETリクエストを認識し、そして、セッションがHTTPデコーダを必要とすると結論付けることができる。場合によって、例えば、ウェブブラウジングセッションにおいて、識別されたアプリケーションは変更することができ、そして、そうした変更はデータ機器102によって書き留め(noted)られる。例えば、ユーザは、まず、企業のWiki(訪問したURLに基づいて「Webブラウジング-生産性(“Web Browsing-Productivity”)」として分類される)を閲覧し、次に、ソーシャルネットワーキングサイト(訪問したURLに基づいて「Webブラウジング-ソーシャルネットワーキング(“Web Browsing-Social Networking”)」として分類される)を閲覧することができる。異なるタイプのプロトコルは、対応するデコーダを有している。
【0027】
アプリケーション識別エンジン242によって行われた決定に基づいて、パケットを正しい順序に組み立て、トークン化を実行し、情報を抽出するように構成された、適切なデコーダに対して、脅威エンジン244によって、パケットが送信される。脅威エンジン244は、また、パケットに何が起こるべきかを決定するために、署名照合(signature matching)を実行する。必要に応じて、SSL暗号化エンジン246は、復号されたデータを再び暗号化することができる。パケットは、転送のために(例えば、宛先へ)転送モジュール248を使用して転送される。
【0028】
図2Bにも、また、示されるように、ポリシ252は、受信され、そして、管理プレーン232に保管される。ポリシは、ドメイン名及び/又はホスト/サーバ名を使用して指定することができる、1つ以上のルールを含むことができ、そして、ルールは、モニタリングされるセッショントラフィックフローからの様々な抽出されたパラメータ/情報に基づいて、加入者/IPフローに対するセキュリティポリシ実施のためといった、1つ以上の署名または他の照合基準または発見的方法を適用することができる。インターフェイス(I/F)通信器250が、管理通信(例えば、(REST)API、メッセージ、またはネットワークプロトコル通信、もしくは他の通信メカニズムを介して)について提供されている。
【0029】
III.セキュリティプラットフォーム
【0030】
図1に戻り、悪意のある(システム120を使用する)個人がマルウェア130を作成したと仮定する。悪意のある個人は、クライアント装置104といった、クライアント装置がマルウェア130のコピーを実行することを望んでおり、クライアント装置を危険にさらし(compromising)、そして、例えば、クライアント装置をボットネットにおけるボット(bot)にさせる。危険にさらされたクライアント装置は、次いで、タスク(例えば、暗号通貨のマイニング、または、サービス妨害攻撃への参加)を実行し、そして、コマンドおよび制御(C&C)サーバ150といった、外部エンティティに情報を報告するように、並びに、必要に応じて、C&Cサーバ150からの命令を受信するように、指示され得る。
【0031】
データ機器102が、クライアント装置104を操作するユーザ「アリス(“Alice”)」に対して送信された電子メールをインターセプトしたと想定する。マルウェア130のコピーは、システム120によってメッセージに添付されている。代替的であるが、類似のシナリオとして、データ機器102は、クライアント装置104による(例えば、ウェブサイトからの)マルウェア130のダウンロードの試みをインターセプトすることができる。いずれのシナリオにおいても、データ機器102は、ファイルの署名(例えば、eメールの添付またはマルウェア130のウェブサイトダウンロード)がデータ機器102上に存在するか否かを決定する。署名は、存在する場合に、ファイルが安全であると知られている(例えば、ホワイトリストに在る)ことを示すことができ、そして、また、そのファイルが悪意のものであると知られている(例えば、ブラックリストに在る)ことを示すこともできる。
【0032】
様々な実施形態において、データ機器102は、セキュリティプラットフォーム122と協働して動作するように構成されている。一つの例として、セキュリティプラットフォーム122は、データ機器102に、既知の悪意のあるファイルの署名のセットを(例えば、サブスクリプションの一部として)提供することができる。マルウェア130に対する署名がセットに含まれる場合(例えば、マルウェア130のMD5ハッシュ)、データ機器102は、それに応じて(例えば、クライアント装置104に送られる電子メール添付のMD5ハッシュがマルウェア130のMD5ハッシュに一致することを検出することによって)、クライアント装置104へのマルウェア130の送信を防止することができる。セキュリティプラットフォーム122は、また、データ機器102に既知の悪意のあるドメイン及び/又はIPアドレスのリストを提供することができ、データ機器102がエンタープライズネットワーク140とC&Cサーバ150(例えば、C&Cサーバ150が悪意であることが知られている場合)との間のトラフィックをブロックすることを可能にする。悪意のあるドメイン(及び/又はIPアドレス)のリストは、また、データ機器102が、そのノードの1つがいつ侵害されたかを判断するのに役立つ。例えば、クライアント装置104がC&Cサーバ150へのコンタクトを試みる場合、そうした試みは、クライアント104がマルウェアによって危険にさらされたこと(従って、クライアント装置104がエンタープライズネットワーク140内の他のノードと通信するのを隔離するなどの是正措置を講じる必要があること)を示す強力な指標(indicator)である。以下でより詳細に説明されるように、セキュリティプラットフォーム122は、また、ファイルのインライン解析を行うためにデータ機器102によって使用可能な機械学習モデルのセットといった、他のタイプの情報を、データ機器102に(例えば、予約の一部として)提供することができる。
【0033】
様々な実施形態において、添付(attachment)に対する署名が見つからない場合、データ機器102は、様々な措置を講じることができる。第1例として、データ機器102は、良性(benign)としてホワイトリストに掲載されていない(例えば、既知の良好なファイルの署名と一致しない)添付の送信をブロックすることによって、フェールセーフ(fail-safe)にすることができる。このアプローチの欠点は、実際に良性である場合にも、潜在的にマルウェアとして不必要にブロックされる正規の添付が多く存在し得ることである。第2例として、データ機器102は、悪意のあるものとしてブラックリストに掲載されていない添付ファイル(例えば、既知の悪意のあるファイルの署名と一致しないもの)の送信を可能にすることによって、故障の危険(fail-danger)をもたらし得る。このアプローチの欠点は、新たに作成されたマルウェア(プラットフォーム122によって以前は見えなかったもの)が、危害を引き起こすのを妨げられないことである。
【0034】
第3例として、データ機器102は、静的/動的解析のためにセキュリティプラットフォーム122にファイル(例えば、マルウェア130)を提供し、それが悪意であるか否かを判断し、かつ/あるいは、それを分類するように構成することができる。添付のセキュリティプラットフォーム122(署名がまだ存在しない)による解析が実行される間に、データ機器102は様々なアクションをとることができる。第1例として、データ機器102は、セキュリティプラットフォーム122から応答が受信されるまで、電子メール(および添付ファイル)がアリスに配信されるのを妨げることができる。プラットフォーム122がサンプルを完全に解析するのに約15分かかると仮定すると、これは、アリスへの受信メッセージが15分遅れることを意味する。この例では、添付は悪意があるため、そうした遅延はアリスにマイナスの影響を与えない。別の例においては、誰かが、署名も存在しない良性の添付を伴う時間に敏感な(time sensitive)メッセージをアリスに送ったものと想定する。アリスへのメッセージの配送を15分遅らせることは(例えば、アリスによって)受け入れられないと見なされる可能性が高い。以下でより詳細に説明されるように、代替的アプローチは、データ機器102において添付について(例えば、プラットフォーム122からの裁決を待つ間に)少なくともある程度のリアルタイム解析を行うことである。データ機器102が、添付が悪意のあるものか良性のものかを独立して決定することができれば、初期アクション(例えば、アリスへの配送をブロックする、または、許可する)をとることができ、そして、セキュリティプラットフォーム122から裁決(verdict)を受信した後で、必要に応じて、追加アクションを調整/実行することができる。
【0035】
セキュリティプラットフォーム122は、受信したサンプルのコピーをストレージ142に保管し、そして、解析が開始される(または、適宜、予定される)。ストレージ142の一つの例は、アパッチハデュープ(Apache Hadoop)クラスタである。解析の結果(および、アプリケーションに関連する追加情報)は、データベース146に保管される。アプリケーションが不正であると判断された場合、データ機器は、解析結果に基づいて、ファイルダウンロードを自動的にブロックするように設定することができる。さらに、悪意があると判断されたファイルをダウンロードする将来のファイル転送要求を自動的にブロックするために、マルウェアについて署名を生成し、そして、(例えば、データ機器102、136、148といったデータ機器に対して)配布することができる。
【0036】
様々な実施形態において、セキュリティプラットフォーム122は、典型的なサーバ-クラス・オペレーティングシステム(例えば、Linux(登録商標))を実行する1つ以上の専用の市販のハードウェアサーバを含む(例えば、マルチコアプロセッサ、RAMの32G+、ギガビット・ネットワークインターフェイス・アダプタ、および、ハードドライブを有しているもの)。セキュリティプラットフォーム122は、複数のそうしたサーバ、ソリッドステートドライブ、及び/又は、他の適用可能な高性能ハードウェアを含むスケーラブル・インフラストラクチャにわたり、実装され得る。セキュリティプラットフォーム122は、1つ以上の第三者によって提供されるコンポーネントを含む、複数の分散コンポーネントを有することができる。例えば、セキュリティプラットフォーム122の一部または全部を、Amazon Elastic Compute Cloud(EC2)及び/又はAmazon Simple Storage Service(S3)を使用して実装することができる。さらに、データ機器102の場合と同様に、セキュリティプラットフォーム122が、データの保管またはデータの処理といった、タスクを実行するように言及されるときはいつでも、セキュリティプラットフォーム122のサブコンポーネントまたは複数のサブコンポーネントは、(個々に、または、第三者のコンポーネントと協力して)そのタスクを実行するために協働し得ることができることが理解されるべきである。一つの例として、セキュリティプラットフォーム122は、任意的に、VMサーバ124といった、1つ以上の仮想マシン(VM)サーバと協力して、静的/動的分解析を実行することができる。
【0037】
仮想マシンサーバの一つの例は、VMware ESXi、Citrix XenServer、またはMicrosoft Hyper-Vといった、市販の仮想化ソフトウェアを実行する、市販のサーバ-クラスのハードウェア(例えば、マルチコアプロセッサ、RAMの32G+、および1つ以上のギガビット・ネットワークインターフェイス・アダプタ)を含む物理マシンである。いくつかの実施形態において、仮想マシンサーバは省略されている。さらに、仮想マシンサーバは、セキュリティプラットフォーム122を管理するのと同じエンティティの制御下にあってよいが、また、第三者によって提供されてもよい。一つの例として、仮想マシンサーバは、EC2に依存することができ、セキュリティプラットフォーム122のオペレータによって所有され、かつ、その制御下にある専用ハードウェアによって提供されるセキュリティプラットフォーム122の残りの部分を伴う。VMサーバ124は、クライアント装置をエミュレートするために1つ以上の仮想マシン126-128を提供するように構成さていれる。仮想マシンは、様々なオペレーティングシステム及び/又はそのバージョンを実行することができる。仮想マシンでアプリケーションを実行した結果として生じる、観察された動作がログに記録され、そして、解析される(例えば、アプリケーションが悪意を持っていることを示す場合)。いくつかの実施形態において、ログ解析は、VMサーバ(例えば、VMサーバ124)によって実行される。他の実施形態において、解析は、少なくとも部分的に、コーディネータ144といった、セキュリティプラットフォーム122の他のコンポーネントによって実行される。
【0038】
様々な実施形態において、セキュリティプラットフォーム122は、サブスクリプション(subscription)の一部として、署名(及び/又は、他の識別子)のリストを介して、データ機器102に対してサンプルの解析の結果を利用可能にする。例えば、セキュリティプラットフォーム122は、マルウェアアプリケーションを識別するコンテンツパッケージを周期的に送信することができる(例えば、毎日、毎時、または他の間隔、及び/又は、1つ以上のポリシによって構成されたイベントに基づいて)。コンテンツパッケージの例は、識別されたマルウェアアプリケーションのリストを含み、パッケージ名、アプリケーションを一意に識別するためのハッシュ値、および、識別された各マルウェアアプリケーションのマルウェア名(及び/又は、マルウェアファミリ名)といった情報を伴う。サブスクリプションは、データ機器102によってインターセプトされ、データ機器102によってセキュリティプラットフォーム122に送信されるファイルの解析のみをカバーすることができ、そして、また、セキュリティプラットフォーム122(または、そのサブセット、単なるモバイルマルウェアであるが、マルウェアの他の形態ではないもの(例えば、PDFマルウェア))に対して知られている全てのマルウェアの署名をカバーすることもできる。以下でより詳細に説明されるように、プラットフォーム122は、また、データ機器102がマルウェアを検出するのを助けることができる機械学習モデルといった、他のタイプの情報を利用可能にすることができる。
【0039】
様々な実施形態において、セキュリティプラットフォーム122は、データ機器102のオペレータに加えて(または、該当する場合は、その代わりに)、様々なエンティティに対してセキュリティサービスを提供するように構成されている。例えば、自身のそれぞれのエンタープライズネットワーク114および116、並びに、それら自身のそれぞれのデータ機器136および148を有している、他のエンタープライズは、セキュリティプラットフォーム122のオペレータと契約(contract)することができる。他のタイプのエンティティは、また、セキュリティプラットフォーム122のサービスを利用することもできる。例えば、クライアント装置110にインターネットサービスを提供するインターネットサービスプロバイダは、クライアント装置110がダウンロードを試みるアプリケーションを解析するために、セキュリティプラットフォーム122と契約することができる。別の例として、クライアント装置110のオーナーは、セキュリティプラットフォーム122と通信するクライアント装置110上にソフトウェアをインストールすることができる(例えば、セキュリティプラットフォーム122からコンテンツパッケージを受信し、受信したコンテンツパッケージを使用して、ここにおいて説明される技術に従って添付をチェックし、そして、解析のためにアプリケーションをセキュリティプラットフォーム122に送信する)。
【0040】
IV. 静的/動的解析を使用するサンプル解析
【0041】
図3は、サンプルを解析するためのシステムに含めることができる論理コンポーネントの例を示している。解析システム300は、単一の装置を使用して実施することができる。例えば、解析システム300の機能は、データ機器102の中に組み込まれたマルウェア解析モジュール112に実装することができる。解析システム300は、また、複数の別個の装置にわたり、集合的に、実施することができる。例えば、解析システム300の機能は、セキュリティプラットフォーム122によって提供され得る。
【0042】
様々な実施形態において、解析システム300は、既知の安全コンテンツ及び/又は既知の不良コンテンツのリスト、データベース、または、他のコレクション(コレクション314として図3において集合的に示されている)を使用する。コレクション314は、サブスクリプションサービス(例えば、第三者によって提供されるもの)を介すること、及び/又は、他の処理 (例えば、データ機器102及び/又はセキュリティプラットフォーム122によって実行されるもの)の結果として、様々な方法で獲得され得る。コレクション314に含まれる情報の例は、既知の悪意のあるサーバのURL、ドメイン名、及び/又は、IPアドレス、既知の安全なサーバのURL、ドメイン名、及び/又は、IPアドレス、既知のコマンドおよび制御(C&C)ドメインのURL、ドメイン名、及び/又は、IPアドレス、既知の悪意のあるアプリケーションの署名、ハッシュ、及び/又は、他の識別子、既知の安全なアプリケーションの署名、ハッシュ、及び/又は、他の識別子、既知の悪意のあるファイルの署名、ハッシュ、及び/又は、他の識別子(例えば、Android exploitファイル)、既知の安全なライブラリの署名、ハッシュ、及び/又は、他の識別子、および、既知の悪意のあるライブラリの署名、ハッシュ、及び/又は、他の識別子、である。
【0043】
A. 摂取(ingestion)
【0044】
様々な実施形態においては、解析のための新しいサンプルが受信されると(例えば、サンプルに関連する既存の特徴が解析システム300に存在しない)、それはキュー302に追加される。図3に示すように、アプリケーション130は、システム300によって受信され、そして、キュー302に追加される。
【0045】
B. 静的解析
【0046】
コーディネータ304は、キュー302をモニタリングし、そして、リソース(例えば、静的解析ワーカー(worker))が利用可能になると、コーディネータ304は、処理のためにキュー302からサンプルを取り出す(例えば、マルウェア130のコピーをフェッチ(fetch)する)。特に、コーディネータ304は、最初に、静的解析のためにサンプルを静的解析エンジン306に供給する。いくつかの実施形態においては、1つ以上の静的解析エンジンが解析システム300内に含まれており、ここで、解析システム300は、単一の装置である。他の実施形態において、静的解析は、複数のワーカー(すなわち、静的解析エンジン306の複数のインスタンス)を含む別個の静的解析サーバによって実行される。
【0047】
静的解析エンジンは、サンプルに関する一般的な情報を獲得し、そして、それを静的解析レポート308内に(適宜、発見的情報および他の情報と共に)含める。レポートは、静的解析エンジンによって、または、静的解析エンジン306から情報を受信するように構成され得るコーディネータ304によって(または、別の適切なコンポーネントによって)作成され得る。いくつかの実施形態において、収集された情報は、作成される別個の静的解析レポート308(すなわち、レポート308からのデータベースレコードの部分)の代わりに、または、それに加えて、サンプルのデータベースレコード(例えば、データベース316)に保管される。いくつかの実施形態において、静的解析エンジンは、また、アプリケーション(例えば、「安全な(“safe”)」、「疑わしい(“suspicious”)」、または「悪意のある(“malicious”)」もの)に関する裁決を形成する。一つの例として、たとえ1つの「悪意のある」静的機能がアプリケーションに存在する場合(例えば、アプリケーションが既知の悪意のあるドメインへのハードリンクを含んでいる)、裁決は「悪意のある」ものであり得る。別の例として、各特徴にポイントを割り当てることができ(例えば、発見された場合の重大度に基づいて、悪意を予測するための特徴の信頼性に基づいて、等)、裁決は、静的解析結果に関連するポイントの数に基づいて、静的解析エンジン306(または、該当する場合は、コーディネータ304)によって割り当てることができる。
【0048】
C. 動的解析
【0049】
一旦、静的解析が完了すると、コーディネータ304は、アプリケーションにおいて動的解析を実行するために、利用可能な動的解析エンジン310を配置する。静的解析エンジン306と同様に、解析システム300は、1つ以上の動的解析エンジンを直接的に含むことができる。他の実施形態において、動的解析は、複数のワーカー(すなわち、動的解析エンジン310の複数のインスタンス)を含む別個の動的解析サーバによって実行される。
【0050】
各ダイナミック解析ワーカーは、仮想マシンインスタンスを管理する。いくつかの実施形態において、静的解析の結果(例えば、静的解析エンジン306によって実行されるもの)は、レポート形式(308)であるか、かつ/あるいは、データベース316に保管されているか、または、別の方法で保管されているかのいずれかで、動的解析エンジン310に対する入力として提供される。例えば、動的解析エンジン310によって使用される仮想マシンインスタンス(例えば、Microsoft Windows7 SP2 vs. Microsoft Windows10 Enterprise、または、iOS 11.0 vs. iOS 12.0)の選択/カスタマイズを助けるために、静的レポート情報を使用することができる。複数の仮想マシンインスタンスが同時に実行される場合、単一の動的解析エンジンが全てのインスタンスを管理することができ、または、必要に応じて、複数の動的解析エンジンを(例えば、それ自身の仮想マシンインスタンスの各管理と共に)使用することができる。以下でより詳細に説明するように、解析の動的部分の最中に、アプリケーション(ネットワークアクティビティを含む)によって取られたアクションが解析される。
【0051】
様々な実施形態において、サンプルの静的解析は、省略されるか、または、該当する場合、別個のエンティティによって実施される。一つの例として、従来の静的及び/又は動的解析は、第1エンティティによってファイルにおいて実行され得る。一旦(例えば、第1エンティティによって)所与のファイルが悪意のものであると決定されると、そのファイルは、特に、マルウェアのネットワーク活動の使用に関連する追加的な解析のために(例えば、動的解析エンジン310によって)、第2エンティティ(例えば、セキュリティプラットフォーム122のオペレータ)に提供され得る。
【0052】
解析システム300によって使用される環境は、アプリケーションが実行されている間に観察された挙動が、それらが発生したときにログに記録されるように(例えば、フッキング(hooking)およびログキャット(logcat)をサポートするカスタマイズされたカーネルを使用して)、計装され/フックされる。エミュレータに関連するネットワークトラフィックも、また、(例えば、pcapを使用して)キャプチャされる。ログ/ネットワークデータは、解析システム300上に一時ファイルとして保管することができ、そして、また、より永続的に(例えば、HDFS、または他の適切なストレージ技術、もしくは、MongoDBといった、技術の組み合わせを使用して)保管することもできる。動的解析エンジン(または、別の適切なコンポーネント)は、サンプルによって行われた接続をドメイン、IPアドレス、等のリスト(314)と比較し、そして、サンプルが悪意のあるエンティティと通信したか(または、通信を試みたか)否かを決定することができる。
【0053】
静的解析エンジンと同様に、動的解析エンジンは、その解析の結果を、テストされるアプリケーションに関連するレコードにおけるデータベース316に保管する(かつ/あるいは、該当する場合、結果をレポート312に含める)。いくつかの実施形態において、動的解析エンジンは、また、アプリケーションに関する裁決(例えば、「安全な」、「疑わしい」、または「悪意のある」)も形成する。一つの例として、たとえ1つの「悪意のある」行為がアプリケーションによって取られたとしても(例えば、既知の悪意のあるドメインにコンタクトする試み、または、機密情報を除去しようとする試みが観察される)、裁決は「悪意のある」であり得る。別の例として、実施されたアクションに対してポイントを割り当てることができ(例えば、発見された場合の重大性に基づいて、悪意を予測するための行為の信頼性に基づいて、等)、そして、動的解析エンジン310(または、該当する場合は、コーディネータ304)によって、動的解析結果に関連するポイントの数に基づいて、裁決を指定することができる。いくつかの実施態様において、サンプルに関連する最終的な裁決は、レポート308とレポート312の組み合わせに基づいて、(例えば、コーディネータ304によって)行われる。
【0054】
V. インラインマルウェア検出
【0055】
図1の環境に戻ると、何百万もの新しいマルウェアサンプルが毎月生成され得る(例えば、システム120のオペレータといった不正な個人によるものであり、既存のマルウェアに微妙な変更を加えるか、または、新しいマルウェアを作成するかいずれかによる)。従って、セキュリティプラットフォーム122が(少なくとも初期に)署名を有していない多くのマルウェアサンプルが存在している。さらに、セキュリティプラットフォーム122が新たに作成されたマルウェアの署名を生成した場合でも、リソースの制約により、データ機器102といった、データ機器は、任意の時点で、全ての既知の署名のリスト(例えば、プラットフォーム122上に保管されたもの)を有すること/使用することができない。
【0056】
ときどき、マルウェア130といった、マルウェアは成功裡にネットワーク140に侵入する。この理由の1つは、データ機器102が「初回許可(“first-time allow”)」原則に基づいて動作する場合である。データ機器102が、サンプル(例えば、サンプル130)についての署名を有しておらず、そして、解析のためにそれをセキュリティプラットフォーム122に提出する場合、裁決(例えば、「良性」、「悪意のある」、「不明」、等)を返すのに、セキュリティプラットフォーム122が概ね5分を要するものと仮定する。その5分間の最中にシステム120とクライアント装置104との間の通信をブロックする代わりに、初回許可の原則の下で、通信が許可されている。裁決が返された場合(例えば、5分後)、データ機器102は、裁決を使用して、ネットワーク140へのマルウェア130のその後の送信を阻ブロックすることができ、システム120とネットワーク140との間の通信を阻止することができる、等。様々な実施形態において、データ機器102がセキュリティプラットフォーム122からの裁決を待っている間に、サンプル130の第2コピーがデータ機器102に到着した場合、サンプル130の第2コピー(および、それに続く任意のコピー)は、セキュリティプラットフォーム122からの応答を待つ間、システム120によって保持される。
【0057】
残念ながら、データ機器102がセキュリティプラットフォーム122からの裁決を待つ5分間に、クライアント装置104のユーザはマルウェア130を実行し、クライアント装置104またはネットワーク140内の他のノードを危険にさらす可能性があった。上述のように、様々な実施形態において、データ機器102はマルウェア解析モジュール112を含んでいる。マルウェア解析モジュール112が実行できるタスクの1つは、インラインマルウェア検出である。特に、以下でさらに詳細に説明するように、ファイル(サンプル130といったもの)がデータ機器102を通過する際に、データ機器102上のファイルの効率的な解析を実行するために機械学習技術を適用することができ(例えば、データ機器102によってファイルにおいて実行される他の処理と並行して)、そして、初期の悪意裁定は、(例えば、セキュリティプラットフォーム122からの最低を待つ間に)データ機器102によって決定することができる。
【0058】
データ機器102といったリソース制約付きの(resource constrained)機器においてでそうした解析を実施する際には、様々な困難が生じ得る。機器102における1つの主要なリソースは、セッションメモリである。セッションは、情報のネットワーク転送であり、ここにおいて説明される技術に従って機器102が解析するファイルを含んでいる。単一の機器は、何百万もの同時セッションを有することがあり、そして、所与のセッションの最中に持続することができるメモリは極めて限られている。データ機器102といった、データ機器においてインライン解析を実行することにおける第1の困難は、そうしたメモリ上の制約のせいで、データ機器102が、典型的には、ファイル全体を一度に処理することはできず、代わりに、パケット毎に処理する必要がある一連のパケットを受信することである。従って、データ機器102によって使用される機械学習アプローチは、様々な実施形態においてパケットストリームを収容(accommodate)する必要がある。第2の問題は、場合によっては、データ機器102が、処理される所与のファイルエンドがどこで生じるか(例えば、ストリームにおけるサンプル130の終端)を決定できないことである。データ機器102によって使用される機械学習アプローチは、従って、種々の実施形態において潜在的に途中(midstream)(例えば、サンプル130の受領/処理の途中、または、そうでなければ実際のファイル終了の前)の所与のファイルに関して裁決を下すことができる必要がある。
【0059】
A. 機械学習モデル
【0060】
以下でさらに詳細に説明するように、様々な実施形態において、セキュリティプラットフォーム122は、インラインマルウェア検出と共に使用するデータ機器102のために、データ機器102に対して一式の機械学習モデルを提供する。モデルは、悪意のあるファイルに対応している、セキュリティプラットフォーム122によって決定される特徴(例えばnグラム(n-grams)または他の特徴)を組み込んでいる。そうしたモデルの2つのタイプの例は、線形分類モデルおよび非線形分類モデルを含む。データ機器102によって使用され得る線形分類モデルの例は、ロジスティック回帰および線形サポートベクトルマシンを含む。データ機器102によって使用され得る非線形分類モデルの一つの例は、勾配ブースティングツリー(例えば、eXtreme Gradient Boosting(XGBoost))を含む。非線形モデルは、より正確である(そして、難読化された/偽装されたマルウェアをより良好に検出することができる)が、線形モデルは、機器102においてかなり少ないリソースを使用する(そして、JavaScriptまたは類似のファイルを効率的に解析するのにより適している)。
【0061】
以下でさらに詳細に説明するように、解析される所与のファイルに使用される分類モデルのタイプは、そのファイルに関連付けられたファイルタイプに基づくことができる(そして、例えば、マジックナンバーによって、決定することができる)。
【0062】
1. 脅威エンジンについて追加的な詳細
【0063】
様々な実施形態において、データ機器102は脅威エンジン244を含む。脅威エンジンは、それぞれのデコーダステージおよびパターンマッチステージの最中に、プロトコルデコーディングおよび脅威署名マッチングの両方を組み込んでいる。2つのステージの結果は、検出器ステージによって併合される。
【0064】
データ機器102がパケットを受信すると、データ機器102はセッションマッチを実行して、そのパケットがどのセッションに属するかを決定する(データ機器102が同時セッションをサポートすることを可能にしている)。各セッションは、特定のプロトコルデコーダ(例えば、Webブラウジングデコーダ、FTPデコーダ、またはSMTPデコーダ)を意味するセッション状態を有している。ファイルがセッションの一部として送信されるとき、適用可能なプロトコルデコーダは、適切なファイル特有のデコーダ(例えば、PEファイルデコーダ、JavaScriptデコーダ、またはPDFデコーダ)を使用することができる。
【0065】
脅威エンジン244の一つの例示的な実施形態の部分が図4に示されている。所与のセッションに対して、デコーダ402は、対応するプロトコルおよびマーキングのコンテキスト(marking context)に従って、トラフィックバイトストリームを進む(walk)。コンテキストの一つの例は、エンドオブファイル(end-of-file)コンテキストである(例えば、JavaScriptファイルの処理中に</script>に出会うこと)。デコーダ402は、パケット内のエンドオブファイルコンテキストをマーク付けすることができ、次いで、ファイルの観察された特徴を使用して、適切なモデルの実行をトリガするために使用することができる。ある場合(例えば、FTPトラフィック)では、コンテキストを識別/マーク付けする、デコーダ402のための明示的なプロトコルレベルのタグが存在しないことがある。以下でさらに詳細に説明するように、様々な実施形態において、デコーダ402は、他の情報(例えば、ヘッダで報告されたファイルサイズ)を使用して、ファイルの特徴抽出がいつ終了すべきか(例えば、オーバーレイセクションを開始する)、そして、適切なモデルを使用する実行が開始すべきかを判断する。
【0066】
デコーダ402は、2つの部分から構成される。デコーダ402の第1部分は、状態マシン言語を使用して状態マシンとして実装することができる仮想マシン部分(404)である。デコーダ402の第2部分は、トラフィックが一致したときに状態マシン遷移およびアクションをトリガするためのトークン406のセットである。脅威エンジン244は、また、(例えば、脅威パターンに対して)パターンマッチングを実行する脅威パターン照合器408(例えば、正規表現を使用している)を含む。一つの例として、脅威パターン照合器(matcher)408は、(例えば、セキュリティプラットフォーム122によって)照合する文字列(的確な(exact)文字列またはワイルドカード文字列のいずれか)のテーブル、および、照合する文字列が見つかった場合に行う対応するアクションを備えることができる。検出器410は、デコーダ402および脅威パターン照合器408によって提供される出力を処理して、様々なアクションを行う。
【0067】
2. Nグラム(n-grams)
【0068】
セッション内のデータは、一連のnグラム(n-grams)へと分割することができる-一連のバイト文字列。一つの例として、セッションにおける16進数データの一部が「1023ae42f6f28762aab」であると仮定する。とすると、シーケンスにおける2グラム(2-gram)は、「1023」、「23ae」、「ae42」、「42f6」、等といった、隣接する文字の全てのペアである。様々な実施形態において、脅威エンジン244は、8グラム(8-gram)を使用してファイルを解析するように構成されている。他のnグラムも、また、使用することができる、7グラムまたは4グラムといったもの。上記の文字列の例において、「1023ae42f6f28762」は8グラムであり、「23ae42f6f28762aa」は8グラムである、等。バイトシーケンスで可能な異なる8グラムの総数は、2の64乗(18,446,744,073,709,551,616)である。バイトシーケンス内の可能な8グラムの全てを検索することは、データ機器102のリソースを容易に超えるだろう。代わりに、以下でより詳細に説明されるように、セキュリティプラットフォーム122によって、脅威エンジン244による使用のためのデータ機器102に対して、大幅に低減された8グラムのセットが提供される。
【0069】
ファイルに対応するセッションパケットが脅威エンジン244によって受信されると、脅威パターン照合器408は、テーブル内の文字列に対する一致についてパケットを解析する(例えば、正規表現及び/又は的確な文字列一致を実行することによる)。一致(例えば、対応するパターンIDによって識別される一致の各インスタンス)、および、各一致がどのオフセットで発生したかのリストが生成される。これらの一致に対するアクションは、オフセットの順序(例えば、下から上へ)で行われる。所与の一致に対して(すなわち、特定のパターンIDに対応して)、行われるべき1つ以上のアクションのセットが(例えば、アクションをパターンIDにマッピングするアクションテーブルを介して)指定される。
【0070】
セキュリティプラットフォーム122によって提供される8グラムのセットは、脅威パターン照合器408がすでに実行している一致(例えば、JavaScriptファイルがパスワードストレージにアクセスする場所、または、PEファイルがLocal Security Authority Subsystem Service(LSASS)APIを呼び出す場所といった、マルウェアの特定の指標を探す発見的一致(heuristic matches))のテーブルへの追加として、(例えば、的確な文字列一致として)追加され得る。このアプローチの1つの利点は、パケットを通過する複数のパスを実行する代わりに(例えば、最初に発見的一致を評価し、そして、次いで、8グラム一致を評価する)、脅威パターン照合器408によって実行される他の検索と並行して8グラムを検索できることである。
【0071】
以下でより詳細に説明されるように、8グラム一致は、種々の実施形態において、線形および非線形の両方の分類モデルによって使用されるnグラム一致に対して指定可能なアクションの例は、(例えば、線形分類器について)重み付きカウンタを増加させること(incrementing)、および、(例えば、非線形分類器について)特徴ベクトル内の一致の保存を含む。どのアクションが行われるかは、(どのタイプのモデルを使用するかを決定する)パケットに関連付けられたファイルタイプに基づいて指定され得る。
【0072】
3. モデルの選択
【0073】
場合によっては、ファイルのヘッダの中で特定のファイルタイプが指定される(例えば、ファイル自体の最初の7バイト内に現れるマジックナンバーとして)。そうしたシナリオにおいて、脅威エンジン244は、(例えば、ファイルタイプおよび対応するモデルを列挙するセキュリティプラットフォーム122によって提供されるテーブルに基づいて)指定されたファイルタイプに対応する適切なモデルを選択することができる。JavaScriptといった、他の場合において、マジックナンバーまたは他のファイルタイプ識別子(ヘッダに存在する場合)は、どの分類モデルを使用すべきかを証明するものではない。一つの例として、JavaScriptは「textfile」のファイルタイプを有するだろう。JavaScriptといったファイルタイプを識別するために、デコーダ402が使用され、確定的有限状態オートマトン(deterministic finite state automaton、DFA)パターンマッチングを実行し、そして、発見的手法(例えば、ファイルがJavaScriptであることを識別する<script>および他のインジケータ)を適用することができる。決定されたファイルタイプ及び/又は選択された分類モデルは、セッション状態に保存される。セッションに関連付けられたファイルタイプは、セッションの進行につれて、更新することができる。例えば、テキストストリームにおいて、<script>タグに出会うとき、JavaScriptファイルタイプをセッションに割り当てることができる。対応する</script>出会うときは、ファイルタイプを変更することができる(例えば、平文に戻る)。
【0074】
4. 線形分類モデル
【0075】
線形モデルを表現する1つの方法は、以下の線形方程式を使用することである。
【0076】
Σ(β)<C,i=1,2,3…,P
ここで、Pは特徴の総数であり、xはi番目の特徴であり、βは特徴xの係数(重み付け)であり、そして、Cは閾値定数である。この例において、Cは悪意の裁決に対する閾値であり、所与のファイルについて合計がCより小さい場合に、そのファイルには良性の裁定が割り当てられ、かつ、合計がC以上の場合には、そのファイルに悪意の裁定が割り当てられることを意味している。
【0077】
データ機器102による線形分類モデルを使用するための1つのアプローチは、以下の通りである。入力ファイルのスコアを追跡するために単一のフロート(d)を使用され、そして、観察されたnグラムおよび対応する係数(すなわち、xおよびβ)を保管するためにハッシュテーブルが使用される。それぞれ入ってくるパケットに対して、n-gram特徴(例えば、セキュリティプラットフォーム122によって提供されるようなもの)それぞれがチェックされる。ハッシュテーブルの特徴(x)について一致が見つかると、いつでも、ハッシュテーブル内でその特徴に一致する単一のフロート(β)が追加される(例えば、dに対して)。ファイルエンドに到達すると、単一フロート(d)が閾値(C)に対して比較され、ファイルについて裁決を決定する。
【0078】
nグラムカウントについて、特徴xは、i番目のnグラムが観察される回数に等しい。特定のファイルについてi番目のn-gramが4回観測されたと仮定する。4*βは、β+β+β+βに書き換えることができる。i番目のnグラムが何回を観察されるかをカウントし(すなわち4回)、そして、βを乗算することの代わりに、別のアプローチは、i番目のnグラム観察されるたびにβを加算することである。さらに、ファイルについてj番目のnグラムが3回観測されたと仮定する。3*βは、同様に、β+β+βとして書くことができ、βが何回観察されたかをカウントする代わりに、毎回βを加算し、そして、次いで、最後に加算する。
【0079】
Σ(β)を見つけるために、β、β、...それぞれが加算される(ここで、...は他の特徴/重み付けの全てに対応する)。これは、β+β+β+β+β+β+βとして書き換えることができる。加算は累積的であるため、値の加算は任意の順序(例えば、β+β+β+β+β+β+β、等)で加えられ、そして、単一のフロートへと累積される。ここで、フロート(d)が0.0で始まるものと仮定する。特徴xが観察される度に、βがフロートdに対して追加され、そして、xが観察される度に、βがフロートdに対して追加され得る。このアプローチは、4バイトのフロートをセッション毎のメモリ全体として使用することを可能にし、そして、セッション毎のメモリが特徴の数に比例するアプローチとは対照的である。ここでは、特徴ベクトル全体が重み付けベクトルによって乗算されるように、メモリに保管される。4バイト*1,000の4Kバイトの特徴の例を使用すると、ストレージについて4Kが必要とされるだろう(単一の4バイトフロートと比較して)。これは、1,000倍高価である。
【0080】
5. 非線形分類モデル
【0081】
種々の非線形分類アプローチを、ここにおいて説明される技術と共に使用することができる。非線形分類モデルの一つの例は、勾配ブースティングツリーである。この例において、特徴ベクトルは、オールゼロ(all-zero)ベクトルに初期化される。不運にも、(線形モデルとは異なり)非線形モデルでは、存在が検出されている特徴のセット全体(例えば、1000個の特徴)がセッションの全持続期間について持続される。このことは、線形アプローチにおけるほど効率的ではないが、完全な4バイトのフロートではなく、1バイト(0-255)のフロートになるように特徴をダウンサンプリングすることによって、ある程度の効率が未だに得られる(メモリが制約されていないデバイスで使用され得る)。
【0082】
データ機器102がファイルの全体をスキャンする際、特徴が観察される度に、その特徴の値が特徴ベクトル内で1だけ増加される。一旦ファイルエンドに到達すると(または、そうでなければ特徴観察の終了が発生する)、構築された特徴ベクトルは、勾配ブースティングツリーモデルへと供給される(例えば、セキュリティプラットフォーム122から受信される)。以下でより詳細に説明されるように、非線形分類モデルはnグラム(例えば、8グラム)および非nグラム特徴の両方を使用して構築され得る。非nグラム特徴の一つの例は、ファイルの意図された(purported)サイズである(ファイルのヘッダを含むパケットから値として読み取ることができる)。(例えば、ヘッダで指定されたファイルサイズに基づいて)意図されたエンドオブファイルの後に現れるファイルデータは、オーバーレイと呼ばれる。特徴として機能することに加えて、意図されたファイル長は、そのファイルがどれだけ長いと予想されるかについてプロキシとして使用され得る。非線形分類子(classifier)は、意図されたファイル長に到達するまで、ファイルのパケットストリームに対して実行され得る。そして、次いで、ファイルエンドに実際に到達したか否かにかかわりなく、ファイルに対して裁決を形成することができる。所与のファイルがオーバーレイを含むことは、また、非線形分類モデルの一部として使用され得る特徴の例でもある。種々の実施形態において、ファイルのオーバーレイ部分は解析されず、再度、-実際のファイルエンドの以前に解析を行うことができる。他の実施形態においては、特徴抽出が行われ、そして、実際のファイルエンドに到達するまで、悪意について裁決+が形成されない。
【0083】
一つの例示的な実施形態において、ツリーモデルは、5000個のバイナリツリーを含む。各ツリー上の全てのノードは、特徴および対応する閾値を含んでいる。ツリーの一部の例を図5に示されている。図5に示される例において、特徴(例えば、特徴F4)の値がその閾値(例えば、30)より小さい場合、左分岐がとられる(502)。特徴の値が閾値以上である場合、右分岐がとられる(504)。ツリーは、関連する値(例えば、0.7)を有する、リーフノード(例えば、ノード506)に到達するまで進む。到達した各リーフの値は(ツリーそれぞれについて)合計され(乗算されるのではなく)、裁決を計算するための最終スコアを得る。スコアが閾値を下回る場合、ファイルは良性とみなされ、そして、閾値以上である場合、ファイルは悪意があるとみなされる。最終スコアを得る際の乗算の欠如は、データ機器102のリソース制約環境においてモデルをより効率的に使用する助けとなる。
【0084】
様々な実施形態において、ツリー自身は、(更新されたモデルが受信されるまで)データ機器102において固定され、そして、同時に複数のセッションによってアクセスされ得る共有メモリ内に保管され得る。セッション当たりのコストは、セッションの特徴ベクトルを保管するコストであり、一旦セッションの解析が完了するとゼロにすることができる。
【0085】
6. プロセスの実施例
【0086】
図6は、データ機器においてインラインマルウェア検出を実行するためのプロセスについて一つの例を示している。様々な実施形態において、プロセス600は、データ機器102によって、そして、特には、脅威エンジン244によって実行される。脅威エンジン244は、適切なスクリプト言語(例えば、Python)で作成されたスクリプト(または、スクリプトのセット)を使用して実装することができる。プロセス600は、また、クライアント装置110といった、エンドポイントにおいても(例えば、クライアント装置110において実行するエンドポイント保護アプリケーションによって)実行され得る。
【0087】
プロセス600は、ファイルがセッションの一部として送信されている旨の指示(indication)が機器102によって受信されると、602で開始する。602で実行される処理の一つの例として、所与のセッションについて、関連するプロトコルデコーダは、プロトコルデコーダによってファイルの開始が検出されるとき、適切なファイル特有のデコーダを呼び出すか、または、そうでなければ使用することができる。上述のように、ファイルタイプは(例えば、デコーダ402によって)決定され、そして、セッションに関連付けられる(例えば、ファイルタイプが変化するか、または、ファイルパケットが送信されなくなるまで、後続のファイルタイプ解析を行う必要がないようにする)。
【0088】
604において、nグラム解析が、受信パケットのシーケンスに対して実行される。上述のように、nグラム解析は、機器102によってセッションにおいて実行されている他の解析とインラインで行うことができる。例えば、機器102が特定のパケットについて(例えば、特定の発見的方法の存在をチェックするために)解析を実行している間に、それは、また、パケット内の8グラムがセキュリティプラットフォーム122によって提供される8グラムと一致するか否かを決定することもできる。604で実行される処理の最中に、nグラム一致が見つかったときは、条件をファイルタイプ(filetype)に基づいてアクションにマッピングするために対応するパターンIDが使用される。このアクションは、重み付けされたカウンタをインクリメントするか(例えば、ファイルタイプが線形分類子に関連付けられている場合)、または、一致を説明するために特徴ベクトルを更新するか(例えば、ファイルタイプが非線形分類子に関連付けられている場合)のいずれかである。
【0089】
nグラム解析は、エンドオブファイル条件またはチェックポイントのいずれかが到達されるまで、パケットごとに、継続する。その時点(606)で、適切なモデルが、ファイルの裁決を決定するために使用される(すなわち、モデルを使用して得られた最終値を悪意の閾値と比較する)。上述のように、モデルは、nグラム特徴を組み込み、そして、また、他の特徴を(例えば、非線形分類器の場合に)組み込むこともできる。
【0090】
最終的に、608では、606でなされた決定に応答してアクションがとられる。応答アクションの一つの例は、セッションの終了である。応答アクションの別の例は、セッションを継続させるが、ファイルが送信されないようにする(代わりに、隔離エリアに置く)ことである。様々な実施形態において、機器102は、その裁決(良性の裁決、悪性の裁決、または、その両方のいずれか)をセキュリティプラットフォーム122と共有するように構成されている。セキュリティプラットフォーム122は、ファイルの独立した解析を完了すると、裁決を形成したモデルの性能の評価を含む、様々な目的のために、機器102によって報告された裁決を使用することができる。
【0091】
サンプルについて脅威署名(threat signature)の例を図7Bに示す。特に、「4d73f42438fb5a8579219cdfa9cbbb4ce3f771ffed93af81b052831e4813f8」のSHA-256ハッシュを有するサンプルについて、各ペアにおける第1値は特徴に対応し、そして、第2値はカウントに対応している。図7Bに示される例において、数字を含む特徴(例えば、特徴「3905」)は、nグラム特徴に対応し、そして、「J」と数字を含む特徴(例えば、特徴「J18」)は、非nグラム特徴に対応している。
【0092】
一つの例示的な実施形態において、セキュリティプラットフォーム122は、データ機器102といった機器による使用のためのモデルを生成するときに、特定の偽陽性率(false positive ratio)(例えば、0.001)を目標とするように構成されている。従って、ある場合には(例えば、1000個のファイルのうち1個)、ここにおいて説明される技術に従ったモデルを使用してインライン解析を実行している際に、データ機器102は、良性のファイルが悪意あるものと誤って判断し得る。そうしたシナリオでは、セキュリティプラットフォーム122が、ファイルが実際には良性であると後に続いて決定した場合に、後で(例えば、別の機器によって)悪意あるものとしてフラグ付けされないように、それをホワイトリストに追加することができる。
【0093】
ホワイトリスト(whitelisting)に対する1つのアプローチは、そのファイルを機器102に保管されたホワイトリストに追加するように、セキュリティプラットフォーム122に対して指示することである。別のアプローチは、セキュリティプラットフォーム122について、偽陽性のホワイトリストシステム154を指示し、そして、ホワイトリストシステム154について、順に、機器102といった機器を偽陽性情報で最新の状態に保つことである。上述のように、機器102といった機器の1つの問題は、リソース制約されていることである。機器でホワイトリストを維持することに使用されるリソースを最小化する1つのアプローチは、最近最も使われなかった(Least Recently Used、LRU)キャッシュを使用してホワイトリストを維持することである。ホワイトリストは、ファイルハッシュを含むことができ、そして、また、特徴ベクトルまたは特徴ベクトルのハッシュといった、他の要素に基づくこともできる。
【0094】
VI. モデルの構築
【0095】
図1に示された環境に戻ると、先に説明したように、セキュリティプラットフォーム122は、受信したサンプルについて静的および動的解析を実行するように構成さていれる。セキュリティプラットフォーム122は、種々のソースから解析のためのサンプルを受信することができる。上述のように、サンプルソースの一つの例示的なタイプは、データ機器(例えば、データ機器102、136、および148)である。他のソース(例えば、他のセキュリティ機器ベンダー、セキュリティ研究者、等といった、サンプルの1つ以上の第三者プロバイダ)も、また、必要に応じて使用することができる。以下でより詳細に説明されるように、セキュリティプラットフォーム122は、モデルを構築するために、受信するサンプルのコーパス(corpus)を使用することができる(例えば、モデルは、ここにおいて説明される技術の実施形態に従って、次いで、セキュリティ機器102によって使用され得る)。
【0096】
様々な実施形態において、静的解析エンジン306は、受信したサンプルに対して特徴抽出を実行するように構成されている(例えば、上述のように他の静的解析機能を実行している間にも)。特徴抽出(例えば、セキュリティプラットフォーム122による)を実行するための一つの例示的なプロセスが、図8Aに示されている。プロセス800は、サンプルの静的解析が開始されると、802で開始する。特徴抽出(804)の最中に、処理されるサンプル(例えば、図3のサンプル130)から、全ての8グラム(または、8グラムが使用されていない実施形態における他の適用可能なnグラム)が抽出される。特に、解析されているサンプル内の8グラムのヒストグラムが(例えば、ハッシュテーブルに)抽出され、これは、処理されているサンプル内で所与の8グラムが観察された回数を示す。静的解析エンジン306による特徴解析の最中に8グラムを抽出することの1つの利点は、(例えば、モデルを構築する際に)第三者から得られたサンプルの使用における潜在的なプライバシーおよび契約上の問題を軽減できることである。結果として得られるヒストグラムからオリジナルのファイルを再構成することができないからである。抽出されたヒストグラムは806で保管される。
【0097】
様々な実施形態において、静的解析エンジン306は、所与のサンプルについて抽出されたヒストグラム(例えば、ハッシュテーブルを使用して表される)を、他のサンプルから抽出されたヒストグラムと共にストレージ142(例えば、ハドゥープ(Hadoop)クラスタ)に保管する。ハドゥープ内のデータは圧縮され、そして、ハドゥープデータについて操作が実行されると、必要なデータはオンザフライ(on the fly)圧縮解除される。ファイルについて一つの例示的なハッシュテーブル(JSONで表される)の例が図7Aに示されている。行(line)702はファイルのSHA-256ハッシュを示している。行704は、サンプル130がセキュリティプラットフォーム122に到着するUNIX(登録商標)時間を示している。行706は、オーバーレイ部分におけるnグラムのカウントを示している(例えば、'd00fbf4e08bc366':1は、'd00fbf4e08bc366'の1つのインスタンスがオーバーレイセクション内で見つかったことを示す)。行708は、ファイル内に存在する8グラムそれぞれのカウントを示している。行710は、ファイルがオーバーレイを有することを示している。行712は、ファイルのファイルタイプが「.exe」であることを示している。行714は、セキュリティプラットフォーム122がサンプル130の処理を終了したUNIX時間を示している。行716は、ファイルがヒットした非8グラム特徴それぞれのカウントを示している。最後に、行718は、ファイルが(例えば、セキュリティプラットフォーム122によって)悪意があるものと決定されたことを示している。
【0098】
一つの例示的な実施形態において、ハドゥープクラスタに保管された8グラムのヒストグラムのセットは、1日あたり、概ね3テラバイトの8グラムのヒストグラムデータによって成長する。ヒストグラムは、悪意のあるサンプルおよび良性サンプルの両方に対応している(例えば、上述のようにセキュリティプラットフォーム122によって実行される他の静的および動的解析の結果に基づいて、そのようにラベル付けされる。)
【0099】
解析されるサンプルから抽出される8グラムのヒストグラムは、ファイル自身よりも概ね10%大きく、そして、典型的なサンプルは、概ね100万個の異なる8グラムを含むヒストグラムを有する。異なる可能な8グラムの総数は、2の64乗(264)である。上述のように、対照的に、セキュリティプラットフォーム122によって(例えば、サブスクリプションの一部として)データ機器102といったデバイスに送信される分類モデルは、様々な実施形態において、数千個の特徴(例えば、1000個の特徴)だけを含む。潜在的に最大264個の機能のセットを、モデルで使用するために最も重要な1000個の特徴まで削減する一つの例示的な方法は、相互情報技術を使用することである。他のアプローチ(例えば、カイ二乗スコア)も、また、適用可能である。4つの必要とされるパラメータは、所与の機能を有する悪意のあるサンプルの数、所与の機能を有する良性サンプルの数、悪意のあるサンプルの総数、および良性サンプルの総数を含む。相互情報の利点の1つは、非常に大きなデータセットにおいて効率的に使用できることである。ハドゥープにおいて、相互情報アプローチは、複数のマッパー(mapper)にわたりタスクを分散することによって、単一のパスで(すなわち、所与のファイルタイプについてハドゥープクラスタデータセット内に保管された8グラムのヒストグラム全てを通じて)実行することができ、それぞれが特定の機能を処理する責任を負う。最も高い相互情報を有するこれらの特徴は、悪意を最も示す、かつ/あるいは、良性を最も示す特徴のセットとして、該当する場合、選択することができる。結果として生じた1000個の特徴は、次いで、該当する場合、モデル(例えば、線形分類モデルおよび非線形分類モデル)を構築するために使用することができる。例えば、線形分類モデルを構築するために、モデルビルダ(builder)152(pythonといった適切な言語で作成されたオープンソースツール及び/又はスクリプトのセットを使用して実装されるもの)は、上位1000個の特徴、および、適用可能な重み付けを、機器102がチェックするためのnグラム特徴のセットとして保存する(例えば、上記のセクションV.A.4に記載されているように)。
【0100】
いくつかの実施形態において、非線形分類モデルは、また、特徴の上位1000個(または、他の所望の数)を使用して、モデルビルダ152によっても構築される。他の実施形態において、非線形分類モデルは、上位の(top)特徴(例えば、950)を主に使用して構築されるが、パケット毎の特徴抽出および解析の最中に検出され得る、他の非グラム特徴(例えば、50個のそうした特徴)も、また、組み込む。非線形分類モデルに組み込むことができる非nグラム特徴のいくつかの例は、(1)ヘッダのサイズ、(2)ファイル内のチェックサムの存否、(3)ファイル内のセクションの数、(4)ファイルの意図された長さ(PEファイルのヘッダに示されるように)、(5)ファイルがオーバーレイ部分を含むか否か、および(6)PEを実行するためにファイルがWindows EFIサブシステムを必要とするか否か、を含む。
【0101】
いくつかの実施態様においては、上位1000個の特徴を選択するために相互情報を使用するのではなく、特徴のより大きなセット(過剰に生成された特徴のセット)が決定される。一つの例として、上位5000個の機能は、相互情報を使用して最初に選択することができる。5000個のセットは、次いで、従来の特徴選択技法(例えば、バギング(bagging))への入力として使用することができる。それは、非常に大きなデータセット(例えば、ハドゥープデータセット全体)には上手くスケールできないが、縮小されたセット(例えば、5000個の特徴)ではより効果的である。相互情報を使用して識別された5000個の特徴のセットから最終的な1000個の特徴を選択するために、従来の特徴選択技術が使用され得る。
【0102】
一旦最終的な1000個の特徴が選択されると、非線形モデルを構築するための一つの例示的な方法は、scikit-learnまたはXGBoostといったオープンソースツールを使用することである。該当する場合、パラメータチューニングは、交差検証(cross-validation)を使用することなどにより、実行することができる。
【0103】
モデルを生成するための一つの例示的なプロセスが図8Bに示されている。様々な実施形態において、プロセス850は、セキュリティプラットフォーム122によって実行される。プロセス850は、抽出された特徴(例えば、nグラム特徴を含む)のセットが受信されると、852で開始する。特徴のセットを受信することができる一つの例字的な方法は、プロセス800の結果として保管された特徴を読み取ることによるものである。854では、852で受信された特徴から、特徴の削減されたセットが決定される。上述のように、特徴の削減されたセットを決定する一つの例示的な方法は、相互情報を使用することによるものである。他のアプローチ(例えば、カイ二乗スコア)も、また、使用することができる。さらに、また、上述のように、相互情報を用いて特徴の初期セットを選択し、バギングまたは他の適切な技術を使用して特徴の初期セットを精緻化するといった、技術の組み合わせも、また、852/854で使用することができる。最終的に、上述のように、一旦(例えば、854で)特徴が選択されると、856で適切なモデルが構築される(例えば、オープンソースまたは他のツールを使用し、そして、該当する場合は、パラメータチューニングを実行する)。モデル(例えば、プロセス850を使用してモデルビルダ152によって生成されるもの)は、データ機器102および他の適用可能な受信者(例えば、データ機器136および148)に対して(例えば、加入サービスの一部として)送信され得る。
【0104】
様々な実施形態において、モデルビルダ152は、毎日(または他の適用可能な)ベースでモデル(例えば、線形および非線形分類モデル)を生成する。プロセス850を実行することにより、または、そうでなければ定期的にモデルを生成することによって、セキュリティプラットフォーム122は、機器102といった機器によって使用されるモデルが、最新のタイプのマルウェア脅威(例えば、悪意のある個人によって最新に展開された脅威)を検出することを確保するように助けることができる。
【0105】
新しく生成されたモデルが、(例えば、閾値を超える一連の品質評価メトリックスに基づいて決定されるように)既存のモデルよりも良好であると決定されるときはいつも、更新されたモデルは、データ機器102といったデータ機器に送信され得る。場合によって、そうした更新は、特徴に割り当てられた重み付けを調整する。そうした更新は、機器に容易に展開され、(例えば、リアルタイムアップデートとして)機器に採用される。他の事例において、そうした更新は、特徴自身を調整する。そうした更新は、デコーダといった、機器のコンポーネントに対するパッチを必要とし得るので、展開がより複雑になり得る。モデル生成の最中にオーバートレーニングを使用する1つの利点は、デコーダが特定の特徴を検出することができるか否かを、モデルが考慮できることである。
【0106】
様々な実施形態において、機器は、受信された際に、更新をモデルに対して展開するために(例えば、セキュリティプラットフォーム122によって)必要とされる。他の実施形態において、機器は、選択的に(少なくとも一定期間)更新を展開することが可能である。一つの例として、新しいモデルが機器102によって受信された場合、既存のモデルおよび新たなモデルは、両方が、機器102においてある期間について並列に実行され得る(例えば、既存のモデルが生産において使用され、かつ、新たなモデルは、実際には実行することなく行われるであろうアクションについてレポートする)。機器の管理者は、機器におけるトラフィックを処理するために既存のモデルまたは新たなモデルのいずれが使用されるべきかを示すことができる(例えば、どのモデルがより良好なパフォーマンスを示すかに基づいて)。様々な実施形態において、機器102は、どのモデルが機器102において動作しているか、および、そのモデルがどの程度有効であるか(例えば、偽陽性の統計情報)といった、情報を示すテレメトリ(telemetry)をセキュリティプラットフォーム122に戻す。
【0107】
上述の実施形態は、理解を明確にするためにある程度詳細に説明されているが、本発明は、提供される詳細について限定されるものではない。本発明を実施するための多くの代替的な方法が存在している。開示された実施形態は、例示的なものであり、かつ、限定的なものではない。
図1
図2A
図2B
図3
図4
図5
図6
図7A
図7B
図8A
図8B