📌 Шпаргалка #11

👾 NSE-скрипты Nmap — полный гайд

✍️ pentestudy 📅 26.03.2026

📌 Что такое NSE

NSE (Nmap Scripting Engine) — движок скриптов внутри Nmap. Это отдельные мини-программы на языке Lua, которые запускаются после сканирования портов и делают то, что обычными флагами невозможно.

Флаги отвечают на вопрос — "что открыто?" Скрипты отвечают на вопрос — "что с этим можно сделать?"

Пример разницы:

nmap -sV 10.0.0.1

Скажет: на порту 80 работает Apache 2.4.49

nmap --script vuln 10.0.0.1

Скажет: Apache 2.4.49 уязвим к CVE-2021-41773, вот подробности


📂 Где хранятся скрипты

По умолчанию все скрипты лежат в одной папке:

/usr/share/nmap/scripts/

Посмотреть сколько их:

ls /usr/share/nmap/scripts/ | wc -l

Обычно ~600 скриптов из коробки. Каждый скрипт — файл с расширением .nse.

Посмотреть список:

ls /usr/share/nmap/scripts/           # все скрипты
ls /usr/share/nmap/scripts/ | grep http    # только HTTP
ls /usr/share/nmap/scripts/ | grep smb     # только SMB
ls /usr/share/nmap/scripts/ | grep brute   # только брутфорс

Прочитать описание конкретного скрипта:

nmap --script-help http-enum

Или посмотреть исходный код (скрипты открыты — можно изучать и учиться):

cat /usr/share/nmap/scripts/http-enum.nse | head -30

Есть ещё файл-индекс с описанием всех скриптов:

/usr/share/nmap/scripts/script.db

🚀 Как запускать

По имени — конкретный скрипт

nmap --script http-enum 10.0.0.1

По категории — все скрипты этой группы

nmap --script vuln 10.0.0.1

Несколько скриптов через запятую

nmap --script http-enum,http-headers,http-methods 10.0.0.1

По маске — все скрипты подходящие под паттерн

nmap --script "http-*" 10.0.0.1      # все HTTP-скрипты
nmap --script "smb-*" 10.0.0.1       # все SMB-скрипты
nmap --script "dns-*" 10.0.0.1       # все DNS-скрипты

Комбинация категорий

nmap --script "vuln and safe" 10.0.0.1           # уязвимости, но безопасные
nmap --script "default or safe" 10.0.0.1          # дефолтные или безопасные
nmap --script "not intrusive" 10.0.0.1            # всё кроме агрессивных
nmap --script "(http-*) and not http-brute" 10.0.0.1  # HTTP но без брутфорса

Свой скрипт — по полному пути

nmap --script /home/user/my-script.nse 10.0.0.1

С аргументами — передать параметры скрипту

nmap --script http-brute --script-args userdb=users.txt,passdb=passwords.txt 10.0.0.1

📋 Категории скриптов

Каждый скрипт принадлежит одной или нескольким категориям. Это позволяет запускать группы скриптов одной командой.

auth — проверка аутентификации (анонимный доступ, дефолтные пароли)

broadcast — обнаружение хостов через широковещательные запросы

brute — брутфорс паролей к сервисам (FTP, SSH, HTTP, SMB)

default — запускаются при -sC. Безопасные, полезные, не агрессивные

discovery — сбор информации о сервисах и сети

dos — проверка на уязвимость к отказу в обслуживании (осторожно!)

exploit — попытка эксплуатации уязвимости (осторожно!)

external — отправляют данные на внешние сервисы (whois, virustotal)

fuzzer — отправка случайных данных для поиска багов

intrusive — агрессивные скрипты, могут нарушить работу цели

malware — обнаружение вредоносного ПО на цели

safe — безопасные, не влияют на работу цели

version — расширенное определение версий сервисов

vuln — проверка на известные уязвимости (CVE)


🔑 Связь с флагом -sC

Флаг -sC — это то же самое что --script=default. Запускает все скрипты категории default:

nmap -sC 10.0.0.1
# идентично:
nmap --script=default 10.0.0.1

А флаг -A (aggressive) включает -sC + -sV + -O + traceroute:

nmap -A 10.0.0.1
# идентично:
nmap -sC -sV -O --traceroute 10.0.0.1

⭐ Самые полезные скрипты

Разведка веб-серверов

nmap --script http-enum -p 80,443 10.0.0.1

http-enum — перебирает популярные директории и файлы: /admin, /login, /backup, /phpmyadmin, robots.txt, .git. Находит то, что забыли закрыть.

nmap --script http-headers -p 80 10.0.0.1

http-headers — показывает заголовки ответа. Видно серверную ОС, фреймворк, версии.

nmap --script http-methods -p 80 10.0.0.1

http-methods — какие HTTP-методы разрешены (PUT, DELETE — потенциально опасные).

nmap --script http-title -p 80 10.0.0.1

http-title — заголовок страницы. Быстро понять что на порту — дефолтная страница, панель управления или приложение.

nmap --script http-robots.txt -p 80 10.0.0.1

http-robots.txt — содержимое robots.txt. Часто выдаёт скрытые директории которые админ хотел спрятать от поисковиков.

nmap --script http-sql-injection -p 80 10.0.0.1

http-sql-injection — базовая проверка на SQL-инъекции в параметрах URL.

Windows / SMB

nmap --script smb-enum-shares -p 445 10.0.0.1

smb-enum-shares — список расшаренных папок на Windows. Часто находятся папки с открытым доступом.

nmap --script smb-os-discovery -p 445 10.0.0.1

smb-os-discovery — версия Windows, имя компьютера, домен, время.

nmap --script smb-enum-users -p 445 10.0.0.1

smb-enum-users — список пользователей Windows.

nmap --script smb-vuln-ms17-010 -p 445 10.0.0.1

smb-vuln-ms17-010 — проверка на EternalBlue (WannaCry). Одна из самых известных уязвимостей.

FTP

nmap --script ftp-anon -p 21 10.0.0.1

ftp-anon — проверяет можно ли зайти анонимно (без пароля). Удивительно часто находит открытые FTP.

nmap --script ftp-vsftpd-backdoor -p 21 10.0.0.1

ftp-vsftpd-backdoor — проверка на известный бэкдор в vsftpd 2.3.4.

SSH

nmap --script ssh-auth-methods -p 22 10.0.0.1

ssh-auth-methods — какие методы аутентификации разрешены (пароль, ключ, none).

nmap --script ssh2-enum-algos -p 22 10.0.0.1

ssh2-enum-algos — список алгоритмов шифрования. Показывает устаревшие/слабые.

DNS

nmap --script dns-brute example.com

dns-brute — брутфорс поддоменов: mail.example.com, admin.example.com, dev.example.com...

nmap --script dns-zone-transfer -p 53 ns1.example.com

dns-zone-transfer — попытка скачать всю DNS-зону. Если сервер неправильно настроен — отдаст все записи.

Брутфорс паролей

nmap --script http-brute -p 80 10.0.0.1

http-brute — брутфорс HTTP-авторизации.

nmap --script ftp-brute -p 21 10.0.0.1

ftp-brute — брутфорс FTP.

nmap --script ssh-brute -p 22 10.0.0.1

ssh-brute — брутфорс SSH. Медленный но работает.

Передать свои словари:

nmap --script ssh-brute --script-args userdb=users.txt,passdb=pass.txt -p 22 10.0.0.1

Поиск уязвимостей

nmap --script vuln 10.0.0.1

Запускает все скрипты категории vuln. Проверяет десятки CVE за раз. Шумно, но эффективно для быстрой оценки.

nmap --script vulners -sV 10.0.0.1

vulners — определяет версии сервисов и ищет CVE в базе vulners.com. Нужен -sV для определения версий.

SSL/TLS

nmap --script ssl-cert -p 443 10.0.0.1

ssl-cert — информация о сертификате: кому выдан, срок, издатель.

nmap --script ssl-enum-ciphers -p 443 10.0.0.1

ssl-enum-ciphers — список поддерживаемых шифров. Показывает слабые (DES, RC4, NULL).

Базы данных

nmap --script mysql-info -p 3306 10.0.0.1

mysql-info — версия MySQL, статус, возможности.

nmap --script mysql-empty-password -p 3306 10.0.0.1

mysql-empty-password — проверка на пустой пароль root.

nmap --script ms-sql-info -p 1433 10.0.0.1

ms-sql-info — информация о Microsoft SQL Server.


🧠 Готовые комбо со скриптами

Полная разведка веб-сервера

nmap -sV --script "http-*" -p 80,443,8080,8443 10.0.0.1

Аудит Windows-машины

nmap -sV --script "smb-*" -p 139,445 10.0.0.1

Поиск всех уязвимостей

nmap -sV --script vuln -p- -T4 10.0.0.1

Тихая разведка (только безопасные скрипты)

nmap -sV --script safe -T2 10.0.0.1

Быстрая проверка на дефолтные пароли

nmap --script auth -p 21,22,80,445,3306 10.0.0.1

CTF-комбо (всё и сразу)

nmap -sV -sC --script vuln,discovery -p- -T4 -oA ctf-scan 10.0.0.1

⚙️ Аргументы скриптов (--script-args)

Многие скрипты принимают параметры. Передаются через --script-args:

# Свои словари для брутфорса
nmap --script ssh-brute --script-args userdb=users.txt,passdb=passwords.txt -p 22 10.0.0.1
 
# Указать путь для http-enum
nmap --script http-enum --script-args http-enum.basepath=/api/ -p 80 10.0.0.1
 
# Увеличить потоки брутфорса
nmap --script http-brute --script-args brute.threads=10 -p 80 10.0.0.1
 
# User-Agent для HTTP-скриптов
nmap --script http-enum --script-args http.useragent="Mozilla/5.0" -p 80 10.0.0.1

Посмотреть какие аргументы принимает скрипт:

nmap --script-help http-enum

🔄 Обновление скриптов

База скриптов обновляется вместе с Nmap. Но можно обновить отдельно:

nmap --script-updatedb

Это пересканирует папку /usr/share/nmap/scripts/ и обновит индекс script.db. Полезно если добавил свои скрипты в папку.


✍️ Свои скрипты

Скрипты пишутся на Lua. Простейший пример — сохрани как my-banner.nse:

description = [[Грабит баннер сервиса]]
categories = {"discovery", "safe"}
 
portrule = function(host, port)
  return port.state == "open"
end
 
action = function(host, port)
  local socket = nmap.new_socket()
  socket:connect(host, port)
  local status, data = socket:receive_lines(1)
  socket:close()
  if status then
    return data
  end
end

Запуск:

nmap --script ./my-banner.nse -p 21,22,80 10.0.0.1

Или скопируй в общую папку:

cp my-banner.nse /usr/share/nmap/scripts/
nmap --script-updatedb
nmap --script my-banner 10.0.0.1

⚠️ Важные моменты

safe vs intrusive — скрипты категории safe не влияют на цель. Скрипты intrusive, dos, exploit могут нарушить работу сервиса. В реальном пентесте — всегда согласовывай с заказчиком.

Скрипты шумят — IDS легко детектирует запуск NSE-скриптов. Для тихой разведки лучше ручные запросы.

Скорость — некоторые скрипты (особенно brute) работают долго. Используй --script-timeout 30s чтобы ограничить время на скрипт.

nmap --script vuln --script-timeout 30s 10.0.0.1

Комбинируй с -sV — многие скрипты (особенно vuln) работают лучше когда знают версию сервиса. Всегда добавляй -sV:

nmap -sV --script vuln 10.0.0.1
Содержание
📌 Что такое NSE 📂 Где хранятся скрипты 🚀 Как запускать По имени — конкретный скрипт По категории — все скрипты этой группы Несколько скриптов через запятую По маске — все скрипты подходящие под паттерн Комбинация категорий Свой скрипт — по полному пути С аргументами — передать параметры скрипту 📋 Категории скриптов 🔑 Связь с флагом -sC ⭐ Самые полезные скрипты Разведка веб-серверов Windows / SMB FTP SSH DNS Брутфорс паролей Поиск уязвимостей SSL/TLS Базы данных 🧠 Готовые комбо со скриптами Полная разведка веб-сервера Аудит Windows-машины Поиск всех уязвимостей Тихая разведка (только безопасные скрипты) Быстрая проверка на дефолтные пароли CTF-комбо (всё и сразу) ⚙️ Аргументы скриптов (--script-args) 🔄 Обновление скриптов ✍️ Свои скрипты ⚠️ Важные моменты