欢迎访湖南省信息网络安全协会网站

湖南省信息网络安全协会

技术探讨:入侵躲避技术初探

发布时间:2013-04-25 09:05 来源:本站

     什么是入侵躲避技术
  2010年10月18日,芬兰的Stonesoft公司宣布发现了一种新型的高级逃逸技术(AET:Advanced Evasion Technique),可以轻松躲避目前的IPS/IDS检测,成功入侵目标服务器,震惊了信息安全界。作为这个技术的佐证之一,就是近年来令大家迷惑的未知攻击越来越多,未知攻击就是只知道被攻击了的事实,却不知道黑客采用了什么手段,何时进行的入侵,遗憾的是目前的安全措施都没有发现其踪迹。
  后来,Stonesoft公开了其中的部分技术细节,大概40多种组合躲避技术,并发布一个针对漏洞(CVE-2008-4250/CVE-2004-1315)的躲避技术演示工具软件。演示结果简单明了:入侵者对没有打补丁的目标服务器直接入侵,成功建立远程SHELL;中间部署IPS设备后,开启安全防护策略,直接入侵则不再成功;通过调整软件上的组合参数,如IP参数、TCP参数等,很快入侵成功的SHELL窗口再次打开。
  其实早在1998年Newsham和Ptacek就发表论文,讨论利用IP碎片技术躲避网络入侵检测设备了,只是当时没有引起安全界的重视,而他们的研究对黑客来说,可谓是思路广开,随后的几年,这种技术被广泛使用于实际的入侵攻击中,尤其是APT攻击,针对性很强,效果非常好。
  高级逃逸技术(AET)是黑客利用协议组合的技巧,躲过网络上安全措施的检查,成功抵达目标,实施入侵攻击。我更喜欢翻译成为高级躲避技术,或者是入侵躲避技术;躲避是指还处在你监视环境下继续生存,但我成功地“隐身”了自己,逃逸则是我设法逃出你的监视范围。入侵躲避技术的目的还是要入侵,而不是逃走了事。下图是入侵躲避技术的原理:
  入侵躲避技术的分类:
  入侵躲避技术可谓是种类繁多,实际上就是利用安全设备与目标主机对各种协议、各种字符集,以及他们的组合处理的差异,合理地躲避了检查,成功入侵了目标。因此,入侵躲避技术是有针对性的,不是一种方式走天下,而是在具体的入侵环境中,选择不同的参数组合、协议组合、字符集组合,达到躲避的目的。
  根据躲避安全措施的不同分为:
  1. 网络入侵躲避技术:躲避网络上的安全检查,如FWIDSIPSWAFUTM等,其中主要部分是IPS。需要躲避的是入侵时的攻击行为,如漏洞探测,上传的恶意代码,如ShellCode,下传敏感信息,如口令文件;
  2. 主机入侵躲避技术:躲避主机(目标服务器)上的安全检查,如主机防入侵防御软件主机防病毒软件等。典型的技术是进程注入、rootkit等。
  其中网络躲避又可以根据躲避的方向分为:
  1. 单向躲避:目标点没有接应的,躲避了安全检查的攻击流应该能被目标主机正常“理解”,完成入侵行为,否则即使躲避了中间的安全检查,也达不到入侵的目的。单向躲避一般应用在入侵过程中;
  2. 双向躲避:目标点有接应者,只要躲避了中间的安全检查,到达目标后,接应者负责信息的还原。双向躲避一般应用在攻击成功后的恶意代码传递与远程控制联络。
  常见的网络躲避技术有下面几类:
  1. 字符变换:IPS一般基于特征比对与行为模式识别,若把传输的内容变成检查者不认识的“外文”,就容易蒙混过关。这个方法常被用在注入攻击中的不同字符集之间的转换。寻找到IPS与目标主机对某字符集解释的差异,就可以实施躲避攻击;典型的方式是SQL注入;
  2. 协议组合:每个业务链接会使用多个协议,利用网络各种协议的参数组合,如包大小、碎片处理、重叠处理、多线程传送等,由于IPS与目标主机解析协议的处理方式不同,就可以躲避IPS的特征检查,同时又可以达到攻击的目的;
  3. 传输加密:加密本是直接躲避技术的首选,但加密需要到达目标解密后才能使用,而在攻击过程中,目标的解析者是标准的应用服务,加密就不能达到入侵效果。同时,越来越的网络环境中限制加密的连接,因为管理者不能监控你的通讯内容;因此,加密方法一般使用在双向躲避的部分环境中。
  涉及主机躲避技术,本人在《服务器入侵加固的几种方式》中有所介绍,本文主要讨论网络躲避技术,就重叠分片躲避与多线程躲避为例,分析一下网络躲避技术的原理。
  重叠分片躲避技术分析
  把一个大的数据包分成多个切片(IP包)传输,是TCP协议的功能之一。正常的情况下接收端按照切片的编号、偏移量,再重新组装成完整的数据包。
  正常的协议解析过程是每个分片顺序排列,并且按序号送达目的主机。由于网络的不同路径延迟不同,造成到达目标的分片不一定是顺序的;某个分片或许中途损坏要重传,延迟自然更大一些;有些系统本身的Bug,分片时偏移量写错了,造成分片之间有重叠…
  这里只讨论一种分片重叠的躲避技术:
  我们可以看到,在正常的分片中,第二个分片中有恶意代码的特征,IPS通过缓存各个分片的负载,就可以还原数据包,自然就可以发现这个特征。
  为了躲避IPS的检测,我们故意把第一分片的后面增加了一段随机数据(其大小甚至可以覆盖分片2,或更长),同时增加分片1的长度,分片2与分片3都不做改动。
  这样分片1与分片2的内容就有重合了,目标服务器接收时,对于重合的部分是选分片1的,还是选分片2的呢?我们知道,这个最终结果要根据目标服务器的操作系统而定,不同操作系统,或者有些版本之间的处理方式是不同,归结为TCP/IP协议栈的代码编写。有选分片1的,也有选分片2的,但告知发送方分片有错误,要求重传的不多。
  这样就出现了一个问题:负责安全检查的IPS采用的方式是前向的,还是后向的呢?目前大部分IPS厂商还不能确定其后边的服务器采用什么样的操作系统,无法自动匹配具体的应用环境,要两种方式都检查的话,需要设立双倍的缓冲区内存,显然是不划算的。因此,大部分厂家都只选择一种,比如是前向的,即分片重叠时,数据选择前一个编号的数据为准。