Home

Awesome

The BFuzzer Document


BFuzzer是一个使用Python开发的简单的浏览器内存破坏漏洞挖掘框架,当前版本为BFuzzer-2.0

运行平台

基本组成

BFuzzer 由主要两部分组成:servermoniter

server

server作为一个简单的WEB服务器:

moniter

moniter负责控制浏览器行为:

运行原理

moniter启动浏览器,hook浏览器的异常处理,强制浏览器访问http://host:port/init,**init**代表初始化页面,该页面内容较为简单,即通过包含

<meta http-equiv="refresh" content="3;url=http://host:port/next" />

的方式使浏览器在3秒后请求真正的样本http://host:port/next。

样本由根据fuzz策略编写的生成算法生成,生成的样本提供给serverserver会在收到类似http://host:port/next时获取下一个待测试的**样本**,返回给浏览器。

不考虑具体内容,样本内容为:

<html>
<head>
<meta http-equiv="refresh" content="30; url=http://hostLpoer/next/long" />
<script>
// ...
// 随机生成的JS操作
// ...
window.location.href = 'http://host:port/next';
</script>
<head>
<body>
<!--
   随机生成的HTML标签内容
-->
</body>
</html>

样本控制浏览器在运行完本样本后获取并运行下一个样本

如果浏览器幸运地发生了崩溃,进入异常处理,crasher有机会向server请求http://host:port/cur获取当前的样本并默认保存在```logs/```目录中,同时在同一目录下保存崩溃信息,即```poc-*.html```和```crash-*.html```,**poc样本**和**crash信息**相互对应;同时,*moniter*也会请求http://host:port/cur获取当前样本并在同一目录下保存为```dos-*.html```,这个设计是为了防止偶然发生的*crasher*没有将相关信息成功保存而设计的,不喜欢的话注释几行代码即可。

安装使用

安装

  1. 下载安装python 2 (本人使用Python 2.7.8);
  2. 下载安装pydbg库;
  3. 下载BFuzzer压缩包并解压缩。

使用

  1. 了解BFuzzer基本原理;
  2. 运行server.py : python server.py
  3. 运行moniter.py : python moniter.py

建议

  1. 关闭浏览器崩溃自动恢复功能,允许本地执行脚本
  2. 运行前关闭即时调试功能: 32位Windows设置注册表项[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug]的Auto值为0 64位Windows设置注册表项[HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Windows NT/CurrentVersion/AreDebug/Debugger]的Auto值为0
  3. 禁用MS14-037增加的对象延迟释放机制: 设置注册表项[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_MEMPROTECT_MODE]的iexplore.exe值为0

下一步?

写自己的fuzz策略,可以参考一系列会议论文。


版本更新

2014.11.24

版本历史

2014.11.3

2014.10.24