(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-19
(54)【発明の名称】悪意のあるインジケータの自動抽出および分類
(51)【国際特許分類】
G06F 21/55 20130101AFI20240312BHJP
【FI】
G06F21/55
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023551189
(86)(22)【出願日】2022-02-17
(85)【翻訳文提出日】2023-10-20
(86)【国際出願番号】 US2022016823
(87)【国際公開番号】W WO2022182568
(87)【国際公開日】2022-09-01
(32)【優先日】2021-02-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】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)【発明者】
【氏名】ワン,ジュン
(57)【要約】
実行可能な危殆化のインジケータ(IOC)を生成するための技法が開示される。IOCについて潜在的なソースのセットが受信される。潜在的なソースのセットに含まれる少なくとも1つのソースから、1つ以上の候補IOCが抽出される。実行可能なIOCは、1つ以上の候補IOCから自動的に識別される。実行可能なIOCが、セキュリティ実施サービスに提供される。
【特許請求の範囲】
【請求項1】
システムであって、
プロセッサであり、
危殆化のインジケータ(IOC)について潜在的なソースのセットを受信し、
前記潜在的なソースのセットに含まれる少なくとも1つのソースから1つ以上の候補IOCを抽出し、
前記1つ以上の候補IOCから実行可能IOCを自動的に識別し、
前記実行可能なIOCをセキュリティ実施サービスに提供する、
ように構成されているプロセッサと、
前記プロセッサに結合され、かつ、前記プロセッサに命令を提供するように構成されているメモリと、
を含む、システム。
【請求項2】
前記プロセッサは、さらに、
前記潜在的なソースのセットに追加する新しい潜在的なソースを識別する、
ように構成されている、
請求項1に記載のシステム。
【請求項3】
前記1つ以上の候補IOCを抽出することは、URLが無害化されたか否かを判定することを含む、
請求項1に記載のシステム。
【請求項4】
前記実行可能なIOCを提供することは、前記URLを逆無害化することを含む、
請求項3に記載のシステム。
【請求項5】
前記1つ以上の候補IOCを抽出することは、画像について光学文字認識を実行することを含む、
請求項1に記載のシステム。
【請求項6】
前記プロセッサは、前記潜在的なソースのセットを周期的にクロールするように構成されている、
請求項1に記載のシステム。
【請求項7】
前記実行可能なIOCを自動的に識別することは、ルールベースの分類を使用して、前記1つ以上の候補IOCを分析することを含む、
請求項1に記載のシステム。
【請求項8】
前記実行可能なIOCを自動的に識別することは、機械学習ベースの分類を使用して、前記1つ以上の候補IOCを分析することを含む、
請求項1に記載のシステム。
【請求項9】
前記実行可能なIOCを自動的に識別することは、ホワイトリストに記載されたドメインを候補IOCとして除外することを含む、
請求項1に記載のシステム。
【請求項10】
前記ドメインは、人気メトリックに少なくとも部分的に基づいて、ホワイトリストに記載される、
請求項9に記載のシステム。
【請求項11】
少なくとも1つの候補IOCは、ドメインを含む、
請求項1に記載のシステム。
【請求項12】
少なくとも1つの候補IOCは、URLを含む、
請求項1に記載のシステム。
【請求項13】
少なくとも1つの候補IOCは、IPアドレスを含む、
請求項1に記載のシステム。
【請求項14】
少なくとも1つの候補IOCは、電子メールアドレスを含む、
請求項1に記載のシステム。
【請求項15】
少なくとも1つの候補IOCは、ハッシュを含む、
請求項1に記載のシステム。
【請求項16】
前記少なくとも1つのプロセッサは、さらに、
前記潜在的なソースのセットをプルーニングする、
ように構成されている、請求項1に記載のシステム。
【請求項17】
前記プロセッサは、実行可能なIOCが前記ソースから以前に獲得されたか否かに少なくとも部分的に基づいて、前記潜在的なソースのセットに含まれるソースをプルーニングする、
ように構成されている、請求項1に記載のシステム。
【請求項18】
方法であって
危殆化のインジケータ(IOC)の潜在的なソースのセットを受信するステップと、
前記潜在的なソースのセットに含まれる少なくとも1つのソースから1つ以上の候補IOCを抽出するステップと、
前記1つ以上の候補IOCから実行可能IOCを自動的に識別するステップと、
前記実行可能なIOCをセキュリティ実施サービスに提供するステップと、
を含む、方法。
【請求項19】
非一時的コンピュータ可読記憶媒体に保管されたコンピュータプログラムであって、
危殆化のインジケータ(IOC)について潜在的なソースのセットを受信するステップと、
前記潜在的なソースのセットに含まれる少なくとも1つのソースから1つ以上の候補IOCを抽出するステップと、
前記1つ以上の候補IOCから実行可能IOCを自動的に識別するステップと、
前記実行可能なIOCをセキュリティ実施サービスに提供するステップと、
を含む、コンピュータ命令を有している、
コンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
悪意のある個人は、様々な方法でコンピュータシステムを危険にさらす(compromise)ように試みる。一つの例として、そうした個人は、悪意のあるソフトウェア(「マルウェア(“malware”)」)を電子メール添付ファイルに埋め込み、または、他の形で含み、そして、疑うことをしらないユーザに対して送信し得る(または、マルウェアを送信させ得る)。実行されると、マルウェアは犠牲者のコンピュータを危険にさらす。いくつかのタイプのマルウェアは、危険にさらされたコンピュータ(compromised computer)に、リモートホストと通信するように命令する。例えば、マルウェアは、危険にさらされたコンピュータを「ボットネット(“botnet”)」において「ボット(“bot”)」へと変えることができ、悪意のある個人の制御下にあるコマンドアンドコントロール(command and control、C&C)サーバから命令を受信し、かつ/あるいは、C&Cサーバに対してデータを報告する。マルウェアによって引き起こされる損害を軽減するための1つのアプローチ、セキュリティ会社(または、他の適切なエンティティ)が、マルウェアを識別し、かつ、エンドユーザコンピュータに到達すること/そこで実行することを防止するように試みることである。別のアプローチは、危険にさらされたコンピュータがC&Cサーバと通信することを防止するように試みることである。残念ながら、マルウェアの作者は、彼らのソフトウェアの働きを分かりにくくする(obfuscate)ために、ますます洗練された技法を使用している。従って、マルウェアを検出し、そして、その害を防止するための改善された技法に対する継続的な必要性が存在している。
【図面の簡単な説明】
【0002】
本発明の様々な実施形態が、以下の詳細な説明および添付の図面において開示される。
【
図1】
図1は、ポリシが実施される環境の一つの例を示している。
【
図2A】
図2Aは、データアプライアンスの一つの実施形態を示している。
【
図2B】
図2Bは、データアプライアンスの実施形態の論理コンポーネントを示している。
【
図2C】
図2Cは、データアプライアンスの一つの実施形態を示している。
【
図3】
図3は、危殆化抽出システム(compromise extraction system)の自動化インジケータの一つの実施形態を示している。
【
図4】
図4は、実行可能(actionable)な危殆化のインジケータを生成するためのプロセスの一つの実施形態を示している。
【発明を実施するための形態】
【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) ESXTMおよびNSTM、Citrix(R)Netscaler SDTM、KVM/OpenStack(Centos/RHEL、Ubuntu(R))、および、Amazon Web Services(AWS)を含む、様々な商用仮想化環境をサポートしている)。例えば、仮想化ファイアウォールは、物理的フォームファクタ機器で利用可能な、同様の、または、完全に同一の次世代ファイアウォールおよび先進的な脅威防止機能をサポートすることができ、企業は、プライベート、パブリック、およびハイブリッドなクラウドコンピューティング環境へのアプリケーションの流入を安全に可能にすることができる。VMモニタリング、ダイナミックアドレスグループ、およびRESTベースのAPIといった自動化機能により、企業は、VMの変化を動的にモニタすることができ、そのコンテキストをセキュリティポリシに反映させて、それにより、VMの変化時に生じ得るポリシの遅れ(lag)を排除している。
【0014】
II.例示的な環境
【0015】
図1は、ポリシが実施される環境の一つの例を示している。この環境には、2つのドメインネームシステム(DNS)サーバ(130および132)が含まれている。典型的に、URLにアクセスしようとするときに、ウェブブラウザ(例えば、クライアントデバイス上で実行されている)は、URLのドメイン名を対応するインターネットプロトコル(IP)アドレスへと解決(resolve)するために、DNSサーバ(例えば、DNSサーバ130)に要求(request)を転送する。要求されたドメイン名に対する有効なIPアドレスの受信に応答して、クライアントは、所望のリソースを要求するために、IPアドレスを使用して、対応するコンテンツサーバ(例えば、サイト152)に接続することができる。コンテンツサーバは、要求されたリソースがコンテンツサーバにおいて利用可能である場合には、要求されたリソースで応答し、もしくは、要求されたリソースがコンテンツサーバにおいて利用可能でない場合には、エラーメッセージまたは別のコンテンツサーバへのリダイレクトで応答する。
【0016】
図1に、また、示されているのは、以降でACME Corporationと称されるエンティティに属する一つの例示的な企業(enterprise)ネットワーク140である。企業ネットワーク140は、企業DNSサーバ132を含んでいる。企業DNSサーバ132は、企業ドメイン名をIPアドレスへと解決するように構成されており、そして、さらに、ドメイン名を解決するために1つ以上の外部DNSサーバ(例えば、DNSサーバ130)と通信するように構成されている。また、企業ネットワーク140内には、例示的なクライアントデバイス104-108が含まれており、(それぞれに)ラップトップコンピュータ、デスクトップコンピュータ、および、タブレットである。ラップトップ104およびデスクトップコンピュータ106は、ACMEによって所有され、そして、タブレット108は、以降でアリス(Alice)と称されるACME従業員によって個人的に所有されている。クライアントデバイス110は、企業ネットワーク140の外部に配置されたラップトップコンピュータである。
【0017】
クライアントデバイス104-110といった、クライアントデバイスは、それぞれ、様々なアプリケーションを実行することができる。「アプリケーション(“application”)」という用語は、形式/プラットフォームにかかわらず、プログラム、プログラムのバンドル、マニフェスト、パッケージ、等を総称して指すために、本仕様書の全体を通して使用されている。「アプリケーション」(ここにおいては「サンプル」とも呼ばれる)は、スタンドアロン(standalone)ファイル(例えば、ファイル名「calculator.apk」または「calculator.exe」を有する計算アプリケーション)であってもよく、または、別のアプリケーションの独立したコンポーネント(例えば、モバイル広告ソフトウェア開発キット(SDK)または計算アプリケーション内に埋め込まれたライブラリ)であってよい。
【0018】
ここにおいて使用される「マルウェア」とは、秘密裡であろうとなかろうと(かつ、違法であろうとなかろうと)、完全な情報を得た場合にはユーザが承認しない/承認しないであろう挙動に関与する。マルウェアの例は、トロイの木馬、ウイルス、ルートキット、スパイウェア、ハッキングツール、キーロガー、等を含む。マルウェアの一つの例は、デスクトップ・アプリケーションであり、それは、エンドユーザの場所を収集し、かつ、リモート・サーバに報告する(しかし、ユーザには、マッピング・サービスといった、場所ベースのサービスを提供しない)。マルウェアのもう別の例は、悪意のあるアンドロイド(登録商標)(Android)アプリケーションパッケージ.apk(APK)であり、それは、エンドユーザにとっては無料ゲームのように見えるが、密かにSMSプレミアムメッセージ(例えば、各10ドルの費用)を送信し、エンドユーザの電話料金請求書を膨らませる。マルウェアの別の例は、アップルのiOSフラッシュライトアプリケーションであり、それは、ユーザの連絡先を密かに収集し、かつ、それらの連絡先をスパマー(spammer)に送信する。
【0019】
他の形態のマルウェアも、また、ここにおいて説明される技法(例えば、ランサムウェア)を使用して軽減され得る。そして、本明細書を通して提供される例は、一般的に、悪意のあるアプリケーションを指す一方で、ここにおいて説明される技法は、また、他の種類のアプリケーション(例えば、アドウェア、グッドウェア、等)に関して様々な実施形態において使用することもできる。場合によっては、アプリケーションのエンドユーザ(例えば、アリス)は、アプリケーションによって提供される機能を承認することができるが、一方で、別のエンティティ(例えば、ACME)は承認することができない。2つの例として、アリスは、自身のタブレット108上にギャンブルアプリケーションまたはポルノグラフィをテーマとするアプリケーションを意図的にインストールさせ得る。対照的に、ACMEは、従業員がそうしたアプリケーションのために企業ネットワーク140を使用することを禁止する企業ポリシを有し得る。以下で、より詳細に説明されるように、ACMEは、企業ネットワーク140内でのそうしたアプリケーションの使用に対するポリシを施行することができる。
【0020】
ここにおいて説明される技術は、種々のプラットフォーム(例えば、デスクトップ、モバイルデバイス、ゲームプラットフォーム、エンベッドシステム、等)及び/又は種々のタイプのアプリケーション(例えば、Android apkファイル、iOSアプリケーション、Windows PEファイル、Adobe Acrobat PDFファイル、等)と組み合わせて使用することができる。
【0021】
データアプライアンス102(企業ネットワーク140内にも、また、含まれるもの)は、クライアントデバイス104および106といった、クライアントデバイスと、企業ネットワーク140の外部のノード(例えば、ネットワーククラウド118として集合的に描写されている1つ以上の外部ネットワークを介して到達可能なもの)との間の通信に関するポリシを施行するように構成されている。ポリシの一つの例は、企業ネットワーク140内の任意のクライアントによるサイト150(ポルノグラフィウェブサイト)へのあらゆるアクセスを禁止するルールである。ポリシの別の例は、午前9時から午後6時の間にクライアントによるソーシャルネットワーキングサイト156へのアクセスを禁止するルールである。ポリシのさらに別の例は、帯域幅または他の消費の制約を条件として、ビデオストリーミングウェブサイト152に対するアクセスを可能にするルールである。ポリシのさらに別の例は、ソーシャルネットワーキングサイトを使用して従業員によって費やされた時間をログ(log)するものである(例えば、従業員は、就業日の全体を通して、ときどき、そうしたサイトを訪れるが、そうした活動を一日あたり15分に制限すべきであるという理解が存在する場合)。ポリシは、全てのデバイスに等しく適用されるようにすることができ、そして、また、より粒度の細かいレベルで適用することもできる。例えば、ソーシャルネットワーキングサイト156へのアクセスは、ACMEマーケティング部における誰にでも(例えば、マーケティング部との提携を示す関連グループ識別子を有するユーザ)許可され得る。そして、ビデオストリーミングウェブサイト152と共に使用するための制限されない帯域幅が、特定のユーザ(例えば、CEO)、ユーザのグループ(例えば、ACME営業部)、及び/又は、クライアントに係る個人/グループ(例えば、プロダクションサーバ上のビデオストリーミングサイト152へのアクセスを禁止する)に付与され得る。サイト(例えば、ニュースサイト154)へのアクセスは、明示的に許可することができ(例えば、URL(「www.examplenews.com」)またはカテゴリ(「NEWS」)を介するサイト154へのアクセスを許可するルール)、そして、また、禁止されていないことにより許可することもできる(例えば、「禁止されていない任意のサイトへのアクセスが許可される」、例えば、ルールにおいてサイトを明示的に指定する必要なく、ウェブメールサイト168へのアクセスを許可する)。
【0022】
トラフィック形成、サービスの質、及び/又は、ルーティング(例えば、所与のドメインに関して、ドメイン(例えば、*.examplenews.com)を含むパターン、ドメインに関連付けられたカテゴリ、他のホスト名関連情報(例えば、URL)、IPアドレス範囲、等)を管理するポリシといった、他のタイプのポリシも、また、実施することができる。ポリシのさらに他の例は、着信(incoming)(及び/又は、発信(outgoing))電子メールの添付ファイルにおける脅威のスキャン、ウェブサイトコンテンツのスクリーニング、インスタントメッセージングプログラムを介して交換されたファイルのスキャン、及び/又は、他のファイル転送を必要とするものといった、セキュリティポリシを含む。いくつかの実施形態において、データアプライアンス102は、また、企業ネットワーク140内に留まるトラフィックに関するポリシを施行するようも構成されている。
【0023】
様々な実施形態において、データアプライアンス102は、DNSプロキシサービス166を実行する(以下で、より詳細に説明される)。クライアントデバイス(例えば、クライアントデバイス108)がネットワークリソース(例えば、ビデオストリーミングウェブサイト152)と通信しようと試みるとき、DNSプロキシサービス166によって、DNS要求が受信され、クライアントデバイス108に対して応答(response)を返す。適用可能な場合、応答は、データアプライアンス102によってキャッシュされる。
【0024】
様々な実施形態においては、データアプライアンス102と通信する、モバイルデバイス管理(MDM)サーバ162といった、他のデバイスも、また、企業ネットワーク140に含まれている。MDMサーバ162は、モバイルデバイスと通信して、デバイスステータスを決定し、そして、そうしたモバイルデバイスステータス情報をデータアプライアンス102に対して(例えば、周期的に)報告する。MDMサーバ162は、クライアントデバイス上にインストールされた悪意のあるアプリケーションの存在を報告するように構成することができ、かつ/あるいは、どのアプリケーションが悪意のあるものであるかの指示を(例えば、データアプライアンス102から、セキュリティプラットフォーム122から、または、それらの組み合わせから)受信するように構成することができる。いくつかの実施形態において、データアプライアンス102は、MDMサーバ162から受信した情報に基づいて、クライアントデバイスに対してポリシを施行するように構成されている。例えば、クライアントデバイスにマルウェア(または、他のタイプの未承認アプリケーション)がインストールされたと判定された場合に、データアプライアンス102(MDMサーバ162と協働して動作しているもの)は、所定の企業リソース(例えば、イントラネット)に対するクライアントデバイスのアクセスを拒否することができ、一方で、他のクライアントデバイス(マルウェアがインストールされていない)がそれらのリソースに対してアクセスすることを許可することができる。
【0025】
図1では単一の要素として示されているが、企業ネットワーク140は、複数のネットワークを備えることができ、そのいずれか/各々は、ここにおいて説明される技法を具現化する1つ以上のデータアプライアンスまたは他のコンポーネントを含むことができる。例えば、ここにおいて説明される技法は、複数の地理的ロケーションに複数のオフィスを有する大規模な、多国籍会社(または、他のエンティティ)によって展開され得る。そして、クライアントデバイス104-108は、データアプライアンス102に直接的に接続しているものとして
図1に示されているが、1つ以上の中間ノード(例えば、ルータ、スイッチ、及び/又は、プロキシ)であり、かつ、典型的には、企業ネットワーク140内の種々の要素間に挿入されることが、理解されるべきである。
【0026】
データアプライアンスの一つの実施形態が
図2Aに示されている。示される例は、種々の実施形態において、データアプライアンス102に含まれる物理的/ハードウェアコンポーネントの表現である。具体的に、データアプライアンス102は、高性能マルチコア中央処理ユニット(CPU)202およびランダムアクセスメモリ(RAM)204を含んでいる。データアプライアンス102は、また、ストレージ210(1つ以上のハードディスクドライブまたはソリッドステート・ストレージユニット、といったもの)を含み、ポリシおよび他の構成情報、並びに、署名およびホスト名/URLカテゴリ情報といった他の情報を保管するために使用され得る。様々な実施形態において、データアプライアンス102は、企業ネットワーク140をモニタリングすること、および、開示された技術を実装することに使用される情報を(RAM204、ストレージ210、及び/又は、他の適切なロケーション、のいずれかに)保管する。そうした情報の例は、アプリケーション識別子、コンテンツ識別子、ユーザ識別子、要求されたURL、IPアドレスマッピング、等を含む。データアプライアンス102は、また、1つ以上の任意的なハードウェアアクセラレータを含み得る。例えば、データアプライアンス102は、暗号化および復号動作を実行するように構成された暗号エンジン206、および、照合器(matching)を実行し、ネットワークプロセッサとして動作し、かつ/あるいは、他のタスクを実行するように構成された、1つ以上のフィールドプログラマブルゲートアレイ208を含み得る。
【0027】
データアプライアンス102によって実行されるものとしてここにおいて説明される機能性は、種々の方法で提供/実装することができる。例えば、データアプライアンス102は、専用のデバイスまたはデバイスセットであってよい。データアプライアンス102によって提供される機能は、汎用コンピュータ、コンピュータサーバ、ゲートウェイ、及び/又は、ネットワーク/ルーティング・デバイス上のソフトウェアとして統合され、または、実行され得る。いくつかの実施形態において、データアプライアンス102によって提供されるものとして説明される少なくともいくつかのサービスが、代わりに(または、これに加えて)、クライアントデバイス(例えば、エンドポイント保護アプリケーション112および114)において実行するソフトウェアによって、クライアントデバイス(例えば、クライアントデバイス104または110)に提供される。
【0028】
データアプライアンス102がタスクを実行するものとして記述されるときはいつでも、単一のコンポーネント、コンポーネントのサブセット、またはデータアプライアンス102の全てのコンポーネントは、タスクを実行するために協働することができる。同様に、データアプライアンス102のコンポーネントがタスクを実行するものとして説明されるときはいつでも、サブコンポーネントは、タスクを実行することができ、かつ/あるいは、コンポーネントは、他のコンポーネントと共にタスクを実行することができる。様々な実施形態において、データアプライアンス102の一部は、1つ以上の第三者によって提供される。データアプライアンス102に利用可能な計算リソースの量といった要因に応じて、データアプライアンス102の種々の論理コンポーネント及び/又は特徴は省略されてよく、そして、ここにおいて説明される技術はそれに応じて適合される。同様に、追加の論理コンポーネント/特徴を、データアプライアンス102の実施形態に、適用可能なように含めることができる。種々の実施形態におけるデータアプライアンス102に含まれるコンポーネントの一つの例は、(例えば、パケットフロー解析に基づいてアプリケーションを識別するために種々のアプリケーション署名を使用して)アプリケーションを識別するように構成されているアプリケーション識別エンジン116である。例えば、アプリケーション識別エンジン116は、セッションが関与するトラフィックのタイプを決定することができる。Webブラウジング-ソーシャルネットワーキング、Webブラウジング-ニュース、SSH、等といったものである。
【0029】
図2Bは、データアプライアンスの一つの実施形態の論理コンポーネントの機能図である。示される例は、種々の実施形態においてデータアプライアンス102に含まれ得る論理コンポーネントの表現である。別段の規定がない限り、データアプライアンス102の種々の論理コンポーネントは、一般的に、1つ以上のスクリプト(例えば、該当する場合、Java、python、等で書かれたもの)のセット(set)を含む種々の方法で実装可能である。
【0030】
図示のように、データアプライアンス102はファイアウォールを備え、かつ、管理プレーン232およびデータプレーン234を含んでいる。管理プレーンは、ポリシの設定およびログデータの表示のめのユーザインターフェイスを提供するといったことにより、ユーザインタラクション(user interaction)の管理について責任を負う。データプレーンは、パケット処理およびセッション処理を実行するといったことにより、データ管理について責任を負う。
【0031】
ネットワークプロセッサ236は、クライアントデバイス108といった、クライアントデバイスからパケットを受信し、そして、それらを処理のためにデータプレーン234に提供するように構成されている。フローモジュール238は、新しいセッションの一部としてパケットを識別するときはいつでも、新しいセッションフローを生成する。その後のパケットは、フロールックアップに基づいて、セッションに属しているものとして識別される。該当する場合、SSL復号エンジン240によってSSL復号化が適用される。そうでなければ、SSL復号エンジン240による処理は省略される。復号エンジン240は、データアプライアンス102がSSL/TLSおよびSSHの暗号化トラフィックを検査および制御することを助け、そして、従って、そうでなければ暗号化トラフィック内に隠されたままであり得る脅威を停止することを助ける。復号エンジン240は、また、機密性の高いコンテンツが企業ネットワーク140から去るのを防止することを助けることができる。復号は、URLカテゴリ、トラフィック元、トラフィック宛先、ユーザ、ユーザグループ、およびポート、といったパラメータに基づいて選択的に制御することができる(例えば、イネーブルされ、または、ディセーブルされる)。復号ポリシ(例えば、復号するセッションを指定するもの)に加えて、復号プロファイルは、ポリシによって制御されるセッションの様々なオプションを制御するために割り当てることができる。例えば、特定の暗号スイートおよび暗号化プロトコルバージョンの使用が要求され得る。
【0032】
アプリケーション識別(APP-ID)エンジン116は、セッションが関与するトラフィックのタイプを決定するように構成されている。一つの例として、アプリケーション識別エンジン116は、受信データ内のGETリクエストを認識し、そして、セッションがHTTPデコーダを必要とすると結論付けることができる。場合によって、例えば、ウェブブラウジングセッションにおいて、識別されたアプリケーションは変更することができ、そして、そうした変更はデータアプライアンス102によって書き留め(noted)られる。例えば、ユーザは、まず、企業のWiki(訪問したURLに基づいて「Webブラウジング-生産性(“Web Browsing-Productivity”)」として分類される)を閲覧し、次に、ソーシャルネットワーキングサイト(訪問したURLに基づいて「Webブラウジング-ソーシャルネットワーキング(“Web Browsing-Social Networking”)」として分類される)を閲覧することができる。異なるタイプのプロトコルは、対応するデコーダ244を有している。アプリケーション識別エンジン116によって行われた決定に基づいて、適切なデコーダ244に対してパケットが送信される。デコーダ244は、パケットを正しい順序に組み立て、そして、情報を抽出するように構成されている。デコーダ244は、また、パケットに何が起こるべきかを決定するために、署名照合(signature matching)を実行する。必要に応じて、SSL暗号化エンジン246は、復号されたデータを再び暗号化することができる。パケットは、転送のために(例えば、宛先へ)転送モジュール248を使用して転送される。
【0033】
また、図示されるように、ポリシ242も、受信され、そして、管理プレーン232に保管される。ポリシは、ドメイン名及び/又はホスト/サーバ名を使用して指定することができる、1つ以上のルールを含むことができ、そして、ルールは、モニタリングされるセッショントラフィックフローからの様々な抽出されたパラメータ/情報に基づいて、加入者/IPフローに対するセキュリティポリシ実施のためといった、1つ以上の署名または他の照合基準または発見的方法を適用することができる。
図2Bにも、また、示されるように、インターフェイス(I/F)通信器250が、管理通信(例えば、(REST)API、メッセージ、またはネットワークプロトコル通信、もしくは他の通信メカニズムを介して)について提供されている。
【0034】
図2Cは、データアプライアンスの一つの実施形態を示している。先に説明したように、様々な実施形態において、データアプライアンス102は、管理プレーン232およびデータプレーン234を含んでいる。管理プレーンは、ポリシを構成すること(242)、問題を報告すること、および、ログデータを見ることのために1つ以上のユーザインターフェイスを提供することなどによって、ユーザインタラクションを管理する責任を負う。データプレーンは、(例えば、URLを抽出するための)パケット処理およびセッションハンドリングを実行することなどによって、データを管理する責任を負う。様々な実施形態において、スケジューラは、(例えば、データプレーン234によって管理プレーン232に提示されるように、または、管理プレーン232によってリモートセキュリティプラットフォーム122に提示されるように)要求のスケジューリングを管理する責任を負う。
【0035】
URLフィルタリング
【0036】
上述のように、データアプライアンス102によって実行される1つのタスクは、URLフィルタリングである。データアプライアンス102において指定されるのは、ポリシ242のセットであり、そのうちのいくつかは、ACME従業員がアクセスし得るウェブサイトのタイプ、および、どのような条件下であるかを管理する。一つの例として、データアプライアンス102には、従業員がニュース関連ウェブサイトにアクセスすることを許可するポリシが含まれる。データアプライアンス102に含まれる別のポリシは、常に、従業員がポルノグラフィウェブサイトにアクセスすることを禁止する。データアプライアンス102には、また、URLおよび関連するカテゴリのデータベース(262)も含まれる(例えば、bing.comは「検索エンジン(“search engine”)」として分類され、gmail.comは「ウェブメール(“web mail”)」として分類される)。カテゴリ情報の代わりに、または、カテゴリ情報に加えて、また、他の情報をデータベース262内のURLに関連付けることもでき、そして、他の情報をポリシ施行と共に使用することができる。
【0037】
いくつかの実施形態において、データベース262(または、その少なくともいくつかの部分)は、加入サービスを通じて、といった、第三者によって提供される。そうしたシナリオでは、URLがデータベース262に直接的に保管される代わりに、保管の前に、URLに対して変換が適用されることが可能である。一つの例として、URL自体ではなく、URLのMD5ハッシュをデータベース262に保管することができる。データベース262に保管されたURL(または、その変換)は、クライアントデバイス104といった、クライアントデバイスのユーザによってアクセスが求められる可能性が最も高い上位n個のURLを表し、ここで、nは、データアプライアンス102に利用可能なコンピューティングリソースおよび他のリソースに基づいて構成され得る。一つの例として、データベース262の実施形態は、2000万個のURLを含み、そして、ストレージ210に保管されている。データベース262は、毎日(または、別の時間スケールで)データベース更新をデータアプライアンス102に対して(例えば、コンテンツパッケージとして)伝送するセキュリティプラットフォーム122などによって、周期的にリフレッシュ/維持され得る。
【0038】
様々な実施形態において、データアプライアンス102は、RAM204にロードされた様々なキャッシュ(例えば、264-272)を含んでいる。いくつかの実施形態において、キャッシュ264-272の全部または一部は、データアプライアンス102から省略され、そして、それに応じて、ここにおいて説明される処理が適合される。他の実施形態においては、適用可能な場合、追加のキャッシュが、データアプライアンス102に含まれる。
図2Cに示されるコンポーネントに関する追加的な詳細が、以下に提供されている。
【0039】
クライアントデバイス106のユーザ(以降で、「ボブ(“Bob”)」と称される従業員)が、ウェブサーフィンといったアクティビティに参加することを試みるとき、クライアントデバイス106から、および、クライアントデバイスに対する通信がデータアプライアンス102を通過する。一つの例として、ボブがクライアントデバイス106上でウェブブラウザアプリケーションを起動しており、かつ、任意のウェブページを訪問したいと仮定する。データアプライアンス102は、ボブが訪問したいであろうサイトのURL(例えば、URL274)を評価し、そして、アクセスが許可されるべきか否かを判定するように構成されている。
【0040】
ボブが、全国的な新聞のウェブサイトである、サイト154を訪れたいと考え、かつ、そのURLを自分のブラウザ(「www.examplenews.com」)に入力すると仮定する。いくつかの実施形態において、URL(274)は、データアプライアンス102によって、以下のように評価される。評価の第1段階において、データプレーン(234)は、URL274の存在についてキャッシュ264を調べる(consult)(その結果は、データアプライアンス102がキャッシュリソース制約内でサイト154にアクセスするための要求を以前に受信したか否かを示す)。URLがキャッシュ264に存在する場合には、キャッシュ264にも、また、保管されている、関連するカテゴリが使用され、任意の適用可能なポリシ242を実施する(例えば、ボブがサイト154にアクセスするのを許可する)。URLがキャッシュ264に存在しない場合には、一時エントリがキャッシュ264の中へ挿入され、URLが解決されていることを示している。一つの例として、解決されているURLは「未解決(“UNRESOLVED”)」の一時的なカテゴリに割り当てられる。サイト154へのアクセスのためにデータアプライアンス102によって受信された(例えば、クライアントデバイス104のユーザである「チャーリー(“Charlie”)」といった別のユーザから受信された)追加の要求は、解決まで待ち行列(queued)に入れられる。様々な実施形態において、キャッシュ264に含まれるUNRESOLVEDエントリにタイムアウト条件が設定され、その結果、指定された期間内にエントリが更新されない場合には、エントリが削除される。
【0041】
URL274が未解決のままであると仮定すると、データプレーン234は、URL274の評価について管理プレーン232に対して要求を送信する。URL274は、適用可能なように変換される(例えば、URL274のMD5ハッシュが計算される)。この例の残りの説明については、明確にするために、URLとURLのMD5(または、他の変換)との間の区別は行われない。データベース262がMD5ハッシュを保管する場合、それに対して実行されるクエリ(および、対応する動作)は、URLのMD5(または他の適用可能な)変換を使用して実行されることが仮定されるべきである。
【0042】
いくつかの実施形態において、キャッシュ266は、URL274の存在について評価される(データベース262がキャッシュリソース制約内のURL274について以前にクエリされたか否かを示す)。URL274がキャッシュ266に存在しないと仮定する。データベース262のクエリは、URL274を使用して実行される。URL274がデータベース262内に存在することが仮定される場合には、対応するカテゴリNEWSが返され、そして、最終的にデータプレーン234に提供され、これは、UNRESOLVEDカテゴリをNEWSに変更することによってキャッシュ264内のエントリを更新する。カテゴリは、任意の適用可能なルールを実施するためにファイアウォールによって使用される。この場合、例えば、ボブのブラウザを用いてURL274にアクセスしようとするボブの試みは許可されるだろう(彼のセッションはデータアプライアンス102によって終了されない)。なぜなら、彼の要求は、許容可能な使用である、NEWSサイトにアクセスしようとする試みに関連付けられているからである。キャッシュ266は、また、返されたカテゴリおよびURL274(すなわち、そのMD5ハッシュ)を含むように更新される。
【0043】
ここで、URL274に対するデータベース262のクエリが失敗したと仮定する。管理プレーンによって実行される評価の次のフェイズ(phase)は、キャッシュ268を調べて、URL274がその中に存在するかを調べることである。キャッシュ268は、1つ以上のリモートURL分類サービスのセットに対してデータアプライアンス102によって実行されるクエリに関連付けられている。以前のフェイズと同様に、URL274がキャッシュ268に存在する場合には、対応するカテゴリ(例えば、「NEWS」)が結果として返され、そして、ポリシ施行においてファイアウォールによって使用され得る(かつ、キャッシュ264に含まれ得る)。URL274も、また、キャッシュ268に存在しない場合には、URL分類サービス276といった、1つ以上のリモートURL分類サービスがクエリ(queried)される。
【0044】
いくつかの実施形態において、URL分類サービスは、トライ構造ルックアップ(Trie structure lookup)を使用してURLカテゴリ情報をクエリする、AmazonクラウドURLクエリサーバである。いくつかの実施形態において、URL分類サービスは、データベース262のコンテンツのプロバイダによって利用可能にされ、そして、データベース262に含まれる情報を補足するURL情報を含む(例えば、何百万もの追加的なURLおよび対応するカテゴリを含めることによる)。一つの例として、URL分類サービス276は、セキュリティプラットフォーム122によって(例えば、コンポーネント276として)提供され得る。URL分類サービスは、また、データアプライアンス102の所有者または任意の他の適切な当事者(party)の制御下にもあり得る。さらに、複数のURL分類サービスのセットは、並行して、順番に(例えば、第1にクエリされたURL分類サービスが結果を有しない場合に、データアプライアンス102は、異なるURL分類サービスにコンタクトする)、選択的に、等、データアプライアンス102によってクエリされ得る。
【0045】
様々な実施形態において、URL分類サービス276は、コモディティサーバクラスハードウェアを使用して実施される。URL分類サービス276は、また、スケーラブルで、弾力的なアーキテクチャを使用して構築することもでき、そして、(例えば、Amazon Web Services、Microsoft Azure、及び/又は、Google Cloud Platformを使用して)1つ以上のサードパーティによって提供されるコンポーネントを含む、いくつかの分散コンポーネントを備え得る。さらに、URL分類サービス276が、データの保管またはデータの処理といった、タスクを実行するものとして言及される場合、URL分類サービス276の1つのサブコンポーネントまたは複数のサブコンポーネントが(個々に、または、サードパーティコンポーネントと協働して)そのタスクを実行するために協働し得ることが理解される。URL分類サービス276によって提供されるものとしてここにおいて説明される機能性は、1つ以上のスクリプトのセット(例えば、適用可能な場合に、Java(登録商標)、python、等で書かれている)を含む、種々の方法実施することができる。
【0046】
URL分類サービス276は、クローラ280のセットを使用して、サイト(例えば、サイト150-156)をクロールし、メタデータ/コンテンツを抽出し、そして、クロールされたサイトに関連付けられた情報をデータベース282に保管する。サイトからコンテンツをクロール/抽出するために使用することができるツールの例は、PageDump(WebKit)、HtmlUnit、およびjsoupを含んでいる。データベース282は、様々な実施形態において、MongoDBを使用して実装されている。データベース282に含まれ得る例示的なテーブルは、(クロールされるサイトの)クロールキュー(crawl queue)、クロールログ(クロールされたサイトの履歴)、分類結果(例えば、to-publishカテゴリ、無効なサイト、または、カテゴリなし)、および、クロールコンテンツレポート(例えば、クロールされたサイトの概要、言語、および、クロールされたページ数)である。サイトについて抽出された情報(例えば、タイトル、説明、本文、キーワード、インリンク(inlink)、アウトリンク(outlink)、言語、等)は、特徴ベクトル(または、適用可能な場合、特徴ベクトルのセット)を生成するために(例えば、分類器284によって)使用される。特徴の一つの例は、サイトのアウトリンクのいずれかがアダルト(ADULT)サイトとして分類されることが知られているサイトに導くか否かである。他の例示的な特徴は、本文テキストに関連する特徴、メタデータに関連する特徴、着信リンクに関連する特徴、および、URL自体に関連する特徴、を様々に含んでいる。
【0047】
様々な実施形態において、特徴ベクトルに含まれる異なる特徴は、モデル286といった、分類モデルの中へ組み込まれる異なるタイプの機械学習アプローチと併せて使用される。そうした機械学習アプローチの例は、ナイーブベイズ(Naive Bayes)、サポートベクターマシン、ランダムフォレスト、ロジスティック回帰、および、勾配降下ブースティングツリーを含む。分類器284は、モデル286といった、モデルを使用して、その関連する特徴ベクトルに基づいて所与のサイトを(例えば、ニュース、アダルト、等として)分類する。様々な実施形態において、モデル286といったモデルは、手動でラベル付けされたウェブサイトのトレーニングセットを使用してトレーニングされる。一つの例として、netflix.com、hulu.com、および、youtube.comといったサイト(ビデオストリーミングサービスを提供することがよく知られている)を、トレーニングセット(「ビデオストリーミング(“video streaming”)」とラベル付けされる)に含めることができる。モデル286を使用して決定された分類は、データベース282に保管される。データベース282のコンテンツは、データベース262を生成すること、および、クエリに応答することを含む、様々な目的のために使用することができる。
【0048】
URL274も、また、URL分類サービス276(および、適用可能な場合、データアプライアンス102に利用可能な任意の追加のURLサービス)に存在しない場合には、UNKNOWNのカテゴリが返され、そして、URL274へのアクセスをブロックすることなどによって、カテゴリに基づいて、適切なポリシが適用される。キャッシュ264は、また、UNRESOLVEDの一時的なカテゴリをUNKNOWNに切り替えることによって更新することもできる。キャッシュ266と同様に、キャッシュ268は、URL分類サービス276によって返された結果に基づいて更新される。いくつかの実施形態において、UNKNOWNカテゴリ化を有するURLは、タイムアウトを有し、従って、後続の要求の最中にカテゴリ化の解決を可能にする。
【0049】
セキュリティプラットフォーム
【0050】
図1に戻ると、様々な実施形態において、セキュリティプラットフォーム122は、悪意について(例えば、文書、アプリケーション、等の)サンプルを分析すること、アプリケーションを分類すること、ドメイン/URL/URIを分類すること、等を含む、様々なサービス(データアプライアンス102を含む)を提供するように構成されている。
【0051】
悪意のある個人(システム120を使用している)がマルウェア158を作成したと仮定する。悪意のある個人は、クライアントデバイス104といった、クライアントデバイスが、マルウェア158のコピーを実行し、クライアントデバイスを危険にさらし、そして、クライアントデバイスをボットネット内のボットにさせることを望む。危険にさらされたクライアントデバイスは、次いで、タスク(例えば、暗号通貨マイニング、または、サービス妨害(denial of service)攻撃への参加)を実行し、そして、コマンドアンドコントロール(C&C)サーバ164といった、外部エンティティに情報を報告するように、並びに、適用可能な場合、C&Cサーバ164から命令を受信するように命令され得る。
【0052】
データアプライアンス102が、マルウェア158のコピーが添付されているクライアントデバイス104に対して(例えば、システム120によって)送信された電子メールを傍受(intercept)したと仮定する。代替的であるが、同様のシナリオとして、データアプライアンス102は、マルウェア158の(例えば、ウェブサイトからの)クライアントデバイス104によって試みられたダウンロードを傍受することができるだろう。いずれのシナリオにおいても、データアプライアンス102は、ファイル(例えば、マルウェア158の電子メール添付ファイルまたはウェブサイトダウンロード)に対する署名がデータアプライアンス102上に存在するか否かを判定する。署名は、存在する場合には、ファイルが安全であることが知られている(例えば、ホワイトリストされている)ことを示すことができ、そして、また、ファイルが悪意のあるものであることが知られている(例えば、ブラックリストされている)ことを示すこともできる。
【0053】
マルウェア158の署名(例えば、マルウェア158のMD5ハッシュ)が署名のセットに含まれる場合に、データアプライアンス102は、それに応じて(例えば、クライアントデバイス104に対して送信された電子メール添付ファイルのMD5ハッシュがマルウェア158のMD5ハッシュと一致することを検出することによって)クライアントデバイス104へのマルウェア158の送信を防止することができる。セキュリティプラットフォーム122は、また、既知の悪意のあるドメイン及び/又はIPアドレスのリストをデータアプライアンス102に提供することができ、データアプライアンス102が企業ネットワーク140とC&Cサーバ164との間のトラフィックをブロックすることを可能にする(例えば、C&Cサーバ164が悪意のあるものであると知られている場合)。悪意のあるドメイン(及び/又は、IPアドレス)のリストは、また、データアプライアンス102が、そのノードのうちの1つがいつ危険にさらされたかを判定するのを手助けすることもできる。例えば、クライアントデバイス104がC&Cサーバ164にコンタクトしようと試みる場合に、そうした試みは、クライアント104がマルウェアによって危険にさらされていることの強いインジケータである(そして、企業ネットワーク140内の他のノードと通信することからクライアントデバイス104を隔離すること(quarantining)といった、是正措置が、それに応じて、とられるべきである)。
【0054】
添付ファイルに対する署名が見つからない場合には、様々な実施形態において、データアプライアンス102は、それが悪意のあるものであるか否かを判定し、かつ/あるいは、そうでなければ、それを分類するように、静的/動的分析のためのファイルを提供するように構成されている。一つの例として、データアプライアンス102は、分析のためにマルウェア158のコピーをセキュリティプラットフォーム122に対して送信することができる。セキュリティプラットフォーム122は、データアプライアンス102以外のソース(例えば、データアプライアンス136及び/又は148)から、及び/又は、ソフトウェア配信プラットフォーム(ここにおいては、また、「アプリストア(“app store”)」とも称される)といった、他のタイプのソースから、評価のためにアプリケーションのコピーを獲得することができる。アプリストア160の例示的な実施形態は、Google Play、iOS App Store、Windows Store、および、Amazon Appstoreを含む。様々な実施形態において、マルウェア158の分析は、少なくとも部分的にオンプレミス(on premise)(例えば、企業ネットワーク140内)で実行される。そして、セキュリティプラットフォーム122によって実行されるものとしてここにおいて説明される分析は、また、少なくとも部分的に、データアプライアンス102に含まれるマルウェア分析モジュールによって実行することもできる。
【0055】
セキュリティプラットフォーム122は、受信したサンプルのコピーをストレージ142に保管し、そして、分析が開始される(または、適用可能な場合、スケジュールされる)。ストレージ142の一つの例は、Apache Hadoop Cluster(HDFS)である。分析の結果(および、アプリケーションに関する追加的な情報)は、データベース146に保管される。アプリケーションが悪意のあるものであると判定された場合、データアプライアンス102は、分析結果に基づいてファイルダウンロードを自動的にブロックするように構成され得る。さらに、マルウェアに対する署名を生成し、かつ、(例えば、データアプライアンス136および148といった他のデータアプライアンスに対して)配信することができ、悪意があると判定されたファイルをダウンロードするための将来のファイル転送要求を自動的にブロックする。
【0056】
様々な実施形態において、セキュリティプラットフォーム122は、典型的なサーバクラスオペレーティングシステム(例えば、Linux(登録商標))を実行する(例えば、マルチコアプロセッサ、16G以上のRAM、ギガビットネットワークインターフェイスアダプタ、および、ハードドライブを有している)1つ以上の専用の市販のハードウェアサーバを備えている。セキュリティプラットフォーム122は、複数のそうしたサーバ、ソリッドステートドライブ、及び/又は、他の適用可能な高性能ハードウェアを備えている、スケーラブルなインフラストラクチャにわたり実装され得る。セキュリティプラットフォーム122は、1つ以上のサードパーティによって提供されるコンポーネントを含む、いくつかの分散コンポーネントを含み得る。例えば、セキュリティプラットフォーム122の一部または全部は、Amazon Elastic Compute Cloud(EC2)及び/又はAmazon Simple Storage Service(S3)を使用して実装され得る。さらに、データアプライアンス102と同様に、セキュリティプラットフォーム122が、データの保管またはデータの処理といった、タスクを実行するものとして参照されるときはいつでも、セキュリティプラットフォーム122のサブコンポーネントまたは複数のサブコンポーネント(個別であるか、または、サードパーティコンポーネントと協働しているかにかかわらず)が、そのタスクを実行するために協働し得ることが理解されよう。一つの例として、セキュリティプラットフォーム122は、VMサーバ124といった、1つ以上の仮想マシン(VM)サーバと協働して静的/動的分析を任意的に実行することができる。
【0057】
仮想マシンサーバの一つの例は、VMware ESXi、Citrix XenServer、または、Microsoft Hyper-Vといった、市販の仮想化ソフトウェアを実行する市販のサーバクラスハードウェア(例えば、マルチコアプロセッサ、8ギガバイト以上のRAM、および、1つ以上のギガビットネットワークインターフェイスアダプタ)を備える物理マシンである。いくつかの実施形態において、仮想マシンサーバは省略されている。さらに、仮想マシンサーバは、セキュリティプラットフォーム122を管理する、同じエンティティの制御下にあってよいが、また、サードパーティによって提供されてもよい。一つの例として、仮想マシンサーバは、EC2に依存することができ、セキュリティプラットフォーム122の残りの部分は、セキュリティプラットフォーム122のオペレータによって所有され、かつ、その制御下にある専用ハードウェアによって提供される。VMサーバ124は、クライアントデバイスをエミュレートするために、1つ以上の仮想マシン126-128を提供するように構成されている。仮想マシンは、バラエティ豊かなオペレーティングシステム及び/又はそのバージョンを実行することができる。仮想マシン内でアプリケーションを実行することから結果として生じている観察された挙動は、ログされ、そして、分析される(例えば、アプリケーションが悪意のあるものであるという指示のために)。いくつかの実施形態において、ログ分析は、VMサーバ(例えば、VMサーバ124)によって実行される。他の実施形態において、分析は、コーディネータ144といった、セキュリティプラットフォーム122の他のコンポーネントによって少なくとも部分的に実行される。
【0058】
様々な実施形態において、セキュリティプラットフォーム122は、署名(及び/又は他の識別子)のリストを介して、サンプルのその分析の結果を、サブスクリプションの一部としてデータアプライアンス102(及び/又は、MDMサーバ162)に対して利用可能にする。例えば、セキュリティプラットフォーム122は、マルウェアアプリケーションを識別する、コンテンツパッケージを周期的に(例えば、毎日、毎時間、または、何らかの他の間隔で、かつ/あるいは、1つ以上のポリシによって構成されたイベントに基づいて)送信することができる。一つの例示的なコンテンツパッケージは、識別されたマルウェアアプリのリストを含み、パッケージ名、アプリケーションを一意に識別するためのハッシュ値、および、各識別されたマルウェアアプリケーションに対するマルウェア名(及び/又は、マルウェアファミリ名)といった、情報を有する。サブスクリプションは、データアプライアンス102によって傍受され、かつ、データアプライアンス102によってセキュリティプラットフォーム122に送信された、そうしたファイルだけの分析をカバーすることができる。そして、また、セキュリティプラットフォーム122に知られている全てのマルウェア(または、まさにモバイルマルウェアであり、他の形態のマルウェア(例えば、PDFマルウェア)ではないような、そのサブセット)の署名もカバーすることができる。
【0059】
様々な実施形態において、セキュリティプラットフォーム122は、データアプライアンス102のオペレータに加えて(または、適用可能な場合、その代わりに)様々なエンティティに対してセキュリティサービスを提供するように構成されている。例えば、自身のそれぞれの企業ネットワーク134および138、並びに、自身のそれぞれのデータアプライアンス136および148を有している、他の企業は、セキュリティプラットフォーム122のオペレータと契約することができる。他のタイプのエンティティも、また、セキュリティプラットフォーム122のサービスを利用することができる。例えば、クライアントデバイス110にインターネットサービスを提供するインターネットサービスプロバイダ(ISP)は、クライアントデバイス110がダウンロードしようと試みるアプリケーションを分析するために、セキュリティプラットフォーム122と契約することができる。別の例として、クライアントデバイス110の所有者は、セキュリティプラットフォーム122と通信するクライアントデバイス110上にソフトウェア114をインストールすることができる(例えば、セキュリティプラットフォーム122からコンテンツパッケージを受信し、そして、分析のためにセキュリティプラットフォーム122にアプリケーションを送信するため)。
【0060】
III.悪意のあるインジケータの自動抽出および分類
【0061】
オンライン犯罪活動を検出することは、悪意のある活動の多様性および問題の規模を含む、種々の理由のために困難であり得る。そこでは、インターネットプロトコル(IP)アドレス、ドメイン名、ユニフォームリソースロケータ(URL)、およびファイルハッシュ(例えば、SHA256またはMD5)といった数十億もの潜在的な侵害インジケータ(indicator of compromise、IOC)が存在し、そして、悪意のある活動を識別および停止するために使用可能であり得る。IOCを識別するという一見したところ克服できないタスクに対処するのを手助けするために、セキュリティ研究者は、しばしば、自分たちの発見を互いに共有している。残念ながら、研究者間でのそうした情報共有は、標準化または集中化されておらず、研究者に2つの主要な課題をもたらしている。第1課題は、公に共有される潜在的なIOCのソースをどのようにして見つける(locate)かである。第2課題は、IOCの普遍的な定義がなければ、悪意のあるIOCが良性のインジケータと混合し得ることである。
【0062】
これら及び他の問題に対処するために、様々な実施形態において、セキュリティプラットフォーム122は、IOCを自動的に収集および分類することができる自動IOC抽出システム300を含んでいる。以下でより詳細に説明するように、IOC抽出システム300は、既存のIOCソースをキュレート(curate)して新たなIOCソースを発見し、これらのソースをクロールして、潜在的なIOCを抽出し、IOCインテリジェンスを収集し、そして、IOCを分類する。ここにおいて使用される際に、「真のIOC(“true IOC”)」、「確認されたIOC(“confirmed IOC”)」、「悪意のあるIOC(“malicious IOC”)」、及び/又は「実行可能なIOC(“actionable IOC”)」は、悪意のある/他の望ましくないアクティビティをブロックするために使用され得るIOCである。「候補IOC(“candidate IOC”)」又は「潜在的IOC(“potential IOC”)」は、悪意のある/他の望ましくないアクティビティを停止するために使用可能であるとまだ判定されていないIOCである。「偽のIOC(“false IOC”)」は、後で良性である(または、そうでなければ、悪意のある/他の望ましくない活動を停止するために使用可能でない)と判定される候補IOCである。
【0063】
A.例示的なアーキテクチャ
【0064】
自動IOC抽出システム300は、ウェブサイト、ブログ、RSSフィード、Twitterポスト、及び/又は、脅威インテリジェンス共有プラットフォームを含む、様々なIOCソースの手動および自動的の両方の追加をサポートする。一つの例として、システム300は、ソースが悪意のあるIOCの発行元であるかを判定するために、TF-IDFベースのスコアリングを活用することによって、新しいソースを識別することができる。既知のコンピュータセキュリティ関連IOCソース内に存在する自然言語の用語頻度モデルを構築し、そして、一般的に文書を表している逆文書頻度を構築するために、ソースの初期シードが使用され得る。Twitterの例では、検索APIを使用して潜在的に有用なソースを見つけることができ、それは、次いで、所与のフィードをソースとして追加すべきか否かを決定するために、フィードの平均TF-IDFスコアを使用して評価され得る。
【0065】
各タイプのソース(例えば、ブログまたはTwitter)は、各ソースについて訪問履歴を個々に維持し、そして、収集されたコンテンツを処理のために生のフォーマット(raw format)で保管する、適用可能なステートフルクローラ(crawler)を用いてクロールされる。ウェブクローラがリンクに遭遇すると、それをクロールキューに追加することができる。システム300は、収集された生のコンテンツ(例えば、HTML、PDF、DOCX、等)からユーザ可読テキストを抽出する。自然言語処理を使用して、テキストは文(sentence)のリストへと変換される。文のリストから、候補IOC(URL、ドメイン名、IPアドレス、電子メールアドレス、ファイルハッシュなど)が抽出される。そこから所与の候補IOCが抽出される文(または、他の周囲のテキスト)は、IOCの「コンテキスト(“context”)」と称され、IOCに関連する興味深いコンピュータセキュリティ用語を見つけるために使用され得る。IOCが出現したブロックリスト、および、IOCに関連付けられたDNSレコードといった、候補IOCに関連する追加的な情報も、また、収集され、そして、候補IOCが、それ自身で不正使用のインジケータであるか否かを判定するのを支援するために使用され得る。様々な実施形態において、システム300は、潜在的なIOCが実行可能である(すなわち、それ自身でブロックリスティング(blocklisting)のために使用することができる)か否かを判定するために、ヒューリスティックルールセット(heuristic ruleset)ベースの分類器および機械学習分類器の両方を活用する。両方の分類器は、IOCのコンテキスト、ソースの属性、および、IOCに関して集められた追加的なインテリジェンスに基づく特徴に依存している(以下でより詳細に説明する)。システム300の出力は、様々な方法で使用することができる(例えば、URL分類サービス276、データアプライアンス102、等に対してIOCのリストを提供している)。
【0066】
図3は、自動IOC抽出システムの一つの実施形態を示している。システム300はモジュール式(modular)であり、各コンポーネントは別々に動作し、そして、モジュールは中央データベース302に保管されたデータを通じて(または、適用可能な場合、RAMを介して)相互に依存している。データベース302の一つの例は、データ持続性(data persistence)のためのリレーショナルデータベース(例えば、MySQL)である。データベース302は、同じコンテンツが複数回保管されないことを確実にするために正規化され得る。様々な実施形態において、各ソース(例えば、ブログウェブサイト、Twitterアカウント、等)について、クローリング状態(訪問されたURLおよび訪問すべきURL)は、JSONフォーマットで(例えば、バイトアレイ(byte array)または他の適切な方法として)保管される。
【0067】
メインコーディネータ304は、各モジュールがいつどのように実行されるかを調整し、そして、特定のモジュール(例えば、ウェブクローラ308)の複数のインスタンスは、同時に実行することができる。システム300のコンポーネントは、バラエティ豊かな方法で実装することができる(例えば、Java(登録商標)またはpythonといった、適切なプログラミング/スクリプト言語で作成され、かつ、自然言語処理のためのNLTK pythonライブラリ、ウェブサイトをスクレイピング(scraping)するためのRequests pythonライブラリ、および、機械学習のためのサイキットラーン(scikit-learn)といった、適用可能なライブラリを使用する、スクリプトのセットとして)。
【0068】
ターゲットセレクタ306は、クロールされるソース(例えば、URL、RSSフィード、および、Twitterアカウント)を選択し、そして、優先順位を付けるように構成されている。これは、クローラが、特定のソースについて所定の時間フレーム内に訪れるリソースの数を制限(cap)する。ウェブクローラ308は、ターゲットセレクタ306によって選択されたターゲットをクロールする。これは、特定のURLを訪問して見つかった全てのオンライン文書を収集する。例示的な文書は、テキスト、HTML、PDF、DOCX、XLSX、写真、および、他のタイプのファイルを含んでいる。ウェブクローラ308は、また、ソースの一部でない可能性があるURLも訪問する。一つの例として、IOCは、サイトwww.pastebin.comに頻繁に投稿(post)され、ウェブクローラ308も、また、サイトを訪問し得る。
【0069】
テキスト/IOC抽出器310は、複数の部分を含んでいる。第1には、ウェブクローラ308によって収集されたファイルからテキストを抽出する。それは、異なるファイルフォーマット(例えば、HTML、PDF、等)を扱うことができる。第2には、自然言語処理(NLP)を活用して、テキストから文を取り出す。第3には、デファング(defangs)を逆にして、正規表現(regular expressions)を使用して、文から候補IOCを取り出し、そして、第4は、候補IOCが、有効なドメイン名、IPアドレス、電子メールアドレス、等であるか否かを検証する。ブラウザおよび他のウェブと電子メールクライアントは、しばしば、URL、IPアドレス、電子メールアドレス、及び/又は、ドメイン名をクリック可能にしている。IOCは、読者が、不注意で危険なリソースを訪問することを停止するために、しばしば、意図的に非クリック可能にされる。プロセスは、「デファンギング(“defanging”)」と称される。例示的なデファングURLは、“hXXPs[:]//malicious.url[.]com/install.exe”である。デファングされたIOCに遭遇すると、システム300は、デファンギングプロセスを逆にして(「デファンギング(“reverse defanging”)」)、元のIOCを獲得することができる。
【0070】
DNSクライアントモジュール312は、候補IOCに関連付けられたリソースレコード(例えば、IPアドレスおよびネームサーバ)を見つけるためにDNSにクエリする。候補IOCが本当にIOCであるか否かを識別するために、これらのリソースレコードが活用され得る。インテリジェンス収集モジュール314は、候補IOCに関してオンラインリソースにクエリする。一つの例として、このモジュールは、候補IOCがそうしたリストに含まれているか否かを見い出すために、ブロックリストをクエリする。収集された情報は、候補IOCが真のIOCであるか否かを判定するために使用され得る。
【0071】
ヒューリスティック分類器316は、候補IOCが真のIOCとしてみなされるべきか否かを決定するための、ルールのセットを含んでいる。候補IOCが真のIOCとして分類されると仮定する。その場合に、それは、悪意のあるアクティビティ(例えば、URLフィルタリングおよびDNSセキュリティサービス)をブロックするために、異なるサービス(例えば、セキュリティプラットフォーム122によって提供されるもの)に含まれる。候補IOCが、真のIOCとして分類されない場合に、それは、他の悪意検出器(例えば、マルウェア/フィッシング検出器)に送信され得る。ヒューリスティック分類器は、機械学習分類器318が使用する、特徴のサブセットを活用する。例えば、それは、IOCが、デファングされたか否か、サードパーティのブロックリストに含まれていたか否か(例えば、Virus Totalまたは他の適切なソースにクエリすることによって決定され得る)、収集されたDNSクライアントがどのDNSリソースに記録されているか、IOCのタイプ(例えば、URL、ドメイン、IP)、および、このIOCは悪意があるとソース作者が考えたことを示す所定の単語をコンテキストが含んでいたか否か、の知識を活用する。複数のブロックリスト上に現れ、そして、デファングされる候補IOCは、悪意がある可能性が高い。従って、一つの例示的なルールは、候補IOCが、デファングされ、かつ、3つより多くのブロックリスト上に現れる場合に、それは、真のIOCである、ということであり得る。
【0072】
機械学習分類の利点は、人間にとって許容できないであろう、特徴の大きなセットに基づいて、多数のルールを自動的に学習できることである。機械学習の欠点は、ラベル付けされたデータの利用可能性に依存することである。ヒューリスティック分類子は、専門知識に基づいて重要なルールをハードコード(hardcode)するために、使用され得る。機械学習分類器318を実装するために、バラエティ豊かな技法が使用され得る。一つの例として、ランダムフォレストモデルが使用され得る。
【0073】
機械学習分類器318は、3つの主要なタスクに関与している。第1タスクは、例えば、IOCのコンテキスト、候補IOC自体、および、収集された任意の外部インテリジェンスからの、特徴抽出(例えば、いくつのソースがIOCに言及したか、IOCの年齢、IOCがデファングされたか否か)である。
【0074】
様々な実施形態において、機械学習分類器318によって使用される特徴は、以下のカテゴリへとグループ化され得る。IOC文字列に特有の特徴、IOCが言及されたソース、コンテキスト文、コンテキストコンテンツ(例えば、ブログ投稿またはツイート)、および、外部特徴のセット、である。
【0075】
IOCテキスト特徴: テキスト特徴(textual features)のゴールは、候補IOCがどのように見えるかを理解することである。しばしば、これらの特徴は、悪意自体を示している。例えば、複雑なドメインおよびURLが、ユーザをだますために構築され得る。これらの特徴は、IOCストリングから直接的に導出される。そうした特徴の例は、以下を含んでいる。
●IOCの文字長
●IOCのタイプ(例えば、ドメイン、IP、URL、電子メールアドレス、ハッシュ)整数エンコーディング(integer encoded)。
●ドメインレベルの数
●URLパスレベルの数
●URLクエリフィールドの長さ
●より長いIOCの一部(例えば、URLからのドメイン/IP部分)として抽出されたか
【0076】
ソース特徴: ソース特徴は、セキュリティコミュニティが、概して、IOCに関してどのように考えるかを表している。デファングされたIOCに言及するソースが多いほど、IOCが悪意のあるものである可能性が高くなる。そうした特徴の例は、以下を含んでいる。
●IOCが全てのソースにわたりデファングされたと言及された回数
●全てのソースにわたりIOCをデファングするために使用される技法の一意の数
●全てのソースにわたりIOCをデファングするために使用される方法、ワンホットエンコーディング(one-hot encoded)
●IOCが言及したソースタイプ(例えば、ブログ、Twitter、RSS)の数
●ソース分布に関連する特徴:これらの特徴は、ソースについて1回、所属(affiliation)について1回で、4回計算される。両方とも、また、IOCがデファングされたときにのみ計算される:
○IOCが1つのソース/所属において言及された最大回数
○IOCがソース/所属において言及された合計回数
○IOCが1つのソース/所属において他のものよりもはるかに多く言及されているか否かを調べるために、言及の総計で1つのソース/所属を除算した最大数
○IOCが言及されたソース/所属の総数
【0077】
文特徴(Sentence features): いくつかの文特徴は、また、セキュリティコミュニティが、一般的に、IOCに関してどのように考えるかを表している。他の文特徴は、所与の文が実際のIOCに関して話す可能性があるか否かを表す。IOCについて、各コンテキスト文(および、コンテンツ)、すなわち、IOCが言及された全ての文(および、コンテンツ)が考慮され得る。例えば、URL IOCが単語「フィッシング(“phishing”)」を有する文内で見つかった場合、それは、URLがフィッシングURLであることを示し得る。同様に、文が多くの候補IOCを含む場合に、この文は、真のIOCに関するものである可能性が高い。そうした特徴の例は、以下を含んでいる。
●コンテキスト文に見い出されたコンピュータ、ネットワーク、または、セキュリティ関連キーワードのワンホット(one-hot)エンコーディング。そうした単語の例は、「cookie」、「download」、「data」、「malware」、および「C2」を含む。
●文において見い出されたトークンタイプのワンホットエンコーディング
●コンテキスト文間の以下の特徴に係る最小値、平均値、および、最大値
○文の長さ
○全キャラクタ(characters)に対する文字(letters)の比率
○特殊用語の比率
○IOCの比率
○IOCがデファングされた方法の数
○IOCの数
○デファングされたIOCの数
【0078】
コンテンツ特徴: コンテンツ特徴は、文特徴に類似しているが、投稿全体に対して(または、そうでなければ、文書全体にわたり)計算される。例えば、所与のIOCについて(コンテキスト文の代わりに)コンテキストコンテンツ内に存在するIOCの平均数が計算される。コンテキストコンテンツ特徴は、コンテキスト文と同じ方法で計算される。
【0079】
外部特徴: 外部ソースから収集された特徴、候補IOCが真のIOCであるか否かを判定するのに役立ち得るものも、また、活用することができる。一つの例として、人気ドメインは真のIOCである可能性が低いので、候補IOCの安定したアレクサランク(Alexa rank)を使用することができる。アレクサは、人気に基づいてドメイン名をランク付けする。ドメイン名のアレクサランクを収集することができ、そして、そのドメインが、安定したアレクサランクとして長期間にわたり、そのランクを維持するか否かの判定を行うことができる。IOC候補が含まれたブロックリストの数も、また、考慮することができる。DNSクライアント312の出力は、ドメインが存在しない(non-existent、NX)か否かを示し、それは、また、ドメインが真のIOCである可能性も高くするだろう。最終的に、新しいドメインは悪意のあるものである可能性が高いので、ドメイン名の年齢を考慮することができる。
【0080】
機械学習分類器318によって実行される第2タスクは、モデル選択である。これは、ラベル付けされたデータに対して分類器モデル(例えば、ランダムフォレスト)を訓練することを含んでいる。ラベル付けされたデータの一つの例は、候補IOCのリストであり、ここでは、それらが真のIOCであるか、または、偽のIOCであるかが知られている。ラベル付けされたデータは、3つの部分に分割することができる。トレーニングセット、開発セット、および、検証セットである。訓練データは、分類器が真のIOCと偽のIOCとの間の差異を学習するのを手助けするように使用され得る。しかしながら、分類器が学習することができない多くのハイパーパラメータが存在している(例えば、ランダムフォレストの場合には、ツリーの最大許容深さ、または、各ツリーについて使用することができる特徴の数)。開発データセットは、ハイパーパラメータの異なる設定が分類器の性能にどのように影響を及ぼすかを見るために使用することができる。1つのアプローチは、予め定義された精度(例えば、0.99)に対して分類器のリコール(recall)がどのくらい良好であるかを考慮することである。リコールは、分類器が見出すことができる真のIOCのパーセントの尺度(measure)である(真の陽性の数を、真陽性(true positive)と偽陰性(false negative)との和で割ったもの)。真陽性とは、候補IOCが真のIOCとして分類され、かつ、実際に真のIOCであった場合である。偽陰性とは、候補IOCが偽のIOCとして分類されているが、実際には、真のIOCであった場合である。精度は、候補IOCが真のIOCであることを、どのくらいの頻度で分類器が正確に判定するかの尺度である(例えば、真の陽性の数を、真陽性と偽陽性との和で割ったもの)。精度は、偽陽性の数を制限するのに重要である。偽陽性とは、候補IOCが、偽のIOCであった場合に、誤って真のIOCとして分類される場合である。検証セットは、分類器が訓練データセットおよび開発データセットについて過剰適合(overfit)しなかったこと、および、良好な性能で実際に使用できることを確認するために、使用することができる。最終的なタスクは、選択されたモデルを使用して、新しい候補IOCを、真または偽のIOCとして分類することである。真のIOCは、次いで、ヒューリスティック分類器の結果と同様に、悪意のある活動をブロックするように、セキュリティプラットフォーム122によって提供される異なるサービスに含めることができる。
【0081】
様々な実施形態において、自動IOC抽出システム300は、また、自動ソース発見モジュール320も含んでいる。それは、シードソース322の手動でキュレートされたセットおよびオンライン情報を活用して、新しいソースを自動的に発見する。ソース発見モジュール320は、これを2つのステップで達成する。第1に、セキュリティに関連するソースが、積極的に含まれる。第2に、貴重な情報をもたらさないソースが除去される。異なる種類のソースに対して、異なる技法を利用することができる。ブログの場合には、例えば、検索エンジンを使用してセキュリティブログを見つけることができ、そして、次いで、データベース302を検索して、ソースが(シードから開始して)これらのブログにリンクした頻度を決定することができる。複数のソースが所与のブログにリンクされている場合には、それをソースのリストに含めることができる。Twitterの場合、シードソースが後に続くユーザアカウント(例えば、セキュリティ研究者、セキュリティ会社、等のアカウント)を識別し、そして、含めることができる(例えば、最大数のソースが後に続くユーザアカウント、シードアカウントの閾値数が後に続くユーザアカウント、等)。残念ながら、多くのソースを積極的に含むことは、時間の経過と共に、IOCを収集するには非効率的なシステムにつながり得る。この問題に対処する1つの方法は、ソース評価を周期的に実行することである。ソースが、実行可能なIOCを最近提供していないと判定された場合に、そのソースは除去され得る。ソースは、後に続く自動的な発見を通じて、後で(適用可能な場合)自動的に、システム300に追加して戻すことができる。
【0082】
B.例示的な処理
【0083】
図4は、実行可能な危殆化のインジケータ(例えば、プロダクションセキュリティ施行システムに提供され、そして、危害を防止するために使用され得るIOC)を生成するためのプロセスの実施形態を示している。様々な実施形態において、プロセス400は、セキュリティプラットフォーム122によって、そして、具体的には自動IOC抽出システム300によって実行される。プロセス400は、危殆化のインジケータ(IOC)の潜在的なソースのセットが受信されるときに、402において開始する。一つの例として、ターゲットセレクタ306は、402において潜在的なソースのセットを受信する。404において、潜在的なソースのうち少なくとも1つから1つ以上の候補IOCが抽出される。一つの例として、ウェブクローラ308およびテキスト/IOC抽出器310は、404において、候補IOCのセットを集合的に抽出する。406において、実行可能なIOCが自動的に識別される。一つの例として、そうした識別は、ヒューリスティック分類器316及び/又は機械学習分類器318によって、406において、実行され得る。最終的に、408において、実行可能なIOCがセキュリティ実施サービスに提供される。一つの例として、実行可能なIOCは、自動IOC抽出システム300によってURL分類サービス276に提供される。別の例として、実行可能なIOCは、自動IOC抽出システム300によってデータアプライアンス102に提供される(例えば、セキュリティプラットフォーム122によって提供されるサブスクリプションサービスを介する)。上述の様々な修復技術(例えば、クライアント104がドメインと通信するのを防止すること、クライアント106がドメインと通信したと判定された場合にクライアント106を隔離すること、等)は、IOCに基づいて行うことができる。
【0084】
1.ブログ投稿の例
【0085】
シードソース322に含まれる1つのソースが「マルウェアバスター(“Malware Busters”)」と呼ばれるブログであると仮定する。ソースのためのファイル(シードファイル)は、ブログの名前、および、ブログのメインページへのURL「www.malwarebusters.com」を含んでいる。ターゲットセレクタ306は、呼び出されると、シードファイルをロードし、そして、ブログの名前を有するメインページのURLをデータベース302に保存する。各ソースについて2つのリストが維持される。「訪問したURL(“visited URL”)」および「訪問先URL(“URL to visit”)」である。最初に、「訪問先URL」は、メインページ(www.malwarebusters.com)への単一のリンクを含んでいる。そして、最初に、「訪問先URL」リストは空であり、そして、同じブログ投稿が複数回訪問されないことを確実にするために維持される。例外は、ブログのメインページであり、それは、定期的に(例えば、毎日)再訪問される。
【0086】
次に、複数のウェブクローラ308が、並列に「訪問先URL」リストからURLを検索し始める。この例では、www.malwarebusters.comから開始して、ブログのメインページをダウンロードし、そして、ブログ投稿を参照する全てのURLを「訪問先URL」リストに追加する。彼らは、毎日の上限に達するまで、これらのURLを訪問し続ける。クロールされたページの1つが、銀行「レインボーバンク(“Rainbow Bank”)」をターゲットとする、フィッシングキャンペーンに関する投稿であると仮定する。このページは、http://malwarebusters.com/posts/rainbowphishing.htmlに置かれている。ページからのユーザ可視テキストの部分の一つの例が
図5Aに示されている。ページ抜粋について応するソースコードが
図5Bに示されている。ウェブクローラ308は、ページを訪問すると、最初に、生のHTMLファイルを、HTML、JavaScript、およびCSSコードと共に保存する。また、HTMLを処理して、そこからのリンクを取得もする。2つのケースだけにおける「https://pastebin.com/cWKZ98xx」といったものであり、URLがブログサイトの一部であるか、または、ドメイン部分が「pastebin.com」といった既定のリスト内にある場合である。取得されたリンクは「訪問先URL」リストに追加される。
【0087】
テキスト/IOC抽出器310は、
図5Aに見られるように、ユーザ可視(user-visible)テキストを抽出することによって開始する。次いで、NLPを使用して、テキストを文へと分割する。クローラは、生のHTMLファイルを保存するが、このモジュールは、ユーザ可視テキストおよび抽出された文をデータベース302に保存する。次に、正規表現(regular expression)を使用して、抽出器310は、デファンギング(defanging)を探索し、そして、デファング候補IOCを逆にして、文内のどこでどのような種類のデファンギングが行われたかを記録する。(この例では、「ralnbowbank[.]com」が「ralnbowbank.com」へ変換される。)デファンギングの後で、候補IOCを探し、そして、それらを抽出するために別のセットの正規表現が使用され、文におけるそれらの位置に注目する。データベース302に保存する前に、それらが有効なドメイン名、URL、IP、及び/又は、電子メールアドレスであるか否かを確認するためにチェックが行われる。このステップの後で、出力は以下の表と同様に見える。
【表1】
【0088】
次に、DNSクライアントモジュール312は、見つかったドメインのIPアドレスおよびネームサーバレコードをクエリする。インテリジェンス収集モジュール314は、ralnbowbank.comが、4つのブロックリスト上に存在し、一方で、rainb0wbank.comは、がどのブロックリストにも存在しないことを見つける。両方のドメインが比較的新しいことも、また、見つける。
【0089】
ヒューリスティック分類器316が、次いで、候補IOCを処理する。例えば、ヒューリスティック分類器316は、ralnbowbank.comを真のIOCとして分類する。複数のブロックリスト上に出現し、デファングされ、単語「タイポスクワッティング(“typosquatting”)」と共に出現し、そして、ドメイン名だからである。従って、ralnbowbank.comは、ユーザによって訪問されたとき、または、マシンによって接続されたときに、ブロックされるべきセキュリティサービスに含まれる。候補IOCである、rainbowbank.com、pastebin.com、および、https://pastebin.com/cWKZ98xxはホワイトリスト内にある。従って、それらは偽のIOCと見なされる。そうしたホワイトリスト内に含まれ得るドメインの別のサンプルは、「docs.google.com」である。多くの良性文書は、いくつかの悪意のある文書も同様に、docs.google.comを介して到達可能である。ホワイトリストに「docs.google.com」を含めることによって、システム300は、docs.google.comを介して到達可能な全ての文書をブロックするであろう、実行可能なIOCを不注意に生成することを防止することができる(docs.google.com/kj235kjsdf78235kasrfhといった、許容可能で、実行可能なIOCであり得る、特定の文書またはユーザアカウントを指し示す、より粒度の細かいURLとは対照的に)。
【0090】
rainb0wbank.comの場合に、ヒューリスティック分類器316は、それが真のIOCであったか、または、偽のIOCであったかを判定することができないと仮定する。従って、ヒューリスティック分類器は、さらなる分析のために(例えば、機械学習分類器318、及び/又は、他の検出器(例えば、フィッシング検出器)に対して)それを送信する。
【0091】
機械学習分類器318では、rainb0wbank.comに関して、複数の種類の特徴が抽出される。いくつかの例示的な特徴は、コンテキスト文におけるテキストに対するIOCの比率、デファングされたIOCの数、IOCに言及し、かつ、防御するブログの数、および、ブログ投稿全体におけるIOCの数を含む。機械学習分類器318は、malwarebusters.comで最もデファングされたIOCが真のIOCであり、そして、rainb0wbank.comが、また、別のサイト(tocatchaphisher.xyz)でも言及されたことを見つけると、それを真のIOCであると分類する。
【0092】
2.Twitterの例
【0093】
この例においては、既知のセキュリティ研究者のTwitterアカウントである、Alice(@sec_alice123)が、自動IOC抽出システム300のソースとして含まれていると仮定する。アリスは、以下のメッセージをツイートする。「我々は、危殆化されたサイト上でホストされる、いくつかの非常にトリッキーなランサムウェアを見つけ。私は、関連するIOCの写真を添付した。それらは、ソーシャルエンジニアリングキャンペーンの一部であるように思われる。ユーザがそれらをダウンロードすると、ドカーン!それらのファイルが暗号化される。」ツイートには、以下のデファングされたURLを含む画像が含まれている。
hXXps[:]//antivirus.victim[.]site/download/me/clean-your-pc.exe?id=dr524lkr0dl、および、
hXXp[:]//virus-cleaner.victim2[.]site/remove/malware/removal.exe?ref=m37x8l2la.
【0094】
IOCを抽出する処理は、上述した例と同様である。しかしながら、今回は、光学文字認識(OCR)を使用してテキストが抽出され得るように、添付された写真が別個にダウンロードされる必要がある。これらの2つのURLの場合、機械学習分類器318は、それらがデファングされており、URLが複雑であり(いくつかのコンポーネントを有し、かつ、比較的に長い)、写真(picture)から抽出されたテキストにおいてIOCに対するテキストの比率が高いので、それらが真のIOCであることを発見し得る。
【0095】
前述の実施形態は、理解を明確にするために、いくらか詳細に説明されているが、本発明は、提供された詳細に限定されるものではない。本発明を実施する多くの代替方法が存在している。開示された実施形態は例示的なものであり、かつ、限定的なものではない。
【国際調査報告】