目标选择
单个扫描:nmap ip
扫描主机:nmap www.XXXX.com
扫描一系列IP:nmap 192.168.1.1-20
扫描子网:nmap 192.168.1.1/20
从文本文件获得扫描目标:nmap -iL list-of-ips.txt
无ping扫描:常用于防火墙禁止ping的情况:nmap -P0 ip
端口选择
扫描单个端口:nmap -p 端口 ip
扫描一系列端口:nmap -p 1-100 192.168.1.1
扫描100个最常见的端口(快速):nmap -F ip
扫描所有65535端口:nmap -p- ip
扫描指定端口:nmap -p 80,22,3306 ip
操作系统和服务检测
检测操作系统和服务:nmap -A ip
标准服务检测:nmap -sV ip
激进的服务检测:nmap -sV --version-intensity 5 ip
轻量Banner抓取检测:nmap -sV --version-intensity 0 ip
nmap输出格式
将默认输出保存到文件:nmap -oN outputfile.txt ip
将结果保存为XML:nmap -oX outputfile.xml ip
为方便grep来保存格式:nmap -oG outputfile.txt ip
保存所有格式:nmap -oA outputfile ip
用NSE脚本深入挖掘
使用默认安全脚本扫描:nmap -sV -sC ip
获取脚本的帮助:nmap --script-help=ssl-heartbleed
使用特定的NSE脚本进行扫描:nmap -sV -p 443 –script=ssl-heartbleed.nse ip
用一组脚本进行扫描:nmap -sV --script=smb* ip
使用全部NSE脚本进行扫描:nmap -sV -p- --script=all ip
HTTP服务信息
从HTTP服务收集页面标题:nmap --script=http-title 192.168.1.0/24
获取Web服务的HTTP头:nmap --script=http-headers 192.168.1.0/24
从已知路径查找网络应用程序:nmap --script=http-enum 192.168.1.0/24
检测SSL漏洞问题的主机
Heartbleed测试:nmap -sV -p 443 --script=ssl-heartbleed 192.168.1.0/24
设备扫描
获取ip:host 网址
host 域名
dig 域名
是否存活:ping ip
nmap -sP --script discovery ip
扫描在线主机:nmap -sP 192.168.1.*
探测IP协议:nmap -PO ip
获取系统概况:(暴力形式,很容易被发现)nmap -A ip
探测是否有【】防火墙:nmap -PN ip
探测防火墙规则:nmap -sA ip
TCP Window扫描:nmap -sw ip
禁止反向域名解析:nmap -n -sL 192.168.1.1/24
FIN扫描:(FIN扫描方式用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态)nmap -sF ip
TCP扫描:nmap -sT -p 1-65535 -Pn ip
nmap -sT -p 1-65535 -Pn 192.168.1.1-254
nmap -sL 192.168.1.0/24
ARP Ping扫描:nmap -PR ip
SYN扫描:nmap -sS -p- Pn ip
TCP SYN Ping扫描:nmap -PS -v www.xxx.com
UDP扫描:(UDP扫描费时,所以去掉-p-,默认扫描)nmap -sU ip
Xmas扫描:nmap -sX -p1-65535 -Pn ip
Null扫描:nmap -sN -p 1-65535 -Pn ip
扫描所选端口 - 忽略发现:nmap -Pn -F ip
绕开鉴权:nmap --script=auth 192.168.56.*
探测操作系统:nmap -O ip
探测软件版本:nmap -V ip
nmap -sTV -p- -Pn ip
设置扫描强度强度在0~9之间,默认强度为7:nmap -V ip
nmap -sTV -p- -Pn ip
轻量级扫描:nmap -sV –version-light www.xxx.com
重量级扫描:nmap -sV –version-all www.xxx.com
版本探测:nmap -sV -A www.xxx.com
对指定的目标进行系统探测:Nmap -osscan-limit www.xxx.com
推测系统识别:Nmap -osscan-guess/–fuzzy www.xxx.com
获取详细版本信息:nmap -sV –version-trace www.xxx.com
全端口版本探测:nmap -allports -A www.xxx.com
RPC扫描:Nmap -sR www.xxx.com
调整并行扫描组的大小(默认为5-1024)最小的组:nmap –min-hostgroup 30 172.20.62.1/24
调整并行扫描组的大小(默认为5-1024)最大的组:nmap –max-hostgroup 50 172.20.62.1/24
探查局域网内更多服务:nmap -n --script=broadcast ip
碎片化:nmap -f ip
nmap --mtu 16 ip
诱饵:nmap –D RND:10 TARGET
nmap –D decoy1,decoy2,decoy3 target
MAC地址欺骗:nmap -sT -PN –spoof-mac aa:bb:cc:dd:ee:ff target
nmap -spoof-mac Scisio ip
-spoof-mac 可以根据厂商名字伪造不同mac地址
发送间隔时间控制:nmap -scan_delay 5ms ip
发送错误校验:nmap --badsum target
Http方法:nmap -p80,443 --script http-methods scanme.nmap.org
发现文件:nmap -sV --script http-enum ip
判断是否使用默认端口:nmap -sV -script=smtp-strangeport ip
利用第三方数据库:nmap --script external ip
获得PHP版本信息:nmap -sV -script=http-php-version ip
如果想对一个基于WordPress的web站点进行渗透测试,可以使用这个脚本:
nmap -sV -script=http-php-version ip
1.http-wordpress-plugins
2.http-wordpress-enum
3.http-wordpress-brute
用户发现IP地址黑名单:nmap -sn ip --script dns-blacklist
简单暴力猜解:nmap --script=brute 192.168.56.*
检查是否存在漏洞:nmap --script=vuln 192.168.56.*
路由跟踪:nmap --traceroute -sP ip
SCTP INIT Ping扫描:nmap -PY -v ip
按VNC扫描
检查vnc bypass:nmap --script=realvnc-auth-bypass ip
检查vnc认证方式:nmap --script=vnc-auth ip
获取vnc信息:nmap --script=vnc-info ip
按SMB扫描
smb破解:nmap --script=smb-brute.nse ip
smb字典破解:nmap --script=smb-brute.nse --script-args=userdb=/var/passwd,passdb=/var/passwd ip
smb已知几个严重漏洞:nmap --script=smb-check-vulns.nse --script-args=unsafe=1 ip
查看共享目录:nmap -p 445 --script smb-ls --script-args ‘share=e$,path=\,smbuser=test,smbpass=test’ ip
查询主机一些敏感信息:nmap -p 445 -n –script=smb-psexec --script-args= smbuser=test,smbpass=test ip
查看会话:nmap -n -p445 --script=smb-enum-sessions.nse --script-args=smbuser=test,smbpass=test ip
系统信息:nmap -n -p445 --script=smb-os-discovery.nse --script-args=smbuser=test,smbpass=test ip
按Mssql扫描
猜解mssql用户名和密码:
nmap -p1433 --script=ms-sql-brute --script-args=userdb=/var/passwd,passdb=/var/passwd ip
xp_cmdshell 执行命令:
nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="net user" ip
dumphash值:
nmap -p 1433 --script ms-sql-dump-hashes.nse --script-args mssql.username=sa,mssql.password=sa ip
按Mysql扫描
扫描root空口令:nmap -p3306 --script=mysql-empty-password.nse ip
列出所有mysql用户:nmap -p3306 --script=mysql-users.nse --script-args=mysqluser=root ip
支持同一应用的所有脚本扫描:nmap --script=mysql-* ip
按Oracle扫描
oracle sid扫描:nmap --script=oracle-sid-brute -p 1521-1560 ip
oracle弱口令破解:
nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL,userdb=/var/passwd,passdb=/var/passwd ip
信息收集扫描
ip信息搜集:nmap –script ip-geolocation-* www.xxx.com
获得IP地址的信息:nmap --script=asn-query,whois,ip-geolocation-maxmind 192.168.1.0/24
whois查询:nmap –script whois www.xxx.com
ip反查:nmap -sn –script hostmap-ip2hosts www.xxx.com
信息搜集:nmap –script dns-brute www.xxx.com
列举dns服务器的主机名:nmap –script dns-brute –script-args dns-brute.domain=xxx.com
检索系统信息:nmap -p 445 ip –script membase-http-info
后台打印机服务漏洞:nmap –script smb-security-mode.nse -p 445 ip
smb漏洞扫描:nmap –script smb-check-vulns.nse -p 445 ip//未验证命令
通过snmp列举windows服务:nmap -sU -p 161 –script=snmp-win32-services ip
通过snmp列举windows账户:nmap -sU -p 161 –script=snmp-win32-users ip
http信息搜集,对http版本进行探测:nmap -sV -p 80 www.xxx.com
http头信息探测:nmap -p 80 –script=http-headers www.xxx.com
http目录结构探测:nmap -p 80 –script=http-sitemap-generator www.xxx.com
枚举ssl密钥ssl-enum-ciphers,SSL(Secure Sockets Layer,安全套接层,TLS(Transport Layer Security,传输层安全):nmap -p 443 –script=ssl-enum-ciphers www.xxx.com
服务器支持的密钥算法SSH服务密钥信息探测:
nmap -p 22 –script ssh-hostkey –script-args ssh_hostkey=full 127.0.0.1
其他脚本
发现网关:Nmap --script=broadcast-netbios-master-browser ip
telnet破解:nmap -sV --script=telnet-brute ip
dos攻击:nmap --script http-slowloris --max-parallelism 400 ip
破解rsync:nmap -p 873 --script rsync-brute --script-args 'rsync-brute.module=www' ip
informix数据库破解:nmap --script informix-brute -p 9088 ip
pgsql破解:nmap -p 5432 --script pgsql-brute ip
snmp破解:nmap -sU --script snmp-brute ip
检查http方法:nmap --script=http-methods.nse ip
查看本地路由与接口:nmap -iflist
指定网口与ip地址:nmap -e eth0 ip
产生随机ip地址:
nmap -iR 1200000 -sL -n | grep “not scanned” | awk ‘{print $2}’ | sort -n | uniq >! tp; head -25000000 tp >! tcp-allports-1M-IPs; rm tp
扫描思科路由器:思科路由器会在上述端口中运行了常见的服务。列举出上述端口开放的主机,可以定位到路由器设备可能的IP地址及端口状态。
nmap -p1-25,80,512-515,2001,4001,6001,9001 10.20.0.1/16
扫描路由器TFTP:大多数的路由器都支持TFTP协议(简单文件传输协议),该协议常用于备份和恢复路由器的配置文件,运行在UDP 69端口上。使用上述命令可以探测出路由器是否开放TFTP。
nmap –sU –p69 –nvv target
扫描路由器操作系统:与通用PC扫描方式类似,使用-O选项扫描路由器的操作系统。-F用于快速扫描最可能开放的100个端口,并根据端口扫描结果进一步做OS的指纹分析。
nmap -O -F -n 192.168.1.1
显示网络上共有多少台 Linux 及 Win 设备:
nmap -F -O 192.168.1.1-255 | grep "Running: " > /tmp/os; echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) devices"
技巧
发送以太网数据包:nmap --send-eth ip
网络层发送:nmap --send-ip ip
假定拥有所有权:nmap --privileged ip
设置调试级别:nmap -d 1 ip
级别范围1-9,9为最高级,产生的数据最多,跟踪发送接受的报文:(-p指定端口范围,减少产生的报文):nmap --packet-trace -p 20-30 ip
列举接口和路由:(多用于调试路由):nmap -iflist ip
指定网络接口:指定从en0发送数据:nmap -e en0 ip
探测防火墙:nmap --script=firewalk --traceroute ip
端口状态
开放:Open
关闭:Closed
可能被过滤,可能网络阻塞:Filtered
可以访问,但未知端口处于开放还是关闭状态:Unfiltered
能确定端口事开放被过滤:Open|Filtered
不能确定端口事关闭还说被过滤:Closed|Filtered