微信数据是手机取证过程中关注的焦点。采用可行的技术方法及时、快速地恢复微信上被删除的信息,对于取证工作的顺利开展具有一定的现实意义。本期小驼将探讨如何有效恢复微信删除信息,重点从“常见微信删除操作”、“微信逻辑结构分析”、“微信信息恢复记录”、“微信删除数据流分析”六个方面进行探讨。
01 删除微信常用操作
在目前流行的微信版本中,删除微信数据的常见操作方法主要有以下六点:
02 微信逻辑结构分析
平台安装并使用微信帐号登录后,帐号的数据记录将存储在该文件夹下的数据库文件中。如果平台上有多个微信账号登录使用,系统会自动创建不同的文件夹,因此文件夹中的数据库文件存储了udir对应的微信账号聊天信息。 udir是字符串“mm”+对应微信ID的UIN(User)组成的字符串,是计算出的MD5哈希值。
如图1所示:文件夹内有20多个数据库文件。 .db、.db、.db这三个数据库对于微信的恢复比较关键。
图1 文件夹中数据库文件列表
03 微信删除数据流向分析
微信的对话消息生成时,会记录在消息数据库中,消息索引数据库和缓存文件中也会做一些记录。删除时,消息数据库、消息索引数据库和缓存文件也会被删除。在记录和删除消息的过程中,微信的几个版本对数据库的重写略有不同。尤其是在删除消息的操作过程中,微信使用数据库命令来控制环境内的各种环境变量和状态标志。在命令中,用于控制从数据库中删除内容的方式。具体语法如下:
图2 微信消息流程示意图
默认值 . (安全删除标志)是;如果设置为True,则数据库的删除内容会被补0。该方法用于微信的删除消息机制,保证删除数据的安全。例如,在.db数据库中,删除一条“会议地点”信息后,文件中对应的位置被清除,如图3所示。
图3. db数据库删除信息前后对比
04 微信信息恢复机制
从微信删除信息的各种操作来看,一旦. (安全删除标志)设置为打开,将很难恢复已删除的数据。这时候基于数据库直接恢复基本上是不可能的。这种情况可以考虑以下方法来恢复微信删除的数据:
1. 使用.db.bak备份文件进行数据恢复。微信在进行版本升级或者一些特殊操作时,会备份现有的数据,形成.db.bak文件。在微信的消息删除数据流中,可以发现微信并没有对该文件进行操作,因此通过该文件恢复数据就成为了可能。实践中发现文件中确实存在一些被删除的数据。
2、利用数据库的存储机制进行数据恢复。数据库在工作过程中,其独特的存储机制会形成日志文件(如Wal、文件)。操作的一些具体内容会详细记录在日志文件中。一些删除的数据还可以通过日志文件来恢复。如图4所示,列出了Wal文件中数据页缓存的部分内容。
图4 Wal和文件中的数据页缓存
3、利用数据库文件内容更新机制进行数据恢复。数据库将更新和组织文件。在此过程中,原始数据的存储位置将发生变化,并被分配到新的地址。这时,如果原来的位置没有被覆盖,也可以尝试数据恢复。实践中,这种方法确实可以恢复一些被删除的信息。
结论
在本次推送中,小拓和读者学习了手机上微信信息的常见删除和恢复方法,但这些方法仅适用于常见微信删除数据操作的恢复,并不包括卸载微信、屏蔽好友后的信息恢复,这里讨论的微信版本是V8.02,其他版本的微信恢复操作可能略有不同。随着微信版本的升级和安全机制的完善,删除的数据恢复变得越来越困难。上述回收方法的可行性仍需进一步研究和讨论。