👁️🗨️
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: 通信の終了を表すために使用
スキャンの種類
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