Codebra
01 февраля 2026 в 14:31

Урок 21. Поиск сетевых уязвимостей с помощью Nmap

Продолжим изучение инструмента Nmap, познакомимся с его стандартными скриптами (NSE).
📝

Внимание! На этой странице вы найдете материал урока из архивного курса по пентесту (Тестирование на проникновение во внутреннюю сеть под управлением Active Directory). Курс был написан в 2024 году и будет интересен системным администраторам, специалистам по защите данных и другим специалистам.

Полный список уроков доступен по тегу Архивный курс по пентесту Active Directory и на странице первого урока.

Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в образовательных и ознакомительных целях. Все действия происходят на виртуальных машинах и внутри локальной сети автора. Спасибо!

📝 Кратко
  • Nmap предоставляет возможности сканирования и поиска известных уязвимостей с помощью скриптового движка Nmap.
  • Скрипты для движка Nmap пишутся на языке программирования Lua.
  • Опытные пользователи могут интегрировать возможности Nmap в свои скрипты на Python.
  • Скриптовый движок Nmap (NSE) расширяет возможности инструмента, позволяя пользователям писать свои скрипты на Lua для автоматизации задач.
  • Скрипты делятся на различные категории: version, intrusive, safe, malware, vuln, discovery, auth и default.
  • Для использования скриптов применяются флаги -sC или --script, которые являются равнозначными.
  • Скрипты Nmap хранятся в папке /usr/share/nmap/scripts/.
  • В статье рассматриваются NSE скрипты категории vuln, Vulscan.nse и Vulners.nse, и сравниваются их возможности и недостатки.

Раздел поиска сетевых уязвимостей начнем с казалось бы простого сканера Nmap. Инструмент Nmap, помимо сканирования, предоставляет возможность поиска известных уязвимостей с помощью скриптового движка Nmap (Chapter 9. Nmap Scripting Engine). Скрипты для этого движка пишутся на языке программирования Lua. Более опытные пользователи могут интегрировать возможности Nmap в свои скрипты на Python (с помощью модуля python-nmap). Одним словом, инструмент Nmap не такой простой, как мог показаться в уроке про сканирование.

В этом уроке познакомимся с NSE, категорией скриптов Vuln, скриптами Vulscan и Vulners. Так же постараемся сравнить способы поиска сетевых уязвимостей с помощью Nmap.

Знакомимся с NSE Nmap

Скриптовый движок Nmap (NSE) значительно расширяет возможности Nmap. Пользователи могут писать свои скрипты на языке Lua для автоматизации широкого круга задач и делиться ими с другими людьми. Скрипты делятся на следующие категории: version, intrusive, safe, malware, vuln, discovery, auth и default.

Для использования скриптов применяются флаги -sC или --script категории-скриптов|директория|имя_файла|all, которые являются равнозначными. В параметре флага скрипты можно перечислять через запятую, указывать директорию (содержащую нужные скрипты) или категорию.

Чтобы передать аргументы в NSE скрипт, используйте следующий флаг:

--script-args имя1=значение1, имя2={имя3=значение3}, имя4=значение4

Если нужно вывести дополнительно все исходящие и входящие соединения: добавьте флаг --script-trace к основной команде.

Скрипты Nmap хранятся в папке /usr/share/nmap/scripts/:

cd /usr/share/nmap/scripts/
ls

Посмотрим исходный код скрипта для поиска одной из самых популярных и простых уязвимостей (все еще встречается) - EternalBlue.

nano smb-vuln-ms17-010.nse

В комментариях можно найти примеры использования этого скрипта:

nmap -p445 --script smb-vuln-ms17-010 <target>
nmap -p445 --script vuln <target>

Для примера запустим все предустановленные скрипты категории vuln. Проверим службы на первых 1000 TCP портах:

nmap -sV -p1-1000 --script vuln 192.168.56.22

На 80 порте крутится веб-сервер Microsoft IIS, на котором была найдена страница Default.aspx. Возможно, она уязвима к CSRF. Можно это проверить, но на этапе разведки и сканирования не стоит бросаться на первую встретившуюся (возможную) уязвимость. Необходимо продолжать собирать информацию.

Теперь разберемся с другими NSE скриптами.

Скрипт Vulscan.nse

Vulscan.nse - это модуль, который превращает Nmap в сканер уязвимостей.

С опцией -sV мы познакомились ранее. Эта опция позволяет определить версию службы при сканировании портов хоста. Использование скрипта Vulscan.nse совместно с опцией -sV позволяет определить потенциальные уязвимости.

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

Клонируем к себе на Kali Linux:

git clone https://github.com/scipag/vulscan scipag_vulscan

Делаем ссылку в папке со скриптами Nmap на репозиторий:

sudo ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan

Чтобы проверить, перейдите в каталог /usr/share/nmap/scripts/ и найдите ее:

Чтобы использовать Vulscan, достаточно вызвать скрипт vulscan.nse. Сохраним результат в файл:

nmap -sV --script=vulscan/vulscan.nse 192.168.56.22 -oA vul

В таком случае используются все базы данных. Чтобы просканировать по одной базе данных, используйте флаг --script-args. Он позволяет задать входные данные для скрипта:

nmap -sV --script=vulscan/vulscan.nse --script-args vulscandb=cve.csv 192.168.56.22 -oA vul

Скрипт Vulners.nse

В Nmap встроен скрипт Vulners.nse, который работает так же, как и Vulscan.nse, но в отличии от последнего, отправляет запросы на удаленный сервер (vulners.com), чтобы узнать, есть ли известные уязвимости у обнаруженной службы. Это важно понимать при тестировании на проникновение.

sudo nmap -sV --script=vulners.nse 192.168.56.22

Дальше сравним рассмотренные NSE скрипты между собой.

Сравнение Vuln, Vulscan, Vulners

Во-первых, Vuln и Vulscan установлены по умолчанию в Nmap, а скрипт Vulners необходимо скачивать и устанавливать отдельно. Вряд ли это можно считать недостатком последнего.

💡 Примечание

Vuln - категория, а не скрипт.

Во-вторых, стоит понимать что Vulners отправляет данные на свой сервер, а это может быть потенциальной утечкой информации. Вряд ли вы захотите пользоваться инструментом, который может сливать информацию. Он может подойти только в учебный целях.

В-третьих, можно выделить положительную сторону Vulners: не требуется загрузка базы данных уязвимостей. Эта положительная сторона вытекает из предыдущего недостатка.

В-четвёртых, какому скрипту доверять больше всего? Скрипту Vulners достаточно сложно доверять, так как проверка наличия уязвимости осуществляется на стороннем сервере. Для скрипта Vulscan вы можете вручную скачать базы и в теории проверить их.

Выбор за вами, какой скрипт для поиска уязвимостей с помощью Nmap использовать.

Выводы

В этом уроке мы познакомились со скриптовым движком Nmap (NSE), где хранятся эти скрипты и как их запускать. Так же научились применять Nmap как сканер сетевых уязвимостей, используя скрипты Vuln, Vulscan и Vulners.

В следующем уроке научимся искать сетевые уязвимости с помощью инструмента CrackMapExec.

📝

Переходите к следующему уроку курса, а так же не забудьте посмотреть новый материал на Codebra по тегам Пентест и Active Directory.