Termux предоставляет полноценную Linux‑окружение прямо на Android‑устройстве. Это открывает возможности для создания портативных и автоматизированных инструментов безопасности без необходимости в отдельном ноутбуке. В статье мы рассмотрим, как спроектировать и реализовать кастомный фреймворк сканирования уязвимостей, построенный вокруг nmap и расширяемый через модульную систему плагинов.
Архитектура фреймворка
Фреймворк состоит из трёх основных слоёв:
- Ядро – отвечает за планирование задач, управление очередями и обработку результатов.
- Модули – набор базовых сканеров (портовый, сервисный, веб‑ориентированный) реализованных как отдельные скрипты Python.
- Плагин‑система – позволяет подключать внешние проверки (эксплойты, проверку конфигураций и т.д.) без изменения ядра.
Все компоненты находятся в директории ~/vulnscan и взаимодействуют через единую JSON‑структуру, что упрощает интеграцию с другими инструментами.
Базовые модули
Ниже перечислены минимальные модули, которые входят в поставку фреймворка:
port_scanner.py– обёртка надnmap -p‑для быстрого перебора открытых портов.service_enumerator.py– используетnmap -sVдля определения сервисов и их версий.web_vuln_checker.py– проверка распространённых веб‑уязвимостей (SQLi, XSS) на основеrequestsиBeautifulSoup.
Каждый модуль принимает на вход объект {"target": "IP/hostname", "options": {...}} и возвращает результат в виде JSON‑массива.
Система плагинов
Плагин‑система построена на принципе «интерфейса» – любой скрипт, размещённый в директории plugins/ и реализующий функцию run(target, data), автоматически подхватывается ядром. Пример простого плагина:
#!/usr/bin/env python3
import json
def run(target, data):
# Плагин проверяет наличие известного баннера
banner = data.get('service_banner', '')
vulnerable = 'Apache/2.2.15' in banner
return {
'plugin': 'apache_banner_check',
'target': target,
'vulnerable': vulnerable,
'details': 'Detected outdated Apache banner' if vulnerable else 'Banner is clean'
}
if name == 'main':
import sys, argparse
parser = argparse.ArgumentParser()
parser.add_argument('target')
parser.add_argument('data', help='JSON string from previous module')
args = parser.parse_args()
result = run(args.target, json.loads(args.data))
print(json.dumps(result))
Фреймворк автоматически собирает вывод всех плагинов в общий отчет.
Интеграция с Nmap
Для работы в Termux необходимо установить nmap через пакетный менеджер:
pkg install nmap
Внутри модуля port_scanner.py вызывается система команд:
import subprocess, json
def scan(target, ports='1-65535'):
cmd = ['nmap', '-p', ports, '-T4', '-oX', '-', target]
proc = subprocess.run(cmd, capture_output=True, text=True)
# Преобразуем XML в JSON (упрощённый пример)
return {'raw_xml': proc.stdout}
Для более продвинутой обработки рекомендуется использовать библиотеку python-libnmap, которую можно установить в Termux:
pip install python-libnmap
Развёртывание и обновление
Проект хранится в публичном репозитории GitHub. Клонирование и первичная настройка выполняются одной командой:
git clone https://github.com/RybinskLab/vulnscan.git ~/vulnscan && \
cd ~/vulnscan && \
pip install -r requirements.txt
Для автоматического обновления можно добавить cron‑задачу в Termux:
crontab -e
# Добавить строку
0 3 * cd ~/vulnscan && git pull && pip install -r requirements.txt
Безопасность и изоляция
Запуск сканеров из Termux требует повышенных прав только на сетевой уровень, что минимизирует риск получения root‑привилегий. Рекомендуется:
- Запускать фреймворк в отдельном пользовательском профиле Termux.
- Ограничивать доступ к файлам отчётов через
chmod 600. - Использовать VPN или TOR для скрытия источника сканирования.
Пример использования
Запуск полного цикла сканирования выглядит так:
python3 ~/vulnscan/run.py --target 192.168.1.100 \
--modules port_scanner service_enumerator web_vuln_checker \
--plugins all \
--output report_$(date +%F).json
В результате пользователь получает JSON‑отчёт, содержащий:
- Список открытых портов.
- Определённые сервисы и их версии.
- Выявленные веб‑уязвимости.
- Результаты всех подключённых плагинов.
Заключение
Создание собственного фреймворка сканирования уязвимостей в Termux позволяет объединить мощь nmap, гибкость Python‑модулей и расширяемость через плагины в одном портативном решении. Такой подход идеален для полевых специалистов, студентов и исследователей, которым нужен быстрый и безопасный набор инструментов без тяжёлой инфраструктуры.
Если вы хотите ускорить разработку, получить профессиональную аудиторию, настроить CI/CD для вашего фреймворка или заказать кастомные плагины под специфические задачи – обратитесь к RybinskLab. Мы предоставляем услуги по разработке, интеграции и поддержке security‑инструментов под Android и Linux, а также проводим обучение и консультирование по использованию Termux в профессиональном пентесте.