Сканирование на уязвимости: обзор продуктов, которые есть на рынке

Kate

Administrator
Команда форума
Я Влад, системный администратор Cloud4Y. В этой статье расскажу, как мы выбирали продукт сканирования на уязвимости, почему важно контролировать, какие сервисы доступны извне и зачем необходимо проводить постоянный аудит состояния сети. Чай, кофе, па-а-а-аехали!

Сканер уязвимостей​

Разберёмся с понятием сканера уязвимостей. Сканер уязвимостей (Vulnerability scanner) позволяет проверить различные системы, приложения и сети на возможное наличие уязвимостей, которыми может воспользоваться злоумышленник для компрометации ваших данных и систем, проверить открытые порты, оценивать и предлагать способ устранения уязвимости.

Работу сканера я разбил на следующие этапы:

  1. Проверка открытых портов, обнаружение запущенных сервисов и ОС.
  2. Выявление уязвимости.
  3. Оценка безопасности.
  4. Составление отчёта.
  5. Эксплуатация уязвимости (выполняется исключительно с разрешения администратора проверяемой системы, так как может повлечь нарушение работы).

Виды сканирования​

Сканирование на уязвимости — это один из начальных этапов задачи тестирования на проникновение (пентест). Сканирование на уязвимости, как пентест или любое тестирование делится на несколько видов. Рассмотрим каждый через призму сканера на уязвимости:

WhiteBox. Сканер запускается внутри исследуемой сети, что позволяет более полно и комплексно изучать уязвимости, отпадает необходимость «угадывания» типа сервиса или ОС. Плюс метода в полном и комплексном подходе к исследованию, а минус в том, что это менее приближено к ситуации реальной атаки злоумышленника.

BlackBox. «Чёрный ящик». Сканер запускается извне исследуемой сети, что приводит к необходимости работы через общедоступные интерфейсы. Приложению необходимо провести анализ открытых портов, «угадать» службы и сервисы, и провести выявление уязвимостей на основании полученной информации. Такой вариант максимально приближен к реальной ситуации: в качестве первоначальных данных у сканера есть только IP или доменное имя для проверки. Из минусов можно упомянуть, что уязвимости приложений, используемых в DMZ, так и останутся не найденными.

Разумеется, можно долго спорить о плюсах и минусах разных видов сканирования, но вряд ли кто-то будет оспаривать необходимость проведения тестирования. А практика показывает, что совмещение обоих методов позволяет получить наилучшие результаты. Мне кажется, разумнее сначала провести BlackBox сканирование, а затем WhiteBox. Кстати, сейчас мы работаем над созданием сервиса для клиентов, который позволит с помощью BlackBox-сканирования проверять инфраструктуру, расположенную в ЦОД Cloud4Y. Сервис убережёт от неприятных случайностей, когда из-за человеческого фактора не были закрыты порты или оставлены другие потенциально опасные «дыры».

Выбор продукта — основа сервиса​

Для грамотного выбора продукта необходимо задать критерии, которым он должен отвечать:

Обязательные:

  1. Бесплатный или ограничения платной версии, подходящие по параметрам.
  2. Качественный поиск открытых портов.
  3. Работает с IP адресами.
  4. Ищет уязвимости – ссылки на CVE базы, уровень угроз по метрике CVSS или аналогичной.
  5. Гибкость настроек.
  6. Вывод отчёта.
Опциональные:

  1. Наличие технической документации, технических форумов.
  2. GUI.
  3. Вывод отчета в удобном формате.
  4. Отправка результатов на почту.
  5. API.
Не каждый продукт на рынке соответствует такому набору критериев, особенно в сегменте бесплатного ПО, однако задача есть, а решение найдём. Проанализируем, что нынче модно в ИБ-кругах в качестве бесплатных решений. После поиска и анализа решений было выбрано несколько продуктов для изучения:

  1. OpenVas.
  2. Tenable Nessus.
  3. Gobysec / Goby.
  4. Tsunami-security-scanner.
  5. Flan Scan.
  6. D9scan.
  7. Rustscan.
  8. Owasp ZAP.
  9. W9Scan.
  10. 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, Карл…

5ab8fff0ff9fc7b090d238badb9fc24b.png

CVE уязвимости продукт нашёл. Только вот для OpenSSH server vers 7.2p2 как минимум есть CVE-2016-8858 с CVSS рейтингом 7,8.

bdc1b2dc8cf16055c3827f276037b1de.png

Открытые порты: их действительно открыто 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 открытых портов (ура!), правильно определил версии продуктов, но уязвимостей, к сожалению, я не увидел.

acc99389feee22cf396dd698f0b2a333.png

А так хорошо всё начиналось, да? Впрочем, я буду следить за развитием продукта. Следующий кандидат.

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.
758ad8854c21d3af5f473f22ed91aa1b.png

Однозначно, такой продукт подходит по всем обязательным критериям и проходит в следующий этап отбора. Но вы ведь тоже видите, что это nmap плюс несколько нетривиальных фишек? Следующий!

6. D9Scan – на просторах github.com был найден «Python Network Scanner with Backdoor Detection on Network». Под капотом у скрипта – питон и что бы вы думали… опять nmap! Download, run, test, repeat. Результаты как у протестированных ранее цунами и флана, только без CVE отчётов, однако моя консоль стала приятного зелёного цвета.

Next one
Next one
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 <rustscan arguments here> <ip address to scan>
ba8b786a69fe03bdf734f4307a66fb03.png

Для наших целей продукт не очень подходит, так как открытые порты Edge можно собрать с помощью использования API vCloud Director’a. Узнать, как пользоваться API vCloud Director’a, можно тут.

8. Owasp Zed Attack Proxy (ZAP) – «самый популярный сканер веб-приложений в мире, бесплатный и с открытым исходным кодом», указано на главной странице продукта. Без сомнения, прекрасный продукт от команды OWASP, (если не знакомы, обязательно почитайте о них), классный сайт, обучающие ролики, море документации, отличное коммьюнити. Download => install JRE => Install ZAP => Test. К сожалению, продукт отказался сканировать исключительно IP адреса и попросил ввести корректный URL.

5ba79d72496b3b08a0b442ae7655e2eb.png

Следует отметить, как только в поле URL появился «valid url»: http://scanme.nmap.org/ сканер тут же запустил сканирование и быстро нашёл проблемы:

35207e926e711e1fb457fac6e42dc23c.png

Итог: софт простой, классный, но не проверяет по IP-адресам, что является обязательным критерием.

9. Такая же ситуация случилась и с W9Scan (https://github.com/w-digital-scanner/w9scan). При попытке подать на вход IP адрес для проведения сканирования софт преобразует его в http://<ip адрес>, что явно не соответствует нашим критериям.

00547be9268886f481b942d59b536c15.png

10. Итак, последний пункт в списке — nmap (https://nmap.org/). Nmap («Network Mapper») — это инструмент с открытым исходным кодом для исследования сети, аудита безопасности, определения версий ОС, различных сервисов и многого другого. Не стоит забывать и о скриптовом движке NSE. NSE (Nmap Scripting Engine) является компонентом Nmap, который позволяет писать скрипты и автоматизировать часть задач, например, обнаружения и/или эксплуатации уязвимостей. Основой является интерпретатор скриптового язык Lua. Проверим nmap в деле. Я запустил сканирование подопытного IP адреса с опциями –p- -sV --script=vulners, а увидев консоли вывод, сразу понял какой продукт нам нужен.

339dcfa73c65ec1b3fceb9a45c88367f.png

Проверим походит ли по обязательному списку критериев:

  1. Бесплатный? Полностью бесплатен.
  2. Качественный поиск открытых портов? Есть.
  3. Работает с IP адресами? Без проблем!
  4. Ищет уязвимости (ссылки на CVE базы, уровень угроз по метрике CVSS или аналогичной)? Подключай плагины, например, vulners или vulscan.
  5. Гибкость настроек? Огромное количество настроек, позволяющих регулировать тип сканирования.
  6. Вывод отчета? Поддерживается: txt, grep, xml.
  7. Удобный вывод отчета? Я нашел https://github.com/honze-net/nmap-bootstrap-xsl, потрясающий по удобству использования и красоте отчет.
  8. GUI? Zenmap (https://nmap.org/zenmap/)
  9. Коммьюнити? Огромное!
  10. Эх, жаль, на почту отчеты не шлёт…
Итоги я свёл в таблицу:

a78efeb563c7eaa2cae849e535e8447d.png

В финал отбора прошли 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. К проблеме выбора сканера на уязвимости данный продукт относится лишь частично, однако может заинтересовать отдел ИБ в вашей компании.

89c3d9f18da8eefd3565876ca6b0d8f7.png

Спасибо за внимание!

 
Сверху