5.1 取证类型
采用不同的手动和自动方法从设备中提取和分析数据。大致可分为两类:
- 逻辑收集:这是一种从文件系统中提取数据的方法。该数据可以是任何内容,如应用特定数据、联系人、电话记录、信息、web 浏览器历史、社交网络用户信息和财务信息。逻辑收集的优点是,在大多数情况下,获取逻辑信息比物理收集更容易。然而,在某些情况下,该方法的一个限制是,在这种情况下,证据(智能手机及其数据)被篡改的风险很高。
- 物理采集:这意味着对整个物理存储介质进行逐位拷贝。我们还可以在执行物理采集时定位不同的单个分区。与逻辑采集相比,这种方法慢得多,但更可靠和可信赖。此外,为了在智能手机上执行物理采集,检查者需要熟悉不同类型的文件系统,例如 Yet Another Flash File System 2(YAFFS2),ext3,ext4,rfs 等。
5.2 文件系统
在我们深入收集证据和从设备中提取数据之前,我们应该清楚地了解文件系统的类型和差异。正如我们之前讨论的, Android 物理收集有点困难,主要原因之一是文件系统不同。
Android 文件系统的主分区通常分为 YAFFS2。在 Android 中使用 YAFFS2 的原因是它为设备提供了更高的效率和性能,以及更低的占用空间。几年前,当 Android 刚推出的时候,取证是平台上的大问题,因为很少支持 YAFFS2 文件系统格式的取证工具。
SD 卡是 FAT32 类型是正常系统用户中的共享格式。因此,为了获得 SD 卡的图像可以使用任何传统的数据收集和证据收集工具。
是最著名的制作副本或创建现有数据系统图像的工具之一dd,它从原始来源到系统逐块复制。然而,由于工具的缺点,如缺乏内存块和跳过块,会导致数据损坏,因此不建议在证据收集调查期间使用。在下一章中,我们将深入介绍 Android 文件系统将研究如何以最有效的方式从文件系统中提取数据。
Android 文件系统分区
正如我们在前一章中讨论的,Android 基于 Linux 内核,从 Linux 本身衍生出其大部分功能和属性。Android 文件系统分为不同的分区,每个分区都具有重要意义。
为了在 Android 我们可以在设备上查看分区adb shell然后查看proc下的mtd文件,如下列命令所示。有些不存在mtd在文件设备中proc下面还有一个名字partitions如下列命令所示:
adb shellcat /proc/mtd以下是在设备上执行上述命令列出所有分区后输出的屏幕截图。
正如我们在上面的截图中看到的,有各种各样的文件系统分区及其大小。大多数 Android 在设备上,我们通常会看到一些数据分区,比如system,userdata,cache,recovery,boot,pds,kpanic和misc,它们安装在dev列指定的不同位置。为了看到不同的分区和类型,我们可以在adb shell中键入mount。
正如我们在下面的截图中看到的,通过执行mount所有不同分区及其位置的命令列表将被挂载:
5.3 使用dd提取数据
dd该工具是获取证据最常用的工具之一,为数据提取过程创建图像。换句话说,它被用来转换和复制指定的输入文件作为输出文件。通常在分析过程中,我们不允许直接与证据交互和更改。因此,获取设备文件系统的图像,然后进行分析总是一个很好的选择。
默认情况下,dd大多数基于 的工具Linux 的系统,以及 Android 设备/system/bin都存在。如果它不存在于您的设备中,您可以安装 BusyBox,它将安装dd还有其他有用的二进制文件。你可以从 BusyBox 应用程序(https://play.google.com/store/apps/details?id=stericson.busybox)获取dd二进制文件,或者你甚至可以自己交叉编译。
dd标准语法如下:
dd if = [source file which needs to be copied] of = [destination file to be created]有几个命令行选项可以与dd包括:
- if:这是要复制的输入文件
- of:这是内容复制给它的输出文件
- bs:这是块大小(一个数字),指定dd复制图像的块大小
- skip:这是在复制过程开始前跳过的块数
现在让我们继续,获得现有分区之一的图像来获取证据
这将图像保存到系统中,而不是保存在设备上的任何位置,然后取出。如果你的手机上没有dd也可以安装二进制 BusyBox 来获得dd二进制。
在开始证据收集调查之前,应确保检查设备是否设置在超级用户模式下,通常需要设备 root。然而,我们遇到的并非所有设备都是 root。在这种情况下,我们将使用自定义恢复图像启动手机,然后 root 设备。
5.4 使用 Andriller 提取应用数据
Andriller 是由 Denis Sazonov 以 Python 编写的开源多平台取证工具有助于从设备中提取一些基本信息,并有助于取证分析。分析完成后,将生成 HTML 取证报告格式。
为了下载它,我们可以访问官方网站http://android.saz.lt/cgi-bin/download.py并下载必要的包。如果我们在 Linux 或 Mac 我们可以在环境中简单地使用它wget命令下载并解压软件包。因为它只是 Python 文件和其他必要的二进制文件,因此无需安装; 相反,我们可以直接使用它。
$ wget http://android.saz.lt/download/Andriller_multi.tar.gzSaving to: 'Andriller_multi.tar.gz'100%[=============================>] 114KB/s in 9.2s2013-12-27 KB/s) - 'Andriller_multi.tar.gz' saved [1065574/1065574] $ tar -xvzf Andriller_multi.tar.gz一旦解压完成,我们可以访问 Andriller 文件夹,然后只需使用python andriller.py运行它。Andriller 的主要依赖之一是 Python 3.0。若使用 Python 2.7 ,它预装在大多数操作系统上,你可以从官方网站上http://python.org/download/releases/3.0/或http://getpython3.com/下载 3.0 版本 。
现在,一旦我们连接到设备,我们可以继续运行Andriller.py,从设备中捕获信息,并创建日志文件和数据库。
$ python Andriller.py一旦开始运行,我们会注意到,它会打印出设备的几个信息,如 IMEI 号码、内部版本号和安装的社交网络应用程序。在这里,它检测到 WhatsApp 应用程序和与之相关的电话号码将继续并拉取 WhatsApp 应用程序的所有数据库。
分析完成后,我们将看到类似于以下屏幕截图的屏幕:
如果我们看看它为我们创造的 HTML 文件将显示一些关于设备的基本信息,如下面的屏幕截图所示。它还在文件夹中db所有数据库件夹目录中创建所有数据库的转储。
如果我们分析这个应用程序的源代码,我们可以Andriller.py从源代码中可以看出,它将检查设备中的不同包。我们也可以在这里添加自己的包并保存数据库。我们希望 Andriller 为我们寻找它。
如下截图所示,您可以手动添加更多使用 Andriller 备份数据库。
5.5 使用 AFLogical 提取所有联系人、电话记录和短信
AFLogical 是由 viaForensics 编写的工具可以从设备中创建逻辑收集,并将结果呈现给收集者。它从设备中提取一些关键组件,包括短信、联系人和电话记录。
为了使用 AFLogical,我们需要从 GitHub 库https://github.com/viaforensics/android-forensics下载项目的源代码。下载后,我们可以将此项目导入我们的 Eclipse 工作区工作区。我们可以访问我们现有的代码File | New | Other | Android | Android Project,然后选择下载的源代码路径。
一旦我们将项目引入我们的工作区域,我们就可以在我们的设备上操作它,右键单击项目并选择操作 Android 应用程序。一旦我们运行它,我们就会注意到我们的设备AFLogical应用程序提供选项来选择提取什么信息。您将在下面的屏幕截图中看到 AFLogical 在设备上运行,询问用户提取的详细信息:
我们将检查一切,然后单击Capture。AFLogical 将开始从不同的来源捕获详细信息,并在 中保存详细信息SD 卡中的csv文件中。捕获完成后,我们会注意到一个警告框。
我们现在可以查看我们的 SD 卡路径,我们可以找到保存的.csv文件。
然后我们可以做任何事.csv打开这些文件查看器.csv查看详细信息的文件。AFLogical 是从设备中提取一些信息的快速有效工具,如联系人、通话记录和信息。
5.6 数据库手动转储应用
既然我们已经看到很多工具可以帮助我们收集证据,我们也可以使用它们adb从设备中提取一些关于我们手动技能的信息。正如我们之前学到的,应用程序文件存储在/data/data/[应用程序包名]/位置。由于大多数应用程序也使用数据库存储数据,我们注意到它们被称为directory包里还有一个名字databases文件夹。这里需要注意的是,它只能帮助我们从使用数据库的应用程序中提取信息,以转移应用程序和其他相关信息。在某些应用程序中,我们也可能注意到应用程序将数据存储在 XML 我们需要手动审计文件中或使用共享首选项。
Android 使用 SQLite 数据库(.db所有数据库的手动提取步骤如下:
- 进入设备并创建一个存储所有数据库的文件夹
- 查找所有.db将文件复制到创建的文件夹中
- 压缩文件夹并拉取
因此,我们可以使用它adb shell查找/data/data/location将所有数据库文件压缩到归档文件中,然后拉出。
5.7 使用 logcat 记录日志
Android logcat 有时在证据收集和调查过程中非常有用。它包含了在电话和收音机上执行的所有活动的日志。虽然不完整,但它可以帮助调查人员了解设备中发生了什么。
用于捕获和保存logcat 我们可以简单地使用转储文件adb logcat并将输出保存到文件中,然后我们可以分析它。
adb logcat > logcat_dump.log我们也可以使用它logcat以更详细、更有用的方式获取日志。例如,我们可以指定它-b参数和radio获取收音机日志。-b显示缓冲区(如收音机或事件)的 标志logcat。-v标志用于控制输出格式,代表verbose(详细),也可以time,brief,process,tag,raw,threadtime或long。除了-v,我们也可以使用它-d(调试),-i(信息),-w(警告)或-e(错误)。
adb logcat -v time -b radio -d我们也可以使用其他工具,比如dmesg,它将打印内核信息和getprop,它将打印设备的属性:
adb shell getpropXDA 开发人员成员 rpierce99 自动捕获来自 的应用程序logcat 和其他相关来源的信息可以从https://code.google.com/p/getlogs/下载使用。
5.8 使用备份功能提取应用数据
Android 从 4.0 引入使用adb备份功能。该功能可用于创建应用程序的备份和整个数据。这对证据收集非常有用,因为证据收集器可以捕获应用程序及其整个数据。请参考以下步骤:
让我们快速使用ls -l来查看db文件夹中的所有可用文件。正如你所看到的,我们拥有msgstore.db包含 的文件WhatsApp 对话,我们已经在上一节看到了。
总结
在本章中,我们分析了不同的实施证据收集方法和各种工具,我们可以使用它们来帮助我们进行证据收集调查。此外,我们还了解了一些我们可以从设备中提取数据的手动方法。
在下一章中,我们将深入 SQLite 数据库,这是 Android 渗透测试的另一个要素。