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

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

Автоматизация сетевого аудита в Termux с использованием Nmap и Masscan

Termux – это мощный эмулятор терминала для Android, который предоставляет полноценную Linux‑среду. Благодаря возможности установки пакетов из репозиториев apt и pkg, в Termux можно запускать профессиональные инструменты сетевого аудита, такие как Nmap и Masscan. В этой статье мы рассмотрим, как собрать полностью автоматизированный процесс сканирования сети, интегрировать результаты в удобный отчет и использовать полученные данные для дальнейшего анализа.

Подготовка окружения

Перед тем как приступить к работе, убедитесь, что у вас установлен Termux последней версии и имеются права доступа к сети (желательно подключение к Wi‑Fi).

pkg update && pkg upgrade -y

Установим необходимые пакеты:

pkg install -y nmap masscan python git

Для обработки результатов удобно использовать Python‑скрипты. Установим дополнительные модули:

pip install --upgrade pip
pip install pandas xmltodict

Базовое сканирование с Nmap

Команда nmap позволяет выполнять детальный анализ открытых портов, сервисов и их версий. Пример простого сканирования подсети 192.168.1.0/24:

nmap -sS -sV -oX scan_nmap.xml 192.168.1.0/24

Флаг -oX сохраняет результаты в XML‑формате, что упрощает последующий парсинг.

Высокоскоростное сканирование с Masscan

Masscan известен своей способностью сканировать миллионы IP‑адресов за считанные секунды. Для начала проведём быстрый поиск открытых портов 80 и 443 в той же подсети:

masscan 192.168.1.0/24 -p80,443 --rate=1000 -oJ scan_masscan.json

Опция --rate задаёт количество пакетов в секунду. Вывод в формате JSON удобен для импорта в Python.

Автоматизация процесса

Создадим простой bash‑скрипт auto_audit.sh, который будет выполнять последовательность действий:

#!/data/data/com.termux/files/usr/bin/bash

# Параметры сканирования
TARGET="192.168.1.0/24"
NMAP_OUTPUT="$(date +%Y%m%d_%H%M)_nmap.xml"
MASSCAN_OUTPUT="$(date +%Y%m%d_%H%M)_masscan.json"
PY_SCRIPT="process_results.py"

# 1. Masscan – быстрый поиск открытых портов
masscan $TARGET -p1-65535 --rate=2000 -oJ $MASSCAN_OUTPUT

# 2. Nmap – детальный анализ найденных хостов
# Выделяем IP‑адреса из Masscan и передаём их Nmap
IPS=$(jq -r '.ip' $MASSCAN_OUTPUT | sort -u | tr '
' ' ')
if [ -z "$IPS" ]; then
    echo "Masscan не обнаружил активных хостов. Выходим."
    exit 1
fi
nmap -sS -sV -oX $NMAP_OUTPUT $IPS

# 3. Обработка результатов Python‑скриптом
python $PY_SCRIPT $NMAP_OUTPUT $MASSCAN_OUTPUT

# 4. Уведомление (пример через termux-notification)
termux-notification --title "Audit завершён" --content "Nmap: $NMAP_OUTPUT, Masscan: $MASSCAN_OUTPUT"

Скрипт использует jq (установить: pkg install jq) для извлечения IP‑адресов из JSON‑файла Masscan и передаёт их в Nmap. После завершения запускается Python‑скрипт для объединения и форматирования результатов.

Объединение и визуализация результатов

Ниже пример простого Python‑скрипта process_results.py, который преобразует XML‑отчёт Nmap и JSON‑отчёт Masscan в единый CSV‑файл.

#!/usr/bin/env python3
import sys, json, pandas as pd, xmltodict

if len(sys.argv) != 3:
    print('Usage: process_results.py  ')
    sys.exit(1)

nmap_file, masscan_file = sys.argv[1], sys.argv[2]

# Парсим Nmap XML
with open(nmap_file) as f:
    nmap_data = xmltodict.parse(f.read())

hosts = []
for host in nmap_data['nmaprun'].get('host', []):
    addr = host['address']['@addr']
    ports = []
    for port in host.get('ports', {}).get('port', []):
        ports.append({
            'port': port['@portid'],
            'service': port['service']['@name'],
            'version': port['service'].get('@product', '') + ' ' + port['service'].get('@version', '')
        })
    hosts.append({'ip': addr, 'ports': ports})

# Парсим Masscan JSON
with open(masscan_file) as f:
    masscan_data = json.load(f)

masscan_ips = {entry['ip'] for entry in masscan_data}

# Формируем DataFrame
rows = []
for host in hosts:
    ip = host['ip']
    for p in host['ports']:
        rows.append({
            'IP': ip,
            'Port': p['port'],
            'Service': p['service'],
            'Version': p['version'],
            'MasscanDetected': ip in masscan_ips
        })

df = pd.DataFrame(rows)
output_file = f"audit_report_{pd.Timestamp.now().strftime('%Y%m%d_%H%M')}.csv"
df.to_csv(output_file, index=False)
print(f'Report saved to {output_file}')

Полученный CSV‑файл удобно открыть в любой табличной программе или импортировать в систему SIEM.

Лучшие практики автоматизации

  • Разделяйте быстрые и детальные сканы. Masscan используется для предварительного отбора активных хостов, а Nmap – для глубокого анализа.
  • Контролируйте нагрузку сети. Регулируйте параметр --rate в Masscan и -T в Nmap, чтобы избежать блокировок со стороны IDS/IPS.
  • Логируйте каждый запуск. Добавляйте метки времени в имена файлов и сохраняйте копию конфигурации скрипта в системе контроля версий (Git).
  • Обрабатывайте результаты автоматически. Скрипты на Python позволяют конвертировать вывод в форматы, пригодные для дальнейшего анализа (CSV, JSON, HTML).
  • Обеспечьте безопасность. Храните скрипты и отчёты в зашифрованных директориях, особенно если они содержат чувствительные данные о сети.

Заключение

Автоматизация сетевого аудита в Termux с помощью Nmap и Masscan позволяет получать быстрые и точные результаты даже на мобильных устройствах. Комбинация быстрых предварительных сканирований, детального анализа и последующей обработки в Python делает процесс полностью воспроизводимым и удобным для интеграции в CI/CD‑конвейеры или системы мониторинга.

Если вам требуется профессиональная настройка инфраструктуры аудита, разработка кастомных скриптов или консультации по кибербезопасности, команда RybinskLab готова помочь. Мы предоставляем услуги по внедрению автоматизированных сканеров, построению отчётных систем и обучению персонала. Обращайтесь — ваш безопасный сетевой периметр в надежных руках.

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

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

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

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

Связаться со мной