
nmap
Professional network reconnaissance and port scanning using nmap. Supports various scan types (quick, full, UDP, stealth), service detection, vulnerability scanning, and NSE scripts. Use when you need to enumerate network services, detect versions, or perform network reconnaissance.
- Installs
- 149
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/brownfinesecurity/iothackbot --skill nmap- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads nmap automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Nmap Scan - Professional Network Reconnaissance
You are helping the user perform professional network reconnaissance and port scanning using nmap. This skill provides guidance for various scan types, output formats, and result analysis.
Output Directory
Directory Structure
nmap-output/
├── nmap-portscan.nmap # Initial fast port discovery
├── nmap-portscan.xml
├── nmap-portscan.gnmap
├── nmap-services.nmap # Detailed service detection on open ports
├── nmap-services.xml
└── nmap-services.gnmap
IMPORTANT: Always save nmap output to an organized directory structure. By default, use ./nmap-output/ or specify a custom directory.
Default Scanning Strategy
IMPORTANT: Unless the user explicitly requests a different scan type, ALWAYS use this two-phase approach:
Phase 1: Fast Port Discovery (Root SYN Scan)
sudo nmap -p- <target> -oA <output-dir>/nmap-portscan
- Why sudo: Running as root enables fast SYN scan (-sS is implicit)
- Why -p-: Scans all 65535 ports quickly
- Duration: Typically 1-3 minutes for SYN scan
- Output: List of all open ports
Host Down Detection: If the scan output contains "Note: Host seems down", automatically retry with:
sudo nmap -p- -Pn <target> -oA <output-dir>/nmap-portscan
-Pn: Skip host discovery, treat host as online- Use this when firewalls block ping probes
Phase 2: Targeted Service Detection
After Phase 1 completes, parse the open ports and run:
nmap -p <OPEN_PORT_LIST> -sV -sC <target> -oA <output-dir>/nmap-services
-p <OPEN_PORT_LIST>: Only scan the ports found to be open (e.g.,-p 23,80,443,554,8000)-sV: Service version detection-sC: Run default NSE scripts for additional enumeration- Duration: Usually 1-3 minutes since only scanning known open ports
Why This Strategy?
- Speed: Fast SYN scan finds all open ports in 1-3 minutes
- Thoroughness: Covers all 65535 ports, not just top 1000
- Efficiency: Service detection only runs on confirmed open ports
- Accuracy: Two-phase approach reduces false negatives
Parsing Open Ports
After Phase 1, extract open ports using:
# Extract open ports from .gnmap file
grep "Ports:" <output-dir>/nmap-portscan.gnmap | sed 's/.*Ports: //' | tr ',' '\n' | grep '/open/' | cut -d'/' -f1 | tr -d ' ' | tr '\n' ',' | sed 's/,$//'
Or parse from .nmap file (matches the STATE column exactly, so open|filtered ports are excluded):
awk '$2=="open"{split($1,p,"/"); ports=ports sep p[1]; sep=","} END{print ports}' <output-dir>/nmap-portscan.nmap
Implementation Workflow
When the nmap-scan skill is invoked:
-
Create output directory
OUTPUT_DIR="./nmap-output" mkdir -p "$OUTPUT_DIR" -
Run Phase 1: Fast port discovery
sudo nmap -p- <target> -oA "$OUTPUT_DIR/nmap-portscan" -
Check for "Host seems down" error
if grep -q "Host seems down" "$OUTPUT_DIR/nmap-portscan.nmap"; then echo "Host appears down, retrying with -Pn flag..." sudo nmap -p- -Pn <target> -oA "$OUTPUT_DIR/nmap-portscan" fi -
Parse open ports from results
OPEN_PORTS=$(awk '$2=="open"{split($1,p,"/"); ports=ports sep p[1]; sep=","} END{print ports}' "$OUTPUT_DIR/nmap-portscan.nmap") -
Run Phase 2: Service detection on open ports
if [ -n "$OPEN_PORTS" ]; then nmap -p "$OPEN_PORTS" -sV -sC <target> -oA "$OUTPUT_DIR/nmap-services" else echo "No open ports found, skipping service detection." fi -
Report results location
echo "Scan complete. Results saved to: $OUTPUT_DIR"
Scan Types
Quick Scan (Top 1000 Ports)
Use for initial reconnaissance, when time is limited, or only when the user explicitly requests a quick/fast scan instead of the default two-phase strategy:
nmap -sV -sC <target> -oA <output-prefix>
-sV: Service version detection-sC: Run default NSE scripts-oA: Output in all formats (normal, XML, grepable)- Scans top 1000 most common ports
- Typical duration: 1-3 minutes
- Limitation: May miss services on non-standard ports
Comprehensive Scan (All Ports)
Use for thorough assessment when all ports must be checked:
nmap -sV -sC -p- <target> -oA <output-prefix>
-p-: Scan all 65535 ports- Significantly longer duration (5-30+ minutes depending on target)
- Use only when comprehensive coverage is required
Stealth SYN Scan
Use when trying to avoid detection (requires root/sudo):
sudo nmap -sS -sV -sC <target> -oA <output-prefix>
-sS: SYN stealth scan (doesn't complete TCP handshake)- Less likely to be logged by target
- Requires root privileges
UDP Scan
Use when UDP services need to be enumerated:
sudo nmap -sU --top-ports 100 <target> -oA <output-prefix>
-sU: UDP scan--top-ports 100: Scan top 100 UDP ports (UDP scanning is slow)- Common UDP services: DNS (53), SNMP (161), DHCP (67/68)
- Very slow - use top-ports to limit scope
Aggressive Scan
Use for maximum information gathering (noisy):
nmap -A -T4 <target> -oA <output-prefix>
-A: Enable OS detection, version detection, script scanning, traceroute-T4: Aggressive timing template (faster but more detectable)- Very noisy - will be detected by IDS/IPS
- Use only with authorization
Vulnerability Scan
Use to check for known vulnerabilities:
nmap -sV --script vuln <target> -oA <output-prefix>
--script vuln: Run NSE vulnerability detection scripts- Checks for common CVEs and misconfigurations
- Can be noisy and trigger alerts
OS Detection
Use to identify operating system:
sudo nmap -O <target> -oA <output-prefix>
-O: Enable OS detection- Requires root privileges
- Uses TCP/IP stack fingerprinting
Scan Workflow
Default Workflow (Two-Phase Strategy)
Run Phase 1 (port discovery) and Phase 2 (service detection) per the Default Scanning Strategy and Implementation Workflow sections above. Then analyze:
Phase 3: Analysis
- Review the service detection results to determine:
- What services are running?
- What versions are detected?
- Are there any interesting services (web, SSH, database, IoT protocols)?
- Do NSE scripts reveal any issues?
Additional Targeted Scans (Optional)
Based on service detection results, run specialized scans:
If web services found (80, 443, 8080, etc.):
nmap -p 80,443,8080,8443 --script http-* <target> -oA <output-dir>/nmap-web
If SSH found:
nmap -p 22 --script ssh-* <target> -oA <output-dir>/nmap-ssh
If RTSP found (554):
nmap -p 554 --script rtsp-* <target> -oA <output-dir>/nmap-rtsp
If ONVIF/camera suspected:
nmap -p 80,554,8000,8080 --script http-methods,http-headers <target> -oA <output-dir>/nmap-onvif
Output Management
Output Formats
Always use -oA <prefix> to generate all three formats:
.nmap- Normal human-readable format.xml- XML format for parsing/importing into tools.gnmap- Grepable format for command-line processing
Timing and Performance
Timing Templates
Use -T<0-5> to control scan speed:
-T0(Paranoid): Extremely slow, for IDS evasion-T1(Sneaky): Very slow, for IDS evasion-T2(Polite): Slow, less bandwidth intensive-T3(Normal): Default, balanced speed-T4(Aggressive): Fast, recommended for modern networks-T5(Insane): Very fast, may miss results
Default: Use -T3 or omit (default is T3)
Fast scans: Use -T4 when speed is important and network can handle it
Stealth: Use -T1 or -T2 for evasion
Timeout Considerations
- Phase 1 Port Discovery (sudo nmap -p-): 180-300 seconds timeout (3-5 minutes)
- Phase 2 Service Detection (nmap -p <ports> -sV -sC): 120-180 seconds timeout (2-3 minutes)
- UDP scan: 600+ seconds timeout (very slow)
Network Ranges
Single Host
nmap <ip-address>
CIDR Notation
nmap 192.168.1.0/24
IP Range
nmap 192.168.1.1-254
Multiple Hosts
nmap 192.168.1.1 192.168.1.10 192.168.1.100
Exclude Hosts
nmap 192.168.1.0/24 --exclude 192.168.1.1,192.168.1.254
NSE Scripts
Common Script Categories
# Authentication scripts
nmap --script auth <target>
# Brute force scripts
nmap --script brute <target>
# Default safe scripts
nmap -sC <target> # equivalent to --script default
# Discovery scripts
nmap --script discovery <target>
# Vulnerability scripts
nmap --script vuln <target>
# All HTTP scripts
nmap --script "http-*" <target>
IoT-Specific Scripts
# RTSP enumeration
nmap -p 554 --script rtsp-methods,rtsp-url-brute <target>
# UPnP discovery
nmap -p 1900 --script upnp-info <target>
# MQTT discovery
nmap -p 1883,8883 --script mqtt-subscribe <target>
# Modbus enumeration
nmap -p 502 --script modbus-discover <target>
Result Analysis
Key Information to Extract
-
Open Ports and Services
- What ports are open?
- What services are running?
- What versions are detected?
-
Service Fingerprints
- Does version detection reveal outdated software?
- Are there known vulnerabilities for detected versions?
-
NSE Script Results
- Authentication issues?
- Information disclosure?
- Misconfigurations?
-
Operating System
- What OS is running?
- What OS version?
Parsing Nmap Output
Extract open ports:
grep "^[0-9]" nmap-output.nmap | grep "open"
Extract service versions:
grep -E "^[0-9]+/tcp.*open" nmap-output.nmap
Check for vulnerabilities in NSE output:
grep -i "vuln\|cve\|exploit" nmap-output.nmap
Common IoT Service Ports
When scanning IoT devices, pay special attention to:
| Port | Service | Description |
|---|---|---|
| 21 | FTP | File transfer (often misconfigured) |
| 22 | SSH | Remote administration |
| 23 | Telnet | Insecure remote access |
| 80 | HTTP | Web interface |
| 443 | HTTPS | Secure web interface |
| 554 | RTSP | Video streaming |
| 1883 | MQTT | IoT messaging protocol |
| 3702 | WS-Discovery | ONVIF device discovery |
| 5000 | UPnP | Universal Plug and Play |
| 8000 | HTTP Alt | Alternative HTTP port |
| 8080 | HTTP Proxy | Alternative HTTP port |
| 8883 | MQTT/TLS | Secure MQTT |
Best Practices
1. Always Save Output
Never run nmap without saving output:
# GOOD
nmap -p <ports> -sV -sC <target> -oA output/nmap-services
# BAD
nmap -sV -sC <target>
2. Always Use Two-Phase Strategy
Use the default two-phase strategy (see the Default Scanning Strategy section) unless the user explicitly requests a different scan type.
3. Use Appropriate Timing
Match timing to your needs:
# Pentest with authorization: Fast
nmap -sV -sC -T4 <target>
# Red team/stealth: Slow
nmap -sV -sC -T2 <target>
4. Document Scan Parameters
Always document:
- What scan type was used?
- What date/time was scan performed?
- What were the scan results?
- Any anomalies or errors?
5. Respect Authorization
- Only scan systems you have permission to scan
- Respect scope limitations
- Be aware of scan impact on production systems
- Use appropriate timing to avoid DoS
Integration with IoT Testing Workflow
For IoT Pentests
- Run default two-phase scan (port discovery + service detection)
- Run wsdiscovery if ONVIF suspected based on open ports
- Run onvifscan if port 80/554 open on camera
- Run targeted HTTP scripts if web interface found
Output Directory Usage
Always save to an organized output directory (default ./nmap-output/). See the Implementation Workflow section for the full command sequence.
Troubleshooting
Scan Taking Too Long
- Use
-T4for faster scanning - Limit port range:
-p 1-1000instead of-p- - Use
--top-ports 100instead of all ports
No Results / Firewalled
- Try different scan types:
-sS,-sT,-sA - Use
-Pnto skip host discovery - Try
-ffor fragmented packets - Consider using
--source-port 53or other trusted ports
Requires Root/Sudo
These scan types require root:
-sS(SYN scan)-sU(UDP scan)-O(OS detection)- Raw packet features
Permission Denied Errors
If you see "Permission denied" or "Operation not permitted":
# Run with sudo
sudo nmap <options> <target>
Example Workflows
Workflow 1: Standard Single Target Scan (Default)
TARGET="192.168.1.100"
OUTPUT_DIR="./nmap-output"
mkdir -p "$OUTPUT_DIR"
# Phase 1: Fast port discovery
sudo nmap -p- $TARGET -oA "$OUTPUT_DIR/nmap-portscan"
# Check for "Host seems down"
if grep -q "Host seems down" "$OUTPUT_DIR/nmap-portscan.nmap"; then
sudo nmap -p- -Pn $TARGET -oA "$OUTPUT_DIR/nmap-portscan"
fi
# Parse open ports
OPEN_PORTS=$(awk '$2=="open"{split($1,p,"/"); ports=ports sep p[1]; sep=","} END{print ports}' "$OUTPUT_DIR/nmap-portscan.nmap")
# Phase 2: Service detection
if [ -n "$OPEN_PORTS" ]; then
nmap -p "$OPEN_PORTS" -sV -sC $TARGET -oA "$OUTPUT_DIR/nmap-services"
fi
Workflow 2: IoT Camera Testing
Run the default two-phase scan from Workflow 1, then add camera-specific checks:
TARGET="192.168.1.100"
OUTPUT_DIR="./nmap-output"
# If ONVIF camera detected, check HTTP methods
nmap -p 80 --script http-methods $TARGET -oA "$OUTPUT_DIR/nmap-http"
# Check RTSP service
nmap -p 554 --script rtsp-methods $TARGET -oA "$OUTPUT_DIR/nmap-rtsp"
Workflow 3: Additional UDP/OS Detection
OUTPUT_DIR="./nmap-output"
# After completing default two-phase scan, optionally add:
# UDP scan (top ports)
sudo nmap -sU --top-ports 100 <target> -oA "$OUTPUT_DIR/nmap-udp"
# OS detection
sudo nmap -O <target> -oA "$OUTPUT_DIR/nmap-os"
# Vulnerability scan
nmap -sV --script vuln <target> -oA "$OUTPUT_DIR/nmap-vuln"
Questions to Ask User
Before starting scans, clarify:
- Target: What is the IP address or network range?
- Scope: Single host or network range?
- Scan Type: Use default two-phase strategy or user has specific requirements?
- Authorization: Do you have permission to scan this target?
- Special interests: Any specific services or ports to focus on after initial scan?
Note: Output is saved to ./nmap-output/ by default.
Success Criteria
A successful nmap scan includes:
- Phase 1 port discovery completed without errors
- Phase 2 service detection completed on all open ports
- Results saved in all formats (-oA) in output directory
- Open ports identified with service versions
- NSE scripts executed successfully
- Results documented and ready for analysis
- Clear summary provided showing:
- Number of open ports found
- Key services detected
- Location of output files
FAQ
What does the nmap skill do?
Professional network reconnaissance and port scanning using nmap. Supports various scan types (quick, full, UDP, stealth), service detection, vulnerability scanning, and NSE scripts. Use when you need to enumerate network services, detect versions, or perform network reconnaissance.
How do I install nmap?
Run npx skills add https://github.com/brownfinesecurity/iothackbot --skill nmap in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/nmap/ (personal) or .claude/skills/nmap/ (project).
Which AI agents can use nmap?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is nmap safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains nmap?
It is published by brownfinesecurity in brownfinesecurity/iothackbot. It has 149 recorded installs.
More from brownfinesecurity/iothackbot
apktool
brownfinesecurity/iothackbot
Android APK unpacking and resource extraction tool for reverse engineering. Use when you need to decode APK files, extract resources, examine AndroidManifest.xml, analyze smali code, or repackage modified APKs.
jadx
brownfinesecurity/iothackbot
Android APK decompiler that converts DEX bytecode to readable Java source code. Use when you need to decompile APK files, analyze app logic, search for vulnerabilities, find hardcoded credentials, or understand app behavior through readable source code.
telnetshell
brownfinesecurity/iothackbot
Use telnet to interact with IoT device shells for pentesting operations including device enumeration, vulnerability discovery, credential testing, and post-exploitation. Use when the user needs to interact with network-accessible shells, IoT devices, or telnet services.
Popular security skills
azure-compliance
microsoft/azure-skills
Run Azure compliance and security audits with azqr plus Key Vault expiration checks. Covers best-practice assessment, resource review, policy/compliance validation, and security posture checks. WHEN: compliance scan, security audit, BEFORE running azqr (compliance cli tool), Azure best practices, Key Vault expiration check, expired certificates, expiring secrets, orphaned resources, compliance assessment.
minimal-run-and-audit
lllllllama/rigorpilot-skills
Rigor Run skill for README-first deep learning repo reproduction. Use when the task is specifically to capture or normalize evidence from the selected smoke test or documented inference or evaluation command and write standardized reprooutputs/ files, including patch notes when repository files changed. Do not use for training execution, initial repo intake, generic environment setup, paper lookup, target selection, hidden scientific-meaning changes, or end-to-end orchestration by itself.
seo-audit
coreyhaines31/marketingskills
When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," "indexing issues," "stuck on page 2," "striking distance keywords," "title tag rewrite," "low CTR," "local SEO," "Google Business Profile," or "map pack." Use this even if the user just says something vague like "my SEO is bad" or "help with SEO" — start with an audit. For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema. For AI search optimization, see ai-seo.
firebase-security-rules-auditor
firebase/agent-skills
Audits Firebase (Firestore, Cloud Storage) security rules for vulnerabilities, privilege escalation, role bypasses, create vs update inconsistencies, resource exhaustion, type safety, size limits, and hasOnly ownership checks. Use when auditing/reviewing rules, running red-team rule assessments, or scoring against auditor checklists. Don't use for Firebase CLI (login, deploy), Auth, Crashlytics, Remote Config, or database queries.
audit
pbakaus/impeccable
Run technical quality checks across accessibility, performance, theming, responsive design, and anti-patterns. Generates a scored report with P0-P3 severity ratings and actionable plan. Use when the user wants an accessibility check, performance audit, or technical quality review.
competitors
coreyhaines31/marketingskills
When the user wants to create competitor comparison or alternative pages for SEO and buyer-facing use. Also use when the user mentions 'alternative page,' 'vs page,' 'competitor comparison,' 'comparison page,' '[Product] vs [Product],' '[Product] alternative,' 'competitive landing pages,' 'how do we compare to X,' 'competitor teardown,' 'audit our competitor pages,' 'are our comparison pages out of date,' or 'competitive asset audit.' Use this for any content that positions your product against competitors. Covers four formats: singular alternative, plural alternatives, you vs competitor, and competitor vs competitor. For auditing existing claims (not researching competitors from scratch, which is competitor-profiling; not technical SEO on these pages, which is seo-audit), use the asset audit here. For internal battle cards and sales-specific competitor docs, see sales-enablement.