Nmap抓包分析与绕过Windows防火墙

前言
在打靶场的过程中使用Nmap时发现点小问题,借此机会详细分析下情况,于是有了这篇文章 。
本文包含以下内容:

  1. 1. Nmap抓包分析
  2. 2. 内网下绕过windows防火墙扫描存活主机
这里主要是针对Nmap进行讨论,实战中当然哪个快用哪个 。不过万变不离其宗,哪怕稍微了解下其原理都受益无穷 。
防火墙
这里的防火墙值得是Windows server自带的防火墙,主要绕过其两个防御规则:
1.禁止ICMP回显
Nmap抓包分析与绕过Windows防火墙

文章插图
2.隐藏模式
具体见 Stealth Mode in Windows Firewall with Advanced Security,大意为:不会使用ICMP不可达响应UDP查询,不使用RST响应TCP查询 。默认开启 。
https://shamsher-khan-404.medium.com/understanding-nmap-scan-with-wireshark-5144d68059f7
-sn :禁用端口扫描
-P* 用于选择不同的PING方法,用于存活扫描
Nmap抓包分析 拓扑图
Nmap抓包分析与绕过Windows防火墙

文章插图
关闭防火墙便于查看数据包
主机发现(Ping) -PS (TCP SYN)
TCP SYN Ping:发送单个TCP SYN包到指定端口检测主机是否存活,默认80端口 。该扫描就是经典的半开放扫描 。
请求局域网主机135端口(开启)
nmap -sn -PS135 172.16.1.128-vvv -n --disable-arp-ping
#-n 禁用DNS解析
注意nmap扫局域网存活主机都会预先进行arp扫描,在这里禁用了端口扫描,意味着nmap只会进行存活扫描,当nmap进行arp扫描后发现主机存活就不会进行后续操作,wireshark也就抓不到包,所以使用 --disable-arp-ping 禁用arp扫描 。

Nmap抓包分析与绕过Windows防火墙

文章插图
image image
Nmap抓包分析与绕过Windows防火墙

文章插图
image
请求局域网主机666端口(关闭)
nmap -sn -PS666 172.16.1.128-vvv -n --disable-arp-ping
Nmap抓包分析与绕过Windows防火墙

文章插图
image image
Nmap抓包分析与绕过Windows防火墙

文章插图
image
请求远程主机135端口(开启):
还是这里会发现,和扫局域网比起来多了很多包,为什么和扫局域网情况不一样?
还是fofa随便找个开启135端口的IP:
image
Nmap抓包分析与绕过Windows防火墙

文章插图
image
这里会发现,和扫局域网比起来多了很多包 。
image
请求远程主机6666端口(关闭):
image
奇怪的是,明明远程主机返回了RST/ACK包,但nmap没有接收到 。
image
为什么会有这样的差别?翻了翻nmap官方文档,其中有这样一句话:
The RST packet is sent by the kernel of the machine running Nmap in response to the unexpected SYN/ACK, not by Nmap itself
RST报文是运行Nmap的机器的内核为响应意外的SYN/ACK而发送的,而不是Nmap本身 。
突然想到,我的kali是放在vmware,以nat形式接入网络,这样偶尔会出现点小问题 。
于是我在windows上装了个nmap再进行测试:
Nmap抓包分析与绕过Windows防火墙

文章插图
image
再看下抓包
image
Nmap抓包分析与绕过Windows防火墙

文章插图
image
发现这里没发RST包
image
关掉防火墙再试,还一下发俩RST……
image
接下来将vmware网络模式换为桥接,发现正常了 。说明是NAT网络的问题 。
-PA (TCP ACK)
TCP ACK Ping:发送单个TCP ACK包到指定端口检测主机是否存活,默认80端口
请求局域网主机135端口(开启)
一般ACK包是双方建立起连接发送的,但实际上不存在连接,无论端口是否开启,远程主机都会用RST包来回应,以此来判断主机存活 。当然很多防御策略都会丢弃无效包防止被检测 。
nmap -sn -PA135 172.16.1.128-vvv -n --disable-arp-ping
Nmap抓包分析与绕过Windows防火墙

文章插图
image image
Nmap抓包分析与绕过Windows防火墙

文章插图
image
请求局域网主机666端口(关闭)
nmap -sn -PA666 172.16.1.128-vvv -n --disable-arp-ping
Nmap抓包分析与绕过Windows防火墙

文章插图
image image -PU (UDP)
UDP Ping:发送UDP包到指定端口检测主机是否存活,默认40125端口 。特定端口会发送特定的UDP包以便于获取更好的响应 。


推荐阅读