网络安全 频道

从攻击规避检测技术看IPS的安全有效性

  二、 常见的攻击规避技术分析

  攻击规避一般也叫做攻击逃逸,攻击者通过对攻击数据包的精心定制和伪造,企图绕开IPS此类产品的检测。目前比较流行的攻击规避技术包括:数据包分片、数据流分隔、RPC分片、URL混淆,以及攻击负载的多态和混淆等。下面将针对几种主流的协议和应用逃避技术,分别进行较为详细的介绍和分析。

  (一) TCP/IP协议规避技术

  TCP/IP协议的抗规避处理难点主要集中在TCP协议上。TCP协议是端到端的复杂流式可靠传输协议,它的序列号、窗口,以及重传等保障可靠传输的机制,会给IPS的检测带来很大困难,IPS只能被动地跟踪通信双方的数据及状态变化,通过实时的数据流重组以进行检测。

  IPS必须内置TCP状态跟踪及流汇聚机制,以确保对TCP会话的持续跟踪和分析。然而在数据传输过程中,一旦出现数据包顺序错乱,报文丢失或重传等问题,很多IPS的检测机制就会失效,一些规避攻击恰恰利用这个缺陷,得以绕开IPS的检测。

  归结起来,针对TCP/IP协议的规避技术,主要包括如下几种实现方式:

  n 通过重传机制发送干扰数据包(TTL、校验和、窗口大小、序列号、标志位、时间戳等异常的数据包)和正常数据包,在正常数据包中嵌入攻击负载,终端的TCP/IP协议栈会丢弃干扰数据包,并将载有攻击的正常数据汇聚起来提交给应用程序。

  n 通过利用TCP协议的序列号或IP协议的片偏移机制,对数据包进行细小划分,并打乱发送顺序(逆序,乱序)。

  n 利用攻击目标的协议栈特性,将数据以前重叠或后重叠的方式发送,例如下图所示,Windows会倾向于先到的数据流分段,而Solaris倾向于后到的数据流分段。

二、常见的攻击规避技术分析

  图1 数据报文分片重叠结构示例

  在VISTA中如上所示的数据会被汇聚为“HELLO,WORLD!”,而在Solaris系统中会被汇聚为“HELP!,VIRUS!”,这就要求IPS产品不仅能够实现一个完整的TCP/IP协议栈,还要能够根据保护目标的类型进行重组策略的调整。

  TCP/IP协议的规避技术,早在1998年发表的论文《Insertion, Evasion, and Denial of Service : Eluding Network Intrusion Detection》中就已经被详细的描述。然而,目前大多数的IPS产品仍未具备完善的数据重组能力,这给入侵成功创造了很大空间。

  (二) RPC协议规避技术

  MS-RPC和Sun/ONC RPC都允许应用程序以分片的方式发送请求,这些分片在RPC服务器内会被重新组装成完整请求形式。攻击者通过将不同程度的RPC碎片和不同的TCP传输机制进行组合后,可以构造出多种的规避方式。例如:在单TCP数据包中发送所有分片,在不同TCP数据包内发送不同范围的分片(如每个TCP数据包只携带一个RPC分片)等。

  以MS08-059为例,Host Integration Server的RPC接口所暴露的一些方式,允许未经认证的攻击者在服务器上执行任意程序。RPC opcodes 1和6都允许攻击者调用CreateProcess()函数并向其传送命令行,这可能导致完全入侵服务器。利用这个漏洞,攻击者可以发送如下所示的请求,来提升权限:

  CMD/c net user admin admin /ADD

  为逃避检测IPS对这种异常权限提升行为的检测,攻击者可以对RPC请求进行分片处理,下图是在单TCP数据段内进行分片后的效果:

二、常见的攻击规避技术分析

  图2 RPC分片结构示例

  由于特征信息被“打散”,传统的基于包特征匹配的方式很难处理这种规避,要检测该攻击需要依据DCERPC协议对RPC分片进行重组。可见,IPS不仅需要能够对底层协议进行精确解析,还需要有非常细粒度的应用层协议处理能力。

  (三) URL混淆

  URL混淆通常被攻击者用以逃避IPS产品的URL过滤机制,这类规避方式主要包括如下几种:

  n 采用转义符“%”将字符用16进制表示

  n 采用转义符“%u”将字符用UNICODE方式表示

  n 随机插入“//”,“/./”和“\”字符

  n 随机变换大小写

  n 用tab符(0x09或0x0b)或回车符(0x0d)做分隔符

  n 加入干扰字符串

  以CVE-1999-0070为例,该漏洞产生原因是NCSA HTTPd和早期的Apache Web Server自带了一个名为“test-cgi”的Shell CGI脚本,通常位于“/cgi-bin”目录,用于测试Web服务的配置是否已经可以正常地使用CGI脚本。test-cgi脚本的实现上存在输入验证漏洞,远程攻击者可能利用此漏洞遍历主机的目录,查看目录下的内容,因此检测该攻击的特征码一般包含“cgi-bin/test-cgi”这个字符串,该攻击概念验证(PoC)如下:

  GET /cgi_bin/test-cgi?/* HTTP/1.1

  对该PoC的URL进行混淆后可以得到如下所示的URL格式:

二、常见的攻击规避技术分析

  图3 URL请求混淆示例

  不幸的是这些混淆后的形式都是WEB服务器可接受的,显然要避免这种攻击的漏报,IPS就不能在原始URL中进行特征匹配操作,而应先对URL进行恢复和整理后再进行规则检测等操作。

  (一) FTP规避攻击

  为逃避IPS产品对FTP攻击的识别与拦截,攻击者通常在FTP命令中随机添加一定数量的干扰字符(空格符、Telnet非文本控制符等),这些干扰字符在FTP服务器的处理过程中往往会被过滤掉。

  假设攻击者向FTP服务器发送如下命令:

  CWD

  /test1/test2/test3/test4/test5/test6

  向其添加干扰字符后我们得到如下图所示的FTP请求:

二、常见的攻击规避技术分析

  图4 FTP命令干扰示例

  假设参数中包含“test2”的CWD请求会触发FTP服务器的某一漏洞,IPS需要先于FTP服务器正确识别CWD请求命令,并过滤请求参数中是否存在“test2”这个特征,如果IPS不能在正确解析FTP协议的同时,准确的滤除干扰字符,它最终看到的将是“t\xff\xf3est2”进而导致漏报发生。

1
相关文章