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等字符,可以确定这里存储的就是宏代码数据

  • 相关阅读:
    C# Socket 入门2(转)
    C# Socket 入门1(转)
    StructLayout特性(转)
    [转载]U3d常规性能优化技巧
    Python语言系统学习(七)
    Python语言系统学习(五)
    python语言系统学习(六)
    python语言系统学习(四)
    白话经典算法-常见排序算法的实现与性能比较
    最快的内容查找算法-----暴雪的Hash算法
  • 原文地址:https://www.cnblogs.com/lsh123/p/11327855.html
Copyright © 2011-2022 走看看