Как использовать Nmap для сканирования уязвимостей
Мощный инструмент с открытым исходным кодом Nmap сканирует порты сетевых устройств и проверяет домены веб-сайтов на наличие известных уязвимостей. Поскольку Nmap могут использовать как внутренние службы безопасности, так и злые хакеры, внутренним службам безопасности следует сначала провести сканирование.
Начало работы с Nmap
Nmap предоставляет бесплатные возможности аудита ИТ-инфраструктуры с открытым исходным кодом, такие как сканирование портов, обнаружение хостов или идентификация устройств в сети. Как пен-тестеры, так и исполнители угроз используют Nmap для сбора информации о своей цели, и Nmap стал признаным CISA важным бесплатным инструментом для обеспечения сетевой безопасности.
Установка Nmap
Nmap изначально был утилитой для Linux, но сейчас он доступен для всех основных операционных систем, включая Windows и macOS. Nmap поставляется предустановленным на нескольких версиях Linux, включая Kali Linux. Пользователи других Linux-систем могут воспользоваться командой apt-get install nmap
для ее установки.
Пользователи всех других операционных систем могут скачать Nmap, а также ZeNmap графический интерфейс пользователя (GUI) для Nmap. Те, кто предпочитает использовать github, могут клонировать официальный git-репозиторий с помощью следующей команды:
git clone https://github.com/Nmap/Nmap.git
После установки Nmap пользователи могут использовать командную строку или ZeNmap для выполнения простых команд в графическом интерфейсе.
Встроенные сценарии Nmap
Выполнение базовых функций может быть утомительным. Пользователи расширяют возможности Nmap, запуская встроенные сценарии Nmap. Эти скрипты следует периодически обновлять, выполняя следующую команду:
sudo Nmap --script-updatedb
Использование пользовательских сценариев Nmap
Опытные пользователи могут предпочесть объединение более сложных команд с помощью языка Python и пакета Python-Nmap. Продвинутые пользователи могут также использовать Nmap Scripting Engine для обнаружения сети, выявления уязвимостей (например, бэкдоров) и даже специфических эксплойтов с помощью языка программирования Lua. Эти скрипты представляют собой файлы .nse и обычно содержат комментарии для конечных пользователей.
Правомерность сканирования Nmap
Возможности сканирования уязвимостей в Nmap основаны на скриптах для обнаружения, относящихся к категории «vuln» или на пользовательских скриптах. Пользователи могут запускать встроенные скрипты по отдельности или все вместе с помощью команды «vuln». Кроме того, пользователи могут загружать пользовательские скрипты, такие как Vulscan или Vulners.
Как и при любом тестировании на проникновение или проверке уязвимостей, пользователи должны помнить, что такое инвазивное сканирование должно выполняться только с разрешения. Даже сканирование системы без разрешения может привести к попыткам наложения штрафов или тюремного заключения в зависимости от законодательства.
Специфическое сканирование уязвимостей Nmap
Сценарии Nmap содержат более 100 специфических сканирований уязвимостей, которые могут быть выполнены как для доменов, так и для конкретных IP-адресов хостов. Исчерпывающий список сканируемых уязвимостей можно найти на сайте Nmap.
- Прикладное сканирование: Запустите Nmap на целевом домене (например, itshaman.onmypc.net), чтобы проверить веб-сайты на наличие таких уязвимостей, как:
- http-csrf: Обнаружение уязвимостей межсайтовой подделки запросов (CSRF) осуществляется путем ввода команды:
Nmap -sV -script http-csrf <целевой домен>
- http-sherlock: Проверить возможность эксплуатации уязвимости «shellshock» в веб-приложениях можно, введя команду:
Nmap -sV -script http-sherlock <целевой домен>
- http-csrf: Обнаружение уязвимостей межсайтовой подделки запросов (CSRF) осуществляется путем ввода команды:
- Сканирование хостов: Запустите Nmap по конкретному IP-адресу (например, 166.96.06.4) для проверки уязвимостей хоста, таких как:
- dns-update: Попытайтесь выполнить динамическое обновление службы доменных имен (DNS) без аутентификации, введя команду:
Nmap -sU -p 53 -script=dns-update -script-args=dns-update.hostname=foo.example.com,dns-update.ip=192.0.2.1 <целевой IP-адрес>
- smb-vuln-cve-2017-7494: Проверьте, подвержен ли IP-адрес уязвимости произвольной загрузки общих библиотек, используя такой скрипт, как:
Nmap -script smb-vuln-cve-2017-7494 -p 445 <целевой IP-адрес>
- dns-update: Попытайтесь выполнить динамическое обновление службы доменных имен (DNS) без аутентификации, введя команду:
Сценарии Nmap, поддерживаемые правительством, иногда выпускаются или рекламируются на официальных сайтах, чтобы помочь организациям устранить конкретные уязвимости. Например, правительство Великобритании поддерживает репозиторий GitHub с открытым исходным кодом для помощи организациям в сканировании сетей на наличие уязвимости Exim MTA в рамках проекта Сканировать легко Национального центра кибербезопасности (NCSC) и его отраслевого партнерства i100.
Репозиторий предоставляет пользователям, таким как системные администраторы, коллекцию официально продвигаемых скриптов Nmap для обнаружения уязвимостей системы. Первый скрипт UK посвящен уязвимости удаленного выполнения кода агента передачи сообщений (MTA) Exim CVE-2020-28017 through CVE-2020-28026, также известной как 21Nails.
Как использовать Vuln
Nmap может просканировать целевой домен или IP-адрес на наличие всех уязвимостей в библиотеке сценариев по умолчанию для категории «vuln» с помощью команды Vuln с соответствующим названием:
sudo Nmap --script vuln <target domain or IP Address> -v
Обратите внимание, что для выполнения команды в Linux может потребоваться sudo
для запуска команды от имени суперпользователя или эквивалента администратора в Linux. В большинстве случаев для запуска более инвазивных и зондирующих команд Nmap требуются повышенные привилегии. Флаг -v
, или verbosity, предоставит обширную информацию о выполняемых тестах и их результатах.
Выполнение этих команд может быть опасным из-за инвазивных и разрушительных аспектов специфического сканирования уязвимостей. Вместо того чтобы просто получить информацию, некоторые виды сканирования пытаются проверить уязвимость, пытаясь ее использовать. В некоторых случаях успешная эксплуатация приводит к изменениям в работе службы или даже к отказу службы, веб-сайта или операционной системы.
Для одновременного запуска нескольких скриптов с похожими именами можно использовать подмножество сканирований уязвимостей, используя подстановочные знаки или звездочки (). Например, добавление подстановочного знака после команды http (http) приведет к запуску всех скриптов, начинающихся с «http», для целевого домена.
При использовании любого из видов массового сканирования результаты могут стать чрезмерно большими, и некоторые пользователи захотят исключить уязвимости с низким CVSS-баллом. Чтобы показать только уязвимости в определенном диапазоне, добавьте в команду следующий флаг, где «x.x» – это CVSS-балл (например, 6.5).
--script-args=mincvss=x.x
Полная команда для исключения уязвимостей ниже 6.5 будет выглядеть так:
Nmap --script vuln --script-args mincvss=6.5 <target>
Результаты сканирования можно экспортировать в различные форматы файлов, добавив в команду флаги, за которыми следует имя файла. Такой экспорт облегчит обмен информацией или сделает уязвимости доступными для других программ.
Два распространенных примера полной команды:
- XML File:
Nmap -script vuln -oX file.xml <target>
- Браузерный XML-файл:
Nmap -script vuln -webxml -oX file.xml <target>
Конечно, некоторым пользователям может быть недостаточно базового набора сканирования уязвимостей, поскольку он проверяет лишь ограниченный, хотя и важный, набор уязвимостей. Опытные пользователи могут загрузить пользовательские скрипты, такие как Vulscan или Vulners, чтобы получить доступ к более обширной базе данных уязвимостей.
Как использовать Vulscan
Для использования NSE-скрипта Vulscan пользователь должен сначала клонировать программу из репозитория github с помощью команды git:
sudo git clone https://github.com/scipag/vulscan
Пользователю может потребоваться сделать «мягкую ссылку» на каталог NSE-скриптов, выполнив следующую команду:
sudo ln -s pwd /scipag_vulscan /usr/share/Nmap/scripts/vulscan
В данном случае каталог /usr/share/Nmap/scripts/vulscan является предполагаемым каталогом для Nmap-скриптов на машине пользователя, но этот каталог может быть изменен по мере необходимости. После того как каталог известен Nmap, Vulscan можно вызвать с помощью флага -script для выполнения дополнительных проверок на уязвимости, используя следующий синтаксис:
sudo Nmap -sV --script=vulscan/vulscan.nse <target IP address or host name>
Vulscan может быть запущен для обнаружения сетевых уязвимостей по IP-адресу в сети или программных уязвимостей по имени хоста (например, example.com). Vulscan выполнит неинвазивные тесты на все применимые уязвимости для цели. В результатах будет отображен порт, а затем ограниченная информация о конкретных обнаруженных CVE.
Как использовать Vulners
Vulners обычно включается в стандартные скрипты Nmap NSE, но пользователь также может клонировать скрипт NSE для Vulners из его репозитория github с помощью команды git:
sudo git clone https://github.com/vulnersCom/Nmap-vulners.git /usr/share/Nmap/scripts/vulners
Предполагается, что каталог файлов /usr/share/Nmap/scripts/vulscan является каталогом для скриптов Nmap на машине пользователя, но этот каталог может быть изменен по мере необходимости. После клонирования Vulners можно вызвать с помощью флага -script
, используя следующий синтаксис:
sudo Nmap -sV --script Nmap-vulners/vulners.nse <target host or IP address>
Пользователи могут указать конкретные порты на IP-адресе, добавив в конце командной строки -p<#>
(например, -p80 для указания порта 80). В результатах будут показаны обнаруженные CVE и ссылка на сайт Vulners для получения дополнительной информации.
Vuln или Vulners или Vulscan
Vuln | Vulners | Vulscan | |
---|---|---|---|
Включает скрипты Nmap | Да | Да | Нет |
Отправляет данные CPE за пределы организации | Нет | Да | Нет |
Требует загрузки базы данных уязвимостей | Нет, но ограниченное количество CVE | Нет | Да |
Доверие | Высокое | Зависит | Зависит |
Потенциально Disruptive | Yes | No | No |
Когда использовать | Тщательное точное сканирование ключевых уязвимостей | Внутреннее сканирование, нет опасений по поводу рассылки данных CPE | Более глубокое сканирование и желание не выпускать данные CPE |
Vulners имеет возможность загрузки и использования локальной базы данных. Vuln и Vulners включены в базовую базу скриптов NSE и будут обновляться при обновлении всех скриптов для Nmap. Vulscan не включен в базовый набор скриптов и должен загружаться и обновляться отдельно.
Vulners отправляет информацию об общих перечислениях платформ (CPE), полученную в результате сканирования портов, на сайт vulners.com, используя API сайта для активной загрузки последней информации об общих уязвимостях и уязвимых местах (CVE) из базы данных сайта. Для доступа к внешним базам данных уязвимостей Vulners также необходим доступ в Интернет.
Такой обмен информацией об уязвимостях может не подойти организациям, глубоко озабоченным сохранением секретности своей среды. В Vulscan есть возможность использовать локальную базу данных, но это в целом лишает преимущества использования полностью обновляемой базы данных Vulscan.
Vuln и Vulscan не отправляют информацию о CPE за пределы сканируемой организации и используют локально хранимые базы данных уязвимостей.
Преимущество отправки информации о CPE заключается в том, что Vulners размещает полностью обновленный набор CVE. Vuln обнаруживает только 150 лучших уязвимостей для систем, а Vulscan использует автономную копию баз данных уязвимостей.
Преимущество Vuln заключается в том, что он проверяет наличие некоторых уязвимостей, пытаясь проверить их эксплуатацию и нарушить или повредить данный сервис. Однако активное зондирование повышает уверенность и снижает вероятность ложного срабатывания.
Vulners и Vulscan избегают риска нарушения работы, поскольку не пытаются проверить или эксплуатировать уязвимости. Доверие к обоим этим инструментам зависит от точности и четкости возможностей обнаружения конкретной версии Nmap. Кроме того, оба этих инструмента могут быть сбиты с толку нестандартными, пользовательскими или исправленными сборками определенных служб, что может привести к увеличению числа ложных срабатываний.
Из этих трех инструментов скрипты категории Vuln могут сразу же произвести высокоточное сканирование для ограниченного набора важных уязвимостей. Однако, хотя количество уязвимостей невелико, глубокое исследование уязвимостей может занять в 3-4 раза больше времени, чем у Vulners или Vulscan.
Хотя оба загружаемых вручную сканера уязвимостей имеют гораздо более обширный и надежный выбор CVE для обнаружения, Vulners обычно является наиболее обновляемым сканером, поскольку ИТ-команды могут забыть вручную обновить базы данных Vulscan. Однако для более скрытных организаций, которым необходимо избегать раскрытия информации о CPE, использование локальной базы данных Vulscan может быть лучшим выбором среди вариантов Nmap.
Как злоумышленники используют Nmap?
Атакующие используют Nmap для быстрого сканирования больших сетей, используя необработанные IP-пакеты для определения доступных узлов и служб в сети и определения их уязвимостей. Хакеры и пен-тестеры обычно добавляют специальные опции, чтобы замести следы.
Для скрытия IP-адреса атакующего и отправки на него пакетов с подделкой источника в дополнение к пакетам сканирующей машины используется флаг -D
(Nmap -p 123 -D decoyIP targetIP
). Дополнительные пакеты затрудняют обнаружение сканирования портов защитниками.
Атакующие также могут выполнять зомби-сканирование, известное также как сканирование вхолостую. В ходе этой атаки по побочным каналам осуществляется отправка поддельных SYN-пакетов на цель с использованием IP-адреса «зомбированной» конечной точки в сети. Таким образом, система обнаружения вторжений (IDS) пытается обмануть злоумышленника, приняв за него невинный компьютер-зомби.
Обнаруживают ли хост-системы сканирование Nmap?
SIEM-инструменты, межсетевые экраны и другие средства защиты могут получать предупреждения от систем, а сканируемая система будет регистрировать успешные TCP-запросы, полученные в результате многочисленных сканирований портов Nmap. Более сложные средства IDS/IDP могут также обнаружить неправильно сформированные TCP-запросы, такие как скрытые запросы Nmap, которые не завершают TCP-соединение. Деструктивные сканирования, приводящие к сбоям в работе системы или службы, обязательно будут обнаружены как системами, так и пострадавшими пользователями.
Преимущества и недостатки использования Nmap
Nmap предоставляет мощные возможности по поиску уязвимостей и должен рассматриваться для использования в большинстве организаций. Однако существует множество причин, по которым Nmap не используется повсеместно.
Плюсы: Причины использования Nmap
- Открытый исходный код и бесплатность, что очень удобно для хакеров, студентов и всех организаций
- Быстрое сканирование обеспечивает быстрый просмотр потенциальных уязвимостей
- Легкое сканирование TCP не потребляет огромную пропускную способность сети и может избежать некоторых средств сетевой безопасности
- Предварительный просмотр хакерами для организаций, проверяющих свои внутренние системы
- Скриптовые сканирования позволяют организации создавать повторяющиеся сканирования уязвимостей, которые могут использовать нетехнические пользователи, а хакерам – внедрять команды и сканирования Nmap в вредоносные программы
Минусы: причины не использовать Nmap
- Не так удобен в использовании, как коммерческие инструменты с более развитым графическим интерфейсом
- Легко допустить ошибки при вводе командной строки
- Не хватает программистов в ИТ-отделе организации для создания пользовательских сценариев или понимания сценариев Nmap
- Не такая официальная поддержка, как у коммерческих инструментов
- Ограниченное сканирование уязвимостей с помощью базовой команды vuln
Альтернативы сканера уязвимостей Nmap
Nmap остается популярным инструментом среди многих, но это не единственный доступный сканер уязвимостей. Варианты сканеров уязвимостей с открытым исходным кодом для приложений включают OSV-Scanner или OWASP Zed Attack Proxy (ZAP), а для инфраструктуры – CloudSploit или OpenVAS. Подробнее можно почитать статью – 10 лучших сканеров уязвимостей с открытым исходным кодом на 2023 год
Существует также множество коммерческих сканеров уязвимостей. К лучшим сканерам уязвимостей для приложений или инфраструктуры относятся Invicti, Tenable.io, ManageEngine’s Vulnerability Manager Plus и другие.
Вывод
Nmap – это недорогой вариант для обнаружения уязвимостей, перепроверки результатов работы коммерческих сканеров уязвимостей или эффективного просмотра хакером возможностей инфраструктуры организации. Всем, даже тем организациям, которые предпочитают использовать коммерческие сканеры уязвимостей, следует рассмотреть возможность использования Nmap в качестве одного из инструментов сканирования уязвимостей в своем арсенале.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Вдохновлен www.esecurityplanet.com
Комментарии (0)