扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
什么是入侵躲避技术
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. 网络入侵躲避技术:躲避网络上的安全检查,如FW\IDS\IPS\WAF\UTM等,其中主要部分是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厂商还不能确定其后边的服务器采用什么样的操作系统,无法自动匹配具体的应用环境,要两种方式都检查的话,需要设立双倍的缓冲区内存,显然是不划算的。因此,大部分厂家都只选择一种,比如是前向的,即分片重叠时,数据选择前一个编号的数据为准。
现在机会就来的,我们在分片1后面加了随机数据,覆盖了分片2的恶意代码部分,IPS的协议栈中重组的数据包就是良性的数据包,成功地躲避了IPS的安全检查。
而此时目标服务器的协议栈正好是后向方式,重叠部分采用分片2的数据,重组的数据包正是原来的入侵数据包,目标服务器被实施攻击。
重叠分片适用于单向躲避,尤其是攻击前的扫描、漏洞溢出、提权等阶段。测试实际环境中IPS是前向的还是后向的,是比较容易的,正常访问中带些恶意代码,测试一次就知道了。此后,就可以放心大胆地对IPS后面采用不同协议栈的应用放手攻击了。
多线程躲避技术分析
多线程技术大家应该不陌生,很多下载工具都在使用。我们知道,每个连接传送数据包要一个一个地来,速度上是受限制的,不能充分利用网络带宽。多线程的意思就是在源和目的地址之间同时建立多个连接线程,把一个要下载的文件分成若干个部分,每个线程负责一个部分下载,当有线程闲置时,就继续传送下一个分块。接收方按照文件切片的偏移量与编号重组文件。
很显然,在每个线程中看到的全部数据流都是割裂的,小的、碎的数据块;对每一个线程的数据缓存,都不能进行有效的特征比对。由于IPS厂商是针对连接建立应用缓冲区的,三个线程的数据分布在三个缓冲区中,并且每个分片的编号与位置信息,是收发双方的主控进程管理的,并非通用协议可知信息,因此,IPS即使知道入侵者采用多线程在传送,也无法还原原始的数据包。并且,由于IPS无法知道主控进程管理着哪些子线程,所以也无法判断哪些连接属于同一个多线程组合。
有人提出建议:多线程的特点是同源同目的地址,并且是同协议,还是同一个连接时段,有些安全策略甚至可以限制这样的连接对大个数为1,限制使用多线程技术。
但入侵者完全可以让不同的线程采用不同的协议,只要是IPS允许的协议都可以,如线程1采用http,线程2采用FTP,线程3采用SNMP。在IPS看来,这完全就是同源同目的地址之间的三个业务连接,这这种业务模式是常见的,如员工连接到公司,发邮件,访问网站等。
多线程躲避技术适用于双向躲避,不同于加密通讯,又类似于加密技术。尤其是入侵者远程控制肉鸡时,多线程等于多条控制渠道,这些通道同时启动,避免有些通道被发现,或被关闭时,对肉鸡失控的状态;同时也可以避免有人冒充自己,利用自己的肉鸡。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者