| name | active-recon |
| description | Active target probing — port scanning, service detection, vulnerability scanning, banner grabbing, web directory fuzzing, SSL/TLS analysis. |
| allowed-tools | Bash Read Write |
| metadata | {"subdomain":"reconnaissance","when_to_use":"port scan, nmap, active scan, service detection, banner grab, vulnerability scan, nuclei, nikto, SSL analysis, network sweep, testssl","tags":"nmap, port-scan, service-detection, banner-grab, nuclei, vulnerability-scan","mitre_attack":"T1595, T1595.001, T1595.002, T1595.003"} |
Active Reconnaissance Knowledge Base
Active reconnaissance directly interacts with target systems. Every packet sent may be logged, detected, or trigger alerts. Use active techniques only after passive reconnaissance has identified specific targets that warrant further investigation.
Quick Reference — Common Scan Patterns
nmap -sS -sV -p 22,80,443,8080,8443 <TARGET> -oN nmap_<TARGET>.txt -oX nmap_<TARGET>.xml
nmap -sS -sV --top-ports 1000 -T2 <TARGET> -oN nmap_full_<TARGET>.txt
nmap -sC -sV -p <PORTS> <TARGET> -oN nmap_scripts_<TARGET>.txt
nmap -sU -p 53,161,123 <TARGET> -oN nmap_udp_<TARGET>.txt
ffuf -u https://<TARGET>/FUZZ -w /usr/share/wordlists/dirb/common.txt -mc 200,301,302,403 -o ffuf_<TARGET>.json
nuclei -u https://<TARGET> -severity critical,high -o nuclei_<TARGET>.txt
1. OPSEC Principles for Active Scanning
Detection Avoidance
- Never scan entire ranges blindly — target specific IPs/ports identified during passive recon
- Rate limiting: Slow scans blend with normal traffic; fast scans trigger IDS/IPS
- Timing: Scan during business hours when traffic volume provides cover
- Source management: Be aware your sandbox IP is the scan origin
- User-Agent rotation: Vary HTTP user agents for web scanning tools
Scan Justification
Before every active scan, document:
- What you're scanning and why
- What passive intel led to this decision
- Expected noise level and detection risk
2. Port Scanning with Nmap
Stealth SYN Scan (Default for Recon)
nmap -sS -p 22,80,443,8080,8443 <target_ip>
nmap -sS -sV --top-ports 1000 <target_ip>
nmap -sS -p- --min-rate 1000 <target_ip>
nmap -sS -sV -p 22,80,443 <target_ip> -oN nmap_scan.txt -oX nmap_scan.xml
Service Version Detection
nmap -sV --version-intensity 5 -p 22,80,443 <target_ip>
nmap -sV -O -p 22,80,443 <target_ip>
nmap -sC -sV -p 22,80,443 <target_ip>
Scan Types Reference
| Flag | Scan Type | Noise Level | Use Case |
|---|
-sS | SYN (half-open) | Low | Default stealth scan |
-sT | TCP Connect | Medium | When SYN scan unavailable |
-sU | UDP | Medium-High | DNS (53), SNMP (161), NTP (123) |
-sV | Version detect | Medium | Service identification |
-sC | Default scripts | Medium-High | Common vulnerability checks |
-O | OS detection | Medium | Operating system fingerprinting |
-A | Aggressive | High | Full enumeration (last resort) |
Timing Templates
| Flag | Name | Speed | Detection Risk |
|---|
-T0 | Paranoid | Very slow | Minimal |
-T1 | Sneaky | Slow | Low |
-T2 | Polite | Moderate | Low-Medium |
-T3 | Normal | Default | Medium |
-T4 | Aggressive | Fast | High |
Recommendation: Use -T2 or -T3 for recon engagements. -T1 for high-security targets.
Nmap Output Formats
nmap -sV -p 80,443 <target> -oN scan.txt -oX scan.xml -oG scan.gnmap
3. Service-Specific Enumeration
Web Services (80/443)
nmap --script http-methods -p 80,443 <target>
nmap --script http-server-header -p 80,443 <target>
nmap --script http-enum -p 80,443 <target>
nmap --script ssl-enum-ciphers -p 443 <target>
nmap --script ssl-cert -p 443 <target>
nmap --script http-waf-detect -p 80,443 <target>
SSH (22)
nmap --script ssh2-enum-algos -p 22 <target>
nmap --script ssh-hostkey -p 22 <target>
nmap --script ssh-auth-methods -p 22 <target>
DNS (53)
nmap --script dns-nsid -p 53 <target>
nmap --script dns-recursion -p 53 <target>
SMTP (25/587)
nmap --script smtp-commands -p 25,587 <target>
nmap --script smtp-enum-users --script-args smtp-enum-users.methods=VRFY -p 25 <target>
SMB (445)
nmap --script smb-enum-shares,smb-enum-users,smb-os-discovery -p 445 <target>
nmap --script smb-vuln* -p 445 <target>
SNMP (161/UDP)
nmap -sU --script snmp-info,snmp-interfaces,snmp-processes -p 161 <target>
4. Web Directory & Content Discovery
ffuf (Fast Web Fuzzer)
ffuf -u https://<target>/FUZZ -w /usr/share/wordlists/dirb/common.txt -mc 200,301,302,403
ffuf -u https://<target>/FUZZ -w /usr/share/wordlists/dirb/common.txt -e .php,.asp,.aspx,.jsp,.html,.js,.json,.xml,.txt,.bak,.old
ffuf -u https://<target>/ -H "Host: FUZZ.<target>" -w /usr/share/wordlists/subdomains.txt -fs <default_size>
ffuf -u https://<target>/api/FUZZ -w /usr/share/wordlists/api-endpoints.txt -mc 200,201,401,403
ffuf -u https://<target>/FUZZ -w wordlist.txt -o ffuf_results.json -of json
gobuster (Alternative)
gobuster dir -u https://<target> -w /usr/share/wordlists/dirb/common.txt -o gobuster_<target>.txt
gobuster dns -d <target> -w /usr/share/wordlists/subdomains.txt
5. Vulnerability Scanning
nuclei (Template-Based Scanner)
nuclei -u https://<target> -severity critical,high -o nuclei_<target>.txt
nuclei -u https://<target> -tags cve,misconfig,exposure
nuclei -u https://<target> -tags takeover
nuclei -l httpx_live.txt -severity critical,high,medium
nuclei -u https://<target> -rl 10 -severity critical,high
nuclei -u https://<target> -severity critical,high -json -o nuclei.json
nikto (Web Server Scanner)
nikto -h https://<target> -o nikto_<target>.txt
nikto -h https://<target> -Tuning 1234 -o nikto_<target>.txt
6. SSL/TLS Analysis
testssl.sh
testssl.sh https://<target>
testssl.sh --vulnerable https://<target>
testssl.sh --heartbleed --ccs --robot --breach https://<target>
Key TLS Findings
- SSLv3 / TLS 1.0 / TLS 1.1: Deprecated protocols → compliance issue
- Weak ciphers: RC4, DES, 3DES, NULL → cryptographic weakness
- Missing HSTS: No HTTP Strict Transport Security → downgrade risk
- Certificate issues: Expired, self-signed, wrong CN/SAN → trust issues
7. Banner Grabbing
Netcat
echo "" | nc -nv -w 3 <target_ip> <port>
for port in 22 80 443 8080; do
echo "--- Port $port ---"
echo "" | nc -nv -w 3 <target_ip> $port 2>&1
done
curl for HTTP Services
curl -sI -L https://<target>
curl -sIL https://<target> 2>&1 | grep -E "^(HTTP/|Location:)"
8. Authentication & Directory Service Enumeration
LDAP (389/636)
nmap --script ldap-rootdse -p 389 <target>
nmap --script ldap-search --script-args 'ldap.qfilter=users' -p 389 <target>
ldapsearch -x -H ldap://<target> -b "dc=example,dc=com" -s base namingContexts
Kerberos (88)
nmap --script krb5-enum-users --script-args krb5-enum-users.realm='DOMAIN.COM' -p 88 <target>
RDP (3389)
nmap --script rdp-enum-encryption,rdp-ntlm-info -p 3389 <target>
FTP (21)
nmap --script ftp-anon,ftp-syst -p 21 <target>
Redis (6379) / MongoDB (27017) / Elasticsearch (9200)
nmap -sV -p 6379 <target> --script redis-info
nmap -sV -p 27017 <target> --script mongodb-info
curl -s http://<target>:9200/ | python3 -m json.tool
curl -s http://<target>:9200/_cat/indices
9. IPv6 Scanning
dig <target> AAAA +short
nmap -6 -sS -sV --top-ports 100 <ipv6_address>
nmap -6 --script targets-ipv6-multicast-echo <interface>
Why IPv6 matters: Many organizations deploy IPv6 without the same firewall
rules as IPv4. Services may be exposed on IPv6 that are filtered on IPv4.
10. Parallel Execution Strategy
Scan Orchestration
nmap -sS -sV --top-ports 1000 <target1> -oN nmap_t1.txt &
nmap -sS -sV --top-ports 1000 <target2> -oN nmap_t2.txt &
wait
cat live_hosts.txt | while read host; do
ffuf -u "$host/FUZZ" -w /usr/share/wordlists/dirb/common.txt \
-mc 200,301,302,403 -o "ffuf_$(echo $host | tr '/:' '_').json" -of json &
[ $(jobs -r | wc -l) -ge 3 ] && wait -n
done
wait
Rate Distribution
When scanning multiple targets, distribute rate limits:
- 3 parallel scans at 30 req/sec each = 90 req/sec total from your IP
- Adjust per-scan rate to stay within aggregate OPSEC threshold
11. Network Topology Mapping
Traceroute
traceroute <target>
nmap --traceroute -p 443 <target>
Network Sweep (Use Sparingly)
nmap -sn <target_network>/24
nmap -PR -sn <target_network>/24
12. Workflow: Active Recon Sequence
- Target Selection → From passive recon, pick high-value IPs/domains
- Port Discovery → SYN scan on top ports (
-sS --top-ports 1000)
- IPv6 Check → Scan AAAA records if found
- Service Identification → Version detection on open ports (
-sV)
- Script Enumeration → Targeted NSE scripts for identified services
- Auth Service Enumeration → LDAP, Kerberos, RDP, FTP, databases
- Web Content Discovery → ffuf/gobuster on web services (→ hand off to
web-recon for deep enumeration)
- Vulnerability Scanning → nuclei on live web targets
- SSL/TLS Analysis → testssl.sh on HTTPS services
- Banner Grabbing → Manual verification of interesting services
- Synthesis → Merge with passive findings, produce final attack surface map
13. Error Handling
| Problem | Cause | Solution |
|---|
| nmap "host seems down" | ICMP filtered | Add -On (skip host discovery) |
| nmap extremely slow | Too many ports + version detection | Split: port discovery first (-sS), then -sV on open ports only |
| ffuf 429 responses | Rate limited by WAF | Reduce -rate to 5, add -p 1-3 for random delay |
| nuclei template errors | Outdated templates | Run nuclei -update-templates first |
| testssl.sh timeout | Target very slow | Add --connect-timeout 10 --openssl-timeout 10 |
| Banner grab empty | Service requires protocol-specific handshake | Use service-specific probes (HTTP GET, EHLO, etc.) |
14. Common Pitfalls
- Scanning too broadly: Only scan IPs confirmed in scope
- Ignoring UDP: Critical services (DNS, SNMP, NTP) run on UDP
- Not saving results: Always use
-oN / -oX flags — scans are expensive to repeat
- Aggressive timing on sensitive targets: Start slow, increase only if needed
- Forgetting IPv6: Check for AAAA records and scan IPv6 addresses too
- Skipping web fuzzing: Many findings are behind non-obvious paths
- Running nuclei without rate limiting: Can trigger WAF blocks and alert the SOC
- Not checking auth services: LDAP anonymous bind, Redis no-auth, MongoDB no-auth are common critical findings
- Sequential when parallel is safe: Independent targets can be scanned concurrently