Summary

Có ba loại scan port:

Loại scanVí dụ
TCP Connect Scannmap -sT MACHINE_IP
TCP SYN Scansudo nmap -sS MACHINE_IP
UDP Scansudo nmap -sU MACHINE_IP

Các loại option khi scan:

OptionMục đích
-p-Tất cả các port
-p1-1023Quét port từ 1 đến 1023
-FQuét 100 port phổ biến nhất
-rTheo thứ tự liên tiếp
-T<0-5>Điều chỉnh tốc độ quét
--max-rate 50Tốc độ 50 packets/sec
--min-rate 15Tốc độ >= 15 packets/sec
--min-parallelism 100Ít nhất 100 đầu dò song song

Introduction

Có 6 trạng thái khi quét port bằng Nmap.

  1. Open: port mở và có dịch vụ đang chạy ở port đó.
  2. Closed: có thể truy cập đến port nhưng không có dịch vụ nào đang chạy ở port đó.
  3. Filtered: Nmap không thể xác định được port open hay closed bởi vì port không thể truy cập. Trạng thái này thường xảy ra khi có tường lửa.
  4. Unfilterd: mặc dù có thể truy cập port nhưng không xác định được port open hay closed.
  5. Open|Filtered: không xác định được là open hay filtered.
  6. Closed|Filtered: không xác định được là closed hay filtered.

Có ba loại quét port với Nmap là:

  1. TCP Connect Scan
  2. TCP SYN Scan
  3. UDP Scan

TCP Connect Scan

Note

Cần lưu ý là nếu chúng ta không phải là privileged user thì TCP Connect Scan là sự lựa chọn duy nhất khi sử dụng Nmap để quét port.

Command

Câu lệnh sử dụng sẽ là:

nmap -sT MACHINE_IP

Nmap sẽ scan 1000 port phổ biến và chúng ta có thể dùng flag -F để tăng tốc độ quét bằng cách giảm số port cần quét xuống còn 100 port phổ biến.

Hoặc dùng flag -r nếu muốn scan các port theo thứ tự liên tiếp thay vì ngẫu nhiên.

Process

Nmap sẽ thực hiện quá trình bắt tay ba bước hoàn chỉnh của TCP. Tuy nhiên, do chỉ muốn thực hiện việc khám phá port chứ không muốn trao đổi thông tin nên ở bước ba, sau khi đã thiết lập kết nối thành công thì Nmap gửi luôn gói tin có flag là RST/ACK để ngắt kết nối.

Minh họa quá trình:

Nếu gói tin phản hồi có flag là RST/ACK thì ta biết rằng port đó đang đóng (package có màu đỏ).

Ngược lại, nếu port mở thì ta sẽ nhận được gói tin có flag SYN/ACK. Cụ thể, với hình ở trên thì ta biết rằng port 143 đang mở.

Dưới đây là danh sách các gói tin giữa Nmap’s host và port 143 của target machine:

Có thể thấy, ba gói tin đầu là để bắt tay ba bước và gói tin thứ tư gửi đến target machine là để đóng kết nối (có flag RST/ASK).

TCP SYN Scan

Cần phải là privileged user để sử dụng loại scan này.

Command

Câu lệnh:

sudo nmap -sS MACHINE_IP

Process

Thay vì hoàn thành quá trình bắt tay ba bước như TCP Connect Scan thì TCP SYN Scan sẽ ngắt kết nối ngay lập tức khi nhận được gói tin ACK từ target machine. Điều này giúp cho việc scan sẽ không bị ghi log vào hệ thống.

Minh họa quá trình của TCP SYN Scan:

Minh họa cho sự khác biệt giữa TCP Connect Scan và TCP SYN Scan:

UDP Scan

Sử dụng với option -sU:

sudo nmap -sU MACHINE_IP

Như đã biết, khi gửi gói tin đến port UDP đang đóng thì nó sẽ phản hồi lại gói tin ICMP Type 3 (Unreachable)1. Vận dụng điều này, ta có thể scan port sử dụng giao thức UDP. Chúng ta có thể dùng kết hợp với TCP Scan.

Minh họa cho output của UDP Scan:

pentester@TryHackMe$ sudo nmap -sU MACHINE_IP
 
Starting Nmap 7.60 ( https://nmap.org ) at 2021-08-30 09:54 BST
Nmap scan report for MACHINE_IP
Host is up (0.00061s latency).
Not shown: 998 closed ports
PORT    STATE         SERVICE
68/udp  open|filtered dhcpc
111/udp open          rpcbind
MAC Address: 02:45:BF:8A:2D:6B (Unknown)
 
Nmap done: 1 IP address (1 host up) scanned in 1085.05 seconds

Fine-Tuning Scope and Performance

Chúng ta cũng có thể chọn port để quét:

  • -p22,80,443: scan port 22 (SSH), 80 (HTTP) và 443 (HTTPS).
  • -p1-1023: scan port 1 đến 1023
  • -p-: scan tất cả 65535 port.
  • -F: scan 100 port phổ biến.
  • --top-ports 10: scan 10 port phổ biến nhất.

Chúng ta cũng có thể điều khiển thời gian scan bằng cách sử dụng option -T<0-5>:

  • paranoid (0): chậm nhất, scan một port tại một thời điểm.
  • sneaky (1): thường dùng trong thực tế khi cần sự tàng hình.
  • polite (2)
  • normal (3): mặc định.
  • aggressive (4): dùng trong các cuộc thi CTF hoặc khi thực hành.
  • insane (5): nhanh nhất, có thể làm xảy ra mất gói và ảnh hưởng đến độ chính xác.

Thông thường, để tránh việc bị cảnh báo xâm nhập hệ thống, ta nên sử dụng -T0 hoặc -T1.

Hoặc để kiểm soát số lượng gói tin gửi đi mỗi giây thì ta có thể dùng option --min-rate <number> hoặc --max-rate <number>. Ví dụ với --max-rate 10 thì Nmap sẽ chỉ gửi tối đa 10 gói tin mỗi giây.

Nếu muốn dò song song thì dùng option --min-parallelism <numprobes> hoặc --max-parallelism <numprobes>. Ví dụ với --min-parallelism=512 thì Nmap sẽ duy trì tối thiểu 512 đầu dò để dò host và port.

Resources

Footnotes

  1. Xem thêm Nmap - Live Host Discovery