The phase that turns "engagement starts now" into "here is the candidate attack surface" — breadth first, then depth.
Active recon discovers what is there; enumeration extracts details from each thing that is there. The line is fuzzy in practice; the distinction that matters is authorization.
amass, subfinder, dnsrecon with SecLists wordlists.Nmap: the standard tester progression.
-sn)-F)-sV)-O)--script)-T2/-T3 on production; reserve -T4/-T5 for labs. Real attackers don't skip unusual ports — most lazy scans do.
httpx -tech-detect, browser dev tools. "Drupal 7" vs. "Spring Boot" reshapes every subsequent step.ffuf, feroxbuster, gobuster with SecLists. Target: admin interfaces, .bak/.git directories, .env/web.config, Swagger/GraphQL docs.testssl.sh, sslyze — supported versions, cipher suites, certificate chain.smbclient -L, crackmapexec smb, enum4linux-ng.| Service | Ports | What to check |
|---|---|---|
| Databases | 3306, 5432, 1433, 27017, 6379, 9200 | Unauthenticated access (Redis/MongoDB/ES defaults), default/weak creds, version for CVEs |
| SSH | 22 | Version, config leaks at protocol level; brute-force only if scope explicitly permits |
| FTP | 21 | Anonymous access, banner/version — old versions with known issues |
| SMTP / POP3 / IMAP | 25, 465, 587 | User enum via VRFY/EXPN, TLS config, open relay if in scope |
| SNMP | 161 UDP | Default community strings (public, private); onesixtyone, snmp-check yield rich system inventory |
| RDP / VNC | 3389, 5900 | Internet exposure is itself a finding; NLA posture; version (BlueKeep-era CVEs) |
| Industrial / IoT | 502, 47808, 102 | Extreme care — standard scans often crash these devices |
Pattern for every service: identify → version → configuration → accessible resources → default-credential check → known weakness.
arpspoof, Bettercap, scapy.dnsspoof, Bettercap.Bettercap — modern orchestrator for ARP/DNS spoofing, SSL stripping, and sniffing. mitmproxy — HTTP(S) modification and inspection.
On a Windows network, AD is typically the highest-value surface. The targets of enumeration are stable even as tools evolve.
BloodHound is the "first thing to run" — attack paths are not visible from individual objects; the graph reveals them.
Tools: ScoutSuite, Prowler, CloudSploit, CloudMapper; AWS PACU for offensive work.
script, asciinema, tmux logging, or deliberate real-time notes.You are given scope: domain example.com only. Walk through the steps to build an external attack surface picture — tools, order, and stopping criteria.
(1) Passive: crt.sh / amass / subfinder for subdomains; Shodan / Censys for exposed services; archive.org for historical surface. (2) Resolve: httpx / dnsx to find live HTTP hosts and resolve IPs. (3) Active: Nmap against in-scope hosts — host discovery → quick scan → full TCP → service/version → NSE. (4) Per-service: ffuf for web content, smbclient / netexec for SMB, etc. Stop when the next step would touch out-of-scope assets or the recon time-box is reached.
Next: Topic 15 — Exploitation. Enumeration ends where exploitation begins — the candidate list becomes the strike list.