取证技巧:在无损的情况下完整导出SQLite数据库

2019-07-17 23:28 来源:未知

  在上一篇文章中,我向大家介绍了有关利用iOS DeveloperImage中一些特性的方法,其中包括在已越狱设备上启动带有自定义环境变量的App。说实话,我的最初动机是为了寻找沙箱逻辑问题,但失败了。值得庆幸的是我发现了另一个非常实用的技巧,即通过利用其中的一些特性来提取SQLite数据库。该方案需要屏幕解锁和可信USB连接。

  (可选。如果你不想自己编写libimobiledevice的代码,就用这个)

  iOS上当前内置的SQLite支持调试选项:如果设置了SQLITE_SQLLOG_DIR环境,则每个数据库在给定目录中都会有一个副本,且sql查询为纯文本形式。

  我们的实验从一个越狱设备开始。只需启动带有SQLITE_SQLLOG_DIR的Gmail应用程序,指向它有权写入的位置:

  文件名中的05860是pid,格式化为固定的5位数。idx文件是原始数据库的映射索引。

  现在问题是,iOS上的应用程序被“监禁”在容器中,如果没有完整备份将仍然无法访问这些容器。每个规则都有一个例外,沙箱配置文件也不例外。

  iOS允许在 /var/mobile/Media 中进行沙箱文件访问。许多第三方iPhone管理工具允许你直接操作此位置,甚至还会提供一个GUI界面。

  但需要提醒大家的是,并非所有内置的应用程序都有这些例外,更别说是那些第三方应用了。

  在测试期间启动Instruments,并使用上一篇文章中的frida脚本将bundle ID更改为目标。

  这里有Safari浏览器状态,书签,历史记录,每个站点首选项,HTML5本地存储甚至缓存。请注意,通常Cache.db不会包含在备份中,并且它是以纯文本格式存储http请求的。

TAG标签: ios 数据库
版权声明:转载须经版权人书面授权并注明来源