
androidqf (Android Quick Forensics) aiuta a raccogliere rapidamente prove forensi da dispositivi Android, al fine di identificare potenziali tracce di compromissione.
androidqf (Android Quick Forensics) è uno strumento portatile per semplificare l'acquisizione di dati forensi rilevanti da dispositivi Android.
androidqf è pensato per fornire un'utilità cross-platform semplice e portatile per acquisire rapidamente dati da dispositivi Android. È simile per funzionalità a mvt-android. Tuttavia, a differenza di MVT, androidqf è progettato per essere facilmente eseguito anche da utenti non esperti di tecnologia. I dati estratti da androidqf possono essere analizzati con MVT.
Questo repo è un fork di androidqf mantenuto dal Security Lab di Amnesty International. Lo strumento androidqf è stato originariamente sviluppato da Claudio Guarnieri.

I binari eseguibili per Linux, Windows e Mac dovrebbero essere disponibili nella ultima release. In caso di problemi nell'esecuzione del binario, potresti volerlo compilare da solo.
Questo progetto utilizza GoReleaser per build e release automatizzate. Per compilare localmente:
Installa GoReleaser:
go install github.com/goreleaser/goreleaser/[email protected]
Esegui una build snapshot (senza pubblicazione):
./build_locally.sh
Questo creerà i binari per tutte le piattaforme nella directory dist/, inclusi un binario universale per macOS che funziona sia su Intel che su Apple Silicon.
È ancora possibile utilizzare l'approccio tradizionale con Makefile. Sarà necessario avere Go 1.26.5+ installato, insieme a make, git, unzip e curl. AndroidQF include un collector cross-compilato che viene eseguito sul dispositivo di destinazione per estrarre in modo più affidabile le informazioni rilevanti ai fini forensi.
Per prima cosa compilare il modulo collector:
make collector
Poi compilare AndroidQF per la piattaforma desiderata:
make linux
make darwin
make windows
Questi comandi genereranno i binari in una cartella build/.
I pacchetti di distribuzione possono scegliere di non incorporare i binari ADB e collector inclusi compilando con il tag di build unbundle:
go build -tags unbundle -o build/
Quando questo tag è abilitato, androidqf si aspetta:
adb sia disponibile nel PATH di sistema./usr/lib/androidqf/android-collector/ con i nomi attesi da
androidqf, come collector_arm e collector_arm64.I packager possono rimuovere gli asset binari inclusi da assets/ prima della build,
ma la directory del pacchetto assets/ e i suoi file sorgente Go devono rimanere presenti.
La build unbundle importa ancora il pacchetto assets, e la build fallirà
se l'intera directory assets/ viene eliminata.
L'immagine container di release è pubblicata su GitHub Container Registry:
docker pull ghcr.io/mvt-project/androidqf:latest
Per raccogliere dati da un dispositivo Android connesso via USB su Linux, passare il bus USB e montare una directory di output:
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
Puoi anche compilare l'immagine localmente per una versione rilasciata:
docker build --build-arg VERSION=1.8.3 -t androidqf .
[!TIP] Consulta Acquisition archives per il formato dell'archivio, gli hash di integrità, la crittografia e la gestione dei file di grandi dimensioni. Per un dizionario dei file raccolti, consulta il SocialTIC AndroidQF output file dictionary di terze parti.
Prima di avviare androidqf è necessario avere il dispositivo Android di destinazione collegato al computer tramite USB e aver abilitato il debug USB. Fai riferimento alla documentazione ufficiale su come procedere, ma tieni anche presente che i telefoni Android di produttori diversi potrebbero richiedere passaggi di navigazione diversi da quelli predefiniti.
Una volta abilitato il debug USB, puoi procedere con l'avvio di androidqf. Questo tenterà innanzitutto di connettersi al dispositivo tramite il bridge USB, il che dovrebbe far comparire sul telefono Android una richiesta di autorizzazione manuale delle chiavi host. Assicurati di autorizzarle, idealmente in modo permanente, così che la richiesta non compaia più.
A questo punto androidqf dovrebbe essere in esecuzione e creare un archivio zip di acquisizione nella directory di lavoro corrente, oppure nella directory specificata con -output. A un certo punto dell'esecuzione, androidqf ti presenterà alcune scelte: queste richieste metteranno in pausa l'acquisizione finché non fornirai una selezione, quindi presta attenzione. Ogni richiesta può anche essere anticipata tramite un flag da riga di comando, vedi Unattended acquisitions.
È possibile estrarre i seguenti dati:
| Dati | Opzionale? | Percorso/i di output |
|---|---|---|
| Un backup completo oppure un backup dei messaggi SMS e MMS. | ✅ | backup.ab |
| L'output del comando shell getprop, che fornisce informazioni sulla build e parametri di configurazione. | getprop.txt | |
| Tutte le impostazioni di sistema | settings_*.txt | |
| L'output del comando shell ps, che fornisce un elenco di tutti i processi in esecuzione. | processes.json quando il collector è disponibile, altrimenti processes.txt | |
| L'elenco dei servizi di sistema. | services.txt | |
| Una copia di tutti i log del sistema. | logs/, logcat.txt | |
| L'output del comando shell dumpsys, che fornisce informazioni diagnostiche sul dispositivo. | dumpsys.txt | |
| Un elenco di tutti i pacchetti installati e dei relativi file di distribuzione. | packages.json | |
| Copia di tutti gli APK installati o solo di quelli non contrassegnati come app di sistema. | ✅ | apks/* |
| Inventario APEX e container APEX completi di fabbrica e installati per l'analisi offline. | apex/* | |
| Log di Intrusion Logging. Contiene dati privati come la cronologia di navigazione. | ✅ | intrusion_logs/* |
| Metadati dei moduli Magisk installati e marcatori di stato, quando è disponibile un accesso root esistente. | ✅ | magisk_modules/* |
File in /system/etc/init.d, quando è disponibile un accesso root esistente. | init_scripts/* | |
| Un elenco dei file presenti sul sistema, con possibilità di includere gli hash sul dispositivo. | ✅ | files.json |
| Una copia dei file disponibili nelle cartelle temporanee. | tmp/* | |
| Un bug report contenente i log di sistema e specifici delle app, senza dati privati inclusi. | bugreport.zip | |
Bugreport esistenti e file complementari da /bugreports/, raccolti prima di generare un nuovo report. | bugreports/ |