记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

地址空间布局随机化(ASLR)

2017-09-09 02:15

作者:{Biubiubiu2}@ArkTeam

ASLR(Address Space Layout Randomization,地址空间布局随机化)是一种针对缓冲区溢出的安全保护技术。借助ASLRPE文件每次加载到内存的起始地址都会随机变化。目前大部分主流操作系统都已经实现了ASLR,如Windows VistaLinux 2.6.12Mac OS X 10.7iOS 4.3以及Android 4.0均从此版本开始支持ASLR

微软采用这种方式的目的是想要增加系统的安全性。在经典的栈溢出模型中,攻击者可以通过覆盖函数的返回地址,以达到控制程序执行流程的目的。通常将返回地址覆盖为0x7FFA4512 ,即JMP ESP指令。如果此时ESP刚好指向栈上布置的Shellcode,则Shellcode被执行。


1 栈溢出模型

在以此类漏洞为目标的漏洞利用代码(Exploit code)中,必须确定一个明确的跳转地址,并以硬编码形式编入。在Vista之前的操作系统里,DLL会加载到固定地址,例如,在Win32系统中EXE文件的ImageBase默认为0x00400000DLL文件为0x10000000ASLR的加入,使得加载程序的时候不再使用固定的基址,从而干扰Shellcode定位。

ASLR需要操作系统和程序自身的双重支持,操作系统方面从Windows Vista开始采用该技术,编译器上于Visual Studio 2005 SP1加入/dynamicbase链接选项支持随机基址:


图2 VS编译选项

在支持ASLRPE文件中,会多出两个“.reloc”节区以及“IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE”的标志。


图3 PE文件

ASLR虽然增加了编写恶意代码的难度,但是仍存在很多绕过方式,如攻击未启用ASLR的模块、堆喷射(HeapSpray)、覆盖部分返回地址、Java applet heap spray等。因此,想要真正防御缓冲区溢出,还需要综合使用多种安全保护技术。

知识来源: www.arkteam.net/?p=2728

阅读:165997 | 评论:0 | 标签:ArkName

想收藏或者和大家分享这篇好文章→复制链接地址

“地址空间布局随机化(ASLR)”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

九层之台,起于垒土;黑客之术,始于阅读

推广

工具

标签云