Nmap网络安全审计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nmap网络安全审计相关的知识,希望对你有一定的参考价值。

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协议扫描的方式,而不会使用你指定的方式。

常见问题

指令敲对了就没问题,注意大小写

以上是关于Nmap网络安全审计的主要内容,如果未能解决你的问题,请参考以下文章

我应该使用 Nmap::Parser 还是 Nmap::Scanner 来审计网络?

Nmap网络安全审计

Nmap网络安全审计

Nmap脚本引擎NSE

Nmap基础入门

Nmap基础入门