前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通用缓解措施和多维度攻击简介

通用缓解措施和多维度攻击简介

作者头像
安恒信息
发布2018-04-11 15:36:35
1.1K0
发布2018-04-11 15:36:35
举报
文章被收录于专栏:安恒信息安恒信息

  DEP(Data Execution Prevention,数据执行保护)这东西很多人都知道,但ASLR(Address space layout randomization,地址空间随机化)估计知道的人少一点,它们都属于现代操作系统中两个主要的缓解(Mitigation)措施,现在基本已经成为标配,从Windows Vista到Apple iOS等,都包含了这种技术来阻止或缓解基于内存攻击漏洞的利用,就是人们常说的缓冲区溢出漏洞的利用。

  这些技术的实现极大的增加了内存攻击漏洞的利用难度,硬件DEP启用后使得在溢出成功后在堆栈中直接执行代码的效果成为历史,从而使得针对此类漏洞的利用不得不采取ROP(Return-oriented programming,返回导向编程)技术来构造先关闭进程DEP,或开辟一块可读写加执行权限的内存空间再执行Shellcode代码的ROP链,这是整个漏洞利用代码的Payload中最繁琐的部分,虽然ROP这种技术在绕DEP保护的利用上还算可以成功,但要针对各种系统语言版本和SP版本的情况构造不同的ROP链,通用性就极差了,更重要的是这只解决了DEP的问题,如果是Windows Vista以上的系统,还有ASLR呢?ASLR启用的情形下,ROP技术依赖的函数基址是动态变化的,微软他们想啊,我阻止不了你ROP,我用这种方式缓解行么!让你利用的难度增大!增加你的漏洞利用成本,让你坚持不下去,玩不下去就放弃了,这样想有点天真了。

  在有ASLR的情形下,最直接的方式是找到一个noASLR的模块,虽然系统原生的模块基本都支持ASLR了(Windows 7下出个漏网之鱼),但noASLR模块的函数基址还是固定的,还可以利用,因为ASLR本身并不是一种通用标准,只是一种技术,不遵从它的软件厂商还很多,最直接的表现就是开发团队守旧的不用支持ASLR的编译器来编译代码,固执的还用VC6就是一个灾难。但即使全部都是ASLR的模块,是不是就真的没可能利用成功了,答案是否定的,利用代码需要的基址还是可以通过触发漏洞,比如堆溢出,或是其他任何能实现内存越界读写的溢出漏洞把基址先给泄露出来,保存指针然后通过数学运算,例如加减法来定位到需要调用函数的地址从而又走回ROP的路,最终又可以成功利用了,不过利用代码量比ROP又多了很多,都是汇编代码,干这种活是最苦闷的,一般不太适合性格比较开朗的活泼少年。

  总之,现代操作系统和编译器的更新对内存攻击的利用进行了多重封杀,客户端的程序,比如IE还有沙箱技术,通常针对内存攻击主要利用点EIP的控制和函数基址,软件厂商,安全公司对此煞费苦心,比如360就在XP系统上实现了原本并没有的ASLR技术,使得在XP靶场挑战赛上没有被攻破,能通过逆向分析来寻找突破,漏洞利用中要实现精确的堆布局是一个难点,考验研究员的功力,特别是在原生64位下堆喷射的命中率已变得很低的情况下,最近的几界Pwn2Own大赛的成功攻破,基本都是堆上精确布局利用的实现。

  那么,EIP的控制争夺是不是真的走到了尽头,在二进制中我们确实要考虑这个,因此不得不思考不同的维度。很多人不禁要问为什么一定是EIP,系统原生有没有其他的路?比如COM,解释语言JScript,VBScript它们跟CPU指令有什么不一样,解释语言也能实现各种功能,如何利用它们?解释语言有虚拟机,数组在内存中的形态是什么,能利用么?答案是肯定的。yuange的DVE(数据虚拟执行)技术,TK的脚本维度就是其中之一,避免直接二进制对抗二进制,在解释语言层布局代码,通过数学运算实现堆的分配和布局,从而走不同的维度,跟针对EIP的检测不在一个空间,不直接对抗DEP和ASLR,活在另一个世界,一个没有DEP和ASLR的世界,攻防技术中最精妙的世界。

  总体来说,在内存攻击方向,现在寻求利用方法的通用性还是相当困难的,主流的方向还是构造针对基于特定漏洞的利用方法,针对比如:Stack Buffer Overflow(栈缓冲区溢出)、Heap Buffer Overflow(堆缓冲区溢出)、Format String(格式化字符串)、Out-of-Bounds Read(内存越界读)、Off-by-One(内存越界写)、Use After Free(释放后重用)、Double Free(二次释放)、Memory Corruption(内存腐败)、Integer Overflow(整型溢出)等漏洞类型在特定目标环境下的利用,主要依赖特定目标的环境因素来构造攻击代码的思路。不论是ROP还是其他多维度,能用最简单直接的方法打下目标亦是最重要的,也是作为一个安全攻防技术研究员应该思考的问题,随着近年来泄漏的用于APT行动的0day来看,由于防御一方缓解措施的作用,针对某些环境或目标组织的攻击,攻击者甚至需要多个0day组合来提高成功率。而对于系统原生外的保护,比如反APT设备的引入,攻击代码要考虑的因素更多,因此必须得考虑更多维度的事情。

关于“分子实验室”

  分子实验室是安恒信息安全服务团队成立的内部研究实验室,目前主要涉及有网络自动化渗透测试技术研究(AdvancedPenetration Testing)、Web漏洞挖掘和利用技术研究(Web Security Vulnerabilities)、源代码安全漏洞分析技术研究(Source Code Security Analysis)、二进制代码漏洞挖掘技术研究(Binary Code Analysis & Fuzzing)、安全开发生命周期实践研究(Security Development Lifecycle (SDL))等方向的安全技术研究,务实不务虚,研究的东西都是实用的,SDL去年已经向客户推广并取得良好的认同。

  同时,《反0day策略》是面向高端客户推出的技术性解决方案,安全开发生命周期是其中的重要支撑,是帮助客户真正修炼内功的《易筋经》,不论是研究攻击和防御技术的,深入了解敌人才更有可能超越它,欢迎和我们讨论以及共同研究攻防技术,共同进步。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安恒信息 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档