Мощный параллельный брутфорсер, поддерживающий более 50 протоколов: SSH, FTP, HTTP/HTTPS, SMB, RDP, SMTP, LDAP, MySQL, PostgreSQL, Telnet и мн. др. Позволяет проводить атаки по словарю и по перебору с поддержкой прокси. ⚠ Серая зона: использование без явного письменного разрешения на любую систему, кроме собственной, является уголовным преступлением в большинстве стран. hydra -l admin -P /usr/share/wordlists/rockyou.txt ssh://192.168.1.1
# Debian/Ubuntu/Kali apt install hydra # Из исходников git clone https://github.com/vanhauser-thc/thc-hydra cd thc-hydra && ./configure && make && make install # GUI версия apt install hydra-gtk
H Y D R A
(c) 2001-2023 van Hauser / THC
<vh@thc.org> https://github.com/vanhauser-thc/thc-hydra
Многие модули написаны David (dot) Maciejak @ gmail (dot) com
Код BFG от Jan Dlabal <dlabaljan@gmail.com>
Лицензия AGPLv3 (см. файл LICENSE)
Пожалуйста, не используйте в военных или спецслужбах,
или для незаконных целей.
(Это пожелание автора и не является обязательным. Многие люди, работающие
в этих организациях, всё равно не заботятся о законах и этике.
Вы не из "хороших", если игнорируете это.)
ПРИМЕЧАНИЕ: Нет, это не задумано как документ в формате markdown! Старая школа!
Последнюю версию Hydra можно загрузить непосредственно через Docker:
docker pull vanhauser/hydra
Крупнейшая дыра в безопасности — пароли, как показывает каждое исследование безопасности. Этот инструмент — код-доказательство концепции, дающий исследователям и консультантам по безопасности возможность показать, как легко можно получить несанкционированный доступ к удалённой системе.
ЭТОТ ИНСТРУМЕНТ ДЛЯ ЛЕГАЛЬНОГО ИСПОЛЬЗОВАНИЯ!
Существует уже несколько инструментов для взлома логинов, однако ни один из них не поддерживает более одного протокола для атаки или параллельные подключения.
Проверено на компиляцию в Linux, Windows/Cygwin, Solaris, FreeBSD/OpenBSD, QNX (Blackberry 10) и MacOS.
В настоящее время инструмент поддерживает следующие протоколы: Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MEMCACHED, MONGODB, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, Radmin, RDP, Rexec, Rlogin, Rsh, RTSP, 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 на странице проекта по адресу https://github.com/vanhauser-thc/thc-hydra/releases Если вас интересует текущее состояние разработки, публичный репозиторий разработки находится на GitHub: svn co https://github.com/vanhauser-thc/thc-hydra или git clone https://github.com/vanhauser-thc/thc-hydra Используйте версию для разработки на свой страх и риск. Она содержит новые функции и новые ошибки. Всё может не работать!
Альтернативно (и проще), вы можете загрузить его как Docker-контейнер:
docker pull vanhauser/hydra
Для настройки, компиляции и установки Hydra просто введите:
./configure
make
make install
Если вам нужен модуль SSH, необходимо установить libssh (не libssh2!) в вашей системе, загрузите его с https://www.libssh.org, для поддержки ssh v1 вам также нужно добавить опцию "-DWITH_SSH1=On" в командной строке cmake. ВАЖНО: Если вы компилируете на macOS, вы должны сделать это — не устанавливайте libssh через Homebrew.
Если вы используете Ubuntu/Debian, это установит вспомогательные библиотеки, необходимые для некоторых необязательных модулей (обратите внимание, что некоторые из них могут быть недоступны в вашем дистрибутиве):
apt-get install libssl-dev libssh-dev libidn11-dev libpcre3-dev \
libgtk-3-dev libmysqlclient-dev libpq-dev libsvn-dev \
firebird-dev libmemcached-dev libgpg-error-dev \
libgcrypt11-dev libgcrypt20-dev freetds-dev
Это включает все необязательные модули и функции, за исключением Oracle, SAP R/3, NCP и протокола Apple — для них вам нужно будет загрузить и установить их с веб-сайтов поставщиков.
Для всех других производных Linux и систем на базе BSD используйте системный установщик программного обеспечения и ищите библиотеки с похожими названиями, как в команде выше. Во всех остальных случаях вам придется загружать все библиотеки исходного кода и компилировать их вручную.
Если вы просто введете hydra, вы увидите краткую сводку важных
доступных опций.
Введите ./hydra -h, чтобы увидеть все доступные параметры командной строки.
Обратите внимание, что файл логина/пароля НЕ включается. Генерируйте их самостоятельно. Тем не менее, присутствует стандартный список паролей; используйте "dpl4hydra.sh" для генерации списка.
Для пользователей Linux доступен GTK GUI; попробуйте ./xhydra
Для использования командной строки синтаксис следующий: Для атаки одной цели или сети, вы можете использовать новый стиль "://": hydra [некоторые опции командной строки] ПРОТОКОЛ://ЦЕЛЬ:ПОРТ/ПАРАМЕТРЫ-МОДУЛЯ Старый режим также может использоваться для этого, и дополнительно, если вы хотите указать цели из текстового файла; вы должны использовать этот:
hydra [некоторые опции командной строки] [-s ПОРТ] ЦЕЛЬ ПРОТОКОЛ [ПАРАМЕТРЫ-МОДУЛЯ]
С помощью параметров командной строки вы указываете, какие логины пытаться, какие пароли, использовать ли SSL, сколько параллельных задач использовать для атаки и т.д.
ПРОТОКОЛ — это протокол, который вы хотите использовать для атаки, например, ftp, SMTP, http-get или многие другие доступные ЦЕЛЬ — это цель, которую вы хотите атаковать ПАРАМЕТРЫ-МОДУЛЯ — это необязательные значения, специфичные для модуля ПРОТОКОЛА
ПЕРВОЕ — выберите свою цель У вас есть три варианта, как указать цель, которую вы хотите атаковать: 1. Одна цель в командной строке: просто введите IP-адрес или DNS-адрес 2. Диапазон сети в командной строке: спецификация CIDR, например, "192.168.0.0/24" 3. Список хостов в текстовом файле: по одной записи на строку (см. ниже)
ВТОРОЕ — выберите протокол Старайтесь избегать telnet, так как он ненадежен для определения правильной или ложной попытки входа. Используйте сканер портов, чтобы увидеть, какие протоколы включены на цели.
ТРЕТЬЕ — проверьте, есть ли у модуля необязательные параметры hydra -U ПРОТОКОЛ например, hydra -U smtp
ЧЕТВЁРТОЕ — порт назначения Это необязательно; если порт не указан, используется порт по умолчанию для ПРОТОКОЛА. Если вы указали использовать SSL (опция "-S"), по умолчанию используется стандартный порт SSL.
Если вы используете нотацию "://", вы должны использовать скобки "[" "]", если хотите передать IPv6-адреса или CIDR-нотацию ("192.168.0.0/24") для атаки: hydra [некоторые опции командной строки] ftp://[192.168.0.0/24]/ hydra [некоторые опции командной строки] -6 smtps://[2001:db8::1]/NTLM
Обратите внимание, что всё, что делает Hydra, работает только с IPv4! Если вы хотите атаковать IPv6-адреса, вы должны добавить параметр командной строки "-6". Все атаки затем только IPv6!
Если вы хотите передать цели через текстовый файл, вы не можете использовать нотацию :// но используйте старый стиль и просто укажите протокол (и параметры модуля): hydra [некоторые опции командной строки] -M targets.txt ftp Вы также можете указать порт для каждой записи цели, добавив ":<порт>" после записи цели в файле, например:
foo.bar.com
target.com:21
unusual.port.com:2121
default.used.here.com
127.0.0.1
127.0.0.1:2121
Обратите внимание, что если вы хотите атаковать IPv6-цели, вы должны указать параметр -6 и обязательно помещать IPv6-адреса в скобки в файле(!), вот так:
foo.bar.com
target.com:21
[fe80::1%eth0]
[2001::1]
[2002::2]:8080
[2a01:24a:133:0:00:123:ff:1a]
У вас есть множество вариантов, как атаковать с логинами и паролями. С помощью -l для логина и -p для пароля вы говорите Hydra, что это единственный логин и/или пароль для попытки. С помощью -L для логинов и -P для паролей вы передаёте текстовые файлы с записями. например:
hydra -l admin -p password ftp://localhost/
hydra -L default_logins.txt -p test ftp://localhost/
hydra -l admin -P common_passwords.txt ftp://localhost/
hydra -L logins.txt -P passwords.txt ftp://localhost/
Кроме того, вы можете попробовать пароли на основе логина с помощью опции "-e". Опция "-e" имеет три параметра:
s - попробовать логин как пароль
n - попробовать пустой пароль
r - инвертировать логин и попробовать его как пароль
Если вы хотите, например, попробовать "попробовать логин как пароль" и "пустой пароль", укажите "-e sn" в командной строке.
Но есть ещё два режима для попытки паролей, кроме -p/-P: Вы можете использовать текстовый файл, где логин и пароль разделены двоеточием, например:
admin:password
test:test
foo:bar
Это распространенный стиль списка учётных записей по умолчанию, который также генерируется генератором файла учётных записей по умолчанию dpl4hydra.sh, поставляемым с Hydra. Вы используете такой текстовый файл с опцией -C — обратите внимание, что в этом режиме вы не можете использовать опции -l/-L/-p/-P (однако -e nsr можно). Пример:
hydra -C default_accounts.txt ftp://localhost/
И наконец, существует режим перебора с опцией -x (которую нельзя использовать совместно с -p/-P/-C):
-x minimum_length:maximum_length:charset
Определение набора символов: a для строчных букв, A для прописных букв, 1 для цифр, а для всего остального используется их фактическое представление.
Примеры:
-x 1:3:a генерирует пароли длиной от 1 до 3 символов из всех строчных букв
-x 2:5:/ генерирует пароли длиной от 2 до 5 символов, содержащие только косые черты
-x 5:8:A1 генерирует пароли длиной от 5 до 8 символов из прописных букв и цифр
-x '3:3:aA1&~#\\ "\'<{([-|_^@)]=}>$%*?./§,;:!`' -v генерирует пароли длиной 3 символа из всех 95 символов, с подробным выводом.
Пример:
hydra -l ftp -x 3:3:a ftp://localhost/
Через третий параметр командной строки (ЦЕЛЕВОЙ СЕРВИС ДОПОЛНИТЕЛЬНЫЙ) или опцию командной строки -m можно передать одну опцию модулю. Многие модули используют эту возможность; некоторые требуют её!
Чтобы увидеть специальную опцию модуля, введите:
hydra -U
например
./hydra -U http-post-form
Специальные опции можно передать через параметр -m, как третью опцию командной строки или в формате service://target/option.
Примеры (все они равнозначны):
./hydra -l test -p test -m PLAIN 127.0.0.1 imap
./hydra -l test -p test 127.0.0.1 imap PLAIN
./hydra -l test -p test imap://127.0.0.1/PLAIN
Когда Hydra прерывается по Control-C, убивается или падает, она оставляет файл "hydra.restore", который содержит всю необходимую информацию для восстановления сеанса. Этот файл сеанса записывается каждые 5 минут. ПРИМЕЧАНИЕ: файл hydra.restore НЕЛЬЗЯ копировать на другую платформу (например, с little endian на big endian, или с Solaris на AIX)
Переменная среды HYDRA_PROXY_HTTP определяет веб-прокси (это работает только для сервисов HTTP!). Допустимый синтаксис:
HYDRA_PROXY_HTTP="http://123.45.67.89:8080/"
HYDRA_PROXY_HTTP="http://login:password@123.45.67.89:8080/"
HYDRA_PROXY_HTTP="proxylist.txt"
Последний пример - это текстовый файл, содержащий до 64 прокси (в том же формате, что и другие примеры).
Для всех остальных сервисов используйте переменную HYDRA_PROXY для сканирования/взлома. Она использует тот же синтаксис. Например:
HYDRA_PROXY=[connect|socks4|socks5]://[login:password@]proxy_addr:proxy_port
например:
HYDRA_PROXY=connect://proxy.anonymizer.com:8000
HYDRA_PROXY=socks4://auth:pw@127.0.0.1:1080
HYDRA_PROXY=socksproxylist.txt
Результаты выводятся в stdio вместе с другой информацией. С помощью опции командной строки -o результаты также можно записать в файл. Используя -b, можно указать формат вывода. В настоящее время поддерживаются:
text - формат простого текстаjsonv1 - данные JSON, использующие версию 1.x схемы (определена ниже).json - данные JSON, использующие последнюю версию схемы; в настоящее время
есть только версия 1.При использовании вывода JSON файл результатов может оказаться невалидным JSON, если были серьезные ошибки при запуске Hydra.
Вот пример вывода в формате JSON. Примечания к некоторым полям:
errormessages - массив из нуля или более строк, которые обычно печатаются
в stderr в конце работы Hydra. Текст имеет очень свободную форму.success - индикатор того, что Hydra работала корректно без ошибок (НЕ если
были обнаружены пароли). Этот параметр либо JSON-значение true,
либо false, в зависимости от завершения.quantityfound - количество обнаруженных комбинаций имя_пользователя+пароль.jsonoutputversion - версия схемы, 1.00, 1.01, 1.11, 2.00,
2.03 и т.д. Hydra будет делать второй кортеж версии всегда из двух
цифр, чтобы упростить обработку для нижестоящих программ (в отличие от v1.1 vs
v1.10). Младшие версии являются аддитивными, поэтому версия 1.02 будет содержать больше
полей, чем версия 1.00, и будет обратно совместима. Версия 2.x будет
отличаться от вывода версии 1.x.Пример версии 1.00:
{
"errormessages": [
"[ERROR] Error Message of Something",
"[ERROR] Another Message",
"These are very free form"
],
"generator": {
"built": "2021-03-01 14:44:22",
"commandline": "hydra -b jsonv1 -o results.json ... ...",
"jsonoutputversion": "1.00",
"server": "127.0.0.1",
"service": "http-post-form",
"software": "Hydra",
"version": "v8.5"
},
"quantityfound": 2,
"results": [
{
"host": "127.0.0.1",
"login": "bill@example.com",
"password": "bill",
"port": 9999,
"service": "http-post-form"
},
{
"host": "127.0.0.1",
"login": "joe@example.com",
"password": "joe",
"port": 9999,
"service": "http-post-form"
}
],
"success": false
}
Благодаря возможности параллелизации этот инструмент для взлома паролей может быть очень быстрым; однако это зависит от протокола. Обычно самыми быстрыми являются POP3 и FTP. Поэкспериментируйте с опцией задачи (-t), чтобы ускорить работу! Чем выше - тем быстрее ;-) (но слишком высокое значение - отключает сервис)
Запуск в SuSE Linux 7.2 на localhost с "-C FILE", содержащим 295 записей (294 попытки - неверные логины, 1 - верный). Каждый тест выполнялся три раза (только для "1 задачи" - один раз), и записывалось среднее значение.
P A R A L L E L T A S K S
SERVICE 1 4 8 16 32 50 64 100 128
------- --------------------------------------------------------------------
telnet 23:20 5:58 2:58 1:34 1:05 0:33 0:45* 0:25* 0:55*
ftp 45:54 11:51 5:54 3:06 1:25 0:58 0:46 0:29 0:32
pop3 92:10 27:16 13:56 6:42 2:55 1:57 1:24 1:14 0:50
imap 31:05 7:41 3:51 1:58 1:01 0:39 0:32 0:25 0:21
(*) ПРИМЕЧАНИЕ: временные интервалы для telnet МОГУТ СУЩЕСТВЕННО ОТЛИЧАТЬСЯ для 64 до 128 задач! Например, при 128 задачах, четырехкратный запуск дал результаты от 28 до 97 секунд! Причина этого неизвестна...
предположений на задачу (округлено вверх):
295 74 38 19 10 6 5 3 3
возможных предположений за одно соединение (зависит от программного обеспечения сервера и конфигурации):
telnet 4 ftp 6 pop3 1 imap 3
Hydra: Напишите мне или Дэвиду, если вы нашли ошибки или написали новый модуль. vh@thc.org (и укажите "antispam" в теме письма)
Вы должны использовать PGP для шифрования писем на vh@thc.org :
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v3.3.3 (vh@thc.org)