刘收获

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

恶意宏学习备忘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   沉疴  阅读(480)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
历史上的今天:
2017-08-09 作业通知
点击右上角即可分享
微信分享提示