客户端渗透攻击
客户端渗透攻击 攻击者构造畸形数据发送给目标主机,用户在使用含有漏洞缺陷的客户端应用程序处理这些数据时,发生程序内部处理流程的错误,执行了内嵌于数据中的恶意代码,从而导致被渗透入侵。
安全防护机制
- DEP
DEP(数据执行保护)基本原理是操作系统通过设置内存页的属性,指明数据所在的内存页为不可执行。如果在这种页面执行指令,CPU会抛出异常。AMD:No-Execute Page-Protection(NX),Intel: Execute Disable Bit (XD)。 - ASLR
ASLR(地址空间布局随机化)指的是系统在运行程序时,不用固定的基地址加载进程及相关的库文件。主要包括:堆地址的随机化,栈基址的随机化,PE文件映像基址的随机化,PEB,TEB地址的随机化。
针对浏览器的渗透攻击
- 浏览器本身
- 浏览器内嵌第三方插件
堆喷射 Heap Spraying
在溢出漏洞之前,在堆区申请大量充满空指令的内存块,每个内存块都尾随Shellcode。然后,在溢出时,根据内存块总体的大小,修改溢出之后的返回地址到这个堆空间。由于,空指令在这个空间中占据了绝大多数,所以,大部分情况况下,这个修改之后的返回地址应该在空指令区,而不是Shellcode所在的地址空间。当跳转到这段空间时,程序将会先执行空指令,进而滑行到Shellcode。
MSF自动化浏览器攻击
server/browser_autopwn
自动化获取目标浏览器信息
内存攻击技术ROP实现
用于绕过DEP保护机制
- 将包含Shellcode的内存页面设置为可执行状态,比如利用VirtulProtect修改含有Shellcode内存页面的属性。
- 先利用VirtualAlloc函数开辟一段具有执行权限的内存空间,然后将Shellcode复制到这段代码中。
- 通过一些函数直接关掉DEP机制,常用的有ZwSetInformation函数。
IE8
利用IE8自身加载JRE中的msvcr71.dll空间代码,去调用VirtulProtect函数修改堆页面的属性,使其可以执行
MS11-050
ROP技术的精髓,就在于利用retn
指令配合栈中数据定制程序流程,从目标程序已装载代码中搜索一些代码片段进行组装,从而帮助攻击者绕过DEP堆栈不可执行的保护机制。