Enumerating Targets
Target có thể là các dạng sau:
- Danh sách:
MACHINE_IP scanme.nmap.org example.com
sẽ scan 3 địa chỉ IP. - Khoảng:
10.11.12.15-20
sẽ scan 6 địa chỉ IP. - Subnet:
MACHINE_IP/30
sẽ scan 4 địa chỉ IP.
Cũng có thể sử dụng một file chứa địa chỉ của các target như sau:
nmap -iL list_of_hosts.txt
Nếu chúng ta muốn xem danh sách các target mà nmap
sẽ quét thì dùng flag -sL
như sau:
nmap -sL TARGETS
Discovering Live Hosts
Chúng ta sẽ sử dụng những giao thức truyền tin khác nhau đối với mỗi tầng mạng khác nhau. Cụ thể:
- ARP cho Data Link Layer: sử dụng để phân giải địa chỉ IP thành địa chỉ MAC. Dùng với các host trong cùng một subnet.
- ICMP cho Network Layer: sử dụng Type 8 (Echo) và Type 0 (Echo Reply).
- TCP và UDP cho Transport Layer: sử dụng khi ICMP bị block.
Using ARP
Chỉ có thể dùng ARP scan nếu có cùng đường mạng với subnet của máy mục tiêu.
Cú pháp:
nmap -PR -sn TARGETS
Với flag -sn
là để ngăn không cho Nmap quét các port nếu chúng ta chỉ muốn tìm các host.
Ta thường sử dụng ARP scan cho một subnet như sau:
nmap -PR -sn 10.10.210.6/24
Các gói tin ARP được gửi đi sẽ có dạng như sau:
Using ICMP
Gửi gói tin ICMP Echo (Type 8) để thăm dò các host.
Cú pháp:
sudo nmap -PE -sn MACHINE_IP/24
Nếu ta dùng câu lệnh trên mà không sử dụng quyền root
thì Nmap sẽ thực hiện bắt tay ba bước TCP hoàn chỉnh với từng host (TCP pingscan) để gửi gói tin chứ không dùng ICMP.
Ví dụ:
sudo nmap -PE -sn 10.10.68.220/24
Các gói tin ICMP Echo được gửi đi sẽ có dạng như sau:
Sử dụng gói tin ICMP Timestamp (Type 14) thay vì ICMP Echo:
sudo nmap -PP -sn MACHINE_IP/24
Ngoài ICMP Timestamp thì cũng có thể sử dụng gói tin ICMP Address Mask Request (Type 17) như sau:
sudo nmap -PM -sn MACHINE_IP/24
Note
Cần lưu ý là không phải loại ICMP request nào cũng được các router và host chấp nhận (có thể có tường lửa chặn lại). Đó là lý do mà ta cần dùng nhiều loại ICMP request khác nhau (Echo, Timestamp và Address Mask Request).
Using TCP and UDP
TCP SYN Ping
Chúng ta có thể gửi gói tin với cờ SYN (Synchronize) đến một cổng TCP (mặc định là 80) và chờ phản hồi. Nếu port có mở thì sẽ phản hồi bằng gói tin SYN/ACK (Acknowledge), ngược lại thì sẽ phản hồi gói tin RST (Reset).
Để sử dụng TCP SYN Ping, ta cần dùng flag -PS
với port number, range hoặc list. Ví dụ -PS21
sẽ nhắm đến port 21, -PS21-25
sẽ nhắm đến port 21 đến 25 và -PS80,443,8080
sẽ nhắm đến port 80, 443 và 8080.
Người dùng không có đặc quyền (unprivileged user, là các user không phải là root và sudoers) khi gửi các gói tin TCP SYN thì cần phải hoàn thành quá trình bắt tay ba bước của TCP. Nói cách khác là cần phải phản hồi lại cho bên nhận một gói tin nào đó, có thể là RST như bên dưới:
Ngược lại, người dùng có đặc quyền thì không cần phải hoàn thành bắt tay ba bước. Tuy nhiên, việc dùng privileged user khi sử dụng TCP SYN Ping là optional.
Cú pháp gửi gói tin TCP SYN ping với Nmap:
nmap -PS -sn MACHINE_IP/24
Do không định rõ port nên Nmap gửi gói tin đến các host với port là 80:
TCP ACK Ping
Bắt buộc dùng privileged user, nếu không thì Nmap cũng sẽ cố thực hiện bắt tay ba bước.
Tương tự với TCP SYN Ping nhưng có một số khác biệt:
- Gửi gói tin ACK đến các host thay vì gói tin SYN.
- Cần dùng flag
-PA
thay vì-PS
. - Gói tin phản hồi sẽ là RST.
Cú pháp:
sudo nmap -PA -sn MACHINE_IP/24
Các gói tin được gửi đi sẽ có dạng như sau:
UDP Ping
Đối với UDP Ping, chúng ta chỉ có thể nhận được gói tin khi host không online. Gói tin nhận được là ICMP Port Unreachable (Type 3). Minh họa quá trình gửi và nhận gói tin như sau:
Trường hợp host đang online thì sẽ không có gói tin phản hồi.
Cú pháp:
nmap -PU -sn MACHINE_IP/24
UDP Ping sẽ dùng các port tùy ý để gửi gói tin:
Masscan
Chúng ta cũng có thể dùng tool masscan
để khám phá các host tương tự như Nmap. Cú pháp như sau:
masscan MACHINE_IP/24 -p443
masscan MACHINE_IP/24 -p80,443
masscan MACHINE_IP/24 -p22-25
masscan MACHINE_IP/24 ‐‐top-ports 100
DNS
Theo mặc định, Nmap sẽ tìm ra domain của các địa chỉ IP được quét. Đây gọi là Reverse DNS. Nếu chúng ta muốn disable tính năng này để tiết kiệm thời gian khi quét thì dùng flag -R
.
Còn nếu muốn sử dụng một DNS server cụ thể nào đó thì dùng option sau:
--dns-servers DNS_SERVER
Summary
Các loại scan:
Scan Type | Example Command |
---|---|
ARP Scan | sudo nmap -PR -sn MACHINE_IP/24 |
ICMP Echo Scan | sudo nmap -PE -sn MACHINE_IP/24 |
ICMP Timestamp Scan | sudo nmap -PP -sn MACHINE_IP/24 |
ICMP Address Mask Scan | sudo nmap -PM -sn MACHINE_IP/24 |
TCP SYN Ping Scan | sudo nmap -PS22,80,443 -sn MACHINE_IP/30 |
TCP ACK Ping Scan | sudo nmap -PA22,80,443 -sn MACHINE_IP/30 |
UDP Ping Scan | sudo nmap -PU53,161,162 -sn MACHINE_IP/30 |
Các option thường dùng:
Option | Purpose |
---|---|
-n | no DNS lookup |
-R | reverse-DNS lookup for all hosts |
-sn | host discovery only |