欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

Heap Spray 技术要点

Heap Spray 技术要点


主页:http://riusksk.blogbus.com
1、堆喷射堆块大小 ≈ 程序堆块分配大小,以减小堆空隙大小。
 
2、不能使用堆缓存块,否则可能破坏地址的可预测性,可通过申请6块相应大小的堆块来清空缓存。
 
3、精确定位ROP地址,目标地址如0x0c0c0c0c至堆块数据起始地址的offset = ( 0x0c0c0c0c - UserPtr(堆数据起始地址))/2,IE7:0x5FA,IE8:0x5F4/0x5F6,IE9:0x5FC/0x5FE,Firefox9:0x606,可能不同语言版本会存在偏差。
 
4、不同系统、不同浏览器版本喷射块大小:
XP SP3 – IE7    block = shellcode.substring(2,0x10000-0×21);
XP SP3 – IE8    block = shellcode.substring(2, 0x40000-0×21);
Vista SP2 – IE7  block = shellcode.substring(0, (0x40000-6)/2);
Vista SP2 – IE8  block = shellcode.substring(0, (0x40000-6)/2);
Win7 – IE8    block = shellcode.substring(0, (0x80000-6)/2);
Vista/Win7 – IE9  block = shellcode.substring(0, (0x40000-6)/2);
XP SP3/VISTA SP2/WIN7 - Firefox9  block = shellcode.substring(0, (0x40000-6)/2);
 
5、Nozzle保护机制(IE):检测是否存在重复可转换成汇编代码的字段,若存在则阻止其内存申请。
 
6、BuBBle保护机制(Firefox):检测JavaScript是否尝试重复申请 NOPs + shellcode (padding + rop chain + shellcode + padding)的内存块,若发现包含这些字段则阻止其内存申请。
 
7、分配 随机数 + rop + shellcode + 随机数 的堆块,以保证各分配块都是不同的,以此绕过上述保护机制,主要针对IE9。
 
8、利用随机变量名 + 随机块绕过 Firefox9 的保护。
 
9、HTML5 Heap Spray:EUSecWest2012上的演讲主题,通杀Chrome、Firefox、IE9和Safari
a、利用canvas标签定义图形,通过脚本控制每个像素的数据再进行喷射;
b、利用Web Worker的多线程功能,加速堆喷射过程,但IE不支持Worker。

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功