Nmap使用
简介
Nmap是一个免费开放的网络扫描和嗅探工具包,也叫网络映射器(Network Mapper)。Nmap工具可以用来扫描电脑上开放的端口,确定哪些服务运行在哪些端口,并且推断出计算机运行的操作系统。通过使用该工具,可以评估网络系统安全。所以,Nmap是大部分用户所必要的工具之一。
-sn 断目标是否为活跃主机,不显示端口信息, 减少扫描时间
例如对 testfire.net 进行扫描
nmap testfire.net
扫描完成后,Nmap默认显示如下信息。
加了-sn参数后
大大减少扫描时间
一、通过ARP协议进行主机发现
1、-PR——向目标IP发送ARP包
优点:准确度高,任何处于同一网段的设备都无法防御(除非不遵守ARP协议,那也无法通信了)
nmap -PR testfire.net
二、通过ICMP协议进行主机发现
1、-PE——向目标IP发送ICMP echo请求的数据包
2、 -PP——向目标IP发送ICMP时间戳请求
3、-PM——通过ICMP地址掩码请求和应答进行主机发现
三、通过TCP协议进行主机发现
1、TCP SYN扫描
命令语法:nmap -PS [端口号,端口号,…端口号] [Target IP ]
注:TCP扫描是Nmap扫描技术中最强大的技术之一,很多服务器会屏蔽掉ICMP echo 请求数据包,但是任何服务器都会响应SYN数据包!例:一个Web服务器的安全机制不可能拒绝发往80端口的SYN数据包。
2、TCP ACK扫描
命令语法:nmap -PA [端口号,端口号,…端口号] [Target IP ]
注:这种类型的扫描很少成功,容易被安全机制过滤掉,从而给出非活跃主机信息
四、通过UDP协议进行主机发现
由于UDP协议是面向非连接的,使得UDP扫描可靠性不高。
当一个UDP端口接收到一个UDP数据包时,如果是关闭的,就会发回一个ICMP端口不可达数据包;如果是开放的,就会忽略这个数据包,将之丢弃不返回任何信息。
缺点:扫描真伪难辨,因为当发出一个UDP数据包而没有收到任何应答时,可能端口是开放的,也可能是传输过程中被丢弃。
命令语法:nmap -PU [端口号,端口号,…端口号] [Target IP ]
默认扫描80端口,所以不返回信息,导致nmap扫描结果为非活跃主机(Host seems down)
可指定不常用端口或值较大的端口进行扫描,如下指定9527端口,nmap扫描结果为 Host is up。
五、通过SCTP协议进行主机发现
在SCTP中,客户端使用一个INIT报文发起连接,服务端使用一个INIT-ACK报文进行应答,包括cookie。客户端使用一个cookie-echo报文进行响应,其中包含了服务器所发送的cookie。服务器要为这个连接分配资源,并通过向客户端发送一个COOKIE-ACK报文对其进行响应。
-PY——向目标主机发送一个SCTP INIT数据包
扫描结果为非活跃主机,显然扫描结果不正确,主要是目标主机不支持SCTP协议,使用此协议的主机并不多,记住有这种方法即可
六、Nmap中端口状态的定义
- open:表示该端口有应用程序接收TCP或UDP报文
- closed:端口已被关闭
- filtered:目标主机已经把数据包过滤,导致nmap无法确定端口是否开放。这些设备可能是路由器、防火墙、安全软件。
- unfiltered:表明端口是可以访问的,nmap无法判断是否开放。通常进行ACK扫描才会出现此状态。
- open | filtered:无法确定端口是开放是被过滤了
- closed | filtered:无法确定端口是关闭还是被过滤了,使用idle扫描时才会出现的状态
七、端口扫描
1、SYN扫描——最流行的一种扫描方式
优点:
- 扫描速度快,一秒钟可以扫描上千个端口
- 不容易被网络中的安全设备发现
扫描原理
首先Nmap向目标主机发送请求连接的SYN数据包,目标主机接收到SYN数据包后会返回一个SYN/ACK应答,Nmap收到SYN/ACK后发送RST包请求断开连接,而不是ACK进行应答。所以没有完成三次握手,无法建立连接,不会被记录到系统日志中,因此不会在目标主机留下扫描痕迹。
nmap -sS [ target Ip]
2、Connect扫描
nmap -sT [ target ip ]
与SYN扫描类似,只是完成了TCP的三次握手。
3、UDP扫描
nmap -sU [ target ip ]
4、TCP FIN 扫描
向目标主机发送FIN数据包,对于所有关闭的端口,目标系统返回RST标志
nmap -sF [ target ip ]
八、指定扫描的端口
1、扫描常见的100个端口
nmap -F [ target ip ]
2、指定某个端口
nmap -p [ target ip ]
3、使用名字指定扫描端口
nmap -p [port name] [target ip]
4、使用协议指定扫描端口
nmap -sU -sT -p U:[UDP port],T:[TCP port] [target ip]
对 testfire.net 的25端口进行UDP扫描,80端口进行TCP扫描
5、扫描所有端口
nmap -p "*" [target ip]
【这个扫描方法消耗很大资源,连着WiFi扫的,直接断网,所以自己脑补扫描截图, 慎用】
6、扫描常用端口
nmap --top-ports [number] [target]
此博客仅是本人学习Nmap的笔记,大佬勿喷!!!
推荐书籍《诸神之眼——Nmap网络安全审计技术揭秘》
欢迎交流WX:YX_NiMing