Logo
Featured Image
Blog

[Lộ Trình Cybersecurity] Bài 1: Tư Duy Trinh Sát (Reconnaissance) & Hướng Dẫn Sử Dụng Nmap Cơ Bản

Author
Tobi 28/01/2026 0 views

Chào các bạn, đây là bài viết đầu tiên trong series Lộ trình trở thành Kỹ sư An ninh mạng (Cybersecurity Engineer) mà mình đang theo đuổi.

Trong an ninh mạng, bạn không thể bảo vệ (hoặc tấn công) những gì bạn không nhìn thấy. Đó là lý do bước đầu tiên của mọi quy trình kiểm thử xâm nhập (Penetration Testing) luôn là Reconnaissance (Trinh sát/Thu thập thông tin). Hôm nay, chúng ta sẽ cùng tìm hiểu về tư duy trinh sát và thực hành với công cụ "huyền thoại": Nmap.

1. Tư duy Trinh sát: Hiểu về Bề mặt Tấn công (Attack Surface)

Trước khi gõ bất kỳ dòng lệnh nào, chúng ta cần hiểu mình đang tìm kiếm cái gì. Hãy tưởng tượng máy chủ (Server) mục tiêu giống như một ngôi nhà:

  • IP Address: Là địa chỉ nhà.

  • Ports (Cổng): Là các cửa chính, cửa sổ của ngôi nhà đó.

Trong vai trò một người bảo vệ (Blue Team) hay kẻ tấn công (Red Team), bạn đều quan tâm đến trạng thái của các "cánh cửa" này:

  1. Open (Mở): Dịch vụ đang chạy và lắng nghe kết nối. Đây là nơi có thể tồn tại lỗ hổng để xâm nhập.

  2. Closed (Đóng): Không có dịch vụ nào đang chạy, nhưng biết nó đóng cũng là một thông tin hữu ích.

  3. Filtered (Bị chặn): Có Firewall (Tường lửa) đứng gác, chặn việc thăm dò.

Mục tiêu của bài này là xác định xem những cửa nào đang mởai đang đứng sau cánh cửa đó.

2. Chuẩn bị môi trường (Lab Setup)

Để thực hành an toàn và hợp pháp, mình sử dụng Kali Linux (hệ điều hành tiêu chuẩn cho Pentest).

  • Lưu ý quan trọng: Tuyệt đối không thực hiện quét (scan) lên các hệ thống mạng, website mà bạn không sở hữu hoặc không được cho phép. Hành động này có thể bị coi là vi phạm pháp luật.

Trong bài lab này, chúng ta sẽ sử dụng mục tiêu hợp pháp do Nmap cung cấp: scanme.nmap.org.

3. Thực hành Nmap: Các lệnh cốt lõi

Nmap (Network Mapper) là công cụ quét mạng mạnh mẽ nhất hiện nay, giúp phát hiện các host trong mạng, các cổng đang mở và phiên bản hệ điều hành.

Mở Terminal trên Kali Linux và bắt đầu thực hành nhé.

Bước 1: Quét cổng cơ bản (Basic Scan)

Lệnh đơn giản nhất để kiểm tra 1000 cổng phổ biến nhất trên mục tiêu.

nmap scanme.nmap.org

Tăng tốc độ (Timing Templates) Thêm cờ -T4 để bảo Nmap "làm nhanh lên, đừng chờ lâu quá".

nmap -T4 scanme.nmap.org

Kết quả phân tích: Sau khi chạy lệnh, Nmap sẽ trả về danh sách các cổng đang OPEN.

Bước 2: Xác định phiên bản dịch vụ (Service Version Detection)

Biết cổng mở là chưa đủ. Hacker cần biết chính xác phần mềm gìphiên bản bao nhiêu đang chạy trên cổng đó. Điều này cực kỳ quan trọng để tìm các lỗ hổng (CVE) tương ứng với phiên bản cũ.

Chúng ta thêm cờ -sV (Service Version):

nmap -sV -T4 scanme.nmap.org

 

Phân tích: Nhìn vào ảnh trên, thay vì chỉ thấy port 80 tcp open http, chúng ta sẽ thấy chi tiết hơn, ví dụ: Apache httpd 2.4.7. Nếu phiên bản Apache này có lỗi bảo mật đã công bố, đây chính là "gót chân Achilles".

Bước 3: Đoán Hệ điều hành (OS Detection)

Để biết server mục tiêu đang chạy Linux (Ubuntu, CentOS...) hay Windows, chúng ta dùng cờ -O. Lệnh này yêu cầu quyền root (hoặc sudo) để gửi các gói tin đặc biệt.

sudo nmap -O -T4 scanme.nmap.org

 

  • Dòng Aggressive OS guesses: DD-WRT v24-sp2 (Linux 2.4.37) (96%) cho thấy Nmap đoán server này chạy nhân Linux (có thể là firmware DD-WRT thường thấy trên Router).

  • Lý do không chắc chắn 100%: Do server nằm sau Firewall hoặc bộ cân bằng tải (Load Balancer), làm méo mó các gói tin phản hồi khiến "dấu vân tay" (fingerprint) của hệ điều hành không còn nguyên vẹn.

Bước 4: Quét "Tàng hình" (Stealth Scan)

Trong thực tế, việc quét kết nối đầy đủ (TCP Connect) rất dễ bị Firewall phát hiện và ghi log. Kỹ thuật quét SYN Scan (cờ -sS) gửi gói tin SYN nhưng không hoàn tất quá trình bắt tay 3 bước, giúp giảm thiểu khả năng bị phát hiện. Đây cũng là kiểu quét mặc định khi dùng quyền sudo.

sudo nmap -sS -T4 scanme.nmap.org

 

1. Tại sao gọi là "Quét lén lút" (Stealth)?

Lệnh này yêu cầu quyền sudo (Admin) vì Nmap cần can thiệp sâu vào gói tin. Thay vì thực hiện trọn vẹn quy trình "Bắt tay 3 bước" (gõ cửa - chủ nhà mở - bắt tay), Nmap chỉ gửi gói SYN (gõ cửa), thấy server trả lời SYN-ACK (mở cửa) là Nmap lập tức ngắt kết nối (gửi RST) và bỏ chạy.

  • Lợi ích: Server mục tiêu chưa kịp ghi nhận một "kết nối thành công" vào file log hệ thống. Điều này giúp kẻ tấn công ẩn mình tốt hơn.

2. Phân tích trạng thái các Cổng (Ports)

Kết quả trả về 3 trạng thái rõ rệt, thể hiện đúng bức tranh bảo mật của server:

  • STATE: OPEN (Cổng mở - Cửa không khóa)

    • 22/tcp (SSH): Cổng quản trị server từ xa. Nếu mật khẩu yếu, hacker có thể tấn công Brute-force vào đây.

    • 80/tcp (HTTP): Web server đang chạy. Đây là nơi chúng ta truy cập website.

    • 31337/tcp (Elite): Như đã nói ở bài trước, đây là cổng "nhận diện thương hiệu" của hacker, được mở chủ ý trên server này.

    • 9929/tcp (nping-echo): Dịch vụ phản hồi ping dùng cho mục đích kiểm thử.

  • STATE: FILTERED (Bị chặn - "Hố đen")

    • Các cổng 25 (SMTP - Gửi mail)514 (Shell) đang ở trạng thái filtered.

    • Ý nghĩa: Nmap gửi gói tin đến nhưng không nhận được hồi âm. Gói tin đã bị Firewall (Tường lửa) chặn và vứt bỏ (DROP). Đây là dấu hiệu cho thấy quản trị viên đã cấu hình tường lửa tốt để chặn các dịch vụ nhạy cảm.

    • Đây cũng là lý do scan bị lâu (140 giây): Nmap phải chờ xem liệu gói tin có bị lạc đường không hay thực sự bị chặn.

  • STATE: CLOSED (Đã ẩn - "Not shown: 994 closed ports")

    • Có 994 cổng khác trả về tín hiệu RST (Reset). Nghĩa là server nói thẳng: "Ở đây không có dịch vụ nào cả, đừng thử nữa".

3. Hiệu năng (Performance)

  • Thời gian quét: 140.26 giây.

  • So với quét thường, tốc độ này vẫn bị chậm do vướng các cổng filtered (Nmap phải chờ timeout/thử lại). Dòng cảnh báo retransmission cap hit cho thấy Nmap đã phải cố gửi lại gói tin nhiều lần vào các cổng bị chặn này trước khi bỏ cuộc.

4. Tổng kết bài học

Qua bài đầu tiên, chúng ta đã nắm được:

  1. Khái niệm Reconnaissance: Bước quan trọng nhất để vẽ bản đồ mạng.

  2. Cách sử dụng Nmap để tìm "cửa mở" (Open Ports) và "người gác cửa" (Service Version).

  3. Tư duy bảo mật: Một Admin giỏi sẽ luôn kiểm soát xem mình đang mở những cổng nào ra Internet, vì mỗi một cổng mở là một nguy cơ tiềm tàng.

Chúng ta vừa nói rằng kỹ thuật SYN Scan giúp hacker 'bỏ chạy' trước khi server kịp ghi log. Nhưng làm sao chứng minh được điều đó? Ở bài tiếp theo, chúng ta sẽ dùng Wireshark để bắt tận tay gói tin Nmap và xem màn 'bỏ chạy' này diễn ra như thế nào trên đường truyền mạng, giúp các bạn nhìn thấy rõ điều gì thực sự diễn ra bên dưới đường truyền mạng.

Hẹn gặp lại các bạn trong bài viết tới!

Phụ lục: Nmap Cheat Sheet - Các lệnh "phải biết"

Để sử dụng Nmap thành thạo, bạn không cần nhớ hết mọi thứ, nhưng những lệnh dưới đây là "vật bất ly thân" của mọi Pentester. Hãy lưu lại danh sách này để tra cứu khi cần nhé.

1. Chỉ định mục tiêu (Target Selection)

Hacker thường không chỉ quét 1 IP lẻ loi mà quét cả dải mạng.

  • Quét 1 IP cụ thể: nmap 192.168.1.1

  • Quét dải IP (Range): Quét nhiều máy liền kề (ví dụ từ .1 đến .50). nmap 192.168.1.1-50

  • Quét cả mạng (CIDR): Quét toàn bộ mạng LAN (Rất hay dùng để tìm thiết bị ẩn). nmap 192.168.1.0/24

  • Quét từ danh sách file: Nếu bạn có file targets.txt chứa danh sách IP. nmap -iL targets.txt

2. Kỹ thuật quét (Scan Techniques)

  • Stealth Scan (Quét ẩn danh): -sS Đây là kiểu quét mặc định khi bạn có quyền root. Nó gửi gói tin SYN nhưng không hoàn tất kết nối, giúp quét nhanh và khó bị Firewall phát hiện hơn. sudo nmap -sS <target>

  • TCP Connect Scan: -sT Kiểu quét mặc định nếu bạn không có quyền root. Nó chậm hơn và dễ bị lưu log trên server mục tiêu. nmap -sT <target>

  • UDP Scan: -sU Dùng để quét các dịch vụ chạy UDP (như DNS, DHCP). Lưu ý: Quét UDP thường rất chậm. sudo nmap -sU <target>

3. Cấu hình Cổng (Port Specification)

Mặc định Nmap chỉ quét 1000 cổng phổ biến nhất. Để không bỏ sót, bạn cần các cờ sau:

  • Quét cổng cụ thể: Dùng cờ -p. nmap -p 80 <target> (Chỉ cổng 80) nmap -p 80,443 <target> (Cổng 80 và 443)

  • Quét TẤT CẢ cổng: Dùng cờ -p-. Đây là lệnh quan trọng để tìm các backdoor nằm ở cổng lạ (từ 1 đến 65535). nmap -p- <target>

  • Quét nhanh (Fast mode): Dùng cờ -F. Chỉ quét 100 cổng phổ biến nhất để kiểm tra nhanh tình hình. nmap -F <target>

4. Dò tìm Dịch vụ & Hệ điều hành

  • Phát hiện phiên bản (Service Version): -sV Giúp bạn biết chính xác server đang chạy phần mềm gì (VD: Apache 2.4.7) để tìm lỗi bảo mật tương ứng.

  • Đoán Hệ điều hành (OS Detection): -O Giúp xác định mục tiêu chạy Linux, Windows hay Android.

  • Quét Tích hợp (Aggressive Scan): -A Đây là combo mạnh nhất. Nó bao gồm: Phát hiện OS + Phiên bản dịch vụ + Chạy script quét lỗi + Traceroute. Lưu ý: Lệnh này chạy lâu và tạo ra nhiều "tiếng ồn" trên mạng.

5. Hiệu năng & Tốc độ

  • Tăng tốc độ: -T4 Mức T3 là mặc định. Mức T4 (Aggressive) được khuyên dùng cho mạng hiện đại để quét nhanh hơn mà vẫn ổn định.

  • Bỏ qua Ping (Treat as Online): -Pn Một số server chặn lệnh Ping (ICMP) khiến Nmap tưởng server đã chết và dừng quét. Dùng -Pn để ép Nmap quét cổng kể cả khi không Ping được. nmap -Pn -T4 <target>

6. Xuất kết quả (Output)

Dân chuyên nghiệp luôn lưu lại kết quả để viết báo cáo hoặc phân tích sau.

  • Lưu file text: Dễ đọc. nmap -oN ketqua.txt <target>

  • Lưu mọi định dạng: -oA Tạo ra 3 file (.nmap, .xml, .gnmap) để vừa đọc được, vừa import được vào tool khác. nmap -oA my_scan_result <target>


Ví dụ: Câu lệnh "Hủy Diệt" (The Ultimate Scan)

Đây là câu lệnh mà mình thường dùng nhất khi bắt đầu Pentest một máy chủ để lấy thông tin toàn diện:

sudo nmap -p- -sV -sC -T4 -oA full_scan_report <IP_Mục_Tiêu>

Giải thích:

  1. sudo: Chạy quyền cao nhất.

  2. -p-: Quét không sót cổng nào (0-65535).

  3. -sV: Hiện version phần mềm.

  4. -sC: Chạy các script mặc định để tìm lỗi sơ đẳng.

  5. -T4: Tốc độ cao.

  6. -oA: Xuất kết quả ra file full_scan_report để lưu trữ.

Bình luận (0)

+ =
Zalo