Брутфорс (полный перебор) – метод решения математических задач, сложность которого зависит от количества всех возможных решений. Сам же термин brute-force обычно используется в контексте хакерских атак, когда злоумышленник пытается подобрать логин/пароль к какой-либо учетной записи или сервису.
Чтобы усложнить задачу перебора можно использовать следующие методы:
1. Хеширование хранимых паролей;
2. Применение межсетевого экрана;
3. Использование средств, препятствующих быстрой проверке корректности ключа (например, Captcha).
Рассмотрим инструменты, которые можно использовать для выполнения brute-force атак. Для примера возьмем тестовую машину 192.168.60.50 и попробуем подобрать пароль пользователя test по SSH. Мы будем использовать популярные пароли из стандартного словаря rockyou.txt, доступного в Kali Linux и инструментарий: Patator, Medusa, Hydra и Metasploit.
Patator
Для подбора в Patator пароля используем команду:
patator ssh_login host=192.168.60.50 user=test password=FILE0 0=/root/wordlist -x ignore:mesg=’Authentication failed’
где:
ssh_login — необходимый модуль
host – наша цель
user – логин пользователя, к которому подбирается пароль или файл с логинами для множественного подбора
password – словарь с паролями
-x ignore:mesg=’Authentication failed’ — команда не выводить на экран строку, имеющую данное сообщение. Параметр фильтрации подбирается индивидуально.
Hydra.
Для подбора в Hydra используем команду:
hydra -V -f -t 4 -l test -P /root/wordlist ssh://192.168.60.50
где:
-V – показывать пару логин+пароль во время перебора
-f – остановка как только будет найден пароль для указанного логина
-P – путь до словаря с паролями
ssh://192.168.60.50 – указание сервиса и IP жертвы
Medusa.
Для подбора в Medusa пароля используем команду:
medusa -h 192.168.60.50 -u test -P /root/wordlist -M ssh -f -v 6
где:
-h – IP жертвы
-u – логин
-P – путь к словарю
-M — выбор модуля
-f – остановка после нахождения валидной пары логин/пароль
-v – настройка отображения сообщений на экране во время процесса подбора
Metasploit.
Произведем поиск инструмента для проведения brute-force атаки по SSH:
search ssh_login
и получили ответ:

Задействуем модуль:
use auxiliary/scanner/ssh/ssh_login
Далее командой
show options
смотрим, какие необходимо указать параметры. Для нас это:
rhosts – IP жертвы
rport – порт
username – логин SSH
userpass_file – путь до словаря
stop_on_success – остановка, как только найдется пара логин/пароль
threads – количество потоков

Указание необходимых параметров производится через команду «set».
set rhosts 192.168.60.50
set username test
set userpass_file /root/wordlist
set stop_on_success yes
set threads 4
set rport 22
Указав необходимые параметры набираем команду run и ждем.
Думаю, с brute-force атакой на SSH разобрались. Теперь рассмотрим другой пример — подбор пароля окна авторизации веб-формы.

Для примера будем подбирать пароль от учетной записи администратора wordpress.
BurpSuite.
Для начала нам необходимо понять, как происходит процесс авторизации. Для этого мы будем использовать BurpSuite. Нам необходимо попробовать авторизоваться с любым паролем и логином, чтобы посмотреть какие запросы проходят через BurpSuite.

Отлично, мы увидели post запрос для авторизации с ним мы и будем работать.
В BODY указано какой логин и пароль проверялись, а значит, мы можем попробовать самостоятельно подставить нужные нам значения.
Передаем этот запрос в Intruder и там выбираем необходимые параметры для атаки. В пункте Payload Positions тип атаки оставляем sniper, но для проверки оставляем только параметр pwd. Таким образом, при атаке будет изменяться только этот параметр.

Загружаем необходимый словарь и начинаем атаку.

Нам удалось подобрать пароль, исходя из ответов в BurpSuite. Все варианты неверных паролей приходили с кодом 200, а когда пришла очередь проверять наш пароль, то пришел код 302.
Данный метод перебора занимает намного больше времени, чем при использовании Patator, Hydra, Medusa и т.д. Даже с учетом того, что мы взяли небольшой словарь, BurpSuite перебирал словарь около 40 минут.
Hydra.
Теперь попробуем подобрать пароль с помощью Hydra.
Как мы уже знаем, при неверной авторизации возвращается код 200, а при успешной – 302. Попробуем использовать эту информацию.
Для запуска используем команду:
hydra -V -f -l admin -P /root/wordlist -t 4 http-post-form://192.168.60.50 -m "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1:S=302"
Здесь мы указываем обязательные параметры:
-l – имя пользователя
-P – словарь с паролями
-t – количество потоков
http-post-form – тип формы, у нас post.
/wp-login.php – это URL страницы с авторизацией
^USER^ — показывает куда подставлять имя пользователя
^PASS^ — показывает куда подставлять пароль из словаря
S=302 – указание на какой ответ опираться Hydra. В нашем случае, ответ 302 при успешной авторизации.
Patator.
Как мы уже знаем, при неудачной авторизации возвращается код 200, а при удачной – 302. Будем использовать тот же принцип, что и с Hydra:
Запуск производится командой:
patator http_fuzz url=http://192.168.60.50/wp-login.php method=POST body='log=admin&pwd=FILE0&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1' 0=/root/wordlist -t 4 before_urls=http://192.168.60.50/wp-login.php -x ignore:code=200 accept_cookie=1
http_fuzz – модуль для brute-force атаки http
url – адрес страницы с авторизацией
FILE0 — путь до словаря с паролями
body – информация, которая передается в post запросе при авторизации
-t — количество потоков
-x – В данном случае мы указали команду не выводить на экран сообщения строки, содержащие параметр с кодом 200
accept_cookie – сохранение параметра cookie и передачи его в следующий запрос
Как итог – нам удалось подобрать пароль.
Nmap.
Да-да, Nmap умеет и такое, если использовать скрипт
http-wordpress-brute с соответствующими аргументами:
--script-args – добавление аргументов
user или
userdb – указание логина или файла с логинами
pass или
passdb — указание пароля или словаря
thread – количество потоков
firstonly=true – выводить результат после первого же правильного пароля
nmap 192.168.60.50 --script http-wordpress-brute --script-args 'user= admin,passdb= /root/wordlist, http-wordpress-brute.thread=3, brute.firstonly=true'

В данной статье мы рассмотрели лишь некоторые инструменты для брутфорса. Все эти инструменты довольно мощные и в рамках статьи не удалось бы раскрыть весь их потенциал. Однако, хочу заметить, что вероятность подбора правильного подбора зависит от используемого словаря. Поэтому помните про методы, помогающие противодействовать брутфорсу:
1. Создавайте длинные пароли из букв разного регистра, цифр и спецсимволов.
2. Не создавайте пароли, используя личную информацию, например: дату рождения или имя + дата рождения или мобильный телефон.
3. Регулярно меняйте пароль.
4. На всех аккаунтах применяйте уникальные связки логин/пароль.
5. Ограничивать одновременное количестов соединений к порту через iptables.
6. Также, для защиты веб-приложений можно ограничивать количество подключений средствами Nginx.
Пример настройки iptables для ограничения количества подключений с одного IP адреса к SSH серверу до 1 в секунду:
-A FORWARD -i eth0 -p tcp —dport 22 -m connlimit --connlimit-above 1 --connlimit-mask 32 -j REJECT --reject-with tcp-reset
комментарии (3)