Привет, Хабр! В современном мире сети растут крайне быстро, устройств становится всё больше, в связи с чем растёт и количество уязвимых мест. Ручной мониторинг открытых портов, сервисов и дыр в безопасности — схоже с поиском иглы в стоге сена, когда в кармане лежит магнит.
Чем полезна автоматизация и какие проблемы она решает:
-
Время — сканирование сотен IP вручную может занять часы.
-
Человеческий фактор — пропустить критичный порт или уязвимость очень легко.
-
Регулярность — безопасность требует постоянного контроля и мониторинга, а не разовых проверок.
Что такое Nmap
Nmap (Network Mapper) — инструмент для сканирования сетей, аудита безопасности и исследования сетевых устройств. Позволяет обнаруживать хосты, сервисы, ОС, открытые порты и другие характеристики целевых систем. Ключевые функции:
-
Обнаружение хостов: находит все активные устройства в сети (ПК, роутеры, серверы). Поиск происходит путём отправки ICMP-запросов, ARP-запросов (в локальной сети) или TCP/UDP пакетов.
Пример:
nmap -sn 192.168.1.0/24
-
Сканирование портов: проверяет открытые порты (например, 80 — HTTP, 22 — SSH) и определяет, какие сервисы их используют. Методы:
-
Стелс-сканирование (
-sS) — не оставляет логов (только для рута). -
Обычное сканирование (
-sT) — работает без прав рута. -
UDP-сканирование (
-sU) — для поиска DNS, DHCP и других UDP-сервисов.
Пример:
nmap -sS -p 1-1000 192.168.1.1
-
Детекция версий и ОС. Собирает информацию о версии ПО (MySQL 5.7, Apache 2.4) и тип ОС (Linux, Windows, macOS).
Пример:
nmap -A 192.168.1.1
-
Скрипты NSE (Nmap Scripting Engine) — встроенный в Nmap язык скриптов (на Lua), который позволяет автоматизировать сложные задачи: от сбора информации до эксплуатации уязвимостей.
В Nmap сотни встроенных скриптов, разделённых на категории:
|
Категория |
Примеры использования |
Пример команды |
|---|---|---|
|
|
Проверка логинов (Brute Force SSH, FTP) |
|
|
|
Базовые безопасные проверки (используются при |
|
|
|
Поиск известных уязвимостей (CVE) |
|
|
|
Попытка эксплуатации уязвимостей |
|
|
|
Поиск дополнительных хостов и сервисов |
|
|
|
Безопасные скрипты |
|
|
|
Поиск признаков вредоносного ПО |
|
|
|
Агрессивные скрипты |
|
Популярные NSE-скрипты
-
http-enum— Перебор веб‑директорий и файлов. -
http-sql-injection— Поиск SQL‑инъекций. -
ssl-heartbleed— Проверка уязвимости Heartbleed (CVE-2014–0160). -
smb-vuln-ms17-010— Обнаружение EternalBlue (MS17–010). -
ftp-anon— Проверка анонимного входа на FTP. -
ssh-brute— Брутфорс SSH. -
dns-zone-transfer— Проверка на трансфер зоны DNS. -
vulners— Поиск уязвимостей по CVE. -
smb-os-discovery— Определение ОС через SMB. -
http-shellshock— Проверка на Shellshock (CVE-2014–6271). -
http-vuln-cve2017-5638— Эксплойт для Apache Struts2 (CVE-2017–5638). -
http-robots.txt— Анализrobots.txtна интересные директории. -
smb-enum-shares— Перечисление SMB‑шар. -
http-wordpress-enum— Перебор плагинов и тем WordPress. -
http-apache-server-status— Проверка доступностиserver-status. -
rdp-enum-encryption— Проверка поддерживаемых методов шифрования RDP.Nmap + Bash(двоеточие) полное руководство по автоматизации сканирования сети -
http-default-accounts— Поиск учетных записей по умолчанию. -
http-title— Получение заголовка веб‑страницы. -
smb-vuln-cve2009-3103— Проверка уязвимости в SMBv2. -
http-php-version— Определение версии PHP.
Полный список NSE-скриптов можно найти тут.
Как использовать NSE
-
Базовый запуск скриптов
nmap --script=<название_скрипта> <цель>
Пример: проверка HTTP-заголовков
nmap --script=http-headers example.com
-
Запуск нескольких скриптов
nmap --script=http-title,http-sql-injection example.com
-
Запуск всей категории
nmap --script=vuln 192.168.1.1
-
Использование аргументов в скриптах
Некоторые скрипты требуют параметров:
nmap --script=ftp-anon --script-args=ftp-anon.maxlist=100 192.168.1.1
Оптимизация и тонкая настройка Nmap
Работу nmap можно значительно ускорить или адаптировать под практически любые задачи. Разберём основные функции настройки.
-
Управление скоростью сканирования (
-T) Nmap предлагает 6 уровней скорости (-T0до-T5), где:
-
-T0(Paranoid) — очень медленно, для скрытности. -
-T3(Normal) — баланс между скоростью и незаметностью (по умолчанию). -
-T5(Insane) — максимальная скорость, но возможны ложные срабатывания.
Пример:
nmap -T4 -F 192.168.1.1 # Быстрое сканирование популярных портов
-
Параллельное сканирование (
--min-parallelism,--max-parallelism) Управление количеством одновременных запросов:
nmap --min-parallelism=100 192.168.1.0/24 # Ускоряет сканирование крупных сетей
-
Пропуск этапов (
-Pn,-sS):
-
-Pn— считает все хосты «живыми» (полезно, если ICMP блокируется). -
-sS(SYN-сканирование) — быстрее, чем-sT, но требует прав root.
Альтернативные форматы отчётов
Помимо текстовых файлов (-oN), Nmap поддерживает:
-
XML (
-oX) — для обработки программами:nmap -oX scan.xml 192.168.1.1 -
HTML (
-oX+xsltproc) — визуализация:xsltproc scan.xml -o scan.html -
Grep-файлы (
-oG) — удобны для поиска ключевых слов.
Основная часть
Итак, мы разобрались с основными возможностями Nmap. Это действительно полезный инструмент для сканирования сетей, поиска уязвимостей и автоматизации рутинных задач, но даже с таким арсеналом — ручной запуск команд для различных целей неудобен. Поэтому, далее напишем скрипт, который:
-
Сканирует подсеть на активные хосты
-
Проверяет открытые порты и сервисы
-
Ищет уязвимости с помощью NSE
-
Генерирует отчёт с критическими данными
Bash-скрипт для автоматического сканирования
#!/bin/bash # Переменные SUBNET="192.168.1.0/24" # Ваша подсеть OUTPUT_DIR="./scan_results" # Папка для отчётов TIMESTAMP=$(date +"%Y-%m-%d_%H-%M") # Метка времени # Создаём папку для результатов, если её нет mkdir -p "$OUTPUT_DIR" # Функция для сканирования хостов scan_hosts() { echo "[*] Сканируем активные хосты в подсети $SUBNET..." nmap -sn "$SUBNET" -oG "$OUTPUT_DIR/hosts_$TIMESTAMP.txt" grep "Up" "$OUTPUT_DIR/hosts_$TIMESTAMP.txt" | awk '{print $2}' > "$OUTPUT_DIR/active_hosts.txt" echo "[+] Найдено активных хостов: $(wc -l < "$OUTPUT_DIR/active_hosts.txt")" } # Функция для сканирования портов и уязвимостей scan_ports_and_vulns() { while read -r host; do echo "[*] Проверяем $host..." # Стандартное сканирование портов + детекция ОС nmap -sV -O "$host" -oN "$OUTPUT_DIR/ports_$host.txt" # Запуск NSE-скриптов из категории vuln nmap --script=vuln "$host" -oN "$OUTPUT_DIR/vulns_$host.txt" done < "$OUTPUT_DIR/active_hosts.txt" } # Основной цикл main() { scan_hosts scan_ports_and_vulns echo "[+] Готово! Результаты сохранены в $OUTPUT_DIR" } # Запуск main
Как это работает?
-
Обнаружение хостов:
-
nmap -snнаходит все живые устройства в подсети. -
Результат сохраняется в
hosts_<дата>.txt, а IP-адреса извлекаются вactive_hosts.txt.
-
-
Проверка портов и уязвимостей:
-
Для каждого активного IP вызывается
nmap -sV -O(определение сервисов и ОС). -
Скрипты из категории
vulnищут известные CVE (например, уязвимости в SMB или HTTP-серверах).
-
-
Отчёты:
-
По каждому хосту создаются два файла:
ports_.txtиvulns_.txt.
-
Пример вывода
Файл vulns_192.168.1.1.txt может содержать:
Nmap scan report for 192.168.1.1 Host is up (0.045s latency). PORT STATE SERVICE 80/tcp open http | http-vuln-cve2017-5638: | VULNERABLE: Apache Struts2 CVE-2017-5638 | Description: Remote Code Execution vulnerability in Apache Struts2. | References: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5638
Заключение
Безусловно, nmap — далеко не единственный инструмент в арсенале системных администраторов, специалистов по безопасности. Для быстрого сканирования массивных сетей лучше подойдет Masscan. Когда нужен современный аналог с асинхронной обработкой — будет лучше использовать RustScan. А для комплексного анализа уязвимостей в корпоративной среде незаменимы Nessus или OpenVAS. Но именно nmap может стать отправной точной, с которой начинается знакомство с сетевым аудитом.
Освоение Nmap — хорошая инвестиция в Вашу профессиональную компетентность. Этот инструмент уже много лет существует и помогает решать массу проблем. Да, возможно с крупными корпоративными сетями данный инструмент справляется хуже аналогов, но для небольших или домашних сетей подходит идеально.
P.S. В моей группе в Телеграмм разбираем практические кейсы: скрипты (Python/Bash/PowerShell), тонкости ОС и инструменты для эффективной работы.
ссылка на оригинал статьи https://habr.com/ru/articles/931364/
Добавить комментарий