首页
社区
课程
招聘
[原创]结合一个野外样本构造一个cve-2016-7193弹计算器的利用
发表于: 2017-10-14 00:21 24068

[原创]结合一个野外样本构造一个cve-2016-7193弹计算器的利用

2017-10-14 00:21
24068

这篇文章是我在构造完cve-2015-1641 exp的基础上写的,但cve-2015-1641的分析文章比较多,所以这里先发cve-2016-7193的exp构造思路,1641的exp构造有空再补充。


基于样本:

本次构造需要注意以下几点:

构造 bypass_aslr简单,和cve-2015-1641一样即可:

触发漏洞也简单,直接挪过来漏洞触发控制字部分即可:

难点在于构造能布控内存弹出计算器的堆喷射样本,下面进行构造。


原始rtf样本里面涉及到Word.Document.12控制字的有两处,但其实第一处无实际价值,第二处经验证为堆喷射所需的docx


下面开始提取第二个Word.Document.12, rtfobj.py初始提取失败,检查后发现是因为有混淆:


把红框处的内容删除后即可,删除其余冗余部分,只保留堆喷射部分,再次提取如下:

定位到rop部分,可以看到原始样本用了512个pattern来进行内存布控,除了第一个外后面511个pattern完全一样:



看一下该 ActiveX87.bin 的布局:


我们的目的是替换里面的内容,使之弹出一个计算器。


调试的文件版本:


调试发现:



留给我们自己的shellcode的空间比cve-2015-1641小多了(如果读者调过1641的话),所以我们采用严格遵从原始文档字节分布构造,只替换红框和蓝框圈出的9B9B9B...开始的shellcode部分,这部分的大小为 346字节,如下:


这里要说明的一点是原作者为精确控制堆喷射内存大小为1fffc0,最后一个pattern和前面510个及第一个略有不同,最后一个pattern缺少10个字节,目的是为了按32对齐:




[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (29)
雪    币: 4230
活跃值: (1435)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
2
2017-10-14 10:28
0
雪    币: 355
活跃值: (281)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
3
不明觉厉,感谢分享
2017-10-14 12:24
0
雪    币: 8662
活跃值: (4618)
能力值: ( LV15,RANK:800 )
在线值:
发帖
回帖
粉丝
4
BDomne 感谢分享!这篇文章有说rtf混淆189K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2K6L8%4m8Z5L8%4y4Q4x3X3g2U0L8$3#2Q4x3V1k6W2L8W2)9J5k6s2g2K6i4K6u0r3L8h3g2V1K9h3q4D9K9h3u0J5j5i4u0&6i4K6u0r3f1p5c8r3M7#2)9J5c8Y4c8W2j5$3S2F1K9h3y4S2L8q4)9J5k6s2m8S2M7r3g2J5M7#2)9J5c8V1y4h3c8g2)9J5k6o6t1H3x3e0u0Q4x3X3b7H3x3e0f1^5i4K6u0V1b7h3&6Q4x3X3c8m8L8X3p5`. ...
我就是按照这篇文章的思路来的,把activeX文件里和引用文件里的clsid都换成不存在的COM控件(例如全为0)后,堆喷效率明显提升了,基本上几秒钟就可以
2017-10-14 18:52
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不错!
2017-10-14 21:30
0
雪    币: 206
活跃值: (108)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
6
涨知识了
2017-10-16 10:15
0
雪    币: 1101
活跃值: (158)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
7
请教一下  怎么手动替换rtf文档中嵌入的docx文档?我发下如果只替换16进制编码的docx文档的内容,rtf依然显示原docx文档的预览图片
2017-10-31 21:58
0
雪    币: 8662
活跃值: (4618)
能力值: ( LV15,RANK:800 )
在线值:
发帖
回帖
粉丝
8
QuietBar 请教一下 怎么手动替换rtf文档中嵌入的docx文档?我发下如果只替换16进制编码的docx文档的内容,rtf依然显示原docx文档的预览图片
你把  {\object\objemb\objsetsize\objw1538\objh1113{\*\objclass  Word.Document.12}{\*\objdata  ...}之间的数据替换掉,就相当于把一个嵌入的ole对象替换掉了,这个时候不可能还会显示之前的图片,除非这张图片嵌入在另一个ole对象中。你可以先新建一个空白rtf文档,然后往里面拖一个doc文档进去,保存后用文本编辑器比对一下多了哪些字节,这个时候你会很清楚插入一个doc文档会在原rtf样本中增加哪些数据。动手做一遍,贵在实践~~
2017-10-31 22:14
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你好  样本哪里有啊  能否分享下
2017-11-8 15:53
0
雪    币: 4230
活跃值: (1435)
能力值: (RANK:270 )
在线值:
发帖
回帖
粉丝
10
simiden 你好 样本哪里有啊 能否分享下
发篇精华就能找到了
2017-11-8 17:16
0
雪    币: 984
活跃值: (104)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
能否研究一下脚本怎么写
2018-7-31 18:07
0
雪    币: 8662
活跃值: (4618)
能力值: ( LV15,RANK:800 )
在线值:
发帖
回帖
粉丝
12
596K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2S2L8Y4q4#2j5h3&6C8k6g2)9J5k6h3y4G2L8g2)9J5c8Y4m8G2M7%4c8Q4x3V1k6A6k6q4)9J5c8U0R3%4x3e0t1J5i4K6t1$3L8X3u0K6M7q4)9K6b7W2!0q4y4g2)9^5c8W2)9^5x3W2!0q4z5q4)9^5x3q4)9^5x3#2!0q4z5q4!0n7c8W2)9&6z5g2!0q4y4#2!0m8c8W2)9^5y4#2!0q4y4#2)9&6b7g2)9^5y4q4!0q4y4g2)9^5z5q4!0m8z5g2!0q4y4#2)9&6y4q4!0m8z5q4!0q4y4#2!0n7b7#2)9&6y4W2!0q4y4g2)9^5y4W2)9&6z5g2!0q4z5g2)9^5x3#2!0m8z5q4!0q4y4g2)9^5z5q4)9^5y4R3`.`.
2018-8-1 23:18
0
雪    币: 8662
活跃值: (4618)
能力值: ( LV15,RANK:800 )
在线值:
发帖
回帖
粉丝
13
0dbK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2S2L8Y4q4#2j5h3&6C8k6g2)9J5k6h3y4G2L8g2)9J5c8Y4m8G2M7%4c8Q4x3V1k6A6k6q4)9J5c8U0R3%4x3e0t1J5i4K6t1$3L8X3u0K6M7q4)9K6b7W2!0q4y4g2)9^5c8W2)9^5x3W2!0q4z5q4)9^5x3q4)9^5x3#2!0q4z5q4!0n7c8W2)9&6z5g2!0q4y4#2!0m8c8W2)9^5y4#2!0q4y4#2)9&6b7g2)9^5y4q4!0q4y4g2)9^5z5q4!0m8z5g2!0q4y4#2)9&6y4q4!0m8z5q4!0q4y4#2!0n7b7#2)9&6y4W2!0q4y4g2)9^5y4W2)9&6z5g2!0q4z5g2)9^5x3#2!0m8z5q4!0q4y4g2)9^5z5q4)9^5y4R3`.`.
2018-8-1 23:19
0
雪    币: 226
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
请教一下 我将原样本中提取出来的堆喷射的对象(doc)手动拖到一个空白的rtf文件中然后保存,用notepad++打开这个rtf文档,提取出{\object...}闭合的部分,将这个部分添加到一个新的rtf中,运行这个新rtf文件,并没有发生堆喷射,这是为啥啊,有哪位大神可以解答一下
2018-9-17 22:56
0
雪    币: 1327
活跃值: (64)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
学习了。大佬,能不能有空的时候开贴讲一下在野的flash 漏洞调试技巧之类的。多谢!!
2018-9-18 22:59
0
雪    币: 2170
活跃值: (2354)
能力值: ( LV12,RANK:270 )
在线值:
发帖
回帖
粉丝
16
利用生成的axtiveX1.bin文件作为输入生成堆喷射docx文档  ,这个是怎样生成的,可以发一份脚本呢,楼主。我尝试着把这些文件夹重新打包回去,但是并没有思路,只是可以用python脚本,读取内容,怎么打包回去呢
2019-5-27 19:56
0
雪    币: 8662
活跃值: (4618)
能力值: ( LV15,RANK:800 )
在线值:
发帖
回帖
粉丝
17
与时尽现。 利用生成的axtiveX1.bin文件作为输入生成堆喷射docx文档 ,这个是怎样生成的,可以发一份脚本呢,楼主。我尝试着把这些文件夹重新打包回去,但是并没有思路,只是可以用python脚本,读取内 ...
ActiveX1.bin的构造可以参考:9ecK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2S2L8Y4q4#2j5h3&6C8k6g2)9J5k6h3y4G2L8g2)9J5c8Y4m8G2M7%4c8Q4x3V1k6A6k6q4)9J5c8U0R3%4x3e0t1J5i4K6t1$3L8X3u0K6M7q4)9K6b7W2!0q4z5q4!0n7c8W2)9&6z5g2!0q4y4#2!0m8c8W2)9^5y4#2!0q4y4#2)9&6b7g2)9^5y4q4!0q4y4g2)9^5z5q4!0m8z5g2!0q4y4#2)9&6y4q4!0m8z5q4!0q4y4W2)9&6c8g2)9^5y4q4!0q4z5g2)9^5x3q4!0m8x3q4!0q4z5g2)9^5x3#2!0m8z5q4!0q4y4g2)9^5z5q4)9^5y4W2!0q4x3#2)9^5x3q4)9^5x3W2!0q4y4g2!0n7x3q4)9^5y4V1q4U0N6r3W2$3k6g2R3I4i4K6u0W2j5X3W2F1i4@1f1$3i4K6R3&6i4K6V1K6i4@1f1#2i4K6S2o6i4K6R3#2i4@1f1#2i4K6W2n7i4K6W2q4i4@1f1#2i4K6S2q4i4@1u0n7i4@1f1#2i4K6S2r3i4@1q4r3i4@1f1@1i4@1u0n7i4@1p5#2i4@1f1%4i4K6V1@1i4@1p5^5y4%4A6Q4c8e0N6Q4b7f1c8Q4z5o6W2Q4c8e0g2Q4z5p5g2Q4z5p5u0Q4c8e0N6Q4b7V1y4Q4b7e0W2Q4c8e0S2Q4b7V1c8Q4b7f1k6Q4c8e0c8Q4b7V1u0Q4b7U0k6Q4c8f1k6Q4b7V1y4Q4z5p5y4s2g2f1W2Q4c8e0N6Q4z5e0g2Q4z5p5y4Q4c8e0W2Q4z5f1c8Q4b7e0u0Q4c8e0k6Q4z5o6W2Q4z5e0y4Q4c8e0g2Q4b7V1y4Q4z5o6m8Q4c8e0g2Q4z5e0m8Q4z5p5g2Q4c8e0N6Q4z5f1u0Q4b7U0c8Q4c8e0k6Q4z5p5g2Q4b7e0g2Q4c8e0k6Q4z5f1u0Q4b7V1k6Q4c8e0k6Q4z5p5c8Q4b7e0u0Q4c8e0g2Q4b7f1k6Q4b7U0W2Q4c8e0g2Q4b7V1q4Q4z5e0c8Q4c8e0k6Q4z5e0k6Q4z5o6N6Q4c8e0c8Q4b7V1u0Q4b7U0k6Q4c8e0g2Q4b7U0m8Q4b7U0q4Q4c8e0S2Q4b7e0q4Q4z5p5y4Q4c8e0y4Q4z5o6m8Q4z5o6u0Q4c8e0k6Q4b7f1c8Q4b7e0c8Q4c8e0g2Q4b7e0c8Q4z5e0k6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0S2Q4b7V1k6Q4z5e0W2Q4c8e0W2Q4z5o6y4Q4b7e0S2Q4c8e0g2Q4z5o6S2Q4z5o6k6Q4c8e0S2Q4b7V1k6Q4z5e0S2Q4c8e0g2Q4z5p5k6Q4b7f1k6Q4c8e0c8Q4b7V1u0Q4b7e0g2Q4c8e0g2Q4z5p5k6Q4z5o6u0Q4c8e0S2Q4z5o6m8Q4z5o6y4t1j5h3y4C8K9h3&6Y4g2r3g2S2L8g2!0q4y4#2)9&6b7g2)9^5y4q4!0q4y4q4!0n7z5q4)9^5x3q4!0q4y4q4!0n7b7g2)9&6b7W2!0q4x3W2)9^5x3q4)9&6b7#2!0q4y4g2!0n7b7#2)9^5x3q4!0q4y4W2!0n7b7g2)9&6x3q4!0q4y4q4!0n7b7W2!0m8x3#2!0q4y4#2!0m8x3q4)9^5x3g2!0q4x3W2)9^5x3q4)9&6c8q4!0q4c8W2!0n7b7#2)9&6b7h3S2@1N6s2m8K6i4K6y4m8i4K6u0r3i4K6u0r3k6$3W2@1K9s2g2T1i4K6u0W2j5$3!0E0i4K6u0r3K9r3q4U0K9$3g2V1N6r3g2S2L8g2)9J5c8Y4k6W2j5%4c8G2M7W2)9J5k6r3g2^5M7r3I4G2K9i4c8Q4x3V1k6@1M7X3g2W2i4K6u0r3L8h3q4K6N6r3g2J5i4K6u0r3K9s2c8Q4x3X3b7J5x3o6p5K6i4K6u0V1x3o6l9J5i4K6u0V1g2$3!0J5k6l9`.`.
2019-5-31 19:18
0
雪    币: 300
活跃值: (2772)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
mark
2019-6-2 20:33
0
雪    币: 5317
活跃值: (3533)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
19
银雁冰 ActiveX1.bin的构造可以参考:6d0K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2S2L8Y4q4#2j5h3&6C8k6g2)9J5k6h3y4G2L8g2)9J5c8Y4m8G2M7%4c8Q4x3V1k6A6k6q4)9J5c8U0R3%4x3e0t1J5 这篇的利用构造部分。将ActiveX1.bin打包回去可以用7z等压缩软件,GUI ...
请问为什么我用压缩软件打开.docx文件,然后再压缩回去用Word打开就会崩溃了呢?
2020-7-3 18:09
0
雪    币: 8662
活跃值: (4618)
能力值: ( LV15,RANK:800 )
在线值:
发帖
回帖
粉丝
20
苏啊树 请问为什么我用压缩软件打开.docx文件,然后再压缩回去用Word打开就会崩溃了呢?
1.你用压缩软件打开之前这个docx就会导致崩溃 2.你的操作意外地导致了了当前版本另一个word异常
2020-7-11 10:02
0
雪    币: 5317
活跃值: (3533)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
21
用什么解压软件可以解压得到 ActiveX87.bin
2020-11-2 19:28
0
雪    币: 5317
活跃值: (3533)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
22
rop使用的0x7C376FC3是什么模块的跳板地址地址,为什么我的环境没有这个模块,我用的是Windows XP SP3+Word2007
2020-11-2 19:56
0
雪    币: 8662
活跃值: (4618)
能力值: ( LV15,RANK:800 )
在线值:
发帖
回帖
粉丝
23
苏啊树 用什么解压软件可以解压得到 ActiveX87.bin
7z
2020-11-5 11:00
0
雪    币: 8662
活跃值: (4618)
能力值: ( LV15,RANK:800 )
在线值:
发帖
回帖
粉丝
24
苏啊树 rop使用的0x7C376FC3是什么模块的跳板地址地址,为什么我的环境没有这个模块,我用的是Windows XP SP3+Word2007
Windows 7 sp1 x86 + office 2007, MSVCR71模块
2020-11-5 11:01
0
雪    币: 5317
活跃值: (3533)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
25
请问提取出{\object...}闭合的部分,接着放在新的文件中的哪里。。。
2020-11-13 13:05
0
游客
登录 | 注册 方可回帖
返回