伪造的再好也能把你挖出来!如何对Word二进制文档进行分析?

luochicun 逆向破解 2019年5月30日发布
Favorite收藏

导语:随着计算机技术的普及,犯罪嫌疑人的文档档案、财务报表经常以word电子文档的形式出现在计算机中。所以在电子取证中,Microsoft Word取证分析是数字取证人员经常用于文档分析的方法。

随着计算机技术的普及,犯罪嫌疑人的文档档案、财务报表经常以word电子文档的形式出现在计算机中。所以在电子取证中,Microsoft Word取证分析是数字取证人员经常用于文档分析的方法。由于Microsoft Office的普及,许多重要的商业文档(如合同和备忘录)都是使用Word创建的。在传统的取证对象中,文档通常是纸质的。但电子数据形式多样、载体丰富、位置隐蔽、结构复杂,有重要价值的证据往往分散和隐藏在浩瀚的无用数据之中,且相互之间又具有各种关联性。因此,对于数据分析是电子数据取证的核心和关键,通过有效的分析,可以发现和犯罪事实相关联的全部数据资料。取证人员常常需要使用取证分析软件进行数据搜索、过滤和挖掘,才能快速定位电子证据。

在本文中,我的目标是对一个Word二进制文档格式的示例Word文档进行取证分析,查看复合文档二进制(CFB)文档格式的底层数据,看看除了主流工具向我们展示的内容之外我们还能找到什么?

我之所以选择了一个Word二进制格式(即.doc)中的示例而不是Office扩展中的Office Open XML文档格式(即.docx),是因为Microsoft 中的许多其他文档类型(如MSG文档)也是基于CFB文档格式。我认为,CFB兼职就是取证人员的宝库。

Word取证分析的目标文档

我们的目标Word文档是在运行Windows 7 SP-1的计算机上使用Word 2007在8/30/2018 8:19 PM(PDT)创建的文档。它使用Word中文档保存对话框中的“Word 97-2003文档”选项保存为DOC文档。在安装Office 2007时,嫌疑人分别选择了“Chris Doe”和“CD”作为他的“用户名”和“姓名缩写”。这些首选项在Word选项中显示如下:

1.png

嫌疑人是如何对可疑文档进行伪造设置的?

以本文的示例来说,这个Word文档似乎是在2007年2月创建的。嫌疑人似乎精通Word技术,这一点可以在他对文档的摘要信息流中标识FILETIME结构的手法中窥见端倪。创建日期(GKPIDSI_CREATE_DTM),最后保存日期(GKPIDSI_LASTSAVE_DTM)和最后打印日期(GKPIDSI_LASTPRINTED)时间戳如下所示:

2.png

Word取证期间发现的摘要信息流中的内部时间戳

嫌疑人使用在线日期转换器,将日期从2007年2月8日16:15:19 UTC转换为FILETIME格式,得到的新时间戳为“80456D539C4BC701”。他先用Windows资源管理器创建了文档的工作副本,然后用新的FILETIME值替换上面用于创建时间戳的字节。

嫌疑人使用免费提供的工具(如olefileExifTooland)检查Word文档的内部元数据,发现创建日期内部时间戳按其预期报告。以下是使用olefile,所分析出的内容:

3.png

4.png

然后,嫌疑人开始输入文字,看看他的编辑文字是否能按照他的意图被识别出来。Word显示的文档属性如下。

5.png

令他惊讶的是,原始创建日期(2018年8月30日晚上8:19 (UTC -7))清晰可见。搜索该FILETIME值的字节序列(006A3A5CD940D401)不会返回任何结果。那么,这个日期是怎么来的呢?

除此之外,嫌疑人还注意到Word中单词的计数方式(538)与ExifTool和olefile的计数方式(539)之间存在差异。

为了弄清楚这个日期是怎么来的呢?嫌疑人进行了很多的研究,终于发现此Word文档还包含一个Dop结构,该结构将它们的创建(dttmCreated)、最后修改(dttmmodified)和最后打印(dttmLastPrint)日期存储为DTTM结构。

DTTM结构与FILETIME结构完全不同,它看起来如下所示:

6.png

星期几是一个无符号整数,以星期日(0x0)开头,以星期六(0x6)结束。

嫌疑人最终找到表示文档创建日期(dttmCreated)的DTTM结构。其内容如下:

7.png

如下所示,他会接着将所需的创建日期(2007年2月8日星期四08:15 AM(UTC -8))转换为DTTM。请注意,DTTM结构不包含任何以秒为单位记录的数据,也不包含时区信息) :

8.png

这导致DTTM值为0F42 B286,一旦字节序列被替换,Word将显示内部创建时间戳,如下所示:

9.png

字节序列被替换后的Word文档元数据

经过以上一番操作后,嫌疑人对自己的保密设置很满意,他通过电子邮件发送了被篡改的文档,并将其称为“本地ESI产品”。他认为,这样就不必担心文档系统时间戳中的不一致性问题。

如何对经过伪造的Word文档的进行取证

取证人员在收到这份电子邮件副本后,发现如果要阅读此文档,就必须先进行身份验证。该电子邮件是采用MSG格式,是从雇佣她的律师的邮箱中导出的。虽然这并不理想,但这是取证人员当时能找到的最好的副本。

MSG文件是在Microsoft Outlook中创建或保存的电子邮件,联系人,约会或任务。它可能包含一个或多个电子邮件字段,其中包括日期,发件人,收件人,主题和邮件正文,或联系信息,约会详细信息以及一个或多个任务说明。MSG文件还与使用Microsoft的消息传递应用程序编程接口(MAPI)的其他程序兼容。

在保存副本后,取证人员首先检查了MSG文档中的附件表,IAttach接口显示了附件的以下MAPI属性。

10.png

在Word取证期间找到的附件的MAPI属性

手动解码PR_CREATION_TIME和PR_LAST_MODIFICATION_TIME的FILETIME值,取证人员发现创建时间戳为9/10/2018 22:20:46.9509489 (UTC),最后的修改时间戳为9/11/2018 04:20:34.1458881 (UTC)。包含附件的电子邮件具有创建和发送日期(PR_CREATION_TIME和PR_CLIENT_SUBMIT_TIME),这些日期都晚了几小时后,时间戳为 9/11/2018 20:48(UTC)。

考虑到高精度时间戳的存在以及发送电子邮件的时间,上面确定的创建和最后修改时间戳很可能是嫌疑人系统上的Word文档的文档系统时间戳。此外,文档很可能驻留在具有高精度时间戳的文档系统中,例如NTFS。她把这些时间戳记下来,然后再进行分析。

然后,取证分析人员将Word附件保存到文档中,以便进一步分析。当附件被保存时,创建文档系统时间戳被保存,即9/10/2018 22:20:46.9509489 (UTC),这是取证人员最后一次保存附件时的时间。

记住这一点,她通过X-Ways 19.5运行文档并提取内部文档元数据以开始她的检查。 使用X-Ways分析工具,可以显示以下信息。

x-ways 取证工具是一款计算机取证分析软件,这款软件取证分析功能强大,分析数据准确率高,支持各种版本的windows操作系统,与其它同类软件相比,这款软件占用资源少,分析速度快,可以让你在进行取证分析的过程中不再被其他因素所影响。

11.png

由X-Ways 19.5提取的Word文档元数据

从法医鉴定的角度来看,取证人员从中发现了一些取证的关键证据。

应用程序版本(AppVersion)

X-Ways报告的AppVersion值为12.0,不过分析人员也希望手动验证此值的来源。 经过分析,研究人员发现Word文档的文档摘要信息流包含了一个名为GKPIDDSI_VERSION的属性,此属性会指定编写属性集存储的应用程序的版本。

在本文的示例中,此属性的值设置为000C 0000。000C 0000字节表示应用程序的主要版本和次要版本。按以下的计算方式,分析人员可以得到的值就是12.0。

12.png

0xC0000换算成十进制就是786432,这就是一开头olefile报告中的“版本”值的来源。

Word 12.0也称为Word 2007,它于2006年底发布。因此,应用程序版本不会对文档的创建日期(2007年2月)造成什么影响。

操作系统版本(OSVersion)

除了AppVersion之外,Word文档中的摘要信息和文档摘要信息流都包含一个4字节的PropertySetSystemIdentifier结构。结构的前两个字节表示编写属性集的操作系统的主要版本和次要版本。最后两个字节代表OSType(操作系统类型)。根据规范,OSType必须是0x0002。

13.png

在Word取证分析期间找到的操作系统版本

在上面的屏幕截图中,你可以看到突出显示的PropertySetSystemIdentifier结构。 06和01两个数分别表示操作系统的主要版本和次要版本。 Windows 6.1代表Windows 7,它在2009年下半年向公众发布,也就是Word文档的创建日期之后。

如果此时得出结论,那将是一个错误的结论。有经验的分析人员都知道,保存文档时,Word将重写属性集,并更新AppVersion和OsVersion值,以记录上次保存期间使用过的应用程序和操作系统。由于Word文档最后一次修改是在2018年,所以在后续的保存中可能使用了Windows 7,但该系统版本不一定是文档最初创建时的版本。

根目录(Root entry)日期

除了内部创建和最后的修改时间戳之外,Word文档还包含一个FILETIME结构,该结构表示CFB格式文档的根目录的修改时间戳。该值如下所示:

14.png

FILETIME值90AD48A1DA40D401表示8/30/2018 03:28:05.3530000 PM (UTC),取证专家在其中注意到了一些事情:

1.根目录修改日期与文档内部的最后修改时间戳相差不到一分钟内,这是因为,通过Word保存文档会导致根目录的修改日期被更新。

2.根目录时间戳的精度可以到达毫秒级别,尽管FILETIME结构允许更高的精度,但前提是要与含有此格式的Word文档的时间戳精度保持一致。

3. 这个值与X-Ways得出的“内部修改时间”相匹配;

解析摘要信息流中的时间戳

当取证人员查看文档摘要信息流中的内部时间戳时,会看到以下内容:

15.png

解析出的时间戳

时间戳信息如下:

· 最后一次打印日期:003C84C7D940D401 (8/31/2018 03:22:00.0000000);

· 创建日期:80456D539C4BC701 (2/8/2007 16:15:19 0000000);

· 最后修改日期:00E0179EDA40D401 (8/31/2018 03:28:00.0000000);

如果仔细观察,你会注意到,最后一次打印时间戳和最后修改时间戳都具有分钟级的时间精确度,而创建时间戳的时间精度则达到了秒级。虽然FILETIME结构允许更高的精度,但根据经验,Word文档摘要信息流中的三个时间戳的精度都不高。

对此,计算机取证专家指出,与其他时间戳相比,Word文档的摘要信息流中的创建时间戳具有不一致的精度,这可能是因为时间戳在Word之外还可以被修改的缘故。

在本文的示例中,由于取证人员所能掌握的信息有限。所以,他们必须仔细地查看Word文档,并试图找出是否存在任何不一致之处。主要调查结果如下:

1.Word文档的文档系统修改时间戳(9/11/2018)与Word文档中的最后一次修改时间戳(8/31/2018)不匹配。显然,文档系统时间戳是在最后一次保存Word之后被更改的,这可能是因为有人在Word之外修改了文档。

2. 在Word文档摘要信息流中找到的内部创建日期时间戳与同一信息流中的其他时间戳相比,时间精度不一致。

在本示例中,取证人员将只能通过查看创建、修改和访问Word文档的工作站,查看其中的发现的工件,然后根据这些信息分析Word文档。

总结

首先,一些读者可能会认为这不是分析Word文档的最有效方法。因为该方法需要相当多的技术知识,并且有很大的出错空间。你这样想是没错的,不过我用上述方法的目标,找出某些数据结构,这些数据结构可能对其他方面的取证很有价值,而不是帮助坏人更熟练地伪造文档。

值得注意的是,本文中所介绍的主流数字取证工具: X-Ways v19.5和FTK v6.4,以及免费提供的通用工具,如olefile和ExifTool,它们都没有没有解析Dop中的DTTM结构的能力。因此,当Word文档的摘要信息流中的日期与Dop中的日期不一致时,只能通过Word和手动检查来观察其中差异。如果怀疑文档进行了伪造,则可以根据摘要信息流检查Dop。

CFB文档格式中使用的各种FILETIME结构在时间精准度的设计上是不同的,例如,文档摘要信息流中的创建、最后修改和最后打印时间戳的时间精度都很小,而在文档的摘要信息流中找到的编辑时间值(GKPIDSI_EDITTIME)则表示以数百纳秒为单位的持续时间。另外,根目录的修改时间戳精度达到了毫秒级别。熟悉每个时间戳的精度,对word取证非常重要。

AppVersion和OSVersion是有助于对Word文档的取证分析,例如,如果OSVersion表示的是Windows 10,但文档中的所有时间戳都在2013之前,你可能需要仔细查看该文档。

最后,如果你按着本文的方法执行Word取证,我强烈建议你熟悉下面列出的Microsoft规范作为参考。你将看到CFB文档格式包含大量有趣的信息,这些信息在你的取证中可能很有价值。你还可以手动分析取证工具解析的值,并找到主流工具无法报告的证据。

例如,比较X-Ways v19.5和FTK v6.4的输出信息,就可以发现FTK没有报告AppVersion或根目录修改日期,并且报告了Word文档的OSVersion为6.1.2。但经过验证,报告的OSVersion是错误的,因为末尾的“2”指的是OSType,而不是版本。如果你能够编写快速分析脚本,或者启动十六进制编辑器自动查看,则效率就更高了。

参考规范

1.Word (.doc)二进制文档格式[MS-DOC];

2.办公室常用数据类型和对象结构[MS-OSHARED];

3.复合文档二进制文档格式[MS-CFB];

4.对象链接和嵌入(OLE)属性集数据结构[MS-OLEPS];

本文翻译自:https://articles.forensicfocus.com/2018/09/18/word-forensic-analysis-and-compound-file-binary-format/如若转载,请注明原文地址: https://www.4hou.com/reverse/18023.html
点赞 9
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论