We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Объединение набора утилит для динамического анализа вредоносного кода в Termux с использованием radare2 и Frida

Динамический анализ на мобильных устройствах часто требует связки нескольких инструментов: один — для наблюдения и навигации по машинным инструкциям, второй — для инжекта и перехвата поведения в рантайме. В этом материале показано, как организовать единый набор утилит в 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 как «наблюдатель»

Хорошая схема работы выглядит так:

  1. radare2 поднимает контекст: определяет секции, символы (если есть), смещения функций и потенциальные точки интереса.
  2. Frida запускает перехват в рантайме: API-вызовы, ветвления, загрузки библиотек, обработку файлов/сетевых операций — в зависимости от того, что вы исследуете.
  3. Обе части пишут логи, которые потом сопоставляются по времени (таймлайны) или по событиям (идентификаторы сессий).

Шаг 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 позволяет наблюдать поведение в рантайме и фиксировать события в воспроизводимом формате. Ключ к качественному результату — стандартизированная структура проекта, дисциплина логирования и сопоставление данных по времени и контексту.

Если вам нужна помощь с настройкой лабораторной инфраструктуры, подбором методики анализа под ваш кейс или подготовкой набора скриптов/шаблонов под расследования, обращайтесь в РыбинскЛАБ — мы ведём проекты по анализу и обеспечению безопасности в практическом контуре.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект