本発明は、処理、装置、システム、物質の組成、コンピュータ読み取り可能な格納媒体上に具現化されたコンピュータプログラム製品、および/または、プロセッサ(プロセッサに接続されたメモリに格納および/またはそのメモリによって提供される命令を実行するよう構成されたプロセッサ)を含め、様々な形態で実装されうる。本明細書では、これらの実装または本発明が取りうる任意の他の形態を、技術と呼ぶ。一般に、開示された処理の工程の順序は、本発明の範囲内で変更されてもよい。特に言及しない限り、タスクを実行するよう構成されるものとして記載されたプロセッサまたはメモリなどの構成要素は、ある時間にタスクを実行するよう一時的に構成された一般的な構成要素として、または、タスクを実行するよう製造された特定の構成要素として実装されてよい。本明細書では、「プロセッサ」という用語は、1または複数のデバイス、回路、および/または、コンピュータプログラム命令などのデータを処理するよう構成された処理コアを指すものとする。
以下では、本発明の原理を示す図面を参照しつつ、本発明の1または複数の実施形態の詳細な説明を行う。本発明は、かかる実施形態に関連して説明されているが、どの実施形態にも限定されない。本発明の範囲は、特許請求の範囲によってのみ限定されるものであり、本発明は、多くの代替物、変形物、および、等価物を含む。以下の説明では、本発明の完全な理解を提供するために、多くの具体的な詳細事項が記載されている。これらの詳細事項は、例示を目的としたものであり、本発明は、これらの具体的な詳細事項の一部または全てがなくとも特許請求の範囲に従って実施可能である。簡単のために、本発明に関連する技術分野で周知の技術事項については、本発明が必要以上にわかりにくくならないように、詳細には説明していない。
ファイアウォールは、一般に、不正アクセスからネットワークを保護しつつ、承認された通信がファイアウォールを通過することを許可する。ファイアウォールは、通例、ネットワークアクセスに対するファイアウォール機能を提供するデバイス、デバイスセット、または、デバイス上で実行されるソフトウェアである。例えば、ファイアウォールは、デバイス(例えば、コンピュータ、スマートフォン、または、その他のタイプのネットワーク通信可能なデバイス)のオペレーティングシステムに統合されうる。ファイアウォールは、コンピュータサーバ、ゲートウェイ、ネットワーク/ルーティングデバイス(例えば、ネットワークルータ)、および、データアプライアンス(例えば、セキュリティアプライアンスまたはその他のタイプの専用デバイス)など、様々なタイプのデバイス上の1以上のソフトウェアアプリケーションに統合されるか、もしくは、かかるアプリケーションとして実行されることが可能であり、様々な実装例において、専用ハードウェア(ASICまたはFPGAなど)に実装される場合もある。
ファイアウォールは、通例、ルールのセットに基づいてネットワーク伝送を拒否または許可する。これらのルールのセットは、しばしば、ポリシー(例えば、ネットワークポリシーまたはネットワークセキュリティポリシー)と呼ばれる。例えば、ファイアウォールは、望ましくない外部のトラフィックが保護されたデバイスに到達するのを防ぐために、ルールまたはポリシーのセットを適用することによってインバウンドトラフィックをフィルタリングできる。また、ファイアウォールは、ルールまたはポリシーのセットを適用することによってアウトバウンドトラフィックをフィルタリングできる(例えば、許可、ブロック、監視、通知、または、記録、および/または、その他の動作を、ファイアウォールルールまたはファイアウォールポリシー内に記述できる。ルールまたはポリシーは、本明細書に記載したような様々な規準に基づいてトリガされうる)。ファイアウォールは、ルールまたはポリシーのセットを単に適用することによって、ローカルネットワーク(例えば、イントラネット)トラフィックもフィルタリングできる。
セキュリティデバイス(例えば、セキュリティアプライアンス、セキュリティゲートウェイ、セキュリティサービス、および/または、その他のセキュリティデバイス)は、様々なセキュリティ機能(例えば、ファイアウォール、マルウェア対策、侵入防止/検出、情報漏洩対策(DLP)、および/または、その他のセキュリティ機能)、ネットワーク機能(例えば、ルーティング、クオリティオブサービス(QoS)、ネットワーク関連リソースの負荷バランシング、および/または、その他のネットワーク機能)、ならびに/、もしくは、その他の機能を備えうる。例えば、ルーティング機能は、送信元情報(例えば、IPアドレスおよびポート)、宛先情報(例えば、IPアドレスおよびポート)、ならびに、プロトコル情報に基づきうる。
基本的なパケットフィルタリング・ファイアウォールは、ネットワークを介して伝送された個々のパケットを調べることによってネットワーク通信トラフィックをフィルタリングする(例えば、ステートレスパケットフィルタリング・ファイアウォールであるパケットフィルタリング・ファイアウォールまたは第1世代のファイアウォール)。ステートレスパケットフィルタリング・ファイアウォールは、通例、個々のパケット自体を調べ、調べたパケットに基づいて(例えば、パケットの送信元および宛先アドレス情報、プロトコル情報、ならびに、ポート番号の組み合わせを用いて)ルールを適用する。
また、アプリケーション・ファイアウォールは、アプリケーションレイヤフィルタリングを実行できる(例えば、TCP/IPスタックのアプリケーションレベルで機能するアプリケーションレイヤフィルタリング・ファイアウォールまたは第2世代のファイアウォール)。アプリケーションレイヤフィルタリング・ファイアウォールまたはアプリケーション・ファイアウォールは、一般に、特定のアプリケーションおよびプロトコルを識別できる(例えば、ハイパーテキストトランスファープロトコル(HTTP)、ドメインネームシステム(DNS)要求、ファイルトランスファープロトコル(FTP)を用いたファイル転送、ならびに、様々なその他のタイプのアプリケーションおよびその他のプロトコル(Telnet、DHCP、TCP、UDP、および、TFTP(GSS)など))。例えば、アプリケーション・ファイアウォールは、標準ポートで通信を試みる無許可プロトコルをブロックできる(例えば、プロトコルに非標準ポートを用いて忍び込もうとする無許可/ポリシー外のプロトコルが、一般に、アプリケーション・ファイアウォールを用いて識別されうる)。
また、ステートフル・ファイアウォールは、各パケットがネットワーク伝送のパケットのフローに関連する一連のパケットのコンテキスト内で検査されるステートフルベースのパケット検査を実行できる。このファイアウォール技術は、一般に、ファイアウォールを通過するすべての接続の記録を維持するのでステートフルパケット検査と呼ばれており、パケットが新しい接続の開始であるのか、既存の接続の一部であるのか、または、無効なパケットであるのかを判定できる。例えば、接続の状態自体が、ポリシー内のルールをトリガする基準の1つでありうる。
先進ファイアウォールすなわち次世代ファイアウォールは、上述のように、ステートレスおよびステートフルパケットフィルタリングとアプリケーションレイヤフィルタリングとを実行できる。また、次世代ファイアウォールは、さらなるファイアウォール技術を実行できる。例えば、先進ファイアウォールまたは次世代ファイアウォールとも呼ばれる特定の新しいファイアウォールは、ユーザおよびコンテンツの識別もできる(例えば、次世代ファイアウォール)。特に、特定の次世代ファイアウォールは、これらのファイアウォールが数千のアプリケーションを自動的に識別できるアプリケーションのリストを拡張している。かかる次世代ファイアウォールの例は、Palo Alto Networks社から市販されている(例えば、Palo Alto Networks社のPAシリーズ・ファイアウォール)。例えば、Palo Alto Networks社の次世代ファイアウォールは、企業が、以下のような様々な識別技術を用いて、ポート、IPアドレス、および、パケットだけでなく、アプリケーション、ユーザ、および、コンテンツを識別して制御することを可能にする:正確なアプリケーション識別のためのAPP-ID、(例えば、ユーザまたはユーザグループによる)ユーザ識別のためのユーザID、および、リアルタイムのコンテンツスキャニング(例えば、ウェブサーフィンの制御、ならびに、データおよびファイル転送の制限)のためのコンテンツID。これらの識別技術により、企業が、従来のポート遮断ファイアウォールによって提供される従来のアプローチに従う代わりに、ビジネス関連概念を用いたアプリケーション利用を確実に実現することが可能になる。また、次世代ファイアウォールのための専用ハードウェア(例えば、専用アプライアンスとして実装される)は、一般に、汎用ハードウェアで実行されるソフトウェアよりもアプリケーション検査のパフォーマンスレベルが高い(例えば、ネットワークスループットを最大化しつつ待ち時間を最小化するためにシングルパスソフトウェアエンジンと緊密に統合された専用の機能特異的な処理を用いるPalo Alto Networks社のセキュリティアプライアンスなど)。
先進または次世代ファイアウォールは、仮想ファイアウォールを用いて実装することもできる。かかる次世代ファイアウォールの例は、Palo Alto Networks社から市販されている(例えば、Palo Alto Networks社のVMシリーズ・ファイアウォール。これは、例えば、VMware(登録商標)ESXi(商標)およびNSX(商標)、Citrix(登録商標)Netscaler SDX(商標)、KVM/OpenStack(Centos/RHEL, Ubuntu(登録商標))、ならびに、Amazon(登録商標)ウェブサービス(AWS)など、様々な商業仮想環境をサポートする)。例えば、仮想ファイアウォールは、物理フォームファクタアプライアンスで利用できる同様または正確に同じ次世代ファイアウォールならびに高度な脅威防御機能をサポートできるため、企業が、企業のプライベート、パブリック、および、ハイブリッドクラウドコンピューティング環境に流れ込むアプリケーションおよびそれらの環境にわたるアプリケーションを安全に有効化することを可能にする。自動化機能(VM監視、動的アドレスグループ、および、RESTベースAPIなど)により、企業は、VMの変化を積極的に監視してそのコンテキストをセキュリティポリシーへ動的にフィードすることにより、VMの変化時に発生しうるポリシーラグを排除することができる。
図1は、悪意あるアプリケーション(「マルウェア」)が検出され、害を及ぼすことを防止される環境の一例を示す。後に詳述するように、マルウェアの分類(例えば、セキュリティプラットフォーム122によってなされる)が、図1に示す環境に含まれる様々なエンティティの間で様々に共有および/または改善されうる。そして、本明細書に記載の技術を用いて、エンドポイントクライアントデバイス104~110などのデバイスが、かかるマルウェアから保護されうる。
「アプリケーション」という用語は、形態/プラットフォームに関わらず、プログラム、プログラムのバンドル、マニフェスト、パッケージなどを集合的に指すために、本明細書を通して用いられる。「アプリケーション」(本明細書では「サンプル」とも呼ぶ)は、スタンドアロンファイル(例えば、ファイル名”calculator.apk”または”calculator.exe”を有する計算機アプリケーション)であってよく、別のアプリケーションの独立した構成要素(例えば、計算機アプリに埋め込まれたモバイル広告SDKまたはライブラリ)であってもよい。
本明細書で用いられる「マルウェア」は、完全に知らされていればユーザが承認しない/承認しなかったであろう行動に、ひそかに行うか否かに関わらず(そして、違法か否かに関わらず)、従事するアプリケーションを指す。マルウェアの例は、トロイの木馬、ウィルス、ルートキット、スパイウェア、ハッキングツール、キーロガーなどを含む。マルウェアの一例は、エンドユーザの位置を収集してリモートサーバに報告する(しかし、マッピングサービスなどの位置ベースサービスをユーザに提供しない)デスクトップアプリケーションである。マルウェアの別の例は、エンドユーザに無料ゲームであるように見せかけるが、SMSプレミアムメッセージ(例えば、1通当たり$10のコスト)を密かに送信し、エンドユーザの電話料金を増やす悪意あるAndroid(登録商標)アプリケーションパッケージ.apk(APK)ファイルである。マルウェアの別の例は、ユーザの連絡先を密かに収集して、それらの連絡先をスパマーに送信するApple(登録商標)iOSフラッシュライトアプリケーションである。本明細書に記載の技術を用いれば、他の形態のマルウェアも検出/阻止できる(例えば、ランサムウェア)。さらに、「マルウェアプロファイル」が、悪意あるアプリケーションに対して生成されるように本明細書に記載されているが、本明細書に記載の技術は、様々な実施形態において、その他の種類のアプリケーションのプロファイル(例えば、アドウェアプロファイル、グッドウェアプロファイルなど)を生成するために利用することもできる。
本明細書に記載の技術は、様々なプラットフォーム(例えば、デスクトップ、モバイルデバイス、ゲームプラットフォーム、埋め込みシステムなど)および/または様々なタイプのアプリケーション(例えば、Android.apkファイル、iOSアプリケーション、Windows(登録商標) PEファイル、Adobe(登録商標) Acrobat(登録商標) PDFファイルなど)と共に利用できる。図1に示した環境例において、クライアントデバイス104~108は、(それぞれ)、企業ネットワーク140に存在するラップトップコンピュータ、デスクトップコンピュータ、および、タブレットである。クライアントデバイス110は、企業ネットワーク140の外側に存在するラップトップコンピュータである。
データアプライアンス102は、クライアントデバイス(クライアントデバイス104および106など)と、企業ネットワーク140の外側のノード(例えば、外部ネットワーク118を介して到達可能なノード)との間の通信に関するポリシーを施行するよう構成されている。かかるポリシーの例は、トラフィックシェーピング、サービスの質、および、トラフィックのルーティングを管理するポリシーを含む。ポリシーの他の例は、受信(および/または送信)電子メールの添付ファイル、ウェブサイトコンテンツ、インスタントメッセージングプログラムを通して交換されたファイル、および/または、その他のファイル転送、における脅威のスキャンを求めるものなど、セキュリティポリシーを含む。いくつかの実施形態において、データアプライアンス102は、さらに、企業ネットワーク140内にとどまるトラフィックに関するポリシーを施行するように構成される。
データアプライアンスの一実施形態が、図2に示されている。図の例は、様々な実施形態において、データアプライアンス102に備えられた物理コンポーネントを表したものである。具体的には、データアプライアンス102は、高性能マルチコアCPU202と、RAM204と、を備える。データアプライアンス102は、さらに、ストレージ210(1以上のハードディスクなど)を備えており、これは、ポリシーおよびその他の構成情報、ならびに、その他の情報(URL分類情報およびマルウェアプロファイルなど)を格納するために用いられる。データアプライアンス102は、さらに、1以上の任意選択的なハードウェアアクセラレータを備えてもよい。例えば、データアプライアンス102は、暗号化および復号動作を実行するよう構成された暗号化エンジン206と、マッチングを実行する、ネットワークプロセッサとして動作する、および/または、その他のタスクを実行するよう構成された1以上のFPGA208と、を備えてよい。
データアプライアンス102は、様々な形態を取りうる。例えば、データアプライアンス102は、専用デバイスまたはデバイスセットでありうる。データアプライアンス102によって提供される機能は、汎用コンピュータ、コンピュータサーバ、ゲートウェイ、および/または、ネットワーク/ルーティングデバイス上のソフトウェアに統合されてもよいし、かかるソフトウェアとして実行されてもよい。いくつかの実施形態において、その代わりに(または加えて)、データアプライアンス102によって提供されるサービスが、クライアントデバイス上で実行するソフトウェアによってクライアントデバイス(例えば、クライアントデバイス104)に提供される。
データアプライアンス102がタスクを実行すると記載された場合にはいつでも、データアプライアンス102の1つのコンポーネント、一部のコンポーネント、または、全コンポーネントが、タスクを実行するために協働しうる。同様に、データアプライアンス102のコンポーネントがタスクを実行すると記載された場合にはいつでも、サブコンポーネントがタスクを実行してよい、および/または、コンポーネントが他のコンポーネントと連携してタスクを実行してよい。様々な実施形態において、データアプライアンス102の一部は、1以上のサードパーティによって提供される。データアプライアンス102にとって利用可能な計算リソースの量などの要因に応じて、データアプライアンス102の様々な論理コンポーネントおよび/または特徴が省略されてもよく、本明細書に記載の技術は、それに応じて適応される。同様に、さらなる論理コンポーネント/特徴が、該当する場合に、データアプライアンス102の実施形態に含められてもよい。
図1に示した例では、(システム120を用いる)悪意ある個人が、マルウェア130を作り出した。悪意ある個人は、クライアントデバイス(クライアントデバイス104など)が、クライアントデバイスを侵害してクライアントデバイスをボットネット内のボットにならせるマルウェア130のコピーを実行することを期待する。次いで、侵害されたクライアントデバイスは、タスク(例えば、暗号通貨マイニング、または、サービス妨害攻撃への参加)を実行し、外部エンティティ(コマンド&コントロール(C&C)サーバ150など)へ情報を報告し、該当する場合、C&Cサーバ150から命令を受信するように命令されうる。
データアプライアンス102が、マルウェア130のコピーを添付されてクライアントデバイス104へ(例えば、システム120によって)送信された電子メールをインターセプトしたと仮定する。別のシナリオ(ただし、同様のシナリオ)として、データアプライアンス102は、クライアントデバイス104によって試みられたマルウェア130のダウンロードをインターセプトすることもできる。いずれかのシナリオでも、データアプライアンス102は、ファイル(例えば、マルウェア130の電子メール添付またはウェブサイトダウンロード)のシグネチャがデータアプライアンス102上に存在するか否かを判定する。シグネチャは、存在する場合には、ファイルが安全であると知られている(例えば、ホワイトリスト内にある)ことを示しうるものであり、ファイルが悪意あるファイルである(例えば、ブラックリスト内にある)ことも示しうる。
様々な実施形態において、データアプライアンス102は、セキュリティプラットフォーム122と協働するよう構成される。一例として、セキュリティプラットフォーム122は、既知の悪意あるファイルのシグネチャのセットを(例えば、サブスクリプションの一部として)データアプライアンス102に提供できる。マルウェア130のシグネチャがそのセットに含まれる場合(例えば、マルウェア130のMD5ハッシュ)、データアプライアンス102は、それに従って(例えば、クライアントデバイス104に送信された電子メール添付のMD5ハッシュがマルウェア130のMD5ハッシュと一致することを検出することによって)クライアントデバイス104へのマルウェア130の伝送を防止できる。また、セキュリティプラットフォーム122は、既知の悪意あるドメインおよび/またはIPアドレスのリストをデータアプライアンス102へ提供することができ、それにより、データアプライアンス102は、(例えば、C&Cサーバ150が、悪意あるサーバであると分かっている場合に)企業ネットワーク140とC&Cサーバ150との間のトラフィックをブロックできるようになる。悪意あるドメイン(および/またはIPアドレス)のリストは、データアプライアンス102が、そのノードの1つが侵害された場合に判定を行う助けにもなりうる。例えば、クライアントデバイス104がC&Cサーバ150と接触しようと試みた場合、かかる試みは、クライアント104がマルウェアによって侵害されたことを強く示唆する(そして、それに応じて、企業ネットワーク140内の他のノードと通信しないようにクライアントデバイス104を隔離するなど、是正動作を取ることが好ましい)。
添付ファイルのシグネチャが見つからない場合、様々な実施形態において、データアプライアンス102は、悪意あるファイルであるか否かを判定するため、および/または、他の方法でファイルを分類するために、静的/動的解析に向けてファイルを提供するよう構成される。一例として、データアプライアンス102は、解析のためにセキュリティプラットフォーム122へマルウェア130のコピーを送信できる。セキュリティプラットフォーム122は、さらに(または、代わりに)、データアプライアンス102以外のソース(例えば、データアプライアンス136および/または148)から評価のためにアプリケーションのコピーを取得できる。様々な実施形態において、マルウェア130の解析は、少なくとも部分的にはオンプレミスで(例えば、企業ネットワーク140内で)実行される。例えば、セキュリティプラットフォーム122によって実行されるように本明細書で記載された解析は、データアプライアンス102に備えられたマルウェア解析モジュール112によって実行されてもよい。
セキュリティプラットフォーム122は、受信したサンプルのコピーをストレージ142に格納し、解析が開始される(または、該当する場合、スケジュールされる)。ストレージ142の一例は、Apache Hadoopクラスタ(HDFS)である。解析の結果(および、アプリケーションに関する追加情報)が、データベース146に格納される。アプリケーションが悪意あるアプリケーションであると判定された場合、データアプライアンス102は、解析結果に基づいてファイルダウンロードを自動的にブロックするよう構成されてよい。さらに、マルウェアに対するシグネチャを生成して、(例えば、他のデータアプライアンス(データアプライアンス136および148など)へ)供給することで、悪意あるものと判定されたファイルをダウンロードするための将来のファイル転送要求を自動的にブロックできる。
様々な実施形態において、セキュリティプラットフォーム122は、典型的なサーバクラス・オペレーティングシステム(例えば、Linux(登録商標))を実行する1以上の専用の市販ハードウェアサーバ(例えば、1以上のマルチコアプロセッサ、8G+のRAM、1以上のギガビットネットワークインターフェースアダプタ、および、1以上のハードドライブを有する)を備える。セキュリティプラットフォーム122は、複数のかかるサーバ、ソリッドステートドライブ、および/または、その他の適用可能な高性能ハードウェアを備えた拡張可能なインフラストラクチャにわたって実装されてよい。セキュリティプラットフォーム122は、1以上のサードパーティによって提供されたコンポーネントなど、いくつかの分散コンポーネントを備えてよい。例えば、セキュリティプラットフォーム122の一部または全部が、Amazon Elastic Compute Cloud(EC2)および/またはAmazon Simple Storage Service(S3)を用いて実装されてよい。さらに、データアプライアンス102と同様に、プラットフォーム122が、データの格納またはデータの処理などのタスクを実行すると言及された場合にはいつでも、セキュリティプラットフォーム122の1以上のサブコンポーネントが(個別であるか、または、サードパーティコンポーネントと協働するかに関わらず)、そのタスクを実行するために協働してよいことを理解されたい。一例として、セキュリティプラットフォーム122は、1以上の仮想マシン(VM)サーバ(VMサーバ124など)と協働して静的/動的解析を任意選択的に実行できる。
仮想マシンサーバの一例は、市販の仮想ソフトウェア(VMware ESXi、Citrix XenServer、または、Microsoft(登録商標) Hyper-Vなど)を実行する市販のサーバクラスのハードウェア(例えば、マルチコアプロセッサ、4+ギガバイトのRAM、および、1以上のギガビットネットワークインターフェースアダプタ)である。いくつかの実施形態において、仮想マシンサーバは、省略される。さらに、仮想マシンサーバは、セキュリティプラットフォーム122を管理するのと同じエンティティの制御下にあってよいが、サードパーティによって提供されてもよい。一例として、仮想マシンサーバは、EC2に依存してよく、セキュリティプラットフォーム122の残りの部分は、セキュリティプラットフォーム122のオペレータによって所有されてその制御下にある専用ハードウェアによって提供される。VMサーバ124は、クライアントデバイスをエミュレートするための1以上の仮想マシン126~128を提供するよう構成される。仮想マシンは、様々なオペレーティングシステムおよび/またはそれらのバージョンを実行できる。仮想マシンにおいてアプリケーションを実行した結果として観察される行動は、記録および解析される(例えば、アプリケーションが悪意あるアプリケーションであることを示唆するため)。いくつかの実施形態では、ログ解析が、VMサーバ(例えば、VMサーバ124)によって実行される。別の実施形態では、解析が、少なくとも部分的には、セキュリティプラットフォーム122のその他のコンポーネント(コーディネータ144など)によって実行される。
様々な実施形態において、セキュリティプラットフォーム122は、サブスクリプションの一部としてシグネチャ(および/またはその他の識別子)のリストを介してデータアプライアンス102にサンプルの解析の結果を利用可能にする。例えば、セキュリティプラットフォーム122は、マルウェアアプリを識別するコンテンツパッケージを定期的に(例えば、毎日、毎時、または、その他の間隔で、および/または、1以上のポリシーによって設定されたイベントに基づいて)送信できる。コンテンツパッケージの一例は、パッケージ名、アプリを一意に識別するためのハッシュ値、および、識別された各マルウェアアプリのマルウェア名(および/またはマルウェアファミリ名)などの情報と共に、識別されたマルウェアアプリのリストを含む。サブスクリプションは、データアプライアンス102によってインターセプトされてデータアプライアンス102によってセキュリティプラットフォーム122へ送信されたファイルだけの解析を扱うことができ、また、セキュリティプラットフォーム122に知られているすべてのマルウェア(または、モバイルマルウェアだけではなくその他の形態のマルウェア(例えば、PDFマルウェア)など、その一部)のシグネチャを扱うことができる。
様々な実施形態において、セキュリティプラットフォーム122は、データアプライアンス102のオペレータに加えて(または、該当する場合には、その代わりに)、様々なエンティティにセキュリティサービスを提供するよう構成される。例えば、それぞれの独自の企業ネットワーク114および116と、それぞれの独自のデータアプライアンス136および148とを有する他の企業が、セキュリティプラットフォーム122のオペレータと契約できる。その他のタイプのエンティティも、セキュリティプラットフォーム122のサービスを利用できる。例えば、クライアントデバイス110がダウンロードしようとするアプリケーションを解析するために、インターネットサービスをクライアントデバイス110へ提供するインターネットサービスプロバイダ(ISP)が、セキュリティプラットフォーム122と契約できる。別の例として、クライアントデバイス110の所有者は、セキュリティプラットフォーム122と通信するクライアントデバイス110上にソフトウェアをインストールできる(例えば、セキュリティプラットフォーム122からコンテンツパッケージを受信して、解析のためにセキュリティプラットフォーム122にアプリケーションを伝送するために)。
静的/動的解析を用いたサンプルの解析
図3は、サンプルを解析するためのシステムに備えられうる論理コンポーネントの一例を示す。解析システム300は、単一のデバイスを用いて実装されてよい。例えば、解析システム300の機能は、データアプライアンス102内に組み込まれたマルウェア解析モジュール112に実装されてよい。解析システム300は、複数の異なるデバイスにわたって、集合的に実装されてもよい。例えば、解析システム300の機能は、セキュリティプラットフォーム122によって提供されうる。
様々な実施形態において、解析システム300は、既知の安全なコンテンツおよび/または既知の悪いコンテンツのリスト、データベース、または、その他のコレクション(図3では、集合的に、コレクション314として図示)を利用する。コレクション314は、(例えば、サードパーティによって提供された)サブスクリプションサービスを介して、および/または、(例えば、データアプライアンス102および/またはセキュリティプラットフォーム122によって実行された)他の処理の結果としてなど、様々な方法で取得できる。コレクション314に含まれる情報の例は、以下の通りである:既知の悪意あるサーバのURL、ドメイン名、および/または、IPアドレス;既知の安全なサーバのURL、ドメイン名、および/または、IPアドレス;既知のコマンド&コントロール(C&C)ドメインのURL、ドメイン名、および/または、IPアドレス;既知の悪意あるアプリケーションのシグネチャ、ハッシュ、および/または、その他の識別子;既知の安全なアプリケーションのシグネチャ、ハッシュ、および/または、その他の識別子;既知の悪意あるファイル(例えば、Android exploitファイル)のシグネチャ、ハッシュ、および/または、その他の識別子;既知の安全なライブラリのシグネチャ、ハッシュ、および/または、その他の識別子;既知の悪意あるライブラリのシグネチャ、ハッシュ、および/または、その他の識別子。
インジェスション
様々な実施形態において、新しいサンプルが解析のために受信されると(例えば、サンプルに関連する既存のシグネチャが解析システム300に存在しない場合)、そのサンプルは、キュー302に追加される。図3に示すように、アプリケーション130は、システム300によって受信され、キュー302に追加される。
静的解析
コーディネータ304が、キュー302を監視しており、リソース(例えば、静的解析ワーカ)が利用可能になると、コーディネータ304は、処理のためにキュー302からサンプルをフェッチする(例えば、マルウェア130のコピーをフェッチする)。特に、コーディネータ304は、最初に、静的解析のために静的解析エンジン306にサンプルを提供する。いくつかの実施形態において、1以上の静的解析エンジンが、解析システム300内に備えられており、ここで、解析システム300は、単一のデバイスである。別の実施形態において、静的解析は、複数のワーカ(すなわち、複数の静的解析エンジン306)を備えた別個の静的解析サーバによって実行される。
静的解析エンジンは、サンプルに関する一般情報を取得し、それを(該当する場合、ヒューリスティック情報およびその他の情報と共に)静的解析レポート308に含める。レポートは、静的解析エンジンによって、もしくは、静的解析エンジン306から情報を受信するよう構成可能なコーディネータ304(または、別の適切なコンポーネント)によって、作成されうる。いくつかの実施形態において、収集された情報は、別々の静的解析レポート308が作成される代わりにまたはそれに加えて、(例えば、データベース316内の)サンプルに対するデータベースレコードに格納される(すなわち、データベースレコードの一部がレポート308を形成する)。いくつかの実施形態において、静的解析エンジンは、アプリケーションに関する判定(例えば、「安全」、「疑わしい」、または、「悪意ある」)も形成する。一例として、判定は、アプリケーションに存在する「悪意ある」静的特徴が1つだけでも(例えば、アプリケーションが、既知の悪意あるドメインへのハードリンクを含むだけでも)、「悪意ある」でありうる。別の例として、特徴の各々にポイントが(例えば、見つかった場合の重大度;悪意の予測について特徴がどれだけ信頼できるか、などに基づいて)割り当てられ、判定が、静的解析結果に関連するポイント数に基づいて、静的解析エンジン306(または、該当する場合、コーディネータ304)によって割り当てられてもよい。
動的解析
静的解析が完了すると、コーディネータ304は、アプリケーションに対して動的解析を実行するために、利用可能な動的解析エンジン310を探す。静的解析エンジン306と同様に、解析システム300は、1以上の動的解析エンジンを直接備えてよい。別の実施形態において、動的解析は、複数のワーカ(すなわち、複数の動的解析エンジン310)を備えた別個の動的解析サーバによって実行される。
各動的解析ワーカは、仮想マシンインスタンスを管理する。いくつかの実施形態において、(静的解析エンジン306によって実行された)静的解析の結果は、レポートフォーム(308)内にあるかおよび/またはデータベース316に格納されるか、もしくは、その他の方法で格納されるかに関わらず、動的解析エンジン310に入力として提供される。例えば、静的レポート情報は、動的解析エンジン310によって用いられる仮想マシンインスタンスを選択/カスタマイズするのに役立つように利用できる(例えば、Microsoft XP SP3対Windows7 SP2、または、iOS9.0対iOS10.0)。複数の仮想マシンインスタンスが同時に実行される場合、単一の動的解析エンジンが、インスタンスすべてを管理してもよいし、該当する場合には、複数の動的解析エンジンが、(例えば、各々が自身の仮想マシンインスタンスを管理するように)用いられてもよい。後に詳述するように、解析の動的な部分の間に、アプリケーションによって取られる動作(ネットワーク活動を含む)が解析される。
様々な実施形態において、サンプルの静的解析は、省略されるか、または、該当する場合、別個のエンティティによって実行される。一例として、従来の静的および/または動的解析は、第1エンティティによってファイルに対して実行されてよい。所与のファイルが悪意あるファイルであると(例えば、第1エンティティによって)判定されると、そのファイルは、特に、(例えば、動的解析エンジン310による)マルウェアのネットワーク活動の利用に関するさらなる解析のために、第2エンティティ(例えば、セキュリティプラットフォーム122のオペレータ)に提供されうる。
解析システム300によって利用される環境は、アプリケーションが実行している間に観察される行動が、それらの起きた時に記録されるように、インストルメント化/フックされる(例えば、フッキングおよびlogcatをサポートするカスタマイズされたカーネルを用いて)。エミュレータに関連するネットワークトラフィックも、(例えば、pcapを用いて)キャプチャされる。ログ/ネットワークデータは、解析システム300上に一時ファイルとして格納されてよく、(例えば、HDFSまたは別の適切なストレージ技術もしくは技術の組み合わせ(MongoDBなど)を用いて)より永久的に格納されてもよい。動的解析エンジン(または、別の適切なコンポーネント)は、サンプルによってなされた接続を、ドメイン、IPアドレスなどのリスト(314)と比較して、サンプルが悪意あるエンティティと通信した(または通信を試みた)か否かを判定できる。
静的解析エンジンと同様に、動的解析エンジンは、その解析の結果を、データベース316において、テスト対象のアプリケーションに関連するレコード内に格納する(および/または、該当する場合、レポート312内に結果を含める)。いくつかの実施形態において、動的解析エンジンは、アプリケーションに関する判定(例えば、「安全」、「疑わしい」、または、「悪意ある」)も形成する。一例として、アプリケーションによって取られた「悪意ある」動作が1つだけでも(例えば、既知の悪意あるドメインと接触する試みがなされた、または、機密情報を抜き取る試みが観察されただけでも)、判定は、「悪意ある」でありうる。別の例として、取られた動作にポイントが(例えば、見つかった場合の重大度;悪意の予測について動作がどれだけ信頼できるか、などに基づいて)割り当てられ、判定が、動的解析結果に関連するポイント数に基づいて、動的解析エンジン310(または、該当する場合、コーディネータ304)によって割り当てられてもよい。いくつかの実施形態において、サンプルに関連する最終的な判定が、レポート308およびレポート312の組み合わせに基づいて(例えば、コーディネータ304によって)なされる。
フォルスネガティブおよびフォルスポジティブ
いくつかのタイプのマルウェアは、悪意ある活動の推進に悪意あるリソースを用いる。かかる悪意あるリソースの例は、コマンド&コントロール(C&C)サーバ(例えば、サーバ150)、データの抜き出しを容易にするサーバ、フィッシングサイト、および、悪意ある実行ファイル(例えば、ランサムウェアまたはスパイウェア)をホストするサイト、を含む。上述のように、静的および動的解析エンジンは両方とも、それぞれの解析の実行および/または悪意との判定への到達に、既知の悪意あるリソースに関する情報を利用できる。かかる情報(例えば、既知の悪意あるドメイン、既知の悪意あるIPアドレス、既知の悪意あるURL、および/または、マルウェアに関連するユーザエージェント文字列)は、本明細書ではネットワーク「侵害インジケータ」(IOC)とも呼ばれる。
残念ながら、(例えば、静的/動的解析に基づく判定を決定する際の)ネットワークIOCの不在(または存在)は、アプリケーションの悪意の有無を必ずしも解決するものではない。一例として、一部のマルウェアは、悪用されなければ人気があり安全なドメイン(例えば、pastebin.com)を悪用する。マルウェアが、(コレクション314においてホワイトリストに載りうる)かかるドメインと接触し、他の(既知の悪意ある)ドメインと接触しなければ、サンプル解析システム300が誤って「悪意ない」との判定を返すことになりうる(すなわち、フォルスネガティブ結果)。第2の例として、安全なアプリケーションが、悪意ある目的にも(同時に)利用される共有された(またはリサイクルされた)ドメイン、IPアドレス、または、その他のリソースを利用した場合に、誤って悪意あるものと分類される可能性がある(すなわち、フォルスポジティブ結果)。さらに、従来のIOCがカバーしないいくつかの状況(例えば、サービスプロ-ビング活動および/またはサービス妨害攻撃活動)がある。
本明細書に記載の技術を用いて、既知の悪意あるアプリケーションによって取られた動作(例えば、ネットワーク活動またはその他の活動)がプロファイルされ、対応するマルウェアプロファイルを生成するために用いられる。マルウェアプロファイルは、様々な有益な方法で利用されうる。第1例として、マルウェアプロファイルは、静的解析エンジン306および動的解析エンジン310によって実行された解析(例えば、上述した解析)を補完するために利用でき、判定におけるフォルスネガティブおよびフォルスポジティブを最小限に抑えるのに役立つ。第2例として、マルウェアプロファイルは、ファイアウォール、侵入検出システム、侵入防止システム、または、その他の適切なアプリケーションに提供されうる。かかるアプリケーションによって保護されたクライアントデバイスが、(例えば、閾値内の)マルウェアプロファイルと一致する動作を実行した場合、かかる行動は、アプライアンスによって疑わしい/悪意あるものとして扱われ、是正動作が取られうる。第3例として、マルウェアプロファイルは、かかるプロファイルに対するマッチングについてクライアント活動を監視できる(例えば、クライアントデバイス110にインストールされた)エンドポイント保護アプリケーションに提供されうる。
マルウェアプロファイル
図4A~図4Cは、それぞれ、Sarodip、Allaple、および、VTBossに対応するマルウェアプロファイルを示す。プロファイルは、(JSONなどの適切なフォーマットで)、イベントのシーケンスと、対応する属性(例えば、プロトコル、宛先ポート、ホスト、および/または、URL)と、を記載する。所与のプロファイルに含まれる個々のイベントは、安全に見えうる(例えば、twitter.comへ接触している)。しかしながら、全体として見ると、イベントを組み合わせたセットは、マルウェアのファミリに属するものとしてサンプルを一意的かつ排他的に識別するなどして、サンプルが悪意あるものであるか否かをよりよく識別するのに役立つように利用できる。
(「Pidoras」という名称でも知られる)Sarodipファミリ内のマルウェアは、VirusTotalウェブサービスと、(コマンドおよびコントロールのためのtwitter(登録商標)アカウントを用いて)攻撃者の選択したURLとの両方に対する分散型サービス妨害(DDoS)攻撃の実行に関与する。実行されると、Sarodipマルウェアは、ユーザ“pidoras6”について(ポート80で)twitter.comへの要求を行う。ユーザからの最新のツイート(例えば、“)))))aHR0cHM6Ly93MHJtLmluL2pvaW4vam9pbi5waHA=”)がパースされ、先頭の“)))))”文字を除去し、base64が残りの文字を復号する。結果として得られるURL(例えば、w0rm.in/join/join.php)は、次のHTTP要求を行うために用いられ、要求は、無制限に繰り返す。また、Sarodipマルウェアは、それ自身の読み出しと、offset68でのPEヘッダの変更とに関与するスレッドをスポーンする。これは、VirusTotalへの後続の各提出のための一意のサンプルを提供する。それは、次に、このファイルを、www.virustotal.com/vtapi/v2/file/scanへのHTTP POST要求を介してVirusTotalウェブサービスへ提出し、これも、無制限に繰り返すプロセスである。また、Sarodipは、TCPを介して暗号化された(HTTPS)通信を実行する。
Sarodipネットワークトラフィックに対応するマルウェアプロファイルが、図4Aに示されている。特に、Sarodip攻撃を構成するネットワークイベントのシーケンスが、領域402に示されている。最初に(404)、HTTP(406)接続が、宛先ポート80(408)を介してtwitter.com(410)へなされ、ユーザpidoras6のフィードが要求される(412)。次に(414)、HTTP接続が、宛先ポート80を介してwww.virustotal.comへなされ、/vtapi/v2/file/scanへのアクセスが行われる。次いで、Sarodipは、宛先ポート443を用いてTCPトラフィックを開始する(416)。領域418に示すように、プロファイルがマッチングされるには、イベントが、プロファイルに示した順序(404、414、416)で発生する必要がある。さらに、イベントは、5分間の期間内にすべてが観察されなければならない(420)。他のプロファイルにおいて、イベントの順序は、厳密に要求されなくてもよく、「フォルス」の値が、対応する領域418において利用されうる。そして、他のプロファイルにおいて、他の期間が、対応する領域420において指定されてもよい。
Allapleは、予め規定されたログインおよびパスワードのリストを用いてWindowsファイル共有への拡散を試みた後に標的型DDoS攻撃を開始するネットワークワームである。Allapleネットワークトラフィックに対応するマルウェアプロファイルが、図4Bに示されている。特に、Allaple攻撃を構成するネットワークイベントのシーケンスが、領域424に示されている。最初に(426)、ICMPを用いて、潜在的な被害者がpingテストされる。次に(428)、データストリームが、ポート138を介してリモートアドレスに送信される。また、Allaple攻撃中、データストリームが、ポート445を介してリモートアドレスへ(430)、そして、ポート9988を介してリモートアドレスへ(432)送信される。Sarodipと同様に、ネットワーク活動が、図4Bに示したプロファイルと一致すると見なされるには、イベントが、Allapleプロファイルに示した順に発生しなければならず、指定されたイベントのセットが、5分間以内に観察されなければならない。様々な実施形態において、さらなるタイプのイベントが、マルウェアプロファイルに含められる。Allapleプロファイルを一例とすると、Allapleマルウェアによって取られる1つのさらなる動作は、WINDOWS¥system32¥urdvxc.exeを書き込む試みである。かかる動作(本明細書ではローカル動作とも呼ばれる)が、それに応じてAllapleプロファイルに含められてもよい(例えば、イベント426の前に発生するイベントとして)。(マルウェアプロファイルに含めることのできる)ローカル動作のその他の例は、コードインジェクションの実行、レジストリの変更、自己消去の試み、および、ファイルに対して暗号化動作を実行する試み、を含む。
VTBossファミリのマルウェアは、VirusTotalウェブサービスに対するDDoS攻撃を実行するよう設計されたものである。マルウェアは、それ自身のMD5ハッシュを取り、HTTP POST要求を介してhttp://vtboss.yolox.net/md5.phpへ情報を送信することによって開始する。その後、(Sarodipと同様に)それ自身を読み出し、offset68のPEヘッダを変更する無限ループに入り、次いで、結果として得られるファイルを、www.virustotal.com/vtapi/v2/file/scanへのHTTP POST要求を介してVirusTotalウェブサービスへ送信する。
マルウェアのVTBossファミリに対応するマルウェアプロファイルが、図4Cに示されている。特に、VTBoss攻撃を構成するネットワークイベントのシーケンスが、領域434に示されている。最初に(436)、HTTP接続が、宛先ポート80を介してvtboss.yolox.netへなされ、/md5.phpへのアクセスが行われる。次いで(438)、HTTP接続が、宛先ポート80を介してwww.virustotal.comへなされ、/vtapi/v2/file/scanへのアクセスが行われる。領域440に示すように、プロファイルがマッチングされるには、イベントが、プロファイルに示した順序で発生する必要がある。さらに、イベントは両方とも、1分間の期間内に観察されなければならない(442)。
図5は、マルウェアプロファイルを構築するための処理の一例を示す。様々な実施形態において、処理500は、既知のマルウェア320に対して、マルウェアプロファイラ318によって実行される。マルウェアプロファイラ318を実装するための一方法例は、適切なスクリプト言語(例えば、Python)で書かれたスクリプト(または、スクリプトのセット)を用いる方法である。処理500は、マルウェアサンプルの実行に関連するデータが受信される工程502で始まる。上述のように、データベース316(例えば、MongoDBデータベース)が、動的解析中に取得された情報など、マルウェア(マルウェア320など)に関する様々な情報を含む。データベース316は、安全なサンプルに関する同様の情報も含む。
工程502で実行できる処理の一例として、マルウェアプロファイラ318は、データベース316にアクセスして、(例えば、動的解析中に記録された)マルウェア320の生ネットワークトレースを取得する。生ネットワークパケットは、(例えば、dpkt Pythonモジュールを用いて)パースされ、マルウェアプロファイラ318によって要求-応答ペア(ラウンドトリップ)に統合される。次いで、それらのペアは、ペアの送信元IP/ポートおよび宛先IP/ポートを相関させることによって一連のネットワーク活動にマージされる。ネットワーク活動(NA)の一例は、HTTPプロトコルを用いて、宛先ポート80でtwitter.com/pidoras6にアクセスすることである。特定のNAを定義するための正式な方法は、以下の4タプルの属性を用いる方法である:NA=<プロトコル,宛先ポート,HTTPホスト,HTTP URI>。上に挙げた4つの属性に加えて/その代わりに、その他のタイプの情報が、NAの定義に含められてもよい。一例として、プロファイルは、ユーザエージェント(例えば、HTTPトラフィックの場合)、送信/受信パケット数、各送信/受信パケットのサイズ、および/または、トラフィック方向、をさらに含んでもよい。一般に、マルウェアプロファイルに含まれる属性が多いほど、プロファイルは、マルウェアを一意的に記述するのに、より正確になる(安全なアプリケーション行動に対するフォルスポジティブ一致を避けるのに役立つ)。ただし、(例えば、上述の4タプルよりも多い属性を含む)厳密なプロファイルは、マルウェアの新たな変異型と一致する可能性が低い場合がある。生プロファイル(P)が、ネットワーク活動のシーケンスを用いて構築されうる(504):P=NA1,NA2,NA3など。
一部の例において、生プロファイルは、マルウェア320の実行と同時に起きるネットワーク活動を含む。例えば、システムレベル活動(Windowsがクロックを同期させる、など)が、生プロファイルに含まれるネットワーク活動にもつながりうる。工程506で、生プロファイルは、マルウェアプロファイルが、所与のマルウェアの特性を一意的に表すことを保証するのに役立つようにフィルタリングされる。様々な実施形態において、かかるフィルタリングは、NTP、NETBIOS、および、IGMPに関連するネットワーク活動を除去することを含む。
工程508で、プロファイルが、マルウェアサンプルの活動を十分に一意的に記述しているか否かを判定するために、フィルタリングされたプロファイルの1以上の評価が実行される。工程508で実行できるかかる評価の一例は、フィルタリングされたプロファイルが任意の既存のマルウェアプロファイル(例えば、データベース316にすでに存在する)と一致するか否かを判定することである。一致する場合、これは、マルウェア(例えば、マルウェア320)がサンプルのファミリ(ファミリ内のサンプルは、実行時に同一(または同様)の行動を示す)に属することを示しうる。フィルタリングされたプロファイルが、マルウェアファミリに関連するプロファイルと一致する場合、マルウェアは、そのファミリに属する他のサンプルに(例えば、データベース316内で)関連付けられうる。効率のために、実施中に、サンプルが悪意あるものであるか否か(すなわち、そのファミリのメンバーであるか否か)を検出するのに役立つように、ファミリに対して単一のプロファイル(または削減されたプロファイルセット)を利用できる。
ファミリ一致は、厳密であってよい(すなわち、フィルタリングされたプロファイルは、一致と見なされるためにはファミリのプロファイルと完全一致しなければならない)。ファミリ一致は、曖昧一致であって、許容範囲が設けられてもよい。一例として、マルウェアのAllapleファミリにおける一部の変異型は、動作428、430、および、432の各々を実行しうる。Allapleファミリにおける他の変異型は、動作432を実行せずに動作428および430を実行しうる。いくつかの実施形態において、Allapleファミリに対する単一のマルウェアプロファイルが、データベース316に格納され、このプロファイルは、動作432が任意選択的であることを示す。別の実施形態において、データベース316は、Allapleファミリに対して2つのプロファイルを備えてもよく、一方は動作432を含み、もう一方は含まない。
工程508で実行できる評価の別の例は、フィルタリングされたプロファイルと、データベース316に格納されたサンプルの履歴pcapとを用いて、回帰テストを実行するものである。上述のように、データベース316は、安全なサンプルおよび悪意あるサンプルの両方に関する静的/動的解析レポートを含む。フィルタリングされたプロファイルを履歴pcapに適用した結果、閾値数を超えるフォルスポジティブが生じた(例えば、そのプロファイルによってなされた一致の3%以上が安全なサンプルのpcapである)場合、フィルタリングされたプロファイルは、利用に適さない可能性があり、処理500は、該当する場合、(フィルタリングされたプロファイルをマルウェアプロファイルとして格納せずに)、早期に終了する。
工程510で、マルウェア320に対してフィルタリングされた有効なプロファイルが、格納される。いくつかの実施形態において、プロファイルは、データベース316に格納される。さらに(または、様々な実施形態において、その代わりに)、マルウェアプロファイルは、別のストレージに書き込まれてもよい。一例として、各ネットワーク活動は、キー/値ペアに分けられて、サンプルのリアルタイム解析中の迅速なルックアップのために、プラガブルバックエンド・キー/値ペア・ストア(例えば、Redisストア322)に格納されうる。
マルウェアプロファイルの利用
上述したように、マルウェアプロファイルは、様々な有益な方法で利用されうる。第1例として、マルウェアプロファイルは、サンプル解析システム300によって実行された静的/動的解析を補完するために利用できる。第2例として、マルウェアプロファイルは、(例えば、フォレンジック解析および/またはエンドポイント保護のために)アプライアンス/エンドポイントによって利用されうる。
例-悪意あるアプリケーションの識別
図6は、サンプルが悪意あるものであるか否かを判定するための処理の一実施形態を示す。様々の実施形態において、処理600は、サンプル解析システム300によって実行される。処理は、潜在的に悪意あるサンプルが実行される工程602で開始する。工程602で実行される処理の一例として、動的解析エンジン310が、サンプル(サンプル130など)を実行する。サンプルの実行中に起きる活動が記録される。上述のように、ネットワークトラフィック(例えば、pcapデータとして)が、工程602で記録されるデータの一例である。
工程604で、パターンエクストラクタ324が、工程602で記録された情報から活動を抽出し、活動パターンを生成する。パターンエクストラクタ324を実装するための一方法は、適切なスクリプト言語(例えば、Python)で書かれたスクリプト(または、スクリプトのセット)を用いる方法である。様々な実施形態において、パターンエクストラクタ324は、処理500の工程502~506を実行することによって(例えば、工程602で取得されたpcapデータと、該当する場合、その他の情報(ファイル書き込みおよび読み出しなど)とを用いて)活動パターンを生成する。
工程606で、パターンエクストラクタ324は、(サンプルについて)抽出されたパターンを、(例えば、処理500に従って、データベース316および/またはストア322に以前に格納された)マルウェアプロファイルと比較する。特に、パターンエクストラクタ324は、工程604で抽出されたパターンをストア322で検索する。工程606で実行される比較は、厳密であり、サンプルのパターンと、ストア322内のマルウェアプロファイルとの間の完全一致を要求してよい。工程606で実行される比較は、曖昧であってもよい。一例として、曖昧一致では、一致が見出されるためには、活動の少なくとも85%が、サンプルのパターンとマルウェアプロファイルとの間で一致することを必要としうる。別の例として、曖昧一致では、同じ活動が、異なる順序で起きてもよいが、サンプルのパターンおよびマルウェアプロファイルの両方で起きることを必要としうる。さらに別の例において、曖昧一致チは、1以上の属性の完全ではない一致(単一の活動における単一のポート番号が2つの間で異なる、など)を許容してもよい(ただし、それ以外では、完全一致を必要とする)。
工程608で、判定が、サンプルに割り当てられる。上述のように、様々な実施形態において、静的解析エンジン306および動的解析エンジン310(および/またはコーディネータ304)は、所与のサンプルの悪意に関する1以上の判定を形成する。パターンエクストラクタ324は、サンプルに対する判定を同様に決定できる(その判定は、最終的な判定を決定する要因として利用されうるか、または、該当する場合、最終判定を制御しうる)。パターンエクストラクタ324は、その判定を動的解析エンジン310に提供することもでき、動的解析エンジン310は、パターンエクストラクタ324の判定を、サンプルに対する判定を決定するそれ自身の要因の1つとして利用できる)。一致が工程606において(サンプルのパターンと、ストア322に格納されたマルウェアプロファイルとの間で)見出された場合、パターンエクストラクタ324は、サンプルに対して「悪意ある」の判定を割り当てることができる。プロファイルがサンプルのパターンと一致したマルウェアのMD5またはその他の識別子、一致したマルウェアに関連する任意のマルウェアファミリ情報など、さらなる情報が、「悪意ある」との判定と共に返されてもよい。かかる一致が見出されない場合、パターンエクストラクタ324は、「未知」の判定(または、該当する場合、別の適切な判定)を割り当てることができる。
例-フォレンジック/インライン解析
図1の環境に戻ると、時々、マルウェア(マルウェア130など)は、ネットワーク140への侵入に成功する。このことの1つの理由は、データアプライアンス102が「初回許容(first-time allow)」の原理で動作することである。アプライアンス(データアプライアンス102など)が、セキュリティプラットフォーム122にサンプルを提出した時に、セキュリティプラットフォーム122がデータアプライアンス102に判定(「安全」、「悪意ある」、「未知」など)を返すのに約15分間かかると仮定する。その15分間に、システム120とクライアントデバイス104との間の通信をブロックする代わりに、初回許容の原理の下、通信が許容される。判定が(例えば、15分後に)返されると、データアプライアンス102は、判定(例えば、「悪意ある」)を用いて、ネットワーク140へのマルウェア130の後続の送信をブロックすることができる、システム120とネットワーク140との間の通信をブロックすることができる、などである。残念ながら、データアプライアンス102がセキュリティプラットフォーム122からの判定を待つ15分の間に、クライアントデバイス104のユーザが、マルウェア130を実行して、潜在的に、ネットワーク140内のその他のノード(例えば、クライアントデバイス106)へのマルウェア130の伝播を引き起こしている可能性がある。マルウェア(マルウェア130など)がネットワーク140に侵入しうる別の方法例は、ラテラルムーブメントによるものである(例えば、マルウェアが感染USBドライブ経由でノードにインストールされた場合、マルウェアがファイアウォールを通して伝搬しない場合、など)。
データアプライアンス102は、ログのセットを維持する(例えば、ネットワーク140の接続情報を記録するトラフィックログ、および、クライアント(クライアント104~110など)によって要求されたURLを記録するURLログ)。本明細書に記載の技術を用いて、マルウェアプロファイルは、かかるログの解析に役立つように用いられてよく、ネットワーク140へのマルウェア(例えば、マルウェア130)の侵入を許すことによって引き起こされるダメージを特定および軽減するのに役立ちうる。
図7Aは、データアプライアンス(例えば、データアプライアンス102)によって記録されたデータのイベントシーケンスを示す。特に、図7Aは、トラフィックログからのログライン(例えば、ライン1、4、および、6)と、URLログからのログライン(例えば、ライン2、3、および、5)とを示す。ログデータは、ネットワーク内の2つの異なるノード(以降、「host1」および「host2」と呼ぶ)に関連している。図7Aに示す例において、host1は、様々なウェブサイトを閲覧するために(以降「アリス」と呼ぶユーザによって)用いられる侵害されていないクライアントデバイスであるとする。さらに、host2は、Sarodipの変異型によって侵害されているとする。図7Aのライン2、3、および、6は、host2が侵害された証拠を提供する。特に、host2は、HTTPポート80を用いてwww.twitter.com/pidoras6にアクセスし(704)、その後、HTTPポート80を用いてwww.virustotal.com/vtapi/v2/file/scanにもアクセスし(706)、その後、TCPを介して暗号化された(HTTPS)通信を行った(708)。
図7Aに示すように、アリスは、VirusTotalウェブサイト、および、Twitterウェブサイトを、他のサイトと共に、たまたま閲覧している。しかしながら、これも図7Aに示すように、host1上でのアリスの安全な閲覧活動は、侵害されたhost2によって生成されたログラインとは大きく異なるログラインを生成する。特に、アリスがVirtusTotalにアクセスする時、彼女の接続は、HTTPSを利用し(710)、(例えば、広告の表示に関連する)多くの異なるリソースが、彼女の閲覧と連動して彼女のブラウザによって要求される(例えば、714)。同様に、アリスがTwitterにアクセスする時、彼女の接続は、HTTPSを利用し(716)、(例えば、画像の表示に関連する)多くの異なるリソースが、彼女の閲覧と連動して彼女のブラウザによって要求される(例えば、712)。
図7Bは、図7Aに示したイベントシーケンスを表現した図である。host1に関連するイベントが、領域752に、網掛けボックス(例えば、ボックス754)として図示されており、host2に関連するイベントが、網掛けなしのボックス(例えば、ボックス756)として図示されている。特に、ボックス754は、図7Aに示したログデータのライン1(702)に対応する-host1によってなされたUDP接続。ボックス758は、図7Aに示したログデータのライン2(および、図4Aに示したSarodipマルウェアプロファイルのライン404)に対応する。ボックス760、762、および、764は、host1のウェブ閲覧活動に対応する。ボックス766は、図7Aに示したログデータのライン3(および、図4Aに示したSarodipマルウェアプロファイルのライン414)に対応する。ボックス768は、図7Aに示したログデータのライン4に対応する(Sarodipマルウェアプロファイルには関係がない)。最後に、ボックス770は、図7Aに示したログデータのライン6に対応する。
マルウェアプロファイル4Aを用いて、ホストごとに、図7Aに示したログエントリに対して、マッチングが実行されうる。様々な実施形態において、サブシーケンスの一致が用いられる(例えば、所与のホストが、並行して複数の活動に従事する可能性があり、それらの活動の少なくとも一部は潜在的な侵害に関係しない可能性があることを考慮するため)。5分間のスライディングウィンドウ(772)が、Sarodipマルウェアプロファイルにおいて420で指定された時間ウィンドウに従って、マッチングの実行時に用いられる。かかるマッチングの実行により、host2がSarodipによって侵害されたことが特定される。侵害されたホストを企業ネットワーク140内のその他のノードと通信しないように隔離する、管理者に警告するなど、様々な動作が、かかる判定に応じて取られうる。
図8は、マルウェアプロファイルを用いて、侵害されたホストを識別するための処理の一例を示す。様々な実施形態において、処理800は、データアプライアンス102によって(特に、マルウェア解析モジュール112によって)実行される。マルウェア解析モジュール112は、適切なスクリプト言語(例えば、Python)で書かれたスクリプト(またはスクリプトのセット)を用いて実装されうる。様々な実施形態において、処理800は、(例えば、データアプライアンス102が、そのログを解析のためにセキュリティプラットフォーム122に提供する場合)サードパーティサービスとして実行される。処理800は、クライアントデバイス104などのエンドポイント上で実行されてもよい(例えば、クライアントデバイス104上で実行するエンドポイント保護アプリケーションによって)。
処理800は、マルウェアプロファイルが受信される工程802で開始する。マルウェアプロファイルは、様々な動作に応じて、工程802で受信されうる。一例として、(例えば、データアプライアンス102の)管理者が、ネットワーク140内のいずれかのノードがSarodipによって侵害された可能性があるか否かに関する監査またはその他の明示的な問合せと連動して、マルウェアプロファイル(例えば、マルウェアプロファイル4A)をデータアプライアンス102に提供できる。別の例として、データアプライアンス102は、(例えば、1以上の他のマルウェアプロファイルと共に)定期的なコンテンツ更新の一部としてマルウェアプロファイルを受信できる。さらに別の例として、データアプライアンス102は、データアプライアンス102が(例えば、セキュリティプラットフォーム122がその解析を完了した後に、マルウェア130に関して)判定を受信する時に、工程802でマルウェアプロファイルを受信できる。
工程804で、ログのセットが、マルウェアプロファイルと一致するエントリについて解析される。該当する場合、マルウェア解析モジュール112は、ログのセットを解析する前に、RAM内の複数の個々のログ(例えば、トラフィックログおよびURLログ)を結合することができる。同様に、より長い期間のログデータを調べることが望まれる場合、同じタイプの複数のログ(例えば、1月1日~7日のトラフィックログ、および、1月8日~14日のトラフィックログ)が結合されうる。工程804で実行される解析は、イベント(例えば、プロファイルの受信、または、解析を開始するために管理者によって提供された命令の受信)によってトリガされうる。工程804で実行される解析は、定期的に(例えば、毎日または毎週)実行されてもよい。
最後に、工程806で、ログエントリのセットがマルウェアプロファイルと一致することがわかった場合、それらのログエントリに関わるホストが、侵害されたと判定される。上述のように、ホストが侵害された旨の判定に応じて、ホストを企業ネットワーク140内のその他のノードと通信しないように隔離する、管理者に警告するなど、様々な是正動作を取ることができる。
上述の実施形態は、理解しやすいようにいくぶん詳しく説明されているが、本発明は、提供された詳細事項に限定されるものではない。本発明を実施する多くの代替方法が存在する。開示された実施形態は、例示であり、限定を意図するものではない。