Привет, Хабр!
Меня зовут Виктор Иевлев, я руководитель отдела информационной безопасности компании «Гарда». Сегодня хочу поговорить о поиске уязвимостей. Стоит начать с того, что процесс управления уязвимостями – это непрерывный цикл, включающий в себя поиск, оценку, мониторинг и устранение уязвимостей в программном обеспечении и инфраструктуре.
Зачастую крупные компании используют для этого сразу несколько коммерческих сканеров. Но что делать небольшим компаниям или стартапам, у которых нет бюджета на дорогостоящие инструменты информационной безопасности? К счастью, на помощь кибербезу приходит Open Source.
В статье я приведу примеры конкретных Open Source инструментов, а также расскажу, для решения каких задач они подходят.
Поиск уязвимостей на хостах
Начнем с решений для сетевого сканирования. Для таких задач подойдет сетевой сканер Nmap. Однако не все знают, что с помощью Nmap Scripting Engine (NSE) можно искать уязвимости на хостах.
Один из самых популярных скриптов – Nmap-Vulners. Он сравнивает версии сервисов на сканируемых хостах с базой CVE (Common Vulnerabilities and Exposures) и показывает, актуальные уязвимости.
Установить Nmap легко. Например, в Linux это можно сделать буквально в два действия:
Ввести команду apt-get install nmap
Перейти в каталог со скриптами и скачать репозиторий с GitHub.
После установки Nmap необходимо указать, какой скрипт планируется использовать. Делается это с помощью команды nmap -sV --script vulners [--script-args mincvss=<arg_val>] <target>. Затем с помощью отдельного скрипта запускаем сканирование и начинаем поиск уязвимостей.

Стоит учитывать: скрипт проверяет все доступные источники уязвимостей, и это может занять время. Чтобы ускорить процесс, можно указать конкретные источники через параметр --script-args vulscandb=database_name.
Иногда ИБ-специалисту требуется проверить отдельно взятые уязвимости. Nmap справится и с этим. Для этого достаточно использовать простую команду nmap -sV --script vulscan --script-args vulscandb=exploit.csv <target> -p 80,233. Полный список скриптов и библиотек доступен на официальном сайте NSE.
Не забывайте при написании команд указывать аргумент «-sV». Это необходимо, чтобы Nmap определил версии ОС или установленного ПО и получил доступ к нужным данным в базе уязвимостей.
Анализ защищенности веб-приложений
Выше мы говорили о сетевом сканировании, но что делать, если нужно проверить веб-приложение. Например, перед публикацией на хостинг или на внешний IP?
Здесь сможет выручить OWASP ZAP. Этот инструмент активно используется как в пентестах, так и в коммерческих решениях для автоматизации поиска таких уязвимостей, как SQL-инъекции, XSS, CSRF, проблемы с аутентификацией, открытые пароли в веб-формах, утечки исходников и др.
Принцип работы OWASP ZAP похож на Burp Suite. OWASP ZAP запускает собственный прокси-сервер, с помощью которого обрабатывает все запросы.
Мне также нравится, что инструмент поддерживает несколько режимов сканирования:
Standard Mode – обычное сканирование;
Safe Mode – безопасный режим: ;
Protected Mode – более активный анализ;
Attack Mode – в этом режиме можно выполнять атаки и эксплуатировать обнаруженные уязвимости. Режим подходит для продвинутых пользователей.
Кроме того, у OWASP ZAP простой и понятный интерфейс.

Ниже приведу пример работы OWASP ZAP.

Отдельного внимания заслуживает Wazuh. Он позволяет построить полноценное управление уязвимостями. У Wazuh для этого есть встроенный модуль Vulnerability Detector.
Агенты Wazuh устанавливаются на конечные хосты и поддерживают Windows, Ubuntu, Debian, Red Hat и другие ОС.

Инструмент имеет три типа сканирования:
Базовое скан��рование – запускается при первом подключении. В этом режиме проводится полная проверка ОС, формируется реестр уязвимостей и генерируются алерты.
Полная проверка – анализируется все установленное ПО. При любом изменении (установка, обновление) Wazuh перепроверяет систему и обновляет статус уязвимостей.
Частичное сканирование – фокусируется только на новых пакетах и приложениях.
Еще один плюс работы Wazuh состоит в том, что он умеет не только сканировать хосты, но и:
анализировать конфигурации и образы контейнеров (включая Docker), выявляя в них уязвимости;
находить уязвимости CVE-2024-3094 в XZ Utils;
рекомендовать обновления;
отслеживать аномальную активность в БД. Например, признаки SQL-инъекций или утечек данных;
автоматически блокировать IP-адреса подозрительных хостов.
Небольшой лайфхак по раскатке агентов: Wazuh-агенты устанавливаются с помощью команды
msiexec /i wazuh-agent.msi /qn. Это позволяет легко распространять их через GPO.
В профессиональном сообществе Wazuh зарекомендовал себя как надежное решение с возможностями полноценного управления уязвимостями. Он легко интегрируется с другими системами и не требует сверхчеловеческих навыков для развертывания – достаточно базового понимания Linux и изучения официальной документации.
Напоследок хочу остановиться на двух консольных сканерах для веба: Nikto и Nuclei. Эти инструменты можно считать фаворитами среди пентестеров. Особенно они выручают когда нужно быстро проверить веб-сервис.
Nikto – своего рода «лазерный прицел». Он не сканирует всю инфраструктуру, а фокусируется на конкретном веб-сервере и показывает ошибки конфигурации, устаревшие версии Apache/IIS и другие типичные проблемы.
Nikto уже предустановлен в Kali Linux и подходит тем, у кого есть четкий список целей. Кстати, Nikto умеет экспортировать результаты в формат, совместимый с Metasploit. Это делается с помощью команды nikto -h <домен/IP> -Format msf+.
Nuclei, напротив, заточен под массовое сканирование. Он использует шаблоны в формате YAML, в которых описаны векторы атак, уровень критичности уязвимости и даже возможные эксплойты.
Для себя я выделил следующие преимущества Nuclei:
поддержка сканирования веб-приложений, облачных сред, конфигураций серверов и открытых портов;
возможность интеграции в CI/CD – сканирование на этапе разработки;
готовые интеграции с Jira, GitLab и другими DevOps-инструментами;
возможность писать собственные шаблоны под свои задачи.
Заключение
Выбирать сканер уязвимостей нужно исходя из конкретной задачи: это может быть пентест, мониторинг инфраструктуры или встраивание безопасности в процесс разработки. К сожалению, универсального «волшебного инструмента» с красной кнопкой «сделать безопасно» не существует.
Сегодня, чтобы обеспечить должный уровень кибербезопасности приходится комбинировать разные подходы и решения. Например, мы для поиска уязвимостей используем несколько подходов. Это и агентское сканирование конечных хостов, и Open Source инструменты для анализа отдельных серверов и сервисов (с подтверждением найденных уязвимостей), и платные сканеры.
P.S. Кстати, при выборе инструментов для поиска уязвимостей не стоит забывать и про community-версии коммерческих продуктов.
Примеры community-версий платных сканеров
Nessus Essentials. Он позволяет бесплатно сканировать до 16 хостов – вполне хватит для небольшого периметра или поочередной проверки серверов;
Burp Suite Community Edition. Он отлично подходит для анализа веб-приложений;
OpenVAS – зрелое решение с 19-летней историей. Бесплатная версия (OpenVAS FREE) доступна для Windows, Linux и macOS. По умолчанию использует Community Feed (менее полный, чем Enterprise), но обновления приходят регулярно. Сам OpenVAS FREE не обновляется автоматически, но для личного использования или небольших проектов этого инструмента может быть вполне достаточно.
