Penetration‑testing Android‑устройств в полевых условиях часто упирается не в «наличие инструментов», а в повторяемость, управляемость и контроль результатов. В этом материале мы разберём, как выстроить автоматизированный фреймворк в Termux для легальных работ по вашим системам или при наличии письменного разрешения. Фреймворк помогает: подготавливать окружение, выполнять контролируемые сканирования (например, с Nmap), использовать модули Metasploit в рамках политики тестирования и запускать custom‑скрипты на Python для сбора/нормализации данных и валидации гипотез.
Важно: ниже приведён ориентированный на инженерную организацию подход. Любая активность должна соответствовать правилам заказчика, требованиям закона РФ и утверждённой методике работ. Мы не рассматриваем обход ограничений или несанкционированное воздействие.
Правовые и этические рамки
Для безопасной и юридически корректной работы:
- получите явное разрешение на тестирование конкретных устройств/сетей;
- работайте только в пределах согласованного «scope» (IP‑диапазон, порты, сервисы);
- зафиксируйте правила прекращения теста при обнаружении критичных эффектов;
- храните результаты с контролем доступа и конфиденциальности.
Технически фреймворк можно использовать в лабораторных сетях и на стендах заказчика. При необходимости используйте VPN исключительно для создания локальной сети между вашими системами и тестовым контуром (не для обхода блокировок).
Требования к окружению Termux
Для устойчивого запуска важно заранее подготовить базовые компоненты: пакетный менеджер Termux, сетевые утилиты, Python, а также поддержку инструментов Metasploit и Nmap. На практике состав будет зависеть от версии Android, доступности бинарников и ограничений среды.
Начать логично с обновления репозиториев и установки набора базовых пакетов:
pkg update && pkg upgrade -y
pkg install -y python pip git curl wget clang make ncurses-utils net-tools nmap openssh
Если требуется больше зависимостей (например, для сборки модулей), их добавляют точечно под вашу задачу. Рекомендуется фиксировать список пакетов в конфигурации проекта.
Концепция фреймворка: модули, конфигурация, отчётность
Хороший фреймворк в Termux должен иметь три свойства: повторяемость, наблюдаемость и контроль расхода времени/рисков.
Предлагаемая архитектура:
- scanner — модуль сетевого обнаружения (например, Nmap) и сохранение результатов в единый формат;
- exploitation_driver — модуль запуска задач Metasploit в рамках заранее заданных сценариев;
- python_enrichment — custom‑скрипты на Python для нормализации, сопоставления сервисов и подготовки «планов» дальнейших шагов;
- policy_guard — слой проверки: scope, таймауты, rate‑limit, запреты на действия вне политики;
- reporting — агрегатор отчётов (результаты сканирования, таймлайны, артефакты).
Ключевой принцип: всё управление делайте через конфигурационные файлы (YAML/JSON или shell‑переменные), а не «вшивайте» IP/порты в код.
Структура проекта (пример)
mkdir -p ~/pentestfw/{scanner,metasploit_driver,python_enrichment,reporting,policy_guard,artifacts,configs,logs}
touch ~/pentestfw/configs/target.json
touch ~/pentestfw/configs/policy.json
touch ~/pentestfw/run.sh
Дальше создаём унифицированный интерфейс запуска: один скрипт управляет этапами и собирает артефакты в папку artifacts/.
Конфигурация целей и политики
Минимально полезная конфигурация цели может содержать список подсетей/хостов и параметры сканирования. Пример формата configs/target.json:
{
"targets": [
"192.168.56.10",
"192.168.56.0/24"
],
"scan_profiles": {
"quick": {"ports": "1-1024", "timeout": 300},
"service_scan": {"ports": "-sV", "timeout": 600}
}
}
Политика нужна, чтобы исключить случайные действия вне scope. Пример configs/policy.json:
{
"allow_ports": ["80","443","22"],
"max_concurrency": 5,
"max_total_duration_seconds": 1800,
"deny_out_of_scope": true
}
В реализации policy_guard проверяет, что заданные порты и адреса соответствуют правилам.
Модуль Nmap: управляемое обнаружение
Nmap — отличный инструмент для документирования состояния поверхности атаки. В автоматизации важно:
- фиксировать профиль сканирования;
- выводить результаты в machine‑readable формат;
- ограничивать скорость и время;
- сохранять логи и артефакты.
Пример запуска сканирования с выгрузкой в файлы. Команда демонстрирует технику организации артефактов, а не предназначение для вредоносного использования:
OUT_DIR=~/pentestfw/artifacts/nmap
mkdir -p "$OUT_DIR"
TARGET="192.168.56.10"
PROFILE="quick"
nmap -n -Pn -sS -p 1-1024 --max-retries 2 --host-timeout 300s \
-oA "$OUT_DIR/scan_${TARGET}_quick"
Для последующего «обогащения» сервисной информации можно добавить версионность (в рамках разрешённого scope):
OUT_DIR=~/pentestfw/artifacts/nmap
TARGET="192.168.56.0/24"
nmap -n -Pn -sS -sV -p 1-1024 --max-retries 2 --host-timeout 600s \
-oA "$OUT_DIR/scan_${TARGET}_service"
После этого python_enrichment парсит XML/grepable форматы и приводит данные к единой схеме.
Интеграция Metasploit: водитель задач и контроль сценариев
Metasploit может применяться как верификационный инструмент для оценки уязвимостей в согласованном контуре. В инженерном фреймворке полезно реализовать «водителя» сценариев:
- выбор модулей по списку (из конфигурации);
- выполнение команд с ограничением времени;
- сохранение результатов;
- обязательное логирование параметров.
Пример обвязки под запуск (в вашем окружении фактическая команда для Metasploit зависит от доступности компонента в Termux):
# metasploit_driver/run_modules.sh
# Примерный каркас. Конкретные параметры модулей задаются policy/target.
MODULE_LIST="~/pentestfw/configs/modules.txt"
LOG_DIR="~/pentestfw/logs/metasploit"
mkdir -p "$LOG_DIR"
while read -r MOD; do
[ -z "$MOD" ] && continue
echo "[*] Running module: $MOD" | tee -a "$LOG_DIR/runner.log"
# TODO: запуск metasploit с таймаутом и корректными параметрами
# Примерно: msfconsole -q -x "use ...; set RHOSTS ...; run; exit"
done < "$MODULE_LIST"
Практически рекомендуется: сначала прогонять этап Nmap, затем на основе обнаруженных сервисов выбирать подходящие проверки Metasploit в строго согласованном порядке.
Custom‑скрипты на Python: парсинг, нормализация и подготовка отчёта
Python удобен для трёх задач:
- парсинг результатов Nmap (например, XML через stdlib/библиотеки);
- сопоставление обнаруженных сервисов с политикой (какие проверки разрешены);
- формирование «рабочего плана» (какие модули Metasploit уместны, какие параметры нужны).
Пример минимального скрипта, который читает XML‑результаты и агрегирует метаданные. Конкретный формат может отличаться в зависимости от настроек Nmap:
cat > ~/pentestfw/python_enrichment/parse_nmap.py <<'PY'
import sys
import xml.etree.ElementTree as ET
xml_path = sys.argv[1]
tree = ET.parse(xml_path)
root = tree.getroot()
hosts = []
for host in root.findall('host'):
addr = None
for a in host.findall('address'):
if a.get('addr'):
addr = a.get('addr')
break
services = []
ports = host.find('ports')
if ports is not None:
for port in ports.findall('port'):
state = port.find('state')
service = port.find('service')
services.append({
'port': port.get('portid'),
'proto': port.get('protocol'),
'state': state.get('state') if state is not None else None,
'name': service.get('name') if service is not None else None
})
hosts.append({'ip': addr, 'services': services})
print(hosts)
PY
Запуск:
python ~/pentestfw/python_enrichment/parse_nmap.py \
~/pentestfw/artifacts/nmap/scan_192.168.56.10_quick.xml \
> ~/pentestfw/artifacts/enriched/hosts.json
Дальше reporting берёт hosts.json и собирает сводку для отчёта: какие хосты обнаружены, какие сервисы открыты, какие гипотезы подтверждены.
Guard‑слой: scope, таймауты и «безопасные дефолты»
Чтобы автоматизация не превратилась в неконтролируемую активность, внедрите guard‑слой:
- сравнение адресов с разрешёнными диапазонами;
- проверка портов (allowlist/denylist);
- ограничение общего времени прогона;
- ограничение параллельности и повторов.
Пример shell‑проверки портов (идея):
ALLOWED_PORTS="80 443 22"n
is_allowed_port() {
local p="$1"
for ap in $ALLOWED_PORTS; do
[ "$p" = "$ap" ] && return 0
done
return 1
}
# Пример использования:
PORT_TO_CHECK="80"
if ! is_allowed_port "$PORT_TO_CHECK"; then
echo "[!] Port $PORT_TO_CHECK is denied by policy"
exit 1
fi
В реальном проекте guard‑слой должен быть единообразным: один и тот же механизм проверок используется на этапах Nmap и Metasploit.
План выполнения фреймворка (pipeline)
Сведём всё в последовательный pipeline. Пример run.sh как каркас:
cat > ~/pentestfw/run.sh <<'SH'
#!/data/data/com.termux/files/usr/bin/sh
set -e
BASE=~/pentestfw
LOG_DIR=$BASE/logs
ART=$BASE/artifacts
mkdir -p "$LOG_DIR" "$ART"
echo "[1/4] Running Nmap discovery..." | tee "$LOG_DIR/pipeline.log"
# TODO: подставьте TARGET и профиль согласно configs
# nmap ... -oA $ART/nmap/...
echo "[2/4] Enrichment with Python..." | tee -a "$LOG_DIR/pipeline.log"
# python ... > $ART/enriched/hosts.json
echo "[3/4] Selecting and running Metasploit checks..." | tee -a "$LOG_DIR/pipeline.log"
# TODO: запуск metasploit_driver по модулям из configs с соблюдением policy
echo "[4/4] Reporting..." | tee -a "$LOG_DIR/pipeline.log"
# TODO: формирование итогового отчёта
SH
chmod +x ~/pentestfw/run.sh
Рекомендации по отчётности и артефактам
Чтобы результаты были полезны в реальном проекте, фиксируйте:
- время и профиль каждого этапа;
- использованные параметры команд;
- версии инструментов (Nmap, Python, Metasploit);
- выгрузки (XML/JSON/текстовые логи);
- корреляцию: какой вывод Nmap привёл к какому тесту/проверке.
Артефакты удобно складывать в отдельные подпапки: artifacts/nmap, artifacts/enriched, artifacts/reports.
Локальная сеть и удобство стенда
Если вам нужно построить управляемый контур для теста Android‑устройств (например, стенд в лаборатории), допускается использование VPN только для создания локальной сети между вашими рабочими машинами и тестовым контуром. Это помогает воспроизводить результаты и упрощает доступ к целям в рамках согласованного scope.
Заключение
Автоматизация в Termux — это не просто «запустить сканер», а выстроить контролируемый pipeline: Nmap для обнаружения, Metasploit для согласованных проверок, Python‑скрипты для нормализации данных и подготовки отчётов, а также guard‑слой для соблюдения scope и лимитов. Такой фреймворк делает pentest‑работы более воспроизводимыми, управляемыми и пригодными для документирования.
Если вы хотите внедрить подобный подход под ваши задачи, стенды и требования заказчиков — обращайтесь в РыбинскЛАБ. Мы поможем спроектировать и оформить рабочий процесс, подготовить инфраструктуру отчётности и рекомендации по безопасной автоматизации под ваш контур.