(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-13
(54)【発明の名称】セキュリティおよびパフォーマンスを改善するための予測DNSキャッシュ
(51)【国際特許分類】
H04L 61/4511 20220101AFI20241106BHJP
G06F 21/55 20130101ALI20241106BHJP
【FI】
H04L61/4511
G06F21/55
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024524608
(86)(22)【出願日】2022-10-19
(85)【翻訳文提出日】2024-05-28
(86)【国際出願番号】 US2022047183
(87)【国際公開番号】W WO2023076090
(87)【国際公開日】2023-05-04
(32)【優先日】2021-10-26
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】517392861
【氏名又は名称】パロ アルト ネットワークス,インコーポレイテッド
【氏名又は名称原語表記】Palo Alto Networks,Inc.
【住所又は居所原語表記】3000 Tannery Way,Santa Clara,California 95054,United States of America
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100229448
【氏名又は名称】中槇 利明
(72)【発明者】
【氏名】リウ,ダイピン
(72)【発明者】
【氏名】ワン,ジュン
(72)【発明者】
【氏名】シィー,ウェイ
(57)【要約】
本出願は、DNSクエリに対する応答を予測するための方法、システム、および、コンピュータシステムを開示する。本方法は、クライアントデバイスから、サブドメイン部分およびルートドメイン部分を含むDNSクエリを受信するステップと、予測キャッシュからターゲットアドレス情報を取得するように決定したことに応答して、予測キャッシュから、DNSに対応しているターゲットアドレス情報を取得するか否かを決定するステップと、予測キャッシュから、ターゲットアドレス情報を取得するステップと、ターゲットアドレス情報をクライアントデバイスに対して提供するステップと、を含む。
【特許請求の範囲】
【請求項1】
システムであって、1つ以上のプロセッサ、および、メモリを備えており、
前記1つ以上のプロセッサは、
DNSクエリを受信し、
予測キャッシュから、前記DNSクエリに対応するターゲットアドレス情報を取得するか否かを決定し、
前記予測キャッシュから、前記ターゲットアドレス情報を取得することを決定したことに応答して、前記ターゲットアドレス情報を前記予測キャッシュから取得し、かつ、
前記ターゲットアドレス情報を、クライアントデバイスに提供する、
ように構成されており、
前記メモリは、
前記プロセッサに結合されており、かつ、前記プロセッサに命令を提供する、
ように構成されている、
システム。
【請求項2】
前記システムは、前記予測キャッシュが前記ターゲットアドレス情報を現在保管していないと決定したことに応答して、予測ターゲットアドレス情報を決定するために機械学習モデルを使用し、かつ、
前記予測ターゲットアドレス情報は、前記クライアントデバイスに対して提供される、
請求項1に記載のシステム。
【請求項3】
前記機械学習モデルは、前記DNSクエリに関連付けられたドメインに対応している権威サーバに対して前記DNSクエリを送信することなく、前記ターゲットアドレス情報を決定する、
請求項2に記載のシステム。
【請求項4】
予測ターゲットアドレス情報を決定するために前記機械学習モデルを使用することは、
前記DNSクエリに関連付けられた前記ドメインに関するトップレベルドメイン情報を取得すること、および、
前記DNSクエリに関連付けられた前記ドメインに関係する1つ以上のサブレベルドメインのアドレス情報を生成すること、を含み、
少なくとも部分的に前記機械学習モデルに基づいて、1つ以上のサブレベルドメインについてのアドレス情報が推定される、
請求項3に記載のシステム。
【請求項5】
前記トップレベルドメイン情報は、少なくとも部分的に、インターネットリソースの登録ユーザまたは譲受人を保管するデータベースをクエリすることに基づいて、取得される、
請求項4に記載のシステム。
【請求項6】
前記1つ以上のプロセッサは、さらに、
前記予測キャッシュが前記ターゲットアドレス情報を現在保管していないと決定したことに応答して、DNSクエリをブロックする、
ように構成されている、請求項1に記載のシステム。
【請求項7】
前記DNSクエリは、少なくとも部分的に、管理ユーザによって設定された構成に基づいて、ブロックされる、
請求項6に記載のシステム。
【請求項8】
前記予測キャッシュは、少なくとも部分的に、対応するトップレベルドメイン情報に基づいて推定される、ターゲットアドレスのセットを保管している、
請求項1に記載のシステム。
【請求項9】
前記予測キャッシュは、機械学習プロセスを使用して生成される、
請求項1に記載のシステム。
【請求項10】
前記予測キャッシュから、前記DNSクエリに対応するターゲットアドレス情報を取得するか否かを決定することは、
前記DNSクエリに関連付けられたドメインについて、クエリされるクエリ頻度を決定すること、および、
前記クエリ頻度を頻度閾値と比較すること、
を含む、請求項1に記載のシステム。
【請求項11】
前記1つ以上のプロセッサは、さらに、
前記クエリ頻度が前記頻度閾値を満たすと決定したことに応答して、前記ターゲットアドレス情報について、対応する権威DNSサーバにクエリする、
ように構成されている、請求項10に記載のシステム。
【請求項12】
前記1つ以上のプロセッサは、さらに、
前記クエリ頻度が前記頻度閾値を満たさないと決定したことに応答して、前記予測キャッシュから、前記ターゲットアドレス情報を取得することを決定する、
ように構成されている、請求項10に記載のシステム。
【請求項13】
前記ターゲットアドレス情報が、前記予測キャッシュから取得される場合、
前記DNSクエリは、前記DNSクエリに関連付けられたドメインに対応している権威サーバに対して通信されない、
請求項1に記載のシステム。
【請求項14】
前記予測キャッシュから、前記DNSクエリに対応しているターゲットアドレス情報を取得するか否かを決定することは、
前記DNSクエリが疑わしいトラフィックに対応するか否かを決定すること、および、
前記DNSクエリが疑わしいトラフィックに対応すると決定したことに応答して、前記予測キャッシュから、前記ターゲットアドレス情報が取得されるべきであると決定することと、
を含む、請求項1に記載のシステム。
【請求項15】
前記DNSクエリが疑わしいトラフィックに対応するか否かを決定することは、
前記DNSクエリを、疑わしいトラフィック検出器に対して提供すること、
を含む、請求項14に記載のシステム。
【請求項16】
前記DNSクエリは、対応するDNSが信頼できるか、または、信頼できないかに少なくとも部分的に基づいて、疑わしいトラフィックに対応していると決定される、
請求項14に記載のシステム。
【請求項17】
前記予測キャッシュは、DNSリゾルバに含まれている、
請求項1に記載のシステム。
【請求項18】
方法であって、
クライアントデバイスから、サブドメイン部分およびルートドメイン部分を含む、DNSクエリを受信するステップと、
予測キャッシュから、前記DNSに対応しているターゲットアドレス情報を取得するか否かを決定するステップと、
前記予測キャッシュから前記ターゲットアドレス情報を取得するように決定したことに応答して、前記予測キャッシュから、前記ターゲットアドレス情報を取得するステップと、
前記ターゲットアドレス情報を前記クライアントデバイスに対して提供するステップと、
を含む、方法。
【請求項19】
非一時的コンピュータ可読媒体に保管されたコンピュータプログラムであって、コンピュータ命令を含み、
前記命令が実行されると、コンピュータに、
クライアントデバイスから、サブドメイン部分およびルートドメイン部分を含む、DNSクエリを受信するステップと、
予測キャッシュから、前記DNSに対応しているターゲットアドレス情報を取得するか否かを決定するステップと、
前記予測キャッシュから前記ターゲットアドレス情報を取得するように決定したことに応答して、前記予測キャッシュから、前記ターゲットアドレス情報を取得するステップと、
前記ターゲットアドレス情報を前記クライアントデバイスに対して提供するステップと、
を実施させる、コンピュータプログラム。
【請求項20】
システムであって、1つ以上のプロセッサ、および、メモリを備えており、
前記1つ以上のプロセッサは、
クライアントデバイスから、サブドメイン部分およびルートドメイン部分を含むDNSクエリのドメインのセットについてのトップレベルドメイン情報のセットを取得し、
機械学習プロセスを使用して、前記トップレベルドメイン情報のセットに含まれる、1つ以上のサブドメインと1つ以上のトップレベルドメインとの間の関係のセットを分析し、かつ、
1つ以上のサブドメインと1つ以上のトップレベルドメインとの間の関係の前記セットを使用して、DNSクエリについてターゲットアドレス情報を予測するための予測する、
ように構成されており、
前記メモリは、
前記プロセッサに結合されており、かつ、前記プロセッサに命令を提供する、
ように構成されている、
システム。
【発明の詳細な説明】
【背景技術】
【0001】
悪意のある個人は、様々な方法でコンピュータシステムを危険にさらす(compromise)ように試みる。一つの例として、そうした個人は、悪意のあるソフトウェア(「マルウェア(“malware”)」)を電子メール添付ファイルに埋め込み、または、他の形で含み、そして、疑うことを知らないユーザに対してマルウェアを送信し、もしくは、送信させ得る。実行されると、マルウェアは犠牲者のコンピュータを危険にさらす。いくつかのタイプのマルウェアは、遠隔ホストと通信するように、危険にさらされたコンピュータに命令する。例えば、マルウェアは、危険にさらされたコンピュータを「ボットネット(“botnet”)」における「ボット(“bot”)」へと変えることができ、悪意のある個人の制御下でコマンドおよび制御(C&C)サーバから命令を受信し、かつ/あるいは、データを報告する。マルウェアによって引き起こされる損害を軽減する1つのアプローチは、セキュリティ会社(または他の適切なエンティティ)が、マルウェアを識別し、そして、それがエンドユーザコンピュータに到達し/実行されるのを防止するように試みることである。別のアプローチは、危険にさらされたコンピュータがC&Cサーバと通信するのを防止しようとすることである。残念ながら、マルウェアの作者は、彼らのソフトウェアの仕組みを難読化するために、ますます精巧な技術を使用している。一つの例として、いくつかのタイプのマルウェアは、データを窃盗(exfiltrate)するために、ドメインネームシステム(DNS)クエリを使用する。従って、マルウェアを検出し、かつ、その害を防止するための改善された技法に対する必要性が依然として存在している。
【図面の簡単な説明】
【0002】
本発明の様々な実施形態が、以下の詳細な説明および添付の図面において開示されている。
【
図1】
図1は、マルウェアが検出されるか、または、その疑いがあり、かつ、その害が低減される環境に係る一つの例を示している。
【
図2】
図2は、本出願の様々な実施形態に従った、予測アドレスを提供するシステムに係るブロック図である。
【
図3】
図3は、ドメインネームシステム(DNS)クエリに応答することに関連して予測キャッシュを使用するためのシステムに係る図である。
【
図4】
図4は、DNSクエリに応答することに関連して予測キャッシュを使用することを決定するためのシステムに係る図である。
【
図5】
図5は、DNSクエリに応答するためのシステムに係る図である。
【
図6】
図6は、DNSクエリに応答することに関連して予測キャッシュを使用するための方法に係るフローチャートである。
【
図7】
図7は、DNSクエリに応答することに関連して予測キャッシュを使用するための方法に係るフローチャートである。
【
図8】
図8は、DNSクエリに対応するターゲットアドレス情報を決定するための方法に係るフローチャートである。
【
図9】
図9は、ドメインに関連付けられたレコード構造を予測するための機械学習モデルを決定するための方法に係るフローチャートである。
【発明を実施するための形態】
【0003】
本発明は、プロセス、装置、システム、組成物、コンピュータ可読保管媒体上に具現化されたコンピュータプログラム製品、及び/又は、メモリ上に保管された命令、及び/又は、プロセッサに結合されたメモリにより保管され、かつ/あるいは、提供される命令を実行するように構成されたプロセッサといった、プロセッサを含む、多数の方法で実施することができる。本明細書において、これらの実装、または、本発明がとり得る任意の他の形態は、技法(technique)と称され得る。一般的に、開示されたプロセスのステップの順序は、本発明の範囲内で変更され得る。特に明記しない限り、タスクを実行するように構成されているものとして説明されるプロセッサまたはメモリといったコンポーネントは、所与の時間にタスクを実行するように一時的に構成される汎用コンポーネント、または、タスクを実行するように製造される特定のコンポーネントとして実装され得る。本明細書で使用されるように、「プロセッサ(“processor”)」という用語は、コンピュータプログラム命令といった、データを処理するように構成された1つ以上のデバイス、回路、及び/又は、処理コアを指す。
【0004】
本発明の1つ以上の実施形態の詳細な説明が、本発明の原理を示す添付の図面とともに、以下で提供されている。本発明は、そうした実施形態に関連して説明されるが、本発明は、いかなる実施形態にも限定されるものではない。本発明の範囲は、請求項によってのみ限定されるものであり、かつ、本発明は、多数の代替、修正、および均等物を包含する。本発明の完全な理解を提供するために、以下の説明において多数の具体的な詳細が記載されている。これらの詳細は、例示の目的で提供されるものであり、そして、本発明は、これらの具体的な詳細の一部または全部を伴わずに、特許請求の範囲に従って実施され得る。明確にするために、本発明に関連する技術分野で知られている技術的材料は、本発明が不必要に不明瞭にならないように、詳細には説明されていない。
【0005】
ドメインネームシステム(DNS)クエリに応答してターゲットアドレス情報を予測するためのシステムが開示される。システムは、1つ以上のプロセッサ、および、メモリを備える。1つ以上のプロセッサは、DNSクエリを受信し、予測キャッシュからDNSクエリに対応するターゲットアドレス情報を取得するか否かを決定し、予測キャッシュからターゲットアドレス情報を取得するように決定したことに応答して、予測キャッシュからターゲットアドレス情報を取得し、そして、ターゲットアドレス情報をクライアントデバイスに提供するように構成されている。
【0006】
DNSトンネリングは、大部分のネットワークが一般的にDNSトラフィックを許可し、かつ、DNSトラフィックに対するセキュアな制御を提供しないので、データ窃盗(data exfiltration)の攻撃者にとって人気がある。大部分のDNSトラフィックが一般的に良性であり、かつ、DNSトラフィックのトラフィックパターンが多様であるため、DNSトラフィックの制御は困難である。例えば、システムは、一般的に、各々が少量の悪意のある情報(例えば、1バイトのオーダー)を含むが、全体としては多くの悪意のある情報を提供する、多くのクエリの使用といった、悪意のある低速トンネリングを防止するためのメカニズムを提供していない。悪意のあるクライアント(例えば、感染したクライアント)からのクエリは、一般的に、エンコーディングされたストリームで通信される。さらに、クエリに応答するアドレス情報は、しばしば、レガシーキャッシュに保管されず、そして、レガシーキャッシュがそうしたアドレス情報を保管していないという決定に応答して、データは、権威ネームサーバ(authoritative nameserver)に転送される。悪意のあるトラフィックが権威ネームサーバに転送されるようにすることは、一般的に、攻撃の背後にいる悪意のある当事者の意図である。逆に、DNSクエリを通信する良性のクライアント(benign client)は、応答情報がどのように生成されるか、または、そうした情報がどこから取得されるかを考慮しない。むしろ、良性のクライアントは、正確なアドレス情報(例えば、IPアドレス)を含む適時の応答を単に望むだけである。様々な実施形態は、DNSクエリに応答して情報を推定/予測して、DNSクエリのアドレス情報を解決するために、権威ネームサーバに対するクエリの必要性を制限または排除する、予測キャッシュを実装する。予測キャッシュの使用は、従って、悪意のあるトラフィックが権威ネームサーバに転送されることを防止し、そして、良性のDNSクエリに応答して適時かつ正確な情報を提供する。
【0007】
様々な実施形態に従って、DNSクエリに対する応答を決定するためのシステム及び/又は方法が提供される。いくつかの実施形態において、システムは、予測キャッシュを使用して、受信したDNSクエリに対する応答を決定する。例えば、システムは、DNSクエリに含まれるドメインの権威ネームサーバ(例えば、aDNS)にアクセスする(例えば、クエリする)ことなく、ターゲットアドレス情報(例えば、DNSクエリに応答すると推定されるアドレス情報)を決定する。レガシーキャッシュまたは権威ネームサーバへのクエリではなく、予測キャッシュを使用して、DNSクエリに対する応答が生成される(例えば、DNSクエリに応答するアドレス情報が推定される)という決定に応答して、予測キャッシュは、DNSクエリに対応するターゲットアドレス情報を決定する。いくつかの実施形態において、予測キャッシュは、予測アドレス情報(例えば、様々なドメインの予測サブドメイン)を保管している。いくつかの実施形態において、予測キャッシュは、DNS要求と同時に、ターゲットアドレス情報(例えば、DNSクエリに応答する予測アドレス情報)を決定する。例えば、予測キャッシュがDNSクエリに対する応答を生成することに関連して使用されるという決定に応答して、予測キャッシュは、DNSクエリに含まれるドメインに関連付けられた1つ以上のレコードを取得し、1つ以上のレコードをモデル(例えば、機械学習モデル)に提供し、そして、DNSクエリに対応するターゲットアドレス情報を取得する(例えば、決定する)。一つの例として、ターゲットアドレス情報は、DNSクエリに含まれる特定のドメインの推定アドレス情報を含んでいる。いくつかの実施形態において、ドメインに関連付けられた1つ以上のレコードは、DNSクエリに含まれるドメインのトップレベルドメインといった、特定のトップレベルドメインの複数のサブドメインに関するレコードである。
【0008】
いくつかの実施形態において、システムは、DNSクエリに含まれるドメインに対応するトップレベルドメインに関連付けられたドメインのセットを決定することに少なくとも部分的に基づいて、DNSクエリに含まれるドメインに関連付けられた1つ以上のレコードを取得する。一つの例として、トップレベルドメインに関連付けられたドメインのセットを決定することは、特定のドメインに語彙的(lexically)に類似するドメインのセットを決定することを含む。例えば、特定のドメインが「abc.root.com」である場合に、ドメインのセットは、「dbc.root.com」、「aec.root.com」、等を含むと決定され得る。ドメインのセットの決定に応答して、システムは、ドメインのセットに関するアドレス情報について、権威ネームサーバにクエリ(query)する。一つの例として、ドメインは、類似の程度(degree of similarity)を示す値の決定(例えば、計算)、および、類似の程度を示す値が既定の類似閾値よりも大きいという決定に基づいて、特定のドメインに類似(例えば、語彙的に類似)していると見なされる。ドメインのセットに関連するアドレス情報を(例えば、aDNSから)受信することに応答して、システムは、そうしたアドレス情報を使用して、DNSクエリに含まれるドメインについてのターゲットアドレス情報を予測する。例えば、システムは、ドメインのセットについてのアドレス情報をモデル(例えば、機械学習モデル)に提供し、そして、そのモデルを使用して、DNSクエリに応答するアドレス情報を推定する。一つの例として、モデルは、ドメインのセット及び/又はトレーニングセットの間のアドレス情報の関係及び/又はパターンを使用して、DNSクエリに応答するアドレス情報を推定する。
【0009】
様々な実施形態は、DNSクエリが疑わしいトラフィックに対応するか否か(例えば、DNSクエリが疑わしいか、または、DNSクエリが受信されるデバイスが疑わしい)の決定に少なくとも部分的に基づいて、DNSクエリに関連して予測キャッシュを使用するか否かを決定する。いくつかの実施形態において、システムは、DNSクエリが疑わしいか否かを検出する(例えば、決定する)ために、検出器モジュール(detector module)を使用する。例えば、検出器モジュールは、トラフィックが疑わしいか否かのリアルタイム検出を実行する。トラフィックを分析すること、及び/又は、トラフィックが疑わしいか否かを決定することに関連して使用される、システム、方法、及び/又は、デバイスの例は、米国特許出願公開第2021/0266293号に対応する米国特許出願第16/799,655号において提供されている。米国特許出願第16/799,655号は、その全体が、参照により組み込まれている。様々な実施形態に従って、トラフィック(例えば、DNSクエリ)が疑わしいトラフィックに対応するという決定に応答して、システムは、ターゲットアドレス情報(DNSクエリに応答するアドレス情報)を決定することに関連して予測キャッシュを使用することを決定する。逆に、トラフィックが疑わしいトラフィックに対応しないという決定に応答して、システムは、レガシーキャッシュを使用するか、または、対応するターゲットアドレス情報について、適用可能な権威をクエリすることを決定する。いくつかの実施形態においては、検出器モジュールが、構成可能である。例えば、管理者は、所望の感度(sensitivity)に基づいて、または、望ましくないレベルのトラフィックが不適切に疑わしいトラフィックとみなされている(例えば、疑わしいと決定された真のトラフィックの割合がトラフィック閾値を超える)という決定に応答して、検出器モジュールを構成することができる。
【0010】
様々な実施形態に従って、システム及び/又は方法は、DNSクエリに応答してドメインの構造及び/又はターゲットアドレス情報を推定(例えば、予測)するようにモデル(例えば、機械学習モデル)を使用する。例えば、予測キャッシュは、ターゲットアドレス情報を決定することに関連して機械学習モデルを実装し得る。モデルは、様々な機械学習プロセスを使用してトレーニングすることができる。モデルのトレーニングに関連して実装され得る機械学習プロセスの例は、ランダムフォレスト、線形回帰、サポートベクターマシン、単純ベイズ(naive Bayes)、ロジスティック回帰、K最近傍、決定木、勾配ブースト決定木、K平均クラスタリング、階層クラスタリング、ノイズを伴うアプリケーションの密度ベース空間クラスタリング(DBSCAN)クラスタリング、主成分分析、等を含んでいる。いくつかの実施形態において、ドメインについてのアドレス情報を推定することに関連して使用されるモデルは、トレーニングドメインのセットを使用してトレーニングされる。トレーニングドメインのセットは、事前設定され得る。例えば、トレーニングドメインのセットは、良性であると見なされる事前選択されたドメインのセット(例えば、google.com、等)を含み得る。様々な実施形態に従って、アドレス情報を推定するためにモデルを使用することは、DNSクエリに関連付けられたドメインのサブドメイン(例えば、クエリされている特定のドメインのトップレベルドメイン)のレコードを取得すること、トレーニングドメインのセットのレコード(例えば、トップレベルドメインおよび1つ以上のサブドメインのレコード)を取得すること、DNSクエリに含まれる特定のドメインに対して類似のドメインまたはサブドメインのリストについて対応する権威ネームサーバにクエリすること、および、DNSクエリに応答してアドレス情報を推定するためのモデルを生成するために(例えば、ターゲットアドレス情報を決定するために)機械学習プロセスを使用すること、を含む。いくつかの実施形態において、モデルは、リモートサーバ上で実装される。例えば、1つ以上のリモートサーバは、1つ以上の予測キャッシュをサービスする機械学習モデルを実装している。モデルがドメインのアドレス情報の推定値を生成するために使用されるという決定に応答して、予測キャッシュは、推定値(例えば、ドメインの予測されたアドレス情報)について(例えば、機械学習モデルが実装された)リモートサーバにクエリすることができる。
【0011】
予測キャッシュは、ネットワーク上の様々な位置で実装され得る。例えば、予測キャッシュは、DNSリゾルバ上に配置され得る。別の例として、予測キャッシュは、ファイアウォール上に配置される。別の例として、予測キャッシュは、DNSリゾルバにおいて提供されるサービスである(例えば、予測キャッシュは、ドメインの予測アドレス情報についてのDNSリゾルバからのクエリにサービスするリモートサーバ上に展開される)。
【0012】
システムは、DNSトラフィックに応答することに関連して、悪意のあるトラフィックが権威ネームサーバに送信されることを防止する(または、防止を改善する)ことによって、DNSトラフィックの処理(例えば、DNSトラフィックへの応答)を改善する。さらに、システムは、良性のDNSトラフィックに対して正確で、かつ、低レイテンシの応答を提供することができる。従って、システムは、悪意のあるトラフィックの拡散を防止し、一方で、同じレベルのサービス、または、より良好なレベルのサービスを本物(genuine)のトラフィックに提供する(例えば、予測キャッシュがDNSクエリのターゲット情報を保管する場合に、権威ネームサーバにクエリすることは必要とされない)。
【0013】
図1は、マルウェアが検出されるか、または、その疑いがあり、かつ、その害が低減される環境に係る一つの例を示している。示される例において、クライアントデバイス104-108は、企業ネットワーク110(「アクメ会社(“Acme Company”)」に属している)内に存在する、(それぞれに)ラップトップコンピュータ、デスクトップコンピュータ、および、タブレットである。データアプライアンス102は、クライアントデバイス104および106といった、クライアントデバイスと、企業ネットワーク110の外部の(例えば、外部ネットワーク118を介して到達可能な)ノードとの間の通信に関するポリシを実施するように構成されている。そうしたポリシの例は、トラフィックシェーピング、サービス品質(quality of service)、および、トラフィックのルーティングを管理するものを含んでいる。ポリシの他の例は、着信(及び/又は発信)電子メール添付ファイル、ウェブサイトコンテンツ、インスタントメッセージングプログラムを介して交換されるファイル、及び/又は、他のファイル転送における脅威についてスキャンを必要とするものといった、セキュリティポリシを含む。いくつかの実施形態において、データアプライアンス102は、また、企業ネットワーク110の中に留まるトラフィックに関してポリシを実施するようにも構成されている。
【0014】
データアプライアンス102は、リモートセキュリティプラットフォーム140と協働して動作するように構成され得る。セキュリティプラットフォーム140は、マルウェアサンプルに対して静的および動的分析を実行すること、および、サブスクリプションの一部としてのデータアプライアンス102といった、データアプライアンスに既知の悪意のあるファイルのシグネチャのリストを提供することを含む、様々なサービスを提供することができる。様々な実施形態において、分析の結果(および、アプリケーション、ドメイン、等に関する追加の情報)は、データベース160に保管されている。様々な実施形態において、セキュリティプラットフォーム140は、典型的なサーバクラスのオペレーティングシステム(例えば、Linux(登録商標))を実行している、1つ以上の専用の市販のハードウェアサーバ(例えば、マルチコアプロセッサ、32G+のRAM、ギガビットネットワークインターフェイスアダプタ、および、ハードドライブを有している)を備えている。セキュリティプラットフォーム140は、複数のそうしたサーバ、ソリッドステートドライブ、及び/又は、他の適用可能な高性能ハードウェアを含む、スケーラブルなインフラストラクチャにわたり実装され得る。セキュリティプラットフォーム140は、1つ以上の第三者によって提供されるコンポーネントを含む、いくつかの分散コンポーネントを備えることができる。例えば、セキュリティプラットフォーム140の一部または全ては、Amazon Elastic Compute Cloud(EC2)、及び/又は、Amazon Simple Storage Service(S3)を使用して実装され得る。さらに、データアプライアンス102と同様に、セキュリティプラットフォーム140が、データを保管すること、または、データを処理すること、といったタスクを実行するものとして言及されるときはいつでも、セキュリティプラットフォーム140のサブコンポーネントまたは複数のサブコンポーネントが(個別に、または、第三者コンポーネントと協働して)、そのタスクを実行するように協働し得ることが理解されるべきである。一つの例として、セキュリティプラットフォーム140は、1つ以上の仮想マシン(VM)サーバと協働して、静的/動的分析を任意的に実行することができる。仮想マシンサーバの一つの例は、VMware ESXi、Citrix XenServer、またはMicrosoft Hyper-Vといった、市販の仮想化ソフトウェアを実行する、市販のサーバクラスハードウェア(例えば、マルチコアプロセッサ、32+ギガバイトのRAM、および、1つ以上のギガビットネットワークインターフェイスアダプタ)を含む物理マシンである。いくつかの実施形態において、仮想マシンサーバは省略されている。さらに、仮想マシンサーバは、セキュリティプラットフォーム140を管理する、同じエンティティの制御下にあってよいが、また、第三者によって提供されてもよい。一つの例として、仮想マシンサーバは、EC2に依存することができ、セキュリティプラットフォーム140の残りの部分は、セキュリティプラットフォーム140のオペレータによって所有され、かつ、そのオペレータの制御下にある専用ハードウェアによって提供される。
【0015】
様々な実施形態に従って、セキュリティプラットフォーム140は、DNSトンネリング検出器138及び/又は予測キャッシュ170を備えている。いくつかの実施形態において、予測キャッシュは、検出器モジュール172、予測エンジン174、機械学習(ML)モデル176、及び/又は、キャッシュ178のうちの1つ以上を備えている。
【0016】
検出器モジュール172は、DNSクエリに関連して予測キャッシュを使用するか否かを決定することに関連して使用される。いくつかの実施形態において、検出器モジュールは、DNSクエリが疑わしいトラフィックに対応するか否かの決定に少なくとも部分的に基づいて、DNSクエリに応答して予測アドレスを取得するか否かを決定する。例として、検出器モジュール172は、DNSクエリが疑わしいトラフィックに対応するか否かを決定することに関連して、DNSトンネリング検出器から取得された情報を使用する。いくつかの実施形態において、検出器モジュール172は、DNSトラフィックに対応するレイテンシ(latency)設定に少なくとも部分的に基づいて、DNSクエリに応答して予測アドレスを取得するか否かを決定する。レイテンシ設定は、DNSトラフィックが処理されるユーザまたは組織のプロファイルに少なくとも部分的に基づいて構成可能であり得る(例えば、顧客のレイテンシ設定は、顧客に提供され/顧客と契約されるサービスのレベルに少なくとも部分的に基づいて設定され得る)。DNSクエリに応答するためのレイテンシが低い実装において、予測キャッシュは、レガシーキャッシュがターゲットアドレス情報を保管していないという決定に応答して、DNSクエリに応答する予測アドレス(例えば、ターゲットアドレス情報)を取得するように決定することができる。レガシーキャッシュがターゲットアドレス情報を保管していないと決定したことに応答して、検出器モジュールは、ターゲットアドレス情報が以前に決定された予測アドレスであったか、かつ/あるいは、予測キャッシュ(例えば、キャッシュ178)に保管されていたか否かを決定する。ターゲットアドレス情報が以前に決定されたものではなく、かつ/あるいは、予測キャッシュに保管されたものではないと決定したことに応答して、検出器モジュール172は、(例えば、機械学習モデルを使用して)DNSクエリに応答してアドレスを予測することに基づいて、ターゲットアドレス情報を取得するように決定する。例えば、検出器モジュール172は、DNSクエリに応答してアドレスを予測するように、予測エンジン174に要求する。逆に、ターゲットアドレス情報が予測キャッシュによって以前に決定されており、かつ/あるいは、予測キャッシュに保管されていると決定したことに応答して、以前に決定された予測アドレスがターゲットアドレス情報として使用される。
【0017】
予測エンジン174は、DNSクエリに応答するターゲットアドレス情報といったドメインに対応するアドレス情報を予測するために使用される。いくつかの実施形態において、予測エンジン174は、ドメインに対応するアドレス情報を正確に予測するために、モデル(例えば、機械学習モデル)を使用する。例えば、予測エンジンは、ドメインに対応するターゲットアドレス情報を取得するために、機械学習モデル176に対してクエリを送信する。いくつかの実施形態において、機械学習モデル176に対するクエリは、DNSクエリに関連付けられたドメイン(例えば、トップレベルドメイン)の指示(indication)、要求されたドメイン(例えば、特定のサブドメイン)の指示、DNSクエリに対応するトップレベルドメインに関連付けられたドメインのセット、及び/又は、トレーニングドメインのセットのうちの1つ以上を含む。いくつかの実装において、機械学習モデル176は事前にトレーニングされており、そして、予測174は、ターゲットアドレス情報についてのクエリと同時に、機械学習モデル176に対してトレーニングドメインのセットを提供する必要はない。
【0018】
機械学習モデル176は、モデルに少なくとも部分的に基づいて、特定のドメインに対応するアドレス情報を予測する。一つの例として、モデルは、事前に保管され、かつ/あるいは、事前にトレーニングされる。モデルは、様々な機械学習プロセスを使用してトレーニングされ得る。モデルのトレーニングに関連して実装され得る機械学習プロセスの例は、ランダムフォレスト、線形回帰、サポートベクターマシン、単純ベイズ、ロジスティック回帰、K最近傍、決定木、勾配ブースト決定木、K平均クラスタリング、階層クラスタリング、ノイズを伴うアプリケーションの密度ベースの空間クラスタリング(DBSCAN)クラスタリング、主成分分析、等を含んでいる。様々な実施形態に従って、機械学習モデル176は、DNSクエリに応答するアドレス情報を推定するために、ドメインのセット及び/又はトレーニングセットの間のアドレス情報の関係及び/又はパターンを使用する。例えば、機械学習モデル176は、機械学習プロセスを使用して、1つ以上のサブドメインと、トップレベルドメイン情報のセットに含まれる1つ以上のトップレベルドメインとの間の関係のセットを分析し、そして、1つ以上のサブドメインと、1つ以上のトップレベルドメインとの間の関係のセットを使用して、DNSクエリのターゲットアドレス情報を予測するための予測モデルを生成する。DNSクエリのターゲットアドレス情報を予測することに応答して、予測ターゲットアドレス情報は、キャッシュ178といった予測キャッシュ170に保管される。
【0019】
キャッシュ178は、1つ以上のドメインのアドレス情報を保管する。いくつかの実施形態において、キャッシュ178は、レガシーキャッシュを含んでいる。例えば、レガシーキャッシュは、適用可能な権威ネームサーバに対する1つ以上のクエリに少なくとも部分的に基づいて、1つ以上のドメインのアドレス情報を保管する。いくつかの実施形態において、キャッシュ178は、予測アドレスのためのキャッシュを備えている。例えば、予測アドレスのキャッシュは、1つ以上のドメインの1つ以上の予測アドレス(例えば、1つ以上の以前のDNSクエリに応答する予測アドレス)を保管している。
【0020】
図1に戻って、(システム120を使用している)悪意のある個人がマルウェア130を作成したと仮定する。悪意のある個人は、クライアントデバイス104といった、クライアントデバイスが、マルウェア130のコピーを実行し、クライアントデバイスを危険にさらし、そして、クライアントデバイスをボットネット内のボットになるようにさせることを望んでいる。危険にさらされたクライアントデバイスは、次いでタスク(例えば、暗号通貨マイニング、または、サービス妨害攻撃への参加)を実行するように、かつ/あるいは、コマンドおよび制御(C&C)サーバ150といった、外部エンティティに情報(例えば、そうしたタスクに関連付けられた、機密の企業データの窃盗、等)を報告するように、並びに、適用可能な場合には、C&Cサーバ150から命令を受信するように命令され得る。
【0021】
マルウェア130は、(例えば、クライアントにC&Cサーバ150に電子メールを送信させることによって)危険にさらされたクライアントデバイスに、C&Cサーバ150と直接的に通信させるように試みることができるが、そうした明白な通信の試みは、疑わしい/有害なものとして(例えば、データアプライアンス102によって)フラグ付けされ、そして、ブロックされ得る。ますます、そうした直接的な通信を発生させる代わりに、マルウェアの作者は、本明細書でDNSトンネリングと呼ばれる技法を使用している。DNSは、paloaltonetworks.comといった、人に優しい(human-friendly)URLを、199.167.52.137といったマシンに優しいIPアドレスへと変換するプロトコルである。DNSトンネリングは、DNSプロトコルを利用して、クライアント-サーバモデルを介してマルウェアおよび他のデータをトンネリングする。攻撃の一つの例において、攻撃者は、badsite.comといった、ドメインを登録する。ドメインのネームサーバは、トンネリングマルウェアプログラムがインストールされている攻撃者のサーバを指し示す。攻撃者は、コンピュータを感染させる。DNS要求は、従来、セキュリティ機器の内外に移動することが許可されているので、感染したコンピュータは、DNSリゾルバに対して(例えば、kj32hkjqfeuo32ylhkjshdflu23.badsite.comに対して、ここで、クエリのサブ領域部分はC&Cサーバによる消費のために情報をエンコーディングする)クエリを送信することが許可される。DNSリゾルバは、IPアドレスに対する要求をルートおよびトップレベルドメインサーバに中継する、サーバである。DNSリゾルバは、トンネリングプログラムがインストールされている、攻撃者のC&Cサーバに対してクエリをルーティングする。今や、DNSリゾルバを通じて、被害者と攻撃者との間に接続が確立されている。このトンネルは、データを窃取するため、または、他の悪意のある目的のために使用され得る。
【0022】
DNSトンネリング攻撃を検出し、かつ、防止することは、様々な理由で困難である。第1の理由は、良性DNSクエリ情報(302、304)および悪性DNSクエリ情報(306-312)の両方を示している、
図3において説明されている。多くの正当なサービス(例えば、コンテンツ配信ネットワーク、ウェブホスティング会社、等)は、それらの正当なサービスの使用のサポートを助けるように情報をエンコーディングするために、ドメイン名のサブドメイン部分を正当に使用する。そうした正当なサービスによって使用されるエンコーディングパターンは、プロバイダ間で大きく異なり、そして、(
図3に示されるように)良性サブドメインは、悪意のあるサブドメインと視覚的に区別できないように見え得る。第2の理由は、既知の良性トレーニングセットデータおよび既知の悪意のあるトレーニングセットデータの両方の大きなコーパス(corpus)を有する他の領域(例えば、コンピュータ研究)とは異なり、DNSクエリのためのトレーニングセットデータは、ひどく偏っていることである(例えば、何百万もの良性ルートドメイン例および非常に少数の悪意のある例を有する)。そうした困難にもかかわらず、そして、本明細書に記載される技術を使用して、悪意のあるDNSトンネリングをリアルタイムで効率的に検出し、かつ、停止することができる。
【0023】
図1に示される環境は、3つのドメインネームシステム(DNS)サーバ(122-126)を含んでいる。図示されるように、DNSサーバ122は、(ネットワーク110内に配置されたコンピューティングアセットによる使用のために)ACMEの制御下にあり、一方で、DNSサーバ124は、公的にアクセス可能である(そして、また、ネットワーク110内に配置されたコンピューティングアセット、並びに、他のネットワーク(例えば、ネットワーク114および116)内に配置されたものといった、他のデバイスによっても使用され得る)。DNSサーバ126は、公的にアクセス可能であるが、C&Cサーバ150の悪意のあるオペレータの制御下にある。企業DNSサーバ122は、企業ドメイン名をIPアドレスへと解決するように構成されており、そして、さらに、適用可能なドメイン名を解決するために、1つ以上の外部DNSサーバ(例えば、DNSサーバ124および126)と通信するように構成されている。
【0024】
上述のように、正当なドメイン(例えば、サイト128として示されるwww.example.com)に接続するために、クライアントデバイス104といった、クライアントデバイスは、ドメインを対応するインターネットプロトコル(IP)アドレスへと解決する必要がある。そうした解決が行われ得る1つの方法は、クライアントデバイス104が、ドメインを解決するためにDNSサーバ122及び/又は124に対して要求を転送することである。要求されたドメイン名について有効なIPアドレスを受信したことに応答して、クライアントデバイス104は、IPアドレスを使用して、ウェブサイト128に接続することができる。同様に、悪意のあるC&Cサーバ150に接続するために、クライアントデバイス104は、ドメイン「kj32hkjqfeuo32ylhkjshdflu23.badsite.com」を対応するインターネットプロトコル(IP)アドレスに解決する必要がある。この例において、悪意のあるDNSサーバ126は、*.badsite.comに対して権限があり、そして、クライアントデバイス104の要求は、(例えば)解決のためにDNSサーバ126に転送され、最終的に、C&Cサーバ150がクライアントデバイス104からデータを受信することを可能にする。
【0025】
様々な実施形態において、データアプライアンス102は、クライアントデバイス(例えば、クライアントデバイス104-108)が悪意のあるDNSトンネリングに関与しようとしているか否かを決定することを容易にし、かつ/あるいは、悪意のあるDNSサーバに対する(例えば、クライアントデバイス104-108による)接続を防止するように構成されている、DNSモジュール134を含んでいる。DNSモジュール134は、(
図1に示されるように)アプライアンス102へと統合され、そして、また、種々の実施形態においては、独立型アプライアンスとして動作することもできる。そして、
図1に示される他の構成要素と同様に、DNSモジュール134は、アプライアンス102(または、セキュリティプラットフォーム140)を提供する同一のエンティティによって提供され、そして、また、第三者(例えば、アプライアンス102またはセキュリティプラットフォーム140のプロバイダとは異なるもの)によって提供されることもできる。さらに、悪意のあるDNSサーバへの接続を防止することに加えて、DNSモジュール134は、クライアントによって行われたトンネリング試行の個別化されたロギング(所与のクライアントが危険にさらされており、かつ、隔離されるべきであり、または、そうでなければ管理者によって調査されるべきであるという指示)といった、他のアクションをとることができる。
【0026】
様々な実施形態において、クライアントデバイス(例えば、クライアントデバイス104)がドメインを解決しようと試みるとき、DNSモジュール134は、セキュリティプラットフォーム140に対するクエリとしてドメインを使用する。このクエリは、ドメインの解決と同時に(例えば、DNSサーバ122、124、及び/又は126、並びに、セキュリティプラットフォーム140に対して送信される要求と同時に)実行され得る。一つの例として、DNSモジュール134は、REST APIを介して、セキュリティプラットフォーム140のフロントエンド142に対してクエリを(例えば、JSONフォーマットで)送信することができる。以下でより詳細に説明する処理を使用して、セキュリティプラットフォーム140は、クエリされたドメインが悪意のあるDNSトンネリングの試みを示すか否かを(例えば、DNSトンネリング検出器138を使用して)決定し、そして、結果(例えば、「悪意のあるDNSトンネリング」または「非トンネリング」)をDNSモジュール134に戻して提供する。
【0027】
様々な実施形態において、DNSトンネリング検出器138(セキュリティプラットフォーム140上、データアプライアンス102上、または、他の適切な位置/位置の組み合わせのいずれかで実装されている)は、悪意のあるDNSトンネリングを識別する際に二方面(two-pronged)アプローチを使用する。第1のアプローチは、ルートドメインについてDNSトラフィックのリアルタイムプロファイル(156)のセットを構築するために、(例えば、パイソンを使用して実装されている)異常検出器146を使用する。第2のアプローチは、署名生成およびマッチング(本明細書では、また、類似性検出とも呼ばれ、そして、例えば、Goを使用して実装されている)を使用する。2つのアプローチは相補的である。異常検出器は、以前には未知のトンネリングトラフィックを識別することができる、汎用検出器として機能する。しかしながら、異常検出器は、検出が行われる前に、複数のDNSクエリを観察する必要があり得る。第1のDNSトンネリングパケットをブロックするために、類似性検出器144は、異常検出器146を補完し、そして、検出されたトンネリングトラフィックからシグネチャを抽出する。シグネチャは、攻撃者が新しい悪意のあるトンネリングルートドメインを登録したが、検出されたルートドメインに類似するツール/マルウェアを使用して、そのように行われた、状況を識別するために使用され得る。
【0028】
データアプライアンス102が(例えば、DNSモジュール134から)DNSクエリを受信すると、異常検出および類似性検出の両方をそれぞれ実行するセキュリティプラットフォーム140に対して、それらを提供する。様々な実施形態において、(例えば、セキュリティプラットフォーム140によって受信されたクエリにおいて提供されるような)ドメインは、いずれかの検出器がドメインにフラグ付けする場合に、悪意のあるDNSトンネリングルートドメインとして分類される。
【0029】
DNSトンネリング検出器138は、(データが受信される)アプライアンスごとに、(ドメインプロファイル156として
図1では集合的に示される)それらのルートドメインに関してグループ化された、完全に指定されたドメイン名(fully qualified domain names、FQDN)のセットを維持する。(ルートドメインによるグループ化は、本明細書では一般的に説明されるが、本明細書で説明される技法は、また、任意のレベルのドメインに拡張することもできることが理解されるべきである。)様々な実施形態において、所与のドメインについての受信されたクエリに関する情報は、固定された時間量(例えば、10分のスライディング時間ウィンドウ)について、プロファイル内に持続される。
【0030】
一つの例として、様々なfoo.comサイトについてデータアプライアンス102から受信されたDNSクエリ情報は、以下のように(ルートドメインfoo.comのドメインプロファイルへと)グループ化される。G(foo.com)=[mail.foo.com,coolstuff.foo.com、domain234.foo.com]。第2のルートドメインは、同様の適用情報を有する第2のプロファイルを有するだろう(例えば、G(baddomain.com)=[lskjdf23r.baddomain.com,kj235hdssd233.baddomain.com])。各ルートドメイン(例えば、foo.comまたはbaddomain.com)は、悪意のあるDNSトンネリングに固有の特性のセットを使用してモデル化され、その結果、たとえ良性DNSパターンが多様であっても(例えば、k2jh3i8y35.legitimatesite.com、xxx888222000444.otherlegitimatesite.com)、それらが悪意のあるトンネリングとして誤って分類される可能性は非常に低い。以下は、ドメインの所与のグループ(すなわち、ルートドメインを共有しているもの)についての特徴として(例えば、特徴ベクトルへと)抽出され得る例示的な特性である。
【0031】
図2は、本出願の様々な実施形態に従った、予測アドレスを提供するシステムに係るブロック図である。様々な実施形態に従って、システム200は、予測キャッシュ170のためといった、
図1のシステム100に関連して実装される。様々な実施形態において、システム200は、
図3のシステム300、
図4のシステム400、
図5のシステム500、
図6のプロセス600、
図7のプロセス700、
図8のプロセス800、及び/又は、
図9のプロセス900に関連して実装される。
【0032】
システム200は、サーバといった1つ以上のデバイスによって実装され得る。システム200は、ネットワーク上の様々な位置で実施され得る。例えば、予測キャッシュは、DNSリゾルバ上に配置され得る。別の例として、予測キャッシュは、ファイアウォール上に配置されている。別の例として、予測キャッシュは、DNSリゾルバに提供されるサービスである(例えば、予測キャッシュは、ドメインの予測アドレス情報についてDNSリゾルバからのクエリにサービスする、リモートサーバ上に配置されている)。
【0033】
示された例において、システム200は、DNSクエリに応答してターゲットアドレス情報を予測及び/又は提供するためといった、ドメインに対応しているアドレスを予測することに関連して1つ以上のモジュールを実装している。システム200は、通信インターフェイス205、1つ以上のプロセッサ210、ストレージ装置215、及び/又は、メモリ220を備えている。1つ以上のプロセッサ210は、通信モジュール225、検出器モジュール230、モデルモジュール235、モデル更新モジュール240、予測モジュール245、及び/又は、クエリ応答モジュール250のうちの1つ以上を備えている。
【0034】
いくつかの実施形態において、システム200は、通信モジュール225を備えている。システム200は、通信モジュール225を使用して、様々なクライアント端末または管理者システムといったユーザシステムと通信する。例えば、通信モジュール225は、通信される情報を通信インターフェイス205に提供する。別の例として、通信インターフェイス205は、システム200によって受信された情報を通信モジュール225に提供する。通信モジュール225は、ファイアウォール、DNSリゾルバ、等といった、様々なクライアント端末またはシステムから1つ以上のDNSクエリを受信するように構成されている。通信モジュール225は、管理者から1つ以上の設定または構成を受信するように構成されている。1つ以上の設定または構成の例は、モデル(例えば、機械学習モデル)の構成、モデルのためのトレーニングセットの指示、ドメイン(例えば、疑わしいとは考えられず、かつ、クエリが適用可能なaDNSに送信されることが許可される、ドメイン)のホワイトリストに関する情報、ドメイン(例えば、疑わしいと考えられ、かつ、DNSクエリに対する応答が予測されたアドレスに少なくとも部分的に基づくべきであるか、または、DNSクエリに対する応答が提供されるべきでない、ドメイン)のブラックリストに関する情報を含む。
【0035】
いくつかの実施形態において、システム200は、検出器モジュール230を備えている。システム200は、DNSクエリが疑わしいトラフィック、または、悪意のあるトラフィックに対応するかを決定することに関連して、検出器モジュール230を使用する。いくつかの実施形態において、検出器モジュール230は、検出器モジュール172に対応し、または、類似している。
【0036】
いくつかの実施形態において、システム200は、モデルモジュール235を備えている。システム200は、ドメイン(例えば、DNSクエリに対応している特定のドメイン)の予測アドレスを決定するために、モデルモジュール235を使用する。システム200は、モデルモジュール235を介して、モデル(例えば、機械学習モデル)を管理することができる。モデルモジュール235は、機械学習プロセス、および、1つ以上のトレーニングセットに少なくとも部分的に基づいて、予測されるアドレスを生成するために使用されるモデルを決定する。いくつかの実装において、モデルモジュール235は、機械学習モデル176に対応し、または、同様である。
【0037】
いくつかの実施形態において、システム200は、モデル更新モジュール240を備えている。システム200は、アドレスを予測するために使用されるモデルを更新するために、モデル更新モジュール240を使用する。モデル更新モジュール240は、DNSクエリに応答して予測アドレスを提供しているシステム200に応答して提供される、1つ以上のトレーニングセッション、及び/又は、フィードバックに少なくとも部分的に基づいてモデルを更新する。モデル更新モジュール240は、良性とみなされるドメイン(例えば、google.com、Microsoft.com、apple.com、等)といった、1つ以上のドメインのレコードを使用して更新され得る。一つの例として、モデル更新モジュール240は、1つ以上のドメインに関連するゾーンファイル情報を(例えば、信頼されたaDNSから)取得する。
【0038】
いくつかの実施形態において、システム200は、予測モジュール245を備えている。システム200は、DNSクエリに応答するターゲットアドレス情報といったドメインに対応するアドレス情報を予測するために、予測モジュール245を使用する。例えば、予測モジュール245は、特定のDNSクエリに応答してターゲットアドレス情報を予測することに関連してモデルモジュール235を使用するか、かつ/あるいは、予測キャッシュデータ264といったキャッシュから以前に予測ターゲットアドレス情報を取り出す(retrieve)か、を決定する。一つの例として、DNSクエリについてターゲットアドレス情報を予測することに関連してモデルモジュール235を使用すると決定したことに応答して、予測モジュール245は、予測されたアドレスについて、モデルモジュール235に対してクエリを送信する(例えば、システム200が、DNSクエリに応答して、ターゲットアドレス情報として、そうした予測されたアドレスを提供するために)。いくつかの実装において、予測モジュール245は、予測エンジン174に対応し、または、同様である。
【0039】
いくつかの実施形態において、システム200は、クエリ応答モジュール250を備えている。システム200は、DNSクエリに応答してターゲットアドレス情報を提供するために、クエリ応答モジュール250を使用する。例えば、クエリ応答モジュール250は、予測モジュール245から予測アドレスを取得し、そして、DNSクエリに応答して、ターゲットアドレス情報として、予測アドレスを提供する。別の例として、クエリ応答モジュール250は、DNSリゾルバ、DNSクエリが発信された(originated)クライアント、等に対して、ターゲットアドレス情報を提供する。別の例として、クエリ応答モジュール250は、DNSクエリが疑わしいものでなく、または、悪意のあるものではないとシステム200が決定したことに応答するなどして、レガシーキャッシュまたはaDNSから取得された、ドメインのターゲットアドレス情報を提供する。
【0040】
様々な実施形態に従って、ストレージ215は、ファイルシステムデータ260、モデルデータ262、予測キャッシュデータ264、及び/又は、レガシーキャッシュデータ266のうちの1つ以上を含んでいる。ストレージ215は、共有ストレージ(例えば、ネットワークストレージシステム)、及び/又はデータベースデータ、及び/又はユーザアクティビティデータを含んでいる。
【0041】
いくつかの実施形態において、ファイルシステムデータ260は、1つ以上のデータセット(例えば、1つ以上のテナントのための1つ以上のデータセット、等)といったデータベースを備えている。ファイルシステムデータ260は、機械学習プロセスをトレーニングするためのデータセット、DNSクエリに関する履歴情報、安全である(例えば、不審でない)と見なされるドメインのホワイトリスト、疑わしい又は悪意があると見なされるトラフィックに対応するドメインのブラックリスト、傾向または関係といった疑わしい又は悪意のあるトラフィックに関連付けられた情報、傾向または関係といったセキュア又は安全なトラフィックに関連付けられた情報のデータ、等を備えている。
【0042】
モデルデータ262は、1つ以上のモデルに関するデータを含んでいる。一つの例として、1つ以上のモデルに関するデータは、ドメイン(例えば、トップレベルドメイン、サブドメイン、等)と、IPアドレスといったアドレス情報との間の関係および関連付けを含む。モデルデータ262は、アドレス情報を予測するために、1つ以上の機械学習プロセスの実装のための1つ以上の機械学習プロセス及び/又は構成に関する情報を保管することができる。
【0043】
予測キャッシュデータ264は、1つ以上のドメインに関して予測されるアドレス情報を含んでいる。一つの例として、予測キャッシュデータ264は、1つ以上の以前のDNSクエリについて決定された、予測アドレス情報を保管する。
【0044】
レガシーキャッシュデータ266は、aDNSに送信された以前のクエリに対応しているアドレス情報を含んでいる。例えば、システム200が、DNSクエリは安全またはセキュアであり、かつ、ターゲットアドレス情報が予測からではなくaDNSから(例えば、モデルモジュール235を使用して、予測モジュール245を介して)取得されるべきである、と決定したことに応答して、レガシーキャッシュデータ266は、適用可能なDNSに関連してaDNSから取得されたアドレス情報を保管する。
【0045】
様々な実施形態に従って、メモリ220は、実行アプリケーションデータ275を含んでいる。実行アプリケーションデータ275は、機械学習プロセスを実行するアプリケーションといったアプリケーションの実行に関連して、または、機械学習モデルを構成するために、取得または使用されるデータを含んでいる。実施形態において、アプリケーションは、クエリまたはタスクの受信及び/又は実行、実行されたクエリまたはタスクに応答するレポートを生成及び/又は情報を構成、かつ/あるいは、クエリまたはタスクに応答する情報をユーザに対して提供することのうちの1つ以上を実行する、1つ以上のアプリケーションを含む。他のアプリケーションは、任意の他の適切なアプリケーションを含む(例えば、インデックスメンテナンスアプリケーション、通信アプリケーション、機械学習モデルアプリケーション、疑わしいトラフィックを検出するためのアプリケーション、文書作成アプリケーション、レポート作成アプリケーション、ユーザインターフェイスアプリケーション、データ分析アプリケーション、異常検出アプリケーション、ユーザ認証アプリケーション、等)。
【0046】
図3は、ドメインネームシステム(DNS)クエリに応答することに関連して予測キャッシュを使用するためのシステムに係る図である。様々な実施形態に従って、システム300は、
図2のシステム100及び/又はシステム200に関連して実装される。様々な実施形態において、システム300は、
図6のプロセス600、
図7のプロセス700、
図8のプロセス800、及び/又は、
図9のプロセス900に関連して実装される。
【0047】
図3に示される例において、トラフィックは、感染したクライアント310で発生し、そして、DNSリゾルバ320に対して送信される。例えば、感染したクライアント310は、DNSトラフィック(例えば、DNSクエリ)を、DNSリゾルバ320に通信する。
図3に示されるように、DNSトラフィックを、aDNSをクエリすることに関連するといったDNSトンネリングサーバ340に対して送信するのではなく、DNSリゾルバ320は、トラフィックを、予測キャッシュ350に対して送信する。例えば、DNSリゾルバ320は、感染したクライアント310から送信されたDNSクエリに対する応答を取得するために、予測キャッシュ350を使用することを決定する。いくつかの実施形態において、DNSリゾルバ320は、感染したクライアント310から通信されたDNSクエリが疑わしいトラフィックまたは悪意のあるトラフィックに対応するという決定に少なくとも部分的に基づいて、DNSクエリに応答するターゲットアドレス情報を取得するために、予測キャッシュ350を使用することを決定する。DNSリゾルバ320からクエリを受信したことに応答して、予測キャッシュ350は、クエリによって示されるドメインに対応しているアドレス情報を決定(例えば、予測)する。いくつかの実施形態において、予測キャッシュ350は、ドメインに対応しているアドレス情報を予測するために、機械学習モデルを使用する。予測アドレスの決定に応答して、予測キャッシュ350は、感染したクライアント310(例えば、DNSリゾルバ320)に対して、DNSクエリに応答するターゲットアドレス情報として予測アドレスを返す。
【0048】
図4は、DNSクエリに応答することに関連して予測キャッシュを使用することを決定するためのシステムに係る図である。様々な実施形態に従って、システム400は、
図2のシステム100及び/又はシステム200に関連して実装される。様々な実施形態において、システム400は、
図6のプロセス600、
図7のプロセス700、
図8のプロセス800、及び/又は、
図9のプロセス900に関連して実装される。
【0049】
図4に示される例において、DNSクエリ410は、DNSリゾルバといったネットワークと通信する。一つの例として、DNSクエリ410は、クライアント(例えば、感染した又は悪意のあるクライアント、良性又はセキュアなクライアント、等)によって通信される。検出器420は、DNSクエリ410を受信し、DNSクエリが疑わしいトラフィックに対応するか、または、悪意のあるトラフィックに対応するかを決定する。例えば、検出器420は、DNSクエリ410が信頼できないトラフィックに対応するか、または、信頼できるトラフィックに対応するかを決定する。いくつかの実施形態において、検出器は、DNSクエリ410及び/又はDNSクエリが受信されるクライアントの分析に少なくとも部分的に基づいて、DNSクエリ410が信頼できないトラフィック、または、信頼できるトラフィックに対応するかを決定する。
【0050】
検出器420が、DNSクエリ410は信頼できないトラフィックに対応していると決定したことに応答して、DNSクエリ410に含まれるドメインの予測アドレス情報を取得するために、予測キャッシュ430に対してクエリが送信される。いくつかの実施形態において、予測キャッシュ430は、ドメインに対応しているアドレス情報を予測するために、機械学習モデルを使用する。予測アドレスを決定することに応答して、予測キャッシュ430は、DNSクエリ410に応答するターゲットアドレス情報として、予測アドレスに戻る。
【0051】
検出器420が、DNSクエリ410は信頼できるトラフィックに対応していると決定したことに応答して、DNSクエリ410に含まれるドメインの予測アドレス情報を取得するために、レガシーキャッシュ440に対してクエリが送信される。いくつかの実施形態において、レガシーキャッシュ440は、ドメインに対応しているキャッシュされたアドレス情報を決定し、そして、そうしたキャッシュされたアドレス情報を、DNSクエリ410に応答するターゲットアドレス情報として返す。キャッシュされたアドレス情報は、aDNSから以前に取得されたアドレス情報に対応することができる。レガシーキャッシュ440がDNSクエリ410のドメインにマッピングされたアドレス情報を含まないと決定したことに応答して、ドメインに対応するアドレス情報についてのクエリがaDNSに対して送信され、そして、aDNSからアドレス情報を受信したことに応答して、アドレス情報が、DNSクエリ410に応答するターゲットアドレス情報として返される。
【0052】
図5は、DNSクエリに応答するためのシステムに係る図である。様々な実施形態に従って、システム500は、
図2のシステム100及び/又はシステム200に関連して実装される。様々な実施形態において、システム500は、
図6のプロセス600、
図7のプロセス700、
図8のプロセス800、及び/又は、
図9のプロセス900に関連して実装される。
【0053】
示される例において、DNSリゾルバは、ステップ1でDNSクエリ(例えば、encoded-data-1.test.comドメインに向けられたクエリ)を受信する。DNSクエリを受信したことに応答して、DNSリゾルバは、DNSクエリが信頼できるトラフィックか、または、信頼できないトラフィックに対応するかを決定する。例えば、DNSリゾルバは、DNSクエリが疑わしいトラフィック、または、悪意のあるトラフィックに対応するかを決定する。
【0054】
DNSクエリが信頼できるトラフィックに対応するという決定に応答して、ステップ2aにおいて、トラフィックは、DNSクエリに含まれるドメイン(例えば、encoded-data-1.test.comドメイン)に対応するアドレス情報を取得するために、レガシーキャッシュまたはaDNSに向けられる。
【0055】
DNSクエリが信頼できないトラフィックに対応するという決定に応答して、ステップ2bにおいて、トラフィックは、予測アドレス情報を取得するために、予測キャッシュに向けられる。
【0056】
アドレス情報のクエリを受信したことに応答して、ステップ3において、予測キャッシュは、aDNSから、DNSクエリのドメインに関係する(例えば、隣接する)1つ以上のレコード、及び/又は、トップレベルドメインに関連付けられた以前に解決されたアドレスのリストを取得する。いくつかの実施形態において、予測キャッシュは、DNSクエリに対応しているトップレベルドメインの他のサブドメインについての適用可能なパッシブDNSレコードから、要求する(例えば、トップレベルドメインの過去の解決が取得される)。説明に役立つ例として、トップレベルドメイン「root.com」の場合、予測キャッシュは、パッシブDNSから、「root.com」の下のサブドメインの全てのレコードを取得する。いくつかの実施形態において、予測キャッシュは、DNSクエリに含まれるドメインに語彙的に類似するサブドメインのセットを決定し、そして、DNSクエリに含まれるドメインに語彙的に類似するサブドメインのセットに対応する(例えば、マッピングされた)アドレス情報について、aDNSにクエリする。
【0057】
ステップ4において、予測キャッシュは、パッシブDNSから取得されたアドレス情報、トレーニングセットに関連するアドレス情報(例えば、様々な良性ドメインのサブドメインのアドレス情報)、及び/又は、DNSクエリに含まれるドメインと語彙的に類似するサブドメインのセットに対応しているアドレス情報を、機械学習モデルに対して提供する。
【0058】
ステップ5において、予測キャッシュは、DNSクエリに含まれるドメインのアドレス情報を予測するために、機械学習モデルを使用する。いくつかの実施形態において、機械学習モデルは、サブドメインとドメインとの間の関係、及び/又は、トップレベルドメインについて以前に解決されたサブドメインに対応するアドレス情報に基づいて、事前トレーニングされる。機械学習モデルは、DNSクエリに含まれるドメインのアドレス情報(例えば、IPアドレス)を予測するために、機械学習プロセスを使用する。予測アドレス情報を決定する機械学習モデルに応答して、予測キャッシュは、DNSクエリに応答するターゲットアドレス情報として、予測アドレス情報を提供する。一つの例として、予測キャッシュは、予測アドレス情報をDNSリゾルバに提供し、DNSリゾルバは、次に、そうした情報をターゲットアドレス情報として、DNSクエリが発信されたクライアントに提供する。
【0059】
図6は、DNSクエリに応答することに関連して予測キャッシュを使用するための方法に係るフローチャートである。様々な実施形態に従って、プロセス600は、
図1のシステム100及び/又は
図2のシステム200に関連して実施される。
【0060】
610においては、DNSクエリが受信される。いくつかの実施形態において、システムは、DNSリゾルバを介するなどして、クライアントから、DNSクエリを受信する。
【0061】
620においては、予測キャッシュからターゲットアドレス情報を取得することを決定する。一つの例として、ターゲットアドレス情報は、DNSクエリに応答するアドレスに対応している。いくつかの実施形態において、システムは、DNSクエリが信頼できないトラフィック(例えば、疑わしいトラフィック、悪意のあるトラフィック、等)に対応するという決定に少なくとも部分的に基づいて、予測キャッシュからターゲットアドレス情報を取得することを決定する。
【0062】
630においては、ターゲットアドレス情報が予測キャッシュから取得される。いくつかの実施形態において、ターゲットアドレス情報は、予測されたIPアドレスといった予測されたアドレス情報に対応している。例えば、予測アドレス情報は、機械学習モデルといったモデルを使用して、推定される。いくつかの実施形態において、予測アドレスは、DNSクエリと同時に推定される(例えば、DNSクエリを受信したことに応答して、予測キャッシュは予測アドレスを推定する)。いくつかの実施形態において、予測アドレスは、ドメインに対応しているアドレス情報が以前に推定された場合などに、ストレージ装置から取得される。
【0063】
640においては、ターゲットアドレス情報が提供される。予測キャッシュからターゲットアドレス情報を取得することに応答して、ターゲットアドレス情報が、DNSクエリに応答して通信される。例えば、システムは、DNSクエリが発信されたクライアントに対してターゲットアドレス情報を提供する。
【0064】
650においては、プロセス600が完了したか否かについての決定が行われる。いくつかの実施形態において、プロセス600は、さらなるDNSトラフィック(例えば、DNSクエリ)が処理されるべきではないという決定に応答して、完了したものと決定され、管理者は、プロセス600が一時停止または停止されるべきであることを示す、等。プロセス600が完了したという決定に応答して、プロセス600は終了する。プロセス600が完了していないという決定に応答して、プロセス600は、610に戻る。
【0065】
図7は、DNSクエリに応答することに関連して予測キャッシュを使用するための方法に係るフローチャートである。様々な実施形態に従って、プロセス700は、
図1のシステム100及び/又は
図2のシステム200に関連して実施される。
【0066】
710においては、DNSクエリが受信される。
【0067】
720においては、DNSクエリが疑わしいトラフィックに対応するか否かに関して決定が行われる。いくつかの実施形態において、システムは、DNSクエリが疑わしいか否かを決定することに関連して、検出モジュールを使用する。一つの例として、検出モジュールは、DNSトラフィックにおける異常の検出、信頼されたドメインを識別するホワイトリスト、信頼されていないドメインを識別するブラックリスト、等のうちの1つ以上に少なくとも部分的に基づいて、DNSクエリが疑わしいか否かを決定する。
【0068】
720において、DNSクエリが疑わしいトラフィックに対応すると決定したことに応答して、プロセス700は、730に進み、そこで、予測キャッシュから、ターゲットアドレス情報が取得される。いくつかの実施態様において、予測キャッシュからターゲット情報を取得することは、
図6のプロセス600の630と同じ又は同様の方法で実行される。
【0069】
720において、DNSクエリが疑わしいトラフィックに対応しないという決定に応答して、プロセス700は、750に進み、そこで、システムは、キャッシュが、DNSクエリに含まれるドメインに対してマッピングされたアドレス情報を保管しているか否かを決定する。750における、ドメインに対してマッピングされたアドレス情報がキャッシュに保管されているという決定に応答して、プロセス700は、760に進み、そこでは、レガシーキャッシュから、アドレス情報が取得され、そして、DNSクエリに応答して、ターゲットアドレス情報として返される。750において、ドメインに対してマッピングされたアドレス情報がキャッシュに保管されていないという決定に応答して、プロセス700は、770に進み、そこでは、権威ネームサーバ(例えば、aDNS)がクエリされる。例えば、システムは、DNSクエリに含まれるドメインに対応しているアドレス情報について、aDNSにクエリする。ドメインに対応しているアドレス情報を受信したことに応答して、システムは、DNSクエリに応答して、そうした情報をターゲットアドレス情報として提供する。
【0070】
780においては、プロセス700が完了したか否かについての決定が行われる。いくつかの実施形態において、プロセス700は、さらなるDNSトラフィック(例えば、DNSクエリ)が処理されるべきではないという決定に応答して、完了したと決定され、管理者は、プロセス700が一時停止または停止されるべきであることを示す、等。プロセス700が完了したという決定に応答して、プロセス700は、終了する。プロセス700が完了していないという決定に応答して、プロセス700は、710に戻る。
【0071】
図8は、DNSクエリに対応するターゲットアドレス情報を決定するための方法に係るフローチャートである。様々な実施形態に従って、プロセス800は、
図1のシステム100及び/又は
図2のシステム200に関連して実施される。
【0072】
810においては、ドメインが決定される。いくつかの実施形態において、ドメインは、DNSクエリといったDNSトラフィックに含まれている。一つの例として、ファイアウォールまたはDNSリゾルバは、DNSトラフィックからドメインを取得し、そして、ドメインを予測キャッシュに提供する。
【0073】
820においては、サブドメインのレコードがクエリされる。いくつかの実施形態において、システムは、ドメインに関連付けられたトップレベルドメイン(例えば、DNSクエリのトップレベルドメイン)を決定し、そして、そうしたトップレベルドメインについてサブドメインのレコードを取得する。様々な実施形態に従って、システムは、(i)パッシブDNS(例えば、PDNS)から、トップレベルドメインの下のレコードのセット、及び/又は(、ii)aDNSから、語彙的に類似したサブドメインのドメインのリストについてのレコードのセット、を取得する。(i)に関する例として、システムは、DNSクエリのトップレベルドメインに関連付けられた他のサブドメインについての以前に解決されたアドレス情報を決定する。(ii)に関する例として、システムは、aDNSに含まれるサブドメインに類似するドメインのリストを生成し、そして、対応するアドレス情報についてaDNSにクエリする。
【0074】
830においては、ドメインの下のサブドメインについてのレコードが、モデルに対して提供される。システムは、予測アドレスを取得する要求に関連して、サブドメインについてのレコードを、モデルに対して提供する。例えば、システムは、以前に解決されたDNSクエリのトップレベルドメインに関連付けられた他のサブドメインについての以前に解決されたアドレス情報、および、DNSクエリに含まれるドメインに類似しているドメインのアドレス情報を、モデルに対して提供する。
【0075】
840においては、ターゲットアドレス情報が、少なくとも部分的にモデルに基づいて決定される。いくつかの実施形態において、モデルは、ドメインに対応しているアドレス情報の推定値に対応する予測アドレスを決定する。一つの例として、モデルは、予測アドレスを生成するために機械学習モデルを実装する、機械学習モデルである。いくつかの実施形態において、予測アドレスを決定することは、(i)パッシブDNS(例えば、PDNS)から、トップレベルドメインの下のレコードのセット、及び/又は、(ii)aDNSから、語彙的に類似するサブドメインのドメインのリストについてのレコードのセット、のうちの1つ以上と併せて、モデルを使用すること、を含む。いくつかの実施形態において、モデルは、良性ドメインおよび対応するサブドメインといったドメインのセットについてのアドレス情報を使用して、トレーニングされる。
【0076】
850においては、ターゲットアドレス情報が提供される。ターゲットアドレス情報(例えば、モデルを使用して推定された予測アドレス)を取得したことに応答して、ターゲットアドレス情報は、DNSクエリに応答して、クライアントなどに通信される。例えば、システムは、DNSクエリが発信されたクライアントに対してターゲットアドレス情報を提供する。
【0077】
860においては、プロセス800が完了したか否かについての決定が行われる。いくつかの実施形態において、プロセス800は、ドメインについてさらなるアドレス情報が決定される必要がないとの決定に応答して、完了したと決定され、管理者は、プロセス800が、一時停止または停止されるべきであることを示す、等。プロセス800が完了したという決定に応答して、プロセス800は、終了する。プロセス800が完了していないという決定に応答して、プロセス800は、810に戻る。
【0078】
図9は、ドメインに関連付けられたレコード構造を予測するための機械学習モデルを決定するための方法に係るフローチャートである。
【0079】
910においては、複数のトレーニングドメインが決定される。いくつかの実施形態において、システムは、良性ドメインおよび対応するサブドメインといったドメインのセットを決定する。ドメインおよび対応するサブドメインのセットは、予測システムの管理者(例えば、モデルの開発者)による選択または構成といった選択に基づいて、決定され得る。一つの例として、複数のトレーニングドメインは、信頼できる又は良性であると見なされるドメインに対応している。
【0080】
920においては、複数のトレーニングドメインについての複数のレコードがクエリされる。いくつかの実施形態において、システムは、権威ネームサーバにおいて、複数のトレーニングドメインにマッピングされたアドレス情報、及び/又は、複数のトレーニングドメインにマッピングされたアドレス情報について、以前に解決されたアドレス情報のセットにクエリする。例えば、以前に解決されたアドレス情報のセットに関して、システムは、対応するアドレス情報について、pDNSにクエリする。一つの例として、権威
ネームサーバに保管されているアドレス情報に関して、システムは、複数のトレーニングドメインに対応しているアドレス情報について、適用可能なaDNSにクエリする。
【0081】
930においては、トレーニングドメインとサブドメインとの間の関係を決定するために、複数のレコードが使用される。いくつかの実施形態において、機械学習プロセスは、複数のトレーニングドメインについての複数のレコードに少なくとも部分的に基づいて、トレーニングドメインとサブドメインとの間の関係に使用される。モデルをトレーニングすることに関連して実装され得る機械学習プロセスの例は、ランダムフォレスト、線形回帰、サポートベクターマシン、単純ベイズ、ロジスティック回帰、K最近傍、決定木、勾配ブースト決定木、K平均クラスタリング、階層クラスタリング、ノイズを伴うアプリケーションの密度ベース空間クラスタリング(DBSCAN)クラスタリング、主成分分析、等を含んでいる。トレーニングドメインのセットは、事前設定され得る。
【0082】
940においては、トレーニングドメインとサブドメインとの間の関係に少なくとも部分的に基づいて、予測モデルが決定される。いくつかの実施形態においては、予測モデルを決定するために、機械学習プロセスが使用される。予測モデルは、特定のドメインについてのアドレス(例えば、予測アドレス)の推定値を提供するように決定される。
【0083】
950においては、DNSクエリに対応しているドメインが取得される。いくつかの実施形態において、ドメインは、
図8のプロセス800の810と同様な方法で決定される。例えば、ドメインは、DNSクエリのドメインに対応しているトップレベルドメインである。
【0084】
960においては、ドメインのサブドメインについての1つ以上のレコードが取得される。いくつかの実施形態において、ドメインについての1つ以上のレコードは、
図8のプロセス800の820と同様な方法で取得される。
【0085】
970においては、予測ターゲットアドレス情報が決定される。いくつかの実施形態において、ターゲットアドレス情報として使用されるといった予測アドレス情報を決定することは、
図5のシステム500、
図7のプロセス700のプロセス730、並びに、
図8のプロセス800の830および840と同様な方法で実行される。
【0086】
980においては、プロセス900が完了したか否かについての決定が行われる。いくつかの実施形態において、プロセス900は、ドメインについてさらなるアドレス情報が決定される必要がないという決定に応答して、完了したと決定され、管理者は、プロセス900が一時停止または停止されるべきであることを示す、等。プロセス900が完了したという決定に応答して、プロセス900は、終了する。プロセス900が完了していないという決定に応答して、プロセス900は、910に戻る。
【0087】
本明細書に記載される実施形態の様々な実施例は、フローチャートに関連して説明されている。実施例は、特定の順序で実行されるいくつかのステップを含み得るが、様々な実施形態に従って、様々なステップは、様々な順序で実行されてよく、かつ/あるいは、様々なステップは、単一のステップへと、または、並列に、組み合わせられてよい。
【0088】
前述の実施形態は、理解を明確にする目的で、ある程度詳細に説明されているが、本発明は、提供される詳細に限定されるものではない。本発明を実施する多くの代替方法が存在している。開示された実施形態は、例示的なものであり、かつ、限定的なものではない。
【国際調査報告】