Nmap Detail
Host discovery
Khi thực hiện internal penetration test cho toàn bộ mạng của một công ty, bước đầu tiên quan trọng là tổng quan về các hệ thống nào đang online để có thể làm việc. Nmap cung cấp nhiều tùy chọn host discovery để xác định target có alive hay không.
Phương pháp hiệu quả nhất cho host discovery là sử dụng ICMP echo requests.
Luôn luôn lưu trữ mọi scan. Điều này có thể được sử dụng sau này để so sánh, documentation và reporting. Các công cụ khác nhau có thể tạo ra kết quả khác nhau, do đó việc phân biệt công cụ nào tạo ra kết quả gì là có lợi.
Các phương pháp
Quét Network Range
Cách cơ bản nhất để khám phá các host trong một dải mạng:
sudo nmap 10.129.2.0/24 -sn -oA tnet | grep for | cut -d" " -f5
# Output:
10.129.2.4
10.129.2.10
10.129.2.11
10.129.2.18
10.129.2.19
10.129.2.20
10.129.2.2810.129.2.0/24
Target network range (dải mạng cần quét)
-sn
Tắt port scanning (chỉ thực hiện host discovery)
-oA tnet
Lưu kết quả ở tất cả formats bắt đầu với tên 'tnet'
Quét từ danh sách IP (Scan IP List)
Trong internal penetration test, thường được cung cấp danh sách IP cần kiểm tra:
-iL
Thực hiện scan với targets từ file 'hosts.lst' được cung cấp
Quét Single IP / Multiple IPs
Khi chỉ cần quét một phần nhỏ của mạng:
Cơ chế hoạt động của Host Discovery
ARP vs ICMP Echo Requests
Khi tắt port scan (-sn), Nmap tự động thực hiện ping scan với ICMP Echo Requests (-PE). Tuy nhiên, trước khi gửi ICMP echo request, Nmap sẽ gửi ARP ping và nhận ARP reply.
-PE
Thực hiện ping scan sử dụng 'ICMP Echo requests'
--packet-trace
Hiển thị tất cả packets được gửi và nhận
Host và Port Scanning
Sau khi xác định target đang alive, chúng ta cần thu thập thông tin chi tiết hơn về hệ thống:
Open ports và services của chúng
Service versions
Thông tin mà các services cung cấp
Hệ điều hành (Operating system)
6 trạng thái của Port trong Nmap. Nmap xác định 6 trạng thái khác nhau cho một port được quét:
open
Kết nối đến port đã được thiết lập. Có thể là TCP connections, UDP datagrams hoặc SCTP associations
closed
Port hiển thị closed khi TCP protocol cho biết packet nhận được chứa RST flag. Method này cũng có thể xác định target có alive hay không
filtered
Nmap không thể xác định chính xác port mở hay đóng vì không nhận được response từ target hoặc nhận error code
unfiltered
Trạng thái này chỉ xuất hiện trong TCP-ACK scan, có nghĩa là port có thể truy cập nhưng không xác định được mở hay đóng
open|filtered
Nếu không nhận được response cho port cụ thể, Nmap sẽ đặt trạng thái này. Cho biết có thể firewall hoặc packet filter bảo vệ port
closed|filtered
Trạng thái này chỉ xuất hiện trong IP ID idle scans, cho biết không thể xác định port đóng hay bị firewall filter
Mặc định, Nmap quét top 1000 TCP ports với SYN scan (-sS). SYN scan chỉ được set làm default khi chạy với quyền root vì cần socket permissions để tạo raw TCP packets. Ngược lại, TCP scan (-sT) sẽ được thực hiện mặc định.
Các cách define ports:
Từng port:
-p 22,25,80,139,445Range:
-p 22-445Top ports:
--top-ports=10(từ database của Nmap)Tất cả ports:
-p-Fast scan:
-F(top 100 ports)
Để hiểu rõ cách Nmap gửi packets, có thể trace packets với các options:
Filtered Ports - Ports bị lọc
Khi port hiển thị filtered, có thể có nhiều lý do. Thường do firewalls có rules để handle connections cụ thể. Packets có thể bị dropped hoặc rejected.
Trường hợp Firewall Drops Packets:
Khi packet bị dropped, Nmap không nhận response và retry rate mặc định (--max-retries) là 10.
Discovering Open UDP Ports
UDP là stateless protocol, không cần three-way handshake như TCP. Điều này làm UDP scan (-sU) chậm hơn nhiều TCP scan (-sS).
Version Scan (-sV)
Version scanning thu thập thông tin bổ sung từ open ports như versions, service names, và details về target.
Service Enumeration
Nmap Scripting Engine (NSE)
Nmap Scripting Engine (NSE) là một tính năng mạnh mẽ khác của Nmap. NSE như một công cụ không thể thiếu cho advanced reconnaissance và vulnerability assessment. Nmap Scripting Engine (NSE) cung cấp khả năng tạo scripts bằng ngôn ngữ Lua để tương tác với các services cụ thể.
14 Categories của NSE Scripts
NSE scripts được chia thành 14 categories với các mục đích cụ thể:
auth
Xác định authentication credentials - tìm thông tin đăng nhập
broadcast
Scripts cho host discovery bằng broadcasting, tự động thêm discovered hosts vào remaining scans
brute
Thực thi scripts thử brute-force đăng nhập với credentials
default
Default scripts được thực thi khi sử dụng option -sC
discovery
Đánh giá accessible services - khám phá dịch vụ có thể truy cập
dos
Kiểm tra services cho denial of service vulnerabilities (ít sử dụng vì có thể làm hại services)
exploit
Category này cố gắng exploit known vulnerabilities cho scanned port
external
Scripts sử dụng external services để xử lý thêm
fuzzer
Xác định vulnerabilities và unexpected packet handling bằng cách gửi different fields (tốn nhiều thời gian)
intrusive
Intrusive scripts có thể ảnh hưởng tiêu cực đến target system
malware
Kiểm tra xem malware có infect target system hay không
safe
Defensive scripts không thực hiện intrusive và destructive access
version
Extension cho service detection - mở rộng khả năng phát hiện version
vuln
Xác định specific vulnerabilities - tìm lỗ hổng cụ thể
Aggressive Scan (-A)
Aggressive option (-A) kết hợp multiple scanning methods:
-A option bao gồm:
Service detection (-sV)
OS detection (-O)
Traceroute (--traceroute)
Default NSE scripts (-sC)
Vulnerability Assessment với NSE
category "vuln" cho vulnerability assessment
Phân loại Scripts theo mục đích:
Initial Recon
default, discovery, safe
Thu thập thông tin an toàn
Service Analysis
version, auth
Hiểu rõ services và authentication
Vulnerability Assessment
vuln, exploit
Tìm và test vulnerabilities
Targeted Testing
brute, intrusive
Specific attack vectors
Last updated
Was this helpful?

