Skip to content

Latest commit

 

History

History
222 lines (186 loc) · 14.4 KB

Part_4.md

File metadata and controls

222 lines (186 loc) · 14.4 KB

Содержание ДИНАМИЧЕСКИЙ АНАЛИЗ

  • 4.0: ‟Подготовка”
  • 4.1: ‟Анализ системных метрик”
  • 4.2: ‟Анализ изменений в файловой системе”
  • 4.3: ‟Анализ сетевого трафика”
  • 4.4: ‟Анализ вызовов API + Анализ системных вызовов”
  • 4.5: ‟Прочие любопытные взаимодействия”

gif

Заметки | Дополнительно

✏️ Заметки

4.0 Подготовка

🧰 [ Инструментарий ]

Утилита / Инструмент Пример вызова Действие
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 от HackTricks

  1. Запуск сервера 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 &"
  1. Подключение Frida к устройству:
# -U                                                      # для подключения к устройству по USB
# -D emulator-<ID>                                        # для подключения к эмулятору
frida <-D emulator-<ID> или -U> <идентификатор-процесса>  # инъекция Frida в процесс
frida <-D emulator-<ID> или -U> -f <пакет>                # Frida запустит пакет
  1. Вывод списка процессов:
frida-ps -U
  1. Исполнение скриптов:
frida -U -f <пакет> -l <скрипт>

4.1 Анализ системных метрик

🔗 Официальная документация про инструмент dumpsys

Действие Команда Комментарий
👤 Получить 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 <пакет>

4.2 Анализ изменений в файловой системе

  • Сравнить вывод команды – список файлов приложения ДО / ПОСЛЕ запуска приложения, выполнения действий:

// В примере указан путь к файлам приложения /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 <местный-путь> <путь-куда-записать>

4.3 Анализ сетевого трафика

  1. Логирование трафика с помощью tcpdump + с одновременной записью в Wireshark для наглядности:
adb exec-out "/data/local/tmp/tcpdump -i any -U -w - 2>/dev/null" | wireshark -k -S -i -
  1. Перехват веб-трафика в Burp Suite для последующего анализа;

🔗 Инструкция по установке сертификата Burp Suite от PortSwigger
🔗 Инструкция по установке сертификата Burp Suite от HackTricks


4.4 Анализ вызовов API + Анализ системных вызовов

  • Логирование системных вызовов через 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 <пакет>
Действие Команда
Вывести все загруженные классы 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 <имя-класса>

4.5 Прочие любопытные взаимодействия

  • Извлечение данных из 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 Activity Manager

🔗 Официальная документация про Activity Manager

Действие Команда
Запуск активности, определяемой намерением adb shell am start <опции> <намерение>
Запуск сервиса, определяемого намерением adb shell am startservice <опции> <намерение>
Трансляция намерения adb shell am broadcast <опции> <намерение>
Дамп кучи в файл adb shell am dumpheap <опции> <процесс> <путь-куда-записать>

🔧 Objection

🔗 Урок по Objection от HackTricks

  • Войти в режим исследования с помощью 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 <базовый-адрес> <размер-дампа> <путь-куда-записать>

📑 Дополнительно

  • [ 📙 ] Мануал: список инструментов для тестирования мобильных приложений от OWASP 🔗
  • [ 📗 ] Гайд: ‟Frida Tutorial” от HackTricks 🔗
  • [ 📗 ] Гайд: ‟Objection Tutorial” от HackTricks 🔗
  • [ :octocat: ] Репозиторий: ‟Mobile Security Framework” от OWASP 🔗
  • [ :octocat: ] Репозиторий: ‟Android Application Analyzer” от NotSoSecure 🔗