Сканирование на уязвимости: обзор продуктов, которые есть на рынке
Aloha всем хабравчанам! Я Влад, системный администратор Cloud4Y. В этой статье расскажу, как мы выбирали продукт сканирования на уязвимости, почему важно контролировать, какие сервисы доступны извне и зачем необходимо проводить постоянный аудит состояния сети. Чай, кофе, па-а-а-аехали!
Сканер уязвимостей
Разберёмся с понятием сканера уязвимостей. Сканер уязвимостей (Vulnerability scanner) позволяет проверить различные системы, приложения и сети на возможное наличие уязвимостей, которыми может воспользоваться злоумышленник для компрометации ваших данных и систем, проверить открытые порты, оценивать и предлагать способ устранения уязвимости.
Работу сканера я разбил на следующие этапы:
- Проверка открытых портов, обнаружение запущенных сервисов и ОС.
- Выявление уязвимости.
- Оценка безопасности.
- Составление отчёта.
- Эксплуатация уязвимости (выполняется исключительно с разрешения администратора проверяемой системы, так как может повлечь нарушение работы).
Виды сканирования
Сканирование на уязвимости — это один из начальных этапов задачи тестирования на проникновение (пентест). Сканирование на уязвимости, как пентест или любое тестирование делится на несколько видов. Рассмотрим каждый через призму сканера на уязвимости:
WhiteBox. Сканер запускается внутри исследуемой сети, что позволяет более полно и комплексно изучать уязвимости, отпадает необходимость «угадывания» типа сервиса или ОС. Плюс метода в полном и комплексном подходе к исследованию, а минус в том, что это менее приближено к ситуации реальной атаки злоумышленника.
BlackBox. «Чёрный ящик». Сканер запускается извне исследуемой сети, что приводит к необходимости работы через общедоступные интерфейсы. Приложению необходимо провести анализ открытых портов, «угадать» службы и сервисы, и провести выявление уязвимостей на основании полученной информации. Такой вариант максимально приближен к реальной ситуации: в качестве первоначальных данных у сканера есть только IP или доменное имя для проверки. Из минусов можно упомянуть, что уязвимости приложений, используемых в DMZ, так и останутся не найденными.
Разумеется, можно долго спорить о плюсах и минусах разных видов сканирования, но вряд ли кто-то будет оспаривать необходимость проведения тестирования. А практика показывает, что совмещение обоих методов позволяет получить наилучшие результаты. Мне кажется, разумнее сначала провести BlackBox сканирование, а затем WhiteBox. Кстати, сейчас мы работаем над созданием сервиса для клиентов, который позволит с помощью BlackBox-сканирования проверять инфраструктуру, расположенную в ЦОД Cloud4Y. Сервис убережёт от неприятных случайностей, когда из-за человеческого фактора не были закрыты порты или оставлены другие потенциально опасные «дыры».
Выбор продукта — основа сервиса
Для грамотного выбора продукта необходимо задать критерии, которым он должен отвечать:
Обязательные:
- Бесплатный или ограничения платной версии, подходящие по параметрам.
- Качественный поиск открытых портов.
- Работает с IP адресами.
- Ищет уязвимости – ссылки на CVE базы, уровень угроз по метрике CVSS или аналогичной.
- Гибкость настроек.
- Вывод отчёта.
Опциональные:
- Наличие технической документации, технических форумов.
- GUI.
- Вывод отчета в удобном формате.
- Отправка результатов на почту.
- API.
Не каждый продукт на рынке соответствует такому набору критериев, особенно в сегменте бесплатного ПО, однако задача есть, а решение найдём. Проанализируем, что нынче модно в ИБ-кругах в качестве бесплатных решений. После поиска и анализа решений было выбрано несколько продуктов для изучения:
- OpenVas.
- Tenable Nessus.
- Gobysec / Goby.
- Tsunami-security-scanner.
- Flan Scan.
- D9scan.
- Rustscan.
- Owasp ZAP.
- W9Scan.
- Nmap.
Пойдём по порядку и посмотрим поближе на каждый из них
1. Greenbone Vulnerability Management (https://www.greenbone.net/) – бывший OpenVas – провёл реорганизацию, сменил название и модель распространения своего ПО. Бесплатно распространяется только продукт Greenbone Security Manager TRIAL, который содержит поддержку Greenbone Community Feed. После инсталляции и настройки продукта я запустил сканирование IP адреса, за которым был OpenSSH server vers 7.2p2. Время работы ПО для сканирования 1 IP-адреса — 28 минут. 28, Карл…
CVE уязвимости продукт нашёл. Только вот для OpenSSH server vers 7.2p2 как минимум есть CVE-2016-8858 с CVSS рейтингом 7,8.
Открытые порты: их действительно открыто 8, но, видимо в силу ограничений триал-версии, я увидел только 2 из 8. Эх, идём дальше.
2. Tenable Nessus (https://www.tenable.com/products/nessus)— известный инструмент. Существует бесплатная версия продукта, кхм, с ограничением на сканирование 16 IP адресов, для нас это маловато, двигаемся дальше.
3. Gobysec/Goby – очень перспективный бесплатный продукт. Живёт здесь: https://gobies.org/. На момент написания статьи доступна beta-версия 1.9.320. Очень дружелюбный интерфейс, интуитивное понятное меню, есть расширения, API, выгружает отчёты и все работает из коробки (Windows 10). Работать одно удовольствие с таким продуктом. Есть недочёты, но это ж beta. После запуска сканер работал 15 минут (ну почему тааааак долго!&), нашёл все 8 открытых портов (ура!), правильно определил версии продуктов, но уязвимостей, к сожалению, я не увидел.
А так хорошо всё начиналось, да? Впрочем, я буду следить за развитием продукта. Следующий кандидат.
4. Tsunami-security-scanner – неофициальный продукт от Google. Репозиторий: https://github.com/google/tsunami-security-scanner. В основе решения связка nmap + плагин vulners + ncrack и все завернуто в docker. Что мешает использовать нам тот же nmap в связке с плагином? Вот и я также решил, что ничего. Исследуем следующего кандидата.
5. Flan Scan – решение от CloudFlare, репозиторий по адресу: https://github.com/cloudflare/flan. Продукт также использует связку nmap + vulners (что всё больше убеждает в необходимости использования nmap для решения задачи), однако есть пара особенностей:
- Возможность создания прекрасных отчётов в форматах LaTeX (по умолчанию), md, html и json.
- Возможность отправлять данные отчета сразу в AWS/GCP S3. Подробнее почитать о продукте.
Однозначно, такой продукт подходит по всем обязательным критериям и проходит в следующий этап отбора. Но вы ведь тоже видите, что это nmap плюс несколько нетривиальных фишек? Следующий!
6. D9Scan – на просторах github.com был найден «Python Network Scanner with Backdoor Detection on Network». Под капотом у скрипта – питон и что бы вы думали… опять nmap! Download, run, test, repeat. Результаты как у протестированных ранее цунами и флана, только без CVE отчётов, однако моя консоль стала приятного зелёного цвета.
7. Не смог пройти мимо решения Rustscan (https://github.com/RustScan/RustScan). Да, здесь опять в качестве сканера используется nmap, но интерес к продукту подстегивает заявление «Scans all 65k ports in 3 seconds.» Впечатляет? Меня тоже. Скорость сканирования сумасшедшая. Проверьте и убедитесь сами:
docker run -it —rm —name rustscan rustscan/rustscan:1.10.0
Для наших целей продукт не очень подходит, так как открытые порты Edge можно собрать с помощью использования API vCloud Director’a. Узнать, как пользоваться API vCloud Director’a, можно тут.
8. Owasp Zed Attack Proxy (ZAP) – «самый популярный сканер веб-приложений в мире, бесплатный и с открытым исходным кодом», указано на главной странице продукта. Без сомнения, прекрасный продукт от команды OWASP, (если не знакомы, обязательно почитайте о них), классный сайт, обучающие ролики, море документации, отличное коммьюнити. Download => install JRE => Install ZAP => Test. К сожалению, продукт отказался сканировать исключительно IP адреса и попросил ввести корректный URL.
Следует отметить, как только в поле URL появился «valid url»: http://scanme.nmap.org/ сканер тут же запустил сканирование и быстро нашёл проблемы:
Итог: софт простой, классный, но не проверяет по IP-адресам, что является обязательным критерием.
9. Такая же ситуация случилась и с W9Scan (https://github.com/w-digital-scanner/w9scan). При попытке подать на вход IP адрес для проведения сканирования софт преобразует его в http://, что явно не соответствует нашим критериям.
10. Итак, последний пункт в списке — nmap (https://nmap.org/). Nmap («Network Mapper») — это инструмент с открытым исходным кодом для исследования сети, аудита безопасности, определения версий ОС, различных сервисов и многого другого. Не стоит забывать и о скриптовом движке NSE. NSE (Nmap Scripting Engine) является компонентом Nmap, который позволяет писать скрипты и автоматизировать часть задач, например, обнаружения и/или эксплуатации уязвимостей. Основой является интерпретатор скриптового язык Lua. Проверим nmap в деле. Я запустил сканирование подопытного IP адреса с опциями –p- -sV —script=vulners , а увидев консоли вывод, сразу понял какой продукт нам нужен.
Проверим походит ли по обязательному списку критериев:
- Бесплатный? Полностью бесплатен.
- Качественный поиск открытых портов? Есть.
- Работает с IP адресами? Без проблем!
- Ищет уязвимости (ссылки на CVE базы, уровень угроз по метрике CVSS или аналогичной)? Подключай плагины, например, vulners или vulscan.
- Гибкость настроек? Огромное количество настроек, позволяющих регулировать тип сканирования.
- Вывод отчета? Поддерживается: txt, grep, xml.
- Удобный вывод отчета? Я нашел https://github.com/honze-net/nmap-bootstrap-xsl, потрясающий по удобству использования и красоте отчет.
- GUI? Zenmap (https://nmap.org/zenmap/)
- Коммьюнити? Огромное!
- Эх, жаль, на почту отчеты не шлёт…
В финал отбора прошли 3 продукта: FlanScan, Rustscan, nmap.
Rustscan неплох, однако скорость поиска открытых портов нивелируется списком, собранным через API. Другими словами, API позволяет вытащить открытые порты, а мне не нужен просто быстрый скан портов, мне нужен качественный. FlanScan = nmap + красивые отчеты и выгрузка в облако. Красивые отчёты я и сам сварганить могу. А уж про облако и говорить нечего. Nmap — это продукт, на котором основаны все сервисы, вышедшие в финал, а кастомизация поможет нам решить задачу реализации сканера на уязвимости.
Понятно, что всё субъективно, но из того, что я просмотрел, nmap — эталон инструмента для проведения разведки (любого вида) перед началом пентеста. Посмотрите выше, сколько продуктов известных брендов содержат в основе nmap – flan (cloudflare), tsunami(google), rustscan и это, не говоря о 1.8к форков на github и почти 6к звезд. Исходя из вышесказанного, мы пришли к выводу, что nmap будет отличной основой нашего сервиса сканирования на уязвимости.
Конечно, выбор «лучшего» инструмента всегда остается за вами, но если вы уже задумались о проведении аудита безопасности вашей сети, то вы уже на верном пути. Знайте: любое сканирование вашей инфраструктуры позволит вам быть уверенным, что у вас нет «дыр» — забытых открытых портов, необновлённого ПО или ошибочно сконфигурованных сервисов – которыми могут воспользоваться скрипт-кидди для эксплуатации уязвимости. Предупреждён — значит вооружён!
P. S. Во время поиска наткнулся на https://github.com/infobyte/faraday. Авторы infobyte утверждают, что создали IDE для работы с данными, полученными в ходе аудита безопасности. Продукт Faraday имеет не только консольное исполнение, но и приятный GUI. К проблеме выбора сканера на уязвимости данный продукт относится лишь частично, однако может заинтересовать отдел ИБ в вашей компании.
Что ещё интересного есть в блоге Cloud4Y
Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем не чаще двух раз в неделю и только по делу.