Android‑приложения часто становятся целью злоумышленников, поэтому своевременный аудит кода – обязательный этап разработки. Статический анализ позволяет выявлять уязвимости без запуска приложения, а Termux предоставляет полноценный Linux‑терминал прямо на мобильном устройстве. В этой статье мы рассмотрим, как собрать набор популярных анализаторов в Termux и использовать их для проверки APK‑файлов.
Почему именно Termux?
- Полный набор пакетов
apt/pkg, совместимых с Debian/Ubuntu. - Поддержка Python, Java, Node.js – всех языков, необходимых для Android‑инструментов.
- Возможность автоматизации через скрипты Bash и интеграции с CI/CD.
Подготовка окружения
Перед установкой анализаторов обновим репозитории и установим базовые зависимости:
pkg update && pkg upgrade -y
pkg install -y git python wget curl unzip openjdk-17 zipalign
Для работы некоторых инструментов понадобится pip и npm:
pip install --upgrade pip
pkg install -y nodejs
Набор инструментов статического анализа
Мы выбрали проверенные решения, которые легко собрать в Termux:
- MobSF (Mobile Security Framework) – комплексный сканер, поддерживает как статический, так и динамический анализ.
- AndroBugs – легковесный сканер на Python, ищет типичные уязвимости.
- QARK (Quick Android Review Kit) – генерирует эксплойты на основе найденных проблем.
- SpotBugs + FindSecurityBugs – статический анализатор Java‑кода.
- PMD – проверка качества кода и обнаружение потенциальных багов.
- Android Lint – встроенный в SDK набор правил.
Установка и запуск MobSF
MobSF работает как веб‑приложение, поэтому потребуется установить virtualenv и зависимости Python.
# Клонируем репозиторий
git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF.git ~/mobsf
cd ~/mobsf
# Создаём виртуальное окружение
python -m venv venv
source venv/bin/activate
# Устанавливаем зависимости
pip install -r requirements.txt
# Запускаем сервер
./run.sh
После старта откройте в браузере http://127.0.0.1:8000 и загрузите APK для анализа.
Установка AndroBugs
git clone https://github.com/AndroBugs/AndroBugs_Framework.git ~/androbugs
cd ~/androbugs
pip install -r requirements.txt
Запуск анализа:
python androbugs.py -f /path/to/app.apk -o report.html
Установка QARK
git clone https://github.com/linkedin/qark.git ~/qark
cd ~/qark
./gradlew clean build
Анализ APK:
python qark/qark.py -i /path/to/app.apk -o ~/qark_report
SpotBugs + FindSecurityBugs
pkg install -y wget
wget https://repo1.maven.org/maven2/com/github/spotbugs/spotbugs/4.8.3/spotbugs-4.8.3.tgz -O /tmp/spotbugs.tgz
tar -xzf /tmp/spotbugs.tgz -C $HOME
wget https://github.com/find-sec-bugs/find-sec-bugs/releases/download/v1.12.0/findsecbugs-plugin-1.12.0.jar -O $HOME/spotbugs/plugins/findsecbugs.jar
Запуск анализа Java‑кода, полученного из декомпиляции APK (см. ниже):
$HOME/spotbugs/bin/spotbugs -textui -pluginList $HOME/spotbugs/plugins/findsecbugs.jar -output spotbugs_report.txt -project myproject
Декомпиляция APK и подготовка исходников
Для Java‑анализаторов необходимо получить исходники. Самый простой способ – использовать apktool и jadx:
pkg install -y apktool
wget https://github.com/skylot/jadx/releases/download/v1.4.0/jadx-1.4.0.zip -O /tmp/jadx.zip
unzip /tmp/jadx.zip -d $HOME/jadx
Декомпилируем APK:
apktool d /path/to/app.apk -o decoded_app
$HOME/jadx/bin/jadx -d src decoded_app/classes.dex
Полученную папку src можно передать в SpotBugs, PMD и Android Lint.
PMD и Android Lint
pkg install -y pmd
pmd -d src -R category/java/bestpractices.xml -f html -r pmd_report.html
Для Lint потребуется Android SDK:
wget https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip -O /tmp/cmdline-tools.zip
unzip /tmp/cmdline-tools.zip -d $HOME/Android
export ANDROID_SDK_ROOT=$HOME/Android
yes | $ANDROID_SDK_ROOT/cmdline-tools/bin/sdkmanager "platform-tools" "platforms;android-33" "build-tools;33.0.0"
$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/lint --check All src
Пример полного цикла анализа
- Скопировать APK на устройство.
- Выполнить декомпиляцию (
apktool+jadx). - Запустить MobSF для быстрой оценки.
- Запустить AndroBugs и QARK для детального поиска уязвимостей.
- Провести Java‑анализ с SpotBugs + FindSecurityBugs, PMD и Android Lint.
- Собрать отчёты в единый PDF (можно использовать
pandoc).
Полученный набор отчётов даст полное представление о потенциальных проблемах: открытых портах, небезопасных API, недостаточной проверке ввода и т.д.
Автоматизация и CI/CD
Скрипт Bash, объединяющий все шаги, можно добавить в репозиторий и запускать через Termux‑GitHub‑Actions или через локальный планировщик cron:
#!/usr/bin/env bash
APK=$1
# Декомпиляция
apktool d "$APK" -o decoded
jadx -d src decoded/classes.dex
# Анализ
python ~/androbugs/androbugs.py -f "$APK" -o report.html
$HOME/spotbugs/bin/spotbugs -textui -pluginList $HOME/spotbugs/plugins/findsecbugs.jar -project src -output spotbugs.txt
pmd -d src -R category/java/bestpractices.xml -f html -r pmd.html
# Объединяем отчёты
pandoc report.html spotbugs.txt pmd.html -o final_report.pdf
Такой подход позволяет интегрировать проверку безопасности в процесс сборки непосредственно на мобильном устройстве.
Лучшие практики
- Регулярно обновляйте инструменты (
git pull,pip install -U). - Ведите журнал найденных уязвимостей и их статуса (исправлено/отклонено).
- Комбинируйте несколько анализаторов – каждый покрывает свои «слепые зоны».
- Не забывайте о динамическом анализе (эмуляторы, Frida) после статического.
Заключение
Termux предоставляет всё необходимое для построения полноценного пайплайна статического анализа Android‑приложений без необходимости подключать полноценный ПК. С помощью MobSF, AndroBugs, QARK, SpotBugs и других инструментов вы получаете глубокий обзор кода, выявляете уязвимости и повышаете качество продукта.
Если вам требуется профессиональный аудит, настройка CI/CD или обучение команды безопасной разработке, специалисты RybinskLab готовы помочь. Мы предоставляем услуги по интеграции статических анализаторов, проведению комплексных тестов безопасности и разработке рекомендаций по исправлению уязвимостей.
Ссылка на определения термина «start», использованные в статье: Cambridge Dictionary, Merriam-Webster.