Динамический анализ на мобильных устройствах часто требует связки нескольких инструментов: один — для наблюдения и навигации по машинным инструкциям, второй — для инжекта и перехвата поведения в рантайме. В этом материале показано, как организовать единый набор утилит в Termux для исследовательских задач по анализу подозрительных бинарей (в рамках легального использования и с соблюдением требований закона РФ), используя radare2 и Frida.
Важно: дальнейшие шаги ориентированы на анализ в исследовательских целях и не предполагают распространение или использование вредоносного ПО. Всегда работайте с образцами, для которых у вас есть законное право на исследование.
Цели и подход к «объединению набора утилит»
Под «объединением» в практическом смысле понимается:
- единая подготовка окружения в
Termux; - стандартизированный способ запуска
radare2для привязки контекста анализа; - автоматизированный запуск скриптов
Fridaи сбор логов; - консистентный формат артефактов (логи, снапшоты, отчёты), чтобы анализ был воспроизводимым.
При такой архитектуре вы получаете «плейбук» для расследования поведения: статическая/динамическая навигация (radare2) + наблюдение/перехват в рантайме (Frida).
Требования и базовая безопасность
Для корректной работы вам потребуются:
- Termux (Android);
- доступ к установке пакетов через менеджер
pkgв Termux; - исследуемое приложение/бинарь, легально доступный для анализа;
- понимание, что некоторые сценарии инжекта и трассировки требуют дополнительных прав/условий на устройстве (зависит от версии Android и политики безопасности).
Рекомендации по безопасности:
- используйте отдельный профиль/устройство для анализа;
- ограничивайте сетевой доступ приложения на время тестов;
- храните артефакты в защищённой папке и по возможности не смешивайте логи разных сессий.
Подготовка Termux: структура проекта
Удобно заранее создать структуру, в которой будут храниться двоичные файлы, скрипты, логи и конфигурации.
mkdir -p ~/lab/malware_playbook/{samples,radare2,scripts,logs,work}
cd ~/lab/malware_playbook
Положите образец в samples. Логи и временные файлы будут уходить в logs, а ваши скрипты — в scripts.
Установка radare2 в Termux
Варианты установки зависят от актуальных пакетов в репозиториях Termux, но общий принцип такой: обновить список пакетов, затем поставить radare2. Начните с обновления окружения:
pkg update
pkg upgrade
Далее установите radare2:
pkg install radare2
Проверьте запуск:
r2 -v
Установка зависимостей и подготовка для Frida
Frida в первую очередь требует наличия серверной части (агента) и клиентских средств. В реальных проектах способ установки зависит от конкретной конфигурации Android-устройства. В рамках практической статьи фокус — на корректной организации рабочего процесса и сборе данных.
Начните с проверки доступных Python-пакетов в Termux и установки клиентской части Frida (если доступна в ваших репозиториях/через pip):
pkg install python
python -m pip install --upgrade pip
python -m pip install frida-tools
Если часть пакетов недоступна в вашем окружении, используйте альтернативный легальный способ установки, который соответствует вашему устройству и репозиториям.
Инициализация связки: радари2 как «контекст», Frida как «наблюдатель»
Хорошая схема работы выглядит так:
- radare2 поднимает контекст: определяет секции, символы (если есть), смещения функций и потенциальные точки интереса.
- Frida запускает перехват в рантайме: API-вызовы, ветвления, загрузки библиотек, обработку файлов/сетевых операций — в зависимости от того, что вы исследуете.
- Обе части пишут логи, которые потом сопоставляются по времени (таймлайны) или по событиям (идентификаторы сессий).
Шаг 1. Подготовка образца и сессии radare2
Пример рабочего сценария для анализа бинаря в радари2:
cd ~/lab/malware_playbook
cp ~/path/to/sample ./samples/
Далее откройте файл в r2 и выполните базовую разметку:
r2 -A ./samples/<sample_name>
В интерактивной консоли radare2 выполните:
aaa
afl
iS
iz
Смысл команд:
aaa— автоматический анализ (в зависимости от формата и возможностей);afl— список функций;iS— секции;iz— строки (полезно для быстрого поиска маркеров).
Если вы нашли интересные точки, зафиксируйте смещения/адреса в заметках (или выгрузите результаты) для сопоставления с тем, что вы перехватите через Frida.
Шаг 2. План событий для Frida
Чтобы скрипт Frida был полезным, заранее определите, какие наблюдения нужны. Практический подход:
- выявить, какие библиотеки загружаются (динамическая загрузка);
- перехватить системно-важные API (файловые операции, загрузка конфигурации, криптография, работа с памятью, вызовы безопасности);
- добавить контекст: PID, имя модуля, стек (по необходимости), таймштамп.
Ниже приведён шаблон структуры Frida-скрипта (пример оформления, без привязки к конкретным «вредоносным» паттернам и без инструкций по злоупотреблениям):
// scripts/trace-template.js
'use strict';
function now() {
return (new Date()).toISOString();
}
rpc.exports.log = function(line) {
console.log(line);
};
console.log('[] Frida script started at ' + now());
Дальше добавляйте перехваты под ваши исследовательские задачи. Рекомендуется вести журнал событий и не смешивать логи разных запусков.
Шаг 3. Запуск Frida и сбор логов
Запуск зависит от того, запускаете вы исследуемое приложение или цепляетесь к уже запущенному процессу. Важно сохранять стандартный формат имени файлов логов.
Ниже — шаблон команды для запуска frida-tools с подстановкой параметров. Подставьте <pid_or_name> и путь к скрипту:
TSTAMP=$(date +%Y%m%d-%H%M%S)
LOG=~/lab/malware_playbook/logs/frida-${TSTAMP}.log
frida -U -n "<pid_or_name>" -l ~/lab/malware_playbook/scripts/trace-template.js -o "$LOG"
Если вы анализируете несколько сессий, сохраняйте связку «образец ↔ радари2-контекст ↔ Frida-логи». Например, рядом храните файл session.json с метаданными:
cat <<'EOF' > ~/lab/malware_playbook/logs/session-${TSTAMP}.json
{
"time": "REPLACE_ME",
"sample": "REPLACE_ME",
"mode": "dynamic-trace",
"notes": "initial session metadata"
}
EOF
Шаг 4. Сопоставление результатов radare2 и Frida
Чтобы связка работала как «единый набор», организуйте сопоставление по двум осям:
- Пространство: адрес/смещение или функция (из
radare2) ↔ событие/перехват (изFrida). - Время: таймштампы событий (из
Frida) ↔ момент запуска/инициализации (по логам приложения или вашим маркерам).
Практический совет: добавляйте в Frida логирование идентификатора «сессии», чтобы быстро склеивать данные при пост-обработке.
Автоматизация в Termux: сценарии запуска «под ключ»
Для удобства можно создать два скрипта: один запускает radare2 и сохраняет сводку, второй запускает Frida и сохраняет логи.
radare2-сводка (пример):
cat <<'EOF' > ~/lab/malware_playbook/scripts/run-radare2.sh
#!/data/data/com.termux/files/usr/bin/sh
set -e
SAMPLE_PATH="$1"
OUT_DIR="$2"
mkdir -p "$OUT_DIR"
TSTAMP=$(date +%Y%m%d-%H%M%S)
OUT="$OUT_DIR/r2-${TSTAMP}"
r2 -A "$SAMPLE_PATH" -q -c "aaa; afl; iS; iz; q" > "${OUT}.txt"
echo "Saved: ${OUT}.txt"
EOF
chmod +x ~/lab/malware_playbook/scripts/run-radare2.sh
Frida-трассировка (пример оформления):
cat <<'EOF' > ~/lab/malware_playbook/scripts/run-frida.sh
#!/data/data/com.termux/files/usr/bin/sh
set -e
TARGET="$1" # pid или имя процесса
SCRIPT_PATH="$2"
OUT_DIR="$3"
mkdir -p "$OUT_DIR"
TSTAMP=$(date +%Y%m%d-%H%M%S)
LOG="$OUT_DIR/frida-${TSTAMP}.log"
frida -U -n "$TARGET" -l "$SCRIPT_PATH" -o "$LOG"
echo "Saved: $LOG"
EOF
chmod +x ~/lab/malware_playbook/scripts/run-frida.sh
Запуск:
~/lab/malware_playbook/scripts/run-radare2.sh ~/lab/malware_playbook/samples/<sample_name> ~/lab/malware_playbook/logs
~/lab/malware_playbook/scripts/run-frida.sh "<pid_or_name>" ~/lab/malware_playbook/scripts/trace-template.js ~/lab/malware_playbook/logs
Локальная сеть для удобного обмена данными (опционально)
Если вам нужно пересылать логи/артефакты между устройством и рабочей машиной, используйте локальную сеть для обмена данными (без целей обхода блокировок). Например, организуйте доступ к терминальному окружению и файлам через локальные сервисы и безопасные каналы, ограничивая доступ только в пределах вашей сети.
Типовые артефакты и формат логирования
Чтобы дальнейшая обработка была эффективной, собирайте:
r2-.txt— сводки анализа radare2;frida-.log— поток событий из Frida;session-.json— метаданные сессии;- при необходимости: конфиги скриптов, комментарии исследователя.
Старайтесь не хранить в логах чувствительные данные (токены, личные сведения). Маскируйте такие значения при подготовке скриптов.
Заключение
Объединение radare2 и Frida в Termux даёт практичную связку для динамического анализа: radare2 формирует структурный контекст (функции, секции, смещения), а Frida позволяет наблюдать поведение в рантайме и фиксировать события в воспроизводимом формате. Ключ к качественному результату — стандартизированная структура проекта, дисциплина логирования и сопоставление данных по времени и контексту.
Если вам нужна помощь с настройкой лабораторной инфраструктуры, подбором методики анализа под ваш кейс или подготовкой набора скриптов/шаблонов под расследования, обращайтесь в РыбинскЛАБ — мы ведём проекты по анализу и обеспечению безопасности в практическом контуре.