Содержание статьи
Неважно, занимаешься ли ты аудитом, работаешь безопасником или участвуешь в программах багбаунти, — на первом этапе пентеста часто ты будешь проводить одни и те же подготовительные действия: собирать поддомены, сканировать айпишники, перебирать директории и так далее. Автоматизировать все это крайне соблазнительно. Задал параметры, нажал кнопку «сканировать» — и можно продолжать заниматься своими делами, пока не придут отчеты.
Создатели ScanFactory, как и другие пентестеры со стажем, тоже столкнулись с этой задачей и сначала стали решать ее для себя, а затем это выросло в нечто большее.
www
Project Black — опенсорсный проект, созданный Анатолием Ивановым во время работы в Positive Technologies.
«ScanFactory создавался в первую очередь как продукт, который призван экономить время и деньги компании. Он будет полезен как blue team, так и red team — людям, которые выполняют одинаковые задачи в области тестирования инфраструктуры на проникновение», — говорит Владимир Иванов. «Мы очень горды нашим творением, — продолжает он. — И даже немножко страшно от возможностей, которые мы получили, потому что мы покрываем большинство сценариев базового пентестерского аудита».
Сейчас ScanFactory находится в стадии стабильной беты и уже используется в качестве пилотов в компаниях. Как в любом B2B-продукте, все вопросы решаются индивидуально с клиентом, проект выстраивается под его нужды и, по словам разработчиков, запускается в течение дня. Также они готовы разрабатывать и интегрировать фичи, которые могут понадобиться крупному клиенту.
Что можно автоматизировать?
Если задаться вопросом, что вообще делает пентестер, то в общих чертах можно ответить так: он, опираясь на опыт, ищет вариант взаимодействия с приложением, не предусмотренный логикой, и пробует раскрутить его до полноценной уязвимости. Поэтому первая задача — в том, чтобы собрать как можно больше точек входа в исследуемую инфраструктуру.
На этом этапе обнаруживается одна из слабостей человека — он не может построить в голове граф из всех вариантов того, где потенциально могли бы быть уязвимости на внешнем периметре. Человеческие возможности ограниченны!
Поэтому случается так, что некоторые уязвимости проходят мимо глаз исследователей и долгое время остаются ненайденными. В аудите очень важны личные качества человека (насколько он усерден, к примеру) и его опыт: с какими вариантами необычного поведения приложений он сталкивался и какие способы их эксплуатации уже применял.
Для автоматизации, конечно же, существует самый разный софт, причем выбор инструментария есть почти в каждой из областей. В нашем распоряжении — веб‑сканеры (Burp, Acunetix, Netsparker), инфраструктурные сканеры (Nessus), а также всевозможные сетевые сканеры, дирбастеры, сканеры CMS и прочее. Почти каждый день появляется что‑то новое. Если автоматизировать все, что существует, это позволит сильно расширить покрытие того самого графа уязвимостей.
На человека при этом ложится задача связать между собой все эти средства. Грубо говоря, выходные данные одной программы должны поступать на вход другой, а ее результаты работы — следующей. Но у этих программ нет какого‑то единого высокоуровневого интерфейса, и они обычно не задуманы как часть какого‑то набора. Следовательно, автоматизация становится нетривиальной задачей. «Мы программно соединили проги, которые никто раньше не мог соединить», — с гордостью сообщает Владимир Иванов.
Идея решить эту задачу лежит в основе ScanFactory. Если обобщить, то ScanFactory — это SaaS для автоматизированной оценки защищенности внешней инфраструктуры. Он сканирует периметр, обнаруживает проблемы безопасности и оповещает о них, а также выполняет мониторинг для отслеживания новых проблем в будущем.
Как работать со ScanFactory
Давай для начала представим себе сферический пентест в вакууме. Заказчик говорит, что в скоупе все поддомены основного сайта компании, например *.
.
Наши действия будут следующими.
- Составляем список всех поддоменов и получаем их IP-адреса.
- Запускаем сканер портов, например Nmap. На вход отправляем IP из предыдущего шага, а на выходе получаем открытые порты и список запущенных сервисов.
- Найденные веб‑сервисы отправляем в дирбастер, чтобы собрать интересные файлы и директории, а на бинарных — брутим пароли.
- Проходимся по веб‑сервисам краулером с целью собрать формы, домены и HTTP-запросы. Для каждого нового домена повторим алгоритм с шага 2.
- HTTP-запросы отправляем в фаззер, чтобы найти скрытые параметры и проанализировать их. И дальше в таком же ключе.
При использовании ScanFactory все эти действия выполняются в несколько кликов. Создаем новый проект и указываем скоуп со звездочкой: *.
.
Здесь же можно указать черный список IP-адресов и доменов, находящихся вне скоупа.
Затем на странице проекта достаточно просто нажать на кнопку запуска.
Теперь можно заваривать кофе и заниматься другими делами в ожидании результатов. Пример отсканированного проекта с найденными уязвимостями ты можешь увидеть на странице с Live Demo.
Как ScanFactory ищет сложные уязвимости
Вот как Владимир Иванов описывает сценарий, в котором ScanFactory позволяет найти, проверить и раскрутить цепочку из нескольких уязвимостей, которая при ручном сканировании, скорее всего, осталась бы незамеченной:
У нас есть основанный на Selenium краулер, который ходит по сайтам. Он заходит на сайт, рендерит страницу и видит, что там автоматически подгружается файл на JS. Краулер смотрит внутрь него и видит, что в комментариях к скрипту разработчик оставил ссылку или домен какого‑то тестового стенда, который еще нигде не встречался и о котором не было известно.
Этот домен помещается в базу. Далее планировщик видит, что в базе появился новый домен. Он берет этот домен и создает список задач уже для него. Сканируются порты, и дирбастер находит скрытую папку со скриптами. В одном из них — давно забытая POST-форма. Специальная утилита находит в форме скрытый параметр, при отправке которого ответ на странице изменится.
Полученный HTTP-запрос со скрытым параметром сохраняется и отправляется в BurpSuite, который и находит SQL-инъекцию.
Во время одного из первых тестов парни столкнулись с проблемой сканирования сайтов с большим количеством похожих страниц. Например, в блогах и новостных сайтах они могут исчисляться тысячами. Поэтому схожие страницы нужно игнорировать, а атаковать достаточно одну. Чтобы сравнивать страницы между собой, в ScanFactory используют технологию Fuzzy Hashing на основе алгоритма SimHash, который применяется в Google.
info
SimHash на основе элементов HTML-дерева считает хеш‑функцию так, что у двух похожих страниц будут похожие хеши. Если страницы отличаются меньше, чем на пороговое значение, то соответствующие запросы можно не сканировать дважды. Но как определить пороговое значение — тема для отдельной статьи.
Также для каждого клиента система автоматически генерирует специальные словари. Во время обхода сайтов краулер вытаскивает из страниц часто встречающиеся ключевые слова. Получается список слов, специфичных для компании и сферы деятельности. Эти словари используются во время брутфорса паролей, а также для поиска скрытых поддоменов.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»