zoukankan      html  css  js  c++  java
  • 恶意宏学习备忘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等字符,可以确定这里存储的就是宏代码数据

  • 相关阅读:
    Java JMX 监管
    Spring Boot REST(一)核心接口
    JSR 规范目录
    【平衡树】宠物收养所 HNOI 2004
    【树型DP】叶子的颜色 OUROJ 1698
    【匈牙利匹配】无题II HDU2236
    【贪心】Communication System POJ 1018
    【贪心】Moving Tables POJ 1083
    Calling Extraterrestrial Intelligence Again POJ 1411
    【贪心】Allowance POJ 3040
  • 原文地址:https://www.cnblogs.com/lsh123/p/11327855.html
Copyright © 2011-2022 走看看