扫描方式
-Pn/-P0:扫描前不用ping默认情况下,所有目标端口都可以达到测试目标
-sT:TCP Connect扫描,完整TCP三次握手,检测到该类型的扫描,并在目标日志中记录大量的连接请求和错误信息
-sS:TCP SYN扫描,只发送SYN包,简称半开扫描。用户发送机器SYN如果对方返回目标机器,请求返回目标机器SYN|ACK包表示目标端口目前正在监控;如果返回;RST包表示目标端口未监控;如果用户机器收到后续服务;SYN|ACK返回包将由用户机器发送RST与目标机器的连接,以及-sT比较,-sS目标机器只会留下很少的日志记录
-sA:ACK扫描,用户发送机器ACK包装给目标机器,如果目标机器返回RST如果包小于等于64,则表示目标端口开放;相反,端口关闭
-sN:NULL扫描的原理是用户将未设置任何标志位的数据包发送给目标端口FRC 793要求正常通信至少设置一个标志位。如果目标机器返回RST包表示目标端口关闭;如果目标机器没有响应,则表示目标端口开放(Windows不遵从RFC 因此,可以探测操作系统版本)
-sF:FIN扫描,用户发送机器FIN如果目标机器返回到目标机器,则包裹给目标机器RST如果目标机器没有响应,则表示目标端口是开放的(仅适用于)Linux,Windows只会返回RST因此,可以探测操作系统版本)
-sX:Xmas-Tree用户机器发送带扫描URG、PSH、FIN标志位的TCP如果目标机器没有响应,则表示目标端口是开放的;如果目标机器返回RST包表示目标端口关闭(不适用于)windows)
-sU:UDP扫描,使用者机器向目标端口发送一个0字节的UDP如果收到端口无法到达的包,ICMP包,说明端口关闭;否则,说明端口是开放的(不适)windows)
指定主机
-
单个主机
直接指定一个IP,如:
nmap 192.168.1.2 -
多个主机
-iL inputFileName:读取文件nmap 192.168.1.0/24:指定IP网段扫描nmap 192.168.1.1 192.168.1.2:扫描多个IP -
排除主机
--exclude=host1,host2:排除指定的主机--excludefile=excludeFileName:排除文件中读取的主机
指定端口
-
-p port1,port2,port3:指定几个单独的端口 -
-p port1-port2:指定范围内的端口 -
不加
-p,默认指定1000个常见端口
探索服务版本
-sV:探测协议
探测操作系统
-O:探测操作系统
扫描速度
-T number:number对于0到5中的整数,扫描速度越快
穿墙
-
-S 源IP:伪造源IP -
-e <eth0>:指定特定的网卡接口 -
-g port:扫描给定的源端口
输出格式
-
-oN:正常输出 -
-oX:XML格式输出 -
-v:输出详情,v输出内容越详细,如:-vv -vvv -
-d:debug级别,d输出越多,输出越多 -
--open:只看开放的端口
端口状态
open
端口是开放的,通常是攻击的焦点
closed
端口关闭,端口上没有应用程序监控
filtered
由于数据包被安全设备过滤或阻止,端口处于过滤状态。Nmap无法判断端口是否开放
unfiltered
端口未过滤,Nmap通常可以访问端口,但无法判断它是否开放。ACK这种状态可以通过其他扫描产生,比如扫描SYN扫描、FIN扫描辅助判断端口是否开放
open|filtered
Nmap无法判断端口是开放还是过滤。开放端口的不响应就是一个例子。不响应可能意味着报纸过滤器丢弃了检测报纸或其引起的任何响应。Nmap无法确定端口是开放还是过滤,UDP,IP协议, FIN,Null,和Xmas扫描可能会将端口归类为此类
closed|filtered
Nmap无法判断端口状态是关闭还是过滤,通常发生在IPID Idle扫描
摘自Nmap详解 (bbsmax.com)