Target Specification

SwitchExampleDescription
nmap 192.168.1.1Scan a single IP
nmap 192.168.1.1 192.168.2.1Scan specific IPs
nmap 192.168.1.1-254Scan a range
nmap scanme.nmap.orgScan a domain
nmap 192.168.1.0/24Scan using CIDR notation
-iLnmap -iL targets.txtScan targets from a file
-iRnmap -iR 100Scan 100 random hosts
–excludenmap –exclude 192.168.1.1Exclude listed hosts

Scan Techniques

SwitchExampleDescription
-sSnmap 192.168.1.1 -sSTCP SYN port scan (Default)
-sTnmap 192.168.1.1 -sTTCP connect port scan (Default without root privilege)
-sUnmap 192.168.1.1 -sUUDP port scan
-sAnmap 192.168.1.1 -sATCP ACK port scan
-sWnmap 192.168.1.1 -sWTCP Window port scan
-sMnmap 192.168.1.1 -sMTCP Maimon port scan

Host Discovery

SwitchExampleDescription
-sLnmap 192.168.1.1-3 -sLNo Scan. List targets only
-snnmap 192.168.1.1/24 -snDisable port scanning
-Pnnmap 192.168.1.1-5 -PnDisable host discovery. Port scan only
-PSnmap 192.168.1.1-5 -PS22-25,80TCP SYN discovery on port x. Port 80 by default
-PAnmap 192.168.1.1-5 -PA22-25,80TCP ACK discovery on port x. Port 80 by default
-PUnmap 192.168.1.1-5 -PU53UDP discovery on port x. Port 40125 by default
-PRnmap 192.168.1.1-1/24 -PRARP discovery on local network
-nnmap 192.168.1.1 -nNever do DNS resolution

Port Specification

SwitchExampleDescription
-pnmap 192.168.1.1 -p 21Port scan for port x
-pnmap 192.168.1.1 -p 21-100Port range
-pnmap 192.168.1.1 -p U:53,T:21-25,80Port scan multiple TCP and UDP ports
-p-nmap 192.168.1.1 -p-Port scan all ports
-pnmap 192.168.1.1 -p http,httpsPort scan from service name
-Fnmap 192.168.1.1 -FFast port scan (100 ports)
–top-portsnmap 192.168.1.1 –top-ports 2000Port scan the top x ports
-p-65535nmap 192.168.1.1 -p-65535Leaving off initial port in range makes the scan start at port 1
-p0-nmap 192.168.1.1 -p0-Leaving off end port in range makes the scan go through to port 65535

Service and Version Detection

SwitchExampleDescription
-sVnmap 192.168.1.1 -sVAttempts to determine the version of the service running on port
-sV –version-intensitynmap 192.168.1.1 -sV –version-intensity 8Intensity level 0 to 9. Higher number increases possibility of correctness
-sV –version-lightnmap 192.168.1.1 -sV –version-lightEnable light mode. Lower possibility of correctness. Faster
-sV –version-allnmap 192.168.1.1 -sV –version-allEnable intensity level 9. Higher possibility of correctness. Slower
-Anmap 192.168.1.1 -AEnables OS detection, version detection, script scanning, and traceroute
SwitchExampleDescription
-Onmap 192.168.1.1 -ORemote OS detection using TCP/IP stack fingerprinting
–osscan-limitnmap 192.168.1.1 -O –osscan-limitIf at least one open and one closed TCP port are not found it will not try OS detection against host
–osscan-guessnmap 192.168.1.1 -O –osscan-guessMakes Nmap guess more aggressively
–max-os-triesnmap 192.168.1.1 -O –max-os-tries 1Set the maximum number x of OS detection tries against a target
-Anmap 192.168.1.1 -AEnables OS detection, version detection, script scanning, and traceroute

Timing and Performance

SwitchExampleDescription
-T0nmap 192.168.1.1 -T0Paranoid (0) Intrusion Detection System evasion
-T1nmap 192.168.1.1 -T1Sneaky (1) Intrusion Detection System evasion
-T2nmap 192.168.1.1 -T2Polite (2) slows down the scan to use less bandwidth and use less target machine resources
-T3nmap 192.168.1.1 -T3Normal (3) which is default speed
-T4nmap 192.168.1.1 -T4Aggressive (4) speeds scans; assumes you are on a reasonably fast and reliable network
-T5nmap 192.168.1.1 -T5Insane (5) speeds scan; assumes you are on an extraordinarily fast network
SwitchExample inputDescription
–host-timeoutGive up on target after this long
–min-rtt-timeoutSpecifies probe round trip time
–max-rtt-timeoutSpecifies probe round trip time
–initial-rtt-timeoutSpecifies probe round trip time
–min-hostgroup(e.g. 50, 1024)Parallel host scan group sizes
–max-hostgroup(e.g. 50, 1024)Parallel host scan group sizes
–min-parallelism(e.g. 10, 1)Probe parallelization
–max-parallelism(e.g. 10, 1)Probe parallelization
–scan-delayAdjust delay between probes
–max-scan-delayAdjust delay between probes
–max-retries(e.g. 3)Specify the maximum number of port scan probe retransmissions
–min-rate(e.g. 100)Send packets no slower than per second
–max-rate(e.g. 100)Send packets no faster than per second

NSE Scripts

SwitchExampleDescription
-sCnmap 192.168.1.1 -sCScan with default NSE scripts. Considered useful for discovery and safe
–script defaultnmap 192.168.1.1 –script defaultScan with default NSE scripts. Considered useful for discovery and safe
–scriptnmap 192.168.1.1 –script=bannerScan with a single script. Example banner
–scriptnmap 192.168.1.1 –script=http*Scan with a wildcard. Example http
–scriptnmap 192.168.1.1 –script=http,bannerScan with two scripts. Example http and banner
–scriptnmap 192.168.1.1 –script “not intrusive”Scan default, but remove intrusive scripts
–script-argsnmap –script snmp-sysdescr –script-args snmpcommunity=admin 192.168.1.1NSE script with arguments
CommandDescription
nmap -Pn –script=http-sitemap-generatorScan for a site map generator on the http service of the specified domain
scanme.nmap.org
nmap -n -Pn -p 80 –open -sV -vvv –script banner,Fast search for random web servers on port 80, displaying verbose output and running two NSE scripts:
http-title -iR 1000banner and http-title
nmap -Pn –script=dns-brute domain.comBrute-force DNS hostnames by guessing subdomains for the specified domain
nmap -n -Pn -vv -O -sV –script smb-enum*,smb-ls,Run safe SMB scripts to enumerate, list, and discover SMB hosts, and check for SMB vulnerabilities for the
smb-mbenum,smb-os-discovery,smb-s*,smb-vuln*,specified IP address or range of addresses
smbv2* -vv 192.168.1.1
nmap –script whois* domain.comQuery WHOIS for information on the specified domain
nmap -p80 –script http-unsafe-output-escapingCheck for cross-site scripting vulnerabilities on the http service of the specified domain
scanme.nmap.org
nmap -p80 –script http-sql-injectionCheck for SQL injection vulnerabilities on the http service of the specified domain
scanme.nmap.org

Firewall / IDS Evasion and Spoofing

SwitchExampleDescription
-fnmap 192.168.1.1 -fRequested scan (including ping scans) use tiny fragmented IP packets. Harder for packet filters
–mtunmap 192.168.1.1 –mtu 32Set your own offset size
-Dnmap -D 192.168.1.101,192.168.1.102,192.168.1.103,192.168.1.23 192.168.1.1Send scans from spoofed IPs
-Dnmap -D decoy-ip1,decoy-ip2,your-own-ip,decoy-ip3,decoy-ip4 remote-host-ipAbove example explained
-Snmap -S www.microsoft.com www.facebook.comScan Facebook from Microsoft (-e eth0 -Pn may be required)
-gnmap -g 53 192.168.1.1Use given source port number
–proxiesnmap –proxies http://192.168.1.1:8080, http://192.168.1.2:8080 192.168.1.1Relay connections through HTTP/SOCKS4 proxies
–data-lengthnmap –data-length 200 192.168.1.1Appends random data to sent packets

Example IDS Evasion command:

nmap -f -t 0 -n -Pn --data-length 200 -D 192.168.1.101,192.168.1.102,192.168.1.103,192.168.1.23 192.168.1.1

Output

SwitchExampleDescription
-oNnmap 192.168.1.1 -oN normal.fileNormal output to the file normal.file
-oXnmap 192.168.1.1 -oX xml.fileXML output to the file xml.file
-oGnmap 192.168.1.1 -oG grep.fileGrepable output to the file grep.file
-oAnmap 192.168.1.1 -oA resultsOutput in the three major formats at once
-oG -nmap 192.168.1.1 -oG -Grepable output to screen. -oN -, -oX - also usable
–append-outputnmap 192.168.1.1 -oN file.file –append-outputAppend a scan to a previous scan file
-vnmap 192.168.1.1 -vIncrease the verbosity level (use -vv or more for greater effect)
-dnmap 192.168.1.1 -dIncrease debugging level (use -dd or more for greater effect)
–reasonnmap 192.168.1.1 –reasonDisplay the reason a port is in a particular state, same output as -vv
–opennmap 192.168.1.1 –openOnly show open (or possibly open) ports
–packet-tracenmap 192.168.1.1 -T4 –packet-traceShow all packets sent and received
–iflistnmap –iflistShows the host interfaces and routes
–resumenmap –resume results.fileResume a scan

Helpful Nmap Output examples

Scan for web servers and grep to show which IPs are running web servers:

nmap -p80 -sV -oG - --open 192.168.1.1/24 | grep open 

Generate a list of the IPs of live hosts:

nmap -iR 10 -n -oX out.xml | grep "Nmap" | cut -d " " -f5 > live-hosts.txt 

Append IP to the list of live hosts:

nmap -iR 10 -n -oX out2.xml | grep "Nmap" | cut -d " " -f5 >> live-hosts.txt 

Convert nmap xml files to html files:

nmap.xml -o nmap.html  

Compare output from nmap using the ndiff xsltproc

ndiff scanl.xml scan2.xml 

Reverse sorted list of how often ports turn up:

grep " open " results.nmap | sed -r 's/ +/ /g' | sort | uniq -c | sort -rn | less 

Miscellaneous Options

SwitchExampleDescription
-6nmap -6 2607:f0d0:1002:51::4Enable IPv6 scanning
-hnmap -hDisplay nmap help screen

Other Useful Nmap Commands

CommandDescription
nmap -iR 10 -PS22-25,80,113,1050,35000 -v -snDiscovery only on ports x, no port scan
nmap 192.168.1.1-1/24 -PR -sn -vvArp discovery only on local network, no port scan
nmap -iR 10 -sn -tracerouteTraceroute to random targets, no port scan
nmap 192.168.1.1-50 -sL –dns-server 192.168.1.1Query the Internal DNS for hosts, list targets only

More specific commands:

Scan a host for all TCP and UDP ports:

nmap -sS -sU -p- <ip_address>

Scan a network for vulnerable machines with open SMB ports:

nmap -p 139,445 --script smb-vuln* <ip_range>

Scan a range of hosts for open web application ports:

nmap -p 80,8080,443,8443 -sV --script=http-title <ip_range>

Scan for open DNS resolvers on a network:

nmap -p 53 --script=dns-recursion <ip_range>

Scan a network for SSL/TLS certificate information:

nmap --script ssl-cert -p 443 <ip_range>

Scan a range of hosts for open FTP ports:

nmap -p 21 --script=ftp-anon,ftp-proftpd-backdoor,ftp-vsftpd-backdoor <ip_range>

Scan a network for open SNMP ports:

nmap -p 161 --script=snmp* <ip_range>

Scan a range of hosts for open SMTP ports:

 nmap -p 25 --script=smtp-enum-users,smtp-open-relay <ip_range>

Scan a host for open SSH ports and extract version information:

    nmap -p 22 -sV --script=ssh2-enum-algos <ip_address>

Scan a network for open Oracle database ports:

    nmap -p 1521 --script=oracle-sid-brute,oracle-sid <ip_range>

Scan a range of hosts for open RDP (Remote Desktop Protocol) ports:

    nmap -p 3389 --script=rdp-enum-encryption,rdp-vuln-ms12-020 <ip_range>

Scan a network for open Telnet ports:

    nmap -p 23 --script=telnet-brute <ip_range>

Scan a host for open SNMP ports and extract system information:

    nmap -p 161 --script=snmp-info,snmp-interfaces <ip_address>

Scan a range of hosts for open DNS ports:

 nmap -p 53 --script=dns-zone-transfer,dns-nsid <ip_range>

Scan a host for open MySQL database ports and extract version information:

    nmap -p 3306 -sV --script=mysql-* <ip_address>

Scan a network for open SIP (Session Initiation Protocol) ports:

    nmap -p 5060 --script=sip-brute <ip_range>

Scan a range of hosts for open VNC (Virtual Network Computing) ports:

    nmap -p 5900 --script=vnc-info,vnc-brute <ip_range>