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.28
Option
Mô tả chi tiết

10.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:

Option
Mô tả chi tiết

-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.

Option
Mô tả chi tiết

-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:

Trạng thái
Mô tả chi tiế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,445

  • Range: -p 22-445

  • Top 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ể:

Category
Mô tả chi tiết

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:

Phase
Recommended Categories
Lý do

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?