web-dev-qa-db-ja.com

nmap -sTスキャンがフィルターされたポートを表示するのに、-sSは閉じたポートを表示するのはなぜですか

nmap -sTスキャンで「ポートがフィルタリングされました」と表示されるのに、同じnmap -sSスキャンで「ポートが閉じている」と表示される理由は何ですか? -sTは完全なTCP接続であり、-sSハーフオープンスキャンよりも簡単に検出(およびフィルタリング)できることを理解しています。しかし、なぜですか?

どちらのタイプのスキャンもSYNパケットを送信します。どちらのタイプのスキャンでも、SYN | ACKまたはRSTが返されます。私が見る唯一の違いは、ハーフオープンスキャンが接続ハンドシェイクを終了する代わりにRSTを送信することです。

また、nmapに最初にpingを送信しないように指示するコマンドnmap -sT -P0を実行しました(通常、TCP pingとICMP pingの両方を実行すると思います)。このコマンドを実行すると、 -sSスキャン応答と同じ「ポートが閉じています」で応答します。これは、最初にpingを実行したために-sTが通常ブロックされているためですか?

それは私の仮定ですが、私が見ているものと、さらに調査するために実行できるスキャンの種類について、より経験豊富な意見が欲しいです。ところで、もちろん、私はこれらのスキャン(クラス作業)を行うことを許可されています。

9
KyleM

NmapのXML出力を保存した場合、reasonという<state>タグの属性があります。これにより、Nmapがポートにラベルを付けるために選択した理由がわかります。これは通常、スキャンの種類とポートの状態に応じて、「リセット」、「conn-refused」、「syn-ack」、または「port-unreach」のようなものです。この情報は、 --reasonフラグを使用するか、デバッグ用に-dを設定すると、「通常の」出力で表示されます。

よくある誤解は、SYNスキャン(-sS)がTCP接続スキャン(-sT)よりも「ステルス的」であることです。一度に、ある時点からつまり、これは真実でした。つまり、ホストで実行されているアプリケーションの観点からです。IDSとステートフルファイアウォールの前に、ポートスキャンの最も良い兆候は、開いてすぐに閉じられた接続を示すアプリケーションログでしたSYNスキャンは、カーネルを離れる前に接続を切断するため、アプリケーションに渡ることはないため、これらのログは書き込まれません。ただし、ネットワークの観点からは、ハーフオープンSYNスキャンの動作(SYN、SYN-ACK、RST)は非常に異常であり、開いているポートが1つしかスキャンされない場合でも、ポートスキャンの重要な指標となる可能性があります。この場合(開いている可能性が高い少数のポートをスキャンして保護されている) IDSによる)、TCP接続スキャンは実際には「よりステルスな」可能性があります。

-Pn(以前は-P0および-PNと呼ばれていました)は、Nmap=にホスト検出フェーズをスキップし、代わりにすべてのホストが稼働していると想定します。 ホスト検出の詳細 は十分に文書化されていますが、この動作がホスト上でアダプティブファイアウォールをトリガーしている可能性があります。アダプティブファイアウォールは、動作やスキャンの速度:一貫性のある結果が得られるまで、スキャンを タイミングオプション のいずれかで遅くし、スキャンするポートの数を少数に減らすことをお勧めします。

11
bonsaiviking

これをさらに調査したい場合は、--packet-trace 国旗。これにより、ポートの正確な状態を判別するために、nmapが送受信したパケットをトレースできます。

結果の違いにつながるさまざまな要因が考えられます。詳細な情報なしに正確な原因を特定することは困難です。

4
user10211

これはほぼ確実にパケット損失が原因です。接続とSYNスキャンでは、タイミングが少し異なります。より少ないタイミングでより少ない数のポートをスキャンしてみてください。また、最新のnmapを使用していない場合は、タイミングアルゴリズムを継続的に微調整しているため、アップグレードしてみてください。

1
paj28