👁️🗨️
nampにおけるポートスキャンまとめ
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: 通信の終了を表すために使用
スキャンの種類
-sT
TCPスキャン 3ウェイハンドシェイクを確立させることで、ポートが開いていることを判断します。
nampにおいて、"特権ユーザ以外が実行できる唯一のスキャン方式"です。
-sS
TCP-SYNスキャン ハンドシェイクを完了させず、対象からのSYN/ACK
の受信でポートが開いていることを判断します。
-sU
UDP スキャン UDP はコネクションレス型プロトコルであるため、ハンドシェイクを必要としません。
そのため、調査対象のサービスが通信に応答するかどうかは保証できません。
そこで、UDPスキャンではICMP port unreachable error (type 3, code 3)
の受信を確認することで、
"開いていないポート"を判断します。
-sN
TCP Null Scan フラグを一つも立てずにスキャンを行います。
スキャンしたポートが閉じられている場合は、サーバからRST
パケットが届くため、このパケットが届いてないことを根拠に"ポートが開いている/フィルタリングされている"かを特定できます。
-sF
TCP FIN Scan こちらは、FINフラグを立てて、スキャンを行います。
ポートが開いていることを検知する方法は、NullScanと同様に、RST
パケットが届いていないことを根拠とします。
-sX
TCP Xmas Scan FIN
,PSH
,URG
フラグを立ててスキャンを行います。
ポートが開いていることを検知する方法は、Null/FINスキャンと同様です。
Discussion