Установка и запуск сервера Frida

Оглавление


Описание

Frida - это набор инструментов для динамического кода. Позволяет на лету внедрять собственный код в другие приложения.

Для работы Frida на реальном устройстве необходим Root!


Как открыть окно?

Иконка запуска расположена на панели инструментов.

Перед началом работы необходимо запустить устройство или эмулятор.

Описание действий

1. Устройства.

Список устройств, подключенных через ADB. Список автоматически обновляется при подключении/отключении новых устройств или запуске/остановке эмуляторов.

В ZennoDroid Enterprise можно переключаться между подключенными устройствами, в остальных версиях ZennoDroid работа возможна только с запущенным в основном окне эмулятором.

  • Обновить - принудительно обновляет список устройств.

  • Запустить frida - запускает сервер Frida на устройстве. После нажатия на кнопку необходимо дождаться уведомления в информационном окне “Сервер запущен”. При первом запуске происходит автоматическая установка сервера на устройство, что занимает некоторое время (~5-10 сек).

  • Остановить frida - останавливает сервер Frida на устройстве, но не удаляет его, поэтому последующие запуски будут происходить значительно быстрее, чем в первый раз.

2. Приложения.

Список всех установленных приложений, у которых есть возможность запуска. Приложения, которые невозможно запустить (без стартовых activity), не будут отображены в списке.

  • Id - уникальный идентификатор приложения (package name)

  • Название - понятное локализованное название приложения (обычно отображается на иконке)

Действия:

  • Обновить - обновляет список приложений. Необходимо использовать после установки/удаления приложений

  • Активное - в таблице будет выбрано приложение, которое в данный момент отображается на экране устройства.

  • Запустить - запускает выбранное приложение, автоматически подключается к его процессу и ставит его на паузу. Если приложение уже было запущено, оно будет остановлено и запущено заново.

  • Возобновить - снимает с паузы приложение, которое было приостановлено при нажатии кнопки Запустить

3. Процессы

Список всех запущенных процессов на устройстве

  • Pid - идентификатор процесса

  • Название - имя процесса. Одному приложению может соответствовать несколько процессов. Процессы приложений могут содержать уточнения, например, понятное название: com.android.settings (Настройки).

Действия:

  • Обновить - обновляет список процессов. Необходимо использовать после запуска/остановки приложений

  • Самый верхний - в таблице будет выбран основной процесс приложения, которое отображается на экране устройства.

  • Подключиться - подключается к выбранному процессу, после чего становятся доступными операции создания и загрузки скрипта.

  • Отключиться - отключается от процесса. Если приложение завершило работу, то отключение от процесса произойдет автоматически.

4. Скрипт

Окно работы со скриптом. Поддерживаются макросы.

Действия:

  • Выбрать - открывает форму загрузки файлов. Файл скрипта должен иметь расширение .js

  • Сохранить - сохранение содержимого окна в файл с расширением .js

  • Создать - Действие становится активным после подключения к процессу приложения. Компиляция скрипта. Если скрипт содержит ошибки, то в окно информации будет выдано соответствующее уведомление. Ошибки на данном этапе обычно связаны с неправильным синтаксисом

  • Загрузить - Действие становится активным только после успешного выполнения кнопки Создать. Непосредственная загрузка скрипта. Если скрипт содержит ошибки, то в окно информации будет выдано соответствующее уведомление. Ошибки на данном этапе обычно связаны непосредственно с выполнением скрипта, например, из-за отсутствия в коде приложения нужного класса.

  • Выгрузить - выгружает скрипт. Скрипт выгружается автоматически при завершении процесса приложения.

5. Информация

В окно выводится различная служебная информация, сообщения, возникающие в процессе выполнения скрипта, ошибки и т.д.

Горячие клавиши для информационного окна: Скопировать выделенные сообщения (Ctrl + C); удалить выделенные сообщения (Del); удалить все сообщения (Ctrl + Del).


Как проверить, что сервер frida запустился и работает

  • Нажать кнопку Запустить frida. Дождаться уведомления в информационном окне “Сервер запущен

  • На панели Процессы нажать Самый верхний, будет выбран активный процесс

  • Нажать Подключиться

  • На панели Скрипт ввести код: console.log('Hello, World!');

  • Нажать Создать и Загрузить

Если все прошло успешно, то в информационном окне появится сообщение: {"type":"log","level":"info","payload":"Hello, World!"}

После этого можно нажать Выгрузить. Сервер Frida работает!


Стандартные сценарии использования

1. Приложение будет перезапущено даже если уже запущено.

  • На панели Приложения выбрать нужное приложение (по названию или с помощью кнопки Активное).

  • Нажать кнопку Запустить. Приложение запустится (перезапустится если уже было запущено) и встанет на паузу. Произойдет автоматическое подключение к его процессу

  • На панели Скрипт нажать Выбрать и в появившейся форме открыть нужный скрипт (файл с расширением .js)

  • Нажать Создать и Загрузить

  • Нажить кнопку Возобновить. Приложение продолжит работу

2. Приложение уже запущено, подключаемся к его процессу

  • На панели Процессы нажать Самый верхний, будет выбран активный процесс

  • Нажать Подключиться

  • На панели Скрипт нажать Выбрать и в появившейся форме открыть нужный скрипт (файл с расширением .js)

  • Нажать Создать и Загрузить


Перехват трафика приложения с помощью Frida и Burp Suite

Все необходимые файлы находятся внизу страницы

1. Скачать, установить и запустить Burp Suite Community Edition

2. Настроить Burp Suite на обработку трафика с локальной сети компьютера.

  • В меню Settings выбрать Tools - Proxy и нажать Import / Export CA certificate.

    • Import - Certificate and private key from PKCS#12 keystore

    • Выбрать файл zenno.pfx. Пароль 123

3. Выбрать необходимое устройство и запустить в Project Maker.

В ZennoDroid Enterprise необходимо, чтобы в настройках Android было включено использование интернет-подключения компьютера или использование Proxifier.

4. Перенаправить трафик с устройства в Burp Suite.

  • Выполнить экшен “Перенаправить трафик в Burp”.

    • Для проверки, что все работает правильно можно с помощью экшена открыть в браузере страницу http://proxifier.com (важно чтобы страница была http://, а не https://). Запрос к сайту должен отобразиться в Burp Suite (на вкладке Proxy - Http history или Target Site map)

 

 

5. Установить сертификат на устройство.

  • Выполнить экшен “Установить сертификат”. Сертификат Zenno появится в списке Надежных сертификатов (Trusted credentials)

6. Выполнить скрипт в Frida для снятия ssl-pinning

  1. Запустить Frida на панели инструментов

  2. Нажать кнопку Запустить frida

  3. На панели Приложения выбрать нужное приложение.

  4. Нажать кнопку Запустить.

  5. На панели Скрипт нажать Выбрать и в появившейся форме открыть скрипт sslUnpin.js

  6. Нажать Создать и Загрузить

  7. Нажать кнопку Возобновить.

Запросы приложения должны отобразиться в окне Burp Suite. В информационном окне отобразится сообщение {"type":"log","level":"info","payload":"Bypassing SSL Pinning"}

Завершение анализа трафика

  • нажать кнопку Выгрузить на панели Скрипт

  • нажать кнопку Отключиться на панели Процессы

  • Выполнить экшен “Отключить перенаправление трафика в Burp”


Видеоинструкция по настройке перехвата трафика с помощью Frida и Burp Suite


Полезные ссылки

  1. Официальный источник скриптов для Frida

  2. Шаблон и все необходимые файлы (последняя версия) для перехвата трафика приложения с помощью Frida и Burp Suite (пароль на zenno.pfx - 123)

  3. https://zennolab.atlassian.net/wiki/spaces/RU/pages/2151710722