导语:WhatsApp是世界上最受欢迎的即时通讯工具之一,根据2017年7月的统计数据,每月全球有13亿活跃用户会在WhatsApp上免费交换各种信息。由于WhatsApp 已经把数十亿用户的每次对话添加了端到端加密,再加上Whisper(耳语)团队的匿名社交技术
WhatsApp是世界上最受欢迎的即时通讯工具之一,根据2017年7月的统计数据,每月全球有13亿活跃用户会在WhatsApp上免费交换各种信息。由于WhatsApp 已经把数十亿用户的每次对话添加了端到端加密,再加上Whisper(耳语)团队的匿名社交技术,这个移动信息巨人大大提高了全球数字通信的隐私,即使信息被人成功拦截了,通信内容也不会泄露。比如,为了调查某个嫌疑犯,政府会对其通信记录进行取证,但这明显违反了公司的安全隐私标准和规则,所以调查人员要想得到其中至关重要的犯罪信息,就必须对WhatsApp取证。这就是为什么WhatsApp目前已成为移动取证领域的热门领域,然而,众所周知,对智能手机的取证并不是那么容易。调查人员在取证过程中可能会遇到各种各样的困难,比如数据库加密、系统安全、删除的消息等。因此,在本文中,我将讨论如何解密加密的WhatsApp数据库,如何绕过WhatsApp加密并恢复被删除的WhatsApp消息。
如何解密加密的WhatsApp数据库
与许多其他智能手机应用程序一样,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认证。在过对SalvationDATA研究的基础上,我又开发了一种有着特殊的算法的工具,该工具可以使用密钥文件来解密加密的WhatsApp数据库。很快我就将发布该工具并将其集成到智能电话取证系统(SPF)中,这样调查取证人员就可以在不知道任何计算机编程知识的情况下对加密的WhatsApp数据库进行解密。取证人员只需要导入密钥文件和加密的数据库,程序就会相应地生成解密过的数据库文件。
如何绕过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的最后一个版本。所以关键是在不删除用户数据的情况下将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中。下图显示了消息被删前后发生的一些变化,以下是一条被删除的测试消息,我们可以看到,在消息被删除之后,这个消息的数据仍然保留在缓存文件中,甚至消息记录的偏移位置也不会改变。
因此,通过分析和提取缓存文件msgstore.db-wal中的数据,你就可以恢复已删除或丢失的WhatsApp消息。上述解决方案已被证明是一种高效可靠的提取已删除的WhatsApp数据的方式,这是恢复删除消息和清除聊天记录的完美解决方案。
总结
通过对SalvationDATA的研究,我可以解密加密的数据库并提取未经授权的Android设备上已删除信息。请注意,上述所有技术和解决方案已经或即将发布并集成到智能手机取证系统(SPF)中。