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

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

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

特許7465387プロセス情報を使用してDNSセキュリティを提供する方法およびシステム
<>
  • 特許-プロセス情報を使用してDNSセキュリティを提供する方法およびシステム 図1A
  • 特許-プロセス情報を使用してDNSセキュリティを提供する方法およびシステム 図1B
  • 特許-プロセス情報を使用してDNSセキュリティを提供する方法およびシステム 図1C
  • 特許-プロセス情報を使用してDNSセキュリティを提供する方法およびシステム 図1D
  • 特許-プロセス情報を使用してDNSセキュリティを提供する方法およびシステム 図2
  • 特許-プロセス情報を使用してDNSセキュリティを提供する方法およびシステム 図3
  • 特許-プロセス情報を使用してDNSセキュリティを提供する方法およびシステム 図4
  • 特許-プロセス情報を使用してDNSセキュリティを提供する方法およびシステム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-02
(45)【発行日】2024-04-10
(54)【発明の名称】プロセス情報を使用してDNSセキュリティを提供する方法およびシステム
(51)【国際特許分類】
   G06F 21/56 20130101AFI20240403BHJP
   H04L 61/4511 20220101ALI20240403BHJP
【FI】
G06F21/56 360
H04L61/4511
【請求項の数】 20
【外国語出願】
(21)【出願番号】P 2023066956
(22)【出願日】2023-04-17
(65)【公開番号】P2023159044
(43)【公開日】2023-10-31
【審査請求日】2023-04-24
(31)【優先権主張番号】17/724130
(32)【優先日】2022-04-19
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】517392861
【氏名又は名称】パロ アルト ネットワークス,インコーポレイテッド
【氏名又は名称原語表記】Palo Alto Networks,Inc.
【住所又は居所原語表記】3000 Tannery Way,Santa Clara,California 95054,United States of America
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ズーハン シャオ
(72)【発明者】
【氏名】ジャンハオ チェン
【審査官】中里 裕正
(56)【参考文献】
【文献】特開2011-076188(JP,A)
【文献】特表2008-532133(JP,A)
【文献】米国特許出願公開第2018/0013775(US,A1)
【文献】国際公開第2008/084729(WO,A1)
【文献】国際公開第2016/140037(WO,A1)
【文献】SIVAKORN, S. et al.,Countering Malicious Processes with Process-DNS Association,Network and Distributed Systems Security (NDSS) Symposium 2019,2019年02月,pp.1-15
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
H04L 61/4511
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
システムであって、
メモリと、
前記メモリに接続されたプロセッサであり、前記プロセッサは、
アプリケーションが、ドメイン名を使用して、インターネットサービスにアクセスしていると判定し、
関連するドメイン名システム(DNS)クエリと共に前記アプリケーションに関連付けられたプロセス情報を識別して、前記ドメイン名に関連付けられたIPアドレスを特定し、前記関連するDNSクエリと共に前記アプリケーションに関連付けられた前記プロセス情報を識別して、前記ドメイン名に関連付けられた前記IPアドレスを特定することは、
前記関連するDNSクエリを、外部リゾルバから別のリゾルバに迂回すること、を含み、
前記迂回された関連するDNSクエリは、前記プロセス情報を含んでおり、
前記プロセス情報および前記関連するDNSクエリをDNSセキュリティサービスに送信し、かつ、
前記DNSセキュリティサービスからの応答に基づいて、アクションを実行する、
ように構成されている、プロセッサと、
を含む、システム。
【請求項2】
前記プロセス情報は、プロセスID、および、
ホスト名、アクティブ・ディレクトリ・ドメイン、オペレーティングシステムのタイプとバージョン、及び/又は、ネットワークインターフェイス、のうち1つ以上、
を含む、請求項1に記載のシステム。
【請求項3】
前記プロセス情報は、プロセスID、および、
プロセスメタ情報、ユーザメタ情報、及び/又は、エンドポイントメタ情報、のうち1つ以上、
を含む、請求項1に記載のシステム。
【請求項4】
前記迂回された関連するDNSクエリは、DNSについて拡張メカニズムを使用するプロセス情報を含んでいる、
請求項1に記載のシステム。
【請求項5】
前記DNSクエリは、DNSリゾルバに送信される、
請求項1に記載のシステム。
【請求項6】
前記アクションを実行することは、
前記ドメイン名が、前記アプリケーションと通信することが許可されている既知のドメイン名のセットに関連付けられているか否かを判定すること、および、
前記ドメイン名が、前記アプリケーションと通信することが許可されている既知のドメイン名のセットに関連付けられていないという判定に応答して、前記関連するDNSクエリをブロックまたはシンクホールすること、
を含む、請求項1に記載のシステム。
【請求項7】
前記アクションを実行することは、
前記プロセス情報が、新規に登録されたドメインに関連するか、および、前記プロセス情報が、システムプロセスに関連するか否かを判定すること、および、
前記プロセス情報が、前記新規に登録されたドメインに関連し、かつ、前記プロセス情報が、前記システムプロセスに関連するという判定に応答して、前記関連するDNSクエリをブロックまたはシンクホールすること、
を含む、請求項1に記載のシステム。
【請求項8】
システムであって、
メモリと、
前記メモリに接続されたプロセッサであり、前記プロセッサは、
アプリケーションが、ドメイン名を使用して、インターネットサービスにアクセスしていると判定し、
関連するドメイン名システム(DNS)クエリと共に前記アプリケーションに関連付けられたプロセス情報を識別して、前記ドメイン名に関連付けられたIPアドレスを特定し、かつ、
前記プロセス情報および前記関連するDNSクエリをDNSセキュリティサービスに送信する、
プロセッサと、
アクションを実行するように構成され、かつ、前記DNSセキュリティサービスに応答する、DNSセキュリティ検出器であり、前記アクションを実行することは、
前記プロセス情報が、デジタル署名なしプロセスに関連するか否かを判定すること、および、
前記プロセス情報が、前記デジタル署名なしプロセスに関連するという判定に応答して、前記関連するDNSクエリをブロックまたはシンクホールすること、を含む、
DNSセキュリティ検出器と、
を含む、システム。
【請求項9】
前記アクションを実行することは、
前記アプリケーションに関連付けられているエンドポイントを隔離すること、
を含む、請求項1に記載のシステム。
【請求項10】
前記アクションを実行することは、
前記プロセス情報に関連付けられたファイルを削除すること、
を含む、請求項1に記載のシステム。
【請求項11】
方法であって、
アプリケーションが、ドメイン名を使用して、インターネットサービスにアクセスしていると、プロセッサを使用して、判定するステップと、
関連するドメイン名システム(DNS)クエリと共に前記アプリケーションに関連付けられたプロセス情報を、前記プロセッサを使用して、識別するステップであり、前記ドメイン名に関連付けられたIPアドレスを特定し、前記関連するDNSクエリと共に前記アプリケーションに関連付けられた前記プロセス情報を識別して、前記ドメイン名に関連付けられた前記IPアドレスを特定する前記ステップは、
前記関連するDNSクエリを、外部リゾルバから別のリゾルバに迂回するステップを含み、前記迂回された関連するDNSクエリは、前記プロセス情報を含んでいる、
ステップと、
前記プロセス情報および前記関連するDNSクエリを、前記プロセッサを使用して、DNSセキュリティサービスに送信するステップと、
前記DNSセキュリティサービスからの応答に基づいて、前記プロセッサを使用して、アクションを実行するステップと、
を含む、方法。
【請求項12】
前記プロセス情報は、プロセスID、および、
ホスト名、アクティブ・ディレクトリ・ドメイン、オペレーティングシステムのタイプとバージョン、及び/又は、ネットワークインターフェイス、のうち1つ以上、
を含む、請求項11に記載の方法。
【請求項13】
前記プロセス情報は、プロセスID、および、
プロセスメタ情報、ユーザメタ情報、及び/又は、エンドポイントメタ情報、のうち1つ以上、
を含む、請求項11に記載の方法。
【請求項14】
前記迂回された関連するDNSクエリは、DNSについて拡張メカニズムを使用するプロセス情報を含んでいる、
請求項11に記載の方法。
【請求項15】
前記アクションを実行することは、
前記ドメイン名が、前記アプリケーションと通信することが許可されている既知のドメイン名のセットに関連付けられているか否かを判定すること、および、
前記ドメイン名が、前記アプリケーションと通信することが許可されている既知のドメイン名のセットに関連付けられていないという判定に応答して、前記関連するDNSクエリをブロックまたはシンクホールすること、
を含む、請求項11に記載の方法。
【請求項16】
前記アクションを実行することは、
前記プロセス情報が、新規に登録されたドメインに関連するか、および、前記プロセス情報が、システムプロセスに関連するか否かを判定すること、および、
前記プロセス情報が、前記新規に登録されたドメインに関連し、かつ、前記プロセス情報が、前記システムプロセスに関連するという判定に応答して、前記関連するDNSクエリをブロックまたはシンクホールすること、
を含む、請求項11に記載の方法。
【請求項17】
前記アクションを実行することは、
前記アプリケーションに関連付けられているエンドポイントを隔離すること、
を含む、請求項11に記載の方法。
【請求項18】
非一時的コンピュータ読取り可能媒体において具現化され、かつ、複数のコンピュータ命令を含むコンピュータプログラムであって、
前記コンピュータ命令が実行されると、コンピュータに、
アプリケーションが、ドメイン名を使用して、インターネットサービスにアクセスしていると判定するステップと、
関連するドメイン名システム(DNS)クエリと共に前記アプリケーションに関連付けられたプロセス情報を識別するステップであり、前記ドメイン名に関連付けられたIPアドレスを特定し、前記関連するDNSクエリと共に前記アプリケーションに関連付けられた前記プロセス情報を識別して、前記ドメイン名に関連付けられた前記IPアドレスを特定する前記ステップは、
前記関連するDNSクエリを、外部リゾルバから別のリゾルバに迂回するステップを含み、前記迂回された関連するDNSクエリは、前記プロセス情報を含んでいる、
ステップと、
前記プロセス情報および前記関連するDNSクエリをDNSセキュリティサービスに送信するステップと、
前記DNSセキュリティサービスからの応答に基づいて、アクションを実行するステップと、
実施させる、コンピュータプログラム。
【請求項19】
方法であって、
アプリケーションが、ドメイン名を使用して、インターネットサービスにアクセスしていると、プロセッサを使用して、判定するステップと、
関連するドメイン名システム(DNS)クエリと共に前記アプリケーションに関連付けられたプロセス情報を、前記プロセッサを使用して、識別するステップであり、前記ドメイン名に関連付けられたIPアドレスを特定するステップと、
前記プロセス情報および前記関連するDNSクエリを、前記プロセッサを使用して、DNSセキュリティサービスに送信するステップと、
前記DNSセキュリティサービスからの応答に基づいて、DNSセキュリティ検出器を使用して、アクションを実行するステップと、
を含み、前記アクションを実行するステップは、
前記プロセス情報が、デジタル署名なしプロセスに関連しているか否かを判定するステップと、
前記プロセス情報が、デジタル署名なしプロセスに関連しているという判定に応答して、前記関連するDNSクエリをブロックまたはシンクホールするステップと、
を含む、方法。
【請求項20】
非一時的コンピュータ読取り可能媒体において具現化され、かつ、複数のコンピュータ命令を含むコンピュータプログラムであって、
前記コンピュータ命令が実行されると、コンピュータに、
アプリケーションが、ドメイン名を使用して、インターネットサービスにアクセスしていると、プロセッサを使用して、判定するステップと、
関連するドメイン名システム(DNS)クエリと共に前記アプリケーションに関連付けられたプロセス情報を、前記プロセッサを使用して、識別するステップであり、前記ドメイン名に関連付けられたIPアドレスを特定するステップと、
前記プロセス情報および前記関連するDNSクエリを、前記プロセッサを使用して、DNSセキュリティサービスに送信するステップと、
前記DNSセキュリティサービスからの応答に基づいて、DNSセキュリティ検出器を使用して、アクションを実行するステップと、
を含み、前記アクションを実行するステップは、
前記プロセス情報が、デジタル署名なしプロセスに関連しているか否かを判定するステップと、
前記プロセス情報が、デジタル署名なしプロセスに関連しているという判定に応答して、前記関連するDNSクエリをブロックまたはシンクホールするステップと、
を実施させる、コンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
悪意のある個人は、様々な方法でコンピュータシステムを侵害しようと試みる。一つの例として、そうした個人は、電子メールの添付ファイルに悪意のあるソフトウェア(「マルウェア(“malware”)」)を埋め込み、または、他の方法で含み、そして、マルウェアを、疑わないユーザに対して送信し、または、送信させることができる。実行されると、マルウェアは、被害者のコンピュータを侵害する。あるタイプのマルウェアは、危険にさらされたコンピュータにリモートホストと通信するように指示する。例えば、マルウェアは、侵害されたコンピュータを「ボットネット(“botnet”)」における「ボット(“bot”)」へと変えることができ、不正な個人の制御下にあるコマンドアンドコントロール(C&C)サーバからの指示を受け取り、かつ/あるいは、データを報告する。マルウェアによって生じる被害を軽減する一つのアプローチは、セキュリティ会社(または、他の適切なエンティティ)が、マルウェアを識別し、そして、エンドユーザコンピュータ上のマルウェアが到達し/実行されるのを防止することである。別のアプローチは、危険にさらされたコンピュータがC&Cサーバと通信するのを防ぐことである。残念ながら、マルウェアの作成者は、彼らのソフトウェアの動作(workings)を不明瞭にするために、ますます高度なテクニックを使用している。従って、マルウェアを検出し、かつ、その被害を防止するための改良された技法(technique)に対する継続的な必要性が存在している。
【図面の簡単な説明】
【0002】
本発明の様々な実施形態が、以下の詳細な説明および添付の図面において開示されている。
図1A図1Aは、プロセス情報を使用してDNSセキュリティを提供するための環境に係る一つの実施形態を示している。
図1B図1Bは、プロセス情報を使用してDNSセキュリティを提供するための環境に係る別の実施形態を示している。
図1C図1Cは、プロセス情報を使用してDNSセキュリティを提供するための環境に係るさらに別の実施形態を示している。
図1D図1Dは、プロセス情報を使用してDNSセキュリティを提供するための環境に係るさらに別の実施形態を示している。
図2図2は、プロセス情報の一つの例を示している。
図3図3は、プロセス情報を使用してDNSセキュリティを提供するためのワークフローに係る一つの例を示している。
図4図4は、プロセス情報を使用してDNSセキュリティを提供するプロセスの一つの実施形態を説明するフローチャートである。
図5図5は、DNSプロファイルを使用する異常の検出に係る一つの例を示している。
【発明を実施するための形態】
【0003】
本発明は、プロセス、装置、システム、物質の組成、コンピュータ読取り可能記憶媒体上に具現化されたコンピュータプログラム製品、及び/又は、プロセッサに結合されたメモリに保管され、かつ/あるいは、それによって提供される命令を実行するように構成されたプロセッサといった、プロセッサを含む、多数の方法で実施することができる。この明細書において、これらの実施形態、または本発明が採用し得るその他の形態は、技法と称される。一般的に、開示されたプロセスのステップの順序は、本発明の範囲内で変更することができる。特に指示のない限り、タスクを実行するように構成されているものと記載されたプロセッサまたはメモリといったコンポーネントは、所与の時間にタスクを実行するように一時的に構成されている一般的なコンポーネント、または、タスクを実行するように製造されている特定のコンポーネントとして実装することができる。ここにおいて使用されるように、用語「プロセッサ(“processor”)」は、コンピュータプログラム命令といった、データを処理するように構成された1つ以上のデバイス、回路、及び/又は、処理コアを指す。
【0004】
本発明の1つ以上の実施形態の詳細な説明は、本発明の原理を説明する添付の図面と共に以下で提供される。本発明は、そうした実施形態に関連して説明されるが、本発明は、任意の実施形態に限定されるものではない。本発明の範囲は、請求項によってのみ限定されるものであり、そして、本発明は、多数の代替、変形、および均等物を含んでいる。本発明の完全な理解を提供するために、以下の説明に多数の具体的な詳細が記載されている。これらの詳細は、例示のために提供されるものであり、そして、本発明は、これらの特定の詳細の一部または全部を伴うことなく、請求項に従って実施することができる。明瞭にするために、発明に関連する技術分野において知られている技術資料は、発明が不必要に不明瞭にならないように、詳細には説明していない。
【0005】
従来、エンドポイントがマルウェア(例えば、コマンドおよび制御マルウェア)に感染した場合、エンドポイントは、一連の良性ドメイン(benign domains)を順番に使用して、大量のDNSクエリ(DNS queries)を生成することができる。エンドポイントがマルウェアに感染したか否かを判定するために、DNSセキュリティサービスは、非常に大量のDNSクエリをレビューし、そして、DNSクエリ上でドメイン生成アルゴリズム(domain generation algorithm、DGA)技法を使用して、マルウェアを含むエンドポイントを識別することができる。DNSクエリをフィルタリングすることは有益であり、その結果、非C&Cプロセス及び/又はアプリケーションからのDNSクエリをフィルタリングすることができ、そして、DGA技法の精度を高める(例えば、偽陽性および偽陰性を減らす)ために、特定のプロセス及び/又は特定のアプリケーションに関連するDNSクエリにDGA技法を適用することができる。
【0006】
いくつかの実施形態において、プロセス情報を使用してDNSセキュリティを提供するためのシステム/方法/コンピュータプログラム製品は、アプリケーションが、ドメイン名を使用して、インターネットサービスにアクセスしていると判定すること、関連するドメイン名システム(DNS)クエリと共に前記アプリケーションに関連付けられたプロセス情報を識別して、前記ドメイン名に関連付けられたIPアドレスを特定すること、前記プロセス情報および前記関連するDNSクエリをDNSセキュリティサービスに送信すること、および、前記DNSセキュリティサービスからの応答に基づいて、アクションを実行すること、を含んでいる。
【0007】
いくつかの実施形態において、前記関連するDNSクエリと共に前記アプリケーションに関連付けられた前記プロセス情報を識別して、前記ドメイン名に関連付けられた前記IPアドレスを特定することは、前記関連するDNSクエリを、外部リゾルバから別のリゾルバに迂回することを含み、ここで、前記迂回された関連するDNSクエリは、前記プロセス情報を含んでいる。
【0008】
いくつかの実施形態において、前記プロセス情報は、プロセスID、および、ホスト名、アクティブ・ディレクトリ・ドメイン、オペレーティングシステムのタイプとバージョン、及び/又は、ネットワークインターフェイス、のうち1つ以上を含んでいる。
【0009】
いくつかの実施形態において、前記プロセス情報は、プロセスID、および、プロセスメタ情報、ユーザメタ情報、及び/又は、エンドポイントメタ情報、のうち1つ以上を含んでいる。
【0010】
いくつかの実施形態において、前記迂回された関連するDNSクエリは、DNSについて拡張メカニズムを使用するプロセス情報を含んでいる。
【0011】
いくつかの実施形態において、前記DNSクエリは、DNSリゾルバに送信される。
【0012】
いくつかの実施形態において、前記アクションを実行することは、前記ドメイン名が、前記アプリケーションと通信することが許可されている既知のドメイン名のセットに関連付けられているか否かを判定すること、および、前記ドメイン名が、前記アプリケーションと通信することが許可されている既知のドメイン名のセットに関連付けられていないという判定に応答して、前記関連するDNSクエリをブロックまたはシンクホールすることを含んでいる。
【0013】
いくつかの実施形態において、前記アクションを実行することは、前記プロセス情報が、新規に登録されたドメインに関連するか、および、前記プロセス情報が、システムプロセスに関連するか否かを判定すること、および、前記プロセス情報が、前記新規に登録されたドメインに関連し、かつ、前記プロセス情報が、前記システムプロセスに関連するという判定に応答して、前記関連するDNSクエリをブロックまたはシンクホールすることを含んでいる。
【0014】
いくつかの実施形態において、前記アクションを実行することは、前記プロセス情報が、デジタル署名なしプロセスに関連するか否かを判定すること、および、前記プロセス情報が、前記デジタル署名なしプロセスに関連するという判定に応答して、前記関連するDNSクエリをブロックまたはシンクホールすることを含んでいる。
【0015】
いくつかの実施形態において、前記アクションを実行することは、前記アプリケーションに関連付けられているエンドポイントを隔離することを含んでいる。
【0016】
いくつかの実施形態において、前記アクションを実行することは、前記プロセス情報に関連付けられたファイルを削除することを含んでいる。
【0017】
図1Aは、プロセス情報を使用してDNSセキュリティを提供するための環境に係る一つの実施形態を示している。いくつかの実施形態において、環境100は、DNSリクエストを解決するDNSリゾルバまたはファイアウォール130に接続されており、または、アップストリームDNSリゾルバ150、および、悪意または望まないDNSメッセージを検出する、DNSセキュリティ検出器160使用する、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)120に接続されたエンドポイント110を含んでいる。
【0018】
いくつかの実施形態において、LANまたはWAN 120に接続されたエンドポイント110上で実行されるプロセスまたはアプリケーションは、インターネットにアクセスしようと試みる。インターネットにアクセスするため、例えば、インターネットサービスにアクセスするため、または、インターネットリソースにアクセスするために、プロセスまたはアプリケーション110は、最初に解決されるべき、ドメイン名を利用して、インターネットサービスまたはインターネットリソースにアクセスすることができる。ドメイン名を利用するために、プロセスまたはアプリケーション110は、ドメイン名を介してインターネットサービスまたはインターネットリソースにアクセスしようと試みることができ、そして、エンドポイント110上で実行されるエージェントは、ドメイン名を含むネットワークコール(network call)をインターセプトし、そして、元々はアップストリームDNSリゾルバ150に送られるドメイン名システム(DNS)クエリを、DNSリゾルバまたはファイアウォール130に迂回(divert)または誘導(steer)することができる。いくつかの実施形態において、迂回されたDNSクエリは、ハイパーテキスト転送プロトコルセキュア(HTTPS)上でDNSリゾルバまたはファイアウォール130に送られ、そして、迂回されたDNSクエリは、元のDNSクエリに加えて、プロセスIDと、エンドポイントメタデータ、ユーザメタデータ、及び/又は、プロセスメタデータのうちの1つ以上と、を含むプロセス情報を含んでいる。いくつかの実施形態において、プロセス情報は、プロセスIDと、ホスト名、アクティブ・ディレクトリ・ドメイン、オペレーティングシステムのタイプおよびバージョン、及び/又は、ネットワークインターフェイスのうちの1つ以上と、を含んでいる。
【0019】
いくつかの実施態様において、エンドポイント110は、コンピュータ、ラップトップ、携帯電話、タブレット、等である。典型的には、エンドポイント110上にロードされたプロセスまたはアプリケーションがドメイン名を使用してインターネットにアクセスしようとすると、エンドポイント110上で動作しているオペレーティングシステムに構築されたエージェントは、ドメイン名に関連するIPアドレスを獲得するためにDNSクエリを獲得し、そして、DNSクエリをDNSリゾルバに転送して、DNSクエリに含まれるドメイン名に基づいてIPアドレスを獲得する。いくつかの実施形態において、DNSクエリは、DNSリゾルバまたはファイアウォール130によって、DNSセキュリティ検出器160に転送することができる。いくつかの実施形態において、DNSセキュリティ検出器160は、悪意のあるDNSメッセージ、または、望ましくないDNSメッセージを検出する。
【0020】
いくつかの実施形態において、DNSリゾルバまたはファイアウォール130は、コンフィグレーション(例えば、ポリシー管理)及び/又はロギングのためにマネジメント140と通信する。
【0021】
典型的には、主要なオペレーティングシステム(例えば、Windows、MacOS、Linux(登録商標)、等)は、カーネルにおいて確立されたTCPまたはUDPフローのための追加のメタデータを提供するメカニズムを有している。いくつかの実施形態において、追加的なメタデータは、プロセスIDを含むプロセス情報を含んでいる。
【0022】
第1に、エージェントは、DNSメッセージの制御を獲得する。
【0023】
一つの例として、Windowsオペレーティングシステム(OS)を実行するコンピュータにおいて、Windowsオペレーティングシステムは、トラフィックダイバーティング、トラフィックステアリング、またはトラフィックリダイレクトと称され得る、任意の外向(outgoing)DNSクエリの制御を獲得するためのユーザースペースプログラム(user space program)を提供する。Windowsでは、Windows Filtering Platform(WFP)フレームワークにより、ユーザースペースプログラムが、カーネルドライバをWFPフレームワークの中へインストールし、任意の指定された送信IPパケットをユーザースペースプログラムに迂回することができる。
【0024】
別の例において、MacOSを実行しているコンピュータでは、ユーザースペースプログラムのために、NetworkExtensionフレームワークが提供され、カーネルのネットワーク機能を拡張する。NEDNSProxyProviderと呼ばれるAPIは、ユーザースペースプログラムが外向DNSトラフィックを制御できるようにすることができる。代替的に、ユーザースペースプログラムは、MacOSのBSDカーネルにおけるファイアウォールを使用して、外向DNSクエリをローカルプロキシにリダイレクトすることができる。
【0025】
さらに別の例において、Linux(登録商標)を実行しているコンピュータでは、ネットフィルタフレームワークは、カーネルからユーザスペースプロキシへのあらゆる種類のトラフィックのリダイレクトを可能にする、iptables target NFQUEUEを提供する。一つの例として、ポート53に対するTCPおよびUDPトラフィックのiptablesルールは、NFQUEUEにリダイレクトするように設定することができ、これにより、エージェントはDNSクエリを制御することができる。
【0026】
代替的に、いくつかの実施形態において、任意のオペレーティングシステムを実行するエンドポイント上で実行されるエージェントは、ローカルホスト(例えば、127.0.0.1)でUDPまたはTCPポート53をリスニング(listening)することによって、DNSプロキシとして機能することができ、そして、エンドポイントは、ローカルホスト(例えば、127.0.0.1)をデフォルトDNSサーバであるように設定する。この実施形態において、ユーザまたはシステム管理者は、例えば、ログイン時に実行される手動コンフィグレーションまたはスクリプトを介して、このコンフィグレーションを有するようにエンドポイントを特別に構成する必要がある。
【0027】
第2に、エージェントは、DNSクエリを生成したプロセスの情報を獲得する。
【0028】
一つの例として、Windowsオペレーティングシステム(OS)を実行しているコンピュータにおいて、ユーザープログラムは、WFPドライバをインストールし、各フローのプロセスIDを獲得することができる。
【0029】
別の例において、MacOSを実行するコンピュータは、「pktap」(packet TAP)と呼ばれる仮想インターフェイスを使用して、任意のネットワークインターフェイスからのトラフィックをミラー(mirror)し、そして、プロセスIDを含む対応するプロセス情報でトラフィックを豊富にすることができる。「pktap」インターフェイスからキャプチャされた各パケットについて、パケットのヘッダは、プロセスIDを含むプロセス情報を含むことができる。
【0030】
続いて、プロセスIDを含むプロセス情報を使用して、DNSセキュリティを実行することができる。
【0031】
図1Bは、プロセス情報を使用してDNSセキュリティを提供するための環境に係る別の実施形態を示している。いくつかの実施形態において、環境1000は、セキュリティ検出器を伴うDNSエージェント1010を含む、エンドポイント1020を含んでいる。マネジメント1040は、図1Aのマネジメント140と対応しており、そして、アップストリームDNSリゾルバ1030は、図1AのアップストリームDNSリゾルバ150と対応している。
【0032】
いくつかの実施形態において、環境1000においては、セキュリティ検出器を伴うDNSエージェント1010は、エンドポイント1020上で動作し、そして、エンドポイント1020の中でDNSセキュリティ検出を実行する。DNSクエリが、セキュリティ検出器1010によって許可されると決定された場合、セキュリティ検出器を伴うDNSエージェント1010は、DNSクエリを解決するために、アップストリームDNSリゾルバ1030と通信する。
【0033】
いくつかの実施形態において、セキュリティ検出器を伴うDNSエージェント1010は、コンフィグレーション及び/又はロギングのためにマネジメント1040と通信する。
【0034】
図1Cは、プロセス情報を使用してDNSセキュリティを提供するための環境に係るさらに別の実施形態を示している。いくつかの実施形態において、環境1050は、DNSセキュリティ検出器1060と通信するDNSエージェント1052を含む、エンドポイント1054を含んでいる。マネジメント1056は、図1Aのマネジメント140と対応しており、そして、アップストリームDNSリゾルバ1058は、図1AのアップストリームDNSリゾルバ150と対応している。
【0035】
いくつかの実施形態において、環境1050においては、DNSエージェント1052は、エンドポイント1054上で動作しており、そして、DNSトラフィックを制御し、かつ、DNSトラフィックを対応するプロセスと相関(correlates)させる。一つの態様として、DNSエージェント1052は、DNSセキュリティを実行しない。DNSエージェント1052は、DNSセキュリティを実行すること、および、DNSクエリが進行を許可されるべきか否かについて結果を提供することのために、DNSメッセージをDNSセキュリティ検出器1060に転送する。DNSクエリが、DNSセキュリティ検出器1060によって、進行を許可されるものと決定される場合、DNSエージェント1052は、DNSクエリを解決するために、DNSクエリをアップストリームDNSリゾルバ1058に転送する。
【0036】
いくつかの実施形態において、DNSエージェント1052およびDNSセキュリティ検出器1060は、コンフィグレーション及び/又はロギングのためにマネジメント1056と通信する。
【0037】
図1Dは、プロセス情報を使用してDNSセキュリティを提供するための環境に係るさらに別の実施形態を示している。いくつかの実施形態において、環境1070は、LANまたはWAN 1074を介して、DNSセキュリティ検出器を含むDNSリゾルバ/プロキシ/ファイアウォール1076と通信する、エンドポイント1072を含んでいる。マネジメント1078は、図1Aのマネジメント140と対応しており、そして、アップストリームDNSリゾルバ1080は、図1AのアップストリームDNSリゾルバ150と対応している。
【0038】
いくつかの実施形態において、この環境1070においては、エンドポイント1072上で実行されるDNSエージェントは、公開リゾルバまたは別個のDNSセキュリティ検出器とは直接的に通信せず、そして、DNSクエリおよびプロセス情報を受信する、DNSセキュリティ検出器を含む専用のDNSリゾルバ/プロキシ/ファイアウォール1076と通信する。そして、DNSセキュリティ検出器は、DNSクエリの進行が許可されるべきか否かを決定する。DNSセキュリティ検出器を含む専用DNSリゾルバ/プロキシ/ファイアウォール1076が、DNSクエリは進行が許可されるべきであると判断した場合、DNSセキュリティ検出器を含む専用DNSリゾルバ/プロキシ/ファイアウォール1076は、DNSクエリを解決するために、DNSクエリを、アップストリームDNSリゾルバ1080に転送する。
【0039】
いくつかの実施形態において、DNSセキュリティ検出器を含む専用DNSリゾルバ/プロキシ/ファイアウォール1076は、コンフィグレーション及び/又はロギングのためにマネジメント1078と通信する。
【0040】
図2は、プロセス情報の一つの例を示している。
【0041】
いくつかの実施形態において、エンドポイント上で動作しているDNSエージェントが、外向DNSクエリに関連するプロセス情報を獲得すると、DNSエージェントは、プロセス情報を伴うDNSクエリをDNSリゾルバまたはファイアウォールに対して送信する。ファイアウォールは、DNS検出器を含み、または、DNS検出器に転送する。いくつかの実施形態において、プロセス情報を伴うDNSクエリは、有効なDNSメッセージ、または、他のフォーマット(例えば、JavaScriptオブジェクト表記(JSON)、拡張可能マークアップ言語(XML)、等)において送信される。いくつかの実施形態において、プロセス情報を伴うDNSクエリは、標準DNSメッセージとしてエンコーディングされ、そして、HTTPSプロトコルを介して転送される。プロセス情報を元のDNSクエリに追加するために、RFC 5891で定義されているように、プロセス情報は、DNSプロトコルのEDNS0オプション(または、DNSの標準拡張メカニズム)を介して追加することができる。
【0042】
この例において、プロセス情報200は、直列化(serialized)されたJSON文字列として保管されており、そして、プロセスID 4408、親プロセスID 4044、プロセス名「powershell.exe」、プロセス実行可能画像パス「c:\\windows\\system32\\windowssherl\\v1.0\\powershell.exe」、引数(argument)を含む、プロセスコマンドライン「C:\\Windows\\System32\WindowsPowerShell\v1.0\\\powershell.exe」、プロセス実行可能ファイルのSHA256値「sha256」:「9f914d4270f215501044acd32aaef1419d404fddddfa5d3b48ccd9f」、および、プロセス実行可能ファイルのコードシグナリング状態「2」を含む。いくつかの実施形態において、プロセス情報は、さらに、コードシグナリング証明書を含み、それは、プロセス実行可能ファイルを解析することによって獲得することができる。一つの例として、コードシグナリング証明書は、プロセス実行可能ファイル(例えば、Windows Portable Executable(PE) ファイル)の構文解析(parsing)を介してロケート(located)され、それは、プロセス実行可能イメージパスを使用してロケートされている。
【0043】
この例において、メタデータ200は、さらに、エンドポイントのホスト名「DESKTOP-INP9BQQ」、カレントユーザーの名前「DESKTOP-INP9BQQ\\Claud」、エンドポイントのオペレーティングシステム「windows」、オペレーティングシステムバージョン情報「10」、等を含んでいる。
【0044】
図3は、プロセス情報を使用してDNSセキュリティを提供するためのワークフローに係る一つの例を示している。ワークフロー300は、Windows上の実装であり、以下のオペレーションを含んでいる。
【0045】
いくつかの実施態様において、オペレーション1およびオペレーション3は、異なるスレッドで並列に実行されている。例えば、両方のオペレーションは、カーネル・コールバックに依存しており、そして、どのオペレーションを第1に実行するかは保証されていない。別の言葉で言えば、オペレーション1およびオペレーション3は、2つのオペレーションを区別するためのラベルが付されているが、必ずしもオペレーション3がオペレーション1の後に行われることを意味するわけではない。
【0046】
オペレーション1において、DNSエージェントは、WindowsのWFPサブシステム(FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4レイヤ)を使用して、宛先ポートの53を有している全ての確立されたTCPまたはUDPフローをトレースすることができる。新しいDNSフローが確立されると、いつも、DNSエージェントは、フロー情報を獲得し、それは、送信元IP、送信元ポート、宛先IP、宛先ポート、および、プロセスIDを含んでいる。
【0047】
オペレーション2において、DNSエージェントは、WindowsのWFPサブシステム(FWPM_LAYER_OUTBOUND_IPPACKET_V4層)を使用して、パケットの宛先ポートが53の場合に、全ての外向TCPまたはUDPパケットを迂回(divert)する。いくつかの実施形態において、迂回は、パケットが、その元の宛先に送信されないことを意味する。また、DNSエージェントは、ルックアップ構造から、4個のタプルまたはフロー情報(送信元IP、送信元ポート、宛先IP、宛先ポート)に基づいて、プロセス情報を獲得するよう試みることができる。プロセス情報が存在しない場合、DNSエージェントは、オペレーション1が完了するのを待つことができる(例えば、100ミリ秒)。
【0048】
4個のタプルまたはフロー情報(送信元IP、送信元ポート、宛先IP、宛先ポート)とプロセス情報との関係は、メモリ内のルックアップテーブルといった、ルックアップ構造へと更新される。
【0049】
オペレーション3において、フロー情報を獲得した後で、DNSエージェントは、標準Windows APIを使用して、例えば、名前、コマンド行、実行可能パス、実行可能コード署名、等といった、プロセス情報を獲得することができる。
【0050】
オペレーション4において、DNSエージェントが、元のDNSクエリパケットおよび元のDNSクエリパケットに関連するプロセス情報を獲得した後で、DNSエージェントは、DNSリソースレコード(RR)を、直列化されたプロセス情報のデータを伴うOPTのタイプ(DNSプロトコルにおいて定義された擬似レコードのタイプ)で構築し、拡張DNSクエリを獲得するために、DNS拡張メカニズム(EDNS0)によって定義された技法を使用して、RRを元のDNSクエリメッセージの中へ挿入し、そして、DNSオーバHTTPS(DNS-over-HTTPS)規格で定義されたフォーマットで、指定されたプロトコル(例えば、HTTPS)を介して、特定のDNSリゾルバ(例えば、クライアントによって制御されるDNSリゾルバ)に対して拡張DNSクエリを転送することができる。
【0051】
オペレーション5において、指定されたDNSリゾルバは、RRおよび元のDNSクエリからプロセス情報を獲得するために拡張DNSクエリを解析し、全てのプロセス情報および元のDNSクエリをDNSセキュリティAPI(検出器)に対して送信し、そして、DNSクエリがDNSセキュリティAPI(検出器)からの悪意ある又は望まれないものであるか否か、および、元のDNSパケットが、現在のポリシに基づいて、ブロックされるべきか否かについての応答を待つことができる。
【0052】
元のDNSクエリがDNSセキュリティAPI(検出器(Detector))によって拒否された場合、指定されたDNSリゾルバは、DNSエージェントを用いた拡張DNSクエリの解決を中止または終了することができ、そして、従って、元のDNSクエリがタイムアウトし、または、指定されたDNSリゾルバが事前に設定されたシンクホールIPアドレスをDNSエージェントに提供し、その結果、元のDNSクエリは事前に設定されたシンクホールIPアドレスに解決される。
【0053】
いくつかの実施形態において、アラートおよびログは、指定されたDNSリゾルバ側、及び/又は、DNSセキュリティAPI(検出器)側のいずれかで、このオペレーションにおいて提供され得る。
【0054】
オペレーション6において、元のDNSクエリがDNSセキュリティAPI(検出器)によって許可される場合、特定のDNSリゾルバは、元のDNSクエリをアップストリームのDNSリゾルバに送信することができる。アップストリームDNSリゾルバは、特定のパブリックDNSリゾルバ(例えば、8.8.8.8)、企業顧客の内部DNSリゾルバ、元のDNSクエリの元の宛先IPアドレス、等であり得る。
【0055】
アップストリームDNSリゾルバからの結果が獲得された後、指定されたDNSリゾルバは、DNS-over-HTTPレスポンスにおけるDNS-over-HTTP標準によって、応答をDNSエージェントに戻り迂回することができ、そして、DNSエージェントは、転送されたAPIインターフェイスを通して元のDNSリゾルバに応答を返すことができ、その結果、問合せを開始した元のプロセスは、DNS応答を受け取ることができる。
【0056】
その後で、DNSエージェントは、DNSクエリおよびプロセス情報に基づいて、アクションを実行することができる。
【0057】
図4は、プロセス情報を使用してDNSセキュリティを提供するプロセスの一つの実施形態を説明するフローチャートである。いくつかの実施形態において、プロセス400は、図1Aのエンドポイント110上で実行されるDNSエージェント、図1BのDNSエージェント1010、図1CのDNSエージェント1052、または、図1Dのエンドポイント1072上で実行されるエージェントを使用して実施され、そして、以下を含んでいる。
【0058】
410において、DNSエージェントは、アプリケーションがドメイン名を使用してインターネットサービスにアクセスしていることを決定する。例えば、DNSエージェントは、エンドポイント上で実行されているブラウザ(例えば、Google ChromeまたはMicrosoft Edge)がfacebook.comにアクセスしようと試みているエンドポイントにおいて実行されていること、または、悪意のあるアプリケーションがA2d34xx.comにアクセスしようと試みていることを検出する。
【0059】
420において、DNSエージェントは、関連するドメイン名システム(DNS)クエリと共に、アプリケーションに関連付けられたプロセス情報を識別して、ドメイン名に関連付けられたIPアドレスを特定する。例えば、DNSエージェントは、ドメイン名を使用してインターネットにアクセスしようと試みているブラウザまたは悪意のあるアプリケーションに関連付けられたプロセスID 4103を含む、DNSクエリおよびプロセス情報を識別する。
【0060】
430において、DNSエージェントは、プロセス情報および関連するDNSクエリを、DNSセキュリティサービスに送信する。
【0061】
440において、DNSエージェントは、DNSセキュリティサービスからの応答に基づいてアクションを実行する。いくつかの実施形態においては、関連するDNSクエリが悪意または望まないものであることをDNSセキュリティサービスからの応答が示す場合、アクションは、次のうち1つ以上を含む。DNSクエリまたは応答を破棄する、DNSクエリをシンクホールする、ユーザにアラートを送信する、かつ/あるいは、管理システムにログを書き込む、ことである。いくつかの実施形態において、本アクションは、アプリケーションまたはプロセスに関連するエンドポイントを隔離すること、プロセス情報に関連するファイルを除去すること、DNSクエリを発行したプロセスを終了すること、等を含む。
【0062】
プロセス400の利点のいくつかは、DNSリクエストと共にプロセス情報を含めることによって、DGA検出における精度の向上(例えば、リコールレートの向上、偽陽性率の低下、等)、命令と制御(command and communication)通信のために良性ドメイン(例えば、Twitter、Github、Blogspot)のシーケンスを使用するマルウェアの検出における精度の向上、正規プロセスが送信すべきでない異常トラフィックの検出における精度の向上、等を含んでいる。加えて、プロセス情報は、また、危殆化(compromise)のよりきめ細かいコンテキストを提供し、そして、よりきめ細かい行動を導くことができる。特定のプロセスを終了する、特定の悪意のあるファイルのセットを隔離する、等といったものである。
【0063】
図5は、DNSプロファイルを使用する異常の検出に係る一つの例を示している。
【0064】
本実施例において、プロセスのDNSプロファイルは、登録者(registrant)に関連付けられたドメインのグループを含んでいる。例えば、Skypeプロファイルにおいて、ドメイン「skype.com」、「skype.net」、および「skypesets.com」が、Skype.exeプロセスに関連付けられている。別の例では、Akamaiプロファイルにおいて、ドメイン「akadns.net」は、登録者「Akamai Inc.」と関連付けられている。さらに別の例では、AOLプロファイルにおいて、ドメイン「aolcdn.com」は、登録者「AOL Inc.」と関連付けられている。さらに別の例では、Microsoftプロファイルにおいて、登録者「Microsoft Corp.」と関連付けられているドメイン「Hotmail.com」が多数存在している。
【0065】
DNSプロファイルが確立された後で、プロセス(例えば、skype.exe)からDNSクエリを受信すると、DNSエージェントは、DNSクエリに関連するドメインが既知のドメインのリスト(例えば、確立されたプロファイルに関連付けられたドメインのリスト)中に見つかるか否かを決定し、そして、ドメインが既知のドメインのリスト中で見つかる場合、DNSエージェントは、ドメインが既知のドメインのリスト中で見つかると決定することができ、そして、その後で、DNSクエリをブロックまたはシンクホールし、かつ/あるいは、アラートを送信することができる。
【0066】
別の例では、「powerpoint.exe」プロセスのプロファイルを使用して、多数のログを検討した後で、「powerpoint.exe」がupdate.microsoft.comおよびdownload.microsoft.comに関連するドメインをクエリし、そして、両方のMicrosoftドメインはMicrosoftに登録されていると判断することができる。従って、「powerpoint.exe」がMicrosoft.comに関連しないドメインをクエリする場合、異常なドメインである判定(verdict)をすることができる。
【0067】
さらに別の例において、いくつかのマルウェアは、その命令と制御(C2)通信のためにいくつかの正規のWebサービスを利用する。例えば、マルウェアはtwitter.com、github.com、およびdropbox.comをC2通信に使用することができる。この例において、3個のクエリそれぞれは正当であるが、定義された期間内に3個のドメインを順番にクエリする単一のプロセスは疑わしい。DNSクエリはプロセスIDに基づいてグループ化されるので、DNSクエリを事前に定義された期間内に正規のドメインの既知のパターン/シーケンスと一致させるプロセスは、悪意があると判断される。
【0068】
さらに別の例において、DNSセキュリティ検出器は、プロセス情報が新しく登録されたドメインに関連しており、かつ、システムプロセスに関連しているか否かを判定することができる。そして、プロセス情報が新しく登録されたドメインに関連しており、かつ、システムプロセスに関連していると、DNSセキュリティ検出器が判定した場合、DNSセキュリティ検出器は、DNSクエリを発行したプロセスまたはアプリケーションがマルウェアであると判定することができる。
【0069】
さらに別の例において、DNSセキュリティ検出器は、プロセス情報がデジタル署名なしプロセス(unsigned process)に関連するか否かを決定することができ、そして、プロセス情報がデジタル署名なしプロセスに関連していることをDNSセキュリティ検出器が決定する場合、DNSセキュリティ検出器は、DNSクエリを発行したプロセスまたはアプリケーションがマルウェアであると決定することができる。
【0070】
さらに別の例では、DNSクエリに関連するプロセス情報を持つことで、DGAおよびDNSトンネル検出の精度を高めることができる。
【0071】
例えば、5個のDNSクエリが1分間で受信されるものと仮定すると、DNSクエリの各ドメインは、2文字長のトップレベルドメイン(TLD)を伴う、5文字のランダム文字及び/又はデジットであり、そして、ドメインの少なくとも1つがNXDOMAIN(登録されていないドメイン)である。この例では、5個のDNSクエリが同じソースプロセスから来ているので、DNSクエリを生成しているプロセスがマルウェアQsnatchであると、判断することができる。
【0072】
前述の実施形態は、理解を明確にするために、ある程度詳細に説明されているが、本発明は、提供される詳細に限定されるものではない。本発明を実施するための多くの代替的な方法が存在している。開示された実施形態は、例示的なものであり、かつ、限定的なものではない。
図1A
図1B
図1C
図1D
図2
図3
図4
図5