为什么 nmap -sT 扫描显示端口已过滤但 -sS 显示端口已关闭

信息安全 地图
2021-08-30 20:47:45

nmap -sT扫描显示“端口已过滤”但相同的nmap -sS扫描显示“端口已关闭”的可能原因是什么?我知道这-sT是一个完整的 TCP 连接,它比-sS半开扫描更容易检测(和过滤)。但为什么?

两种类型的扫描都发送一个 SYN 数据包;两种类型的扫描都应该返回 SYN|ACK 或 RST。我看到的唯一区别是半开扫描将发送 RST 而不是完成连接握手。

另外,我运行了nmap -sT -P0告诉 nmap 不要先发送 ping 的命令(我认为它通常同时执行 TCP ping 和 ICMP ping)。执行该命令会导致它以“端口关闭”响应,这与-sS扫描响应相同。那是因为-sT通常由于首先ping而被阻止吗?

这是我的假设,但我想要一些更有经验的意见,关于我所看到的以及我可以做哪些类型的扫描来进一步调查。顺便说一句,我当然可以进行这些扫描(课堂作业)。

3个回答

如果您保存了 Nmap 的 XML 输出,则<state>标签有一个名为的属性reason,这将为您提供 Nmap 选择将端口标记为关闭、打开或过滤的原因。这通常类似于“reset”、“conn-refused”、“syn-ack”或“port-unreach”,具体取决于扫描类型和端口状态。--reason通过使用标志或设置-d进行调试,也可以在“正常”输出中查看此信息。

一个常见的误解是 SYN 扫描 ( -sS) 比 TCP Connect 扫描 ( ) 更“隐秘”-sT)。曾几何时,从某种角度来看,这是正确的:也就是说,从在主机上运行的应用程序的角度来看。回到过去,在 IDS 和状态防火墙出现之前,端口扫描的最佳指示是应用程序日志显示打开和立即关闭的连接。SYN 扫描,因为它在离开内核之前断开连接,从不进入应用程序,所以这些日志不会被写入。然而,从网络的角度来看,半开放的 SYN 扫描(SYN、SYN-ACK、RST)的行为是非常不寻常的,并且可能是端口扫描的重要指标,即使只有一个,打开端口被扫描。在这种情况下(扫描少数可能打开的端口,受 IDS 保护),TCP Connect 扫描实际上可能“更隐蔽”。

-Pn(以前称为-P0and -PN)指示 Nmap 跳过主机发现阶段,而是假设所有主机都已启动。主机发现的细节有据可查,但这种行为可能会触发主机上的自适应防火墙。自适应防火墙可能很棘手,因为您会根据您的行为和扫描速度获得各种​​响应。我建议使用任何计时选项减慢扫描速度,并将扫描的端口数量减少到少数,直到获得一致的结果。

如果您想进一步调查此问题,请启用该--packet-trace标志。这将允许您跟踪发送和接收的数据包 nmap 以确定端口的确切状态。

可能有多种因素导致结果的差异。如果没有更多信息,很难确定确切的原因。

这几乎可以肯定是由于数据包丢失。连接和 SYN 扫描之间的时间有点不同。尝试以较少的时间扫描较少数量的端口。此外,如果您不在最新的 nmap 上,请尝试升级,因为他们会不断调整计时算法。