如何在未Root的Android设备上解密数据库

WhatsApp是世界上最受欢迎的智能手机即时通讯应用之一。现如今,全世界各地每月有超过13亿的用户活跃在WhatsApp上,使用该应用进行免费通信(2017年7月份的统计数据)。WhatsApp采用了基于whisper systems的通信协议,因此即便有人成功拦截通信数据,这种点对点通信数据仍然可以保持安全。显而易见的是,这些通信数据中可能包含调查人员非常关心的与案件有关的重要信息,因此现在WhatsApp已经成为移动取证方面最炙手可热的一个领域。然而众所周知,智能手机的调查取证并没有那么简单。调查人员可能会遇到各种各样的问题(如加密数据库、系统安全机制、消息被删除等等)。因此在本文中,我们会介绍如何解密WhatsApp的加密数据库、如何绕过WhatsApp的加密机制以及如何恢复已删除的WhatsApp消息。

Whatsapp forensics decrypt database SalvationDATA

 

如何解密WhatsApp数据库

与许多智能手机应用一样,WhatsApp会将数据存放在SQLite数据库文件中。对于Android设备上的WhatsApp来说,两个数据库最为重要,一个是msgstore.db,包含聊天记录;一个是wa.db,包含联系人列表。处理这些数据库比较简单,因为WhatsApp具有备份功能,会将数据库备份到SD卡上,无需任何权限(比如root权限)就能访问。然而,安装最新的安全更新后,WhatsApp数据库就会被加密处理,无法再直接分析,给执法调查人员带来极大的挑战。聊天记录、消息记录以及通话记录使用的是AES-256标准,而类似照片、视频等媒体文件没有加密处理。并且WhatsApp的加密方式已经从Crypt5、Crypt7、Crypt8更新到了Crypt12。

WhatsApp forensics

那么,此时我们该怎么解密WhatsApp数据库呢?最关键的步骤是获取加密密钥(cipher key)。当用户首次进行WhatsApp备份时,就会生成加密密钥,密钥永远不会存储在云端,只会保存在智能手机上,而且每个智能手机对应不同的密钥。因此,为了解密数据库,我们首先必须从创建备份时所使用的那台手机上提取加密密钥。加密密钥的具体路径为:userdata/data/com.whatsapp/files/key。

WhatsApp forensics

根据SalvationDATA数据取证专家的研究结果,我们研发了一种专门的算法,可以使用这个key文件来解密WhatsApp数据库。我们不久后会公布这款工具,将其集成到 SmartPhone Forensic System(SPF)中,让不具备任何计算机编程基础的调查人员能够顺利处理WhatsApp的加密数据库。用户只需导入key文件以及加密的数据库文件,程序就可以自动生成正确的未加密的数据库文件。

WhatsApp forensics

 如何绕过WhatsApp加密机制

然而,如果不root设备,想要获取key文件并不会一帆风顺。因此,接下来我们讨论下如何绕过WhatsApp的加密机制。换句话说,如何在不具备root访问权限的前提下提取WhatsApp数据。

key文件以及未加密的数据库始终存储在WhatsApp目录中。如果调查人员可以接触这些文件,那么就能查看当前设备上WhatsApp的通信记录。唯一的问题在于,如果没有root权限,我们无法直接访问这些文件。

在不具备root权限的情况下,有两种方法可以提取WhatsApp数据。

1、系统备份&还原

第一种方法是利用Android系统的备份及还原功能。许多Android手机厂商允许用户使用内置的系统应用创建备份。利用这种方式创建的备份存储在SD卡中,没有经过加密处理。因此,执法部门可以使用这种简单的方法访问WhatsApp的通讯记录。

如下图所示,我们可以使用OPPO智能手机来创建WhatsApp的备份。用户可以在Tools文件夹中找到“Backup Restore”应用,创建新的备份,记得要勾选WhatsApp。

WhatsApp forensics

然后,我们就可以在手机的SD卡上找到WhatsApp备份数据。这个备份中包括所有未加密的数据库文件以及WhatsApp的key文件。现在,我们要做的就是使用移动取证工具来分析目标数据库。

WhatsApp forensics

2、降级备份

另一种方法就是降级WhatsApp应用,降级到不具备加密机制的那个版本。v.2.11.431版的WhatsApp是没有强制使用加密备份的最后一个版本。因此,我们可以在不删除用户数据的前提下将WhatsApp降级到v.2.11.431版,然后使用老版本的WhatsApp创建备份文件,然后提取所需的数据库。

这个过程需要操作人员具备专业技能,并伴随着永久性丢失数据的风险。因此,我们强烈建议用户使用专业的取证工具进行版本降级。

WhatsApp forensics

如何恢复已删除的WhatsApp消息

现在我们已经知道如何从智能机中提取WhatsApp数据库文件,接下来看看如何利用数据库文件,在Android以及iOS设备上恢复已删除的WhatsApp消息。

用户可以通过两种方法来删除WhatsApp的消息。用户可以逐条删除消息,或者使用“clear/delete”聊天按钮一次性删除所有消息。根据我们的测试结果,不论用户使用哪种方式删除消息,我们都可以使用下面的方法进行恢复。

WhatsApp forensics

前面我们提到过,WhatsApp使用SQLite数据库来存储消息。与Android系统不同的是,iOS系统会将WhatsApp相关的所有数据存放在ChatStorage.sqlite这个数据库中。这些数据库文件通常会附带后缀为”-wal”的缓存文件。大多数情况下,这些缓存文件的大小为0,但如果这些缓存文件的大小不为0,那么就可能包含尚未存储在数据库中的重要数据。一旦出现这种情况,我们必须谨慎处理,因为如果我们不在意这些缓存文件,那么存放在其中的信息可能就会被覆盖掉,永远无法找回。

WhatsApp forensics

根据我们的分析,可以正常访问的WhatsApp消息存储在msgstore.db中,而已删除的消息存放在msgstore.db-wal中,这个文件正是消息的缓存文件。WhatsApp始终会把消息先存放在缓存文件中,然后再保存到真正的数据库中。

有趣的是,有些时候缓存文件会比数据库文件更大。这是因为一条消息只能以单条记录存放在数据库中,但缓存文件中并没有这种限制。一条消息可能同时存在多条记录。因此,我们有机会能恢复已删除或者已丢失的WhatsApp消息。

然而,为了避免覆盖缓存文件中已有的数据,在正确处理缓存文件之前,我们不能直接打开数据库文件。我们必须先处理缓存文件,匹配特征,然后保存并分析缓存文件中的所有数据。

以“this is a test message”这条消息为例。当用户删除这条消息时,该消息对应的那条记录通常也会从msgstore.db中删除。

Whatsapp forensics

然而,msgstore.db-wal缓存文件中可能还保留这条消息的一些记录。“This is a test message”这条消息被删除前后的情况如下图所示。我们可以看到,当该消息被删除后,相关数据仍然保存在缓存文件中,并且记录的偏移位置也保持不变。

Whatsapp forensics

因此,通过分析并提取msgstore.db-wal缓存文件中的数据,我们给出了恢复已删除或已丢失的WhatsApp消息的一种方法。前面提到的这种方法可以有效并可靠地提取出已删除的WhatsApp数据,也是恢复已删除消息和已清空聊天记录的完美解决方案。

根据SalvationDATA数字取证专家的研究结果,我们可以在未Root的Android设备上解密WhatsApp的加密数据库,并且也能在Android以及iOS设备上恢复已删除的WhatsApp消息。提醒一下,前面提到的所有技术及解决方案已经或者即将公布,会集成到SmartPhone Forensic System(SPF)中。希望本文能进一步帮助DFIR(数字取证与应急响应)社区处理移动设备,收集尽可能多的数字证据。后面我们会为大家提供更多实用的数字取证方案。

原文:https://blog.salvationdata.com/2018/02/08/whatsapp-forensics-decryption-of-encrypted-databases-and-extraction-of-deleted-messages-on-non-rooted-android-devices/

上一篇:CVE-2017-13253: 多个Android DRM服务中的缓冲区溢出

下一篇:如何利用暴力攻击破解密码