Summary
Có ba loại scan port:
Loại scan | Ví dụ |
---|---|
TCP Connect Scan | nmap -sT MACHINE_IP |
TCP SYN Scan | sudo nmap -sS MACHINE_IP |
UDP Scan | sudo nmap -sU MACHINE_IP |
Các loại option khi scan:
Option | Mục đích |
---|---|
-p- | Tất cả các port |
-p1-1023 | Quét port từ 1 đến 1023 |
-F | Quét 100 port phổ biến nhất |
-r | Theo thứ tự liên tiếp |
-T<0-5> | Điều chỉnh tốc độ quét |
--max-rate 50 | Tốc độ ⇐ 50 packets/sec |
--min-rate 15 | Tố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.
- Open: port mở và có dịch vụ đang chạy ở port đó.
- Closed: có thể truy cập đến port nhưng không có dịch vụ nào đang chạy ở port đó.
- 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.
- Unfilterd: mặc dù có thể truy cập port nhưng không xác định được port open hay closed.
- Open|Filtered: không xác định được là open hay filtered.
- Closed|Filtered: không xác định được là closed hay filtered.
Có ba loại quét port với Nmap là:
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
-
Xem thêm Nmap - Live Host Discovery ↩