- 4.0: ‟Подготовка”
- 4.1: ‟Анализ системных метрик”
- 4.2: ‟Анализ изменений в файловой системе”
- 4.3: ‟Анализ сетевого трафика”
- 4.4: ‟Анализ вызовов API + Анализ системных вызовов”
- 4.5: ‟Прочие любопытные взаимодействия”
Утилита / Инструмент | Пример вызова | Действие |
---|---|---|
Wireshark [🔗] | - | GUI; Логирует сетевой трафик |
tcpdump [🔗] | tcpdump -A tcp port <порт> |
CLI; Логирует сетевой трафик |
Frida [🔗] | frida -l disableRoot.js -f owasp.mstg.uncrackable1 |
Поддерживает взаимодействие во время выполнения, позволяет: логировать вызовы, сканировать память процессов на наличие подстрок, перехватывать вызовы нативных функций, ... |
Medusa [🔗] | medusa> use <имя-скрипта> |
Коллекция скриптов для Frida; Автоматически компилирует выбранные и производит инъекции в процессы |
objection [🔗] | objection --gadget <пакет> explore |
Исследование приложений во время исполнения: изучение и взаимодействие с файловой системой, возможность дампа и патча памяти, манипуляция объектами в куче, ... |
House [🔗] | python app.py <порт> |
Имплементирует динамический хук функций и перехваты для упрощения написания скриптов Frida и анализа приложений во время выполнения |
Xposed [🔗] LSPosed [🔗] |
Позволяет изменять поведение приложений / настроек прошивок без необходимости декомпиляции, компиляции и переподписывания | |
WebViewDebugHook [🔗] | Модуль для Xposed; Позволяет детально просматривать WebView в браузере | |
XIntent [🔗] | Модуль для Xposed; Мониторит трафик, производимый намерениями |
- Запуск сервера Frida:
unxz frida-server.xz
adb root
adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "su -с /data/local/tmp/frida-server &"
- Подключение Frida к устройству:
# -U # для подключения к устройству по USB
# -D emulator-<ID> # для подключения к эмулятору
frida <-D emulator-<ID> или -U> <идентификатор-процесса> # инъекция Frida в процесс
frida <-D emulator-<ID> или -U> -f <пакет> # Frida запустит пакет
- Вывод списка процессов:
frida-ps -U
- Исполнение скриптов:
frida -U -f <пакет> -l <скрипт>
Действие | Команда | Комментарий |
---|---|---|
👤 Получить UID пакета | adb shell dumpsys package <пакет> | grep userId |
Может понадобиться для вызова команд / идентификации пакета среди вывода |
📤 Получить статистику по использованию сети | adb shell dumpsys netstats detail |
|
🔋 Получить статистику по использованию батареи | adb shell dumpsys batterystats --charged <пакет> |
С момента последней зарядки |
🧠 Получить статистику по использованию памяти | adb shell dumpsys procstats --hours <время> |
В течении какого-то времени |
🧠 Получить статистику по использованию памяти | adb shell dumpsys meminfo <пакет> -d |
В конкретный момент |
⚙️ Получить статистику по использованию CPU | adb shell dumpsys cpuinfo <пакет> |
- Сравнить вывод команды – список файлов приложения ДО / ПОСЛЕ запуска приложения, выполнения действий:
// В примере указан путь к файлам приложения
/data/data/<пакет>
;
// Необходимо проверить и другие пути, в частности – общее внешнее хранилище;
adb shell "find /data/data/<пакет/путь> -type f -exec file {} \;"
- Просмотреть созданные базы данных:
adb shell "find /data/data/<пакет>/databases -name '*.db'" # Вывести .db файлы
sqlite3 <имя-файла>.db # Подключиться к базе данных
.tables # Вывести таблицы
.schema <имя-таблицы> # Вывести схему таблицы
- Выкачать любопытные файлы для дополнительного анализа:
adb pull <местный-путь> <путь-куда-записать>
- Логирование трафика с помощью
tcpdump
+ с одновременной записью вWireshark
для наглядности:
adb exec-out "/data/local/tmp/tcpdump -i any -U -w - 2>/dev/null" | wireshark -k -S -i -
- Перехват веб-трафика в Burp Suite для последующего анализа;
🔗 Инструкция по установке сертификата Burp Suite от PortSwigger
🔗 Инструкция по установке сертификата Burp Suite от HackTricks
- Логирование системных вызовов через
logcat
:
adb shell ps | grep <пакет> # Получить идентификатор процесса
adb logcat --pid=<идентификатор-процесса> # Логировать системные вызовы приложения
- Логирование системных вызовов через
pidcat
[🔗]:
pidcat <пакет>
- Логирование системных вызовов через
strace
:
adb shell strace -f -p <идентификатор-процесса>
- Трейс функций нативных библиотек с помощью
frida-trace
:
frida-trace -U <пакет> -i "<функция>"
- Пример поиска любопытных API с помощью
frida-trace
:
frida-trace -U -j 'javax.crypto.Cipher!*' \
-j 'javax.crypto.spec.SecretKeySpec!*' \
-f <пакет>
- Используя
objection
:
Действие | Команда |
---|---|
Вывести все загруженные классы | android hooking list classes |
Поиск классов, имя которых начинается с <подстрока> | android hooking search classes <подстрока> |
Вывести методы класса | android hooking search methods <пакет> <имя-класса> |
Вывести объявленные методы класса вместе с параметрами | android hooking list class_methods <пакет>.<имя-класса> |
Хук на метод Вывод связанной информации при каждом вызове метода |
android hooking watch class_method <пакет>.<имя-класса>.<метод> --dump-args --dump-backtrace --dump-return |
Хук на класс Вывод связанной информации при каждом вызове методов класса |
android hooking watch class <пакет>.<имя-класса> --dump-args --dump-return |
Вывод живых экземпляров Java класса | android heap print_instances <имя-класса> |
- Извлечение данных из Keystore с помощью
tracer-cipher.js
[🔗]:
frida -U -f <пакет> -l frida-scripts/tracer-cipher.js
- Дамп памяти с помощью
fridump
[🔗]:
python fridump.py -U <пакет> -o <путь-куда-записать>
- Эмуляция SMS:
adb emu sms send <номер-телефона> <текст>
Действие | Команда |
---|---|
Запуск активности, определяемой намерением | adb shell am start <опции> <намерение> |
Запуск сервиса, определяемого намерением | adb shell am startservice <опции> <намерение> |
Трансляция намерения | adb shell am broadcast <опции> <намерение> |
Дамп кучи в файл | adb shell am dumpheap <опции> <процесс> <путь-куда-записать> |
- Войти в режим исследования с помощью
objection
:
objection -g <пакет> explore
- Пример просмотра параметров среды (пароли, пути, ...) с помощью команды
env
:
[usb] # env
Name Path
----------------------- -------------------------------
cacheDirectory /data/user/0/пакет/cache
codeCacheDirectory /data/user/0/пакет/code_cache
externalCacheDirectory /storage/emulated/0/Android/data/пакет/cache
filesDirectory /data/user/0/пакет/files
Действие | Команда |
---|---|
Попытка отключить детект рута | android root disable |
Попытка симуляции рута | android root simulate |
Вывести текущую активность | android hooking get current_activity |
Вывести активности пакета | android hooking list activities |
Вывести сервисы пакета | android hooking list services |
Вывести приёмники пакета | android hooking list receivers |
Дамп всей памяти в файл | memory dump all <путь-куда-записать> |
Дамп области памяти в файл | memory dump from_base <базовый-адрес> <размер-дампа> <путь-куда-записать> |