Nmap是一款开源的,网络探测和安全审核的工具被设计用来快速扫描大型网络,包括主机探测与发现,端口开放情况操作系统与应用服务指纹识别WAF识别以及常见安全漏洞.他的图形化界面是Zenmap,分布式框架是DNmap
0xx1 Nmap特点
- 探测网络上的主机(如TCP,ICMP请求,开放特别端口的主机)
- 端口扫描(探测目标主机开放的端口)
- 版本检测(探测目标主机的网络服务,判断其服务名称和版本号)
- 系统检测(探测目标主机的操作系统和网络设备的硬件特性)
- 支持探测脚本的编写(使用Nmap的脚本引擎NSE和Lua编程语言)
0xx2 相关参数含义及用法
- 设置扫描目标相关
- -iL #从文件中导入目标主机或网段
- -iR #随机选择目标主机
- --exclude #后面跟的主机或网段不在扫描范围
- --exclude #导入文件的主机或网段不在扫描范围
- 与主机方法相关
- -sL #列表扫描,只列举指定目标的ip不进行主机发现
- -sn #只进行主机发现,不进行端口扫描
- -Pn #将所有指定的主机是做开启,跳过主机发现的过程
- -PS/PA/PU/PY #使用TCP SYN/ACK或SCTP INIT/ECHO方式发现
- -PE/PP/PM #使用ICMP echo,timestamp,netmask请求包发现主机
- -PO #使用IP协议包嗅探对方主机是否开启
- -n/-R #-n 表示不进行DNS解析,-R表示总是进行DNS解析
- --dns-servers<serv1[,serv2],…> #指定DNS服务器
- --traceroute #追踪每个路由节点
- 常见端口扫描方法
- -sS/sT/sA/sW/sM #指定TCP SYN/Connect()/ACK/Window/Maimon scans的方式对目标主机扫描
- -sU #指定使用UDP扫描方式确定目标UDP端口状况
- -sN/sF/sX #指定使用TCP NULL/FIN/Xmas scans秘密扫描的方式扫描TCP端口
- --scanflags<flags> #定制TCP包的flags
- -sI<zombie host[:probeport]> #指定使用Idle sacn的方式扫描主机(前提是找到合适的zombie host)
- -sY/sZ #使用SCTP INIT/COOKIE-ECHO扫描SCTP协议端口开放情况
- -sO #使用IP protocol扫描确定目标支持的协议类型
- -b<FTP relay host> #使用FTP bounce scan扫描方式
- 端口参数与扫描设置相关
- -p #扫描指定端口
- -F #快速扫描(TOP 100端口)
- -r #不进行端口随机打乱的操作(如无该参数,端口扫描以随机顺序进行,不易被防火墙检测)
- --top-ports number #扫描开放概率最高的number个端口(默认1000)
- --port-ratio <ratio> #扫描指定频率以上的端口(范围0-1)
- 版本探测相关参数
- -sV #指定Nmap进行版本侦测
- --version-intensity<level> #指定版本侦测的强度(默认为7)
- --version-light #指定使用轻量级侦测方式(intensity 2)
- --version-all #指定使用重量级侦测方式(intensity 9)
- --version-trace #显示出详细的版本侦测过程信息
0xx3 常用方法
- -O #操作系统指纹识别
- -A #全面扫描
- -sP #Ping扫描 --- 只进行ping扫描在线主机
- -P0 #无Ping扫描 --- 用于防火墙禁止Ping的情况下
- -PR #ARP Ping 扫描 --- 局域网扫描
- -T #时序选项 --- (0-5)选择扫描速度默认T3
- -sS #TCP SYN 扫描 --- 半开放扫描,快速区分端口开放状态
- -sT #TCP连接扫描 --- 最基础,最稳定的扫描,略逊于-sS
- -sF #探测防火墙状态
- open #开放的
- filtered #被过滤的
- closed #关闭的
- unfiltered #未被过滤的
- open/filtered #开放的或被过滤的
- closed/filtered #关闭的或被过滤的
0xx4 常用脚本
- -sC/--script=default #使用默认脚本扫描
- --script=<Lua script> #使用某个脚本扫描
- --script-args=key1=value1,key2=value2… #传递脚本里的参数key是参数名,value是对应值
- --script-args-file=filename #使用文件为脚本提供参数
- --script-trace #显示脚本执行过程中,发送与接收的数据
- --script-updatedb #自动扫描script目录中拓展脚本,进行数据库更新
- --script-help #输出脚本对应的使用参数以及详细的介绍信息