NSE (Nmap Scripting Engine) включает дополнительные функции в процессе сканирования Nmap, разрешая сценарии для дополнительных задач, таких как грубая сила, обнаружение уязвимостей или эксплуатация.
Механизм сценариев Nmap (NSE) содержит набор сценариев, классифицированных по категориям, и пользователи могут писать свои собственные сценарии с настраиваемыми функциями.
В этом руководстве объясняются основы NSE, включая практические примеры, показывающие, как использовать Nmap Scripting Engine для взлома сайтов WordPress и учетных данных SSH или выполнения нескольких дополнительных проверок безопасности.
NSE (Nmap Scripting Engine) Категории и типы скриптов
Скрипты, включенные в NSE, классифицируются по разным критериям в зависимости от момента выполнения, цели скрипта и методов.
Первая классификация, основанная в основном на моменте исполнения, включает 4 типа скриптов:
- Скрипты Preruleвыполняются перед любой фазой сканирования Nmap, например скрипты, используемые для генерации новых целей.
- Сценарии хоставыполняются в процессе сканирования.
- Служебные скриптывыполняются после сканирования каждого пакета хостов, как и скрипты хостов.
- Скрипты Postruleвыполняются после сканирования; эти сценарии могут использовать уязвимость, обнаруженную в процессе сканирования.
Вторая классификация основана на назначении и безопасности сценария. Категории упорядочивают скрипты в соответствии с этими критериями. Категории:
Auth: скрипты из этой категории полезны для проверки подлинности. В этой категории вы можете найти сценарии для обхода процессов аутентификации, такие как http-method-tamper для обхода защищенных паролем ресурсов путем подделки HTTP-команды. Если массив проверяемых путей не задан, он просканирует веб-сервер и выполнит проверку любого найденного защищенного паролем ресурса.
Категория Auth не включает скрипты грубой силы, хранящиеся в категории Brute. Тем не менее, в разделе Auth вы можете найти функции, аналогичные скрипту http-default-accounts, для проверки доступа с учетными данными по умолчанию в различных веб-приложениях и устройствах.
Широковещательная рассылка: эти скрипты позволяют обнаруживать хосты путем широковещательной передачи в локальную сеть.
Brute: эта категория содержит скрипты для выполнения атак грубой силы, такие как скрипт http-wordpress-brute для атаки на сайты WordPress или rsync-brute для выполнения атак против протокола rsync.
По умолчанию: в эту категорию входят скрипты, отвечающие требованиям, основанным на скорости, полезности, подробности, надежности, навязчивости и конфиденциальности. Скрипты в этой категории должны завершаться быстро и сообщать ценную информацию о цели. Вывод должен быть удобочитаемым и содержать точную информацию. Навязчивые сценарии, которые могут привести к сбою целевой системы или службы, менее подходят для этой категории.
Обнаружение: сценарии в этой категории пытаются узнать больше о цели, запрашивая общедоступные источники, устройства с поддержкой SNMP, каталоги и т. Д. Сценарий http-affiliate-id захватывает идентификаторы партнерской сети, такие как Google AdSense или Analytics, Amazon и т. Д., С веб-страницы и может использоваться для идентификации страниц с одним и тем же владельцем.
DOS: эти сценарии полезны для проверки целей на уязвимости перед атаками DOS; эти сценарии могут привести к сбою уязвимой системы или службы.
Эксплойт: Скрипты этой категории используются для использования уязвимостей в целях.
Внешний: эта категория содержит сценарии, задействующие внешние ресурсы во время процесса сканирования, такие как запросы информации базы данных на целевом объекте. В эту категорию помещаются скрипты, передающие информацию о процессе сканирования сторонним базам данных. IP-геолокации-geoplugin , например, пытается определить физическое местоположение цели, используя http://www.geoplugin.com/.
Fuzzer: эта категория содержит сценарии для массовой отправки случайных полей для обнаружения уязвимостей для использования переполнения буфера, DOS (отказ в обслуживании), межсайтовых сценариев или SQL-инъекций.
Навязчивый: сценарии в этой категории могут привести к сбою цели, используя значительный объем ресурсов, или будут обнаружены как вредоносная активность.
Вредоносное ПО: скрипты вредоносного ПО предназначены для обнаружения возможных вредоносных программ или бэкдоров на цели.
Безопасный: в отличие от навязчивых сценариев, здесь могут быть размещены безопасные сценарии, которые вряд ли приведут к сбою цели, которая не требует значительного количества ресурсов и вряд ли будет обнаружена целью как вредоносная. Сценарии этой категории в основном предназначены для задач обнаружения.
Версия: скрипты версий расширяют возможности версии Nmap; Примером является docker-версия скрипта, используемая для определения версии докера службы.
Vuln: Скрипты Vuln полезны для точного тестирования уязвимостей на целевых объектах.
Скрипты NSE расположены в / usr / share / nmap / scripts, и любой новый скрипт, который вы хотите добавить (например, Vulscan ), должен быть помещен туда.
Как использовать Nmap Scripting Engine (NSE)
NSE включен в Nmap, чтобы начать установку Nmap, если у вас его еще нет, запустив (в дистрибутивах Linux на основе Debian и Debian):
sudo apt install nmap

Примечание. В дистрибутивах Linux на основе RedHat вы можете запускать:
yum install nmap
После установки или если у вас уже установлен Nmap, выполните следующую команду, чтобы обновить базу данных Nmap Scripting Engine:
nmap —script-updatedb
Nmap позволяет запускать сканирование с различным синтаксисом; В следующем примере показано сканирование Nmap с определением версии, вызовом сценария http-WordPress-brute и передачей в качестве аргумента местоположения словарей. Это возможный синтаксис, если вы знаете, какой скрипт хотите запустить.
В первом примере я покажу, как Nmap NSE может взломать веб-сайт WordPress с помощью грубой силы, используя скрипт http-wordpress-brute.nse. В этом примере взломанный веб-сайт — это Noticias Mercedes, владельцем которого я являюсь.
nmap -sV —script http-wordpress-brute —script-args ‘userdb=users.txt,passdb=pass.txt’ noticiasmercedes.com
Где:
Nmap -sV: вызывает nmap и включает определение версии.
—Script http-wordpress-brute: вызывает сценарий http-wordpress-brute для перебора сайтов wordpress.
—Script-args ’userdb = users.txt, passdb = pass.txt’: указывает словари пользователей и паролей, в этом случае я создал файлы users.txt и pass.txt, содержащие фиктивные данные и правильные учетные данные, файлы были расположены в том же каталоге, в котором был запущен Nmap, вы также можете указать путь: —script-args ’userdb = / path / to / dicionaty / users.txt, passdb = / path / to / dicionaty / pass.txt’
Как видно из вывода, пароль был успешно взломан:
В следующем примере предположим, что вы не уверены в том, какой сценарий вы хотите запустить для своей цели, но хотите ограничить сканирование проверками безопасности. Также в этом случае вы можете указать Nmap запускать все сценарии, принадлежащие категориям Safe или Default, либо обеим категориям.
В следующем примере показано, как запустить все сценарии, принадлежащие как к категориям по умолчанию, так и к безопасным, с удобным для пользователя синтаксисом:
nmap —script «default and safe» noticiasmercedes.com
В последнем примере показано, как взломать учетные данные SSH с помощью NSE:
nmap —script ssh-brute.nse localhost
Как и в случае с http-WordPress-brute, в этом скрипте вы также можете указывать словари, минуя аргумент:
—script-args userdb=users.txt,passdb=pass.txt
Где users.txt и pass.txt должны быть заменены вашими словарями (и путем, если необходимо),