Nmap网络安全审计
活跃主机发现技术
这里涉及到的网络协议就不细说了,主要是将Nmap的使用方法
基于ARP协议的活跃主机发现技术
当目标主机与我们处于同一网段的时候,使用ARP协议扫描就是最好的选择。不仅扫描速度快,扫描结果也更为准确。因为没有任何安全措施会阻止正常的ARP请求。
使用Nmap的 -PR 参数 就可以实现ARP协议的扫描
nmap -sn -PR 192.168.0.103
这里我们通过扫描结果可以看出,host is up 就是说这台设备是活跃主机,还给出了该设备的mac地址
基于ICMP协议的活跃主机发现技术
由于ping工具的滥用,因此很多用于防护主机的防火墙都隔绝ICMP数据包通过,这样就造成了我们本来是可以跟这台主机通信的,但是ping对方却无响应。
使用Nmap的 -PE 参数就可以实现ICMP协议的主机发现。其实这个就是跟ping一样。
nmap -sn -PE 192.168.0.103
扫描结果没有太大的变化,因为我们现在主要是探测活跃主机
通过ICMP时间戳请求和应答进行主机发现
刚才也说了,ping方式已经被大多数的网络所禁止,所以我们可以利用时间戳
使用Nmap的 -PP 参数就可以实现ICMP的时间戳主机发现
nmap -sn -PP 192.168.126.139
这里为了结果更加清晰,我用虚拟机192.168.126.139开启防火墙,然后通物理机去ping192.168.126.139,我们发现是ping不通的(图片上第一次ping通是虚拟机没开防火墙),这时候我们再用nmap的 -PP参数来进行扫描,确实是发现了活跃主机
ICMP协议中虽然包含了很多种扫描方法,但是这些基础ICMP协议的扫描方式也往往是安全设备的防御重点,因此经常得不到准确的结果。
基于TCP协议的主机发现技术
在Nmap中常用的TCP协议扫描方式有两种,分别是TCP SYN扫描和TCP ACK扫描,这两种扫描方式都是通过TCP的三次握手实现的。
1.TCP SYN扫描
使用Nmap中的 -PS 参数来实现TCP SYN扫描,,在 -PS后也可以跟上端口号,默认是80端口
nmap -sn -PS 192.168.0.103
2.TCP ACK扫描
使用Nmap中的 -PA 参数来实现TCP ACK扫描,这个同样是默认80端口
nmap -sn -PA 192.168.126.139
基于UDP协议的活跃主机发现技术
使用Nmap的 -PU 参数实现UDP协议的主机发现
nmap -sn -PU 192.168.126.139
基于SCTP协议的活跃主机发现技术
这里简单介绍下SCTP吧,SCTP与TCP同属于传输层协议,传输层的协议较少,一般我们都知道的UDP TCP,其实SCTP协议与TCP协议完成的任务是相同的。但是两者之间有很大的不同。
首先,TCP协议一般用于单地址的连接,而SCTP可以用于多地址连接。
其次,TCP协议是基于字节流的,SCTP是基于消息流的。TCP只支持一个流,SCTP可支持多个流。
最后,TCP连接的建立是通过三次握手实现的,SCTP是通过一种4次握手的机制实现的。
在SCTP中,客户端使用一个INIT报文发起一个连接,服务器端使用一个INIT-ACK应答,其中包括了cookie。然后客户端使用一个COOKIE-ECHO报文进行响应,其中包含了服务器端所发送的cookie。服务器端要为这个连接分配资源,并通过客户端发送一个COOKIE-ACK报文对齐进行应答。
使用Nmap的 -PY 参数可以向目标主机发送一个SCTP INIT数据包
nmap -sn -PY 192.168.126.139
这一测试的扫描结果可能会有误,因为有的主机可能不支持SCTP协议,仅供参考
使用IP协议进行主机地址发现
使用Nmap的 -PO 参数来指定要使用的协议编号,默认使用IP扫描方式(ICMP、IGMP、IP-in-IP),-PO可以指定所要使用的协议编号
(IP协议编号,不是TCP编号)
(ICMP为1,IGMP为2,TCP为6,UDP 为7,GRE为47,ESP为50)
nmap -sn -PO 192.168.126.139
另外,这种情况发出的数据包内容为空,很容易被检测出来,我们可以使用 --date-length 参数来发送随机数据的数据包
nmap --data-length 25 192.168.126.139
Nmap活跃主机发现中与DNS协议相关的选项
Nmap在对目标进行扫描的时候,如果主机是一台对外提供Web服务的服务器,那么除了有IP地址之外,还有域名。如果有域名的话,Nmap会向域名服务器提出请求,显示该IP对应的域名。在进行大量扫描的时候,有的主机可能处于活跃状态,有的处于非活跃状态,直接进行扫描的话,Nmap只会对处于活跃的主机进行DNS转换,非活跃的不予处理。
如果希望将所有的IP地址无论是否处于活跃的主机对应的域名都列出来的话,可以使用 -R参数
nmap -R ***.***.***.*
如果强制将每个IP地址转换为域名会耗费大量时间,有时候可能已经知道了主机的域名,无须进行转换,这时候就可以使用Nmap中的 -n 参数来取消对域名的转换。(这里就不贴图了,知道意思就好,不要随意对网站进行扫描)
Nmap -n ***.***.**.*
如果想使用指定的DNS服务器进行查询目标,可以使用 --dns-servers参数
nmap --dns-servers 114.114.114.114
如果想用指定DNS服务器来完成扫描如下:
nmap --packet-trace -R --dns-servers 114.114.114.114
主机发现技术的分析
Nmap中提供 --packet-trace 选项,通过它可以观察Nmap发出了哪些数据包,收到了哪些数据包
nmap -sn -PS --packet-trace 192.168.0.103
Nmap在进行主机发现的时候,无论你指定了哪种方式,Nmap都会先判断目标主机是否与自己在同一子网中,如果在直接用ARP协议扫描的方式,而不会使用你指定的方式。
常见问题
指令敲对了就没问题,注意大小写