Тема сегодняшней статьи — анализ APK-файлов на Android. Напомню, что мы уже рассказывали про использование MobSF для анализа APK-файлов. Сегодня продолжим эту тему и рассмотрим инструмент APKDeepLens. Я покажу, как установить и запустить его на не рутированном Android устройстве с помощью Termux. Это дает возможность анализировать Android-приложения прямо на устройстве.
Еще по теме: Декомпиляция APK-файлов онлайн
Использование APKDeepLens для анализа APK-файлов
APKDeepLens — это инструмент на базе Python, который используется для сканирования Android-приложений (APK-файлов) с целью выявления потенциальных уязвимостей безопасности, с особым акцентом на OWASP Top 10 уязвимостей мобильных устройств. Он был представлен на Blackhat MEA 2023, а также будет продемонстрирован на Blackhat ASIA 2024. Инструмент разработан для Windows и Linux.
Функционал APKDeepLens
APKDeepLens использует jadx для декомпиляции APK-файла. Используя декомпилированный исходный код, он будет искать определенные строки, разбирая вывод. На выходе вы получите:
- Название пакета
- Код версии сборки
- Версия скомпилированного SDK
- Разрешения
- Небезопасные разрешения
- Активности
- Экспортируемые активности
- Сервисы
- Экспортируемые сервисы
- Получатели
- Экспортированные получатели
- Поставщики
- Пути к файлам
- Зашифрованные секреты (IP-адреса, токены, API-ключи, закрытые ключи и т. д.)
- Небезопасные соединения (http, ftp, smtp, JavaScript).
Результаты сканирования могут привести к выявлению потенциальных точек входа, которые могут привести к обнаружению уязвимостей приложения. Однако без дополнительного ручного анализа сделать это будет очень сложно. По умолчанию результаты сканирования отображаются в консоли, но отчет можно сохранить в json, pdf или html-файл.
Установка APKDeepLens в Termux
Процесс установки для настольных компьютеров довольно легкий. Но вот, процесс установки на Android в Termux немного отличается. Перед установкой нужно установить Termux с GitHub или из магазина F-Droid. Главное — не устанавливать его из Google Play, потому что сборки Termux в магазине Google Play устарели и больше не поддерживаются.
Кроме того, необходимо установить Java Development Kit, задать переменную окружения JAVA_HOME и решить вопрос с библиотекой xhtml2pdf, которая отвечает за генерацию pdf-вывода.
Перед установкой убедитесь, что вы обновились, установили java и задали переменную окружения с помощью команд:
1 2 3 4 |
apt update apt upgrade pkg install openjdk-17 export JAVA_HOME=/data/data/com.termux/files/usr/opt/openjdk |
Перезапустите Termux, чтобы применить изменения.
Продолжите установку APKDeepLens с помощью команд:
1 2 3 4 5 |
git clone https://github.com/d78ui98/APKDeepLens.git cd /APKDeepLens python3 -m venv venv source venv/bin/activate pip3 install -r requirements.txt |
Установка требований приводит к ошибке, в результате которой модуль xhtml2pdf не будет установлен. Этот модуль отвечает за генерацию отчетов в формате pdf. Мне не удалось устранить эту ошибку, но я смог обойти ее, отредактировав и закомментировав импорт модуля в файле report_gen.py, см. скрин ниже. В результате теперь тулза не может генерировать отчеты в формате pdf.
Использование APKDeepLens
Теперь можно запустить APKDeepLens в Termux. Список параметров можно получить с помощью команды:
1 |
python3 APKDeepLens.py -help |
Чтобы выполнить сканирование приложения, введите путь к файлу приложения Android в качестве параметра -apk. Результат анализа отображается в терминале, как показано ниже.
Анализ установленных приложений
С помощью APKdeepLens можно анализировать не только загруженные apk-файлы (из альтернативных источников), но и уже установленные приложения. Все, что вам нужно, — это найти путь к файлу анализируемого приложения. Apk-файлы располагаются по произвольному порядке.
Чтобы получить путь к файлу для всех установленных сторонних приложений, можно воспользоваться командой:
1 |
pm list packages -f -3 |
В выводе будут указаны пути к apk-файлам и имя пакета, идентифицирующего приложение.
Можно вручную составить список или использовать grep для фильтрации определенных приложений по ключевому слову. В приведенном ниже примере я буду искать приложение Facebook:
1 |
pm list packages -f -3 | grep facebook |
Из полученного результата скопируйте путь к приложению и вставьте его в APKDeepLens в качестве аргумента -apk.
Есть один недостаток. Данный инструмент сохраняет результаты сканирования в каталоге apk-имен файлов в app_sources. Это означает, что при сканировании установленных приложений вам всегда нужно удалять или переименовывать декомпилированные исходники, например, каталог:
1 |
/app_sources/base.apk/ |
На скрине ниже я удалил декомпилированные данные, иначе они не будут перезаписаны APKdeepLens.
Заключение
Данный инструмент может предложить возможности анализа разрешений и поиска потенциальных секретов приложения, таких как жестко закодированные токены, ключи API, IP-адреса и т. д. Его цель — помочь пользователям понять поведение приложения.
Вы также можете настроить скрипт, чтобы расширить функционал тулзы или для экономии времени сканировать только интересующую вас информацию.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Взлом приложений с помощью фреймворка MMSF
- Способы обхода SSL Pinning Android-приложения
- Подпись APK-файла с помощью APKtool Keytool и Jarsigner