GFW技术报告:入侵防御系统的评测和问题

来源:https://docs.google.com/View?id=dctwdrh8_1gqwt9nf3

入侵防御系统的评测和问题

KLZ毕业
2009年8月24日

原文URL
https://docs.google.com/View?id=dctwdrh8_1gqwt9nf3 (bit.ly/cncert)
http://bbs.hackerxfiles.net/viewthread.php?tid=377662

CC0 1.0 Universal
在法律允许的范围内,本文作者放弃本文的一切著作权和邻接权。

1. 前言

随着网络与信息技术的发展,尤其是互联网的广泛普及和应用,网络正逐步改变着人类的生活和工作方式。越来越多的政府、企业组织建立了依赖于网络的业务信息 系统,比如电子政务、电子商务、网上银行、网络办公等,对社会的各行各业产生了巨大深远的影响,信息安全的重要性也在不断提升。近年来,企业所面临的安全 问题越来越复杂,安全威胁正在飞速增长,尤其混合威胁的风险,如黑客攻击、蠕虫病毒、木马后门、间谍软件、僵尸网络、DDoS攻击、垃圾邮件、网络资源滥 用(P2P下载、IM即时通讯、网游、视频)等,极大地困扰着用户,给企业的信息网络造成严重的破坏。能否及时发现并成功阻止网络黑客的入侵、保证计算机 和网络系统的安全和正常运行便成为企业所面临的一个重要问题。

基于目前网络安全形势的严峻,入侵防御系统(Intrusion Prevention System)作为新一代安全防护产品应运而生。网络入侵防御系统作为一种在线部署的产品,提供主动的、实时的防护,其设计目标旨在准确监测网络异常流 量,自动对各类攻击性的流量,尤其是应用层的威胁进行实时阻断,而不是简单地在监测到恶意流量的同时或之后才发出告警。IPS是通过直接串联到网络链路中 而实现这一功能的,即IPS接收到外部数据流量时,如果检测到攻击企图,就会自动地将攻击包丢掉或采取措施将攻击源阻断,而不把攻击流量放进内部网络。

虽然入侵防御系统的概念被各大厂商迅速地用于生产实践当中,然而值得警惕的是市场上存在的入侵防御系统不想厂商声称的那样无所不能,而是仍然存在这 样那样的问题需要注意。所以本文就对CNCERT/CC部署的某款入侵防御系统进行了一些评测,并对业内常见入侵防御系统的一些问题进行了一些评论。

2. 评测

2.1 主要工作范围

该系统在网络层主要支持IPv4,目前尚未支持IPv6。在传输层主要支持TCP和UDP。在应用层支持大量协议,主要面向HTTP、SMTP、DNS等,并可根据实际需要编写新的协议解析模块进行更新。

2.2 黑箱测试

该系统采取会话阻断的方式来应对主要是发生在TCP上的攻击,实际上这也是一般IPS主要采用的主动防御方式。

通过分析该系统阻断TCP会话的通信发现,它表现出区分度显著的几种会话阻断方法。下面给出一些分析。(出于安全考虑不给出实验方法和实验数据;另外请注意“充要条件”的含义)

方式1

方式1的TCP/IP报文特征:

  • IP头部ID不变(0x0040),TTL不变,不设置DF。
  • TCP头部的窗口尺寸随机。处理实验数据发现,窗口尺寸服从均匀分布,进行自相关分析未发现规律。
  • 无TCP选项,即使通信上下文都有TCP选项。
  • TCP标志位只设置RST。
  • 往返时间(RTT)的分布呈现出多条带样分布,每条带内观察推测是正态分布。在某内陆电信节点的实测结果有两个条带。无法确定这是动态路由多路径的结果还是系统特性。

方式1的工作方式特性:

  • 基于TCP流模式对TCP会话进行检测,会根据连接发起方的单向通信重建会话状态。实验显示:在发送SYN之后无论是否有SYN/ACK响应,继续发送ACK和含有攻击性数据荷载的PSH/ACK包都会被阻断会话[注1];而缺少SYN或ACK都不会被阻断;如果在攻击数据之前发出RST自行关闭连接,也不会触发阻断。
  • 如果连接是有效的则会进行TCP重组提取数据负载并进行应用层协议分析。实验显示,即使将关键词分在两个TCP包里分别发送也可以检测出来。
  • 新连接检测的超时时间很长,实验结果表明至少有200秒。尚未确定其准确数值。
  • 当检测出攻击性关键词之后,发送RST阻断会话,并对相同IP地址对和目标端口(客户端更换端口依然触发)之间的后继连接产生一定时间的继发阻断。
  • 继发阻断不检测TCP会话状态,也不检测TCP数据负载,也不检测TCP头部除了目标端口号的其他信息。经过对TCP六个标志位64种组合的实验发现,在检测到攻击性关键词触发阻断之后产生一个RST的充要条件是截获一个报文的SYN、FIN、RST位同时为零目标端口号一致。符合此条件的TCP标志常见有ACK和PSH/ACK。
  • 继发阻断会持续一段时间。具体时长有待准确测量。
  • 含有攻击性数据的HTTP报文会在除21、25、42、53、110、135、136、137、138、139、143、445、 593、1025、1068、1434、3127、3128、3129、3130、3332、4444、5554、6669、9996、30100以外的 端口触发阻断。(此实乃实验环境造成的系统误差,2009-08-25)
  • HTTP GET之后的路径只检查前2048字节。如果路径长度小于2048字节,可能还会将主机名连接到路径之前一并进行模式匹配。
  • 经过大量实验没有发现证据证明方式1存在HTTP协议的深度检测。(有。2009-09-19)
  • 方式1在其他端口上对其他应用层协议的检测特性有待了解。需要进一步实验。

方式2

方式2的TCP/IP报文特征:

  • IP头设置DF。
  • 无TCP选项,即使通信上下文都有TCP选项。
  • TCP标志位只设置RST和ACK。
  • IP头ID、TTL,TCP头窗口随时间连续变化。
  • TCP头th_win从0到5042连续递增循环。
  • IP头ip_id与TCP头th_win满足:ip_id = (unsigned short)(i - th_win*n),其中内陆电信节点测量得n为13,i为-1(即65535),如下图。
  • IP头ip_ttl与TCP头th_win满足:ip_ttl = th_win%64 + k。在内陆电信节点测得,k以11/12的概率为某个值,以1/12的概率为另一个小2的值。根据跳数测量的结果推测初始时k应在48附近。
  • 往返时间的分布呈现出多条带样分布,每条带内可能是正态分布。在内陆电信节点测量得图样与方式1基本一致,但条带内分布似乎更集中。无法确定这是动态路由多路径的结果还是系统特性。

方式2的工作方式特性:

  • 如未说明,则TCP层各工作特性与方式1基本一样。
  • 在首次阻断中会先发送一组三个左右RST/ACK,序列号依次加1460,再根据后续情况发送RST/ACK。
  • 在继发阻断中有时会对攻击者发送的SYN赶在目标主机之前响应一个伪造的SYN/ACK破坏其会话。
  • 如果HTTP报文的换行符是'\n',即使方式1会进行阻断,方式2也不会反应。
  • 如果HTTP GET后面的路径不是以'/'开始的,即使方式1会进行阻断,方式2也不会反应。
  • 方式会将主机名连接到路径之前一起匹配,只检测拼接之后字串的前约8000字节。
  • 针对重点站点,方式2会额外对其进行从服务端到客户端的单向检测。会对HTTP除了头部以外的主体部进行严格的深度检测。攻击性关键词经过deflate压缩仍然会触发阻断。含有攻击性关键词的某些特殊Content-Type页面不会触发阻断。
  • 方式2在其他端口上对其他应用层协议的检测特性有待了解。

方式3

  • 偶尔发现有带有根据上下文合理设置TCP选项的会话阻断RST。但由于无法找到其出现的规律性,因此无法细致测量。由于其往返时间很小,怀疑是部署在离测试者很近的位置。

另外,由于UDP的无状态性,在UDP上发生的主动防御,比如对攻击者的DNS查询进行干扰的报文则具有很明显的时序特征。

3. 问题和反思

聪明的攻击者可能采取各种手段来避免入侵防御系统的主动防御。一般意义上攻击者为此可能采取的策略有这样几类:规避、忽略、监测、攻击。

3.1 规避

这通常是攻击者被动避免入侵检测的方式,入侵者使用特殊手段让IPS无法检测到恶意通信而无法进行主动防御从而达到攻击的目的。

常见的规避手段的要素可以分为几类:

  • 采用代理的方式绕过路由对其的IP封锁和入侵检测。
  • 采用加密的方式使得IPS无法检测到攻击字串。
  • 采用特殊协议和常见协议的特殊设置(比如罕见TCP端口)脱离检测范围。
  • 采用特殊的DNS解析方法或者设置静态DNS映射以绕过DNS干扰。

通常攻击者都会综合多种要素企图逃过IPS的检测,然而这些手段无疑为攻击者的入侵增加了难度。

3.1.1 注入和闪避

T. Ptacek等在1998年的论文[Ptacek98]中提出两种特殊的规避入侵检测的方法,一种是注入法、一种是闪避法。它们的基本原理是制造歧义让 IPS错误地分析协议从而错误地认为网络上正在发生着或者没有发生某种事件。注入法是指制造不会被其他节点接受的报文而让这些数据注入IPS;闪避法是指 让最终被其他节点接受的报文闪避开IPS的检测。两种方法主要有三类原理,一类是特定的网络拓扑会导致一些报文被丢弃,一类是目的地的特定设置导致一些报 文被丢弃,一类是不同操作系统之间TCP/IP栈实现的微妙差异。一般的IPS对常见攻击方法都有一定的防范能力,然而一种简单的基于修改TTL的注入法却可能成为难以避免的弱点。

IP包头部的TTL字段表示报文在网络上生存多少“跳”,每通过一个路由器该值减1,为0时将被路由器丢弃。因此攻击者可以发送TTL值经特别设置的报文 使其通过IPS却不会到达目的地从而能够向IPS注入任意数据。比如将伪报文的TTL设置为可以到达目的地的最小值减1,那么路径上的任何IPS都不能逃 脱被注入攻击的命运。而IPS如果要进行状态检测,攻击者能够很容易地破坏IPS维护的会话状态而让后续会话隐身[注2],从而逃避IPS的检测;或者让 IPS以为实际上清白的主机进行了攻击而错误地进行主动防御。

中小型网络对此有一定的反制措施,可以通过设置路由器丢弃TTL过小的IP包来保护IPS免于注入攻击。不过IPS本身不能忽略TTL值较小的报 文,否则反而可能打开闪避攻击的大门。丢弃TTL的阈值需要根据网络拓扑精确选取,这造成在较大型的动态网络上难以选取一个合理的阈值。部署在较大型网络 上的IPS处在远离连接两方终端节点的位置上,难以推测两端的距离,也没有反TTL过期攻击的路由保护。可以说这种位置上的IPS具有对于TTL注入攻击 的天生弱点,需要进行特别注意。

3.2 忽略

这是一种攻击者被动避免IPS攻击的方式。攻击者可能会根据IPS的报文特征或者时序特性(RTT)等特征识别出IPS进行主动防御所发送的报文并 进行有意的忽略,造成IPS即使可以检测也无法有效进行防御。对这种情况IPS应该与周边的防火墙和路由进行联动,即使更新静态过滤规则对攻击者进行硬性 防御。另一方面,由于通常受害者的TCP/IP栈都会收到IPS双向发出的RST并关闭连接,所以只要攻击者不侵入IPS内部网络并修改受害者的TCP /IP栈特性或者采取其他手段同样忽略IPS发出的RST,那么IPS就能够成功关闭攻击者的连接从而成功进行主动防御。

3.3 监测

IPS进行主动防御会发送一些数据。这就让攻击者有机会对IPS进行扫描和监听以获取IPS的特征和特性、IPS的位置、IPS的数量等信息。这可能产生潜在的安全问题,因此IPS应该对发送的数据进行充分的随机化和模糊化。

3.4 攻击

IPS要进行大计算量的检测,如果设计不当或者缺乏反拒绝服务措施,很可能给攻击者造成拒绝服务的弱点。IPS首先要排除各种朴素洪水攻击的影响。 另外,比如前面进行评测的该IPS,只检测TCP单向状态,没有三次握手仍然会继续重组会话[注1],这就为伪造源IP地址的拒绝服务攻击造成隐患。攻击 者可能用大流量的伪造连接填满IPS的状态空间或者造成IPS计算能力低下,使得真正的攻击连接得不到阻止。即使IPS进行包括三次握手在内的双向状态检 测,拒绝服务攻击的可能性仍然存在。因为,攻击者只需要在IPS路径的两端各部署一些结点,使用伪造源地址以事先确定好的序列号进行的三次握手,进行这种 注入攻击,攻击者还可特别选取地址或者设置TTL以避免被伪造者进行响应而干扰攻击。

另外,攻击者可能利用IPS的主动防御特性来阻断无辜主机之间的通信。无论IPS是检测单向状态还是包括三次握手在内的双向状态,都显然有类似上述拒绝服务攻击的攻击方法。因此IPS的主动防御如果没有白名单进行特别检查,可能会造成各种严重问题。

另外,大陆的攻击者也很可能从暴风DNS事件中得到经验,试图利用广泛使用的软件来进行分布式拒绝服务攻击。一种可能性就是利用迅雷广泛的用户分布 和迅雷的软件特性,首先对迅雷的资源自动提交协议进行反向工程,然后大量提交会触发IPS主动防御的热门资源伪URL进行URL污染,最终使得大量用户经 过IPS进行大量触发性连接,消耗IPS的计算资源、扰乱IPS的日志记录。

对于攻击者可能采取的以上针对IPS本身的攻击,一种解决方法是IPS采取分布式布局,将防御散布到整个网络之中而不是仅仅堆积在网关出入口。当然,这也需要良好的同步技术。

注释

  • 注1 演示程序ufw,代码见[1]
  • 注2 演示程序notarget,代码见[2]

 
发表评论