WhatsApp取证:解密数据库并提取Android设备上已删除信息
来源:LBS
2018-11-27 06:36
3319
WhatsApp是世界上最受欢迎的即时通讯工具之一,每月全球有十多亿的WhatsApp活跃用户使用它交换各种信息。
由于WhatsApp将用户的每次对话都进行了端到端加密,再加上Whisper团队的匿名社交技术,使得这个数字通信的隐私保密行大大提升,即使信息被成功拦截了,通信的内容也不会泄露。
执法部门为了调查某个嫌疑犯,会对其通信记录进行取证,但这明显违反了公司的安全隐私标准和规则,WhatsApp肯定不会配合,所以调查人员要想得到其中至关重要的犯罪信息,就必须对WhatsApp取证。
这也是为什么WhatsApp目前已成为移动取证热门领域的原因,然而,众所周知,保密技术不断发展的当下,对智能手机的取证并非那么容易。调查人员在取证过程中将会遇到各种各样的困难,例如:数据库加密、系统安全防火墙墙、粉碎删除的消息等。
因此,在本文中,我们将要讨论如何解密被加密过的WhatsApp数据库,以及如何绕过WhatsApp加密,恢复被删除的WhatsApp消息。

如何解密被加密过的WhatsApp数据库
和许多其他智能手机APP一样,WhatsApp也将数据存储在SQLite数据库文件中。对于Android设备来说,WhatsApp有两个最重要的数据库,即:包含聊天记录的msgstore.db,以及包含联系人列表的wa.db。
这些数据库文件很容易被取证人员所掌握,因为WhatsApp具有备份的功能,它能够在SD卡创建数据库备份,无需root权限就能够访问。
然而,对于执法调查人员而言,他们面临的一个严重的问题就是WhatsApp不断在升级更新的安全措施,例如WhatsApp的数据库被加密后,就不能直接进行分析。聊天记录,消息和通话记录则使用了行业标准的AES-256加密,除此之外,照片和视频等未加密的媒体文件,也把加密从Crypt5,Crypt7,Crypt8更新为了Crypt12。

那么,我们将如何解密加密的WhatsApp数据库呢?最重要的一步是获取密码密钥。
密码密钥是用户第一次创建时,和WhatsApp备份一同产生的,并且,密码密钥永远不会存储在云中,而是仅仅保存在手机中,并且每台智能手机的密码密钥都是唯一的。所以,为了解密一个加密数据库,分析人员就必须首先从创建备份的设备中提取密码密钥。
密钥可以在以下的位置找到:
userdata/data/com.whatsapp/files/key

在这里,我们要提一下中国的SalvationDATA(效率源)取证工具,SalvationDATA自主可控,智能化高、操作方便、提取功能强、高效快捷、不伤害存储设备,在海外取得了8项欧盟CE认证、美国FCC认证。
如何绕过WhatsApp加密措施
但是,如果执法调查人员没有获得设备的root权限,那么获取密码密钥文件将是一件很困难的事情。因此,我们还将讨论如何绕过WhatsApp的加密措施,换句话说,就是要如何在没有拥有root权限的情况下提取WhatsApp数据。
由于密码密钥文件和未加密的数据库始终存储在WhatsApp的文件夹中,如果调查人员能够得到这些文件,他们就可以查看该设备上的所有WhatsApp通信历史记录。所以唯一的问题是,他们只有获得root权限才能直接访问这些文件。
在没有获得root的情况下提取WhatsApp数据大致有以下两种方法:
一、系统备份和恢复
第一种方法,是利用Android系统的备份和恢复功能,许多Android手机会允许用户使用内置的系统应用程序来创建备份。以这种方式创建的备份文件会存储在SD卡中,并且一般不会进行加密。因此,这对执法调查人员而言,无疑是一种访问WhatsApp历史通讯记录的简单方法。
下图显示的就是使用OPPO智能手机创建WhatsApp备份的例子,用户可以在工具中找到备份还原,然后创建新的备份,并记住选择WhatsApp。

然后,用户可以在手机的SD卡上找到WhatsApp的备份文件,该备份将包括所有未加密的数据库和WhatsApp的密钥。现在,用户所要做的就是使用移动取证工具来对数据库进行分析了。

二、降级备份(Downgrade Backup)
另一种方法是,将WhatsApp应用程序降级到没有备份加密功能的版本,WhatsApp v.2.11.431是没有强制备份加密的最后一个版本。所以关键是在不删除用户数据的情况下将WhatsApp降级到v.2.11.431,然后使用旧版本的WhatsApp创建备份文件并提取数据库。
不过,这个过程需要专业的技能,并有永远丢失数据的风险。因此强烈建议使用专业的取证工具来进行降级。

如何恢复已删除的WhatsApp消息
现在,我们已经知道怎样从智能手机中提取到WhatsApp的数据库文件了,接下来让我们继续探讨一下如何恢复已删除的WhatsApp消息?看看如何在Android及iOS设备上使用该数据库文件来恢复已被删除的WhatsApp消息记录。
WhatsApp用户可以有两种方式来删除消息,可以使用clear聊天按钮逐个删除,或是使用delete聊天按钮一次性删除消息。根据我们的测试,用上述任何一种方式删除的消息都可以使用下面的方法进行恢复。

正如前面我们介绍过的那样,WhatsApp使用SQLite数据库来存储它的消息。但与Android不同的是,iOS会将所有相关的WhatsApp数据存储在一个名为ChatStorage.sqlite的数据库中。这些数据库文件通常是带有“-wal”字样后缀的缓存文件。
通常在大多数情况下,这些缓存文件的大小为0,如果不为0,缓存文件可能包含尚未存储在数据库中的重要数据。这种情况必须小心处理,因为如果我们将缓存文件置于无人看管的位置,存储于其中的信息将会被覆盖永久丢失。

根据分析,WhatsApp能够正常访问的消息存储在msgstore.db中,而被删除的消息则存储在msgstore.db-wal中,它是消息存储的缓存文件。在把消息保存到真正的数据库之前,WhatsApp会将它先存储在缓存文件当中。
有趣的是,缓存文件有时候甚至比数据库本身的文件还要大。这是因为一条消息只能作为一条记录存储在数据库中,而高速缓存文件中却没有这样的限制,一条消息可能同时存在多条记录,这就使得恢复被删除的WhatsApp消息成为可能。
我们用一条测试的消息做示范,可以看到在用户删除它之后,消息的记录通常也会从msgstore.db的数据库文件中被删除。

但在实际上,这条被删除的消息可能仍然存储在缓存文件msgstore.db-wal中。下图就显示了该条消息被删除前后所发生的一些变化,我们可以看到,在消息被删除后,消息的数据仍然保留在缓存文件中,甚至偏移位置也没有发生改变。

上述解决方案已被证明是一种高效可靠的提取已删除的WhatsApp数据的方式,这是恢复删除消息和清除聊天记录的完美解决方案。