Mô tả
Học cách sử dụng Nmap để scan ARP, ICMP và TCP/UDP

Task
Task 1: Introduction
Khi chúng ta muốn nhắm mục tiêu một mạng, ta cần một công cụ hiệu quả để xử lý các tác vụ lặp đi lặp lại và trả lời các câu hỏi sau:
- Những hệ thống nào đang hoạt động (up)?
- Những dịch vụ nào đang chạy trên các hệ thống đó?
Công cụ mà chúng ta dựa vào là Nmap. Câu hỏi đầu tiên về việc tìm các máy đang hoạt động được trả lời trong phòng (room) này. Đây là phòng đầu tiên trong chuỗi bốn phòng dành riêng cho Nmap. Câu hỏi thứ hai về phát hiện các dịch vụ đang chạy sẽ được giải đáp trong các phòng Nmap tiếp theo, tập trung vào quét cổng (port scanning).
Phòng này là phòng đầu tiên trong bốn phòng thuộc chuỗi Nmap. Bốn phòng này cũng nằm trong mô-đun Network Security.
- Nmap Live Host Discovery (Phát hiện host sống với Nmap)
- Nmap Basic Port Scans (Quét cổng cơ bản với Nmap)
- Nmap Advanced Port Scans (Quét cổng nâng cao với Nmap)
- Nmap Post Port Scans (Các bước sau khi quét cổng với Nmap)
Phòng này giải thích các bước Nmap thực hiện để phát hiện những hệ thống đang trực tuyến trước khi quét cổng. Giai đoạn này rất quan trọng vì cố gắng quét cổng các hệ thống đang ngoại tuyến sẽ chỉ lãng phí thời gian và tạo ra “tiếng ồn” không cần thiết trên mạng.
Chúng tôi trình bày các cách tiếp cận khác nhau mà Nmap dùng để phát hiện host đang hoạt động. Cụ thể gồm:
- Quét ARP (ARP scan): sử dụng các yêu cầu ARP để phát hiện host sống.
- Quét ICMP (ICMP scan): sử dụng các yêu cầu ICMP để nhận diện host sống.
- Quét ping TCP/UDP (TCP/UDP ping scan): gửi gói tin tới các cổng TCP và UDP để xác định host sống.
Chúng tôi cũng giới thiệu hai trình quét arp-scan và masscan, và giải thích cách chúng chồng lấn với một phần chức năng phát hiện host của Nmap.
Như đã đề cập, bắt đầu từ phòng này, chúng ta sẽ chủ động sử dụng Nmap để phát hiện hệ thống và dịch vụ. Nmap được tạo ra bởi Gordon Lyon (Fyodor), một chuyên gia an ninh mạng và lập trình viên mã nguồn mở, ra mắt năm 1997. Nmap (viết tắt của Network Mapper) là phần mềm miễn phí, nguồn mở, phát hành theo giấy phép GPL. Nmap là công cụ tiêu chuẩn trong ngành để lập bản đồ mạng, xác định host đang hoạt động và phát hiện các dịch vụ đang chạy. Nmap Scripting Engine (NSE) còn có thể mở rộng chức năng, từ nhận dạng vân tay dịch vụ (service fingerprinting) đến khai thác lỗ hổng. Một lần quét Nmap thường đi qua các bước như minh họa ở hình dưới (nhiều bước là tùy chọn và phụ thuộc vào các tham số dòng lệnh bạn cung cấp).

Trả lời các câu hỏi bên dưới
Một số câu hỏi sẽ yêu cầu sử dụng một trang tĩnh (static site) để trả lời các nhiệm vụ, trong khi các câu hỏi khác cần sử dụng AttackBox.
Task 2: Subnetworks
Hãy ôn lại một vài thuật ngữ trước khi chuyển sang các nhiệm vụ chính. Phân đoạn mạng (network segment) là một nhóm máy tính được kết nối qua một phương tiện dùng chung. Ví dụ, phương tiện đó có thể là switch Ethernet hoặc điểm truy cập Wi-Fi. Trong mạng IP, mạng con (subnetwork, viết tắt là subnet) thường tương đương với một hoặc nhiều phân đoạn mạng được nối lại với nhau và cấu hình dùng chung một router. “Phân đoạn mạng” nói về kết nối vật lý, còn “mạng con” nói về kết nối logic.
Trong sơ đồ mạng dưới đây, ta có bốn phân đoạn mạng hoặc mạng con. Nói chung, hệ thống của bạn sẽ được nối vào một trong các phân đoạn/mạng con này. Một mạng con (subnet) có dải địa chỉ IP riêng và được kết nối với một mạng lớn hơn thông qua router. Tùy từng mạng, có thể có tường lửa thực thi các chính sách bảo mật.

Hình trên cho thấy hai loại subnet:
- Subnet /16, nghĩa là subnet mask có thể viết là 255.255.0.0. Subnet này có thể có khoảng 65 nghìn host.
- Subnet /24, nghĩa là subnet mask có thể viết là 255.255.255.0. Subnet này có thể có khoảng 250 host.
Nếu cần học thêm về subnetting, bạn có thể tham khảo Task 2 trong phòng Intro to LAN.
Là một phần của trinh sát chủ động (active reconnaissance), chúng ta muốn khám phá thêm thông tin về một nhóm host hoặc về một subnet. Nếu bạn kết nối vào cùng subnet, bạn có thể kỳ vọng trình quét (scanner) sẽ dựa vào truy vấn ARP (Address Resolution Protocol) để phát hiện các host đang hoạt động (live). Mục tiêu của truy vấn ARP là lấy địa chỉ phần cứng (địa chỉ MAC) để có thể truyền thông ở tầng liên kết dữ liệu; tuy nhiên, ta cũng có thể dùng điều này để suy ra host đang online. (Chúng ta sẽ quay lại tầng liên kết dữ liệu ở Task 4.)
Nếu bạn ở Network A, bạn chỉ có thể dùng ARP để phát hiện các thiết bị trong chính subnet đó (10.1.100.0/24). Giả sử bạn kết nối vào một subnet khác với subnet của hệ thống mục tiêu. Khi đó, mọi gói do trình quét tạo ra sẽ được định tuyến qua cổng mặc định (router) để tới các hệ thống ở subnet khác; tuy nhiên, truy vấn ARP sẽ không được định tuyến và do đó không thể vượt qua router của subnet. ARP là một giao thức tầng liên kết dữ liệu, và các gói ARP bị ràng buộc trong phạm vi subnet của chúng.
Nhấp nút “View Site” để khởi chạy trình mô phỏng mạng. Chúng ta sẽ dùng mô phỏng này để trả lời các câu hỏi ở tasks 2, 4 và 5.
Trả lời các câu hỏi dưới đây


Task 3: Enumerating Targets
Chúng ta đã nhắc đến các kỹ thuật quét khác nhau trong Nhiệm vụ 1. Trước khi giải thích chi tiết từng kỹ thuật và áp dụng lên mục tiêu thật, chúng ta cần chỉ định các mục tiêu muốn quét. Nói chung, bạn có thể cung cấp một danh sách, một khoảng, hoặc một subnet. Ví dụ cách chỉ định mục tiêu:
- Danh sách (list): MACHINE_IP scanme.nmap.org example.com sẽ quét 3 địa chỉ IP.
- Khoảng (range): 10.11.12.15-20 sẽ quét 6 địa chỉ IP: 10.11.12.15, 10.11.12.16, … và 10.11.12.20.
- Subnet: MACHINE_IP/30 sẽ quét 4 địa chỉ IP.
Bạn cũng có thể cung cấp một tệp làm đầu vào cho danh sách mục tiêu: nmap -iL list_of_hosts.txt.
Nếu muốn kiểm tra danh sách host mà Nmap sẽ quét, bạn có thể dùng nmap -sL TARGETS. Tuỳ chọn này sẽ đưa ra danh sách chi tiết các host Nmap sẽ quét mà không thực hiện quét, tuy nhiên Nmap sẽ cố gắng thực hiện reverse-DNS trên tất cả mục tiêu để lấy tên của chúng. Tên có thể tiết lộ nhiều thông tin cho pentester. (Nếu bạn không muốn Nmap hỏi DNS, hãy thêm tùy chọn -n.)
Hãy khởi chạy AttackBox bằng nút Start AttackBox, mở terminal khi AttackBox sẵn sàng, và sử dụng Nmap để trả lời các câu hỏi sau.
Trả lời các câu hỏi dưới đây
- Địa chỉ IP đầu tiên Nmap sẽ quét nếu bạn cung cấp 10.10.12.13/29 làm mục tiêu là gì?
10.10.12.8 - Có bao nhiêu địa chỉ IP Nmap sẽ quét nếu bạn cung cấp khoảng sau 10.10.0-255.101-125?
6400
Task 4: Discovering Live Hosts
Hãy ôn lại các lớp TCP/IP trong hình tiếp theo. Chúng ta sẽ tận dụng các giao thức để phát hiện các host đang hoạt động. Từ dưới lên trên, có thể dùng:
- ARP từ tầng Liên kết (Link Layer)
- ICMP từ tầng Mạng (Network Layer)
- TCP từ tầng Giao vận (Transport Layer)
- UDP từ tầng Giao vận (Transport Layer)
Trước khi bàn chi tiết cách các trình quét có thể dùng từng giao thức, ta điểm qua nhanh bốn giao thức này. ARP có một mục đích: gửi một frame tới địa chỉ broadcast trên phân đoạn mạng và yêu cầu máy tính có địa chỉ IP cụ thể phản hồi bằng cách cung cấp địa chỉ MAC (phần cứng).
ICMP có nhiều loại (type). ICMP ping sử dụng Type 8 (Echo) và Type 0 (Echo Reply).
Nếu bạn muốn ping một hệ thống trong cùng subnet, nên có một truy vấn ARP trước khi gửi ICMP Echo.
Mặc dù TCP và UDP thuộc tầng giao vận, nhưng cho mục đích quét mạng, trình quét có thể gửi các gói được chế tạo đặc biệt tới các cổng TCP hoặc UDP phổ biến để kiểm tra xem mục tiêu có phản hồi không. Cách này hiệu quả, đặc biệt khi ICMP Echo bị chặn.
Nếu bạn đã đóng trình mô phỏng mạng, hãy nhấp nút “View Site” ở Task 2 để mở lại.
Trả lời các câu hỏi dưới đây


Task 5: Nmap Host Discovery Using ARP
Làm sao bạn biết những host nào đang bật và hoạt động? Việc tránh lãng phí thời gian quét cổng trên một host ngoại tuyến hoặc một địa chỉ IP không được sử dụng là điều rất quan trọng. Có nhiều cách để phát hiện các host đang online. Khi không cung cấp tùy chọn khám phá host, Nmap sẽ dùng các cách sau để tìm host sống:
- Khi người dùng có đặc quyền cố gắng quét mục tiêu trong mạng cục bộ (Ethernet), Nmap sử dụng ARP requests. (Người dùng có đặc quyền là root hoặc người thuộc sudoers và có thể chạy sudo.)
- Khi người dùng có đặc quyền cố gắng quét mục tiêu ngoài mạng cục bộ, Nmap sử dụng ICMP echo requests, TCP ACK (Acknowledge) đến port 80, TCP SYN (Synchronize) đến port 443, và ICMP timestamp request.
- Khi người dùng không có đặc quyền cố gắng quét mục tiêu ngoài mạng cục bộ, Nmap chuyển sang bắt tay 3 bước TCP bằng cách gửi gói SYN đến các cổng 80 và 443.
Mặc định, Nmap dùng ping scan để tìm host sống, sau đó chỉ quét cổng các host sống. Nếu bạn muốn dùng Nmap để chỉ phát hiện host online mà không quét cổng của các hệ thống sống, bạn có thể chạy nmap -sn TARGETS. Hãy đào sâu hơn để nắm vững các kỹ thuật khác nhau được sử dụng.
Quét ARP chỉ khả thi nếu bạn ở cùng subnet với các hệ thống mục tiêu. Trên Ethernet (802.3) và Wi-Fi (802.11), bạn cần biết địa chỉ MAC của bất kỳ hệ thống nào trước khi có thể giao tiếp với nó. Địa chỉ MAC là cần thiết cho header tầng liên kết (link-layer header); header này chứa MAC nguồn và MAC đích cùng các trường khác. Để lấy địa chỉ MAC, hệ điều hành gửi một truy vấn ARP. Một host trả lời các truy vấn ARP là đang bật. Truy vấn ARP chỉ hoạt động nếu mục tiêu ở cùng subnet với bạn, tức là cùng Ethernet/Wi-Fi. Bạn nên kỳ vọng thấy nhiều truy vấn ARP được tạo ra trong quá trình Nmap quét một mạng cục bộ. Nếu bạn muốn Nmap chỉ thực hiện ARP scan mà không quét cổng, bạn có thể dùng nmap -PR -sn TARGETS, trong đó -PR cho biết bạn chỉ muốn ARP scan. Ví dụ dưới đây cho thấy Nmap dùng ARP để phát hiện host không kèm quét cổng. Chúng tôi chạy nmap -PR -sn MACHINE_IP/24 để phát hiện tất cả các hệ thống sống trong cùng subnet với máy mục tiêu.
Pentester Terminal
pentester@TryHackMe$ sudo arp-scan 10.10.210.6/24
Interface: eth0, datalink type: EN10MB (Ethernet)
WARNING: host part of 10.10.210.6/24 is non-zero
Starting arp-scan 1.9 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.10.210.75 02:83:75:3a:f2:89 (Unknown)
10.10.210.100 02:63:d0:1b:2d:cd (Unknown)
10.10.210.165 02:59:79:4f:17:b7 (Unknown)
4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9: 256 hosts scanned in 2.726 seconds (93.91 hosts/sec). 3 responded
Trong trường hợp này, AttackBox có địa chỉ IP 10.10.210.6, và nó dùng ARP requests để phát hiện các host sống trên cùng subnet. ARP scan hoạt động như minh họa ở hình bên dưới: Nmap gửi ARP requests tới tất cả máy mục tiêu, và những máy đang online sẽ gửi ARP reply về.

Nếu ta quan sát các gói sinh ra bằng công cụ như tcpdump hoặc Wireshark, ta sẽ thấy lưu lượng mạng giống như hình minh họa. Trong hình, Wireshark hiển thị MAC nguồn, MAC đích, giao thức, và truy vấn liên quan đến mỗi ARP request. Địa chỉ nguồn là MAC của AttackBox, còn đích là địa chỉ broadcast vì ta chưa biết MAC của mục tiêu. Tuy nhiên, ta thấy địa chỉ IP của mục tiêu xuất hiện trong cột Info. Trong hình, có thể thấy chúng ta đang yêu cầu MAC của tất cả các địa chỉ IP trong subnet, bắt đầu từ 10.10.210.1. Host có IP mà ta hỏi đến sẽ gửi ARP reply kèm MAC của nó, và đó là cách ta biết nó đang online.

Nói về ARP scan, cần nhắc đến một trình quét xây dựng quanh truy vấn ARP là arp-scan; công cụ này cung cấp nhiều tùy chọn để tùy biến lượt quét. Hãy xem wiki của arp-scan để biết thông tin chi tiết. Một tùy chọn phổ biến là arp-scan --localnet hoặc đơn giản arp-scan -l. Lệnh này sẽ gửi ARP queries tới tất cả các địa chỉ IP hợp lệ trên các mạng cục bộ của bạn. Hơn nữa, nếu hệ thống của bạn có nhiều giao diện và bạn chỉ quan tâm phát hiện host sống trên một giao diện, bạn có thể chỉ định giao diện bằng -I. Ví dụ, sudo arp-scan -I eth0 -l sẽ gửi ARP queries cho tất cả IP hợp lệ trên giao diện eth0.
Lưu ý rằng arp-scan không được cài sẵn trên AttackBox; tuy nhiên, có thể cài bằng apt install arp-scan.
Trong ví dụ dưới đây, chúng tôi đã quét subnet của AttackBox bằng arp-scan ATTACKBOX_IP/24. Vì quét này được thực hiện gần thời điểm với lệnh trước đó nmap -PR -sn ATTACKBOX_IP/24, chúng tôi thu được cùng ba mục tiêu đang sống.
Pentester Terminal
pentester@TryHackMe$ sudo arp-scan 10.10.210.6/24
Interface: eth0, datalink type: EN10MB (Ethernet)
WARNING: host part of 10.10.210.6/24 is non-zero
Starting arp-scan 1.9 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.10.210.75 02:83:75:3a:f2:89 (Unknown)
10.10.210.100 02:63:d0:1b:2d:cd (Unknown)
10.10.210.165 02:59:79:4f:17:b7 (Unknown)
4 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9: 256 hosts scanned in 2.726 seconds (93.91 hosts/sec). 3 responded
Tương tự, lệnh arp-scan sẽ tạo ra nhiều ARP queries mà ta có thể thấy bằng tcpdump, Wireshark, hoặc công cụ tương tự. Ta có thể nhận thấy bản ghi gói tin của arp-scan và nmap -PR -sn tạo ra mẫu lưu lượng tương tự. Dưới đây là đầu ra Wireshark.

Nếu bạn đã đóng trình mô phỏng mạng, hãy nhấp nút “Visit Site” trong Task 2 để mở lại.
Trả lời các câu hỏi dưới đây

Task 6: Nmap Host Discovery Using ICMP
Chúng ta có thể ping mọi địa chỉ IP trên một mạng mục tiêu và xem ai sẽ phản hồi các yêu cầu ping (ICMP Type 8/Echo) bằng gói trả lời ping (ICMP Type 0). Nghe có vẻ đơn giản, đúng không? Mặc dù đây là cách trực diện nhất, nó không phải lúc nào cũng đáng tin cậy. Nhiều tường lửa chặn ICMP echo; các phiên bản MS Windows mới thường cấu hình tường lửa máy chủ (host firewall) để mặc định chặn ICMP echo. Hãy nhớ rằng nếu mục tiêu ở cùng subnet, một truy vấn ARP sẽ diễn ra trước yêu cầu ICMP.
Để dùng ICMP echo request nhằm phát hiện host đang hoạt động, thêm tùy chọn -PE. (Nhớ thêm -sn nếu bạn không muốn tiếp tục quét cổng sau đó.) Như minh họa trong hình, một lần quét ICMP echo hoạt động bằng cách gửi ICMP Echo Request và kỳ vọng mục tiêu sẽ phản hồi bằng ICMP Echo Reply nếu nó đang online.

Trong ví dụ dưới đây, chúng tôi quét subnet của mục tiêu bằng nmap -PE -sn MACHINE_IP/24. Lượt quét này sẽ gửi gói ICMP echo tới mọi địa chỉ IP trong subnet. Một lần nữa, chúng ta kỳ vọng các host đang hoạt động sẽ phản hồi; tuy nhiên, cần nhớ rằng nhiều tường lửa chặn ICMP. Kết quả dưới đây cho thấy việc quét subnet lớp C của máy ảo bằng sudo nmap -PE -sn MACHINE_IP/24 từ AttackBox.
Pentester Terminal
pentester@TryHackMe$ sudo nmap -PE -sn 10.10.68.220/24
Starting Nmap 7.60 ( https://nmap.org ) at 2021-09-02 10:16 BST
Nmap scan report for ip-10-10-68-50.eu-west-1.compute.internal (10.10.68.50)
Host is up (0.00017s latency).
MAC Address: 02:95:36:71:5B:87 (Unknown)
Nmap scan report for ip-10-10-68-52.eu-west-1.compute.internal (10.10.68.52)
Host is up (0.00017s latency).
MAC Address: 02:48:E8:BF:78:E7 (Unknown)
Nmap scan report for ip-10-10-68-77.eu-west-1.compute.internal (10.10.68.77)
Host is up (-0.100s latency).
MAC Address: 02:0F:0A:1D:76:35 (Unknown)
Nmap scan report for ip-10-10-68-110.eu-west-1.compute.internal (10.10.68.110)
Host is up (-0.10s latency).
MAC Address: 02:6B:50:E9:C2:91 (Unknown)
Nmap scan report for ip-10-10-68-140.eu-west-1.compute.internal (10.10.68.140)
Host is up (0.00021s latency).
MAC Address: 02:58:59:63:0B:6B (Unknown)
Nmap scan report for ip-10-10-68-142.eu-west-1.compute.internal (10.10.68.142)
Host is up (0.00016s latency).
MAC Address: 02:C6:41:51:0A:0F (Unknown)
Nmap scan report for ip-10-10-68-220.eu-west-1.compute.internal (10.10.68.220)
Host is up (0.00026s latency).
MAC Address: 02:25:3F:DB:EE:0B (Unknown)
Nmap scan report for ip-10-10-68-222.eu-west-1.compute.internal (10.10.68.222)
Host is up (0.00025s latency).
MAC Address: 02:28:B1:2E:B0:1B (Unknown)
Nmap done: 256 IP addresses (8 hosts up) scanned in 2.11 seconds
Kết quả cho thấy có 8 host đang hoạt động; thêm vào đó, nó hiển thị địa chỉ MAC của chúng. Nói chung, ta không kỳ vọng biết được địa chỉ MAC của mục tiêu trừ khi chúng ở cùng subnet với hệ thống của ta. Đầu ra trên cho thấy Nmap không cần gửi gói ICMP vì nó đã xác nhận các host này đang hoạt động dựa trên các phản hồi ARP nhận được.
Chúng ta sẽ lặp lại lượt quét trên; tuy nhiên, lần này quét từ một hệ thống thuộc subnet khác. Kết quả tương tự nhưng không có địa chỉ MAC.
Pentester Terminal
pentester@TryHackMe$ sudo nmap -PE -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 12:16 EEST
Nmap scan report for 10.10.68.50
Host is up (0.12s latency).
Nmap scan report for 10.10.68.52
Host is up (0.12s latency).
Nmap scan report for 10.10.68.77
Host is up (0.11s latency).
Nmap scan report for 10.10.68.110
Host is up (0.11s latency).
Nmap scan report for 10.10.68.140
Host is up (0.11s latency).
Nmap scan report for 10.10.68.142
Host is up (0.11s latency).
Nmap scan report for 10.10.68.220
Host is up (0.11s latency).
Nmap scan report for 10.10.68.222
Host is up (0.11s latency).
Nmap done: 256 IP addresses (8 hosts up) scanned in 8.26 seconds
Nếu bạn xem các gói mạng bằng công cụ như Wireshark, bạn sẽ thấy thứ gì đó tương tự hình minh họa: một địa chỉ IP nguồn thuộc subnet khác đang gửi ICMP Echo Request tới mọi địa chỉ IP trong subnet mục tiêu để xem địa chỉ nào phản hồi.

Vì ICMP Echo Request thường bị chặn, bạn cũng có thể cân nhắc ICMP Timestamp hoặc ICMP Address Mask để kiểm tra một hệ thống có online hay không. Nmap sử dụng Timestamp Request (ICMP Type 13) và kiểm tra xem có nhận Timestamp Reply (ICMP Type 14) hay không. Thêm tùy chọn -PP để yêu cầu Nmap dùng ICMP timestamp requests. Như minh họa, bạn kỳ vọng các host đang hoạt động sẽ phản hồi.

Trong ví dụ sau, chúng tôi chạy nmap -PP -sn MACHINE_IP/24 để phát hiện các máy tính online trong subnet của máy mục tiêu.
Pentester Terminal
pentester@TryHackMe$ sudo nmap -PP -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 12:06 EEST
Nmap scan report for 10.10.68.50
Host is up (0.13s latency).
Nmap scan report for 10.10.68.52
Host is up (0.25s latency).
Nmap scan report for 10.10.68.77
Host is up (0.14s latency).
Nmap scan report for 10.10.68.110
Host is up (0.14s latency).
Nmap scan report for 10.10.68.140
Host is up (0.15s latency).
Nmap scan report for 10.10.68.209
Host is up (0.14s latency).
Nmap scan report for 10.10.68.220
Host is up (0.14s latency).
Nmap scan report for 10.10.68.222
Host is up (0.14s latency).
Nmap done: 256 IP addresses (8 hosts up) scanned in 10.93 seconds
Tương tự lượt quét ICMP trước, lượt này sẽ gửi nhiều ICMP Timestamp Request tới mọi địa chỉ IP hợp lệ trong subnet mục tiêu. Trong ảnh chụp Wireshark, bạn có thể thấy một IP nguồn gửi các gói ICMP tới mọi IP có thể để phát hiện host online.

Tương tự, Nmap cũng dùng Address Mask Query (ICMP Type 17) và kiểm tra xem có nhận Address Mask Reply (ICMP Type 18) hay không. Bật lượt quét này với tùy chọn -PM. Như minh họa, các host đang hoạt động được kỳ vọng sẽ phản hồi ICMP Address Mask.

Trong nỗ lực phát hiện host sống bằng ICMP Address Mask, chúng tôi chạy nmap -PM -sn MACHINE_IP/24. Mặc dù dựa trên các lượt quét trước, ta biết ít nhất 8 host đang hoạt động, lượt quét này không trả về kết quả nào. Lý do là hệ thống mục tiêu hoặc một tường lửa trên đường đi đang chặn kiểu gói ICMP này. Do đó, rất quan trọng là phải nắm nhiều cách tiếp cận để đạt cùng mục tiêu: nếu một loại gói bị chặn, ta luôn có thể chọn loại khác để khám phá mạng và dịch vụ mục tiêu.
Pentester Terminal
pentester@TryHackMe$ sudo nmap -PM -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 12:13 EEST
Nmap done: 256 IP addresses (0 hosts up) scanned in 52.17 seconds
Mặc dù chúng ta không nhận được phản hồi nào và không xác định được host nào đang online, cần lưu ý rằng lượt quét này đã gửi ICMP Address Mask Request tới mọi địa chỉ IP hợp lệ và chờ phản hồi. Mỗi yêu cầu ICMP được gửi hai lần, như thể hiện trong ảnh chụp màn hình.

Trả lời các câu hỏi dưới đây

Task 7: Nmap Host Discovery Using TCP and UDP
TCP SYN Ping
Ta có thể gửi một gói với cờ SYN (Synchronize) tới một cổng TCP (mặc định là 80) và chờ phản hồi.
- Nếu cổng mở, mục tiêu sẽ trả lời SYN/ACK (Acknowledge/Xác nhận).
- Nếu cổng đóng, sẽ nhận RST (Reset).
Ở đây, ta chỉ kiểm tra có phản hồi hay không để suy ra host đang hoạt động; trạng thái cụ thể của cổng không quan trọng. Hình dưới (nhắc lại) mô tả cách bắt tay TCP 3 bước hoạt động.

Nếu muốn Nmap dùng TCP SYN ping, dùng tùy chọn -PS kèm số cổng / khoảng / danh sách cổng (hoặc kết hợp):
- -PS21 → nhắm cổng 21
- -PS21-25 → nhắm các cổng 21, 22, 23, 24, 25
- -PS80,443,8080 → nhắm 3 cổng 80, 443, 8080
Người dùng có đặc quyền (root/sudoers) có thể gửi gói TCP SYN và không cần hoàn tất bắt tay 3 bước ngay cả khi cổng mở (như minh họa). Người dùng không có đặc quyền buộc phải hoàn tất bắt tay 3 bước nếu cổng mở.

Chúng ta sẽ chạy nmap -PS -sn MACHINE_IP/24 để quét subnet của máy mục tiêu. Kết quả cho thấy phát hiện 5 host.
Pentester Terminal
pentester@TryHackMe$ sudo nmap -PS -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 13:45 EEST
Nmap scan report for 10.10.68.52
Host is up (0.10s latency).
Nmap scan report for 10.10.68.121
Host is up (0.16s latency).
Nmap scan report for 10.10.68.125
Host is up (0.089s latency).
Nmap scan report for 10.10.68.134
Host is up (0.13s latency).
Nmap scan report for 10.10.68.220
Host is up (0.11s latency).
Nmap done: 256 IP addresses (5 hosts up) scanned in 17.38 seconds
Nhìn lưu lượng trên Wireshark, do ta không chỉ định cổng, Nmap dùng cổng phổ biến; ở đây là TCP/80. Bất kỳ dịch vụ lắng nghe trên 80 sẽ phản hồi, gián tiếp cho thấy host đang online.

TCP ACK Ping
Đúng như bạn đoán, kỹ thuật này gửi gói có cờ ACK. Bạn phải chạy Nmap với đặc quyền; nếu chạy như người dùng thường, Nmap sẽ cố gắng thực hiện bắt tay 3 bước.
Mặc định dùng cổng 80. Cú pháp tương tự TCP SYN ping. -PA theo sau là số cổng / khoảng / danh sách:
- -PA21, -PA21-25, -PA80,443,8080.
Nếu không chỉ định cổng, sẽ dùng 80.
Như hình minh họa, bất kỳ gói TCP có cờ ACK đều sẽ nhận về gói TCP có cờ RST, vì gói ACK không thuộc một kết nối đang tồn tại. Phản hồi RST được dùng để xác định host đang hoạt động.

Ví dụ, chạy sudo nmap -PA -sn MACHINE_IP/24 để phát hiện host online trên subnet mục tiêu. Kết quả: 5 host.
Pentester Terminal
pentester@TryHackMe$ sudo nmap -PA -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 13:46 EEST
Nmap scan report for 10.10.68.52
Host is up (0.11s latency).
Nmap scan report for 10.10.68.121
Host is up (0.12s latency).
Nmap scan report for 10.10.68.125
Host is up (0.10s latency).
Nmap scan report for 10.10.68.134
Host is up (0.10s latency).
Nmap scan report for 10.10.68.220
Host is up (0.10s latency).
Nmap done: 256 IP addresses (5 hosts up) scanned in 29.89 seconds
Quan sát traffic, ta sẽ thấy nhiều gói có cờ ACK gửi tới port 80 của các hệ thống mục tiêu. Nmap gửi mỗi gói hai lần. Hệ thống không phản hồi là offline hoặc không truy cập được.

UDP Ping
Ta cũng có thể dùng UDP để xem host online. Trái với TCP SYN ping, gửi gói UDP tới cổng UDP mở thường không nhận phản hồi. Tuy nhiên, nếu gửi gói UDP tới cổng UDP đóng, ta kỳ vọng nhận ICMP Port Unreachable; điều này gián tiếp cho biết mục tiêu đang bật.
Hình minh họa: gửi UDP tới cổng mở → không phản hồi; gửi tới cổng đóng → kích hoạt ICMP destination unreachable (port unreachable).


Cú pháp chỉ định cổng tương tự TCP; Nmap dùng -PU cho UDP ping. Ví dụ sau dùng UDP scan và phát hiện 5 host sống.
Pentester Terminal
pentester@TryHackMe$ sudo nmap -PU -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-09-02 13:45 EEST
Nmap scan report for 10.10.68.52
Host is up (0.10s latency).
Nmap scan report for 10.10.68.121
Host is up (0.10s latency).
Nmap scan report for 10.10.68.125
Host is up (0.14s latency).
Nmap scan report for 10.10.68.134
Host is up (0.096s latency).
Nmap scan report for 10.10.68.220
Host is up (0.11s latency).
Nmap done: 256 IP addresses (5 hosts up) scanned in 9.20 seconds
Kiểm tra gói UDP tạo ra, ta thấy Nmap gửi UDP tới các cổng UDP có khả năng đóng, nhằm kích hoạt lỗi ICMP destination unreachable (port unreachable).

Masscan
Masscan dùng cách tiếp cận tương tự để tìm hệ thống khả dụng, nhưng để quét rất nhanh, Masscan rất “mạnh tay” về tốc độ phát sinh gói. Cú pháp tương đối giống: -p theo sau là số cổng / danh sách / khoảng. Ví dụ:
- masscan MACHINE_IP/24 -p443
- masscan MACHINE_IP/24 -p80,443
- masscan MACHINE_IP/24 -p22-25
- masscan MACHINE_IP/24 --top-ports 100
Masscan không cài sẵn trên AttackBox; có thể cài bằng:
apt install masscan
Trả lời các câu hỏi dưới đây

Task 8: Using Reverse-DNS Lookup
Mặc định, Nmap sẽ thực hiện tra cứu DNS ngược (reverse-DNS) đối với các host đang online. Vì tên máy (hostname) có thể tiết lộ nhiều thông tin, bước này khá hữu ích. Tuy nhiên, nếu bạn không muốn gửi các truy vấn DNS như vậy, hãy dùng tùy chọn -n để bỏ qua bước này.
Theo mặc định, Nmap chỉ tra cứu DNS cho các host online; tuy nhiên, bạn có thể dùng tùy chọn -R để truy vấn DNS ngay cả với các host offline. Nếu muốn chỉ định máy chủ DNS cụ thể, hãy thêm tùy chọn --dns-servers DNS_SERVER.
Trả lời câu hỏi dưới đây

Task 9: Summary
Bạn đã học cách ARP, ICMP, TCP và UDP phát hiện các host đang hoạt động sau khi hoàn thành phòng này. Bất kỳ phản hồi nào từ một host đều là dấu hiệu cho thấy host đó đang online. Dưới đây là tóm tắt nhanh các tùy chọn dòng lệnh Nmap đã đề cập.
Các kiểu quét và lệnh ví dụ
| 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 |
Lưu ý: Thêm -sn nếu bạn chỉ muốn khám phá host (không quét cổng). Nếu không dùng -sn, Nmap sẽ mặc định quét cổng các host đang online.
Tùy chọn hữu ích
| -n | Không tra cứu DNS |
| -R | Tra cứu reverse-DNS cho tất cả host |
| -sn | Chỉ khám phá host (không quét cổng) |
'Labs > Information Gathering' 카테고리의 다른 글
| Sakura Room - TryHackMe (0) | 2025.10.27 |
|---|---|
| OhSINT - TryHackMe (0) | 2025.10.26 |
| Shodan.io - TryHackMe (0) | 2025.10.25 |
| Active Reconnaissance - TryHackMe (0) | 2025.10.25 |
| Passive Reconnaissance - TryHackMe (0) | 2025.10.24 |