一、什么是防火墙/IDS逃逸
防火墙/IDS逃逸是指通过特定的技术手段和方法,使网络攻击、扫描或其他敏感活动能够绕过防火墙Firewall和入侵检测系统IDS的检测,从而避免被这些安全设备发现和阻止。防火墙/IDS在网络安全领域具有重要地位,尤其是在渗透测试和攻击模拟中被广泛应用。
防火墙跟IDS基本功能(简单介绍)
防火墙是位于网络边界的安全设备,用于监控和过滤进出网络的数据包。它根据预设的安全规则允许或阻止数据包的传输,以防止未经授权的访问和潜在的攻击。防火墙可以基于包过滤、状态检测、代理服务器等技术来实现对网络流量的控制。
入侵检测系统(IDS)是一种用于监测网络或系统活动的工具或系统,旨在发现潜在的入侵行为或安全威胁。它通过分析网络流量、系统日志等信息,根据已知的攻击模式或异常行为模型来检测入侵活动,并在发现可疑行为时发出警报。
二、开始操作
操作环境:VMware虚拟机、靶机Windows10(192.168.203.1)、攻击机kali(192.168.203.2)
目的是在kali上用Nmap工具结合特定方法来绕过Windows10上的防火墙/IDS以获取靶机的端口开放情况和运行服务等信息。
为了实验能够顺利进行,实验开始前先确保两台机器可以互相ping通,虚拟机可以设置为NAT模式
1.先尝试用nmap -sX -F 192.168.203.1来扫描
-sX:该扫描会向目标主机端口发送一个包含FIN、URG和PSH等多个 TCP 标志位的数据包。若目标端口关闭,通常会返回RST响应包;若端口开放,则可能不返回响应。这种扫描相对隐蔽,能在一定程度上绕过部分简单防火墙检测。
-F:表示快速(有限的端口)扫描。Nmap 会仅扫描其默认配置中认为最有可能开放且常用的端口,而不是扫描全部 65535 个端口,这样可以加快扫描速度。
扫描结果如图,很明显是没有逃逸成功的,因为所有扫描的端口都被标记为 “ignored states” ,说明防火墙或IDS对这些端口的访问进行了限制,导致Nmap无法确定端口的真实状态 。
-
Host is up:目标主机(192.168.203.1)在线。
-
All 100 scanned ports are in ignored states:所有扫描的100个端口都处于被忽略的状态。
-
Not shown: 100 closed tcp ports (reset):未显示的100个TCP端口都是关闭的(收到了RST响应)。
2.利用-f 报文分段方法逃逸
用nmap -f -v 192.168.203.1 进行扫描:
-f:表示分段数据包,通过将扫描数据包进行分段,让它们能更隐蔽地穿越某些网络设备,降低被检测到的概率 。一些防火墙或入侵检测系统(IDS)可能会对大的扫描数据包进行拦截,分段后可减少被拦截的风险。
-v:代表显示冗余信息,也就是开启详细模式。在扫描过程中,Nmap 会输出更多的细节信息,例如扫描的进度、发现的开放端口、服务信息等,可以更清楚地了解当前的扫描状态和结果。
3.通过--mtu将数据包分片
用nmap --mtu 16 192.168.203.1 进行扫描,这种方法跟上面的 -f 原理相似:
--mtu:mtu是最大传输单元(Maximum Transmission Unit的缩写)表示 Nmap 在扫描过程中会将数据包分割成不超过 16
字节的片段进行发送。这种做法可以让扫描数据包更隐蔽地穿过一些防火墙或入侵检测系统,因为部分安全设备可能会对大尺寸的数据包进行特殊检查或拦截。
注意--mtu后面的最大传输单元需要是8的倍数,因为偏移字段是一个 13 位的字段,它记录了分段相对于原始数据包起始位置的偏移量,单位是 8 字节。为了确保偏移字段能够正确表示分段的位置,并且让接收方能够准确地重组原始数据包,每个分段的大小必须是 8 字节的整数倍。如果--mtu指定的大小不是 8 的倍数,那么在进行数据包分段和重组时,偏移字段的计算就会出错,导致接收方无法正确还原原始数据包,从而影响扫描结果的准确性。
4.通过-D RND源ip欺骗来逃逸
用nmap -D RND:11 16 192.168.203.1 进行扫描(RND是Random“随机”的意思):
-D RND:11 :-D表示指定源地址的欺骗方式,RND:11表示用随机生成的11个源地址进行扫描,用这种方法扫描时,会将真实 IP 地址与这 11 个随机生成的诱饵 IP 地址混合在一起发送扫描数据包,使目标主机难以分辨出真正发起扫描的 IP。
5.通过--source-port指定特定端口来逃逸
用nmap --source-port 53 192.168.203.1 进行扫描:
--source-port 53:指定源端口号为53,53号端口是DNS服务常用的端口。某些防火墙和IDS可能对特定服务的端口(如DNS)的流量较为宽松,通过伪装成正常的DNS流量,有一定几率可以绕过检测。
6.通过--data-length指定发包长度来逃逸
用nmap --data-length 30 192.168.203.1进行扫描:
--data-length:指定扫描时发送的每个数据包的数据部分长度为30,正常情况下,Nmap 发送的数据包数据部分长度是有默认值的,通过修改这个长度,可以改变数据包的特征。部分防火墙或IDS可能会根据数据包的长度等特征来判断是否为异常流量,使用非默认的数据长度进行扫描,有可能绕过这些设备的检测,使扫描行为更隐蔽。
三、总结
以上命令方法通过改变Nmap发送数据包的方式,包括分片、随机源地址、改变数据长度等,使防火墙/IDS难以识别扫描行为的特征,从而可能成功逃逸其检测。不同的防火墙和IDS配置及规则可能会对这些技术有不同的反应,因此在实际应用中可能需要尝试多种方法来找到最有效的逃逸策略。
文末声明:此文所示所有操作均在合法虚拟环境下进行,仅记录学习使用,仅供参考!
温馨提示:进行网络扫描时,必须确保已经获得了合法的授权。未经授权对他人的网络或设备进行扫描是违反法律法规和道德规范的行为。有兴趣实践的小伙伴可以自行搭建虚拟环境进行实验~