0Pricing
Cyber Security Academy · 课时

Android 获取与分析

提取并分析 Android 数据。

Android 获取与分析 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。

安卓存储架构

要有效提取安卓数据,您必须了解数据存储在哪里。

  • /data/data/<package>/——每个应用的沙盒:数据库、shared_prefs、文件、缓存。
  • /data/media/0/——用户存储空间(照片、下载内容)。
  • /data/system/——账户、锁定设置、使用统计数据。

大多数应用证据位于每个应用沙盒中的SQLite 数据库和 XML 偏好设置文件内;没有根权限或备份机制便无法读取。

ADB 与调试前提条件

安卓调试桥(ADB)是逻辑获取的主要通道。它要求启用USB 调试,并授权主机密钥。

  • 如果未启用调试功能且屏幕未解锁,ADB 访问会被阻止。
  • 授权提示本身会改变设备状态——请记录下来。

请先验证连接并采集设备属性:

adb devices -l
adb shell getprop ro.build.version.release   # Android version
adb shell getprop ro.product.model           # Device model
adb shell getprop ro.crypto.state            # encrypted / unencrypted

通过 ADB 备份进行逻辑获取

adb backup会生成一个用于备份应用数据的 .ab 归档文件。它无需根权限且广泛可用,但有局限:许多应用将 allowBackup=false。

  • 可捕获应用数据、APK(使用 -apk 时)以及共享存储。
  • 无法获取选择退出备份的应用以及已删除的记录。

创建并转换备份以供分析:

# Create a full backup (user must confirm on device)
adb backup -apk -shared -all -f android_backup.ab

# Convert the .ab to a readable tar (android-backup-extractor)
java -jar abe.jar unpack android_backup.ab android_backup.tar
tar -xvf android_backup.tar

文件系统提取

文件系统提取会复制目录树,包括应用沙盒以及保存未同步记录的 SQLite WAL/SHM 日志文件。

  • 需要根权限、取证代理,或漏洞利用/引导加载程序方法。
  • 会保留-wal和-shm文件——这非常重要,因为最近的行可能只存在于这些文件中。

提取 SQLite 数据库时,务必同时获取其日志伴随文件:

adb pull /data/data/com.whatsapp/databases/msgstore.db ./out/
adb pull /data/data/com.whatsapp/databases/msgstore.db-wal ./out/
adb pull /data/data/com.whatsapp/databases/msgstore.db-shm ./out/

物理获取的现实限制

物理镜像是 NAND 的逐位复制,包括可能保留已删除数据的未分配空间。在现代安卓设备上,这是最难获取的镜像。

  • FBE 加密意味着没有用户密钥时,原始 NAND 转储只是密文。
  • 方法包括厂商漏洞利用、EDL/引导加载程序模式,或芯片拆取(最后手段,且具有破坏性)。
  • 实际上,处于 AFU 状态时进行文件系统提取,所得的可用数据通常多于加密的物理转储。

只有在有充分理由且具备可行解密条件时,才选择物理获取。

SQLite:安卓证据的核心

大多数安卓取证痕迹都是SQLite 数据库。分析人员直接查询这些数据库,以恢复消息、通话记录和时间戳。

  • 以只读方式打开,避免修改证据文件。
  • 时间戳通常采用Unix 纪元毫秒数。

检查从提取结果中获得的联系人数据库:

sqlite3 -readonly contacts2.db
sqlite> .tables
sqlite> SELECT display_name, data1
   ...> FROM view_v_contacts LIMIT 20;

恢复已删除的 SQLite 记录

删除 SQLite 中的一行时,通常只是将其所在页面空间标记为空闲。可恢复的残留数据位于:

  • 空闲列表页面以及 .db 文件的未分配区域。
  • -wal预写日志,其中保留了检查点处理前的行版本。

数据雕刻工具可以重建这些记录。请对数据库运行一次恢复处理:

# Carve deleted rows from freelist + WAL
python3 sqlite_carver.py --db msgstore.db --wal msgstore.db-wal \
  --out recovered_messages.csv

# Cross-check live vs recovered counts in your notes

时间线与时间戳解码

构建时间线可以关联不同应用中的事件。难点在于安卓使用多种时间戳格式。

  • Unix 纪元(毫秒)——大多数消息数据库使用。
  • Unix 纪元(秒)——许多系统日志使用。
  • WebKit/Chrome 时间——自 1601 年起计算的微秒数(浏览器历史记录)。

务必统一转换为UTC,并记录设备时区。SQLite 中的示例转换:

-- Convert epoch milliseconds to readable UTC
SELECT datetime(timestamp/1000, 'unixepoch') AS sent_utc,
       key_remote_jid, data
FROM messages
ORDER BY timestamp DESC LIMIT 25;

关键系统痕迹

除了应用数据之外,安卓系统痕迹还能揭示用户行为和设备使用情况。

  • usagestats — 记录运行过哪些应用以及运行时间。
  • accounts.db / accounts_ce.db — 关联的 Google 账户和应用账户。
  • net stats / netpolicy — 每个应用的数据使用量。
  • Wi-Fi 配置(WifiConfigStore.xml) — 已知网络,可用于提供地理定位背景。

这些信息可以相互印证或反驳有关谁在何时使用过该设备的说法。

使用 ALEAPP 自动解析

手动解析无法应对大规模数据。ALEAPP(安卓日志、事件与 Protobuf 解析器)会读取文件系统提取结果,并输出结构化 HTML/CSV 报告。

  • 解析 usagestats、最近活动、通知、应用权限等内容。
  • 请用它进行初步筛查,然后针对原始数据库手动核验关键发现。

请对提取目录运行 ALEAPP:

python3 aleapp.py -t fs -i ./android_filesystem/ -o ./aleapp_report/
# Open ./aleapp_report/index.html to review parsed artifacts

验证与反篡改

不要相信单一工具的结果。请针对源数据并使用不同工具验证自动输出结果。

  • 在 sqlite3 中手动重新运行关键查询,以确认解析器结果。
  • 注意反取证迹象:日志被清除、时间戳被修改、安全擦除应用,或聊天应用启用了消息自动消失设置。
  • 确认镜像哈希值在分析前后仍然匹配。

可复现性和交叉验证能让发现经得起审查。

快速检查

您正在提取某聊天应用的 SQLite 数据库。还必须收集哪些配套文件,才能避免遗漏最近发送的消息?

回顾:安卓获取与分析

您现在可以端到端地获取和分析安卓证据。

  • 应用数据存储在各应用独立的沙箱中,以 SQLite 数据库和 XML 偏好设置的形式存在。
  • ADB 备份 = 简单的逻辑提取;文件系统提取(需要 root 权限)可以保留 WAL;在 FBE 下,物理提取最为困难。
  • 从空闲列表页和 WAL中恢复已删除的记录。
  • 将时间戳统一转换为UTC;解码纪元格式和 WebKit 格式。
  • 使用 ALEAPP 进行初步筛查,然后使用 sqlite3手动验证。
  • 注意反取证篡改,并重新核验镜像哈希值。

下一步:iOS 部分。

常见问题解答

「Android 获取与分析」课时是免费的吗?

是的 — 「Android 获取与分析」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。

「Android 获取与分析」这节课中我会学到什么?

提取并分析 Android 数据。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cyber Security Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「Android 获取与分析」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cyber Security Academy 课中编写并运行代码吗?

能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 移动设备取证基础
  2. Android 获取与分析
  3. iOS 获取与分析
  4. 应用、痕迹与报告
← 返回 Cyber Security Academy