# **Lern eJPT - reconnaissance** --- # Passive Infomation Gathering **Website recon:** ``` **host (DNS lookup nhanh)** Mục đích: tra cứu bản ghi DNS (A, AAAA, CNAME, MX, NS, PTR...) nhanh trên Linux/macOS. Cài đặt: thường có sẵn (part of bind-utils/bind9-host trên nhiều distro). Ví dụ cơ bản: # host example.com → trả A/AAAA + CNAME nếu có. # host -t mx example.com → chỉ tra MX record. # host -a example.com → tất cả record. # host 8.8.8.8 → reverse lookup (PTR). Tip dùng trong reconnaissance: nhanh để xác định IP, mail servers, nameservers; kết hợp với dig nếu cần output chi tiết hơn. ``` ![{C13C59C9-A8B1-40CA-B25D-BAC6A44AF176}](https://hackmd.io/_uploads/SJAHRc8Agg.png) ``` BuiltWith (dịch vụ / công cụ web) Mục đích: xác định công nghệ một website dùng (CMS, CDN, analytics, tracking, e-commerce, libraries...). Cách dùng: * Truy cập web: https://builtwith.com/example.com → giao diện GUI. * Có API trả JSON (cần key, giới hạn truy vấn). * Ứng dụng: tìm CMS (WordPress/Joomla), payment provider, CDN (Cloudflare), tracking scripts; hữu ích cho OSINT, mapping attack surface. Lưu ý: BuiltWith là passive (dựa trên header, HTML, scripts, certs, DNS). Không gây request “độc hại”. ``` <img src="https://hackmd.io/_uploads/ry1tA58Rex.png" width="400"> ``` Wappalyzer Mục đích: giống BuiltWith — nhận diện framework, CMS, server, analytics,... Có extension trình duyệt + CLI + lib. Cài đặt CLI (Node): > npm install -g wappalyzer (hoặc dùng extension Chrome/Firefox). Cách dùng CLI: > wappalyzer https://example.com → output JSON/console. Dùng extension: click vào icon để xem tech stack realtime trên site. Ưu/nhược: Nhanh, tiện khi duyệt; tốt cho reconnaissance front-end. Không phải lúc nào chính xác 100% (obfuscation, lazy-loaded scripts). ``` <img src="https://hackmd.io/_uploads/rJlaR58Rle.png" width="400"> ``` WhatWeb Mục đích: fingerprinting web server & ứng dụng web bằng pattern matching (headers, paths, page content). Cài đặt: thường gem install whatweb (Ruby) hoặc apt package whatweb. Ví dụ: whatweb example.com whatweb -v -a 3 example.com (-a tăng aggressiveness; -v verbose) whatweb -p /path/plugins example.com (custom plugins) Output: liệt kê web server, CMS, plugins, phiên bản (nếu detect được). Ưu/nhược: Rất mạnh cho fingerprinting; có chế độ plugin để mở rộng. -a cao có thể gây request nhiều hơn (active) — cẩn thận nếu không có phép. ``` <div style="background:#0d1117;border-radius:8px;padding:12px;color:#c9d1d9;font-family:monospace;line-height:1.45;"> <pre style="margin:0;white-space:pre-wrap;"> lam@DESKTOP-K13VKLM:~$ whatweb hackersploit.org http://hackersploit.org [301 Moved Permanently] Country[RESERVED][ZZ], HTTPServer[<span style="color:#84cc16">cloudflare</span>], IP[<span style="color:#ff7b7b">172.67.202.99</span>], RedirectLocation[<span style="color:#8ab4f8">https://hackersploit.org/</span>] https://hackersploit.org/ [<span style="color:#ffd166">403 Forbidden</span>] Country[RESERVED][ZZ], HTML5, HTTPServer[cloudflare], IP[172.67.202.99], PoweredBy[<span style="color:#ffd166">LiteSpeed</span>] </pre> </div> <div style="flex: 1;"> <h3>📊 Phân tích kết quả</h3> <ul> <li><strong>301 Moved Permanently</strong> → Trang HTTP chuyển hướng vĩnh viễn sang HTTPS.</li> <li><strong>403 Forbidden</strong> → Máy chủ từ chối truy cập (có thể do WAF hoặc chặn bot).</li> <li><strong>Server:</strong> Cloudflare (CDN) + LiteSpeed (origin web server).</li> <li><strong>IP công khai:</strong> 172.67.202.99 (thuộc Cloudflare, ẩn IP thật của web gốc).</li> <li><strong>Country[ZZ]</strong> → IP không ánh xạ quốc gia (do Cloudflare bảo vệ).</li> <li><strong>HTML5</strong> → Trang sử dụng chuẩn HTML5.</li> <li><strong>UncommonHeaders</strong> → chứa các header bảo mật & cache (cf-ray, nel, alt-svc,...).</li> <li><strong>Kết luận:</strong> Website sử dụng Cloudflare để che IP, có tường lửa (WAF) chặn bot.</li> </ul> </div> </div> ``` HTTrack Mục đích: mirror / download toàn bộ site (crawling & saving local copy) — hữu ích để đọc offline, phân tích tài nguyên, tìm endpoints ẩn trên sitemap/internal links. Cài đặt: sudo apt install httrack (Linux) hoặc tải bản Windows. Cách dùng cơ bản: httrack "https://example.com" -O ./example_mirror "+*.example.com/*" -v Một số option quan trọng: -O <dir>: thư mục lưu. -r# hoặc --depth=#: độ sâu crawl. -%v verbose, -q quiet. --sockets=NUMBER: số kết nối đồng thời. --robots=0/1 — có tuân theo robots.txt hay không (mặc định tuân thủ). -c# --wait=seconds --random: giới hạn tốc độ để tránh overload. --exclude/+pattern để chặn/cho phép path. Lưu ý đạo đức/kỹ thuật: HTTrack là active — gây request lên server. Không dùng lên site bạn không được phép. Có thể gây load lớn; throttle request luôn. Kiểm tra robots.txt trước, và chạy ở tốc độ thấp (--wait, --sockets). ``` <img src="https://hackmd.io/_uploads/HkE1XsUAeg.png" width="500"> | **Thành phần** | **Ý nghĩa** | | ------------------------ | -------------------------------------------------------------------------------------------- | | **Công cụ** | HTTrack Website Copier **3.49-5** – công cụ sao chép toàn bộ website để xem offline. | | **Project name** | **Hackersploit** – tên thư mục lưu dữ liệu. | | **Base path** | `/home/lam/websites/` – nơi lưu site đã mirror. | | **URL** | `http://hacksploit.org` – địa chỉ website được sao chép. | | **Action chọn (1)** | **Mirror toàn bộ website** (mặc định). | | **Proxy** | Không sử dụng proxy. | | **Wildcards** | Không giới hạn hoặc loại trừ định dạng nào. | | **Command line sinh ra** | `httrack http://hacksploit.org -O "/home/lam/websites/Hackersploit" -%v` | | **Kết quả cuối** | Quá trình mirror bắt đầu thành công lúc **01:03:30**, HTTrack tạo bản sao toàn bộ trang web. | | **Trạng thái** | ✅ **Thành công**, site được sao chép về máy local. | ``` WHOIS là giao thức + cơ sở dữ liệu để tra cứu thông tin đăng ký của tên miền (domain) hoặc địa chỉ IP. Dùng WHOIS bạn sẽ biết ai/đơn vị đăng ký, ai là nhà đăng ký (registrar), nameserver, ngày tạo/hết hạn, và một số contact kỹ thuật/abuse. ``` ![{BCC13EE3-B2D6-462F-B98D-5F65F9E83B59}](https://hackmd.io/_uploads/HyFdCLw0lg.png) `* Domain Name: hackersploit.org — tên miền đang tra. * Registry Domain ID: REDACTED — trường ID của registry bị ẩn (bình thường không quan trọng cho OSINT). * Registrar WHOIS Server: whois.namecheap.com — registrar là NameCheap (để hỏi chi tiết hơn có thể truy vấn WHOIS registrar). * Registrar URL: http://www.namecheap.com — trang registrar. * Updated Date: 2025-01-07T14:38:39Z — lần cập nhật cuối. * Creation Date: 2018-04-05T11:27:07Z — tên miền được tạo từ 05-Apr-2018. * Registry Expiry Date: 2026-04-05T11:27:07Z — ngày hết hạn (rất quan trọng: nếu để hết hạn có thể bị抢/transfer). * Registrar: NameCheap, Inc. — xác nhận nhà đăng ký. * Registrar IANA ID: 1068 — mã IANA của registrar. * Registrar Abuse Contact Email / Phone: abuse@namecheap.com / +1.9854014545 — dùng để báo abuse/phishing. * Domain Status: clientTransferProhibited — trạng thái khóa chuyển (không thể transfer domain ra khỏi registrar nếu không unlock). * Name Server: dee.ns.cloudflare.com và jim.ns.cloudflare.com — domain dùng Cloudflare (CDN/WAF/DNS proxy). * DNSSEC: unsigned — DNSSEC không được bật. * Last update of WHOIS database: 2025-10-23T07:34:35Z — thời điểm snapshot WHOIS.` `Netcraft là công ty chuyên thu thập dữ liệu Internet và cung cấp dịch vụ an ninh mạng: báo cáo site, phát hiện phishing, monitoring (uptime/TLS), thống kê thị phần web server, dịch vụ bảo vệ thương hiệu và API tra cứu. Họ chạy các quét lớn để xây cơ sở dữ liệu lịch sử về hosting, certificate, server, v.v.` **DNS Recon** `dnsrecon là một công cụ Python để thu thập thông tin DNS (DNS enumeration) — liệt kê A/AAAA/MX/NS/SOA/TXT/SPF, thử zone transfer (AXFR), brute-force subdomains bằng wordlist, thực hiện reverse lookup trên một CIDR, và “zone walking” (dò cấu trúc DNSSEC/NSEC). Rất hữu ích cho reconnaissance/bug-bounty/penetration test trước khi chuyển sang scan sâu hơn.` ![image](https://hackmd.io/_uploads/SyMQGdO0gg.png) | Loại | Giá trị chính (ví dụ trong output) | Ý nghĩa ngắn | | ------------------------------ | -----------------------------------------------------------------------------------------------------------: | ------------------------------------------------------------------- | | DNSSEC | NSEC ZSK / KSK (hashes) | DNSSEC bật — domain có chữ ký, bảo đảm integrity của record. | | SOA | `dee.ns.cloudflare.com` (và các IP) | Start of Authority — server quản lý zone, TTL, serial. | | NS | `dee.ns.cloudflare.com`, `jim.ns.cloudflare.com` (các IP/IPv6) | Nameserver authoritative — domain được quản lý qua Cloudflare. | | A | `hackersploit.org → 104.21.44.180`, `172.67.202.99` | Địa chỉ IPv4 trả về cho domain chính. | | AAAA | `2606:4700:3036::ac43:ca63`, `2606:4700:3031::6815:2cb4` | Địa chỉ IPv6 (Cloudflare). | | MX | `_dc-mx... ← 198.54.120.212` | Mail server nhận mail cho domain. | | TXT (SPF) | `v=spf1 +ip4:198.54.120.203 +include:spf.web-hosting.com +ip4:198.54.120.212 +include:hackersploit.org ~all` | SPF record: chính sách gửi mail (soft-fail `~all`). | | TXT (google-site-verification) | Google site verification token | Dùng để xác nhận domain với Google. | | TXT (DMARC) | `v=DMARC1; p=none;` | DMARC bật nhưng `p=none` (chỉ báo cáo, chưa chặn). | | Bind Version (reported) | `Bind Version for 172.64.32.93 "2025.10.5"` (vài IP) | dnsrecon đã thấy thông tin bind/version — có thể từ banner trả lời. | | SRV | Không tìm thấy | Không có record SRV. | `dnsdumpser.com:DNSDumpster là một dịch vụ web (https://dnsdumpster.com ) cung cấp DNS reconnaissance và network mapping cho một domain. Nó thu thập public DNS records (A, MX, NS, TXT, SPF...), tìm subdomains từ nhiều nguồn, và vẽ diagram mạng / host (mapping các host → IP → ASN → location). Dùng để thu thập thông tin ban đầu (OSINT) trước khi đi sâu (pentest/bug bounty).` | Loại | Ví dụ | Ý nghĩa / cách dùng | | --------------------- | ------------------------------------- | ---------------------------------------------------- | | Hosts / A records | `www.example.com -> 1.2.3.4` | Host chính & IP public — kiểm tra port/ứng dụng. | | MX records | mail.example.com -> IP | Mail server — kiểm tra SPF/DKIM/DMARC liên quan. | | NS records | ns1.provider.com | Nameserver authoritative. | | TXT / SPF / DMARC | `v=spf1 ...`, `v=DMARC1; p=none` | Chính sách gửi mail và bảo vệ mail. | | Subdomains discovered | `dev.example.com`, `beta...` | Tài sản phụ — target tiềm năng cho takeover/scan. | | Reverse lookup / PTR | IP -> hostname | Giúp mapping infra (đôi khi tiết lộ internal names). | | ASN / ISP / Geo | ASN 12345 — Cloudflare / DigitalOcean | Biết hạ tầng host (CDN, cloud provider). | | Zone transfer result | (nếu có) | Nếu thấy full zone → nghiêm trọng (AXFR mở). | **Recon WAF** `wafw00f dò và nhận diện WAF/IDS/IPS đứng trước web app (ví dụ Cloudflare, ModSecurity, F5 BIG-IP ASM, Imperva, Akamai, …). Nó gửi nhiều request hiệu chỉnh và so sánh phản hồi với fingerprint để suy ra loại WAF.Dùng trong reconnaissance để biết lớp bảo vệ trước khi tiến hành test tiếp (và để lập kế hoạch tấn công có kiểm soát nếu có phép).` ![{5B21307A-467A-48F4-80F0-12B8E23C182E}](https://hackmd.io/_uploads/rJ8wuudCee.png) `Sublist3r là công cụ Python để thu thập subdomain cho một domain bằng cách query nhiều nguồn OSINT (Google, Bing, Yahoo, Baidu, Ask, Netcraft, Virustotal, DNSDumpster, ThreatCrowd…) và kết hợp kết quả. Dùng nhanh, lightweight, phù hợp bước reconnaissance ban đầu.` ![{CC0FE376-C446-4244-A907-54B8B55A854C}](https://hackmd.io/_uploads/HyeeKMsORle.png) `Kỹ thuật dùng toán tử tìm kiếm nâng cao của Google để lọc đúng dữ liệu bạn cần (truy vết, OSINT, tìm config sai, nghiên cứu bảo mật, CTF…). Dùng hợp pháp để kiểm thử/OSINT; đừng truy cập trái phép.` ``` Toán tử quan trọng * site: giới hạn miền inurl: chuỗi nằm trong URL intitle: chuỗi nằm trong tiêu đề trang intext: chuỗi trong nội dung trang filetype: hoặc ext: lọc định dạng tệp - phủ định từ khóa " tìm chính xác cụm OR (viết hoa) điều kiện hoặc .. khoảng số (vd: 2019..2024) ``` ```https://www.exploit-db.com/google-hacking-database``` Tổng hợp toán tử google dork mình đã tổng hợp: ```https://github.com/lamlam86/googledork``` **Recon Mail:** `theHarvester là công cụ OSINT (open-source intelligence) nhỏ gọn nhưng mạnh, dùng trong giai đoạn reconnaissance của red-team / pentest để thu thập email, tên, subdomain, host, URL, IP… từ nhiều nguồn công khai khác nhau. Nó là tool “passive” (không tấn công trực tiếp mục tiêu) dùng API/hoặc scrape các dịch vụ công khai để tổng hợp thông tin. ` | Tham số | Mô tả | Ví dụ | Ghi chú / Lưu ý | | ------------------------------------------------- | -------------------------------------------------------------------------------: | --------------------------------------------- | -------------------------------------------------------- | | `-h`, `--help` | Hiển thị help và thoát | `theHarvester -h` | Luôn xem để biết cú pháp chính xác phiên bản bạn dùng | | `-d DOMAIN`, `--domain DOMAIN` | Domain hoặc tên công ty để tìm OSINT | `-d example.com` | **Bắt buộc** cho 1 lần chạy thông thường | | `-l LIMIT`, `--limit LIMIT` | Giới hạn số kết quả trả về (mặc định 500) | `-l 200` | Giúp giảm thời gian & rate-limit | | `-S START`, `--start START` | Bắt đầu từ kết quả thứ X (offset) | `-S 100` | Dùng khi paginate kết quả từ API | | `-p`, `--proxies` | Kích hoạt dùng proxies (đọc `proxies.yaml`) | `-p` | Cấu hình proxies trong `~/.theHarvester/proxies.yaml` | | `-s`, `--shodan` | Dùng Shodan để truy vấn host (nếu có API key) | `-s` | Cần Shodan API key trong `api-keys.yaml` | | `--screenshot DIR` | Chụp ảnh (screenshot) các domain đã resolve, lưu vào thư mục | `--screenshot outdir/` | Cần môi trường có trình duyệt/phantom; tốn thời gian | | `-e DNS_SERVER`, `--dns-server DNS_SERVER` | Chỉ định DNS server để lookup | `-e 1.1.1.1` | Dùng resolver cụ thể khi DNS mặc định bị chặn/tổn hại | | `-t`, `--take-over` | Kiểm tra khả năng subdomain takeover | `-t` | Dùng để phát hiện host trống có thể takeover | | `-r [DNS_RESOLVE]`, `--dns-resolve [DNS_RESOLVE]` | Thực hiện DNS resolve cho subdomains; có thể truyền file resolver hoặc danh sách | `-r resolvers.txt` | Mặc định False — bật nếu muốn biết IP thực của subdomain | | `-n`, `--dns-lookup` | Bật DNS server lookup (resolve bằng DNS) | `-n` | Thực hiện tra cứu DNS cho các subdomain tìm được | | `-c`, `--dns-brute` | Thực hiện DNS brute-force (wordlist) trên domain | `-c -w /path/wordlist.txt` | Tốn thời gian, cần wordlist phù hợp | | `-f FILENAME`, `--filename FILENAME` | Lưu kết quả ra file (XML và JSON) | `-f result` → tạo `result.xml`, `result.json` | Tên file; extension được thêm tự động | | `-w WORDLIST`, `--wordlist WORDLIST` | Chỉ định wordlist để dùng cho API endpoint scanning / DNS brute | `-w ./words.txt` | Dùng cho `--api-scan` hoặc `--dns-brute` | | `-a`, `--api-scan` | Scan tìm API endpoints (dựa trên wordlist) | `-a -w api_words.txt` | Tìm các endpoint kiểu `/api/...` trên domain | | `-q`, `--quiet` | Tắt cảnh báo thiếu API keys, tắt hiển thị đọc `api-keys.yaml` | `-q` | Ít ồn hơn; vẫn có thể thiếu dữ liệu nếu key không có | | `-b SOURCE`, `--source SOURCE` | Chọn nguồn dữ liệu (module); danh sách nguồn rất nhiều | `-b crtsh,bing,github-code` | `all` quét mọi nguồn khả dụng; một số nguồn cần API key | ```uv run theHarvester -d hackersploit.org -b all``` ![{7323C73E-E6E7-44D7-AB37-E1329B102EE9}](https://hackmd.io/_uploads/HJRLkz6Alx.png) ```Kho dữ liệu tổng hợp từ các vụ rò rỉ/vi phạm dữ liệu công khai. Bạn nhập email/điện thoại để biết liệu thông tin đó từng xuất hiện trong một vụ “data breach” hay chưa. Những tính năng chính: - Kiểm tra email/số điện thoại: Nhập trên trang chủ để xem đã “pwned” chưa, liệt kê dịch vụ bị rò rỉ và loại dữ liệu lộ (mật khẩu băm, IP, ngày sinh, v.v.). - Pwned Passwords: Kiểm tra mật khẩu (ở dạng băm SHA-1, không gửi plaintext) xem có nằm trong danh sách mật khẩu đã lộ không. Hỗ trợ k-anonymity (chỉ gửi 5 ký tự đầu của SHA-1). - Notify me: Đăng ký nhận email khi địa chỉ của bạn xuất hiện trong một breach mới. - Domain Search (quản trị viên): Xác minh quyền sở hữu domain để nhận báo cáo các tài khoản thuộc domain đó (vd. @company.com). - API công khai: Tích hợp kiểm tra vào hệ thống nội bộ, trình quản lý mật khẩu, CI/CD kiểm tra secret, v.v. ``` Leak database password : ```https://haveibeenpwned.com/``` # Active Infomation Gathering: **DNS ZONE TRANSFER** `dnsenum là script (Perl) chạy đa luồng để liệt kê thông tin DNS của một domain và cố gắng khám phá dải IP/ASN không liên tiếp liên quan. Nó tự động hóa nhiều bước OSINT/DNS recon cơ bản.` ``` Nó thu thập những gì? NS, MX, A/AAAA, CNAME của domain. Subdomain (qua từ điển và các nguồn công khai). Reverse lookup (IP → tên) trong các dải tìm thấy. Thông tin WHOIS/ASN để đoán thêm dải IP liên quan. Thử AXFR (zone transfer) trên NS (nếu lộ). Báo cáo tổng hợp danh sách host ↔ IP. ``` ![{1F672D05-6438-441B-A89E-3D92543AF73E}](https://hackmd.io/_uploads/rkvR_KnAee.png) ``` SOA / NS: thông tin authoritative (nsztm1/2.digi.ninja). MX: nhiều mức ưu tiên (10/20/30) → bề mặt email. A / AAAA: www.zonetransfer.me → 5.196.105.14 internal.zonetransfer.me → 81.4.108.41 (gợi ý hạ tầng nội bộ) office.zonetransfer.me → 4.23.95.254 ipv6 ví dụ: 2001:67c:2e8:11::c100:1332 PTR: phân giải ngược cho 5.196.105.14 → www.zonetransfer.me. TXT: có cả chuỗi kiểm thử như "><script>alert('Boo')</script> (dùng test XSS khi nhúng TXT). SRV/NAPTR: _sip._tcp và các NAPTR → gợi ý dịch vụ VoIP/SIP. LOC: tọa độ địa lý, HINFO (kiểu máy H/W, OS – không nên public). CNAME:staging, testing → trỏ về www (môi trường dev/stage). CERT/DNSKEY: demo bản ghi khóa/chứng chỉ. ASFDB/RP: bản ghi hiếm (contact “Robin”). Nhiều host “mồi” như xss, sqli, vpn, intns1/2 (dùng dạy học). ``` **Scan Port With Nmap** `Nmap (Network Mapper) là công cụ quét mạng phổ biến để khám phá host, port, dịch vụ, hệ điều hành và chạy script tự động (NSE). Yêu cầu: nhiều lệnh cần quyền root/administrator (ví dụ -sS, -sU, OS detection). Kết quả thường cho biết port open / closed / filtered / open|filtered kèm thông tin dịch vụ (nếu dò được).` ``` Nmap hỗ trợ nhiều kiểu quét TCP; các kiểu phổ biến: -sS — TCP SYN scan (half-open scan) Gửi TCP SYN→ nếu nhận SYN/ACK => port open (Nmap gửi RST để hủy kết nối, không hoàn tất 3-way handshake). Nếu nhận RST => port closed. Nếu không nhận gì / ICMP unreachable => filtered. Ưu điểm: nhanh, phổ biến, tương đối stealthy (không tạo kết nối hoàn chỉnh). Yêu cầu: thường cần quyền raw sockets (root). -sT — TCP Connect scan Dùng khi không có quyền raw sockets. Nmap dùng hàm connect() để hoàn tất handshake. Dễ bị phát hiện (ghi log trên target) vì tạo kết nối thật. -sN — TCP NULL scan Gửi TCP packet không có flag (no flags set). Dựa trên cách TCP stack phản hồi: Closed → thường trả RST. Open → thường không trả lời (hoặc filtered). Hiệu quả khi: hệ thống tuân theo RFC; trên Windows NULL/FIN/Xmas thường trả RST cho cả cổng mở lẫn đóng → trên Windows không đáng tin, nhưng trên nhiều UNIX/Linux có thể dùng để phân biệt open vs closed. Mục đích: stealthy / bypass IDS simple rules (vì gửi packet kỳ lạ). Tương tự: -sF (FIN), -sX (Xmas — FIN+PSH+URG). -sA — ACK scan Dùng để kiểm tra trạng thái firewall/ACL (stateful). Thường phân biệt giữa filtered (stateful firewall hiện diện) và unfiltered. -sU — UDP scan (chi tiết) Gửi gói UDP tới cổng đích. Phản hồi & cách Nmap xác định trạng thái: Closed: nhận ICMP Port Unreachable (type3/code3). Open: dịch vụ UDP phản hồi (ví dụ DNS trả UDP response) ⇒ Nmap báo open. Open|filtered: không nhận phản hồi (có thể open và im lặng, hoặc bị firewall lọc). Nmap thường báo open|filtered khi thiếu thông tin. Filtered: nhận ICMP unreachable types khác (ví dụ admin-prohibited), hoặc firewall drop. Tốc độ: rất chậm so với TCP. Vì thiếu phản hồi, Nmap phải chờ timeout lâu; nhiều dịch vụ UDP không trả lời. Kỹ thuật tăng tốc: Dùng --top-ports (ví dụ --top-ports 20) để quét những cổng UDP phổ biến. Dùng -T4 (tăng tốc), --max-retries, --host-timeout, --defeat-rst-ratelimit. Quyền: cần raw sockets → chạy với root để chính xác. ``` ``` Các flag: -Pn Ý nghĩa: Không gửi probe “ping” trước (ICMP/TCP/ARP) — Nmap không xác định host có đang up hay không, coi host là up luôn và bắt đầu scan port. Khi dùng: Khi target chặn/không phản hồi ICMP hoặc chặn ping probes (firewall). Caveat: Nếu host thật sự down, bạn sẽ lãng phí thời gian quét. VD: nmap -Pn 10.0.0.5 Tip: Kết hợp -Pn với --reason để biết vì sao Nmap quyết định trạng thái port. -p Ý nghĩa: Chỉ định port để quét. Rất linh hoạt. Cú pháp: -p 80 — port đơn. -p 1-1000 — range. -p 22,80,443 — danh sách. -p T:1-1000,U:53,161 — phân biệt TCP và UDP (chỉ quét ports TCP 1-1000 và UDP 53,161). Khi dùng: Luôn xác định ports cần thiết thay vì quét 65535 port. VD: nmap -sS -p 22,80,443 target hoặc nmap -sU -p U:53,69 target. --top-ports N Ý nghĩa: Quét N cổng phổ biến nhất theo danh sách thống kê của Nmap (nhanh nếu bạn chỉ cần cổng phổ biến). Khi dùng: Khi muốn quét nhanh, reconnaissance ban đầu. VD: nmap --top-ports 50 target quét 50 port hay gặp nhất. Lưu ý: Không thay thế cho quét toàn diện nếu mục tiêu có dịch vụ ở port lạ. -sV — Service / Version Detection Ý nghĩa: Gửi probe application-level (payloads nhỏ) tới port mở để “hỏi” dịch vụ và trả về tên + version (ví dụ: Apache httpd 2.4.41). Quyền: Thường cần root để làm reliable nhưng có thể chạy không root. Tùy chỉnh: --version-intensity <0-9> điều chỉnh mức probe (0 nhanh + ít probe; 9 mạnh + nhiều probe). VD: nmap -sV -p 80,443 target Caveat: Một số probes có thể gây crash dịch vụ cũ — thận trọng trên production. -O — OS Detection Ý nghĩa: Cố gắng suy đoán hệ điều hành (OS fingerprinting) bằng cách phân tích phản hồi TCP/IP stack. Quyền: Cần root (raw packets). VD: sudo nmap -O target Lưu ý: Không luôn chính xác; đôi khi gợi ý nhiều khả năng. -O --osscan-guess cho phép đoán mạnh hơn. -A — Aggressive Scan Ý nghĩa: Shortcut bật nhiều tính năng: -sV -O --traceroute --script=default — tức là dò version, dò OS, traceroute, chạy NSE default scripts. Khi dùng: Muốn thu được càng nhiều thông tin càng tốt trong một lệnh. Caveat: Ồ ạt, noisy (dễ phát hiện), có thể gây lỗi trên host. Dùng khi bạn có permission và không lo gây ảnh hưởng. VD: sudo nmap -A target -sC hoặc --script=default — NSE Default Scripts Ý nghĩa: Chạy bộ script mặc định hữu ích (Nmap Scripting Engine) — các script nhỏ để thu banner, kiểm tra thông tin cơ bản. Ghi chú: -sC tương đương --script=default. VD: nmap -sC -p 80,443 target Kết hợp: --script có thể chỉ định cụ thể: --script=http-title,http-headers hoặc nhóm --script=ssl*. --script Ý nghĩa: Chạy script NSE chỉ định (nhóm, tên, biểu thức). Rất mạnh. Ví dụ: --script=smb-enum-shares --script "http-*" (tất cả http script) Tuỳ chọn mở rộng: --script-args để truyền tham số cho script. VD: nmap --script dns-brute -p53 target Lưu ý: Một số script tải nặng hoặc intrusive — kiểm tra docs trước khi chạy trên production. -T0..-T5 — Timing templates Ý nghĩa: Điều chỉnh tốc độ/timeouts và cách Nmap gửi probe. -T0 — Paranoid (chậm, stealth). -T1 — Sneaky. -T2 — Polite (giảm băng thông). -T3 — Default. -T4 — Aggressive (tốc độ cao, phù hợp LAN). -T5 — Insane (rất nhanh, dễ bị phát hiện). Khi dùng: -T4 cho mạng nội bộ; -T0..-T2 để tránh IDS/IPS. VD: nmap -sS -T4 target hoặc nmap -sS -T0 target (stealth). -oN, -oX, -oG — Output formats Ý nghĩa: Xuất kết quả. -oN file — Normal (human-readable). -oX file — XML (parseable). -oG file — Grepable (dễ grep). Thêm: -oA <basename> xuất cả 3: normal, XML, grepable. VD: nmap -sS -oN result.txt target hoặc nmap -oA myscan target. --reason Ý nghĩa: Hiển thị lý do Nmap gán trạng thái cho từng port (ví dụ: “received RST”, “no-response; timeout”). Khi dùng: Khi bạn cần debug tại sao Nmap báo open/filtered/closed. VD: nmap --reason -p 80,443 target --max-retries và --host-timeout --max-retries <n> — số lần retry probe khi không có phản hồi (giảm để nhanh hơn). --host-timeout <time> — tối đa thời gian dành cho 1 host (ví dụ --host-timeout 30m cho 30 phút). Đơn vị: s, m, h. Khi dùng: Tinh chỉnh khi scan lớn hoặc UDP chậm. VD: nmap --max-retries 2 --host-timeout 10m -sU target --data-length / --mtu / --scanflags / --source-port Những tuỳ chọn “lower-level” để tinh chỉnh gói tin: --data-length <n> Gắn thêm n bytes dữ liệu ngẫu nhiên vào probe. Dùng để thay đổi checksum/pattern để tránh signature-based IDS. VD: nmap --data-length 50 target --mtu <value> Phân mảnh gói (simulate smaller MTU) → Nmap sẽ tạo gói phân mảnh. Dùng thử vượt firewall kém cấu hình, nhưng hiện nay IDS thường ghép lại phân mảnh và kiểm tra. VD: nmap --mtu 24 target --scanflags <flags> Thiết lập cờ TCP theo byte (ví dụ --scanflags SYN,ACK tương đương). Dùng để tạo probe đặc biệt. VD: nmap --scanflags FINPSH target (hiếm dùng). --source-port <port> Đặt port nguồn của probe (ví dụ --source-port 53) để lợi dụng ACL dựa trên source port (thỉnh thoảng firewall cho phép traffic từ source 80/53). Cảnh báo: Dễ bị lộ, có thể phạm luật (IP spoofing risk nếu dùng source khác subnet). VD: nmap --source-port 53 target Lưu ý chung: Những tuỳ chọn này có thể evade một số firewall cũ nhưng cũng dễ khiến IDS/IPS chú ý. Dùng cẩn trọng. ```