Технически пароль определяется как секретная строка символов, используемая для аутентификации или получения доступа к ресурсам. Он должен храниться в тайне и быть скрыт от других лиц, не имеющих права доступа к этим ресурсам. Пароли используются в компьютерах с первых дней появления вычислительной техники. Одна из первых систем разделения времени была представлена в 1961 году. Она имела команду входа в систему, которая запрашивала пароль пользователя. После ввода команды "PASSWORD" система, по возможности, отключает механизм печати, чтобы пользователь мог спокойно набрать свой пароль.
Стойкость пароля зависит от его длины, сложности и непредсказуемости. Она измеряет эффективность противодействия его угадыванию или взлому. Слабые пароли, с другой стороны, сокращают время, необходимое для их угадывания и получения доступа к личной/корпоративной электронной почте, конфиденциальным данным, таким как финансовая информация, деловая информация, кредитные карты и т.д.
Существует множество способов сделать пароль слабым, соответствующих силе различных схем атак. Наиболее популярной из них является атака методом грубой силы. Это метод проб и ошибок - угадывание, попытка расшифровать зашифрованные данные, такие как пароль или шифр, используемый прикладной программой или "инструментом взлома".
Hydra - самый быстрый взломщик сетевых логинов, поддерживающий множество протоколов атаки. Он очень быстр и гибок, а новые модули легко добавляются. Этот инструмент позволяет исследователям и консультантам по безопасности продемонстрировать, как легко можно получить несанкционированный доступ к системе удаленно. Hydra была написана ван Хаузером, а ее дополнительная поддержка осуществляется Дэвидом Мачеяком. В последнем обновлении разработка Hydra перенесена в публичный репозиторий github по адресу: https://github.com/vanhauser-thc/thc-hydra.
Hydra протестирована на компиляцию под Linux, Windows/Cygwin, Solaris 11, FreeBSD 8.1, OpenBSD, OSX, QNX/Blackberry и доступна под GPLv3 со специальным расширением лицензии OpenSSL.
THC Hydra поддерживает такие протоколы: Cisco AAA, Cisco auth, Cisco enable, CVS, FTP, HTTP(S)-FORM-GET, HTTP(S)-FORM-POST, HTTP(S)-GET, HTTP(S)-HEAD, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MS-SQL, MySQL, NNTP, Oracle Listener, Oracle SID, PC-Anywhere, PC-NFS, POP3, PostgreSQL, RDP, Rexec, Rlogin, Rsh, SIP, SMB(NT), SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 и v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC и XMPP.
Сравнение hydra с другими средствами взлома
Наряду с hydra существует множество инструментов для взлома логинов, однако ни один из них не поддерживает огромный список протоколов и распараллеленную поддержку взлома логинов, как это делает hydra. В таблицах ниже приведены результаты сравнения возможностей, сервисов и скорости работы с medusa и ncrack.
Особенности
Функция | Hydra | Medusa | Ncrack |
Лицензия | AGPLv3 | GPLv2 | Условия GPLv2 + Nmap |
Поддержка IPv6 | Да | Нет | Нет |
Графический пользовательский интерфейс | Да | Да | Нет |
Поддержка интернационализации (RFC 4013) | Да | Нет | Нет |
Поддержка HTTP-прокси | Да | Да | Нет |
Поддержка SOCKS-прокси | Да | Нет | Нет |
Поддерживаемые протоколы | 51 | 22 | 7 |
Сравнение скоростей
Скорость (в с) | Hydra | Medusa | Ncrack |
1 задача / FTP-модуль | 11.93 | 12.97 | 18.01 |
4 задачи / FTP-модуль | 4.20 | 5.24 | 9.01 |
16 задач / модуль FTP | 2.44 | 2.71 | 12.01 |
1 задача / модуль SSH v2 | 32.56 | 33.84 | 45.02 |
4 задачи / модуль SSH v2 | 10.95 | Broken | Missed |
16 задач / модуль SSH v2 | 5.14 | Broken | Missed |
Это было краткое и простое знакомство с системой Hydra. Теперь перейдем к установке.
Установка Hydra в kali linux
Hydra предустановлена на kali linux, однако если у вас другая операционная система, вы можете скомпилировать и установить ее на свою систему. В настоящее время Hydra поддерживается на различных платформах:
- Все платформы UNIX (Linux, *bsd, Solaris и т.д.)
- MacOS (в основном клон BSD)
- Windows с Cygwin (как IPv4, так и IPv6)
- Мобильные системы на базе Linux, MacOS или QNX (например, Android, iPhone, Blackberry 10, Zaurus, iPaq).
Чтобы загрузить, сконфигурировать, скомпилировать и установить hydra, просто введите в терминале
1 2 3 4 5 | git clone https://github.com/vanhauser-thc/thc-hydra.git cd thc-hydra ./configure make make install |
Если у вас Ubuntu/Debian, то вам понадобятся некоторые библиотеки зависимостей:
1 | apt install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird-dev libncp-dev |
Если вы не нашли эти библиотеки в своем репозитории, то необходимо загрузить и установить их вручную.
Как использовать Hydra
Поздравляем, теперь вам удалось установить hydra на свою систему. На самом деле, Hydra поставляется в двух вариантах: GUI-gtk и моя любимая версия CLI. Кроме того, у Hydra есть версия с управлением CLI, которая называется "hydra-wizard". Вы будете получать пошаговое руководство, вместо того чтобы набирать все команды и аргументы вручную в терминале. Чтобы запустить hydra, наберите в терминале :
CLI
1 | hydra |
CLI-мастера конфигурации
1 | hydra-wizard |
Графический интерфейс
1 | xhydra |
После ввода 'hydra' на экране появятся команды помощи, как показано ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | hydra -h Hydra v8.6 (c)2017 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 afp 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 ncp nntp oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres rdp rexec rlogin rsh s7-300 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 oracle. Use HYDRA_PROXY_HTTP or HYDRA_PROXY - and if needed HYDRA_PROXY_AUTH - environment for a proxy setup. E.g.: % export HYDRA_PROXY=socks5://127.0.0.1:9150 (or socks4:// or connect://) % export HYDRA_PROXY_HTTP=http://proxy:8080 % export HYDRA_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 hydra -l admin -p password ftp://[192.168.0.0/24]/ hydra -L logins.txt -P pws.txt -M targets.txt ssh |
Перебор веб-логинов с помощью Hydra
Hydra поддерживает несколько сервисов брутфорсинга, как я уже упоминал, один из них используется для брутфорсинга веб-логинов, таких как форма входа в социальные сети, форма входа в банковскую систему, логин вашего маршрутизатора и т.д. Это "http[s]-{get|post}-form", который будет обрабатывать данный запрос. В этом руководстве я покажу вам, как перебрать уязвимые веб-логины. Прежде чем запускать hydra, необходимо знать некоторые необходимые аргументы, приведенные ниже:
- Цель : http://testasp.vulnweb.com/Login.asp?RetURL=%2FDefault%2Easp%3F
- Имя пользователя: admin (если вы не уверены, проверьте это перебором)
- Список паролей : "Расположение списка файлов словаря, содержащего возможные пароли".
- Параметры формы : "В общем случае для получения формы параметров запроса следует использовать tamper data или proxy. Но здесь я использую iceweasel, основанный на firefox, network developer toolbar."
Сервисный модуль: http-post-form
Справка по модулю http-post-form:
Модуль http-post-form требует страницу и параметры для веб-формы. По умолчанию этот модуль настроен на выполнение не более 5 перенаправлений подряд. Он всегда собирает новый cookie с того же URL без переменных Параметры принимают три значения, разделенные ":", плюс необязательные значения. (Примечание: если в строке параметров в качестве значения требуется двоеточие, то его следует экранировать с помощью "\:", но не следует экранировать "\" с помощью "\\\").
Синтаксис:
1 | [url]:[параметры формы]:[строка условия][:(необязательно)[:(необязательно)] |
- Первое - это страница на сервере, на которую нужно выполнить GET или POST (URL).
- Второе - переменные POST/GET (берутся из браузера, прокси-сервера и т.д. с заменой имен пользователей и паролей на "^USER^" и "^PASS^" (FORM PARAMETERS)).
- Третья строка - это строка проверки на *неправильный* вход (по умолчанию) Перед строкой проверки недействительного входа может стоять "F=", перед строкой проверки успешного входа - "S=".
Именно здесь большинство людей ошибаются. Вы должны проверить в webapp, как выглядит строка с неудачным условием, и поместить ее в этот параметр!
Следующие параметры являются необязательными:
C=/page/uri для определения другой страницы для сбора начальных cookies с (h|H)=My-Hdr\: foo для отправки определенного пользователем HTTP-заголовка с каждым запросом ^USER^ и ^PASS^ также могут быть помещены в эти заголовки!
'h' добавит пользовательский заголовок в конец запроса, независимо от того, отправляется он уже Гидрой или нет. 'H' заменит значение этого заголовка, если оно существует, на значение, заданное пользователем, или добавит заголовок в конец.
Обратите внимание, что если вы собираетесь ставить в заголовках двоеточия (:), то их следует экранировать обратным слешем (\). Все двоеточия, не являющиеся разделителями опций, должны быть экранированы (см. примеры выше и ниже). Вы можете указать заголовок без экранирования двоеточий, но в этом случае вы не сможете поместить двоеточия в само значение заголовка, поскольку они будут интерпретированы hydra как разделители опций.
Получение параметров поста с помощью браузера, iceweasel/firefox
В браузере Firefox нажмите клавиши 'CTRL + SHIFT + Q'. Затем откройте страницу входа в систему http://testasp.vulnweb.com/Login.asp?RetURL=%2FDefault%2Easp%3F, и вы заметите, что на вкладке "Разработчик сети" появился текст. В нем говорится о том, какие файлы нам передаются. Видим, что все они передаются методом GET, так как мы еще не отправляли никаких данных методом POST.
Чтобы получить параметры пост-формы, введите в форму имя пользователя и пароль. На вкладке "Разработчик сети" вы заметите новый метод POST. Дважды щелкните на этой строке, на вкладке "Заголовки" нажмите кнопку "Изменить и отправить" справа. В теле запроса скопируйте последнюю строку, например "tfUName=asu&tfUPass=raimu". "tfUName" и "tfUPass" - это необходимые нам параметры. Как показано ниже:
В Kali Linux существует множество списков слов, выберите подходящий или просто воспользуйтесь файлом rockyou.txt, расположенным в каталоге /usr/share/wordlists/, как показано ниже:
Итак, теперь мы получили все необходимые аргументы и готовы запустить hydra. Вот шаблон команды:
1 | hydra -l <имя пользователя> -P <список паролей> <имя целевого хоста> <модуль сервиса> <параметры post-запроса> |
Наконец, на основе собранной информации наши команды должны выглядеть следующим образом:
1 | hydra -l admin -P /usr/share/wordlists/rockyou.txt testasp.vulnweb.com http-post-form "/Login.asp?RetURL=%2FDefault%2Easp%3F:tfUName=^USER^&tfUPass=^PASS^:S=logout" -vV -f |
Давайте разберем команды:
- l <имя пользователя> : это слово, содержащее имя пользователя, используйте -L <FILE> для обращения к списку возможных имен пользователей в файле.
- P <FILE> : представляет собой список возможных паролей в файле, используйте -p <password> для буквального использования одного слова пароля вместо его угадывания.
testapp.vunlwebapp.com : является именем хоста или целью. - http-post-form : это сервисный модуль, который мы используем
- "/Login.asp?RetURL=%2FDefault%2Easp%3F:tfUName=^USER^&tfUPass=^PASS^:S=logout" = 3 необходимых параметра, синтаксис следующий:
{ URL страницы}:{Параметры формы post body запроса}:S={Найти все, что находится на странице после успешного входа в систему} - v = режим Verbose
- V = показать login:pass для каждой попытки
- f = Завершить работу программы, если найдена пара логин:пароль
Теперь позволим hydra попытаться взломать пароль, на это нужно время, так как это атака по словарю. Как только вам удалось найти пару login:password, hydra немедленно завершит работу и покажет валидный пароль.
Hydra может многое, так как в этом руководстве мы только научились перебирать логины в Интернете с помощью hydra, мы изучили только один протокол - протокол http-post-form. Мы также можем использовать hydra против других протоколов, таких как ssh, ftp, telnet, VNC, proxy и т.д.