面向防火墙的攻防对抗方法
防火墙攻防
防火墙的作用是保障网络的安全,但其自身也面临着各种攻击。防火墙面临的攻击情况比较复杂,通常分为 3 种:
探测攻击
利用防火墙自身漏洞的攻击
突破防火墙的攻击
探测攻击
使用探测工具进行防火墙信息探测。攻击防火墙时通常使用探测工具(如 Firewalk 和NMAP 等)来分析防火墙的功能以及防火墙所保护网络的拓扑结构。
例如Firewalk 采用路由跟踪分析法,使用类似路由跟踪(Traceroute-like)的技术分析 IP 数据包,进而测定防火墙的 ACL(访问控制列表),具体方法是通过发送一个特殊数据包,观察其是否能够从攻击者的主机传输到防火墙后面的目标主机。路由跟踪技术可用于探测防火墙 ACL 中哪些端口打开(Open)或者允许通过(Pass Through),还能够探测带有各种控制信息的数据能否通过防火墙。

利用防火墙自身漏洞的攻击
本质上,防火墙也是一个人为设计的信息系统,自然与其他信息系统一样,不可避免地存在各种软件、硬件漏洞。由于防火墙承担着重要的安全防护功能,因此其自身的漏洞带来的危害更大。全球 知名的独立安全研究和评测机构美国 NSS 实验室的测试表明,80%以上的商用防火墙存在漏洞。比如,早期的大多数防火墙无法有效防御 TCP 握手攻击。 防火墙存在的漏洞也是形式多样,如配置错误导致的漏洞、越权访问漏洞、弱口令漏洞、OpenSSL 漏洞、远程拒绝服务及 ACL 破坏漏洞等。 对于这种攻击,可以采用扫描并修补防火墙漏洞、部署入侵检测系统等方式来防范。
突破防火墙攻击
(1)IP 地址欺骗攻击
传统的静态包过滤防火墙工作在网络层,因此无法识别应用层的内容,也就是说,它无法识别不同的用户以及防止 IP 地址欺骗。入侵者可以伪造合法的 IP 地址,将攻击数据包伪装成合法的数据包来欺骗防火墙,从而通过防火墙实现穿越防火墙的目的。
(2)分片攻击
大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上能通过的 大数据帧大小(单位:字节)。如果 IP 层要传输的数据包大小超过了 MTU,就需要对数据包进行分片,使每个分片的长度不大于 MTU。各分片拥有相同的分片 ID,证明属于同一个数据包,各分片的顺序则用一个分片偏移字段来标识,只有第一个分片含有 TCP 端口信息。在通过包过滤防火墙时,防火墙只检测第一个分片的 TCP 信息,以判断是否允许其通过,其后的分片不需检测直接通过。
(3)普通木马和反弹木马攻击
木马攻击是防火墙面临的主要攻击方式之一,木马程序通常采取C/S模式来实现远程控制。攻击静态包过滤型防火墙主要采用普通木马方式,攻击动态包过滤型防火墙主要采用反弹木马方式。
攻击静态包过滤型防火墙,需要利用防火墙保护的内部网络中主机开放的服务漏洞,通过 CGI 漏洞攻击、Unicode 编码攻击和 WebShell 提权攻击等,上传渗透挂马,并运行木马客户端程序。因为一些服务要用到 1024 以上的高端口,所以高端口普通防火墙只过滤小于 1024 的低端口,而不会过滤高端口。因此,木马客户端程序通常会选择使用一个高端口来建立监听,实现与外部服务器的实时通信。比如,著名的冰河木马使用的是 7626 端口,Subseven 木马使用的是 27374 端口等。
(4)协议隧道攻击
隧道技术(Tunneling)是将其他协议的数据帧或包重新封装后通过隧道发送,也就是将一种协议封装在另一种协议里。攻击者可以利用隧道技术将某些恶意攻击数据包隐藏在一些应用层协议分组的头部,然后封装为传输层的协议,因为防火墙无法判断进出防火墙的数据包合法与否,从而躲过防火墙规则的检测。由于许多防火墙对 ICMP 和 UDP 数据包不加限制,因此攻击者的数据可以夹杂在正常数据包里穿越防火墙。HTTP 协议隧道攻击则利用 HTTP 请求建立了一个双向虚拟连接,在防火墙防护区内安装一个客户端程序,而在防护区外添加一个服务器程序,将需要发送或接收的数据包封装成正常的 HTTP 请求,以穿透防火墙。
对于这些攻击,可以通过提升防火墙深度检测能力、部署入侵检测系统、加固操作系统平台和 Web 应用程序等手段来综合防范。

