
androidqf (Android Quick Forensics) hilft schnell forensische Beweise von Android-Geräten zu sammeln, um potenzielle Spuren von Kompromittierung zu identifizieren.
androidqf (Android Quick Forensics) ist ein portables Tool zur Vereinfachung der Erfassung relevanter forensischer Daten von Android-Geräten.
androidqf soll ein einfaches und portables plattformübergreifendes Dienstprogramm bereitstellen, um schnell Daten von Android-Geräten zu erfassen. Es ist in seiner Funktionalität vergleichbar mit mvt-android. Im Gegensatz zu MVT ist androidqf jedoch so konzipiert, dass es auch von technisch weniger versierten Nutzern einfach ausgeführt werden kann. Die von androidqf extrahierten Daten können mit MVT analysiert werden.
Dieses Repo ist ein Fork von androidqf, der vom Security Lab von Amnesty International gepflegt wird. Das androidqf-Tool wurde ursprünglich von Claudio Guarnieri entwickelt.

Ausführbare Binärdateien für Linux, Windows und Mac sollten im neuesten Release verfügbar sein. Falls Sie Probleme beim Ausführen der Binärdatei haben, sollten Sie sie möglicherweise selbst bauen.
Dieses Projekt verwendet GoReleaser für automatisierte Builds und Releases. So bauen Sie lokal:
Installieren Sie GoReleaser:
go install github.com/goreleaser/goreleaser/[email protected]
Einen Snapshot-Build ausführen (ohne Veröffentlichung):
./build_locally.sh
Dadurch werden Binärdateien für alle Plattformen im Verzeichnis dist/ erstellt, einschließlich einer universellen Binärdatei für macOS, die sowohl auf Intel als auch auf Apple Silicon läuft.
Sie können weiterhin den traditionellen Makefile-Ansatz verwenden. Sie benötigen Go 1.26.5+ sowie make, git, unzip und curl. AndroidQF enthält einen cross-kompilierten collector, der auf dem Zielgerät läuft, um forensisch relevante Informationen zuverlässiger zu extrahieren.
Erstellen Sie zunächst das collector-Modul:
make collector
Kompilieren Sie dann AndroidQF für Ihre Plattform Ihrer Wahl:
make linux
make darwin
make windows
Diese Befehle erzeugen Binärdateien in einem Ordner build/.
Distributionspakete können darauf verzichten, die gebündelten ADB- und collector-Binärdateien einzubetten, indem sie mit dem Build-Tag unbundle gebaut werden:
go build -tags unbundle -o build/
Wenn dieses Tag aktiviert ist, erwartet androidqf:
adb muss über den System-PATH verfügbar sein./usr/lib/androidqf/android-collector/ mit den von
androidqf erwarteten Namen installiert sein, wie etwa collector_arm und collector_arm64.Paketierer können die gebündelten Binär-Assets vor dem Build aus assets/ entfernen,
aber das assets/-Paketverzeichnis und seine Go-Quelldateien müssen vorhanden bleiben.
Der unbundle-Build importiert weiterhin das assets-Paket, und der Build schlägt fehl,
wenn das gesamte assets/-Verzeichnis gelöscht wird.
Das Release-Container-Image wird in der GitHub Container Registry veröffentlicht:
docker pull ghcr.io/mvt-project/androidqf:latest
Um von einem USB-verbundenen Android-Gerät unter Linux zu sammeln, leiten Sie den USB-Bus durch und binden Sie ein Ausgabeverzeichnis ein:
docker run --rm -it --privileged \
-v /dev/bus/usb:/dev/bus/usb \
-v "$(pwd)/output:/output" \
ghcr.io/mvt-project/androidqf:latest -fast -output /output
Sie können das Image auch lokal für eine veröffentlichte Version erstellen:
docker build --build-arg VERSION=1.8.3 -t androidqf .
[!TIP] Siehe Acquisition archives für das Archivformat, Integritäts-Hashes, Verschlüsselung und den Umgang mit großen Dateien. Für ein Wörterbuch der gesammelten Dateien siehe das Drittanbieter-SocialTIC AndroidQF output file dictionary.
Bevor Sie androidqf starten, müssen Sie das Ziel-Android-Gerät über USB mit Ihrem Computer verbunden haben und USB-Debugging aktiviert haben. Bitte beachten Sie die offizielle Dokumentation dazu, wie dies durchzuführen ist, und bedenken Sie auch, dass Android-Telefone verschiedener Hersteller möglicherweise andere Navigationsschritte als die Standardeinstellungen erfordern.
Sobald USB-Debugging aktiviert ist, können Sie mit dem Start von androidqf fortfahren. Es wird zunächst versuchen, sich über die USB-Bridge mit dem Gerät zu verbinden, was dazu führen sollte, dass das Android-Telefon Sie auffordert, die Host-Schlüssel manuell zu autorisieren. Stellen Sie sicher, dass Sie diese autorisieren, idealerweise dauerhaft, damit die Aufforderung nicht erneut erscheint.
Nun sollte androidqf ausgeführt werden und ein Acquisition-Zip-Archiv in Ihrem aktuellen Arbeitsverzeichnis oder in dem mit -output angegebenen Verzeichnis erstellen. Irgendwann während der Ausführung wird androidqf Ihnen einige Auswahlmöglichkeiten anbieten: Diese Aufforderungen unterbrechen die Acquisition, bis Sie eine Auswahl treffen, also achten Sie darauf. Jede Aufforderung kann auch im Voraus mit einem Kommandozeilen-Flag beantwortet werden, siehe Unattended acquisitions.
Die folgenden Daten können extrahiert werden:
| Daten | Optional? | Ausgabepfad(e) |
|---|---|---|
| Ein vollständiges Backup oder ein Backup der SMS- und MMS-Nachrichten. | ✅ | backup.ab |
| Die Ausgabe des Shell-Befehls getprop, die Build-Informationen und Konfigurationsparameter liefert. | getprop.txt | |
| Alle Systemeinstellungen | settings_*.txt | |
| Die Ausgabe des Shell-Befehls ps, die eine Liste aller laufenden Prozesse liefert. | processes.json, wenn der Collector verfügbar ist, andernfalls processes.txt | |
| Die Liste der Dienste des Systems. | services.txt | |
| Eine Kopie aller Logs des Systems. | logs/, logcat.txt | |
| Die Ausgabe des Shell-Befehls dumpsys, die diagnostische Informationen über das Gerät liefert. | dumpsys.txt | |
| Eine Liste aller installierten Pakete und zugehöriger Distributionsdateien. | packages.json | |
| Kopie aller installierten APKs oder nur derjenigen, die nicht als System-Apps gekennzeichnet sind. | ✅ | apks/* |
| APEX-Inventar sowie vollständige Factory- und installierte APEX-Container für die Offline-Analyse. | apex/* | |
| Intrusion-Logging-Logs. Enthält private Daten wie den Navigationsverlauf. | ✅ | intrusion_logs/* |
| Metadaten und Statusmarker installierter Magisk-Module, wenn vorhandener Root-Zugriff verfügbar ist. | ✅ | magisk_modules/* |
Dateien in /system/etc/init.d, wenn vorhandener Root-Zugriff verfügbar ist. | init_scripts/* | |
| Eine Liste der Dateien auf dem System, optional einschließlich geräteseitiger Hashes. | ✅ | files.json |
| Eine Kopie der in Temp-Ordnern verfügbaren Dateien. | tmp/* | |
| Ein Bugreport, der system- und app-spezifische Logs enthält, ohne private Daten. | bugreport.zip | |
Vorhandene Bugreports und Begleitdateien aus /bugreports/, gesammelt vor der Erzeugung eines neuen Berichts. | bugreports/ |