如何对已损坏的SQLite数据库取证分析?

SQLite是当今最流行的数据库之一,许多移动应用台式计算机以及便携式笔记本上都用它来存储数据(例如桌面工具、浏览器以及社交媒体软件等),因此SQLite在电子取证当中也扮演着举足轻重的角色。取证网络浏览器,信使和其他数字证据来源。

市面上有许多支持对SQLite数据库分析取证的工具,例如Magnet AXIOM,Belkasoft Evidence Center和BlackBag BlackLight等等。这些工具可以自动解析这些数据库,甚至可以从空闲列表和未分配空间中分割数据。此外,它们还提供了SQLite查看器,取证人员可以手动来分析数据库的类型。

那么对于那些已被损坏或破坏的数据库,我们又该如何取证呢?

我们在DFIR上收到了一个无法用任何工具打开的SQLite数据库。在此之前该数据库还曾被发送给供应商解决,但得到的答案是 - 并未在数据库中发现任何表格。

话不多说让我们直奔主题,该数据库名为:“contacts2.db”。如果你有足够的移动取证经验,那么你应该能猜到这是一个典型的Android数据库,其中包含了有关用户的联系人信息。

在我们手头有许多专业的取证工具包,因此我们决定使用最流行的取证工具来尝试打开它,其中包括有Belkasoft Evidence Center,BlackBag BlackLight,Cellebrite UFED Physical Analyser,SQLite数据库浏览器,Magnet AXIOM和Oxygen Forensic Detective。但让我们感到惊讶的是,该数据库正如发布者所述,没有任何工具能打开它。如下截图所示:

Belkasoft Evidence Center

BlackBag BlackLight

Cellebrite UFED Physical Analyzer

SQLite数据库浏览器

Magnet AXIOM

Oxygen Forensic Detective

正如你所看到的没有任何工具可以打开它。那么接下来我们该怎么做呢?让我们回到最开始!

首先,我们进入到SQLite的官方网站,并下载用于管理数据库文件的命令行工具。(阅读原文查看下载链接)

接着我们提取存档内容并将数据库放到相同的文件夹下(可选)。

启动Windows命令提示符并将目录更改为提取SQLite命令行工具的目录。

运行以下命令序列:

sqlite3.exe database_name.db

.mode insert

.output database_dump.sql

.dump

.exit

现在你有一个包含dump数据库表的SQL文件。如果运气好的话,你则可以删除事务语句,比如BEGIN TRANSACTION和ROLLBACK,并将文件导入到一个新的SQLite数据库中,例如,使用SQLite数据库浏览器。但由于该数据库受损严重,所以我们必须手动检查文件并将感兴趣的表保存在单独的SQL文件中。

例如,我们找到’accounts’表,它看起来像下面这样:

CREATE TABLE accounts (_id INTEGER PRIMARY KEY AUTOINCREMENT,account_name TEXT, account_type TEXT, data_set TEXT);
INSERT INTO accounts VALUES(1,’vnd.sec.contact.phone’,’vnd.sec.contact.phone’,NULL);
INSERT INTO accounts VALUES(2,’primary.sim.account_name’,’vnd.sec.contact.sim’,NULL);
INSERT INTO accounts VALUES(4,’vnd.sec.contact.agg.account_name’,’vnd.sec.contact.agg.account_type’,NULL);
INSERT INTO accounts VALUES(506,’test@gmail.com’,’com.google’,NULL);
INSERT INTO accounts VALUES(538,’WhatsApp’,’com.whatsapp’,NULL);
INSERT INTO accounts VALUES(655,’test’,’com.yandex.passport’,NULL);
INSERT INTO accounts VALUES(656,’+7 903 000-00-00′,’com.yandex.passport’,NULL);
INSERT INTO accounts VALUES(657,’+7 925 000-00-00′,’com.yandex.passport’,NULL);
INSERT INTO accounts VALUES(658,’+7 978 000-00-00′,’com.yandex.passport’,NULL);
INSERT INTO accounts VALUES(672,’test’,’com.vkontakte.account’,NULL);
INSERT INTO accounts VALUES(677,’+7 968 000-00-00′,’com.yandex.passport’,NULL);
INSERT INTO accounts VALUES(687,’Youla account’,’com.allgotitm.youla’,NULL);
INSERT INTO accounts VALUES(792,’+7 968 000-00-00′,’com.viber.voip’,NULL);

我们将它保存到一个单独的SQL文件中,并使用SQLite数据库浏览器创建数据库。

创建过程如下:

  • 打开SQLite数据库浏览器。
  • 从SQL文件转到文件 - 导入 - 数据库…
  • 选择SQL文件中你感兴趣的表。
  • 选择要创建的数据库的名称。
  • 现在你可以浏览数据并使用简单的SQL查询来导出数据。

恢复的表格

如果你想查看所有表格只需重复以上步骤即可。这个例子也向我们证明了,数字取证分析不能只依赖于取证工具,应该根据情况结合手动检查的方式,这样才能更准确的获取和分析数据。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-03-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

MySQL Profile在5.7的简单测试(r10笔记第50天)

MySQL Profile对于分析执行计划的开销来说,还是有一定的帮助,至少在分析一些性能问题的时候有很多的参考依据。 我在5.6, 5.7版本中进行了测试,没...

33750
来自专栏杨建荣的学习笔记

MySQL中使用pt-osc的一些小结

Percona的pt-osc工具算是DBA的一个福利工具。想想一个数据量有些大的表,在上面做DDL操作真是一种煎熬,我们也基本理解了这是一种空间换时间的...

14310
来自专栏性能与架构

MySQL 8.0 将结束 MyISAM 引擎

MyISAM 存储引擎已经有了20年的历史,在1995年时,MyISAM 是 MySQL 唯一的存储引擎,服务了20多年,即将退居二线 MySQL 5.7 中...

35360
来自专栏杨建荣的学习笔记

MySQL中的derived table(r12笔记第47天)

初始MySQL中的derived table还是在一个偶然的问题场景中。 下面的语句在执行的时候抛出了错误。 UPDATE payment_data rr ...

40850
来自专栏杨建荣的学习笔记

MySQL和Oracle的添加字段的处理差别 (r10笔记第73天)

昨天在微信群中有个朋友也是无意中问了一下,说数据库中的表字段想保持一种相对规范的顺序,怎么办?要知道Oracle中这个操作就比较纠结了,因为是按照追加的方式来处...

37960
来自专栏杨建荣的学习笔记

MySQL Online DDL(二)(r11笔记第88天)

对于Online DDL,之前简单分析了一些场景MySQL中的Online DDL(第一篇)(r11笔记第3天),其实有一个很关键的点没提到,那就是online...

37590
来自专栏ImportSource

锁系列-Mysql中的锁

在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。 目录: 1、行级锁、表级锁、页级锁 2、共享锁和排它...

380150
来自专栏数据和云

深入解析:你听说过Oracle数据库的更新重启动吗?

杨廷琨 云和恩墨高级咨询顾问, ITPUB Oracle 数据库管理版版主 ,人称 “杨长老”,十数年如一日坚持进行 Oracle 技术研究与写作,号称 ...

10040
来自专栏WindCoder

网易MySQL微专业学习笔记(二)-Mysql数据对象

这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL数据库对象与应用”中的MySQL数据类型相关笔记。

8410
来自专栏跟着阿笨一起玩NET

SQL语句使用总结(一)

1>. FROM 2>. WHERE 3>. GROUP BY 4>. HAVING 5>. SELECT 6>. ORDER BY

7710

扫码关注云+社区

领取腾讯云代金券