mvt-project/androidqf
GitHub: mvt-project/androidqf
一款用于快速从 Android 设备提取取证数据的跨平台工具,帮助识别潜在的入侵痕迹。
Stars: 145 | Forks: 22
# androidqf
[](https://goreportcard.com/report/github.com/mvt-project/androidqf)
androidqf (Android Quick Forensics) 是一个便携式工具,旨在简化从 Android 设备获取相关取证数据的过程。
androidqf 旨在提供一个简单且便携的跨平台实用程序,以便快速从 Android 设备获取数据。它的功能类似于 [mvt-android](https://github.com/mvt-project/mvt)。然而,与 MVT 不同的是,androidqf 的设计也便于非技术用户运行。androidqf 提取的数据可以使用 [MVT](https://github.com/mvt-project/mvt) 进行分析。
[下载 androidqf](https://github.com/mvt-project/androidqf/releases/latest)

## 构建
Linux、Windows 和 Mac 的可执行二进制文件应可在[最新版本](https://github.com/mvt-project/androidqf/releases/latest)中找到。如果您在运行二进制文件时遇到问题,可能需要自行构建。
### 使用 GoReleaser 构建(推荐)
本项目使用 [GoReleaser](https://goreleaser.com/) 进行自动化构建和发布。要在本地构建:
1. 安装 GoReleaser:
go install github.com/goreleaser/goreleaser@latest
2. 运行快照构建(不发布):
./build_locally.sh
这将在 `dist/` 目录中创建所有平台的二进制文件,包括一个适用于 Intel 和 Apple Silicon 的 macOS 通用二进制文件。
### 使用 Make 构建(传统方式)
您仍然可以使用传统的 Makefile 方法。您需要安装 Go 1.23+,以及 `make`、`git`、`unzip` 和 `wget`。AndroidQF 包含一个交叉编译的 `collector`,它在目标设备上运行,以更可靠地提取取证相关信息。
首先构建 `collector` 模块:
```
make collector
```
然后为您选择的平台编译 AndroidQF:
```
make linux
make darwin
make windows
```
这些命令将在 *build/* 文件夹中生成二进制文件。
## 如何使用
在启动 androidqf 之前,您需要通过 USB 将目标 Android 设备连接到计算机,并且需要启用 USB 调试。有关如何执行此操作,请参阅[官方文档](https://developer.android.com/studio/debug/dev-options#enable),但也请注意,不同制造商的 Android 手机可能需要与默认设置不同的导航步骤。
启用 USB 调试后,您可以继续启动 androidqf。它将首先尝试通过 USB 网桥连接到设备,这应该会导致 Android 手机提示您手动授权主机密钥。请务必授权它们,理想情况下选择永久授权,这样提示就不会再次出现。
现在 androidqf 应该正在执行,并在您放置 androidqf 二进制文件的相同路径下创建一个取证文件夹。在执行过程中的某个时刻,androidqf 会提示您进行一些选择:这些提示将暂停取证过程,直到您提供选择,因此请注意。
可以提取以下数据:
| 数据 | 可选? | 输出路径 |
|------|-----------|----------------|
| 完整备份或 SMS 和 MMS 消息的备份。 | :white_check_mark: | `backup.ab` |
| getprop shell 命令的输出,提供建立信息和配置参数。 | | `getprop.txt` |
| 所有系统设置 | | `settings_*.txt` |
| ps shell 命令的输出,提供所有正在运行的进程的列表。 | | `processes.txt` |
| 系统服务列表。 | | `services.txt` |
| 系统所有日志的副本。 | | `logs/`, `logcat.txt` |
| dumpsys shell 命令的输出,提供有关设备的诊断信息。 | | `dumpsys.txt` |
| 所有已安装软件包及相关分发文件的列表。 | | `packages.json` |
| 所有已安装 APK 或仅未标记为系统应用的 APK 的副本。 | ✅ | `apks/*` |
| 系统上的文件列表。 | | `files.json` |
| temp 文件夹中可用文件的副本。 | | `tmp/*` |
| 包含系统和应用程序特定日志的错误报告,不包含私人数据。 | | `bugreport.zip` |
### 关于可选数据收集
#### 备份
运行 androidqf 收集时会显示以下选项:
```
Would you like to take a backup of the device?
...
? Backup:
▸ Only SMS
Everything
No backup
```
这些选项指的是通过在后台运行 `adb backup` 命令从设备收集的数据。如果选择 `No backup`,则不会运行 `adb backup` 命令。
| 选项 | 说明 |
|--------|-------------|
| Only SMS | 运行 `adb backup com.android.providers.telephony`。仅收集来自 `com.android.providers.telephony` 的数据。这包括 SMS 数据库。 |
| Everything | 运行 `adb backup -all`。这仅请求那些通过此方法明确允许备份其数据的应用程序的备份。自 Android 12+ 起,此方法几乎对所有应用都不提取任何内容。|
| No backup | 不运行 `adb backup` |
### 下载应用副本
```
Would you like to download copies of all apps or only non-system ones?
? Download:
▸ All
Only non-system packages
Do not download any
```
| 选项 | 说明 |
|--------|-------------|
| All | 将从手机中检索所有已安装的软件包 |
| Only non-system packages | 不下载 `adb pm list packages -s` 中列出的任何软件包 |
| Do not download any | 不下载任何软件包 |
## 加密与潜在威胁
在未加密的驱动器上携带 androidqf 取证数据可能会让您,尤其是您从其获取数据的人,面临重大风险。例如,您可能会在有问题的边境被拦截,您的 androidqf 驱动器可能会被没收。原始数据不仅可能暴露您的行程目的,而且很可能包含非常敏感的数据(例如已安装的应用程序列表,甚至 SMS 消息)。
理想情况下,您应该对驱动器进行全盘加密,但这可能并不总是可行的。您也可以考虑将 androidqf 放置在 [VeraCrypt](https://www.veracrypt.fr/) 容器中,并随身携带一份 VeraCrypt 副本以进行挂载。然而,VeraCrypt 容器通常仅受密码保护,您可能会被迫提供该密码。
或者,androidqf 允许使用提供的 [age](https://age-encryption.org) 公钥加密每次取证。最好此公钥属于终端用户不拥有或至少不随身携带私钥的密钥对。通过这种方式,终端用户即使受到胁迫也无法解密获取的数据。
如果您在 androidqf 可执行文件所在的同一文件夹中放置一个名为 `key.txt` 的文件,androidqf 将自动尝试压缩并加密每次取证,并删除原始的未加密副本。
检索到加密的取证文件后,您可以使用 age 进行解密,如下所示:
```
$ age --decrypt -i ~/path/to/privatekey.txt -o .zip .zip.age
```
请记住,至少部分未加密数据始终有可能通过高级取证技术恢复——尽管我们正在努力缓解这种情况。
## 许可证
androidqf 的目的是便利对那些可能是复杂移动间谍软件攻击目标的人员,特别是民间社会和边缘化社区成员的设备进行***同意式取证分析***。我们不希望 androidqf 助长对非同意个人的隐私侵犯。因此,此许可证的目标是禁止将 androidqf(以及任何其他以相同方式许可的软件)用于*对抗性取证*目的。
为了实现这一点,androidqf 根据 [MVT 许可证 1.1](https://license.mvt.re/1.1/) 发布,这是 [Mozilla Public License v2.0](https://www.mozilla.org/MPL) 的改编版。此修改后的许可证包含新条款 3.0,“同意使用限制”,该条款允许仅在正在提取和/或分析其数据的人员(*“数据所有者”*)明确同意的情况下使用许可软件(以及从中派生的任何*“更大作品”*)。
标签:ADB, Android, Android安全, DAST, DSL, EVTX分析, Forensics, Go语言, Incident Response, 库, 应急响应, 应急响应工具, 恶意软件分析, 数字取证, 数据提取, 日志审计, 演示模式, 电子取证, 目录枚举, 移动安全, 移动设备管理, 程序破解, 网络安全, 自动化脚本, 隐私保护