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

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

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

www

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 исполь­зуют тех­нологию Fuzzy Hashing на осно­ве алго­рит­ма SimHash, который при­меня­ется в Google.

info

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

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

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Подписаться
Уведомить о
2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии