Защита Android‑приложений от эксплойтов требует сочетания статического и динамического анализа, изоляции подозрительных действий и возможности быстрого реагирования. Среда Termux на мобильных устройствах предоставляет полноценный Linux‑терминал, позволяющий собрать всё необходимое без необходимости в отдельном компьютере.
1. Эмуляция Android‑окружения в Termux
Для проведения динамического анализа нам понадобится эмулировать работу Android‑системы. Наиболее удобный способ – установить android-sdk и adb в Termux, а затем запустить эмулятор через qemu‑android.
pkg update && pkg upgrade -y
pkg install openjdk-17 wget unzip -y
wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -O cmdline-tools.zip
unzip cmdline-tools.zip -d $HOME/.android
mv $HOME/.android/cmdline-tools $HOME/.android/latest
export ANDROID_SDK_ROOT=$HOME/.android
export PATH=$PATH:$ANDROID_SDK_ROOT/latest/bin
sdkmanager "platform-tools" "platforms;android-33" "emulator" "system-images;android-33;google_apis;x86_64" -y
avdmanager create avd -n termux_avd -k "system-images;android-33;google_apis;x86_64" --device "pixel"
emulator -avd termux_avd -no-window -no-audio -no-boot-anim &
После запуска эмулятора можно подключиться к нему через adb:
adb devices
adb -s emulator-5554 wait-for-device
2. Установка и настройка инструментов анализа
Для динамического анализа рекомендуется использовать сочетание frida, radare2 и apktool. Все они доступны в репозиториях Termux.
pkg install python git curl -y
pip install frida-tools
pkg install radare2 apktool -y
Настройка frida-server в эмуляторе:
adb push $(which frida-server) /data/local/tmp/frida-server
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "/data/local/tmp/frida-server &"
3. Динамический анализ приложений
Для начала необходимо загрузить целевое APK в эмулятор и установить его:
adb install /path/to/vulnerable_app.apk
Запуск скрипта frida для перехвата вызовов подозрительных методов:
frida -U -f com.example.vulnerable -l hook.js --no-pause
Пример простого hook.js, который выводит параметры вызова метода java.io.FileInputStream:
Java.perform(function () {
var FileInputStream = Java.use('java.io.FileInputStream');
FileInputStream.$init.overload('java.lang.String').implementation = function (path) {
console.log('File opened: ' + path);
return this.$init(path);
};
});
Полученные логи позволяют выявить попытки чтения конфиденциальных файлов, что является первым индикатором эксплойта.
4. Разработка sandbox‑модуля
Для изоляции подозрительных действий создаём небольшую оболочку, которая запускает приложение в отдельном пользовательском пространстве Linux‑контейнера (proot) и мониторит системные вызовы через strace и bpftrace.
# Установка proot и strace
pkg install proot strace -y
# Пример скрипта sandbox.sh
cat > sandbox.sh <<'EOF'
#!/data/data/com.termux/files/usr/bin/bash
APP_PKG=$1
# Запуск приложения в proot‑контейнере
proot -0 -r $HOME/sandbox_root /system/bin/sh -c "
export LD_LIBRARY_PATH=/system/lib:/system/lib64;
am start -n $APP_PKG/.MainActivity &
" &
# Мониторинг системных вызовов
strace -f -e trace=file,network -p $(pidof com.example.vulnerable) 2>&1 | \
tee /sdcard/termux_logs/strace_$(date +%s).log
EOF
chmod +x sandbox.sh
Запуск sandbox‑модуля:
./sandbox.sh com.example.vulnerable
Логи strace фиксируют все обращения к файловой системе и сети. При обнаружении запрещённых операций скрипт может автоматически завершить процесс и отправить уведомление.
5. Интеграция и тестирование
Собранный набор компонентов (эмулятор, frida‑hooks, sandbox‑скрипт) удобно упаковать в один репозиторий и автоматизировать запуск через Makefile или bash‑скрипт. Ниже пример базового Makefile:
.PHONY: all start analysis sandbox clean
all: start analysis sandbox
start:
@echo "Запуск эмулятора..."
@emulator -avd termux_avd -no-window -no-audio -no-boot-anim &
@sleep 30
analysis:
@echo "Установка и запуск frida‑hook..."
@frida -U -f com.example.vulnerable -l hook.js --no-pause
sandbox:
@echo "Запуск sandbox‑модуля..."
@./sandbox.sh com.example.vulnerable
clean:
@adb uninstall com.example.vulnerable
@pkill emulator
После выполнения make вы получите полностью автоматизированный процесс анализа и защиты.
Заключение
Среда Termux позволяет собрать мощный набор инструментов для защиты Android‑приложений прямо на мобильном устройстве: эмулировать Android, проводить динамический анализ с помощью frida, изолировать приложение в sandbox‑контейнере и автоматически реагировать на подозрительные действия. Такой подход особенно полезен для быстрых проверок в полевых условиях и для интеграции в CI/CD‑процессы мобильных разработчиков.
Компания RybinskLab предлагает профессиональные услуги по разработке и внедрению кастомных систем защиты Android, настройке Termux‑окружения, проведению аудита безопасности и обучению персонала. Обращайтесь к нам для получения индивидуального решения, соответствующего требованиям вашего проекта.