51
我是怎样在Microsoft Office Word中找漏洞的 张仁状

我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

Embed Size (px)

Citation preview

Page 1: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

我是怎样在Microsoft Office Word中找漏洞的

张仁状

Page 2: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

• ⺴⽹网名: Mike Zhang, telnet_mike, telnetgmike…

• 职业⺫⽬目标: 能够成为⼀一个经验⽼老道的漏洞猎⼿手• 现在: ⼀一个独⽴立漏洞猎⼿手• 博客: https://mikedoszhang.blogspot.com

Page 3: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

MICROSOFT » OFFICE : VULNERABILITY STATISTICSREF HTTP://WWW.CVEDETAILS.COM/PRODUCT/320/MICROSOFT-OFFICE.HTML?VENDOR_ID=26

3

Page 4: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

MICROSOFT»OPEN XML FILE FORMAT CONVERTER:VULNERABILITY STATISTICSREF HTTP://WWW.CVEDETAILS.COM/PRODUCT/15628/MICROSOFT-OPEN-XML-FILE-FORMAT-CONVERTER.HTML?VENDOR_ID=26

4

Page 5: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

MICROSOFT» OFFICE COMPATIBILITY PACK: VULNERABILITY STATISTICSREF HTTP://WWW.CVEDETAILS.COM/PRODUCT/14763/MICROSOFT-OFFICE-COMPATIBILITY-PACK.HTML?VENDOR_ID=26

5

Page 6: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

6

Page 7: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

结果数据• 可利⽤用: 16(⼤大部分已经在更新过补丁的

office2007 +win7 32测试环境中通过验证)• 可能可利⽤用:>10• 可能不可利⽤用:3

7

Page 8: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

想法• 从CVE报告数据可以看到多数问题出在ActiveX相关的地⽅方• ⼀一个⼀一个插⼊入操作看看情况

8

Page 9: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

9

Page 10: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

这个0day的poc验证结果

10

Page 11: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

REF HTTP://BLOG.AVIRA.COM/MALICIOUS-OFFICE-MACROS-DEAD/

11

Page 12: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

REF HTTP://WWW.PCWORLD.COM/ARTICLE/2866512/MACROBASED-MALWARE-IS-MAKING-A-COMEBACK-RESEARCHERS-WARN.HTML

12

Page 13: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

针对国家的攻击REF HTTP://MEDIA.CCC.DE/BROWSE/CONGRESS/2014/31C3_-_6575_-_EN_-_SAAL_2_-_201412272300_-_ROCKET_KITTEN_ADVANCED_OFF-THE-SHELF_TARGETED_ATTACKS_AGAINST_NATION_STATES_-_TW_-_GADI.HTML#VIDEO

13

Page 14: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

VBA执⾏行恶意代码的⽅方式• 纯VBA代码调⽤用win api,最原始的宏病毒• VBA代码将⽂文档中存在的内容写⼊入到⼀一个可执⾏行⽂文件或脚本中,⽤用win api启动⽂文件执⾏行恶意代码

• VBA将操作码分配到⾃自⼰己或别的进程内存中,使⽤用win api 开启新的线程进⾏行执⾏行

14

Page 15: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

VBA+Office漏洞

• VBA代码中没有那些宏病毒使⽤用的那些win api

• Office⽂文档结构是完好的,因为漏洞是VBA⾃自动化操作Office造成的

15

杀软:“应该没有宏病毒存在,放过。。。”

杀软或Office⽂文档结构检测:“⽂文档结构完整,应该没有问题,放过。。。”

Page 16: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

0day 演⽰示…

16

Page 17: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

对安全⼚厂商的建议

• 执⾏行前的静态检测很难奏效--shellcode可加密,可分散存储

• 把更多精⼒力放到⾏行为检测,如对⽂文件释放⽅方⾯面的⾏行为审计;从本地操作⾏行为和⺴⽹网络通信⾏行为⻬齐⼊入⼿手进⾏行⾏行为审计

17

Page 18: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

对微软的建议

• 加强对⾮非打开即利⽤用的漏洞的挖掘能⼒力,如发现第⼀一个演⽰示的漏洞利⽤用

18

Page 19: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

TrustRecordsOffice 2010/2013

19

Page 20: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

ref https://technet.microsoft.com/en-us/library/

cc179050(v=office.14).aspx

Page 21: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

攻击场景建⽴立21

攻击者 被攻击者

发送没有恶意代码的宏的a.doc

攻击者 被攻击者

发送有恶意代码的宏的a.doc

Page 22: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

我怎么才能⾃自动化的测试或者说fuzz程序呢

• 我重复漏洞触发过程,在这个过程中录制宏

22

Page 23: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

注册表中的ActiveX Control• dir

REGISTRY::HKEY_CLASSES_ROOT\CLSID -include PROGID -recurse | foreach {$_.GetValue("")}

23

ref http://blogs.msdn.com/b/powershell/archive/2006/06/29/650913.aspx

Page 24: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

24

⼯工具的第⼀一个版本

Page 25: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

popupkiller

25

ref http://old.peachfuzzer.com/

Page 26: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

⼯工具演⽰示…

Page 27: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

我需要⼀一个⽅方案来解决这个问题,这样我才能完全⾃自动化的⼀一个接⼀一个的测试所有的activeX控件

“⼀一旦Office崩溃掉,我⽆无法准确的定位到有问题的那次测试条⺫⽬目”

27

Page 28: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

⽅方案• ⽤用另⼀一个进程来操作Office中的VBA代码,并监视Office进程

28

Page 29: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

具体⽅方案• Windows UI⾃自动化(已实现)– FindWindow, EnumChildWindows, PostMessage,

SendMessage, SendKeys…–MSAA—Microsoft Active Accessibility• AccessibleObjectFromWindow, AccessibleChildren

• Office Interop(另⼀一个选择)–使⽤用前提• File -> Options -> Trust Center -> Trust Center

Settings -> Macro Settings -> Trust Access to the VBA Project Object Model

– VBProject.VBComponents.Add• or Shapes.AddOLEControl 29

Page 30: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

SendKeys ⼩小贴⼠士• ENTER ~• SHIFT +• CTRL ^• ALT %• … ref: https://msdn.microsoft.com/en-us/

library/system.windows.forms.sendkeys.send(v=vs.110).aspx

30

Page 31: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

SendKeys发送的VBA代码

31

Page 32: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

“当触发了⼀一个崩溃问题时怎么记录这个问题呢?”

• ⽅方案 1.将调试器附加到进程上– 1). 使⽤用调试器启动⺫⽬目标进程• _NO_DEBUG_HEAP

– 2). 使⽤用 aedebug 注册的调试器在进程崩溃时附加到⺫⽬目标进程• windbg,cdb

• ⽅方案 2.Windows 调试API(需要⽐比⽅方案 1多的多的代码)

32

Page 33: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

_NO_DEBUG_HEAP

33

ref https://msdn.microsoft.com/en-us/library/windows/hardware/hh406274(v=vs.85).aspx

Page 34: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

aedebug with cdb

34

Page 35: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

“怎样去测试控件对象的内部呢?”• Reflection反射–在python中使⽤用 _oleobj_.GetTypeInfo– pythoncom.VT_*, ⽤用特制的内容给指定的类型属性赋值

–我们也可以⽤用这个⼯工具产⽣生的样本作为⼀一些模糊测试⼯工具的初识变异样本,如Peach Fuzzer

35

Page 36: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

测试对象属性

36

Page 37: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

清理⼯工作

37

Page 38: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

⼯工具演⽰示…

Page 39: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

0day 演⽰示…

Page 40: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

docx—zip 格式

40

Page 41: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

步骤 1添加⼀一个ActiveX 控件ToggleButton,然后保存为docx并关闭

41

Page 42: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

步骤 2解压缩docx,在上⾯面的路径中可以找到⼀一个activeX1.bin的⽂文件

42

Page 43: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

步骤 3这是⼀一个复合⽂文档格式,和doc⽂文件⼀一样

43

也许微软的测试没有想到这个地⽅方:⽤用⼀一个doc⽂文件替换掉这个⽂文件

Page 44: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

步骤 4创建⼀一个a.doc⽂文件,然后替换掉activeX1.bin⽂文件,并将⽂文件名保持为activeX1.bin

44

Page 45: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

步骤 5打包⽂文件,并将包⽂文件后缀改为“.docx”

45

Page 46: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

步骤 6打开它

46

这就是我想要的结果,⼀一个程序⾮非预期⾏行为

所以,这⾥里可以称为⼜又⼀一个测试点

Page 47: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

VBA编写shellcode⼩小贴⼠士• VBA字符串以unicode形式出现在内存中, 使⽤用 StrConv(shellcodestr, vbFromUnicode)

• 解决 [63 ‘?’ 3F] 问题—VBA 使⽤用 ‘?’ 值来表⽰示不认识的符号,所以在unicode表中从0x7F到0xA0⼀一些值并不存在,需要使⽤用另⼀一批对应的unicode字符值进⾏行表⽰示

47

EIP = 0x11505080

EIP = 0x11505063

Page 48: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

ref http://msdn.microsoft.com/en-us/goglobal/cc305145.aspx

48

Page 49: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

应对⽅方案• 不轻易的接受Office的安全提⽰示• 不要相信别⼈人提供给你操作制定⽂文档的步骤• 如果使⽤用Office 2010/2013定期删除不⽤用的

TrustRecords,并检查是否有不合适的Trusted Locations项⺫⽬目存在

• 使⽤用⼀一些⾏行为检测⽅方⾯面强⼤大的安全产品• ⽇日常使⽤用尽量低的权限账户

49

Page 50: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

声明• 该⽂文档只能⽤用作学习和研究• 任何使⽤用它做出违反法律的事情,需⾃自⾏行负责

50

Page 51: 我是怎样在Microsoft Office Word中找漏洞的 xKungfoo2015files.cnblogs.com/files/jiayy/xkungfoo2015-张仁状.pdf ·  · 2015-05-04或者说fuzz 程序呢 • 我 ... ToggleButton,然后保存为docx

谢谢!

Email:[email protected]: https://mikedoszhang.blogspot.com