(57)【要約】  ネットワークをスキャンするためのシステムは、インターフェースとプロセッサを含む。このインターフェースは、ネットワークアドレスのセットをスキャンする指示を受信するように構成されている。このプロセッサは、利用可能なスキャンノードのセットを決定し、かつ利用可能なスキャンノードのセットを使用して、ネットワークアドレスのセットをスキャンするためのジョブプランを決定するように構成されている。このジョブプランには、1つ以上のジョブ部分が含まれる。このプロセッサは、１つ以上のジョブ部分のジョブ部分について、利用可能なスキャンノードのセットのスキャンノードを選択し、かつジョブ部分をスキャンノードに提供するように構成されている。【選択図】図１
2020510368.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークアドレスのセットをスキャンする指示を受信するように構成されているインターフェースと、
利用可能なスキャンノードのセットを決定し、
前記利用可能なスキャンノードのセットを使用して、前記ネットワークアドレスのセットをスキャンするための、1つ以上のジョブ部分を備えるジョブプランを決定し、そして
前記1つ以上のジョブ部分の内のジョブ部分に対して、
前記利用可能なスキャンノードのセットからスキャンノードを選択し、そして
前記スキャンノードに前記ジョブ部分を提供する
ように構成されているプロセッサと
を備える、ネットワークをスキャンするためのシステム。
【請求項２】
前記プロセッサが、匿名化システムを介して前記走査ノードと通信する、請求項１に記載のシステム。
【請求項３】
前記１つ以上のジョブ部分の内のジョブ部分が、前記ネットワークアドレスのセットの一部をスキャンする命令を備える、請求項１に記載のシステム。
【請求項４】
前記１つまたは複数のジョブ部分の内のジョブ部分が、ポートのセットを備える、請求項１に記載のシステム。
【請求項５】
前記１つまたは複数のジョブ部分の内のジョブ部分が、スキャンコマンドのセットを備える、請求項１に記載のシステム。
【請求項６】
前記スキャンノードが、前記１つ以上のジョブ部分の内のジョブ部分に少なくとも部分的に基づいて選択される、請求項１に記載のシステム。
【請求項７】
前記スキャンノードが、前記スキャンノードの物理的位置に少なくとも部分的に基づいて選択される、請求項１に記載のシステム。
【請求項８】
前記スキャンノードが、最近選択されていない前記スキャンノードに少なくとも部分的に基づいて選択される、請求項１に記載のシステム。
【請求項９】
前記スキャンノードが、ランダムにまたは擬似ランダムに選択される、請求項１に記載のシステム。
【請求項１０】
前記プロセッサが、更に、前記ジョブプランの結果を、格納するためにデータベースに提供するように構成されている、請求項１に記載のシステム。
【請求項１１】
前記プロセッサは、更に、前記スキャンノードからスキャンの結果を受信するように構成されている、請求項１に記載のシステム。
【請求項１２】
前記プロセッサが、更に、スキャンの結果に少なくとも部分的に基づいて、前記ジョブプランを修正するように構成されている、請求項１１に記載のシステム。
【請求項１３】
前記ジョブプランを修正することが、１つ以上の異なるスキャンノードを使用して、前記１つ以上のジョブ部分の内のジョブ部分のスキャンの再試行を追加することを備える、請求項１２に記載のシステム。
【請求項１４】
前記ジョブプランを修正することが、１つ以上の近くのスキャン位置を前記ジョブ部分に追加することを備える、請求項１２に記載のシステム。
【請求項１５】
前記ジョブプランを修正することが、１つ以上のフォローアップスキャンを前記ジョブ部分に追加することを備える、請求項１２に記載のシステム。
【請求項１６】
前記利用可能なスキャンノードのセットが、クラウドコンピューティングハードウェアを使用して実装される、請求項１に記載のシステム。
【請求項１７】
前記利用可能なスキャンノードのセットが、前記ネットワークをスキャンするための前記システムとは異なるシステムを使用して実装される、請求項１に記載のシステム。
【請求項１８】
前記利用可能なスキャンノードのセットが、前記ネットワークをスキャンするための前記システムとの関連付けを識別するための公に見える情報を含まない、請求項１に記載のシステム。
【請求項１９】
ネットワークアドレスのセットをスキャンする指示を受信するステップと、
プロセッサを使用して、利用可能なスキャンノードのセットを決定するステップと、
前記利用可能なスキャンノードのセットを使用して、前記ネットワークアドレスのセットをスキャンするための、1つ以上のジョブ部分を備えるジョブプランを決定するステップと、
前記1つ以上のジョブ部分のジョブ部分に対して、
利用可能なスキャンノードのセットのスキャンノードを選択し、そして
前記ジョブ部分を前記スキャンノードに提供する
ステップと、
を備えるネットワークをスキャンする方法。
【請求項２０】
ネットワークをスキャンするためのコンピュータプログラム製品であって、前記コンピュータプログラムが、非一時的コンピュータ可読記憶媒体に具現化されていて、
ネットワークアドレスのセットをスキャンする指示を受信するステップ、
プロセッサを使用して、利用可能なスキャンノードのセットを決定するステップ、
前記利用可能なスキャンノードのセットを使用して、前記ネットワークアドレスのセットをスキャンするための、1つ以上のジョブ部分を備えるジョブプランを決定するステップ、
前記1つ以上のジョブ部分のジョブ部分に対して、
利用可能なスキャンノードのセットのスキャンノードを選択し、そして
前記ジョブ部分を前記スキャンノードに提供する
ステップ、
のためのコンピュータ命令を備える、コンピュータプログラム製品。
【発明の詳細な説明】
【背景技術】
【０００１】
インターネットに接続されるアセット（例えば、コンピュータ、モバイルデバイス、サーバシステム、クライアントシステム、モノのインターネットデバイス、等）は、インターネットと通信するコンピューティングシステムを備える。インターネットに接続されるアセットは、通常１つ以上の公開アドレス指定可能な通信ポートを含み、これによりインターネットに接続される如何なるデバイスも、アセットを照会することが可能となる。いくつかのデバイスは、１つ以上の公開アクセス可能なポートを介して、様々な接続タイプ（例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）接続、セキュア・ハイパーテキスト転送プロトコル（ＨＴＴＰＳ）接続、ファイル転送プロトコル（ＦＴＰ）接続、セキュアファイル転送プロトコル（ＦＴＰＳ）接続、ｔｅｌｎｅｔ接続、セキュアシェル（ＳＳＨ）接続、等）を可能にする。インターネットに接続されるアセットは、様々な構成オプションを含む、様々なソフトウェアを実行する、種々のタイプのハードウェアデバイスとすることができるが、これはセキュリティの脆弱性が発生する無数の可能性を生み出す。典型的なシステムアドミニストレータが、監視下にある全てのシステムの全ての詳細に注意を払うことはできないので、システムの脆弱性は検出されずかつそれが修正されないという問題が発生する。ネットワークアドレスを広範囲にスキャンすることは、他の方法では得ることが出来ない理解を提供することを可能にする。しかしながら、これは、スキャンを実行するために、大量のコンピューティングパワ―と通信帯域幅を必要とする。
【発明の概要】
【課題を解決するための手段】
【０００２】
本発明は、プロセス、装置、システム、組成物、コンピュータ可読格納媒体上に具現化されたコンピュータプログラム製品、および／またはプロセッサに結合されたメモリに格納されているおよび／またはメモリによって提供される命令を実行するように構成されているプロセッサ、を含む多数の方法で実施することができる。本明細書では、これらの実装、または本発明が取り得る他の形態を、技術と呼ぶ場合がある。一般に、開示されたプロセスのステップの順序は、本発明の範囲内で変更させることができる。特に明記しない限り、タスクを実行するように構成されていると記載されているプロセッサまたはメモリのようなコンポーネントは、特定の時間にタスクを実行するように一時的に構成されている一般的なコンポーネント、またはタスクを実行するように製造されている特定のコンポーネントとして実装することができる。本明細書で使用される「プロセッサ」という用語は、コンピュータプログラム命令のようなデータを処理するように構成されている１つまたは複数のデバイス、回路、および／または処理コアを意味する。
【０００３】
本発明の１つ以上の実施態様の詳細な説明は、以下に、本発明の原理を例示する添付の図と共に提供される。本発明は、そのような実施態様に関連して説明されるが、本発明はいかなる実施態様にも限定されることはない。本発明の権利範囲は、特許請求の範囲によってのみ限定され、本発明は、多数の代替物、修正物、および均等物を包含する。本発明の完全な理解を提供するために、多数の特定の詳細が以下に記載される。これらの詳細は例を説明する目的で提供されていて、そして本発明は、特許請求の範囲に従ってこれらの特定の詳細の一部または全て無しに実施することができる。明確性のために、本発明に関する技術分野において公知である技術事項は、本発明が不必要に不明瞭にならないように、詳細には記載されていない。
【０００４】
ネットワークをスキャンするためのシステムは、ネットワークアドレスのセットをスキャンする指示を受信するインターフェースと、利用可能なスキャンノードのセットを決定し、このスキャンノードのセットを使用して、ネットワークアドレスのセットをスキャンするための、1つ以上のジョブ部分を備えるジョブプランを決定し、そして1つ以上のジョブ部分の各ジョブ部分に対して、スキャンノードのセットからスキャンノードを選択し、ジョブ部分をスキャンノードに提供し、そしてスキャンノードからスキャンの結果を受け取る、プロセッサとを備える。いくつかの実施態様では、システムは、更に、プロセッサに結合されていてかつプロセッサに命令を提供するように構成されているメモリを備える。
【０００５】
いくつかの実施態様では、ネットワークスキャンのためのシステムは、ネットワーク上のいくつかまたは全てのコンピュータをスキャンすることにより、ネットワークに関する情報を決定するためのシステムを備える。いくつかの実施態様では、ネットワークスキャンのためのシステムは、ネットワークの完全な外部ビューを決定することにより、ネットワークセキュリティを改善するためのシステムを備える。様々な実施態様では、ネットワークスキャンのためのシステムは、組織に関連付けられているデバイス、デバイスのオープンポート、デバイス上で実行されるサービス、複数のデバイスが関連付けられていることを示す情報、デバイスの構成情報、デバイスの暗号化情報、デバイスのネットワーク設定、または他の適切な情報をスキャンする。いくつかの実施態様では、ネットワークスキャンのためのシステムは、インターネットの一部をスキャンする。いくつかの実施態様では、ネットワークスキャンのためのシステムは、インターネット全体をスキャンする。一部の実施態様では、ネットワークスキャンのためのシステムが、大規模ネットワーク（例えば、インターネット全体）をスキャンする要求を受信すると、このスキャンは、分散型システムを使用して実行される。いくつかの実施態様では、分散型システムは、マスターシステム（例えば、ネットワークスキャンコントローラ）と、１つ以上のスレーブシステム（例えば、スキャンノード）とを備える。いくつかの実施態様では、このマスターシステムは、要求されたスキャンおよび利用可能なスキャンノードのセットに基づいてジョブプランを決定し、この要求されたスキャンを達成するために、利用可能なスキャンノードにジョブプランの部分を提供し、そしてこのスキャンノードから受信した結果を組み合わせて完全なスキャンの結果を作成する。
【０００６】
本発明の様々な実施態様は、以下の詳細な説明および添付の図面に開示されている。
【図面の簡単な説明】
【０００７】
【図１】ネットワークシステムの一実施態様を示すブロック図である。
【図２】ネットワークをスキャンするためのシステムの一実施態様を示すブロック図である。
【図３】ネットワークスキャンシステムの実施態様を示すブロック図である。
【図４】ネットワークシステムの一実施態様を示すブロック図である。
【図５】ネットワークスキャンシステムの一実施態様を示すブロック図である。
【図６】スキャンノードの一実施態様を示すブロック図である。
【図７】ネットワークをスキャンするプロセスの一実施態様を示すフロー図である。
【図８】ジョブプランを決定するプロセスの一実施態様を示すフロー図である。
【図９】必要に応じて、ジョブ部分の結果に基づいてジョブプランを修正するプロセスの一実施態様を示すフロー図である。
【発明を実施するための形態】
【０００８】
図１は、ネットワークシステムの一実施態様を示すブロック図である。いくつかの実施態様では、図１のネットワークシステムは、ネットワークスキャンのためのシステムを備える。図示の例では、図１は、ネットワーク１００を備える。様々な実施態様では、ネットワーク１００は、ローカルエリアネットワーク、ワイドエリアネットワーク、有線ネットワーク、無線ネットワーク、インターネット、イントラネット、ストレージエリアネットワークまたは他の適切な通信ネットワーク、の内の１つ以上を備える。アドミニストレータシステム１０２およびネットワークスキャンシステム１０４は、ネットワーク１００を介して通信する。アドミニストレータシステム１０２は、アドミニストレータ用のシステムを備える。様々な実施態様では、アドミニストレータシステム１０２は、アドミニストレータが、次の目的のためのシステムを備え、その目的は、アプリケーションシステム上のアプリケーションにアクセスする、データベースシステム上のデータにアクセスする、ネットワークスキャンシステム１０４にネットワークスキャンプロセスを実行するよう指示する、ネットワークスキャンシステム１０４からデータを受信する、ネットワークシステム（例えば、ネットワークシステム１０６）を構成する、ネットワークシステムからデータを受信する、または他の適切なものである。いくつかの実施態様では、アドミニストレータシステム１０２は、プロセッサとメモリを備える。ネットワークスキャンシステム１０４は、ネットワークをスキャンするためのシステムを備える。いくつかの実施態様では、ネットワークスキャンシステム１０４は、アドミニストレータシステム１０２からのコマンドに応答して、ネットワークシステムに関連付けられているデータをスキャンするシステムを備える。いくつかの実施態様では、ネットワークスキャンシステム１０４は、ネットワークシステムのセット（例えば、ネットワークシステム１０６、ネットワークシステム１０８、ネットワークシステム１１０、ネットワークシステム１１２、ネットワークシステム１１４、ネットワークシステム１１６、ネットワークシステム１１８、およびネットワークシステム１２０）に関連付けられているデータをスキャンするシステムを備える。いくつかの実施態様では、ネットワークシステムのセットに関連付けられているデータをスキャンすることは、ネットワークシステムのセットに関連付けられている以前に格納されたデータを分析することを備える。いくつかの実施態様では、ネットワークシステムのセットに関連付けられているデータのスキャンは、ネットワークシステムのセットの1つ以上のネットワークシステムにペイロードを提供し、かつ応答が受信されるとこの受信された応答を分析することを備える。いくつかの実施態様では、ネットワークスキャンシステム１０４は、プロセッサとメモリを備える。図１の各ネットワークシステム（例えば、ネットワークシステム１０６）は、インターネットに接続されるシステム（例えば、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、タブレットコンピュータ、サーバシステム、モノのインターネットデバイス、等）を備える。様々な実施態様で��、図１のシステムは、８、１３、１９７、２２２２、百万、１億、または他の適切な数のネットワークシステムを備える。いくつかの実施態様では、図１の各ネットワークシステムには、インターネットアドレスが関連付けられている。いくつかの実施態様では、インターネットアドレスは、ＩＰ（例えば、インターネットプロトコル）アドレスを備える。図示される例では、ネットワークスキャンシステム１０４は、（例えば、スキャンするアドレスを決定すること、スキャンすること、およびスキャンの結果を分析することを含むネットワークスキャンの要素は、全て、ネットワークスキャンシステム１０４によって実行される）集中型ネットワークをスキャンするためのシステムを備える。
【０００９】
図２は、ネットワークスキャンシステムの一実施態様を示すブロック図である。いくつかの実施態様では、図２のネットワークスキャンシステムは、図１のネットワークスキャンのためのシステム１０４を備える。図示される例では、ネットワークスキャンシステム２００は、ネットワークスキャンコントローラ２０２、ネットワークスキャンデータベース２０３、ネットワーク２０４、および複数のスキャンノード（例えば、スキャンノード２０６、スキャンノード２０８、スキャンノード２１０、スキャンノード２１２、スキャンノード２１４、スキャンノード２１６、およびスキャンノード２１８）を備える。ネットワークスキャンコントローラ２０２は、（例えば、ユーザまたはアドミニストレータシステムから）ネットワークアドレスのセットをスキャンする指示を受信するシステムを備える。ネットワークスキャンコントローラ２０２は、複数のスキャンノードによって実行されることになるスキャンの部分を決定し、この要求されたスキャンの部分をそれぞれ実行するようスキャンノードに指示し、各スキャンノードから結果を受取り、この結果をネットワークスキャンデータベース（例えば、ネットワークスキャンデータベース２０３）に提供し、現在の結果と以前の結果（例えば、ネットワークスキャンデータベース２０３に格納されている以前の結果）との差を決定し、そして結果の指示、結果、またはこの結果の要約を要求者に提供する。いくつかの実施態様では、ネットワークスキャンコントローラ２０２は、クラウドコンピューティングハードウェアを使用して実装されるシステムを備える。いくつかの実施態様では、ネットワークスキャンコントローラ２０２は、スキャンノードのセット（例えば、スキャンノード２０８およびスキャンノード２１６）の指示を受信するシステムを備える。いくつかの実施態様では、スキャンノードは、スキャン用のネットワークシステムを備える。ネットワークスキャンコントローラ２０２は、ネットワークスキャンの結果を保存するためにネットワークスキャンデータベース２０３と通信する。ネットワークスキャンコントローラ２０２は、ネットワーク２０４を使用して複数のスキャンノードと通信する。様々な実施態様では、ネットワーク２０４は、ローカルエリアネットワーク、ワイドエリアネットワーク、有線ネットワーク、無線ネットワーク、インターネット、イントラネット、ストレージエリアネットワーク、または他の適切な通信ネットワーク、の１つ以上を備える。様々な実施態様では、ネットワークスキャンコントローラ２０２と通信する、１、２、４、７、１１、２５、９２、２９７、１００１、または他の適切な数のスキャンノードが、存在する。いくつかの実施態様では、複数のスキャンノードは、ネットワークスキャンコントローラ２０２から、かつ互いに、物理的にリモートに位置する。いくつかの実施態様では、スキャンノードは、クラウドコンピューティングハードウェアを使用して実装される。いくつかの実施態様では、スキャンノードは、ネットワークスキャンコントローラ２０２とは異なるシステム（例えば、異なるクラウドコンピューティングハードウェア）を使用して実装される。幾つかの実施態様では、スキャンノードは、それらがネットワークスキャンコントローラ２０２に関連付けられていることを識別するための公に見える公開情報を備えていない。
【００１０】
図３は、ネットワークスキャンシステムの一実施態様を示すブロック図である。いくつかの実施態様では、図３のネットワークをスキャンするためのシステムは、図１のネットワークスキャンのためのシステム１０４を備える。図示の例では、ネットワークスキャンシステム３００は、ネットワークスキャンコントローラ３０２、ネットワークスキャンデータベース３０３、ネットワーク３０４、匿名化システム３０５、および複数のスキャンノード（例えば、スキャンノード３０６、スキャンノード３０８、スキャンノード３１０、スキャンノード３１２、スキャンノード３１４、スキャンノード３１６、およびスキャンノード３１８）を備える。ネットワークスキャンコントローラ３０２は、（例えば、ユーザまたはアドミニストレータシステムから）ネットワークアドレスのセットをスキャンする指示を受信するためのシステムを備える。ネットワークスキャンコントローラ３０２は、複数のスキャンノードによって実行されることになるスキャンの部分を決定し、要求されたスキャンの一部をそれぞれ実行するようスキャンノードに指示し、各スキャンノードから結果を受け取り、この結果をネットワークスキャンデータベース（例えば、ネットワークスキャンデータベース３０３）に提供し、現在の結果と以前の結果（例えば、ネットワークスキャンデータベース３０３に格納されている以前の結果）との差を決定し、そして結果の指示、結果、または結果の要約を要求者に提供する。いくつかの実施態様では、ネットワークスキャンコントローラ３０２は、クラウドコンピューティングハードウェアを使用して実装されるシステムを備える。いくつかの実施態様では、ネットワークスキャンコントローラ３０２は、スキャンノードのセット（例えば、スキャンノード３０８およびスキャンノード３１６）の指示を受信するシステムを備える。いくつかの実施態様では、スキャンノードは、スキャン用のネットワークシステムを備える。ネットワークスキャンコントローラ３０２は、ネットワークスキャンの結果を保存するためにネットワークスキャンデータベース３０３と通信する。ネットワークスキャンコントローラ３０２は、匿名化システム３０５を介して複数のスキャンノードと通信する。様々な実施態様では、匿名化システム３０５は、匿名化仮想プライベートネットワーク、トンネリングシステム、または他の適切な匿名化システムを備える。匿名化システム３０５は、スキャン対象システムが、複数のスキャンシステムの背後にあるスキャンコントローラを識別することを困難にする。匿名化システム３０５は、ネットワーク３０４を使用して複数のスキャンノードと通信する。様々な実施態様では、ネットワーク３０４は、ローカルエリアネットワーク、ワイドエリアネットワーク、有線ネットワーク、無線ネットワーク、インターネット、イントラネット、ストレージエリアネットワーク、または他の適切な通信ネットワーク、の内の一つ以上を備える。様々な実施態様では、ネットワークスキャンコントローラ３０２と通信する、１、２、４、７、１１、２５、９２、２９７、１００１、または他の適切な数のスキャンノードが、存在する。いくつかの実施態様では、複数のスキャンノードは、ネットワークスキャンコントローラ３０２から、かつ互いに、物理的にリモートに位置する。いくつかの実施態様では、スキャンノードは、クラウドコンピューティングハードウェアを使用して実装される。いくつかの実施態様では、スキャンノードは、ネットワークスキャンコントローラ３０２とは異なるシステム（例えば、異なるクラウドコンピューティングハードウェア）を使用して実装される。いくつかの実施態様では、スキャンノードは、ネットワークスキャンコントローラ３０２に関連付けられていることを識別するための公に見える公開情報を備えていない。
【００１１】
図４は、ネットワークシステムの一実施態様を示すブロック図である。いくつかの実施態様では、ネットワークシステム４００は、図１のネットワークシステム（例えば、ネットワークシステム１０６）を備える。図示される例では、ネットワークシステム４００は、プロセッサ４０２、データストレージ４０４、およびネットワークインターフェース４０６を備える。いくつかの実施態様では、ネットワークシステム４００は、インターネットに接続されるアセット（例えば、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、タブレットコンピュータ、サーバシステム、モノのインターネットデバイス、または他の適切なインターネットに接続されるアセット）を備える。様々な実施態様では、プロセッサ４０２は、命令を実行する、データを処理する、コマンドに応答する、等のためのプロセッサを備える。様々な実施態様では、プロセッサ４０２は、汎用プロセッサ、マイクロコントローラ、並列処理システム、プロセッサのクラスタ、または任意の他の適切なプロセッサを備える。様々な実施態様では、データストレージ４０４は、データを格納するため、プロセッサ４０２のための命令を格納するため、構成情報を格納するため、または他の適切な情報を格納するため、のデータストレージを備える。様々な実施態様では、データストレージ４０４は、揮発性メモリ、不揮発性メモリ、磁気メモリ、光学メモリ、相変化メモリ、半導体メモリ、ディスクメモリ、テープメモリ、または任意の他の適切なメモリ、の内の１つ以上を備える。ネットワークインターフェース４０６は、ネットワークと通信するためのネットワークインターフェースを備える。図示の例では、ネットワークインターフェース４０６は、ネットワーク通信情報４０８および複数のポート（例えば、ポート４１０）を備える。様々な実施態様では、ネットワーク通信情報は、ネットワーク通信ソフトウェア、ネットワーク通信設定、ネットワーク通信データ、または他の適切なネットワーク通信情報を備える。複数のポートは、物理ポート（例えば、ネットワークシステム４００にケーブルを接続するためのプラグ）または仮想ポート（例えば、仮想ポート番号により識別される仮想通信チャネル）を備える。いくつかの実施態様では、ネットワークインターフェース４０６は、ネットワークアドレス（例えば、外部ネットワークアドレス指定機関によって割り当てられたネットワークアドレス）を備える。いくつかの実施態様では、ネットワークシステム４００との通信は、ポート番号と共にネットワーク４００のネットワークアドレスを指示することにより指定される。いくつかの実施態様では、ネットワークインターフェース４０６のいくつかのポートは、（例えば、オープンポートを備える）通信用に構成され、そしていくつかは、通信に応答しないように構成される。いくつかの実施態様では、オープンポート構成情報は、ネットワーク通信情報４０８に格納されている。いくつかの実施態様では、いくつかのポートは、１つ以上の、特定の通信サービス（例えば、ハイパーテキスト送信プロトコル（ＨＴＴＰ）、ファイル転送プロトコル（ＦＴＰ）、セキュアシェル（ＳＳＨ）、等）に関係付けられている。いくつかの実施態様では、サービスをポートに関連付ける構成情報は、ネットワーク通信情報４０８に格納されている。いくつかの実施態様では、ネットワーク通信情報４０８は、暗号化情報（例えば、公開ＳＳＨキー、証明書、等）を備える。いくつかの実施態様では、ネットワーク通信情報４０８は、１つまたは複数のネットワークシステム名（例えば、ホスト名、ドメイン名、ホスト名のセット、ホスト名パターン、等）を備える。いくつかの実施態様では、ネットワーク通信情報は、サービスまたはサービスのセットに関係付けられているテキスト情報（例えば、ウェルカムテキスト、接続拒否テキスト、サポートされていないサービステキスト、ファイルが見つからないテキスト、または他の適切なテキスト情報）を備える。いくつかの実施態様では、ネットワークインターフェース４０６は、通信仕様のセットに従って既に構成されている通信ソフトウェアのセットを実行するネットワークハードウェア（例えば、モデム）のセットを備える。
【００１２】
図５は、ネットワークスキャンコントローラの一実施態様を示すブロック図である。いくつかの実施態様では、ネットワークスキャンコントローラ５００は、図２のネットワークスキャンコントローラ２０２を備える。いくつかの実施態様では、ネットワークスキャンコントローラ５００は、サーバシステムを備える。図示される例では、ネットワークスキャンコントローラ５００は、プロセッサ５０２、データストレージ５０４、およびネットワークインターフェース５０６を備える。様々な実施態様では、プロセッサ５０２は、命令を実行する、データを処理する、コマンドに応答する、等のためのプロセッサを備える。様々な実施態様では、プロセッサ５０２は、汎用型プロセッサ、マイクロコントローラ、並列処理システム、プロセッサのクラスタ、または他の適切なプロセッサを備える。いくつかの実施態様では、プロセッサ５０２は、ネットワークスキャナ５０８を備える。様々な実施態様では、ネットワークスキャナ５０８は、階層的ネットワークをスキャンするためのシステム機能を実装するソフトウェアおよび／またはハードウェアを備える。いくつかの実施態様では、ネットワークスキャナ５０８は、ジョブプランを決定するためのネットワークスキャナを備える。いくつかの実施態様では、ジョブプランはスキャン命令のセットを備える。いくつかの実施態様では、ジョブプランは、利用可能なスキャンノードのセットを使用して、ネットワークアドレスのセットをスキャンするためのジョブプランを備える。いくつかの実施態様では、ジョブプランは、スキャンするための、ネットワークアドレスとポートのセットを備える。いくつかの実施態様では、ジョブプランは、ネットワークデバイスと対話するための1つまたは複数のペイロードおよびフォローアッププローブを備える。いくつかの実施態様では、ジョブプランは１つ以上のジョブ部分を備える。いくつかの実施態様では、ジョブ部分は、分割可能でかつ独立して実行可能なジョブ部分（例えば、並行して実行することが出来かつ互いに依存しないジョブ部分）を備える。様々な実施態様では、データストレージ５０４は、データを格納するため、プロセッサ５０２のための命令を格納するため、構成情報を格納するため、または任意の他の適切な情報を格納するため、のデータストレージを備える。様々な実施態様では、データストレージ５０４は、揮発性メモリ、不揮発性メモリ、磁気メモリ、光学メモリ、相変化メモリ、半導体メモリ、ディスクメモリ、テープメモリ、または任意の他の適切なメモリ、の内の１つ以上を備える。図示される例では、データストレージ５０４は、ネットワークデバイスに提供するペイロードを格納するためのペイロードデータベース５１０を備える。いくつかの実施態様では、ペイロードは、ネットワークデバイスを調査して応答を引き出すために小さなデータパケットを備える。データストレージ５０４は、更に、ネットワークデバイスと対話するためのフォローアッププローブを格納するためのフォローアッププローブデータベース５１２を備える。いくつかの実施態様では、フォローアッププローブは、ネットワークデバイスに関する情報を決定するために、ネットワークデバイスと対話するためのソ��トウェアを備える。いくつかの実施態様では、フォローアッププローブデータベース５１２は、特定の方法でネットワークデバイスと対話して、ネットワークデバイスに関するデータを取得する（例えば、セキュアＨＴＴＰ（ＨＴＴＰＳ）接続を確立しかつ暗号化されたウェブページをダウンロードする）ように設計されたフォローアッププローブのセットを備える。いくつかの実施態様では、フォローアッププローブが、ネットワークデバイスからのデータの受信に成功する可能性が高いと決定されると、このフォローアッププローブは、ネットワークデバイスと対話するために使用される。データストレージ５０４は、加えて、（例えば、ペイロードまたはフォローアッププローブを使用して）ネットワークデバイスと対話した結果受信されたネットワーク情報を格納するためのネットワーク情報データベース５１４を備える。いくつかの実施態様では、ネットワーク情報は、リモートで（例えば、ストレージサーバ上、異なる階層スキャンシステム上、クラウドストレージ上、等に）格納される。図示されている例では、ネットワークインターフェース５０６は、ネットワークを介してリモートシステムと対話するためのネットワークインターフェースを備える。様々な実施態様では、ネットワークインターフェース５０６は、ペイロードを提供するため、フォローアッププローブのための通信を実行するため、ネットワーク情報を受信するため、または任意の他の適切な目的のため、のネットワークインターフェースを備える。いくつかの実施態様では、ネットワークインターフェース５０６は、高帯域幅通信用に構成されているネットワークインターフェースを備える。幾つかの実施態様では、ネットワークインターフェース５０６は、ジョブプランのジョブ部分をスキャンノードに提供するためのネットワークインターフェースを備える。幾つかの実施態様では、ネットワークインターフェース５０６は、スキャンノードからジョブ部分の結果を受信するためのネットワークインターフェースを備える。
【００１３】
図６は、スキャンノードの一実施態様を示すブロック図である。いくつかの実施態様では、スキャンノード６００は、図２のスキャンノード（例えば、スキャンノード２０８）を備える。いくつかの実施態様では、スキャンノード６００はクライアントシステムを備える。図示される例では、スキャンノード６００は、プロセッサ６０２、データストレージ６０４、およびネットワークインターフェース６０６を備える。様々な実施態様では、プロセッサ６０２は、命令を実行し、データを処理し、コマンドに応答する、等のためのプロセッサを備える。様々な実施態様では、プロセッサ６０２は、汎用プロセッサ、マイクロコントローラ、並列処理システム、プロセッサのクラスタ、または他の適切な、プロセッサを備える。いくつかの実施態様では、プロセッサ６０２は、ネットワークスキャナ６０８を備える。様々な実施態様では、ネットワークスキャナ６０８は、階層スキャンシステム機能を実装するソフトウェアおよび／またはハードウェアを備える。様々な実施態様では、データストレージ６０４は、データを格納するため、プロセッサ６０２に対する命令を格納するため、構成情報を格納するため、または他の適切な情報を格納するため、のデータストレージを備える。様々な実施態様では、データストレージ６０４は、揮発性メモリ、不揮発性メモリ、磁気メモリ、光学メモリ、相変化メモリ、半導体メモリ、ディスクメモリ、テープメモリ、または他の適切なメモリ、の内の１つ以上を備える。図示される例では、データストレージ６０４は、ネットワークデバイスに提供するペイロードを格納するためのペイロードデータベース６１０を備える。いくつかの実施態様では、ペイロードは、応答を引き出すためにネットワークデバイスを調査するための小さなデータパケットを備える。データストレージ６０４は、更に、ネットワークデバイスと対話するための、フォローアッププローブを格納するためのフォローアッププローブデータベース６１２を備える。いくつかの実施態様では、フォローアッププローブは、ネットワークデバイスに関する情報を決定するために、ネットワークデバイスと対話するためのソフトウェアを備える。いくつかの実施態様では、フォローアッププローブデータベース６１２は、特定の方法でネットワークデバイスと対話して、ネットワークデバイスに関するデータを取得する（例えば、セキュアＨＴＴＰ（ＨＴＴＰＳ）接続を確立しかつ暗号化されたウェブページをダウンロードする）ように設計されているフォローアッププローブのセットを備える。いくつかの実施態様では、フォローアッププローブが、ネットワークデバイスからのデータの受信に成功する可能性が、高いと決定されると、このフォローアッププローブを使用してネットワークデバイスとの対話が行われる。データストレージ６０４は、更に、（例えば、ペイロードまたはフォローアッププローブを使用して）ネットワークデバイスと対話した結果として、受信したネットワーク情報を格納するためのネットワーク情報データベース６１４を備える。いくつかの実施態様では、ネットワーク情報は、リモートで（例えば、ストレージサーバ上、異なる階層スキャンシステム上、クラウドストレージ上、等に）保存される。図示される例では、ネットワークインターフェース６０６は、ネットワークを介してリモートシステムと対話するためのネットワークインターフェースを備える。様々な実施態様では、ネットワークインターフェース６０６は、ペイロードを提供するため、フォローアッププローブのための通信を実行するため、ネットワーク情報を受信するため、または他の適切な目的のため、のネットワークインターフェースを備える。いくつかの実施態様では、ネットワークインターフェース６０６は、高帯域幅通信用に構成されているネットワークインターフェースを備える。
【００１４】
いくつかの実施態様では、ネットワークスキャナ６０８は、ネットワークスキャンコントローラ（例えば、図２のネットワークスキャンコントローラ２０４または図３のネットワークスキャンコントローラ３０２）によって提供される命令に従って、ネットワークスキャンを実行する。いくつかの実施態様では、命令は、ジョブ部分（例えば、スキャンジョブのジョブ部分）を備える。様々な実施態様では、命令は、１つ以上のインターネットアドレス、１つ以上のポート、１つ以上のペイロード、１つ以上のフォローアッププローブ、または他の適切なスキャン命令、を備える。
【００１５】
図７は、ネットワークをスキャンするためのプロセスの実施態様を示すフロー図である。いくつかの実施態様では、図７のプロセスは、図２のネットワークスキャンコントローラ２０４によって実行される。図示される例では、７００で、ネットワークアドレスのセットをスキャンする指示が受信される。７０２で、利用可能なスキャンノードのセットが決定される。７０４で、この利用可能なスキャンノードのセットを使用して、このネットワークアドレスのセットをスキャンするための、１つ以上のジョブ部分を備えるジョブプランが決定される。７０６で、ジョブ部分が選択される。７０８で、スキャンノードが選択される。いくつかの実施態様では、このスキャンノードは、ジョブ部分に少なくとも部分的に基づいて選択される。様々な実施態様では、スキャンノードは、ランダムに選択されたスキャンノード、擬似ランダムに選択されたスキャンノード、スキャンノードのリスト内の次のスキャンノード、プロセッサ負荷が最小のスキャンノード、最近選択されていないスキャンノード、ジョブ部分のアドレスを最も長時間スキャンしていない（has least recently scanned）スキャンノード、所定のリストに従ってジョブ部分のアドレスをスキャンする次のスキャンノード、その物理的な場所に少なくとも部分的に基づいて選択されたスキャンノード、または他の適切な方法で選択されたスキャンノード、を備える。７１０で、このジョブ部分がこのスキャンノードに提供される。７１２で、ジョブ部分の結果がこのスキャンノードから受信される。７１４で、このジョブ部分の結果がスキャンされる。いくつかの実施態様では、このジョブ部分の結果は、ネットワークスキャンコントローラによって格納される。いくつかの実施態様では、ジョブ部分の結果は、格納のためにネットワークスキャンデータベースに提供される。７１６で、必要に応じて、このジョブ部分の結果に基づいて、このジョブプランが変更される。様々な実施態様では、ジョブプランは、追加のアドレスをスキャンし、追加のポートをスキャンし、追加のスキャンタイプを実行し、追加のフォローアッププローブを実行し、または他の適切な方法で、修正される。７１８で、（例えば、ジョブプランの）ジョブ部分が更にあるか否かが決定される。ジョブ部分が更にあると決定された場合、制御は７０６に移る。ジョブ部分がこれ以上ないと決定された場合、プロセスは終了する。
【００１６】
図８は、ジョブプランを決定するプロセスの実施態様を示すフロー図である。いくつかの実施態様では、図８のプロセスは、図７の７０４を実装する。図示された例では、８００で、このスキャンのためのスキャンコマンドのセットが決定される。様々な実施態様では、スキャンコマンドは、シェルコマンド、ペイロード、フォローアッププローブ、または他の適切なスキャンコマンド、を備える。いくつかの実施態様では、スキャンコマンドは、受信したスキャン指示の部分を備える（例えば、このスキャン指示は、スキャンのためのスキャンコマンドを指示する）。いくつかの実施態様では、スキャンコマンドは、指示されたスキャンコマンドに少なくとも部分的に基づいて決定される（例えば、追加のスキャンコマンドが、指示されたスキャンコマンドを超えて決定される、スキャンコマンドが修正される、等）。８０２で、このスキャンのためのポートのセットが決定される。いくつかの実施態様では、スキャンするポートは、受信したスキャン指示の一部を備える（例えば、スキャンする指示は、このスキャンのポートを指示する）。いくつかの実施態様では、ポートは、スキャンする指示コマンドに少なくとも部分的に基づいて、決定される（例えば、追加のポートが、スキャンする指示コマンドを超えて決定される、ポートが修正される、等）。８０４で、ジョブ部分のサイズが決定される。様々な実施態様では、ジョブ部分のサイズは、所定のジョブ部分のサイズ、利用可能なスキャンノードの数、スキャンするアドレスの数、スキャンするアドレスの分布、スキャンするアドレスに関連付けられている物理的位置、過去のスキャンデータ、現在および過去の組織ネットワークのフットプリント、または他の適切な要因、の内の1つ以上に少なくとも部分的に基づいて決定される。８０６で、このジョブ部分のサイズをスキャンするための、このネットワークアドレスのセットの一部が選択される。様々な実施態様では、ネットワークアドレスの連続したセットが選択され、ネットワークアドレスの不連続なセットが選択され、ネットワークアドレスのランダムなセットが選択され、ネットワークアドレスの擬似ランダムなセットが選択され、共通の組織所有権または共通のネットワーク管理を持つネットワークアドレスのセットが選択され、複数の異なるゲートウェイデバイスやトラフィックコンセントレータを持つネットワークアドレスのセットが選択され、またはネットワークアドレスのセットが他の適切な方法で選択される。８０８で、このポートのセットの部分をスキャンする命令を備えるこのジョブプランのジョブ部分が、このネットワークコマンドのセットを使用して、作成される。８１０で、アドレスが更にある否かが決定される（例えば、未だジョブ部分に割り当てられていないスキャンするネットワークアドレスのセットのアドレスが更にあるか否か）。更にアドレスがあると決定された場合、制御は８０６に移る。これ以上アドレスがないと決定された場合、プロセスは終了する。
【００１７】
図９は、必要に応じて、ジョブ部分の結果に基づいてジョブプランを修正するプロセスの実施態様を示すフロー図である。いくつかの実施態様では、図９のプロセスは、図７の７１６を実装する。図示された例では、９００で、このジョブ部分が、以前に見られた結果を全て備えるか否かが決定される。いくつかの実施態様では、以前に見られた結果は、以前に見られたデバイスまたはサービス、または以前に見られた、応答を生成しないアドレスまたはポート、を備える。ジョブ部分の結果が、以前に見られた結果を全て備えると決定された場合、プロセスは終了する（例えば、ジョブプランの変更は行われない）。ジョブ部分の結果が、以前に見られた結果を全て含まないと決定された場合、制御は９０２に移る。９０２では、このジョブ部分の結果が、以前のオンラインのデバイスまたはサービスが、オフラインであることを指示するか否かが決定される。以前のオンラインのデバイスまたはサービスが、オフラインではないと決定された場合、制御は９０８に移る。以前に見られたデバイスまたはサービスが、オフラインであると決定された場合、制御は９０４に移る。９０４で、1つ以上の異なるスキャンノードを使用して、このスキャンの再試行が、このジョブに追加される。例えば、スキャンは、以前に割り当てられたスキャンとは異なる、別に選択されたスキャンノードに割り当てられている、異なるジョブ部分に追加されるため、このスキャンは、結果的に、同じソースから発信されたようには見えない。様々な実施態様では、再試行は、ランダムに選択されたスキャンノード、以前のオンラインのデバイスまたはサービスを最も長時間スキャンしていないスキャンノード、以前のオンラインのデバイスがオフラインになったか否かを決定する場合にのみ使用されるリザーブスキャンノード、または他の適切なスキャンノードを、使用して行われる。９０6で、1つ以上の近くのスキャン位置が、このジョブに追加される。いくつかの実施態様では、１つ以上の近くのスキャン位置をスキャンすることにより、既に移動しているデバイスまたはサービスを見出すことができる。いくつかの実施態様では、近くのスキャン位置は、近くのアドレスを備える。いくつかの実施態様では、近くのスキャン位置は、近くのポートを備える。９０８で、このジョブ部分の結果が、新しいデバイスまたはサービスを指示するか否かが決定される。ジョブ部分の結果が、新しいデバイスまたはサービスを指示していないと決定された場合、プロセスは終了する。ジョブ部分の結果が、新しいデバイスまたはサービスを指示すると決定された場合、制御は９１０に移る。９１０で、1つまたは複数のフォローアップスキャンが、このジョブに追加される。いくつかの実施態様では、フォローアップスキャンは、新たに発見されたデバイスまたはサービスに関する情報を更に収集するためのスキャンを備える。いくつかの実施態様では、フォローアップスキャンは、フォローアッププローブを備える。
【００１８】
上記の実施態様は、理解を明確にする目的で、ある程度詳細に説明されたが、本発明は、提供された詳細に限定されない。本発明の実施には、多くの代替方法がある。開示された実施態様は、例示的なものであり、限定的なものではない。
【図１】
2020510368.tif 000003
【図２】
2020510368.tif 000004
【図３】
2020510368.tif 000005
【図４】
2020510368.tif 000006
【図５】
2020510368.tif 000007
【図６】
2020510368.tif 000008
【図７】
2020510368.tif 000009
【図８】
2020510368.tif 000010
【図９】
2020510368.tif 000011
【国際調査報告】
2020510368.tif 000012