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 协议扫描的方式, 而不会使用你指定的方式.
常见问题
指令敲对了就没问题, 注意大小写
来源: http://www.bubuko.com/infodetail-3265665.html