-
-
[原创]漏洞缓解技术整理总结
-
发表于:
2018-4-27 01:13
5483
-
通过在间接跳转前插入校验代码,检查目标地址的有效性,进而可阻止执行流跳到预期之外的地点,最终及时有并效的进行异常处理。
启用EPM后渲染过程将在拥有网络隔离的AppContainer沙箱内运行,阻止沙箱进程和本地机器建立连接,并且阻止它接受新的网络连接。(Internet Explorer中不同的安全设置对应不同的zone:Internet上的页面通常在Internet Zone里进行渲染,本地内网上的页面则在Local Intranet Zone里进行渲染)
https://paper.seebug.org/196/中提到,由Internet Explorer的PlainHostName规则可知,如果域名不包含任何句点,则将被自动映射到Local Intranet Zone。并且AppContainer的网络隔离功能仍允许沙箱进程向本地137端口发送UDP数据。所以可通过NetBIOS Spoofing注册符合条件的域名信息,遍历NBNS数据包中的负责校验的两字节TXID字段以获得正确结果。(该方法在MS16-077已被修复)
未开启GS时函数调用的系统栈的变化过程:
函数中的局部变量将从ESP所指的位置向下压栈,当写入的内存过大时,将会覆盖返回地址造成异常。
开启GS后,函数调用时会将一个DWORD随机数与ESP亦或后压入栈内,同时将其副本保存在.data段。在函数返回前,将有一个安全验证操作,防止函数返回地址被修改。
突破思路:覆盖异常处理机制
因为GS是在函数返回时检测,所以我们可以在返回前使程序发生异常,再覆盖异常处理函数达到EIP劫持。
SEHOP会检测SEH链的完整性,保证SEH链上最后一个异常处理函数是否为系统ntdll中的最终异常处理函数。
突破思路一:伪造SEH链
具体条件:
(1)当前覆盖Next SEH的值0xXXXXXXXX必须指向当前栈且能被4整除。
(2) 0xXXXXXXXX处存放为SEH最后一项,0xXXXXXXXX+4指向ntdll中最终异常处理函数
(3)未开启ASLR保护
突破思路二:覆盖虚表
常见的调用虚函数模式如:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2018-4-27 10:02
被luobobo编辑
,原因: