Обнаружение уязвимостей с помощью Nmap Scripts
BlueQuality
Nmap, возможно, является наиболее широко используемым сканером безопасности в своем роде. Тем не менее, большинство лучших функций Nmap недооценивается хакерами и пентестерами, одна из которых улучшит способности быстро выявлять эксплойты и уязвимости при сканировании серверов.
Одной из малоизвестных частей Nmap является NSE, Nmap Scripting Engine, одна из самых мощных и гибких функций Nmap. Это позволяет пользователям писать (и обмениваться) простыми скриптами сценариями для автоматизации широкого спектра сетевых задач. Nmap имеет обширную коллекцию встроенных скриптов NSE, которые пользователи могут легко использовать, но пользователи также могут создавать собственные сценарии для удовлетворения своих индивидуальных потребностей с помощью NSE.
В этой статье я продемонстрирую два похожих между собой готовых сценария NSE: nmap-vulners и vulscan. Оба скрипта были разработаны для улучшения определения версии служб путем создания соответствующей информации CVE для конкретной службы, такой как SSH, RDP, SMB и т.д.
CVE (Common Vulnerabilities and Exposures) - это метод, используемый исследователями в области безопасности и использующий базы данных для каталогизации и ссылки на отдельные уязвимости.
Например, Exploit Database - это популярная база данных публично раскрытых эксплойтов. Exploit-DB использует CVE для каталогизации отдельных эксплойтов и уязвимостей, связанных с определенной версией сервиса, например, «SSH v7.2». Ниже приведен снимок экрана возможного эксплойта на веб-сайте Exploit-DB ... обратите внимание на номер CVE, присвоенный этой конкретной уязвимости SSH.

И nmap-vulners, и vulscan используют записи CVE для улучшения определения версии служб. Nmap идентифицирует информацию о версии отсканированного сервиса. Скрипты NSE будут использовать эту информацию и выдавать известные CVE, которые можно использовать для эксплуатации службы, что значительно упрощает поиск уязвимостей.
Ниже приведен пример определения версии служб без использования сценариев NSE. Nmap обнаружил службу SSH на порту 22, где используемая версия «OpenSSH 7.3p1».

И вот пример того же сервера, но при использовании скриптов NSE. Теперь мы видим гораздо более информативный выход.

Сценарий nmap-vulners сообщил о некоторых CVE раскрытых за последние несколько лет. Уязвимости выявленые этим скриптом организованы по степени серьёзности, в данном случае, во всех найденых CVE это число "5.0".
Могут быть уязвимости где это число значительно ниже или наоборот, выше. Чем выше степень серьёзности, тем следовательно, больше внимания стоит уделить к CVE. Скрипт vulscan (отображается после всех CVE) также сообщил о более десятке интересных уязвимостей, связанных с OpenSSH 7.3p1.
Оба этих сценария NSE отлично отображают полезную информацию, связанную с уязвимыми сервисами. Nmap-vulners запрашивает базу данных эксплойтов Vulners каждый раз, когда мы используем скрипт NSE. Vulscan, с другой стороны, запрашивает локальную базу данных на нашем устройстве, которая предварительно настраивается при первой загрузке vulscan.
Установка nmap-vulners
Чтобы установить скрипт nmap-vulners, сначала используем cd, чтобы перейти в каталог скриптов Nmap:
cd /data/data/com.termux/files/usr/share/nmap/scripts/
Затем клонируйте репозиторий nmap-vulners, введя приведённую команду в терминал:
git clone https://github.com/vulnersCom/nmap-vulners.git
Вот и всё что было нужно для установки nmap-vulners. После его установки не требуется никаких настроек.
Установка Vulscan
Чтобы установить vulscan, нам также необходимо клонировать репозиторий в каталог скриптов Nmap.
git clone https://github.com/scipag/vulscan.git
Как упоминалось ранее, vulscan использует предварительно сконфигурированные базы данных, которые хранятся локально на нашем устройстве. Мы можем просмотреть эти базы данных в корне каталога vulscan. Запустите приведенную ниже команду ls для просмотра списка доступных баз данных.

Vulscan поддерживает множество превосходных баз данных эксплойтов:
cve.csv
exploitdb.csv
openvas.csv
osvdb.csv
scipvuldb.csv
securityfocus.csv
securitytracker.csv
xforce.csv
Чтобы убедиться, что базы данных полностью обновлены, мы можем использовать скрипт updateFiles.sh, находящийся в каталоге vulscan/utilities/updater/. Перейдите в каталог обновлений, введя приведенную ниже команду в терминал.
cd vulscan/utilities/updater/
Затем убедитесь, что у файла есть необходимые разрешения для запуска на вашем устройстве с помощью приведенной ниже команды chmod.
chmod +x updateFiles.sh
Затем
./updateFiles.sh
После этого мы готовы начать использовать сценарии NSE.
Сканирование с Nmap-Vulners
Использовать скрипты NSE просто. Все, что нам нужно сделать, это добавить аргумент --script в нашу команду Nmap и сообщить Nmap, какой скрипт NSE использовать. Чтобы использовать скрипт nmap-vulners, используем команду ниже.
nmap --script nmap-vulners -sV -p<port> <ip or url>
-sV абсолютно необходим. С -sV мы говорим Nmap проверять целевой адрес для получения информации о версии. Если Nmap не выдает информацию о версии, у nmap-vulners не будет данных для запроса к базе данных Vulners. Всегда используйте -sV при использовании этих сценариев NSE.

Сканирование используя Vulners
Мы можем использовать сценарий NSE vulscan точно так же, как nmap-vulners:
nmap --script vulscan -sV -p<port> <target>
По умолчанию vulscan будет запрашивать все ранее упомянутые базы данных одновременно! Как мы видим из приведенного ниже поля кода, это огромное количество информации, которую нужно переварить.

Я рекомендую запрашивать только одну базу данных за раз. Мы можем добиться этого, добавив аргумент vulscandb в нашу команду Nmap и указав базу данных, как показано в следующем перимере.
nmap --script vulscan --script-args vulscandb=database_name -sV -p<port> <target>
Вместо "database_name" пишем интересующую вас базу.

То есть, если нужно получить информацию с exploitdb, то пишем
nmap --script vulscan --script-args vulscandb=exploitdb.csv -sV -p<port> <target>
Комбинация команд
Сценарии NSE значительно улучшают универсальность, пределы и изобретательность Nmap как сканера безопасности. Чтобы получить максимальную отдачу от сканирования версий, мы можем использовать как nmap-vulners, так и vulscan в одной команде. Для этого введите следующую команду в свой терминал.
nmap --script nmap-vulners,vulscan --script-args vulscandb=scipvuldb.csv -sV -p<port> <target>
Если у вас возникли вопросы или вы столкнулись с проблемой касательно этой статьи - обращайтесь к автору