Android取证简介(翻译)

image-20241016134256908

在此文中,我们将探讨 Android 取证、获取 Android 设备的过程、反取证技术以及从 Android 设备映像分析和恢复已删除文件的实际示例。

# 本文中使用的关键术语

采集(Acquisition) : 在数字取证调查期间收集敏感数据

取证健全性(Forensically Soundness) : 采用透明的数字取证程序,保留数据的原始含义,以便在法庭上出示

磁盘映像/转储(Disk Image/Dump) :磁盘映像/转储是包含磁盘卷或整个数据存储设备的内容和结构的文件。

ROM:安卓操作系统,Stock ROM 是手机预装的安卓操作系统。定制 ROM 是由开源社区维护的经过修改的安卓操作系统。

块设备(Block Device) :块设备往往是存储设备,能够缓冲输出并存储数据以供以后检索。HDD、SSD 等是块设备的示例。

# 为什么选择 Android Forensics
# 支持正在进行的犯罪调查

Android Forensics 有助于从 Android 手机中查找与正在进行的刑事调查相关的数字证据。如果被告使用的是 Apple iPhone,则应用 iPhone 取证。人们使用智能手机进行数字犯罪和非数字犯罪。因此,分析这些设备对于解决调查至关重要。

# 识别恶意软件

最近,针对智能手机的恶意软件攻击越来越严重。现在,一个家庭中至少有一个人拥有智能手机。大多数人通过智能手机进行银行业务和购物。这吸引了许多威胁行为者。从简单的键盘记录器到 24x7 全天候监视受害者的终极间谍软件(如 Pegasus),智能手机威胁已经变得可怕。Android 取证和移动取证通常有助于识别事件中的这些威胁。

# Android 取证程序

Sieze and Isolate : 扣押设备(主要在刑事调查中完成)并隔离它以避免篡改数据。

Acquisition :创建设备存储或文件的副本。

解密(Decryption) :如果存储已加密,则解密存储。

分析(Analysis) : 分析收集到的证据。

# Android 设备获取类型
  • Physical Acquisition 实物采集

    创建存储设备的逐位副本的过程称为 物理采集。使用这种方法,我们可以分析已删除的文件和系统文件。这种类型的采集可以使用具有提升权限(root 访问权限)的软件来完成,也可以使用 JTAG 接口、EDL 模式(由 SOC 开发人员实现的引导加载程序)直接对存储设备进行映像。

  • Logical Acquisition 逻辑采集

    在此过程中,我们将从设备存储中复制现有文件。这意味着我们无法分析已删除的文件以及 Android 操作系统的关键系统文件。这种类型的客户获取不需要 root 访问权限。

  • Cloud Acquisition 云采集

    此方法依赖于云备份和其他云数据源。例如,可以使用 WhatsApp 云备份分析 WhatsApp 聊天。

    image-20241016142441067

UFS (通用文件系统存储) 3.0 - 读/写速度 ~ 2900 MB/s

image-20241016142525819

eMMC (嵌入式多媒体卡) 5.1 - 读/写速度 ~ 256 MB/s

image-20241016142545282

具有 eMMC 和 UFS 接口的 Easy JTAG 盒

# Android 取证工具

Android Forensics 领域中使用的不同工具列表。

工具名称许可证类型描述
Autopsy Sleuthkit免费Autopsy 是 TSK 的 GUI 前端,具有许多自定义模块和附加组件。
Belkasoft Evidence Center X Belkasoft付费Evidence Center X 是 Belkasoft 用于计算机、移动和云取证的旗舰工具。它可以采集和分析各种移动设备和计算机。
Cellebrite UFED付费Cellebrite UFED 是一个强大的平台,用于转储和分析不同的便携式设备,如手机、无人机、SIM 卡等。
Sleuthkit (TSK)免费TSK 是命令行工具和 C 库的集合,允许您分析磁盘映像并从中恢复文件。
Magnet Acquire免费轻松获取任何 iOS 或 Android 设备、硬盘驱动器和可移动介质的取证镜像
Magnet AXIOM付费Magnet AXIOM 是另一个能够分析各种移动设备的平台。
Oxygen Forensics Detective付费Oxygen Forensics Detective 是一个一体化的取证软件平台,用于提取、解码和分析来自多个数字源的数据。
# Android 操作系统

Android 是基于 Linux 内核修改版的移动操作系统。Android 的内核基于 Linux 内核的长期支持 (LTS) 分支。Android 还有另一个操作系统 Trusty OS,它是 Google 对与 Android 一起运行的可信执行环境 (TEE) 操作系统的实现。TEE 是 SOC 芯片的一个安全区域。这使得 Hardware-backed keystorage 能够确保加密和解密密钥得到安全处理。因此,密钥永远不会加载到 RAM 中,并且可以免受许多基于 ram 的攻击。

# Android 分区

Android 设备中有几个分区,它们提供不同的启动过程功能。自 Android 11 以来,Google 对分区布局进行了新的更改,并且在最近的 Android 13 更新中进行了更多调整(截至撰写本文时)。

image-20241016143214273

分区名称描述
boot包含一个内核映像和一个通用 ramdisk
systemAndroid 框架
recovery包含恢复映像。恢复映像包含一个恢复程序,该程序允许设备启动到恢复控制台以执行高级恢复和维护操作。它包含第二个完整的 Linux 系统,即独立的操作系统,包括用户界面应用程序、内核和特殊的恢复二进制文件,该二进制文件读取软件包并使用其内容进行更新,即刷新或擦除自身或任何其他分区,尤其是在 OTA 更新期间
cache临时数据存储
misc由恢复分区使用
userdata / data包含用户安装的应用程序、媒体文件和其他用户数据
vendor包含未随 AOSP 分发的专有文件,即 OEM 添加的系统应用程序和库
**cust **包含一些预加载的系统 apss 和区域设置,这些设置在首次使用时安装

image-20241016143505927

# Android 磁盘加密

Android 使用 FDE(全盘加密)和 FBE(文件级加密)方案来加密内部存储。从 Android 5 到 Android 9,FDE 被用作默认加密方案,因为 Android 10 FBE 是默认加密方案。

全盘加密 (FDE:Full-Disk Encryption)

Android 全盘加密基于 dm-crypt,后者是一项在块存储设备层运行的内核功能。加密算法是 128 高级加密标准 (AES),带有密码块链接 (CBC) 和 ESSIV:SHA256。主密钥通过调用 OpenSSL 库使用 128 位 AES 加密。首次启动时,设备会创建一个随机生成的 128 位主密钥,然后使用默认密码和存储的盐对其进行哈希处理。默认密码为:“default_password”但是,生成的哈希也是通过 TEE(例如 TrustZone)签名的,TEE 使用签名的哈希来加密主密钥。可以使用 PIN、密码、图案或默认密码对设备进行加密。FDE 的限制之一是手机只有在启动时输入凭据后才能使用,这也称为安全启动。这意味着,如果未提供凭据,则 SMS、Receiving Calls 、 Alarms 和其他服务将不可用。大多数 OEM 使用默认密码进行加密。

FDE 怀疑受到以下类型的攻击:

1、暴力攻击 :使用 adb 或 HID 界面暴力破解锁屏。暴力破解需要很多时间,因为 OEM 在锁屏超时时使用不同的方案,而且如果 PIN/密码很长,则相对不可能破解。

2、冷启动攻击 : FDE 解密密钥被加载到 RAM 中以进行解密过程。可以通过在冷却 RAM 模块后创建内存转储来提取密钥。这种攻击现在已经过时了。

文件加密 (FBE:File-Based Encryption)

FBE 允许使用不同的密钥加密不同的文件,这些密钥可以独立解锁。FBE 引入了一种称为 Direct Boot 的新引导方法。使用直接启动,加密设备可以直接启动到锁定屏幕。在启用 FBE 的设备上,设备的每个用户都有两个可供应用程序使用的存储位置:凭据加密 (CE) 存储,这是默认存储位置,仅在用户解锁设备后可用,以及设备加密 (DE) 存储,这是在直接启动模式下和用户解锁设备后都可用的存储位置。Phone Dialer、Alarm 和其他重要应用程序在启动后在 DE 存储上运行。

Secure Startup Option in MIUI 11

MIUI 11 中的安全启动选项

安全启动锁屏

安全启动锁屏

# 获取Android 设备实体

请注意,本文中提到的程序旨在概述如何获取 Android 设备。在实际场景中,例如在取证实验室中,设备被隔离并保护免受任何形式的数据篡改,它们还使用专业工具进行采集和分析。在家庭实验室中模拟这些方法是不可行的。

让我们在 FDE 加密的 Android 设备上执行物理采集方法。

Device Specifications :- 设备规格 :- Model : Xiaomi Redmi Note 6 Pro (Tulip) 型号 : 小米红米 Note 6 Pro (Tulip) ROM/OS : MIUI 11 (Android 9) ROM/操作系统 : MIUI 11 (Android 9) Recovery : TWRP Custom Recovery 恢复 : TWRP 自定义恢复 Encryption : FDE ( with default password ) 加密 : FDE ( 使用默认密码 )

所需工具:

  • Android SDK Platform Tools Android SDK 平台工具
# 准备设备
  • 解锁引导加载程序 :每个制造商都有不同的方法来解锁引导加载程序。请参阅设备论坛以查找正确的程序,另请注意,某些制造商不允许解锁 bootloader。
  • 安装自定义恢复 :有许多适用于 Android 的自定义恢复项目。TWRP Custom Recovery 是其中最受欢迎的一种。我们可以使用下面给出的命令启动临时恢复会话。要在设备中永久安装 TWRP,请参阅此 XDA 论坛帖子

TWRP 支持 FDE 和 FBE 的解密,如果设备使用默认密码加密,TWRP 将自动解密存储。否则,将要求用户输入密码/PIN 码。

默认情况下,Data (userdata) 分区和 Cache 分区在 recovery 中挂载。只有挂载的分区会被解密,因此如果我们必须转储 System 分区或任何其他分区,我们将不得不挂载它们。可以通过 Mount 选项挂载分区。

TWRP Menu --> Mount TWRP (菜单 --> 安装)

TWRP Recovery Menu

TWRP Mount Section

我们可以通过 adb 运行以下命令来确定加密类型。如果结果是 block,则为 FDE,如果结果是 file,则为 FBE 加密。

nxb1t@4n6:~$ adb shell "getprop ro.crypto.type"

检查设备加密

FDE 加密存储

FBE 加密存储

# 转储数据分区

首先,我们必须确定数据分区的名称。我们知道,FDE 加密是基于 dm-crypt 的,所以解密后的分区会挂载在单独的块设备上。我们可以使用以下命令通过 adb 列出挂载的分区:

nxb1t@4n6:~$ adb shell "df -h"
nxb1t@4n6:~$ adb shell "ls /dev/block"

但在此之前,我会将我的设备启动到恢复模式(使用 adb 或通过按下音量增大按钮和电源按钮,它会因设备而异)。因为 Android 在标准模式下运行时不允许通过 adb 获得 root 权限。

adb 无法使用 root 权限运行

启动进入恢复模式后

这里我们可以看到 /dev/block/dm-0 被挂载在 /data 挂载点上。这就是我们需要转储的解密数据分区,因为自定义恢复会使用默认密码自动解密它。

在下图中,我们可以看到一个名为 mmcblk0 的块设备,它相当于我们在 linux 发行版中看到的 /dev/sda 设备文件。

阻止设备列表

转储分区非常简单,并且时间消耗可能会因设备的分区大小和速度而异。在我们的例子中,内部存储大小为 64 GB,数据分区约为 50 GB。因此,我转储了 mmcblk0 块设备和 dm-0 块设备,总共超过 100 GB。mmcblk0 是加密的内部存储,因此我将它的转储命名为 encdisk.img,对于 dm-0,我将其命名为 decdata.img

块设备名称可能因设备而异,因此请确保在转储分区时输入正确的名称。

我们将使用 adb pull 命令来转储块设备/分区。

nxb1t@4n6:~$ adb pull /dev/block/mmcblk0 encdisk.img
nxb1t@4n6:~$ adb pull /dev/block/dm-0 decdata.img

Dumping data partition and entire storage

# 分析取证镜像

好了,现在我们可以使用 Autopsy Software 分析转储的数据分区映像。

打开 Autopsy并选择 新建案例 ,输入所需信息。

Autopsy New Case

选择 Disk Image (磁盘映像) 作为源类型。

Select Data Source

选择所需的模块,在我们的例子中,我只选择了 Picture Analyzer、Photorec、Central Repo 和 Android。

Autopsy Modules

一旦它开始处理镜像,我们就能实时看到通话记录、联系人、信息等许多数据。

Artifacts List

我们还可以使用 TSK 命令行实用程序来访问取证镜像内容,它在系统上确实轻量级,但涉及大量手动工作。

TSK 命令行参考

# If the image is a single partition
nxb1t@4n6:~$ fls image.img [inode]
# If the image is entire storage
nxb1t@4n6:~$ fls -o partition_offset image.img [inode]
# Identifying partition offset
nxb1t@4n6:~$ mmls image.img
# To view file content
nxb1t@4n6:~$ icat image.img [inode]
  • fls :fls 列出文件系统中的文件和目录名称。
  • MMLS :MMLS 显示卷系统 (Media Management) 的内容。
  • icat : icat 将磁盘映像中文件的内容输出到 STDOUT。

TSK usage example

在下面的屏幕截图中,我们在 encdisk.img 上使用了 mmls。只有少数分区(如缓存)未加密。Userdata 和其他重要分区已加密。更多 TSK 命令及其用法可以在 Sleuthkit wiki 中找到

mmls

Listing files of different partitions

# 恢复已删除的文件

在恢复已删除的文件之前,让我们看看幕后发生了什么。

数据恢复的工作原理

当我们将文件存储在 hdd/ssd 中时,文件会存储在块中。每个块都包含一段文件。第一个块通常包含文件的元数据。当我们删除文件时,只会删除包含元数据的第一个块。操作系统无法再检测到该文件,因为它的元数据已丢失,因此认为这些块可以自由写入新文件。恢复工具逐个读取存储扇区,逐块读取,并找到相关的块。找到所有相关块后,恢复实用程序将重新制作元数据。由于块被标记为空闲,因此块很有可能被新文件覆盖,因此恢复的文件可能包含已存在文件的内容。因此,强烈建议尽快恢复文件以防止覆盖。

对于大多数用户来说,Autopsy 足以恢复已删除的文件,因为它包含下面列出的工具,选择“已删除文件”类别中的所有文件并将其导出到所需的文件夹即可完成这项工作。但是,如果您使用的是低规格系统和包含许多文件的数据源,那么 Autopsy 将不是一个好的选择。让我们检查一些用于数据恢复的命令行工具。

  • tsk_recover :tsk_recover 将文件从映像恢复到output_dir。默认情况下,仅恢复未分配的文件。使用 flags,它将导出所有文件。
nxb1t@4n6:~$ tsk_recover image.img outpu_dir # recover unallocated files to output_dir
nxb1t@4n6:~$ tsk_recover -d directory_inode image.img output_dir # recover a single folder

image-20241016154112436

  • PhotoRec :PhotoRec 是文件数据恢复软件,旨在恢复丢失的文件,包括视频、文档和档案。
nxb1t@4n6:~$ sudo apt install testdisk -y # Installing photorec in linux
nxb1t@4n6:~$ photorec image.img

PhotoRec

以下是 WhatsApp Images 文件夹中的几个恢复文件。如前所述,一些已删除的文件会被现有文件覆盖。所以数据恢复成功率在 60% 左右。

img

img

# 反取证技术

反取证技术旨在从系统中完全隐藏与用户相关的数据/痕迹,使数字取证调查员更难进行调查。反取证技术有好的也有坏的用例。好的情况是,当我们把手机卖给陌生人或送人给别人时,最好彻底擦拭我们的手机。因为我们不知道他们是否臭名昭著,是否具备数字取证方面的技能。糟糕的用例是罪犯隐藏和销毁证据。

Disk Wipe 磁盘擦除

这是第一个也是最重要的反取证技术。删除存储设备上的所有数据。虽然简单删除不会阻止恢复,但磁盘擦除利用安全删除来超越它。从存储开始到结束的每个扇区都使用零覆盖。也可以使用文件粉碎机安全地删除单个文件。Android 没有太多可靠的文件粉碎和磁盘擦除工具。唯一的选择是在 FDE 设备中设置安全启动并设置长密码,然后多次格式化设备。与 FBE 设备相同,对其进行多次格式化以使其无法获取解密密钥。

文件加密

顾名思义,文件加密技术使用密码加密文件。在 Android 中,有许多使用 TEE 功能的文件加密应用程序。在这种情况下,获取正确的密码将很痛苦。

隐写术

隐写术是将文件隐藏在另一个文件中的方法。这种技术非常罕见,但不应被忽视。例如,在音频、图像文件等中隐藏文本。

# 引用
  • Android Partitions Android 分区
  • Trusty TEE 可信TEE
  • Android rooting Guide Android Root指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/450918.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【linux】Microsoft Edge 的 Bookmarks 文件存储位置

在 Linux 系统中,Microsoft Edge 的书签(Bookmarks)文件存储在用户的配置目录下。具体路径通常如下: ~/.config/microsoft-edge/Default/Bookmarks说明: 路径解释: ~ 表示当前用户的主目录。.config 是一个…

pinia学习笔记(1.0)

首先贴出官网地址:开始 | Pinia pinia作为Vue3项目中常用的状态管理工具,正逐渐取代vuex,现从0到1自己搭建pinia仓库。 首先,安装pinia,使用包管理器工具(npm,pnpm,yarn,Bun等都可以) 安装成…

UE5运行时动态加载场景角色动画任意搭配-相机及运镜(二)

通过《MMD模型及动作一键完美导入UE5》系列文章,我们可以把外部场景、角色、动画资产导入UE5,接下来我们将实现运行时动态加载这些资产,并任意组合搭配。 1、运行时播放相机动画 1、创建1个BlueprintActor,通过这个蓝图动态创建1个LevelSequence,并Play 2、将这个Bluep…

linux基本环境配置 安装Docker RedisMysql

目录 一、安装docker 1、卸载系统之前的docker 2、安装Docker-CE 3、启动docker 4、设置docker开机自启 5、root测试docker命令 6、配置docker镜像加速 二、Docker安装Mysql 1、下载镜像文件 2、创建实例并启动 3、修改MySQL字符集 4、设置容器自启动 三、Docker安…

CTFHUB技能树之SQL——MySQL结构

开启靶场,打开链接: 先判断一下是哪种类型的SQL注入: 1 and 11# 正常回显 1 and 12# 回显错误,说明是整数型注入 判断一下字段数: 1 order by 2# 正常回显 1 order by 3# 回显错误,说明字段数是2列 知道…

Vue3嵌套导航相对路径问题

有如下的页面设计,页面上方第一次导航,两个菜单,首页和新闻 点击新闻,内容里面嵌套一个左侧和右侧,左侧有4条新闻,点击某一条新闻,右侧显示详情 代码如下: ​ File Path: d:\hello\…

【AIGC】ChatGPT提示词Prompt高效编写模式:思维链、Self-Consistency CoT与Zero-Shot CoT

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯思维链 (Chain of Thought, CoT)如何工作应用实例优势结论 💯一致性思维链 (Self-Consistency CoT)如何工作应用实例优势结论 💯零样本思维链 (Ze…

详细分析Redisson分布式锁中的renewExpiration()方法

目录 一、Redisson分布式锁的续期 整体分析 具体步骤和逻辑分析 为什么需要递归调用? 定时任务的生命周期? 一、Redisson分布式锁的续期 Redisson是一个基于Redis的Java分布式锁实现。它允许多个进程或线程之间安全地共享资源。为了实现这一点&…

51单片机数码管循环显示0~f

原理图&#xff1a; #include <reg52.h>sbit dulaP2^6;//段选信号 sbit welaP2^7;//位选信号unsigned char num;//数码管显示的数字0~funsigned char code table[]{ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};//定义数码管显…

web前端-----html5----用户注册

以改图为例 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>用户注册</title> </hea…

彩色图片转灰度图

目录 原始彩色图片灰度图片代码 原始彩色图片 这张图片是原始的彩色图片&#xff0c;我们可以看到它的形状是 cloud is shape: (563, 703, 3)。 灰度图片 这张图片是将原始彩色图片转换为灰度后的图片&#xff0c;它的形状是 cloud_gary is shape: (563, 703)。 代码 以下是…

(C/C++)文件

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 fputc fgetc fputs fgets fprintf fscanf fwrite fread sprintf和sscanf snprintf ​编辑 4对比一组函数(prin…

【启明智显分享】ZX7981PM WIFI6 5G-CPE:2.5G WAN口,2.4G/5G双频段自动调速

昨天&#xff0c;我们向大家展现了ZX7981PG WIFI6 5G-CPE&#xff0c;它强大的性能也引起了一波关注&#xff0c;与此同时&#xff0c;我们了解到部分用户对更高容量与更高速网口的需求。没关系&#xff01;启明智显早就预料到了&#xff01;ZX7981PM满足你的需求&#xff01; …

reac nodejs 实现代码编辑器

地址 https://github.com/xiaobaidadada/filecat 说明

九盾叉车高位显示器:重塑叉车视界,引领高位精准

在繁忙的物流与仓储中&#xff0c;叉车不仅是力量与效率的化身&#xff0c;更是精准与安全的守护者。九盾安防&#xff0c;以科技之名&#xff0c;打造叉车高位显示器&#xff0c;彻底革新了货叉升降的盲区挑战&#xff0c;为物流、仓储及码头等领域带来了前所未有的作业体验。…

CTFHUB技能树之SQL——时间盲注

开启靶场&#xff0c;打开链接&#xff1a; 说明这关对所有信息都做了统一输出&#xff0c;换成延时注入试试 输入&#xff1a; 1 and sleep(15) &#xff08;这里不知道为什么加上--倒是会影响sleep()函数的触发&#xff0c;从而没有延时感&#xff09; 可以观察到有明显的延…

C++11新特性(4)

目录 1.包装器 2.线程库 2.1thread类的简单介绍 2.2线程函数参数 2.3原子性操作库(atomic) 2.4lock_guard与unique_lock 2.5mutex的种类 1. std::mutex 2. std::recursive_mutex 3. std::timed_mutex 4. std::recursive_timed_mutex 2.6lock_guard 2.7unique_lock 3.支持两个线…

【vue】指令补充+样式绑定+计算属性+侦听器

代码获取 知识总结 ⼀、指令补充 1.指令修饰符 1.1 什么是指令修饰符&#xff1f; 所谓指令修饰符就是让指令的 功能更强⼤&#xff0c;书写更便捷 1.2 分类 1.2.1 按键修饰符 keydown.enter&#xff1a;当enter键按下时触发 keyup.enter&#xff1a;当enter键抬起时触…

如何看待阿里通义千问团队发布Qwen2.5 MATH,效果怎么样,这是中国的草莓吗?

Qwen2.5-Math的发布标志着在数学问题解决领域的一个重要进展。这个由阿里通义千问团队发布的模型系列&#xff0c;通过结合Chain-of-Thought (CoT)和Tool-integrated Reasoning (TIR)技术&#xff0c;提升了对中英文数学问题的解决能力。Qwen2.5-Math系列包括基础模型和经过指令…

CentOS 7 yum失效的解决办法

文章目录 一、CentOS 7停止维护导致yum失效的解决办法解决方案 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、CentOS 7停止维护导致yum失效的解决办法 020 年&#xff0c;CentOS 项目与红帽联合宣布将全部投资转向 CentOS Stream&#xff0c;这是…