防火墙防护能力检测技术

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

防火墙防护能力检测技术

目前的防火墙往往难于管理和配置,一个复杂的防火墙系统(路由器、过滤器、代理服务器、网关、堡垒主机等),配置时稍不注意就可能存在疏漏。探测防火墙的类型和安全规则,分析防火墙配置上存在的漏洞或可利用的条件,并进一步对其所保护的主机进行探测,可作为对防火墙防护能力检测的一个重要方面。

本文从防火墙的安全测试角度出发,具体论述对防火墙及其保护主机的探测技术。文中引用的数据已经过实验验证,出于安全的原因,IP地址换成了假想的地址。

1 对防火墙的探测

对防火墙的探测主要包括存在性探测、类型探测和访问控制列表探测。

1.1 探测防火墙的存在及类型

若ping一台主机收不到任何回应,可能是因为主机不存在(没开机),也可能是防火墙过滤了数据包,那么首先就要确认目标主机前面是否存在防火墙。

·traceroute

使用traceroute来跟踪数据包经过了哪些主机、路由器,找到被丢弃的位置,从而猜测防火墙的地址。假设有一台目标主机(IP地址为192.168.3.8),它被部署在一台包过滤防火墙后。探测者的IP地址为192.168.1.1。

使用traceroute探测目标主机:

[root@attacker]#traceroute 192.168.3.8

traceroute to 192.168.3.8(192.168.3.8),30 hops max, 38 byte packets

1 192.168.2.1(192.168.2.1)0.022ms 0.024ms 0.025ms

2 192.168.2.2(192.168.2.2)1.327ms 2.360ms 2.380ms

3 192.168.2.3(192.168.2.3)4.217ms 4.612ms 4.656ms

4 192.168.2.4(192.168.2.4)4.927ms 5.090ms 5.238ms

数据包在第5跳时被阻塞。假设前一跳192.168.2.4就是防火墙,它过滤了探测包。当然这样假设不一定正确(有可能是一个过滤器或者路由器)。接下来探测这到底是不是一个防火墙。

·旗标夺取

很多防火墙都有自己的特征标识,连接它们的某些端口会返回一些信息,例如序号、banner 等,可以利用这一点来探测目标防火墙的类型和型号,称之为“旗标夺取”。

最简单的方法是端口扫描。例如对上面假设的防火墙使用netcat扫描25端口,得到结果:“421 192.168.2.4 Sorry,the firewall does not provide mail service to you.”,返回的结果说明这是一个防火墙。

有的品牌防火墙为了管理控制会打开默认的端口监听。例如CheckPoint的FireWall-1防火墙默认监听TCP的256、257、258端口。而微软的Proxy Server会监听TCP的1745和1080端口。利用这一特征也可以判断目标是不是防火墙、是何种防火墙。

另外,利用端口识别技术也可以对防火墙进行探测。当连接防火墙的某些端口时,有的防火墙的端口会返回一个特征序号,由此可判断出部分防火墙的类型和版本。例如连接CheckPoint 的FireWall-1的某个监听端口,能得到“30000003”之类的特征序号。

1.2 探测防火墙的ACL

ACL是执行安全策略的一套规则,防火墙的安全控制核心。它规定防火墙开放哪些端口,允许哪些类型的包通过。掌握了ACL,就能更准确的对防火墙后面的网络进行探测。

首先,仍使用traceroute。在Linux下Traceroute默认使用UDP包。很多防火墙的ACL都关闭高端口,但防火墙往往会开放一些常用的低端口,如果防火墙内部向外提供了网络服务,那么它就要开放这些服务所对应的端口。尝试对一些常用的服务端口进行探测,例如80端口。

因为traceroute每发一个包端口号就加一,每一跳发三个包,即发送的UDP包的端口号是递增的,所以为了让到达防火墙的那个数据包的端口号正好为80,就要计算出traceroute发送UDP包的起始端口号:

起始端口号:(目标端口—(跳数X3))—1

(80-(4X3))-1=67

因此我们把67作为traceroute的起始端口号,用-p参数控制端口号:

[root@attacker]#traceroute—p67 192.168.3.8

traceroute to192.168.3.8(192.168.3.8),30 hops max,38 byte packets

1 192.168.2.1(192.168.2.1)0.442ms 0.524ms 0.612ms

2 192.168.2.2(192.168.2.2)5.125ms 6.436ms 6.653ms

3 192.168.2.3(192.168.2.3)7.341ms 7.442ms 7.653ms

4 192.168.2.4(192.168.2.4)8.456ms 9.021ms 9.321ms

5 192.168.3.8(192.168.3.8)11.368ms * *

第5行数据中第一个包已经穿过了防火墙到达目的主机。这个包的目的端口号是80,说明防火墙允许目的端口为80的UDP包通过。而接下来的两个包因为端口号增加了而被过滤掉。

这样计算起始端口号很麻烦,用traceroute l.4a5版本则能指定探测包的目的端口号,从而能够探出防火墙所有开放的UDP端口。同样的方法,用TCP包则能探测出所有开放的TCP端口。对所有常用的TCP和UDP端口进行探测,就能够推导出防火墙ACL的端口规则。

需要说明的是,在Windows系统下traceroute(程序名为“tracert'’)只能使用ICMP包探路,所以Windows平台下不能用traceroute探测防火墙端口规则。

2 对防火墙保护的主机进行探测

对受到防火墙保护的主机进行探测存在以下困难:

·防火墙过滤一切不允许的端口,在不知道它的ACL规则的情况下探测其后面的主机会导致不确定的结果:发出的探测包如果没有收到回应,不能判断到底是防火墙把探测包过滤了还是目标主机不存在(或已关机);

·基于状态检测的防火墙能有效的防止某些欺骗攻击,使伪造的探测包不能到达目的主机。

前面对防火墙探测以后得到了防火墙的ACL,即已经知道防火墙允许哪些端口的数据通过,通过这些允许的端口去探测被其保护的主机能排除不确定的结果。

目前对主机探测的方法可以分为两大类:正常数据包探测和异常数据包探测。

2.1 正常数据包探测

正常数据包探测是用合法的连接试探主机的连通性和端口开放信息,跟平时网络中的正常数据一样,隐蔽性较好,不易被防火墙过滤。

·TCP FLAG包探测

在TCP首部中有6个标志比特(flags),分别是:URG、ACK、PSH、RST、SYN、FIN,如表所示:

相关文档
最新文档