Внимание! На этой странице вы найдете материал урока из архивного курса по пентесту (Тестирование на проникновение во внутреннюю сеть под управлением 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.
