使用SQLite数据恢复的iOS取证:深入挖掘和比较
在帮助人们使用我们的产品恢复数据时,我们使用了许多技术,而且我们在过去十年中建立的许多聪明才智都在表面之下。今天,我们将深入探讨我们用于恢复已删除邮件的方法之一:SQLite数据的取证恢复。
无论如何,iPhone如何存储数据?
简而言之,许多应用程序将其数据存储在数据库中,并且大多数应用程序使用SQLite格式。 SQLite是一种整洁的小型服务器数据库格式,非常适合Apple和应用程序供应商所需。由于SQLite在没有单独的数据库服务器的情况下运行,因此有几种方法与其他数据库不同。特别是,为了使访问速度快,它在使用时不能定期维护。例如,当数据库执行例如清理索引的日常维护时,用户不希望应用程序变慢。
这些清理或优化操作可能与SQLite一起发生,但它们往往不经常运行。对于用户而言,这是正确的平衡:您的iPhone将相当快,并且您的数据将非常强大。并且,如果需要,由于此维护过程的不常见性,您在恢复已删除的iOS数据时将获得比平均赔率更高的赔率。
如果没有过于技术化,那么过程的工作方式就非常简单。想想这些数据库就像大文件柜一样:
- 当需要向他们添加信息时,您需要在其上添加一个带有整洁标签的文件,解释文件中的内容,以及手机的工作方式。
- 但是当您删除数据时,手机只需将标签拉出,而不是将文件从文件柜中取出。因此旧的数据不会被删除,它只是没有标记(或“孤立”,我们可能在技术上称之为。)这意味着当您删除数据时,您的手机不需要经历相对缓慢的释放过程在柜子里的空间。它只是说“嗯,忘了这个”,继续前进。
- 在添加更多数据时,如果有空间,您的手机将添加额外的文件。如果没有空间可以添加更多数据,它会看到是否有任何未标记的文件,如果存在,它将清除它们需要的任何部分以腾出空间。
您可以从中获取的是,删除手机上的数据很快,并且假设有空间,可以快速添加它。并且 - 毫不直观地 - 它是添加更新数据的过程,这些数据确实导致旧信息被删除。
在iOS上从SQLite恢复已删除的信息
假设您已经使用手机几个月了。它上面的数据库就像我们之前描述的文件柜。他们有一堆文件,你删除数据的地方,那些文件仍然存在,但有两个警告:它们可能被部分或完全覆盖,并且它们将被取消标记。
然后恢复技术几乎是你所期望的:它是关于找到这些孤立的文件 - 完整或其他 - 并试图找到它们适合的位置,以及是否有足够的数据可供它们理解。正如您所期望的那样,它有点繁琐,并且还有许多其他技术因素可能会让事情变得困难。特别是,大小超过几兆的数据库,以及包含二进制数据的数据库可能会使这个过程变得更加困难。
也就是说,获取一些数据并不难,这就是为什么你会看到市场上有很多工具声称可以做到这一点。通常,您可以将这些工具分为三类:
- 好的。他们使用许多不同的技术,这些技术是针对成千上万个不同的删除或损坏示例构建和测试的。
- 坏的。它们只能恢复完美形成的剩余内容,并包含许多关于它所属位置的提示。
- 丑陋的。这些扫描孤立内容并标记任何看起来可能适合上下文的旧垃圾。如果你眯着眼睛看着它。 “NSMutableArray” - 这可能是您丢失的联系人记录的名称吗?嗯。
SQLite在现实世界中取消删除和从iOS恢复
现在我们已经谈到了它的工作原理,让我们深入了解它在现实世界中的效果。毕竟,我们希望授权普通用户无需成为专家即可获取数据。我们管理那个吗?我们将针对iPhone Backup Extractor对四种领先的SQLite恢复工具进行基准测试。在撰写本文时,这些工具的最新版本是:
名称 | 版本和发行日期 | 平台类 | 价钱 |
---|---|---|---|
重新孵化iPhone备份提取器 | 7.6.1.2201,18年5月 | Windows和macOS | $ 34.95 |
SQLabs的SQLite Doctor | 2013年8月1.3.0 | Windows和macOS | $ 49 |
SysTools的Sqlite数据库恢复 | 1.2,未显示发布日期 | 仅Windows | $ 149 |
用于Sqlite 1.0的Stellar Data Recovery的Stellar Phoenic修复,未显示发布日期 | 仅Windows | $ 599 | |
GetData的取证资源管理器(FEX) | 4.3.5.7364,18年5月 | 仅Windows | $ 1,695 |
获取取证的Sqlite取证管理器 | 2.0,未显示发布日期 | 仅Windows | $ 149 |
为了设置这个测试,我们将使用一个很好的大数据库,充满了真实的数据。在这个例子中,它是一个169 MB的“消息”数据库,取自运行iOS 11的iPhone。我们来看看它:以下命令显示其文件大小,以及查询结果以计算它包含的消息数量。
$ ls -l sms.db -rw------- 1 afitzpatrick 177565696 Oct 2 2017 sms.db $ sqlite3 sms.db SQLite version 3.19.3 2017-06-27 16:48:08 Enter ".help" for usage hints. sqlite> SELECT COUNT(*) FROM message; 220261
所以,有超过220,000条消息。它们是尚未删除的。但是恢复工具可以找到多少已删除的消息?
从iOS恢复SQLite数据:结果在
我们在同一个文件上运行了上面显示的所有工具,并在下表中注明了结果。我们很喜欢使用Mac,但由于并非所有工具都支持macOS,我们使用的是具有16 GB RAM的PC,运行Windows 10 Pro(版本1803
,版本17134.48
)。
重新孵化 | 获取取证 | SQLabs | SysTools | 恒星数据恢复 | 获取数据 | |
---|---|---|---|---|---|---|
已找回号码 | 342 | 56(但大多数是垃圾) | 0 | 0(经过长时间扫描,发现220,261,这与已经存在的有效记录数相同!) | 0(每次运行它,它最多统计37条已删除的消息,但在完成该过程之前崩溃,错误为0x40000015。无法导出或保存任何消息。) | 0(我们多次联系购买了许可证,但从未回音。) |
“垃圾”恢复了吗? | 没有;所有似乎都是有效的未删除邮件。表情符号,日期,时间和发件人/收件人编号均已恢复。 | 大部分被回收的都是垃圾j | 我们需要几次手动输入最大ROWID值,以尝试不同的参数。任何时候都无法恢复。 | 仅找到预先存在的消息。 | 每次都崩溃,所以无法分辨。 | 无法使其运行。 |
恢复的每条消息的有效成本(在此示例中) | $ 0.10 | $ 2.66 | > $ 49 | > $ 149 | > $ 599 | > $ 1,695 |
好。所以这有点意外,因为我们期待他们至少可以恢复一些数据。 🧐事实证明,尽管不是专用的SQLite数据恢复工具,但我们的简洁工具在SQLite数据恢复方面领先市场。 (如果您想知道,这就是为什么我们也将我们的技术许可给其他公司。这个东西很难。)
不同版本的iOS上的SQLite数据恢复
随着iOS的每个新版本,Apple都有机会改变操作系统处理SQLite数据库的方式。这包括优化清理和其他维护操作的频率以及何时触发。
随着设备变得越来越强大,这些操作可以更自由地使用,因为它们对用户体验的影响变得更小。因此,对于每个新一代,SQLite数据库可能会更频繁地进行清理,这有利于使数据库更快地用于正常操作。这符合Apple增加用户数据保护和隐私的目标,因为设备上不会留下不需要的数据。但是,这有一个警告,即通过SQLite方法无法进行数据恢复。
在iOS 11中,我们开始看到SMS和iMessages的数据库清理活动有所增加。恢复仍然是可能的,更有可能是随后删除的更新消息,但不能保证。
在iOS 12中,SMS和iMessages数据库的数据库清理频率大幅增加。由于这个版本被吹捧为重点关注维护和速度改进,因此这种改变很有意义,因为它可能会为更常见的操作带来更平滑的性能。
在恢复iOS数据时,我需要做些什么才能利用这一点?
也许这是最好的一点:这项技术与Reincubate iPhone Backup Extractor集成,并且从早期开始就已经存在。当您使用该应用程序时,它将在预览或导出您的消息和许多其他数据类型时应用此技术。根据您正在查看的数据以及您查看的方式,应用程序将指示哪些数据未删除,哪些数据未删除。一切都包括在内。
由 jon
I have a question. When apple release new ios , do they provide any information about schema change? or we can get them from ios backup. Thanks in advance.
回复: Reincubate Support
Hey Jon. Apple don't, and it's not just them changing things: any time a third-party app gets updates things can change. We have a set of tools and a team testing these things every day.