当前位置: 主页 > 关于效率源 > 行业洞察 > 热点技术

【技术视界】WhatsApp取证相关问题详解

2018-02-27 17:46

背景介绍

WhatsApp是全球最流行的即时通讯软件之一。根据2017年7月的统计数据,其月活跃用户数量达到了13亿。

用户使用其交换的数据可能包含潜在的重要电子证据,因此WhatsApp是世界取证行业中重点关注的应用之一但是在针对WhatsApp取证的过程中,取证人员可能会遭遇一系列的障碍,例如数据库加密,系统的安全机制,数据被删除破坏等

11.jpg

Part1:如何解密被加密的WhatsApp数据库

WhatsApp与很多其他App类似,使用SQLite数据库来存储它的数据。对于电子取证行业来说,其中重要的是msgstore.db和wa.db这两个数据库文件。

msgstore.db中存储了聊天记录,wa.db中存储了联系人清单

些数据库文件很容易获取,因为WhatsApp自带备份功能可以将数据库文备份到SD卡中,取证人员不需要获取root权限就可以获得数据库文件。

22.jpg

有一个问题是最新版本的WhatsApp中,所有备份出来的数据库都是加密的,无法直接进行分析。数据库使用AES-256加密,媒体文件不加密

怎样解密加密的WhatsApp数据库?

关键的是获取到key文件。key文件是和备份同时生成的密钥文件,并且key文件因手机设备而异。所以要想解密数据库,必须首先生成备份的手机上获取到key文件,其存储路径为:userdata/data/com.whatsapp/files/key 

33.jpg

根据我们效率源工程师的逆向工程和分析结果,我们开发出了一个WhatsApp数据库解密算法并且我们将尽快将其集成到我们的手机取证系统中。帮助取证人员在不具备编程知识的情况下也能应对数据库加密的问题

44.jpg

Part2:如何绕过WhatsApp加密保护?

解密数据库就需要获取key文件但是key文件的存储路径需要root权限才能访问,所以在没有root权限的情况下key文件很难获取到的

怎样可以绕过WhatsApp数据库加密的保护机制来提取数据呢?通过WhatsApp自带的备份功能备份的数据库文件加密的,但是本身的文件夹中存储的数据库文件并没有加密,常见的提取方法有下面两种:

1.使用系统的备份功能

一些定制安卓操作系统自带App数据备份功能(小米、华为、OPPO)。系统备份可以将App的数据文件备份到SD卡中,取证人员可以轻松获取。

下图展示的是以小米手机为例的备份操作过程找到打开备份功能,创建一个新的备份,确保勾选备份WhatsApp且不要设置备份密码

55.jpg

接下来就可以在SD卡中找到WhatsApp的备份文件了,这样创建的备份将会是未加密的且包含了所有的数据以及key等文件,取证人员仅需使用相应的数据库解析工具加载即可

66.jpg

2.降级备份

另一种方法是将WhatsApp应用降级到还没有备份加密的版本WhatsApp 2.11.431版本是其最后一个不进行强制备份加密的版本,所以我们方法就是在不删除数据的前提下,把应用降级到2.11.431以下然后进行备份提取

但是,降级的操作要求取证人员具备一定的专业技能,操作不当降级过程存在风险可能导致重要数据丢失。因此我们强烈建议使用专业的取证工具协助进行降级,不要手动操作

SPF界面1.jpg

第三部分:如何恢复删除的WhatsApp消息

现在我们知道了怎样提取WhatsApp的数据库文件那么怎样利用数据库文件恢复删除的WhatsApp消息呢?

首先我们需要了解,删除WhatsApp消息的方式有两种一种长按一条或多条消息并点击删除以逐条删除,另一种是在设置中一键清除/删除所有聊天消息

删除消息1.jpg

两种方式删除的消息理论上都可以通过下面介绍的方法来恢复。

如上文提到的,WhatsApp使用SQLite数据库存储数据,而与安卓不同,苹果手机将所有WhatsApp的数据存储在ChatStorage.sqlite文件中。SQLite数据库文件往往都伴随着以“-wal”结尾的缓存文件,绝大数时候该文件的大小是0,但也有例外,若该文件不为0的时候,里面就存放了部分未来得及存放到该数据库中的信息。

77.jpg

如果对该缓存文件不进行处理,而直接打开该数据库,则会导致缓存文件被覆盖,那么里面的信息也就全部丢失了。

Whatsapp的正常聊天记录是存放在msgstore.db中而通过分析之后发现删除记录是存放在msgstore.db-wal中的该文件是msgstore.db的缓存文件Whatsapp在存放聊天记录的时候都会先存放在该缓存文件,所以我们可以看到数据库的文件还没有缓存文件大。这是因为同一条消息在数据库中只会存放一条,但是在缓存文件中就可能出现很多次,这也为删除记录的恢复提供了可能。但在处理该缓存文件之前是不能直接打开数据库文件的,所以在此之前需要进行特征匹配处理,将缓存文件中的记录数据保存下来,再对数据进行处理。

例如消息This is a test message”,在消息被删除后,很多时候其对应的在msgstore.db数据库中的记录也可能被清除掉了

88.jpg

但是,即使这样,这条消息仍有可能缓存文件msgstore.db-wal中留有记录。下图展示了这条消息被删除后缓存文件发生的变化,可以看到消息的记录数据并未丢失,且其偏移位置都没有发生变化

删除前后对比1.jpg

因此,通过对缓存文件msgstore.db-wal进行分析提取,我们可以提供一种恢复删除或丢失的WhatsApp消息记录的方法这种方法能够快速高效恢复删除记录,而且针对单条删除、整条删除、清除所有对话以及删除所有对话都能够有效的恢复出删除聊天记录。

借助我们效率源取证专家的研发成果我们可以root的安卓手机解密加密的WhatsApp数据库安卓、苹果手机恢复删除、丢失的WhatsApp数据。我们希望这篇文章能够帮助到电子取证行业的客户们获取到尽可能多的电子证据。

针对WhatsApp取证,我们专门开发了一款取证小工具,这个小工具将集成到SPF9139智能手机数据恢复取证系统中,以帮助客户获取更多的电子证据。