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

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

Разработка кастомного фреймворка автоматизированного сканирования уязвимостей в Termux

Termux предоставляет полноценную Linux‑окружение прямо на Android‑устройстве. Это открывает возможности для создания портативных и автоматизированных инструментов безопасности без необходимости в отдельном ноутбуке. В статье мы рассмотрим, как спроектировать и реализовать кастомный фреймворк сканирования уязвимостей, построенный вокруг nmap и расширяемый через модульную систему плагинов.

Архитектура фреймворка

Фреймворк состоит из трёх основных слоёв:

  1. Ядро – отвечает за планирование задач, управление очередями и обработку результатов.
  2. Модули – набор базовых сканеров (портовый, сервисный, веб‑ориентированный) реализованных как отдельные скрипты Python.
  3. Плагин‑система – позволяет подключать внешние проверки (эксплойты, проверку конфигураций и т.д.) без изменения ядра.

Все компоненты находятся в директории ~/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 в профессиональном пентесте.

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

Поделиться знанием:

Нужна профессиональная помощь?

Меня зовут Усачёв Денис Евгеньевич. Я оказываю IT-услуги в Рыбинске и Ярославской области: настройка серверов, безопасность, автоматизация бизнеса.

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