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).
  • TCPUDP 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 TypeExample Command
ARP Scansudo nmap -PR -sn MACHINE_IP/24
ICMP Echo Scansudo nmap -PE -sn MACHINE_IP/24
ICMP Timestamp Scansudo nmap -PP -sn MACHINE_IP/24
ICMP Address Mask Scansudo nmap -PM -sn MACHINE_IP/24
TCP SYN Ping Scansudo nmap -PS22,80,443 -sn MACHINE_IP/30
TCP ACK Ping Scansudo nmap -PA22,80,443 -sn MACHINE_IP/30
UDP Ping Scansudo nmap -PU53,161,162 -sn MACHINE_IP/30

Các option thường dùng:

OptionPurpose
-nno DNS lookup
-Rreverse-DNS lookup for all hosts
-snhost discovery only

Resources