
Набор инструментов для анализа мобильных приложений в режиме выполнения с веб-интерфейсом, на базе Frida, написанный на Python.
/ | \ ____ __ __ ______ ____
/ ~ \/ _ \| | \/ ___// __ \
\ Y ( <_> ) | /\___ \ ___/
\___|_ / \____/|____//____ >\___ >
\/ House \/ \/
Dynamic Mobile Analysis Tool
Contact: [email protected]
House: Инструментарий для анализа мобильных приложений во время выполнения с веб-интерфейсом, работающий на базе Frida и написанный на Python. Он предназначен для помощи в оценке мобильных приложений путем реализации динамического перехвата и отслеживания функций и призван максимально упростить написание скриптов Frida.
git clone https://github.com/nccgroup/house
cd house
pip3 install -r requirements.txt
pip3 install pipenv
pipenv --python=/usr/bin/python3 install
pipenv --python=/usr/bin/python3 shell
python3 app.py <PORT>
# or:
mkvirtualenv --python=/usr/local/bin/python3 house
workon house
pip install -r requirements.txt
python app.py <PORT>
# or: (only for Mac OS)
git clone https://github.com/nccgroup/house
cd house
pip3 install -r requirements.txt
pip3 install pipenv
pipenv --python=/usr/local/bin/python3 install
pipenv --python=/usr/local/bin/python3 shell
python3 app.py <PORT>
По умолчанию House привязывается к http://127.0.0.1:8000.
Чтобы получить обзор возможностей House, посетите руководство пользователя для получения подробной информации.


Примечание: Убедитесь, что версия Frida обновлена до >= 12.8.3 для перехвата функций в dex/jar файлах
В этом разделе представлен небольшой пример, иллюстрирующий базовое использование House. Демо-пример выполняется на небольшом тестовом Android-приложении:
com.ha0k3.overloads.
Убедитесь, что Android-устройство подключено через USB и на нем запущен Frida server. Проверьте, что Frida server успешно запущен, с помощью следующей команды: frida-ps -U.
Запустите приложение House, выполнив app.py: python app.py <PORT>.
Откройте браузер и перейдите по адресу http://127.0.0.1:PORT.
Обратите внимание, что информация об устройстве отображается на странице. Если нет, нажмите кнопку Обновить или перезапустите приложение и Frida server.


sideload. На данный момент поддерживается боковая загрузка stetho, что упрощает проверку пользовательского интерфейса, хранилища и т.д.





Рендеринг скриптов и трассировка функций

Перехват функций в динамически загружаемых dex/jar файлах

Опция мини-скрипта

Управление историей скриптов

С помощью House исследователи могут динамически изменять аргументы, передаваемые целевым функциям, и перенаправлять их.

Иногда House не может идеально разобрать информацию об аргументах. Например, аргумент может быть специального типа. В примере приложения реализована функция isLit, которая принимает пользовательский объект в качестве аргумента. Для решения таких ситуаций House предоставляет простой "REPL". Исследователи безопасности могут динамически вводить скрипты Frida в REPL и изменять поведение функций.

House предоставляет несколько функций REPL для упрощения тестирования:
inspectObject(obj) использует java.lang.reflect для проверки информации о полях внутри объекта.setRetval(ret) принимает параметр и пытается привести его к правильному типу возвращаемого значения, используя конструктор исходного возвращаемого значения.getStackTrace() выводит стек вызовов.
Примечание: Для перехвата/вмешательства в конструктор укажите $init в качестве имени метода.
Для работы House вам понадобится:
Пожалуйста, попробуйте перезапустить оба сервера frida и House. Если все еще не работает, создайте issue.
Часто возникает при подключении нескольких USB-устройств. Попробуйте перезапустить целевое приложение.
House тестировался с версией Frida 12.8.6; возможны проблемы с другими версиями. Также убедитесь, что версии frida-python и frida-server совпадают. Если все еще не работает, попробуйте запустить сгенерированные скрипты Frida вручную, чтобы проверить, работают ли они.
Особая благодарность следующим проектам с открытым исходным кодом за вдохновение для House:
Если у вас есть дополнительные вопросы о House или вы хотите помочь в его расширении, обращайтесь:
Или отправьте электронное письмо: Hao Ke