安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > WooYun > WooYun-Zone > 初中生用easyfuzzer 1.5挖掘WINXP播放器内存破坏漏洞

初中生用easyfuzzer 1.5挖掘WINXP播放器内存破坏漏洞

时间:2017-09-07来源: 作者:点击:
网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地
光刃 (用什么头像好呢?) | 2014-11-17 13:40

请在看这篇日志之前,先阅读下面这篇日志

小学生用easyfuzz 1.0 挖掘缓冲区溢出漏洞。

链接:http://www.asm64.com/Study001.html

Easyfuzzer 1.4开始支持智能fuzz。

详细的使用文档,请浏览网站:http://www.asm64.com/readme/readme.mht

这里我只简单的介绍一下:

到1.5为止,easyfuzzer已经支持4种函数类型。

分别是:

智能fuzz支持的语句简介:

第一种:

_num,参数1,参数2,参数3,参数4;

如:_num,100,1,0,32;

_num有四个参数:

参数一:是数值, 支持10进制类型(如 100,1234567,),也支持16进制类型(如100H,deaddeadh,)16进制字母大小写都可以,后面需要加h来和10进制数据加以区分。 //ANYUN.ORG

参数二:是数据是否可以变异,0为可以变异,1为不可以变异。变异是指以后生成的不同的样本中该数值都会进行变化。如果该数值设置成1(可以变异),那么对于参数一设置成什么值也就都没有什么区别了(参数一部进行解析了)

参数三:大小尾。 0表示小尾(小尾表示低位数据存储在低字节地址上),1表示大尾(大尾表示低位数据存储在高字节地址上)。

比如12345678H  如果是大尾,在内存中是12345678,如果是小尾,在内存中是78563412,

参数四:数值的大小,目前支持8位,16位,32位3种类型。  也就是1字节,2字节,4字节。

8位: 如AAH   16位 如AABBH  32位 如AABBCCDDH



以下表示都是正确的:

_num,11111111h,1,0,32;

_num,2222h,1,0,16;

_num,ffh,1,0,8;

_num,254,1,0,8;
//安云网咨询系统
_num,12345678h,1,0,32;

_num,AABBh,1,1,16;





第二种:

_str,参数1,参数2,参数3 ,参数4, 参数5 ,参数6;  

如:_str,helloworld,1,0,0,32,1;

_str有六个参数:

_str,helloworld,1,0,0,32,1;

参数一:字符串数值。直接填写数值即可如 helloworld。

参数二:该数值是否变化。0表示变化,1表示不变化。

参数三:字符串的长度,单位为字节。

参数四:字符串类型,0表示STR类型,1表示HEX类型。

如123456,如果是0,输出后内存中的数据是313233343536,如果是1,输出后内存的数据是123456.

参数五:前缀的大小。单位是字节数。有效值为0,8,16,32.

前缀用来表示该字符串的长度。如果您不需要该数值,设置成0就可以。

参数六:前缀的格式, 大尾或者小尾。 0表示小尾,1表示大尾。

//安云网,anyun.org







第三种:

_cal,addr,参数1,参数2,参数3

如: _cal,addr,32,0,3

参数1:表示计算结果的位数。 可选值为 8,16,32   分别表示8位,16位,32位。(即1字节 2字节 4字节)

参数2:结果的大小尾, 0表示小尾,1表示大尾。

参数3:计算目标(函数序列号)  上面例子是3,就是计算第三个函数的偏移地址。



第四种:

_cal,size,参数1,参数2,参数3,参数4

如:_cal,size,32,0,4,6

参数1:表示计算结果的位数。 可选值为 8,16,32   分别表示8位,16位,32位。(即1字节 2字节 4字节)

参数2:结果的大小尾, 0表示小尾,1表示大尾。

参数3:开始函数(函数序列号)

参数4:结束函数(函数序列号)

上面的例子,开始是4,结束是6,就是计算4-6 共3个函数的大小。 //ANYUN.ORG

注意:开始函数值不应该大于结束函数值





挖掘mid文件格式漏洞

我们的目标是windows xpxp3的媒体播放器

我们这里选择一款简单的文件格式。Mid文件格式。

下面是mid文件格式简介,详细信息请自行百度。

1.mid文件格式简介:  

一个MIDI文件基本上由两个部分组成,头块和轨道块。 具体信息请百度。

2.头块:

头块出现在文件的开头,头块看起来一直是这样的:

4D5468640000 0006 ffff nnnn dddd

4D5468640000表示头块的标示值

ffff是文件的格式,有3种格式:

nnnn 是MIDI文件中的轨道数。

dddd 是每个4分音符节奏数

3.轨道块:

4D54726B xxxxxxxx aaaaaaaaaaaaaaaa

4D54726B 表示轨道块的表示值

aaaaaaaa表示轨道块

xxxxxxxx表示轨道块的大小 //安云网咨询系统



我认为:除了头块和轨道块的标示值以外,所有的结构都应该作为fuzz的结构,当然您可以有自己的思路。



下面是我根据我对mid文件结构的了解,编写的一段代码:

_str,MThd,1,6,0,0,0;

_cal,size,16,1,1,1;

_num,ffffh,0,0,16;  

_num,ffffh,0,0,16;

_num,ffffh,0,0,16;

_str,MTrk,1,4,0,0,0;

_cal,size,16,1,8,8;

_str,fffffffffffffffffff,0,0,0,0,0;

第一行代码:头信息为MThd,长度为6的字符串类型

第二行代码:第一行代码解析字符串的长度,要求大尾形式。并且大小是16位

第三行代码:一个16位的数据,数据需要fuzz。

该数值为变异数值,所以第一个参数(FFFFH)是不解析的,些什么都一样

第四行和第五行类似于第三行

第六行类似与第一行

第七行:取第八行代码生成数据的大小,

//本文来自安云网



第八行:字符串类型,需要变异。表示轨道块。

1.png
2.png

输入我们的代码,输入后缀名,点击确定来生成畸形样本。

几秒钟的时间,我们已经生成了1万多个畸形样本,下面就需要对这些畸形样本进行fuzz测试了。



(如果你再此之前从来没有用过windows播放器,请先配置一下 否则不能成功挖掘漏洞)

这里修改一下配置信息。

在我的机器上,播放器处理一个样本大约需要2秒,所以我设置成每一个样本运行2秒。(数值设置太小会导致不能成功fuzz)

//copyright AnYun.ORG



由于该播放器特殊性,不能进行多线程运行,所以开启速率应该比运行时间略大,我这里设置成2.2秒

3.png

设置完毕后记得点击确定。

由于我们是靠代码生成的样本,因此就不需要模板文件了,如下图。然后点击FUZZING按钮
4.png

为了观察方便,您可以吧总在最前面按钮选上。当然你完全可以不选。

下面就是fuzz测试过程了,这个过程时间较长,您可以去喝一杯咖啡。不过我更喜欢喝苹果汁。

按照我的选项,完全测试完毕需要6个小时,当然你可以多开几个虚拟机用分布式挖掘。在一个i7 pc级cpu中,完全可以开6个虚拟机(需要较大的内存)这样一个小时就足够了。 //安云网咨询系统

由于时间原因,我这里提前结束了fuzz。

好消息是,我已经找到畸形样本了。

5.png

这时候我们去看看日志目录。目录在哪里呢?在选项菜单里面。

6.png

日志显示,因为除以0导致了崩溃。 我们下面手动测试下。

找到00000000.mid 和00000043.mid样本。


7.png

//copyright AnYun.ORG



8.png
有关该漏洞的详细信息,您可以访问

WooYun: Windows xp sp3   mspaint.exe拒绝服务漏洞



1.5测试版下载地址:

http://www.asm64.com/Soft/EasyFuzzer1.5BETA.zip



该版本bug很多,如果你不能容忍,请等待到本周四下载easyfuzzer 1.5正式版

//内容来自AnYun.ORG

分享到:
  1. 1#
    回复此人 感谢
    情逍遥 | 2014-11-17 13:43

    我要是年轻点,我相信我也能找出来! //本文来自安云网

  2. 2#
    回复此人 感谢
    insight-labs (Root Yourself in Success) | 2014-11-17 13:49

    高手在民间 //安云网,anyun.org

  3. 3#
    回复此人 感谢
    microwolf | 2014-11-17 13:50

    我要是年庆典,我相信我也能找出来!

    //本文来自安云网

  4. 4#
    回复此人 感谢
    zzzzy (我已然别无所求) | 2014-11-17 13:51

    光刃大牛  我是你的脑残粉

    //copyright AnYun.ORG

  5. 5#
    回复此人 感谢
    小龙 | 2014-11-17 13:55

    光牛、我是你脑残粉

    //copyright AnYun.ORG

  6. 6#
    回复此人 感谢
    孤月寒城 (握了棵草) | 2014-11-17 14:23

    光刃大牛  我是你的脑残粉 //本文来自安云网

  7. 7#
    回复此人 感谢
    ′ 雨。 | 2014-11-17 14:24

    之前不是小学生会吗。  

    //ANYUN.ORG

    现在咋初中生了。
    难度增加了。。

    //安云网,anyun.org

  8. 8#
    回复此人 感谢
    DM_ (http://x0day.me) | 2014-11-17 14:28

    光刃大牛 我是你的脑残粉 //内容来自安云网

  9. 9#
    回复此人 感谢
    光刃 (用什么头像好呢?) | 2014-11-17 14:34

    @′  雨。 现在easyfuzzer有2个模块,通用fuzz和智能fuzz

    //ANYUN.ORG

    通用fuzz适合文件格式较简单的格式,对于复杂格式无能为力。可以0基础上手的,所以是小学生。
    智能fuzz需要用户自己写代码来解析,对文件格式需要有了解才可以使用,优点是可以对复杂文件格式进行fuzz,所以就是初中生咯。 //本文来自安云网

  10. 10#
    回复此人 感谢
    寂寞的瘦子 (整天嘻嘻哈哈。) | 2014-11-17 15:15

    求大学生版本

    //内容来自AnYun.ORG

  11. 11#
    回复此人 感谢
    Jason (我是来拯救地球的!) | 2014-11-17 15:41

    求幼儿版

    //内容来自AnYun.ORG

  12. 12#
    回复此人 感谢
    wefgod (求大牛指点) | 2014-11-17 16:09

    初中生版了啊

    //安云网咨询系统

  13. 13#
    回复此人 感谢
    泳少 (此号被射!by U神) | 2014-11-17 16:19

    光哥你好!~ //本文来自安云网

  14. 14#
    回复此人 感谢
    wefgod (求大牛指点) | 2014-11-17 16:23

    周四我也要做初中生试试。

    //copyright AnYun.ORG

  15. 15#
    回复此人 感谢
    刘海哥 (‮moc.ghuil.www) | 2014-11-17 18:30

    光刃大牛  我是你的脑残粉 //内容来自AnYun.ORG

  16. 16#
    回复此人 感谢
    H1d3r (ﭐٍّHello) ‮(!dlrow‮) | 2014-11-18 15:51

    why are you so diao! //安云网,anyun.org

  17. 17#
    回复此人 感谢
    0x12 (帽子掉了|多逛,少说话。|小学生                                                                                                                                                                                                                                               ) | 2014-11-18 16:23

    火后刘明 //内容来自安云网

  18. 18#
    回复此人 感谢
    老笨蛋 | 2014-11-18 18:30

    光刃大牛  我是你的脑残粉 //本文来自安云网

  19. 19#
    回复此人 感谢
    laoyao (hello world) | 2015-01-07 19:35

    我在@光刃 群里面 ,

    //安云网,anyun.org

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容