
androidqf (Android Quick Forensics) помогает быстро собирать криминалистические доказательства с устройств Android, чтобы выявить потенциальные следы компрометации.
androidqf (Android Quick Forensics) — это портативный инструмент для упрощения сбора значимых криминалистических данных с устройств Android.
androidqf предназначен для предоставления простой и портативной кроссплатформенной утилиты для быстрого сбора данных с устройств Android. По функциональности он похож на mvt-android. Однако, в отличие от MVT, androidqf разработан так, чтобы его могли легко запускать и пользователи без технических навыков. Данные, извлечённые с помощью androidqf, можно проанализировать с помощью MVT.
Этот репозиторий является форком androidqf, поддерживаемым Security Lab организации Amnesty International. Инструмент androidqf был изначально разработан Claudio Guarnieri.

Исполняемые бинарные файлы для Linux, Windows и Mac должны быть доступны в последнем релизе. Если у вас возникли проблемы с запуском бинарного файла, возможно, вам стоит собрать его самостоятельно.
Этот проект использует GoReleaser для автоматизированной сборки и выпуска релизов. Для локальной сборки:
Установите GoReleaser:
go install github.com/goreleaser/goreleaser/[email protected]
Запустите сборку снапшота (без публикации):
./build_locally.sh
Это создаст бинарные файлы для всех платформ в каталоге dist/, включая универсальный бинарный файл для macOS, который работает как на Intel, так и на Apple Silicon.
Вы по-прежнему можете использовать традиционный подход с Makefile. Вам потребуется установленный Go 1.26.5+, а также make, git, unzip и curl. AndroidQF включает кросс-компилированный collector, который запускается на целевом устройстве для более надёжного извлечения криминалистически значимой информации.
Сначала соберите модуль collector:
make collector
Затем скомпилируйте AndroidQF для нужной вам платформы:
make linux
make darwin
make windows
Эти команды создадут бинарные файлы в папке build/.
Дистрибутивные пакеты могут отказаться от встраивания поставляемых в комплекте бинарных файлов ADB и collector, выполнив сборку с тегом unbundle:
go build -tags unbundle -o build/
Когда этот тег включён, androidqf ожидает:
adb доступен из системного PATH./usr/lib/androidqf/android-collector/ под именами, ожидаемыми
androidqf, такими как collector_arm и collector_arm64.Сборщики пакетов могут удалить встроенные бинарные ресурсы из assets/ перед сборкой,
но каталог пакета assets/ и его исходные файлы Go должны оставаться на месте.
Сборка unbundle по-прежнему импортирует пакет assets, и сборка завершится ошибкой,
если весь каталог assets/ будет удалён.
Релизный образ контейнера публикуется в GitHub Container Registry:
docker pull ghcr.io/mvt-project/androidqf:latest
Для сбора данных с Android-устройства, подключённого по USB, в Linux пробросьте USB-шину и смонтируйте каталог для вывода:
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
Вы также можете собрать образ локально для выпущенной версии:
docker build --build-arg VERSION=1.8.3 -t androidqf .
[!TIP] См. Архивы сбора данных — там описаны формат архива, хеши целостности, шифрование и обработка больших файлов. Словарь собранных файлов см. в стороннем словаре выходных файлов SocialTIC AndroidQF.
Перед запуском androidqf необходимо подключить целевое устройство Android к компьютеру через USB и включить отладку по USB. Обратитесь к официальной документации о том, как это сделать, но также учитывайте, что телефоны Android от разных производителей могут требовать иных шагов навигации, чем по умолчанию.
После включения отладки по USB можно запускать androidqf. Сначала он попытается подключиться к устройству через USB-мост, в результате чего телефон Android должен запросить у вас ручную авторизацию ключей хоста. Обязательно авторизуйте их, желательно навсегда, чтобы запрос больше не появлялся.
Теперь androidqf должен выполняться и создавать zip-архив сбора данных в текущем рабочем каталоге или в каталоге, указанном с помощью -output. В какой-то момент выполнения androidqf предложит вам несколько вариантов выбора: эти запросы приостановят сбор данных до тех пор, пока вы не сделаете выбор, поэтому будьте внимательны. На каждый запрос также можно ответить заранее с помощью флага командной строки, см. Автоматизированные сборы данных.
Могут быть извлечены следующие данные:
| Данные | Необязательно? | Путь(и) вывода |
|---|---|---|
| Полная резервная копия или резервная копия сообщений SMS и MMS. | ✅ | backup.ab |
| Вывод shell-команды getprop, предоставляющий информацию о сборке и параметры конфигурации. | getprop.txt | |
| Все системные настройки | settings_*.txt | |
| Вывод shell-команды ps, предоставляющий список всех запущенных процессов. | processes.json, если коллектор доступен, иначе processes.txt | |
| Список системных служб. | services.txt | |
| Копия всех журналов системы. | logs/, logcat.txt | |
| Вывод shell-команды dumpsys, предоставляющий диагностическую информацию об устройстве. | dumpsys.txt | |
| Список всех установленных пакетов и связанных файлов дистрибутива. | packages.json | |
| Копия всех установленных APK или только тех, что не помечены как системные приложения. | ✅ | apks/* |
| Инвентаризация APEX и полные заводские и установленные контейнеры APEX для офлайн-анализа. | apex/* | |
| Журналы Intrusion Logging. Содержат приватные данные, такие как история навигации. | ✅ | intrusion_logs/* |
| Метаданные установленных модулей Magisk и маркеры состояния при наличии существующего root-доступа. | ✅ | magisk_modules/* |
Файлы в /system/etc/init.d при наличии существующего root-доступа. | init_scripts/* | |
| Список файлов в системе, опционально включая хеши на устройстве. | ✅ | files.json |
| Копия файлов, доступных во временных папках. | tmp/* | |
| Отчёт об ошибке, содержащий системные журналы и журналы приложений, без включения приватных данных. | bugreport.zip | |
Существующие отчёты об ошибках и сопутствующие файлы из /bugreports/, собранные до создания нового отчёта. | bugreports/ |
Сбор существующих отчётов об ошибках ограничен файлами, доступными через /bugreports/
с правами ADB shell. Он следует по символической ссылке этого каталога, но не по
символическим ссылкам внутри него. Экспортированные копии в общем хранилище и
местоположениях, специфичных для производителя, не ищутся. Android мог уже удалить
более старые отчёты в соответствии со своей политикой хранения, поэтому пустой или
отсутствующий каталог не означает, что отчёты никогда не создавались. Существующие
файлы копируются без удаления их с устройства.