刘收获

导航

恶意宏学习备忘02

 

Office文档(如:.doc、.ppt、.xls等)很多是复合文档(OLE文件),所有文件数据都是存储在一个或多个流中。每 个流都有一个相似的数据结构,用于存储元数据的数据结构。这些元数据有用户和系统的信息、文件属性、格式信 息、文本内容、媒体内容。宏代码信息也是以这种方式存储在复合文档中的。为了在Office文档文件中提取出宏代 码,必须能够解析复合文档的二进制格式,下面以word为例,分析复合文档的二进制结构。 准备工作
(1)准备工具: Office Visualization Tool:微软提供的office二进制格式查看工具,用于学习doc,xls,ppt等文档二进制格式;

(2)doc、docx和docm 许多用户在新建word文档时会发现有两个选项,新建Microsoft Word 97 - 2003 文档和新建新建 Microsoft Word文 档。当用户点击新建Microsoft Word 97 - 2003 文档时,就会创建出一个.doc文件;而用户点击新建Microsoft Word 文档时,就会创建出一个.docx文件,实际上Microsoft Word 2007及之后的Word版本还支持.docm文件,那么这三 种文件有什么区别呢?.doc文件是一种普通的OLE文件(复合文件),能够包含宏而.docx和.docm文件,实际上都是 是压缩文件,下图是.doc文件.docx和.docm文件头二进制数据的对比图:

 

 

 

 

将docx.docx文件的文件名修改为docx.zip就可以以压缩包的形式打开.docx文件,如图所示:

 

实际上.docx主要的内容基本都存在于word目录下,比较重要的有以下的内容:
document.xml:记录Word文档的正文内容 footer*.xml:记录Word文档的页脚 header*.xml:记录Word文档的页眉 comments.xml:记录Word文档的批注 footnotes.xml:记录Word文档的脚注 endnotes.xml:记录Word文档的尾注 利用同样的方式打开.docm文件,可以发现和.docx文件的内容基本相同,但是比.docx文件多了一个文件: vbaProject.bin:这是一个复合文件,记录vba工程信息
基础知识
OLE文件数据的存储结构和磁盘数据的存储结构有很大的相似性,都是以扇区为单位进行存储的,但二者的扇区是截 然不同的。
对于一个doc文件,其实质是一复合二进制文件(OLE文件),用Office Visualization Tool载入.doc文件,可以看 到清晰的文件结构,如图所示:

 

 

宏代码数据结构解析
在使用oledump.py提取宏代码数据时,会发现每段宏代码起点处都是一段“Attribute”信息。实际上,我们可以使 用“Attribute”字符来定位宏代码在文档中的存储位置。使用010Editor打开demo1.doc,搜索字符串”Attribut”,注意 这里不是搜索“Attribute”,不要加e!!!:

 

 

 从图中,我们可以看到autoopen()和MsgBox等字符,可以确定这里存储的就是宏代码数据

posted on 2019-08-09 16:02  沉疴  阅读(464)  评论(0编辑  收藏  举报