👁️‍🗨️

nampにおけるポートスキャンまとめ

2024/05/14に公開

nampにおけるポートスキャンまとめ

nmapで行えるポートスキャンの種類をまとめた記事になります。

nmapの概要や、オプションの解説、スクリプト等については言及しません。
どんなポートスキャンが行えるのかの確認用としてご閲覧ください。

Nmapが判定するポートの状態

状態 アクセス可能か ポートが開いているか 補足
Open YES YES
Closed YES NO
Unfiltered YES 判断できない ACK スキャンの使用時に発生
Filtered NO 判断できない FWが原因で到達できない

TCPフラグ

Nmapは、TCPヘッダにおけるTCPフラグの値を変えることで、スキャン方式を切り替えます。
TCPフラグは、以下の6つのフラグビットが存在します。

  • URG(Urgent):
  • ACK(Acknowledgement): TCPセグメントを受信したことを連絡
  • PSH(Push): TCPにデータをアプリケーションに即座に渡すように要求
  • RST(Reset): 接続をリセットするために使用。受信側に応答するサービスがない場合にも使用
  • SYN(Synchronize): TCP通信を開始し、シーケンス番号を他のホストと同期するために使用
  • FIN: 通信の終了を表すために使用

スキャンの種類

TCPスキャン -sT

3ウェイハンドシェイクを確立させることで、ポートが開いていることを判断します。
nampにおいて、"特権ユーザ以外が実行できる唯一のスキャン方式"です。

TCP-SYNスキャン -sS

ハンドシェイクを完了させず、対象からのSYN/ACKの受信でポートが開いていることを判断します。

UDP スキャン -sU

UDP はコネクションレス型プロトコルであるため、ハンドシェイクを必要としません。
そのため、調査対象のサービスが通信に応答するかどうかは保証できません。

そこで、UDPスキャンではICMP port unreachable error (type 3, code 3)の受信を確認することで、
"開いていないポート"を判断します。

TCP Null Scan -sN

フラグを一つも立てずにスキャンを行います。
スキャンしたポートが閉じられている場合は、サーバからRSTパケットが届くため、このパケットが届いてないことを根拠に"ポートが開いている/フィルタリングされている"かを特定できます。

TCP FIN Scan -sF

こちらは、FINフラグを立てて、スキャンを行います。
ポートが開いていることを検知する方法は、NullScanと同様に、RSTパケットが届いていないことを根拠とします。

TCP Xmas Scan -sX

FIN,PSH,URGフラグを立ててスキャンを行います。
ポートが開いていることを検知する方法は、Null/FINスキャンと同様です。

Discussion