От NSE До CVE. Вооружаем Nmap Для Поиска Уязвимостей
У nmap есть мощный инструмент, который незаслуженно обойден вниманием. И имя ему - NSE.
Но сейчас мы не будем погружаться в глубины Lua, а рассмотрим те скрипты, которые нам уже доступны.
Немного о самих скриптах
На момент написания доступно 608 скриптов, но есть и скрипты написанные сообществом.
Всего есть 14 категорий скриптов: auth
, broadcast
, brute
, default
, discovery
, dos
, exploit
, external
, fuzzer
, intrusive
, malware
, safe
, version
, vuln
.
Но можно воспринимать их как своеобразные тэги, так как один и тот же скрипт может быть в нескольких категориях, например:
|
|
Стандартная директория размещения скриптов:/usr/share/nmap/scripts/
Обновление базы скриптов:
|
|
Примеры использования
При сканировании c опцией -sV
(или её эквивалентом --script=default
) мы можем использовать скрипты из категории default
:
|
|
Так же можно использовать несколько скриптов совместно:
|
|
Сканирование с использованием скриптов
vuln
Сканирование с использованием скриптов из из категории vuln
:
|
|
Есть дополнительная опция --script-args mincvss
, позволяющая указать минимальный уровень CVSS:
|
|
Не совсем понятно, почему некоторые выделяют это как отдельный скрипт, хотя это именно использование категории скриптов.
vulscan
vulscan - скрипт представляющий больше исторический интерес, чем практический. Сам скрипт работоспособен, но фиды уязвимостей не обновлялись очень давно. Может быть актуально, если вы работаете с инфраструктурой пятнадцатилетней давности.
Возможно, есть желающие разобраться с обновлением фидов, но насколько это будет целесообразно - вопрос открытый.
Пример использования:
|
|
Из особенностей отличался возможностью сканирования по определенной базе уявзимостей, например exploitdb:
|
|
Судя по сайту автора, он немного выгорел, и оставил все наработки и ресурсы как исторический памятник.
nmap-vulners
nmap-vulners - скрипт от команды Vulners, использующий Vulners API, и уже включен в стандартный набор скриптов nmap.
У vulners не один скрипт, а целых три:
- vulners.nse - основной скрипт, работающий на детекте версии.
- http-vulners-regex - скрипт сканирует HTTP-ответы и идентифицирует CPE для программного обеспечения и может повысить эффективность основного скрипта.
- vulners_enterprise.nse - По сути, это vulners.nse с одним исключением: для его работы требуется API_KEY.
Пример использования:
|
|
Есть дополнительная опция --script-args mincvss
, позволяющая указать минимальный уровень CVSS:
|
|
CVEScannerV2
CVEScannerV2 - использует локальную базу о уязвимостях на основе данных NVD и требует API-ключ, для первичной загрузки и обновления.
Работает с детектом версий от nmap, и с детектом HTTP.
Пример использования:
|
|
Расширяем возможности
При использовании скриптом для поиска уязвимостей мы можем обогатить сгенерированные отчёты о сканировании. Достаточно сохранять отчёт в xml
, и с использованием nmap-bootstrap-xsl или nmap-formater конвертировать в удобный для чтения и хранения html-отчёт.
Defect Dojo понимает xml-формат отчётов, так что мы можем использовать nmap (скрипт от Vulners в таком случае работает отлично) как полноценный сканер уязвимости с фронтендом в виде Defect Dojo.
Outro
С помощью nmap и NSE можно собрать небольшой сканер уязвимостей, останется выбрать нужные скрипты или вовсе ограничиться CVEScannerV2 и скриптами от vulners.
Разумеется, это не покрывает все задачи, но при отсутствии ресурсов будет подспорьем в процессе работы.
Reference
Nmap NSE Reference
nmap.org: NSE
nmap.org: NSE Usage and Examples
nmap.org: NSE Categories
Nmap NSE scripts
Github.com NSE scripts from ivre
Github.com: Nmap-NSE-scripts-collection
Github.com: nmap-scripts