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 反馈 — 无需本地设置。