Nmap Security Assessment: Từ Cơ Bản Đến Thực Chiến & Báo Cáo
Tài liệu này cung cấp cái nhìn toàn diện về Nmap: từ cơ chế hoạt động, các lệnh scan nâng cao, cách phân tích kết quả, đến lịch sử các lỗ hổng kinh điển và hướng dẫn khắc phục (Remediation), kèm theo Mermaid Diagrams minh họa luồng tấn công.
1. Cơ Chế Hoạt Động (How Nmap Works)
Hiểu "bên dưới" giúp bạn biết tại sao scan lại có kết quả như vậy.
1.1 Cơ chế phát hiện Host (Host Discovery)
- Mục tiêu: Xác định máy nào đang "sống" (UP).
- Kỹ thuật: Gửi gói tin ICMP Echo, TCP SYN 443, TCP ACK 80, ICMP Timestamp.
sequenceDiagram
participant Attacker as Nmap (Attacker)
participant Target as Server (Target)
Note over Attacker: Host Discovery Phase
Attacker->>Target: ICMP Echo Request
Attacker->>Target: TCP SYN (Port 443)
Attacker->>Target: TCP ACK (Port 80)
alt Host is UP
Target-->>Attacker: ICMP Echo Reply (or)
Target-->>Attacker: TCP SYN/ACK (or RST)
Note left of Attacker: ✅ Mark Host as UP
else Host is DOWN / Blocked
Target--xAttacker: No Response
Note left of Attacker: ❌ Mark Host as DOWN
end
1.2 Trạng thái Port (Port States)
Nmap không chỉ báo "Open" hay "Close", mà chi tiết hơn:
- Open: Ứng dụng đang lắng nghe.
- Closed: Không có ứng dụng, nhưng host phản hồi (RST).
- Filtered: Bị chặn bởi Firewall (Drop).
🧠 So sánh: SYN Scan (Stealth) vs Connect Scan
sequenceDiagram
participant Attacker
participant Target
participant Log as System Log
rect rgb(200, 255, 200)
Note over Attacker, Target: 🔥 TCP SYN Scan (-sS) - KHÔNG GHI LOG
Attacker->>Target: SYN
Target-->>Attacker: SYN/ACK
Attacker->>Target: RST (Reset ngay lập tức)
Note right of Attacker: Connection chưa hoàn thành -> App không ghi log
end
rect rgb(255, 200, 200)
Note over Attacker, Target: 🐌 TCP Connect Scan (-sT) - GHI LOG ĐẦY ĐỦ
Attacker->>Target: SYN
Target-->>Attacker: SYN/ACK
Attacker->>Target: ACK (Hoàn tất 3-way handshake)
Note right of Log: 📝 Log: "Connection from IP..."
Attacker->>Target: RST/FIN
end
1.3 Service & OS Fingerprinting
flowchart TD
A[Start Version Detection -sV] --> B{Port Open?}
B -- No --> Z[End]
B -- Yes --> C[Full TCP Connect]
C --> D[Wait for Banner]
D -- Banner Received --> E[Identify Service based on Banner]
D -- No Banner --> F[Send Probes from nmap-service-probes DB]
F --> G{Match Signature?}
G -- Yes --> H[Identify Application & Version]
G -- No --> I[Mark as Unknown Service]
2. Command Reference: Từ Basic đến Advanced
2.1 Basic Recon (Quét thám thính)
| Mục tiêu | Lệnh | Tác dụng |
|---|---|---|
| Ping Sweep | nmap -sn 192.168.1.0/24 |
Chỉ kiểm tra host sống. |
| Quick Scan | nmap -F target.com |
Quét 100 port phổ biến nhất. |
| Scan All | nmap -p- target.com |
Quét toàn bộ 65535 ports. |
2.2 Advanced & Stealth (Quét ẩn danh/Lẩn trốn)
🧠 Kỹ thuật Decoy (Giả mạo IP)
graph LR
Attacker[Attacker IP] -->|Traffic| Router
Decoy1[Decoy IP 1] -->|Fake Traffic| Router
Decoy2[Decoy IP 2] -->|Fake Traffic| Router
Router -->|Mixed Traffic| Target[Target Server]
style Attacker fill:#ff9999,stroke:#333
style Target fill:#99ff99,stroke:#333
style Decoy1 fill:#dddddd,stroke:#333,stroke-dasharray: 5 5
style Decoy2 fill:#dddddd,stroke:#333,stroke-dasharray: 5 5
| Kỹ thuật | Lệnh | Tác dụng |
|---|---|---|
| SYN Scan | nmap -sS target.com |
Scan mặc định, nhanh, ít ồn ào. |
| Decoy | nmap -D RND:10 target.com |
Trộn IP thật với 10 IP giả để làm rối log Admin (như hình trên). |
| Frag | nmap -f target.com |
Chia nhỏ gói tin để lách Firewall. |
2.3 Vulnerability Scan (Quét lỗ hổng với NSE)
sequenceDiagram
participant Nmap
participant Target
participant VulnDB as Nmap Script DB
Note over Nmap: Script: http-vuln-cve2017-5638
Nmap->>Target: Send Malicious HTTP Header (Exploit Probe)
alt Vulnerable
Target-->>Nmap: Error Response / Command Output
Nmap->>Nmap: 🚨 REPORT VULNERABLE!
else Fixed / Patched
Target-->>Nmap: Normal Response / Blocked
Nmap->>Nmap: Report Safe
end
| Mục tiêu | Lệnh | Giải thích |
|---|---|---|
| Vuln Scan | nmap --script vuln target.com |
Chạy bộ script check CVE. |
| Auth Check | nmap --script "auth" target.com |
Kiểm tra default creds, weak pass. |
3. Phân Tích Findings: Lỗi vs Tính Năng
3.1 Thế nào là "Bình thường" (Feature)
- Web Server mở port 80/443: Bình thường.
- Mail Server mở port 25/587: Bình thường.
3.2 Thế nào là "Vấn đề" (Issue/Vulnerability)
Sử dụng Nmap giúp phát hiện các bất thường sau:
- Unnecessary Exposure (Mở port thừa):
- Database (3306, 5432) Public -> CRITICAL.
- Outdated Software:
Apache 2.4.49-> Có CVE Path Traversal -> CRITICAL.
- Misconfiguration:
Anonymous FTP Allowed.
4. Lịch Sử Case Studies: Nmap & Các Lỗ Hổng Kinh Điển
Case 1: WannaCry & EternalBlue (2017)
graph TD
A[Attacker scans Port 445] -->|Open| B[Send EternalBlue Exploit Packet]
B -->|Buffer Overflow| C[Execute SMBv1 Logic]
C -->|System Access| D[Install Ransomware]
D --> E[Encrypt Files 💀]
- Dấu hiệu: Port
445/tcpmở. - Detection:
nmap --script smb-vuln-ms17-010 -p 445 target.com.
Case 2: Heartbleed (2014)
sequenceDiagram
participant User
participant Server (OpenSSL)
User->>Server: Heartbeat Request (Length: 64KB, Real Data: 1KB)
Note right of User: "Please reply with this 1KB data, but I claim it's 64KB"
Server->>Server: Read 1KB Real Data + 63KB Memory Garbage
Server-->>User: Reply (64KB Data containing Secrets/Keys 🔑)
Note left of Server: 🚨 MEMORY LEAK!
- Dấu hiệu: Port
443/tcpOpenSSL cũ. - Detection:
nmap --script ssl-heartbleed -p 443 target.com.
5. Giải Pháp Khắc Phục (Remediation)
| Loại Finding | Cách Fix (Remediation) |
|---|---|
| Port không cần thiết (3306, 27017 Public) | Firewall: DROP traffic từ Public IP. Chỉ whitelist IP VPN. |
| Port Management (SSH, RDP) | VPN/Bastion: Không public trực tiếp. |
| Outdated Service | Patch: apt-get upgrade. |
| Weak SSL/TLS | Config: Disable SSLv3, TLS 1.0. |
6. Mẫu Báo Cáo Scan (Minimal Report Template)
Báo Cáo Đánh Giá An Ninh Mạng (Nmap Scan Report)
Target: example.com
Tool: Nmap 7.93
Tóm tắt Findings
| ID | Port | Service | Risk | Remediation |
|---|---|---|---|---|
| 1 | 80 | HTTP | Low | Hide Nginx Version |
| 2 | 5432 | PostgreSQL | Critical | Close Port / Firewall Whitelist |
Generated by Pen-testing Notebook
All rights reserved