Создание нового проекта в ScanFactory

Как автоматизировать сканирование портов с помощью ScanFactory

Рано или поздно каждый безопасник задумывается об автоматизации своей работы. Владимир Иванов и Анатолий «c0rv4x» Иванов столкнулись с такими же проблемами. Они начали с небольших шагов по автоматизации и мониторингу рутинных задач пентестинга, а затем превратили свои разработки в сервис ScanFactory.

Неважно, занимаетесь ли вы аудитом, работаете безопасником или участвуете в программах bugbount — на первом этапе теста на проникновение вы часто будете выполнять одни и те же подготовительные шаги: сбор поддоменов, сканирование IP-адресов, перебор директории и так далее. Автоматизировать все это очень заманчиво. Я установил параметры, нажал кнопку «сканировать» — и можно продолжать заниматься своими делами, пока не придут отчеты.

Создатели ScanFactory, как и другие опытные пентестеры, тоже столкнулись с этой проблемой и сначала начали решать ее самостоятельно, а потом это превратилось в нечто большее.

Project Black — опен­сор­сный про­ект, соз­данный Ана­толи­ем Ива­новым во вре­мя работы в Positive Technologies.

«ScanFactory создавалась в первую очередь как продукт, призванный сэкономить время и деньги компании. Он будет полезен как blue team, так и red team — ​​людям, которые выполняют одни и те же задачи в области тестирования на проникновение в инфраструктуры », — говорит Владимир Иванов. «Мы очень гордимся своим творением», — продолжает он. «И даже немного пугающе по поводу возможностей, которые нам предоставили, поскольку мы покрываем большинство базовых сценариев тестирования на проникновение».

ScanFactory сейчас находится в стабильной бета-версии и уже используется в компаниях в качестве пульта дистанционного управления. Как и в любом B2B продукте, все вопросы решаются индивидуально с клиентом, проект строится под его нужды и, по словам разработчиков, запускается в течение одного дня. Они также готовы создавать и интегрировать функции, которые могут понадобиться крупному заказчику.

Что можно автоматизировать?

Если вам интересно, что вообще делает пентестер, то в общих чертах вы можете ответить следующим образом: исходя из опыта, он ищет вариант взаимодействия с приложением, не предусмотренный логикой, и попытки продвинуть его до полной уязвимости. Поэтому первая задача — собрать как можно больше точек входа в исследуемую инфраструктуру.

На этом этапе выявляется одна из слабостей человека: он не может построить в голове схему из всех вариантов, где могут быть потенциальные уязвимости по внешнему периметру. Возможности человека ограничены!

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

Для автоматизации, конечно же, существует множество программ, и выбор инструментов есть почти в каждой области. В нашем распоряжении веб-сканеры (Burp, Acunetix, Netsparker), сканеры инфраструктуры (Nessus), а также всевозможные сетевые сканеры, дирбастеры, сканеры CMS и многое другое. Практически каждый день появляется что-то новое. Если автоматизировать все, что существует, это значительно расширит охват именно этого графа уязвимостей.

При этом перед одним человеком стоит задача совместить все эти средства. Грубо говоря, выходные данные одной программы должны поступать на вход другой, а результаты должны поступать в следующую. Однако эти программы не имеют единого высокоуровневого интерфейса и обычно не разрабатываются как часть пакета. Таким образом, автоматизация становится нетривиальной задачей. «У нас есть программно связанные программы, которые ранее никто не мог связать», — с гордостью говорит Владимир Иванов.

Идея решения этой проблемы лежит в основе ScanFactory. В общем, ScanFactory — это SaaS для автоматической оценки безопасности внешней инфраструктуры. Он сканирует периметр, обнаруживает и сообщает о проблемах безопасности, а также отслеживает новые проблемы в будущем.

Как работать со ScanFactory

Во-первых, представим себе испытание на проникновение в вакуумную сферическую область. Клиент утверждает, что область действия охватывает все поддомены основного веб-сайта компании, например, * .company.corp.

На­ши дей­ствия будут сле­дующи­ми.

  1. Сос­тавля­ем спи­сок всех под­доменов и получа­ем их IP-адре­са.
  2. За­пус­каем ска­нер пор­тов, нап­ример Nmap. На вход отправ­ляем IP из пре­дыду­щего шага, а на выходе получа­ем откры­тые пор­ты и спи­сок запущен­ных сер­висов.
  3. Най­ден­ные веб‑сер­висы отправ­ляем в дир­бастер, что­бы соб­рать инте­рес­ные фай­лы и дирек­тории, а на бинар­ных — бру­тим пароли.
  4. Про­ходим­ся по веб‑сер­висам кра­уле­ром с целью соб­рать фор­мы, домены и HTTP-зап­росы. Для каж­дого нового домена пов­торим алго­ритм с шага 2.
  5. HTTP-зап­росы отправ­ляем в фаз­зер, что­бы най­ти скры­тые парамет­ры и про­ана­лизи­ровать их. И даль­ше в таком же клю­че.

При исполь­зовании ScanFactory все эти дей­ствия выпол­няют­ся в нес­коль­ко кли­ков. Соз­даем новый про­ект и ука­зыва­ем ско­уп со звез­дочкой: *.company.corp.

Создание нового проекта в ScanFactory

Соз­дание нового про­екта в ScanFactory

Здесь же мож­но ука­зать чер­ный спи­сок IP-адре­сов и доменов, находя­щих­ся вне ско­упа.

За­тем на стра­нице про­екта дос­таточ­но прос­то нажать на кноп­ку запус­ка.

Страница проекта в ScanFactory

Стра­ница про­екта в ScanFactory

Теперь вы можете сварить кофе и заняться другими делами, пока ждете результатов. Вы можете увидеть пример отсканированного проекта с обнаруженными пробелами на странице Live Demo.

Страница ScanFactory с найденными уязвимостями

Стра­ница ScanFactory с най­ден­ными уяз­вимос­тями

Как ScanFactory ищет сложные уязвимости

Вот как Владимир Иванов описывает сценарий, в котором ScanFactory позволяет найти, проверить и разработать цепочку из нескольких уязвимостей, которые, скорее всего, останутся незамеченными после сканирования вручную:

У нас есть осно­ван­ный на Selenium кра­улер, который ходит по сай­там. Он заходит на сайт, рен­дерит стра­ницу и видит, что там авто­мати­чес­ки под­гру­жает­ся файл на JS. Кра­улер смот­рит внутрь него и видит, что в ком­мента­риях к скрип­ту раз­работ­чик оста­вил ссыл­ку или домен какого‑то тес­тового стен­да, который еще ниг­де не встре­чал­ся и о котором не было извес­тно.

Этот домен помеща­ется в базу. Далее пла­ниров­щик видит, что в базе появил­ся новый домен. Он берет этот домен и соз­дает спи­сок задач уже для него. Ска­ниру­ются пор­ты, и дир­бастер находит скры­тую пап­ку со скрип­тами. В одном из них — дав­но забытая POST-фор­ма. Спе­циаль­ная ути­лита находит в фор­ме скры­тый параметр, при отправ­ке которо­го ответ на стра­нице изме­нит­ся.

По­лучен­ный HTTP-зап­рос со скры­тым парамет­ром сох­раня­ется и отправ­ляет­ся в BurpSuite, который и находит SQL-инъ­екцию.

Еще один сценарий уязвимости, которую может обнаружить ScanFactory

Еще один сце­нарий уяз­вимос­ти, которую может обна­ружить ScanFactory

Во время одного из первых тестов ребята столкнулись с проблемой сканирования сайтов с большим количеством похожих страниц. Например, в блогах и на новостных сайтах они могут исчисляться тысячами. Следовательно, похожие страницы следует игнорировать, а атаковать только одну. Для сравнения страниц между собой ScanFactory использует технологию нечеткого хеширования, основанную на алгоритме SimHash, используемом Google.

info

SimHash на осно­ве эле­мен­тов HTML-дерева счи­тает хеш‑фун­кцию так, что у двух похожих стра­ниц будут похожие хеши. Если стра­ницы отли­чают­ся мень­ше, чем на порого­вое зна­чение, то соот­ветс­тву­ющие зап­росы мож­но не ска­ниро­вать дваж­ды. Но как опре­делить порого­вое зна­чение — тема для отдель­ной статьи.

Кроме того, система автоматически генерирует специальные словари для каждого клиента. Когда он просматривает сайты, поисковый робот извлекает со страниц часто встречающиеся ключевые слова. Результатом является список слов, относящихся к компании и отрасли. Эти словари используются при подборе паролей, а также для поиска скрытых поддоменов.

Архитектура ScanFactory

Внутри ScanFactory есть сложная система взаимодействующих утилит пентестера, их более 20. Каждая утилита запускается в отдельном контейнере Docker, а ядро ​​управляет системой. Ядро точно описывает, как происходит сканирование, всю последовательность запуска программы, частоту каждого и другие параметры для каждого.

Список используемого софта

  • Burp Suite + 12 пла­гинов
  • Nessus
  • Amass + шесть плат­ных API
  • GoAltdns
  • Nmap
  • Nuclei
  • Кра­улер на осно­ве Selenium
  • Dirsearch
  • ffuf
  • Patator
  • SubFinder
  • subjack
  • waybackurls
  • WPScan

Важная задача, которую удалось решить разработчикам, — это расстановка приоритетов задач. ScanFactory основан на очередях. Как только появляется HTTP-запрос, в котором, например, есть форма с интересными параметрами, задача его обработки становится приоритетной — сервис просканирует страницу раньше других.

Каждая утилита, бесплатная или коммерческая, имеет оболочку Python. Он подписывается на очередь и получает новую задачу через очередь — ссылку на внутренний объект. Есть разные типы объектов: проекты, хосты, HTTP-запросы и другие. Wrapper принимает их, анализирует и выводит данные, которые сводятся к одному типу, а затем проходит через серию внутренних микросервисов. В итоге данные сохраняются в MongoDB.

Все дополнительные функции реализуются через микросервисы, включая вышеупомянутое сравнение похожих страниц, поиск данных в ответе HTTP и так далее. Например, при обнаружении нового домена необходимо проверить, входит ли он в область действия, определить приоритет его сканирования и выполнить другие операции. Все это делается с помощью микросервисов.

Что­бы упростить мас­шта­биро­вание, раз­работ­чики исполь­зуют Kubernetes. Эта тех­нология поз­воля­ет ScanFactory мас­шта­биро­вать ресур­сы в зависи­мос­ти от количес­тва задач в оче­реди. Нап­ример, если нуж­но прос­каниро­вать пул IP-адре­сов, для это­го сна­чала уве­личи­вает­ся чис­ло кон­тей­неров Nmap, потом чис­ло кон­тей­неров с обра­бот­чиком HTTP-отве­та, а затем ресур­сы осво­бож­дают­ся, пока сис­тема ждет сле­дующих задач.

За два года разработки ребятам удалось решить огромное количество возникающих проблем.Разработка модели данных. Как оптимально хранить HTTP-запросы и ответы? Установка приоритетов для задач сканирования. Как обнаружить аномалии при фаззинге? Оптимизация сканирования больших проектов. Как нормализовать результаты разных программ?

Конкуренты

«Наша команда постоянно следит за сообществом информационной безопасности на предмет новых методов решения проблем. Это важный процесс, потому что каждый день появляется что-то новое, и мы хотим, чтобы наш продукт представлял собой сборник лучших технологий из того, что у нас есть сейчас », — говорит Анатолий Иванов.

мен­но поэто­му архи­тек­туру интегра­ции новых ути­лит раз­работ­чики ста­рают­ся сде­лать мак­сималь­но прос­той, что­бы мож­но было добав­лять новую ути­литу за нес­коль­ко дней. «Новые решения, прог­раммы или тех­нологии лег­ко интегри­ровать. Будь то самопис­ная ути­лита, све­жий экс­пло­ит или набор репор­тов с баг­баун­ти», — объ­ясня­ет Ана­толий.

Глав­ное отли­чие ScanFactory от кон­курен­тов — это как раз проз­рачность в выборе соф­та и алго­рит­мов работы. Чаще все­го такие решения проп­риетар­ные, нап­ример Nessus фир­мы Tenable или Qualys WAS. С ними никог­да не зна­ешь, что они будут делать пос­ле нажатия на кноп­ку Scan.

«Чаще всего в таких решениях каждый объект внешней инфраструктуры трактуется как отдельный, то есть никак не связан с другими», — говорит Анатолий Иванов. — Грубо говоря, запускается один большой контейнер, и сотрудники выполняют один и тот же контрольный список, составленный разработчиком для одного домена. Существует условный список уязвимостей безопасности, которые они пытаются найти. Мы также пытаемся научить систему связывания разнородных данных, превращая ее в уязвимость, как это делает пентестер ».

Впечатления

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

Особенно интересно было посмотреть, как одна за другой запускаются и выполняются задачи и утилиты. Все это можно просматривать в реальном времени с помощью графиков и статистики. После завершения сканирования вы получите график и статистику обнаруженных уязвимостей и их уровня серьезности. График показывает, когда и какие ошибки были обнаружены.

Результаты сканирования проекта. Статистика найденных уязвимостей и их уровня опасности

Ре­зуль­таты ска­ниро­вания про­екта. Ста­тис­тика най­ден­ных уяз­вимос­тей и их уров­ня опас­ности

Впро­чем, наг­ляднос­ти в пред­став­лении най­ден­ной информа­ции мог­ло бы быть и поболь­ше. Я бы не отка­зал­ся видеть всю прос­каниро­ван­ную инфраструк­туру ком­пании: что и на каком IP или домене наш­лось. Сей­час мож­но прос­матри­вать и выг­ружать толь­ко то, что сис­тема пос­читала алер­том. В этот же спи­сок попада­ют и резуль­таты работы ути­лит.

Но ScanFactory позволяет просматривать и загружать любые предупреждения, обнаруженные во время сканирования. Скачивание предупреждений — очень полезная вещь, особенно для дальнейшей автоматизации. Например, сканер можно интегрировать с Jira, чтобы любые обнаруженные проблемы немедленно регистрировались там.

Найденные поддомены в алертах ScanFactory

Най­ден­ные под­домены в алер­тах ScanFactory

В целом, конечно, этот продукт не совсем для меня. Он был создан как инструмент для компаний, которые хотят усилить безопасность своей инфраструктуры и иметь возможность отслеживать возникающие проблемы безопасности.

Например, если из-за недосмотра администратора в производственную среду внезапно начинает поступать что-то, что не должно просматриваться, сканер обнаружит это и немедленно уведомит вас. Проблема не продлится до следующего аудита или, чего доброго, взлома. А аудит, кстати, не дает всех гарантий: люди по-разному думают, используют разные инструменты, обращают внимание на разные аспекты и могут что-то упустить.

ScanFactory, по сути, берет на себя рутину, которую обычно выполняют безопасники со стороны поставщика. Отдать его роботам — разумное решение. Пусть ходят по периметру 24 часа в сутки, 365 дней в году!

Никто не говорит, что ScanFactory заменит плановые аудиты. Автоматизация не найдет сложных логических ошибок, и каждая система не будет обрабатывать препятствия, такие как аутентификация, и не будет распространять все методы API (хотя они работают над этим). Сканер — еще одно хорошее и надежное звено для создания и поддержки безопасного продукта.

 

 

 

 

Click to rate this post!
[Total: 0 Average: 0]

Leave a reply:

Your email address will not be published.