0x00 防火墙/IDS规避

防火墙与IDS规避为用于绕开防火墙与IDS(入侵检测系统)的检测与屏蔽,以便能够更加详细地发现目标主机的状况。

Nmap提供了多种规避技巧,通常可以从两个方面考虑规避方式:数据包的变换(Packet Change)与时序变换(Timing Change)。

分片(Fragmentation)

将可疑的探测包进行分片处理(例如将TCP包拆分成多个IP包发送过去),某些简单的防火墙为了加快处理速度可能不会进行重组检查,以此避开其检查。

IP诱骗(IP decoys)

在进行扫描时,将真实IP地址和其他主机的IP地址(其他主机需要在线,否则目标主机将回复大量数据包到不存在的主机,从而实质构成了拒绝服务攻击)混合使用,以此让目标主机的防火墙或IDS追踪检查大量的不同IP地址的数据包,降低其追查到自身的概率。注意,某些高级的IDS系统通过统计分析仍然可以追踪出扫描者真实IP地址。

IP伪装(IP Spoofing)

顾名思义,IP伪装即将自己发送的数据包中的IP地址伪装成其他主机的地址,从而目标机认为是其他主机在与之通信。需要注意,如果希望接收到目标主机的回复包,那么伪装的IP需要位于统一局域网内。另外,如果既希望隐蔽自己的IP地址,又希望收到目标主机的回复包,那么可以尝试使用idle scan或匿名代理(如TOR)等网络技术。

指定源端口

某些目标主机只允许来自特定端口的数据包通过防火墙。例如FTP服务器配置为:允许源端口为21号的TCP包通过防火墙与FTP服务端通信,但是源端口为其他端口的数据包被屏蔽。所以,在此类情况下,可以指定Nmap将发送的数据包的源端口都设置特定的端口。

扫描延时

某些防火墙针对发送过于频繁的数据包会进行严格的侦查,而且某些系统限制错误报文产生的频率(例如,Solaris 系统通常会限制每秒钟只能产生一个ICMP消息回复给UDP扫描),所以,定制该情况下发包的频率和发包延时可以降低目标主机的审查强度、节省网络带宽。

其他技术

Nmap还提供多种规避技巧,比如指定使用某个网络接口来发送数据包、指定发送包的最小长度、指定发包的MTU、指定TTL、指定伪装的MAC地址、使用错误检查和(badchecksum)。

-f; --mtu <val>: 指定使用分片、指定数据包的MTU.

-D <decoy1,decoy2[,ME],...>: 用一组IP地址掩盖真实地址,其中ME填入自己的IP地址。

-S <IP_Address>: 伪装成其他IP地址

-e <iface>: 使用特定的网络接口

-g/--source-port <portnum>: 使用指定源端口

--data-length <num>: 填充随机数据让数据包长度达到Num。

--ip-options <options>: 使用指定的IP选项来发送数据包。

--ttl <val>: 设置time-to-live时间。

--spoof-mac <mac address/prefix/vendor name>: 伪装MAC地址

--badsum: 使用错误的checksum来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或IDS/IPS)。

规避演示

使用命令:

nmap -v -F -Pn -D192.168.1.100,192.168.1.102,ME -e eth0 -g 3355 192.168.1.1

其中,

-F表示快速扫描100个端口;
-Pn表示不进行Ping扫描;
-D表示使用IP诱骗方式掩盖自己真实IP(其中ME表示自己IP);
-e eth0表示使用eth0网卡发送该数据包;
-g 3355表示自己的源端口使用3355;192.168.1.1是被扫描的目标IP地址。

我们可以从Wireshark中看到数据包的流动情况:对于每个探测包,Nmap都使用-D选项指定的IP地址发送不同的数据包,从而达到扰乱对方防火墙/IDS检查的目的(更好的方式-D选项中嵌入RND随机数,这样更具有迷惑性)。当探测到80端口时候,目标主机向我们回复了SYN/ACK包回来(当然也向其他诱骗的IP回复SYN/ACK包,我们无法接收到),证明80端口是开放的。

更多bypass firewalls信息http://nmap.org/book/man-bypass-firewalls-ids.html

标签: nmap, 扫描

添加新评论