В данной статье пойдет речь о Hydra. Инструмент поддерживает огромное количество служб, благодаря своей быстроте и надёжности он завоевал заслуженную признательность среди тестеров на проникновение.
Введение
Hydra – это программное обеспечение с открытым исходным кодом для перебора паролей в реальном времени от различных онлайн сервисов, веб-приложений, FTP, SSH и других протоколов. Это распараллеленный взломщик для входа в систему, он поддерживает множество протоколов для осуществления атак. Пользователь быстро и с легкостью может добавить новые модули. Hydra предоставляет специалистам в сфере ИБ возможность узнать, насколько легко можно получить несанкционированный доступ к системе с удаленного устройства.
В настоящее время этот инструмент поддерживает следующие протоколы: adam6500, afp, asterisk, cisco, cisco-enable, cvs, firebird, ftp, ftps, http[s]-{head|get|post}, http[s]-{get|post}-form, http-proxy, http-proxy-urlenum, icq, imap[s], irc, ldap2[s], ldap3[-{cram|digest}md5][s], mssql mysql(v4), mysql5, ncp, nntp, oracle, oracle-listener, oracle-sid, pcanywhere, pcnfs, pop3[s], postgres, rdp, radmin2, redis, rexec, rlogin, rpcap, rsh, rtsp, s7-300, sapr3, sip, smb, smtp[s], smtp-enum, snmp, socks5, ssh, sshkey, svn, teamspeak, telnet[s], vmauthd, vnc, xmpp.
Для большинства протоколов поддерживается SSL (например, https-get, ftp-SSL и т.д.). Если это невозможно, поиск необходимых библиотек осуществляется во время компиляции, однако доступных сервисов будет меньше. Чтобы просмотреть доступные варианты, следует ввести в командную строку «hydra».
Перебор пароля конкретного пользователя
Если человек знает только имя пользователя и хочет войти в систему, он может использовать список паролей для их перебора на хосте для службы ftp.
hydra -l ignite -P pass.txt 192.168.1.141 ftp
- здесь опция -l отвечает за имя пользователя; -P – указывает на списки паролей и IP-адреса хоста для службы ftp.
Таким образом, человек смог узнать, что пользователь ignite имеет пароль «123».
Перебор имени пользователя по паролю
Допустим, что у человека есть корректный пароль, но он понятия не имеет, какому пользователю данный пароль принадлежит. Например, есть пароль для входа в систему по ftp. Он может перебрать корректные имена пользователей, чтобы найти подходящее. Следует использовать опцию -L для указания списка имен пользователей и опцию -p для обозначения конкретного пароля.
hydra -L users.txt -p 123 192.168.1.141 ftp
В данном случае список имен пользователей – это «users.txt», для него используется опция —L, а пароль – «123», для его указания используется опция —p по ftp.
Брутфорс (полный перебор) имени пользователя и пароля
Если человек не знает ни имя пользователя, ни пароль, он может выполнить атаку брутфорс на оба значения («username» и «password»), используя списки слов для них обоих. Для выполнения атаки потребуются параметры —P и —U.
hydra -L users.txt -P pass.txt 192.168.1.141 ftp
- «users.txt» – это список слов с именами пользователей, «pass.txt» – это список с паролями.
С помощью атаки теперь человек знает имя пользователя («ignite») и пароль («123»).
Режимы Verbose и Debug
Опция —V используется для включения вербального режима (англ. «verbose mode»), где во время каждой попытки будет отображаться комбинация «логин + пароль». В данном примере есть два списка слов «users.txt» и «pass.txt», таким образом, атака методом перебора заключается в создании различных комбинаций «логин + пароль». В режиме Verbose можно просмотреть все попытки ввода данных.
hydra -L users.txt -P pass.txt 192.168.1.141 ftp -V
- «users.txt» включает в себя 5 логинов, а «pass.txt» – 7 паролей, так что количество попыток составило 35.
Опция —d используется для включения режима отладки (англ. «debug mode»). Программа показывает полную информацию об атаке с указанием времени ожидания, сокета, PID, RECV.
hydra -l ignite -P pass.txt 192.168.1.141 ftp -d
Опция —d включает режим отладки, что дает возможность программе вывести на экран подробную информацию об атаке.
Дополнительные опции во время перебора пароля
У Hydra есть опция —e, которая проверит еще 3 типа паролей при переборе. «n» – для пустого пароля, «s» – для пароля, который полностью совпадает с именем пользователя, «r» – для пароля обратного имени пользователя. Все указанные варианты паролей должны быть проверены.
hydra -L users.txt -P pass.txt 192.168.1.141 ftp -V -e nsr
Был включен режим Verbose, чтобы человек мог получить подробную информацию о попытках ввода, осуществленных во время перебора.
Сохранение выходных данных
Этот инструмент дает возможность сохранить результаты на диск. В основном это необходимо для ведения отчетности, лучшей читабельности результатов и улучшения практики в дальнейшем. Человек может сохранить результаты атаки в файл, используя параметр —o.
hydra -L users.txt -P pass.txt 192.168.1.141 ftp -o result.txt
В данном примере пользователь попытался использовать эту опцию, и у него все получилось. Это было возможно благодаря приведенной выше команде, выходные данные были сохранены в файл «result.txt».
hydra -L users.txt -P pass.txt 192.168.1.141 ftp -o result:json
Человек также использовал эту опцию для сохранения результатов в формате .json, эта опция является уникальной особенностью, предоставляемой Hydra.
Возобновление атаки брутфорс
Иногда бывает так, что атака случайно останавливается из-за неожиданного поведения Hydra. Инструмент решил эту проблему – была добавлена опция —R. Пользователь с ее помощью может возобновить атаку с того места, на котором она была остановлена.
hydra -L users.txt -P pass.txt 192.168.1.141 ftp
hydra -R
В данном примере человек сначала начал атаку, используя первую команду, затем остановил ее, нажав «CTRL + C», а после, используя вторую команду, возобновил нападение.
Создание паролей с различным набором символов
Для генерации паролей с различными наборами символов можно использовать опцию —x. Она используется как —x min:max:charset, где:
- min задает минимальное количество символов в пароле;
- max задает максимальное количество символов в пароле;
- charset может включать «1» – для добавления чисел, «a» – для добавления строчных букв и «A» – для прописных букв. Любой другой добавленный символ помещается в список.
К примеру, возьмем значение «1:2:a1%.».
Сгенерированные пароли будут иметь длину от 1 до 2 символов и содержать строчные буквы, цифры и/или знаки процента и точки.
hydra -l ignite -x 1:3:1 ftp://192.168.1.141
Итак, в примере выше минимальная длина пароля равна 1, а максимальная длина – 3. Пароль будет содержать цифры, таким образом, пароль «123» подходит.
Чтобы лучше понять, что происходит, можно использовать режим —V, чтобы подробно просмотреть результаты.
Атака определенного порта, а не порта по умолчанию
Сетевые администраторы иногда меняют номер порта по умолчанию для некоторых служб по соображениям безопасности. В предыдущих командах Hydra проводила атаку методом перебора на службу ftp, просто указывая имя службы, а не порт, но, как уже становится понятно, порт по умолчанию может быть изменен. Инструмент поможет решить эту проблему с помощью опции —s. Если служба связана с другим портом по умолчанию, его можно определить также с помощью параметра —s.
nmap -sV 192.168.1.141
hydra -L users.txt -P pass.txt 192.168.1.141 ssh -s 2222
Итак, сначала пользователь попытался запустить сканирование Nmap на хосте. Оно показало ему все открытые порты, и ssh находится на порту 2222. Теперь следует выполнить команду Hydra с параметром —s и указанием номера порта.
Была осуществлена атака брутфорс службы ssh с указанием номера порта 2222.
Человек узнал имя пользователя («ignite») и пароль («123»).
Атака нескольких хостов
Человек опять выполняет перебор с использованием файла паролей «pass.txt» и файла имен пользователей «users.txt» на одном хосте, например, 191.168.1.141. Если есть несколько хостов, он может использовать опцию —M, с помощью которой произойдет атака всех хостов сразу.
hydra -L users.txt -P pass.txt -M hosts.txt ftp
Человек создает новый файл («hosts.txt»), он содержит все хосты. Затем он находит 2 актуальных хоста, получает имя пользователя и пароль.
Теперь в приведенную выше команду следует добавить опцию —M для атаки нескольких хостов, поэтому отображение всех попыток, происходящих во время атаки, займет очень много времени. Чтобы упростить процесс, была добавлена опция —F, так что атака завершится после первой найденной пары логин / пароль для любого хоста.
hydra -L users.txt -P pass.txt -M hosts.txt ftp -F
Использование комбинированных записей
Инструмент имеет уникальный параметр —C для использования комбинированных записей. Сначала нужно создать файл, содержащий данные в формате «login:pass», разделенные двоеточием, а затем использовать опцию —C, указывающую имя файла, и выполнить атаку методом перебора вместо использования опций —L / -P отдельно. Таким образом, можно намного быстрее осуществить атаку и сэкономить свое время.
cat userpass.txt
hydra -C userpass.txt 192.168.1.141 ftp
Итак, пользователь создал файл «userpass.txt» с помощью команды cat и введенных данных в формате «login:pass». Затем он использовал опцию —C, чтобы начать атаку.
Одновременное тестирование нескольких логинов
Если пользователь хочет протестировать несколько логинов одновременно, он может использовать опцию —t, указав их количество. Следовательно, Hydra будет выполнять перебор одновременно.
hydra -L users.txt -P pass.txt 192.168.1.141 ftp -t 3 -V
Как можно заметить, одновременно предпринимаются три попытки, одновременно проверяются три пароля для пользователя ignite на хосте 192.168.1.141. Можно наблюдать «дочерние изменения» 0,1,2, что означает, что инструмент одновременно проверяет несколько логинов.
Атака на HTTP Login Form
Hydra можно использовать для выполнения атаки методом перебора на простые веб-формы входа, для которых требуются переменные имени пользователя и пароля либо по запросу GET, либо по запросу POST. Для данного тестирования пользователь использовал dvwa (уязвимое веб-приложение), у которого есть страница входа в систему. Эта страница использует метод POST, когда пользователь отправляет ей данные.
hydra -l admin -P pass.txt 192.168.1.150 http-post-form “/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed”
Человек предоставил имя пользователя («admin») и файл с паролями, а также использовал модуль «http-post-form» для выполнения атаки методом перебора на хост 192.168.1.150.
Итак, с паролем все прошло успешно, пользователь обошел страницу входа в систему. Далее он применил брутфорс к полю имени пользователя и пароля, указав уровень безопасности как «низкий». С помощью плагина редактора файлов cookie пользователь узнал файл cookie PHPSESSID и использовал данное значение в команде.
hydra 192.168.1.150 -l admin -P ‘pass.txt’ http-get-form “/dvwa/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:F=Username and/or password incorrect.:H=Cookie:PHPSESSID=13f2650bddf7a9ef68858ceea03c5d; security=low”
Пользователь просмотрел исходный код страницы и узнал, что страница использует метод GET, нужен модуль «http-GET-form».
Как можно заметить, команда была успешно выполнена, были получены корректные имя пользователя и пароль.
Информация о службах Hydra
Чтобы получить информацию о службе Hydra, следует ввести —h и ее тип. Далее стоит добавить опцию —U.
hydra http-get-form -U
В данном случае «http-get-form» является одной из служб, поддерживаемых Hydra, и опция —U помогла получить подробную информацию о ее работе.
Атака на защищенное соединение
При выполнении атаки на ftp-соединение пользователь просто указывает имя службы с соответствующими параметрами, но если на хосте открыт ftp-порт и ftp защищен, следует ввести данную команду:
hydra -l ignite -P pass.txt ftp://192.168.1.141
Эта команда не будет выполнена должным образом, и, следовательно, будет найдено 0 корректных паролей. Итак, чтобы выполнить атаку на защищенное ftp-соединение, нужно ввести данную команду:
hydra -l ignite -P pass.txt ftps://192.168.1.141
Эта команда будет успешной и покажет пользователю 1 корректный пароль.
Это один из способов атаки на защищенный ftp, есть еще такой:
hydra -l ignite -P pass.txt 192.168.1.141 ftp
hydra -l ignite -P pass.txt 192.168.1.141 ftps
Первая атака не сработала, так как хост 192.168.1.141 имеет защищенный ftp, но вторая – была успешной и вывела на экран корректный пароль. Таким образом, пользователь может выполнять атаки методом перебора на хосты, на которых открыты защищенные службы.
Атака хостов с активным прокси
Стоит также рассказать о том, как Hydra может атаковать хосты с включенным прокси-сервером. Сначала пользователь попытался выполнить ту же команду с параметрами -l -p на хосте 192.168.1.141 в службе ftp и увидел, что пароль не был найден. Следовательно, он запустил сканирование Nmap для хоста и понял, что список служб и портов открыт. Итак, на порту 1080 был установлен прокси-сервер «socks5» без какой-либо аутентификации.
Прокси без аутентификации
Hydra имеет два варианта включения прокси-сервера. В данной статье будут рассмотрены обе опции. Перейдем к способу номер 1.
Переменная среды
Чтобы включить прокси-сервер, пользователь использовал следующую команду:
export HYDRA_PROXY=socks5://192.168.1.141:1080
А затем он ввел следующую команду и смог получить 1 корректный пароль:
hydra -l ignite -P pass.txt 192.168.1.141 ftp
Proxychains
Пользователь открыл файл /etc/proxychains4.conf и добавил в него сведения о прокси-сервере с указанием хоста и порта. Затем он с помощью proxychains осуществил атаку брутфорс.
cat /etc/proxychains4.conf
proxychains hydra -l ignite -P pass.txt 192.168.1.141 ftp
Аутентифицированный прокси
Пользователь заполучил желаемый пароль («123») для хоста. В вышеупомянутой атаке не была включена какая-либо аутентификация. Теперь он попробовал использовать прокси-сервер с включенной аутентификацией.
Proxychains
Пользователь попытался перебрать цель с помощью proxychains, но в данной операции ему было отказано, поскольку на прокси-сервере была включена аутентификация.
proxychains hydra -l ignite -p pass.txt 192.168.1.141 ftp
Он добавил имя пользователя и пароль в файл /etc/proxychains4.conf.
cat /etc/proxychains4.conf
Затем с помощью proxychains он начал атаковать, используя приведенную ниже команду.
proxychains hydra -l ignite -P pass.txt 192.168.1.141 ftp
Следовательно, после выполнения этой команды был получен корректный пароль для хоста с включенным прокси-сервером.
Переменная среды
export HYDRA_PROXY=socks5://raj:1234@192.168.1.141:1080
В данном примере «raj» – это имя пользователя, «1234» – пароль прокси-сервера; 192.168.1.141 – хост, а 1080 – порт, на котором включен прокси-сервер. После этого человек использовал команду:
hydra -l ignite -P pass.txt 192.168.1.141 ftp
Был получен корректный пароль для хоста 192.168.1.141.
Автор переведенной статьи: Divya Adwani.
Важно! Информация исключительно в учебных целях. Пожалуйста, соблюдайте законодательство и не применяйте данную информацию в незаконных целях.
Больше интересного материала на cisoclub.ru. Подписывайтесь на нас: VK | Twitter | Telegram | Дзен | Мессенджер | ICQ New | YouTube | Rutube | Now | Пульс.