《metasploit渗透测试魔鬼训练营》学习笔记第六章--客户端渗透
四.客户端攻击
客户端攻击与服务端攻击有个显著不同的标识,就是攻击者向用户主机发送的恶意数据不会直接导致用户系统中的服务进程溢出,而是需要结合一些社会工程学技巧,诱使客户端用户去访问这些恶意数据,间接发生攻击。
4.1客户端渗透攻击的安全防护机制
①DEP
DEP(数据执行保护)基本原理是操作系统通过设置内存页的属性,指明数据所在的内存页为不可执行。
②ASLR
ASLR(地址空间布局随机化)是系统在运行程序时,不用固定的基地址加载进程及相关工作库文件。
包括:堆地址的随机化,栈基址的随机化,PE文件映像基址的随机化,PEB,TEB地址的随机化。
4.2.针对浏览器的渗透攻击
4.2.1浏览器渗透
针对浏览器本身的渗透攻击和对内嵌的第三方插件的渗透攻击
4.2.2堆喷射
客户端渗透攻击经常用到这一技术。攻击者在溢出漏洞之前,在堆区申请大量充满空指令的内存块,每个内存块都尾随shellcode,然后,在溢出时,修改溢出之后的返回地址到这个空间。在浏览器攻击中,一般都会用javascript脚本进行堆喷射。这里不再详解堆喷射技术。
4.2.3MSF中的自动化浏览器攻击
metasploit框架中包含一些针对浏览器及插件的模块,并且还提供了辅助模块 server/browser——autopwn,它在接到来自浏览器的请求后,会依次做三个操作:提取浏览器指纹,自动化渗透,列出渗透模块,但是他不会列出第三方插件的利用模块,因为它无法提取到插件的指纹。
4.3针对应用软件的渗透攻击
对于这类安全漏洞,攻击者一般会恶意构造符合正常文件格式的畸形文件,来进行漏洞利用。
4.3.1内存攻击技术ROP的实现
攻击者在溢出程序后,并不执行栈中的shellcode,而是寻找程序已加载模块中的一些特殊指令块,配合栈上的压栈参数,返回地址等数据,将这些孤立的指令块联系起来,从而实现一定的功能,最终完成远程代码执行的目标。但是在哪些苛刻的坏字符的限制条件下,实现的难度太大,根据这个思想,现在有很多技术绕过DEP
1.将包含shellcode的内存页面设置为可执行状态。
2.先利用virtualalloc函数开辟一段具有执行权限的内存空间,然后将shellcode复制到这段代码中
3.通过一些函数直接关掉DEP机制,常用的有ZwSetInformation函数