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

warning

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

Brute force — это ата­ка на аутен­тифика­цию через гру­бый перебор вари­антов. Задача ата­кующе­го — подоб­рать дан­ные для вхо­да в сис­тему: пару логин/пароль, одно­разо­вый код при двух­фактор­ной авто­риза­ции или токен сбро­са пароля. «Гру­бость» перебо­ра зак­люча­ется в том, что игно­риру­ются все усло­вия, кро­ме того, подошел пароль или нет.

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

В веб‑брут­форсе серь­езные проб­лемы может добавить кап­ча (кар­тинка, которую нуж­но «раз­гадать», что­бы доказать, что ты не робот). Кап­ча — это всег­да удо­рожа­ние для бру­та. В луч­шем слу­чае пот­ребу­ется под­клю­чить сер­вис раз­гадыва­ния кап­чи. В худ­шем — писать бота, ими­тиру­юще­го поведе­ние поль­зовате­ля. Сов­ремен­ные hCaptcha и reCaptcha прек­расно опре­деля­ют ботов.

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

При­мером реаль­ного бру­та может быть ситу­ация с «Вкон­такте» в ран­ние годы сущес­тво­вания. Рань­ше алго­рит­мы ВК вооб­ще не инте­ресо­вало, какой пароль у поль­зовате­ля. Поль­зовате­ли тоже не были иску­шены в воп­росе выбора и ста­вили очень прос­тые пароли.

Не­кото­рые рас­слаб­лялись нас­толь­ко, что исполь­зовали номер мобиль­ного как логин и пароль. Хакерам оста­валось сос­тавить базу номеров телефо­нов и написать скрипт, который выпол­нял зап­рос авто­риза­ции. Ста­рич­ки говорят, что за ночь бру­та мож­но было выловить сот­ню акка­унтов.

 

Первый брутфорс

Да­вай про­ведем ата­ку на спе­циали­зиро­ван­ное уяз­вимое при­ложе­ние — DVWA (Damn Vulnerable Web Application). В Kali Linux для это­го выпол­няем

sudo apt update
sudo apt install dvwa -y
sudo dvwa-start

Пос­ле коман­ды dvwa-start в бра­узе­ре откро­ется тес­товое при­ложе­ние. Адрес при­ложе­ния обыч­но выг­лядит так:

http://127.0.0.1:42001/login.php

Ав­торизуй­ся с дан­ными admin/admin. Наж­ми Create / Reset Database. Лаба соз­даст базу дан­ных и поп­росит сно­ва авто­ризо­вать­ся. В этот раз исполь­зуй кре­ды admin/password.

Для ата­ки про­пус­тим тра­фик через Burp Suite. Обыч­но Burp прок­сиру­ет на http://127.0.0.1:8080. У меня порт 8080 занят, поэто­му я зашел на вклад­ку Proxy и нажал шес­терен­ку Proxy settings. В появив­шемся окне нас­тро­ек в спис­ке прок­си я добавил прок­си на 8081. Жми Add, в поле Bind to port ука­жи номер пор­та.

Нас­трой бра­узер, что­бы тра­фик шел через Burp. Нап­ример, при помощи рас­ширения бра­узе­ра FoxyProxy.

Настройки прокси Burp
Нас­трой­ки прок­си Burp

Ког­да все будет готово, в левом меню DVWA выбери Brute Force. Поп­робуй авто­ризо­вать­ся с дан­ными admin/123. Попыт­ка будет неудач­ной. Вер­нись в Burp на вклад­ку Proxy и в исто­рии зап­росов най­ди подоб­ный отчет:

POST /vulnerabilities/brute/ HTTP/1.1
Host: 127.0.0.1:42001
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 83
Origin: http://127.0.0.1:42001
Connection: keep-alive
Referer: http://127.0.0.1:42001/vulnerabilities/brute/
Cookie: security=impossible; PHPSESSID=c0fb20810a07f4eff1d5c4096d3a4469
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Priority: u=0, i
username=admin&password=123&Login=Login&user_token=f08b2238488f57e6a3b0168afee6c137

У тебя будут отли­чать­ся зна­чения PHPSESSID и user_token — это неболь­шая защита от брут­форса. Клик­ни по зап­росу пра­вой кноп­кой мыши и выбери Send to Intruder. В Burp Intruder выдели пароль 123 и жми кноп­ку Add, что­бы ука­зать «Интру­деру» позицию для под­ста­нов­ки зна­чений.

Ско­пируй этот незатей­ливый сло­варь:

123123
admin
password
p@$$w0rD
Gfhjkm
Подготовка Burp Intruder к атаке
Под­готов­ка Burp Intruder к ата­ке

Ког­да ты добавил позицию для под­ста­нов­ки, спра­ва появи­лось окно нас­тро­ек. В бло­ке Payload configuration наж­ми кноп­ку Paste, что­бы под­ста­вить наш прос­той сло­варь. Для начала ата­ки наж­ми оран­жевую кноп­ку Start attack и дож­дись окон­чания.

Результат атаки перебором
Ре­зуль­тат ата­ки перебо­ром

В спис­ке резуль­татов ищи тот ответ сер­вера, который отли­чает­ся от дру­гих. Обра­ти вни­мание на стол­бец Length, успешная авто­риза­ция — 5133 байт, неус­пешные попыт­ки — 5059. Если откро­ешь вклад­ку Response, в тек­сте отве­та най­дешь Welcome to the password protected area.

Поз­драв­ляю, ты выпол­нил свою пер­вую ата­ку брут­форсом!

Для под­бора мы исполь­зовали собс­твен­ный сло­варь с вари­анта­ми паролей. В реаль­ных пен­тестах ты будешь обра­щать­ся к дру­гим сло­варям. Нап­ример, для под­бора пин‑кода из четырех цифр сло­варь будет сос­тоять из чис­ловых зна­чений от 0000 до 9999. Ата­куя роутер, будешь исполь­зовать набор завод­ских паролей, соб­ранных на сай­те про­изво­дите­ля.

Для под­бора пароля, который при­думал поль­зователь, есть спе­циали­зиро­ван­ные сло­вари паролей. Чаще все­го это пароли, сли­тые из раз­ных баз дан­ных взло­ман­ных ресур­сов.

Словари для брута

Са­мый популяр­ный сло­варь для бру­та — rockyou.txt. Сло­варь появил­ся в резуль­тате ата­ки на ком­панию RockYou в 2009 году. Логины и пароли хра­нились в базе дан­ных ком­пании в откры­том виде. Через SQL-инъ­екцию хакеры укра­ли дан­ные ~32,6 мил­лиона акка­унтов с логина­ми и пароля­ми. База была очи­щена от дуб­лей, в ито­ге в фай­ле оста­лось 14 341 564 уни­каль­ных пароля.

То­повый набор сло­варей, вклю­чая вари­анты сло­варей с пароля­ми, — SecLists. Можешь ска­чать набор сло­варей из репози­тория. В Kali Linux, если набор не уста­нов­лен, исполь­зуй apt -y install seclists.

Есть аль­тер­нативы. Нап­ример, мно­го вари­антов сло­варей мож­но най­ти в fuzzdb в пап­ке wordlists-user-passwd.

Чек­нуть, есть ли твой любимый пароль в сли­тых базах и сло­варях, мож­но на сай­те Have I Been Pwned.

О нет! Пароль есть в базах и может быть подобран
О нет! Пароль есть в базах и может быть подоб­ран
 

Подходы в бруте

Пе­ребор пар логин/пароль быва­ет нере­аль­ным с точ­ки зре­ния количес­тва вари­антов. На боль­шом ресур­се может быть мил­лион логинов. Если при­менить к ним 14 мил­лионов паролей из сло­варя rockyou, пот­ребу­ется 14 трил­лионов попыток. При работе в 100 потоков ты пот­ратишь 1 660 925 дней, или при­мер­но 60 жиз­ней! И это без каких‑либо лагов и задер­жек.

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

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

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

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

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