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/OpenVAS

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

Почему именно Termux?

  • Полный набор пакетов из репозитория apt и возможность установки из pip и npm.
  • Поддержка systemd-подобных сервисов через termux-services и планировщика cron.
  • Работа в полностью изолированной среде без необходимости root‑прав.
  • Мобильность: сканировать сеть можно прямо с телефона, находясь в офисе, в дата‑центре или в полевых условиях.

Установка и базовая настройка Termux

Для начала установим Termux из Google Play или F-Droid, затем обновим репозитории и установим необходимые пакеты.

pkg update && pkg upgrade -y
pkg install -y nmap python git curl termux-services cronie
pip install --upgrade pip
pip install python-nmap openvas_lib

После установки убедимся, что сервис cron запущен:

sv-enable crond
sv start crond

Автоматическое сканирование с Nmap

Создадим скрипт scan_nmap.py, который будет выполнять быстрый аудит сети и сохранять результаты в формате XML.

#!/usr/bin/env python3
import nmap, datetime, os

def run_scan(targets, output_dir="/data/data/com.termux/files/home/scans"):
    if not os.path.isdir(output_dir):
        os.makedirs(output_dir)
    nm = nmap.PortScanner()
    timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
    out_file = os.path.join(output_dir, f"nmap_{timestamp}.xml")
    # Пример сканирования всех TCP‑портов с агрессивным скриптовым движком
    args = "-sS -p- -T4 -A --script=vuln"
    nm.scan(hosts=targets, arguments=args)
    with open(out_file, "w") as f:
        f.write(nm.get_nmap_last_output())
    print(f"[+] Scan saved to {out_file}")

if name == "main":
    # Список целей может быть как отдельный IP, так и CIDR‑подсеть
    targets = "192.168.1.0/24"
    run_scan(targets)

Сделаем скрипт исполняемым и протестируем:

chmod +x scan_nmap.py
./scan_nmap.py

Интеграция OpenVAS через скрипты

OpenVAS (теперь Greenbone Vulnerability Management) предоставляет мощный движок сканирования уязвимостей. В Termux мы будем использовать утилиту omp (OpenVAS Management Protocol) для автоматизации.

Сначала инициализируем базу данных OpenVAS:

greenbone-nvt-sync
openvas-setup

Далее создаём Bash‑скрипт scan_openvas.sh:

#!/usr/bin/env bash
# Параметры подключения к OpenVAS
OMP="omp --host 127.0.0.1 --port 9390 --username admin --password secret"
TARGET="$1"   # IP или подсеть, передаётся в качестве аргумента
PROFILE="Full and fast"

# 1. Создаём цель, если её ещё нет
TARGET_ID=$($OMP -X "<create_target><name>$TARGET</name><hosts>$TARGET</hosts></create_target>" | grep -oP '(?<=)[^<]+')

# 2. Создаём задачу сканирования
TASK_ID=$($OMP -X "<create_task><name>Scan_$TARGET</name><comment>Automated scan</comment><target id='$TARGET_ID'/><config id='daba56c8-73ec-11df-a475-002264764cea'/></create_task>" | grep -oP '(?<=)[^<]+')

# 3. Запускаем сканирование
$OMP -X "<start_task task_id='$TASK_ID'/>"

# 4. Ожидаем завершения (упрощённый вариант – 10 минут)
sleep 600

# 5. Получаем отчёт в формате PDF
REPORT=$($OMP -X "<get_report report_id='$TASK_ID' format_id='c40208e3-0c27-11e5-80f6-28d24461215b'/>" > "openvas_report_${TARGET}_$(date +%Y%m%d_%H%M%S).pdf")

echo "[+] OpenVAS report saved"

Сделаем скрипт исполняемым:

chmod +x scan_openvas.sh

Тестовый запуск:

./scan_openvas.sh 192.168.1.10

Организация расписания сканирований

Для регулярных проверок удобно использовать cron. Добавим два задания: ежедневный быстрый Nmap‑скан и еженедельный глубокий OpenVAS‑скан.

# Откроем crontab для текущего пользователя
crontab -e

# Добавьте строки в конец файла
# Каждый день в 02:00 – быстрый Nmap скан
0 2    /data/data/com.termux/files/home/scan_nmap.py >> /data/data/com.termux/files/home/logs/nmap_$(date +\%Y\%m\%d).log 2>&1

# Каждую субботу в 04:00 – полный OpenVAS скан целой подсети
0 4   6 /data/data/com.termux/files/home/scan_openvas.sh 192.168.1.0/24 >> /data/data/com.termux/files/home/logs/openvas_$(date +\%Y\%m\%d).log 2>&1

Не забудьте создать каталог logs:

mkdir -p ~/logs

Обработка результатов и формирование отчётов

Для упрощения анализа можно собрать результаты в единую таблицу CSV, используя небольшие Python‑скрипты.

#!/usr/bin/env python3
import xml.etree.ElementTree as ET, glob, csv, os

output = []
for file in glob.glob('scans/nmap_.xml'):
    tree = ET.parse(file)
    root = tree.getroot()
    for host in root.findall('host'):
        ip = host.find('address').attrib['addr']
        for port in host.find('ports').findall('port'):
            state = port.find('state').attrib['state']
            service = port.find('service').attrib.get('name', 'unknown')
            output.append([ip, port.attrib['portid'], service, state, os.path.basename(file)])

with open('nmap_summary.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['IP', 'Port', 'Service', 'State', 'SourceFile'])
    writer.writerows(output)

print('[+] CSV report generated: nmap_summary.csv')

Запускать такой скрипт можно после каждого сканирования, добавив соответствующую строку в cron либо в конец Bash‑скриптов.

Безопасность и лучшие практики

  • Храните учётные данные OpenVAS в защищённом файле. Можно использовать termux-setup-storage и задать права 600.
  • Ограничьте доступ к устройству. Включите PIN/пароль и используйте termux-fingerprint для разблокировки скриптов.
  • Не сканируйте сети без разрешения. Автоматические сканирования могут быть восприняты как атака.
  • Регулярно обновляйте базы Nmap и OpenVAS через nmap --script-updatedb и greenbone-nvt-sync.

Заключение

Termux предоставляет мощную и гибкую среду для автоматизации аудита ИТ‑инфраструктуры прямо с мобильного устройства. С помощью скриптов Nmap и OpenVAS, планировщика cron и небольших обработчиков результатов вы получаете полностью автономный процесс обнаружения уязвимостей, который можно адаптировать под любые требования.

Если вам нужен профессиональный аудит, настройка CI/CD‑pipelines для безопасности или поддержка постоянного мониторинга сети, обратитесь в RybinskLab. Наши эксперты помогут интегрировать автоматизированные сканеры, настроить централизованные отчёты и обеспечить соответствие самым высоким стандартам информационной безопасности.

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

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

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

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

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