web-dev-qa-db-ja.com

すべての65536ポートで異なるポートスキャンを実行するのにどのくらい時間がかかりますか?

現在、プログラムの一部でローカルネットワークをマップするために Nmap を使用していますが、すべてのポートで異なるポートスキャンを実行するのにどのくらい時間がかかるのでしょうか。

ポートが開いているかどうかを確認するために送信されるタイムアウトと平均パケットサイズはどれくらいですか(パケットが確認のために送信される場合)、これらおよびその他の要因に基づいてスキャンにかかる時間との相関関係はありますか?

これらをグラフで表現し、場合によってはこれらの結果もテストできるようにしたいと思います。

一般に、UDPポートスキャンはコネクションレス型であり、使用されるリソースがはるかに多いため、TCPよりも時間がかかることを知っています。

2
rshah

リンク速度、デュプレックス、最小パケットサイズ、ラウンドトリップ時間、ターゲットホストの遅延、侵入検知/防止システムが関与しているかどうか、特定のスキャンのラウンドトリップ数など、さまざまな要因が関係している可能性があります。タイプに必要なもの、リンクのビジー状態など。

したがって、スキャナーマシンとターゲットが同じギガビットイーサネット上にあると仮定し、65536ポートのスキャンにかかる理論上の最小時間を見積もります。 GigEは常に全二重であり、最小フレームサイズは64バイトであり、必須のフレーム間ギャップを計算した後、最大フレームレートは1秒あたり1,488,000の最小サイズフレームになります。 TCP Syns、Syn-Acks、(empty)Acks、Fins、およびRstsはすべて最小サイズのフレームです。現在使用しているGigEでは、RTTは0.3ms(300µsec)です。 、したがって、ターゲットホストが同じ0.3msの遅延内でSyn-AckまたはRstのいずれかでSynsに応答すると仮定します。さらに、どちらか一方で応答すると仮定します。「フィルタリングされた」ポートはありません。そのため、任意のタイムアウトを待つ必要があります。

したがって、TCP Synsをすべてのポートに送信するのにかかる時間は次のとおりです:65,536/1,488,000 = 44ms

GigEは全二重であるため、最初の応答は後のSynが送信されるときに受信を開始しますが、最後のSynが送信されてから最後の応答までに1 RTT待機する必要があるため、0.3msの1RTTを追加します。合計44.3ms

2回のラウンドトリップを実行する必要があるスキャンがあったとしても、すべてのネットワークトラフィックは1秒未満で実行できます。

ターゲットホストが一部のポートでSynsに応答しない場合は、独自のアルゴリズムで「応答なし」タイムアウトを設定する期間を独自に選択する必要があることに注意してください。しかし、それはRTTのように考えることができます。 10秒のタイムアウトを使用するとします。 44ミリ秒ですべてのSynを送信できますが、そのポートから応答がない可能性が高いと判断するには、最後に送信されたSynから10秒待つ必要がある場合があります。したがって、すべての2 ^ 16ポートが応答せず、タイムアウトが10秒の場合でも、合計時間は44ミリ秒+10秒= 10.044秒になります。

2
Spiff