学习入侵躲避技术—理解AET

学习入侵躲避技术—理解AET

大家好,又见面了,我是全栈君。

什么是入侵躲避技术
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)
是黑客利用协议组合的技巧,躲过网络上安全措施的检查,成功抵达目标,实施入侵攻击。我更喜欢翻译成为高级躲避技术,或者是入侵躲避技术;躲避是指还处在你监视环境下继续生存,但我成功地“隐身”了自己,逃逸则是我设法逃出你的监视范围。入侵躲避技术的目的还是要入侵,而不是逃走了事。下图是入侵躲避技术的原理:
学习入侵躲避技术---理解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
厂商还不能确定其后边的服务器采用什么样的操作系统,无法自动匹配具体的应用环境,要两种方式都检查的话,需要设立双倍的缓冲区内存,显然是不划算的。因此,大部分厂家都只选择一种,比如是前向的,即分片重叠时,数据选择前一个编号的数据为准。
学习入侵躲避技术---理解AET
现在机会就来的,我们在分片1
后面加了随机数据,覆盖了分片2
的恶意代码部分,IPS
的协议栈中重组的数据包就是良性的数据包,成功地躲避了IPS
的安全检查。
而此时目标服务器的协议栈正好是后向方式,重叠部分采用分片2
的数据,重组的数据包正是原来的入侵数据包,目标服务器被实施攻击。
 
重叠分片适用于单向躲避,尤其是攻击前的扫描、漏洞溢出、提权等阶段。测试实际环境中IPS
是前向的还是后向的,是比较容易的,正常访问中带些恶意代码,测试一次就知道了。此后,就可以放心大胆地对IPS
后面采用不同协议栈的应用放手攻击了。
 
多线程躲避技术分析
多线程技术大家应该不陌生,很多下载工具都在使用。我们知道,每个连接传送数据包要一个一个地来,速度上是受限制的,不能充分利用网络带宽。多线程的意思就是在源和目的地址之间同时建立多个连接线程,把一个要下载的文件分成若干个部分,每个线程负责一个部分下载,当有线程闲置时,就继续传送下一个分块。接收方按照文件切片的偏移量与编号重组文件。
学习入侵躲避技术---理解AET
很显然,在每个线程中看到的全部数据流都是割裂的,小的、碎的数据块;对每一个线程的数据缓存,都不能进行有效的特征比对。由于IPS
厂商是针对连接建立应用缓冲区的,三个线程的数据分布在三个缓冲区中,并且每个分片的编号与位置信息,是收发双方的主控进程管理的,并非通用协议可知信息,因此,IPS
即使知道入侵者采用多线程在传送,也无法还原原始的数据包。并且,由于IPS
无法知道主控进程管理着哪些子线程,所以也无法判断哪些连接属于同一个多线程组合。
有人提出建议:多线程的特点是同源同目的地址,并且是同协议,还是同一个连接时段,有些安全策略甚至可以限制这样的连接对大个数为1
,限制使用多线程技术。
但入侵者完全可以让不同的线程采用不同的协议,只要是IPS
允许的协议都可以,如线程1
采用http
,线程2
采用FTP
,线程3
采用SNMP
。在IPS
看来,这完全就是同源同目的地址之间的三个业务连接,这这种业务模式是常见的,如员工连接到公司,发邮件,访问网站等。
 
多线程躲避技术适用于双向躲避,不同于加密通讯,又类似于加密技术。尤其是入侵者远程控制肉鸡时,多线程等于多条控制渠道,这些通道同时启动,避免有些通道被发现,或被关闭时,对肉鸡失控的状态;同时也可以避免有人冒充自己,利用自己的肉鸡。
 
小结:
    
这里只是对入侵躲避技术的一个初步认识,在今后的讨论中我们再将进一步分析各种躲避技术的原理与方法。





本文转自 zhaisj 51CTO博客,原文链接:http://blog.51cto.com/zhaisj/1173352,如需转载请自行联系原作者
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107966.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 因工作站与主要域间的信任关系失败而导致请求失败_此工作站和域控不信任

    因工作站与主要域间的信任关系失败而导致请求失败_此工作站和域控不信任在服务器的日志上,这个错误应该大家都不陌生了,错误的特征,我给大致描述一下:在域中总是会有计算机由于某种原因,导致计算机账户的密码无法和lsasecret同步系统会在计算机登陆到域的时候,提示已经丢失域的信任关系。日志大致如下:EventID:5SourceNETLOGONType  ErrorDescription  Thesessionsetupfromth…

    2022年10月18日
  • java string转换为integer(Java int最大值)

    String转换为int型//convertstr(String)toi(int)Stringstr;inti=Integer.parseInt(str);int型转换为String//converi(int)tostr(String)inti;Stringstr=i.toString();//converti(int)toj(Integer)inti;Inte

  • 数学励志公式:每天进步一点点「建议收藏」

    数学励志公式:每天进步一点点「建议收藏」​数学的魅力真是无穷的,不信,你往下看!单纯的一个数学公式都可以作为你的励志名言,还不好好学数学吗?勤学如初起之苗,不见其增,日有所长辍学如磨刀之石,不见其损,日有所亏。等式11.01365=37.80.99365=0.031.01^{365}=37.8\\0.99^{365}=0.031.01365=37.80.99365=0.03等式21.02365=1377.40.98365=0.00061.02^{365}=1377.4\\0.98^{365}=0.0006

  • 网页游戏怎么开发的_网页软件游戏开发

    网页游戏怎么开发的_网页软件游戏开发起步——此系列谨记录我步入页游开发队伍的历程。0.写在前面相信有很多和我一样的人,曾多次问google、问baidu、问各大论坛——如何开发游戏?开发游戏如何入门?由于游戏开发本身其复杂、庞大

  • 关于charles抓包https乱码的设置[通俗易懂]

    关于charles抓包https乱码的设置[通俗易懂]关于charles抓包https乱码的设置charles安装本地证书首先我们点击help->SSLProxying->InstallCharlesRootCertificate安装证书。默认安装证书是不受信任的,双击打开证书,打开信任选择项,将使用此证书时这是为始终信任。安装手机证书点击help->SSLProxying->Inst…

  • 回溯法解决01背包问题算法_01背包问题伪代码

    回溯法解决01背包问题算法_01背包问题伪代码0-1背包问题,在搜索过程中使用递归来完成。packagecom.test;classPack{intn=8;//物品个数intW=110;//背包总容量int[]Weights={1,11,21,23,33,43,45,55};//重量数组int[]Values={11,21,31,33,43,53,55,65};//价值数组intbestValu…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号