一、主机发现
- -A: 全面扫描,扫描指定的IP或域名的所有端口
- -sP: ping扫描
- -PN: 无ping扫描,不使用默认的探测检查,而是对目录进行一个完整的端口扫描。此对扫描有防火墙 保护而封锁ping探针主机的时间非常有用;
- -PS:TCP SYN ping 扫描,该选项发送一个设置了SYN标志位的空TCP报文。 默认目的端口为80 (可以通过改变nmap.h) 文件中的DEFAULT_TCP_PROBE_PORT值进行配置,但不同的端口也可以作为选项指定。
- -PA:TCP ACK ping扫描, -PA选项使用和SYN探测相同的默认端口(80),也可以 用相同的格式指定目标端口列表。
- -PU:UDP PING;
- -PE:参数进行一个ICMP在指定的系统中输出ping;
- -PP:进行一个ICMP时间戳ping 扫描;
- -PM : 进行一个ICMP地址掩码ping扫描;
- -PO:进行一个IP协议ping
- -PR: ARP PING,当扫描整个网的时候自动使用,这种类型的探测比其它的ping方法更快
- -traceroute 参数可以用来追踪到指定主机的网络路径
- -n:禁止DNS反向解析
- -R:对目标IP地址实施一个逆向DNS解析
- -system-dns:使用主机系统的域名解析来替代它自己的内部方法
- -dns-servers:扫描手动指定查询的 DNS服务器
- -sS: TCP SYN扫描
- -sT: TCP connect扫描
- -sU: UDP扫描
- -sN;-sF;-sX:TCP Null,FIN,and Xmas扫描
- -sA: TCP ACK扫描
- -sW:TCP窗口扫描
- -sM: TCP Maimon扫描
- --scanflags:定制TCP扫描
- -sI:IDLE Scan
- -sO:IP协议扫描, IP 协议扫描可以让您确定目标机支持哪些IP协议 (TCP,ICMP,IGMP,等等)。
- -F:快速扫描
- -P: 只扫描指定的端口
- -sV: 版本探测
- -O:操作系统检测
- -sL:显示一个列表,并对指定的IP地址执行一个反向的 DNS查询
- 扫描目标列表
语法: nmap -iL [list.txt] --> list.txt为目标的ip地址
- 扫描随机目录 -iR 参数可以用来选择随机的互联网络主机来扫描
语法:nmap -iR [主机数量] -->例: nmap -iR 200000
nmap -iR 1000000 -sS -PS 80 -P 80 -oG nmap.txt
随机产和10 万个IP,对其80 Port进行扫描,并将结果输出nmap.txt文件保存
- exclude选项被用来从扫描中排除一些主机
语法: nmap 192.168.32.0/24 -exclude 192.168.32.1
- 时间和性能
--system-dns:使用系统域名解析器
--min-hostgroup:调整并行扫描组大小:nmap --min-hostgroup 30 192.168.1.0/24
--min-paralelism /--max-paralelism:调整探测报文的并行度
--host-timeout:放弃低速目标主机
--scan-delay; --max_scan-delay:调整探测报文的时间间隔
--scan-delay:用于躲避基于阀值的入侵检测系统(IDS/IPS)
nmap -P0 -n -sS --max_hostgroup 1 --max_retries 0 --max_parallelism 10 172.16.1.0/24
二、防火墙类扫描
- 防火墙响应的四种类型
1. open port:防火墙允许少数的端口打开
2. close port:由于防火墙 的缘故,大部分的端口被关闭
3. filtered:nmap不确定端口是否打开或是关闭
4. unfiltered:nmap能够防问这个端口,但不清楚这个端口打开的状态
- 防火墙/IDS躲避和哄骗
-f:报文分段,在扫描包括ping扫描使用 小的IP包分段。其思路是将TCP头分段在几个包中,使得包过滤器、 IDS以及其它工具的检测更加困难。 nmap -f -v 172.16.1.98
- --mtu:使用指定的MTU
- -D:使用诱饵隐蔽扫描,诱饵可用在初始的ping扫描(ICMP、SYN、ACK等)阶段或真正的端口扫描 阶段。诱饵也可以用于远程操作系统检测(-O)。在进行版 本检测或TCP连接扫描时,诱饵无效。nmap -D 172.16.1.41,172.16.1.199,ME -p 25,80,139,445 -Pn 172.16.1.98
- -S:源地址哄骗;
- -e:使用指定的接口;
- -source-port;-g:源哄骗
- --data-length:发送报文时,附加随机数据
- --randomize-hosts:对目标主机的顺序随机排列
- --spoof-mac:MAC地址哄骗
三、数据库渗透测试
- mysql-databases: MySQL列举数库库
nmap -p3306 --script mysql-databases --script-args mysqluser=root,mysqlpass 172.16.1.98
- mysql-variables: 列举Mysql变理
nmap -p3306 --script mysql-variables 172.16.1.98
- mysql-empty-password:检查MYSQL密码
nmap -p3306 --script=mysql-empty-password 172.16.1.98
- mysql-brute:检查MYSQL密码
nmap -p3306 --script=mysql-brute 172.16.1.98
- mysql-users.nse:列出所有mysql用户
nmap -p3306 --script=mysql-users.nse --script-args=mysqluser=root 172.16.1.98
- mysql-audit:审计Mysql安全配置
nmap -p3306 --script=mysql-audit 172.16.1.98
- nmap -p3306 --script=mysql-* 172.16.1.98扫描同一应用的所有脚本
- ms-sql-brute:审计mssql密码
- nmap -p1443 --script=ms-sql-brute 10.133.130.6
- ms-sql-empty-password:检查MSSQL空密码
nmap -p1443 --script=ms-sql-empty-password 10.133.130.6
- ms-sql-tables:读取MSSQL数据
- ms-sql-xp-cmdshell: MSSQL执行系统命令
nmap -p1443 --script=ms-sql-xp-cmdshell 10.133.130.6
四、渗透测试
- http-brute: 审计HTTP身份验证
nmap --script=http-brute -p80 172.16.1.98
- ftp-brute:审计FTP服务
nmap --script=ftp-brute -p21 172.16.1.98
- http-wordpress-brute:审计Wordpress程序
nmap --script=http-wordpress-brute
- http-joomla-brute:审计joomla服务
- smb-brute.nse:审计SMB服务
nmap --script=smb-brute.nse -sV 172.16.1.98
- vnc-brute:审计VNC服务器
nmap --script=vnc-brute -p5800 10.133.83.194
nmap -p5800 --script=realvnc-auth-bypass 10.133.83.194 检查vnc bypass
nmap -p5800 --script=vnc-auth 10.133.83.194 检查VNC认证方式
- smtp-brute:检测SMTP服务器
- stuxnet-detect:检测Stuxnet蠕虫
- snmp-netstat / snmp-processes / snmp-win32-services / snmp-brute: SMTP服务安全审计
- firewalk:探测防火墙火墙
namp --script=firewalk --traceroute 10.142.24.21
- vmauthd-brute: VMWare认证破解
nmap -p902 --script=vmauthd-brute 10.133.83.194
- smb-check-vulns.nse:系统漏洞扫描
nmap -p445 --script=smb-check-vulns.nse 172.16.1.41
- http-stored-xss.nse:扫描Web漏洞
nmap -p80 --script=http-stored-xss.nse 10.133.83.194
- http-headers: http 头部检查
nmap -p80 --script=http-headers 10.133.83.194
五、脚本扫描案例
- nmap --scritp=auth 172.16.1.98 负责处理证书的脚本,检测部分应用弱口令
- nmap --script=brute 172.16.1.98 提供暴力破解的方式,可能数据库、SNMP、SMB等简单密码的暴力破解
- nmap --script=default 172,.16.1.98 或 nmap -sC 172.16.1.98 默认的脚本扫描,主要是收集各种应用的信息,收集到后,可再针对其进行攻击
- nmap --script=vuln 172.16.1.41 检查是否存在常见的漏洞
- nmap -n --p445 --script=broadcast 172.16.1.98 在局域网检查服务开启状况
六、脚本扫描分类
- auth: 负责处理鉴权证书(绕开鉴权)的脚本
- broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
- brute: 提供暴力破解方式,针对常见的应用如http/snmp等
- default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
- discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等
- dos: 用于进行拒绝服务攻击
- exploit: 利用已知的漏洞入侵系统
- external: 利用第三方的数据库或资源,例如进行whois解析
- fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
- malware: 探测目标机是否感染了病毒、开启了后门等信息
- safe: 此类与intrusive相反,属于安全性脚本
- version: 负责增强服务与版本扫描(Version Detection)功能的脚本
- vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067
七、案例
- 空闲扫描寻找可能的IDLE主机,以下为TCP序列测试(详细、操作系统检测、无ping、无域名解析) nmap -v -O -Pn -n 172.16.1.41 (TCP Sequence Prediction: Difficulty=263(Good Luck!))
- 利用Idle的主机扫描,预防IDS主机发现:
nmap -p 25,80,139,445 -Pn -sI 172.16.1.41 172.16.1.98 (172.16.1.41为idle主机,172.16.1.98为目标主机
- 使用nmap-script参数smb-vuln-ms17-010.nse脚本检测ms17-010漏洞
nmap -p445 --script smb-vuln-ms17-010.nse 192.168.102.2
八、过滤nmap扫描方法如下:
#iptables -F
#iptables -A INPUT -p tcp –tcp-flags ALL FIN,URG,PSH -j Drop
#iptables -A INPUT -p tcp –tcp-flags SYN,RST SYN,RST -j Drop
#iptables -A INPUT -p tcp –tcp-flags SYN,FIN SYN,FIN -j Drop
#iptables -A INPUT -p tcp –tcp-flags SyN SYN –dport 80 -j Drop