Hydra brute для windows

Брутим пароли с Гидрой (hydra)

Paramtamtam · 2015.8.12 · 13 min

Статья носит носит строго познавательный характер, за применение кем либо описанных в статье методик автор ответственности не несет.

В тот момент, когда пинтест заходит в тупик — одним из крайних аргументов в тесте на проникновение является подбор паролей. Сервисы, к которым можно применить данный метод атаки — самые различные. А как следствие — различны и протоколы, и форматы обращений. Надо бы как то унифицировать инструменты для решения этой задачи — не хорошо под каждый новый случай писать новый брутер своими ручками.

И такой инструмент уже имеет место быть. Быстрый, сочный, достойный внимания — THC-Hydra. Версия 7.5 (из репозитория epel) поддерживает подбор по/для: asterisk cisco cisco-enable cvs firebird ftp ftps http[s]- http[s]--form http-proxy http-proxy-urlenum icq imap[s] irc ldap2[s] ldap3[-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 и выполнить:

Или для сборки из сорсов (актуально для linux, *bsd, solaris и т.д., а так же MacOS и мобильных системах, базирующихся на Linux):

По умолчанию бинарники гидры будут в директории /usr/local/bin/ , ежели что пропиши этот путь в

/.bash_profile , дописав его в переменной PATH .

При сборке из сорсов мы разумеется получаем самую свежую и сочную версию. В репах как правило лежит уже несколько устаревшая.

И ещё более простой вариант — использовать дистрибутив Kali Linux — там уже всё есть.

Словари

Брутить можно как с помощью подбора посимвольно, так и с помощью подготовленного словаря наиболее часто используемых паролей. Таки рекомендую первым делом попытаться подобрать пароль со словарем, и уже если и этот способ не увенчался успехом — переходить к прямому бруту посмивольно.

Где взять словари? Например, можно пошариться на этой странице или глянуть сразу здесь — имена архивов более чем говорящие. От себя лишь скажу, что использую в основном 3 словаря:

  • Очень маленький и очень популярный (топ первые 500 паролей)
  • Второй побольше — на 5000 паролей
  • Третий от Cain & Abel на

И в таком же порядке их применяю во время теста. Второй словарь — это слитые воедино несколько других не менее популярных списков (отсортированный с удалением дубликатов и комментариев) который можно получить, например, так:

В качестве бонуса можешь забрать готовые списки паролей (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 Вывод справочной информации

Гидра — фас!

Теперь давай рассмотрим пример работы на определенных целях. Все IP — вымышленные, соответствие с реальными — чистейшей воды совпадение 😉

Ахтунг! Юзай proxy/socks/vpn для безопасности собственной задницы. Так, сугубо на всякий случай

Basic Authentication

Например, сканируя диапазон адресов мы натыкаемся на некоторый интерфейс, доступный по http протоколу, но закрытый для доступа при помощи Basic Authentication (пример настройки с помощью nginx):

И у нас стоит задача вспомнить наш же забытый пароль 😉 Давай определимся с тем, какие данные у нас есть:

  • IP сервера 192.168.1.2
  • Сервис http
  • Путь, который закрыт для нас запросом пары логин:пароль /private/
  • Порт, на котором работает http сервер 80 (стандартный)

Предположим (или любым доступным путем выясним), что логин используется admin , и нам неизвестен лишь пароль. Подбирать будем с помощью заранее подготовленного словаря и с использованием модуля http-get :

Пабам — и через 1 секунду стандартный пароль admin успешно сбручен!

Другой пример — случайно находим в сети роутер MikroTik, да с открытыми наружу портами 80 (http) и 21 (ftp). Решаем сообщить его владельцу о наличии данной неприятности, но для этого нужно сперва получить доступ к этому самому микротику.

Брутить вебморду микротика можно, но проходит это значительно медленнее, чем например брутить ftp. А мы знаем, что стандартный логин на микротиках admin , и используется один пароль ко всем сервисам. Получив пароль для ftp — получим доступ ко всему остальному:

  • IP сервера 178.72.83.246
  • Сервис ftp
  • Стандартный логин admin
  • Порт, на котором работает ftp сервер 21 (стандартный)

И наблюдаем процесс подбора (

900 паролей в минуту):

Спустя каких то 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.

Приступим к запуску гидры:

И тут надо кое-что пояснить. Мы используем http-post-form потому как авторизация происходит по http методом post . После указания этого модуля идет строка /cgi-bin/luci:username=^USER^&password=^PASS^:Invalid username , у которой через двоеточие ( : ) указывается:

  1. Путь до скрипта, который обрабатывает процесс аутентификации. В нашем случае это /cgi-bin/luci
  2. Строка, которая передается методом POST, в которой логин и пароль заменены на ^USER^ и ^PASS^ соответственно. У нас это username=^USER^&password=^PASS^
  3. Строка, которая присутствует на странице при неудачной аутентификации. При её отсутствии гидра поймет что мы успешно вошли. В нашем случае это Invalid username

Подбор в моем случае идет довольно медленно (

16 паролей в минуту), и связано это в первую очередь с качеством канала и способностью железки обрабатывать запросы. Как мы видим — ей довольно тяжело это делать:

Подбор пароля по словарю ничего нам не дал, поэтому мы запустим посимвольный перебор. Длину пароля возьмем от 5 до 9 символов, латиницу в нижнем регистре с цифрами и символами [email protected]# :

И видим что процесс успешно запустился:

И понимая безысходность данного подхода останавливаем процесс, возвращаясь к перебору по большому словарю.

Кстати, для запуска hydra в фоне с продолжением её работы после того, как ты отключишься от ssh можно поступить следующим образом:

Вместо заключения

Не ленись настраивать на своих сервисах/железках защиту от брутфорса. Не используй фуфлыжные пароли. Не расценивай данный материал как призыв к каким-либо действиям. Используй для тестирования своих сервисов.

Статья THC-Hydra: очень быстрый взломщик сетевого входа в систему (часть первая)

Программа 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.

Ну т. е. правда — много.

Прибавилось ли понимания после увиденного синтаксиса? )) Не переживайте, сейчас рассмотрим опции THC-Hydra, а потом углубимся в понимание работы с этой программой.

Как использовать hydra

Пароли для Hydra

THC-Hydra поставляется без логинов/паролей. Нам нужно самим где-то их раздобыть. И вот здесь нам поможет недавняя статья «Списки слов для атаки по словарю: пароли, имена пользователей, каталоги». Изучайте её, скачивайте свои пароли.

Ещё файлы с дефолтными паролями позволяет генерировать утилита от hydra — dpl4hydra.sh. Чтобы узнать, какие устройства есть в базе, зайдите сюда.

Чтобы воспользоваться программой dpl4hydra.sh на Kali Linux, нам сначала нужно её скачать (по какой-то причине авторы Kali не включили её в стандартную установку).

По идее, должен сгенерироваться файл с дефолтными паролями устройств D-Link, но этого не происходит из-за каких-то ошибок парсинга. Пусть нас это не огорчает, ведь ссылку на статью с паролями я уже дал.

Графический интерфейс Hydra

Кстати, для пользователей Linux доступен графический интерфейс (GTK gui), для его запуска наберите

Использование Hydra в командной строке

Для использования в командной строке синтаксис следующий:

  • Для атаки одной цели или сети, вы можете использовать новый стиль ://

hydra [некоторые опции командной строки] ПРОТОКОЛ://ЦЕЛЬ:ПОРТ/ОПЦИИ

  • Старая старый синтаксис также поддерживается, а если вы хотите, то дополнительно можете задать цели из текстового файла, при этом вы *должны* использовать этот синтаксис:

hydra [некоторые опции командной строки] [-s порт] ЦЕЛЬ ПРОТОКОЛ ОПЦИИ
Через опции командной строки вы определяете, какие логины и пароли перебирать, нужно ли использовать SSL, во сколько потоков осуществлять атаку и т.д.

ПРОТОКОЛ — это протокол, который вы хотите атаковать, например, ftp, smtp, http-get или любой из доступных
ЦЕЛЬ — это целевая машина, которую вы хотите атаковать
TARGET is the target you want to attack
ОПЦИИ дополнительные значения, которые задаются для модуля ПРОТОКОЛ

Первое — выберите вашу цель

есть три способа задать цель для атаки:

  1. единичная цель в командной строке: просто введите IP или DNS адрес
  2. диапазон подсети в командной строке:
  3. список хостов в текстовом файле: один хост на строку (подробности ниже)

Второе — выберите ваш протоколов

Старайтесь избегать telnet, так как нельзя надёжно определить, соединение успешно или нет. Используйте сканер портов, чтобы увидеть, какие протоколы включены на целе.

Третье — проверьте, имеет ли модуль дополнительные параметры

hydra -U ПРОТОКОЛ
например,

Четвёртое — порт назначение

Это необязательно! Если на удалённой машине используется порт по умолчанию для этой службы, то программа hydra сама знает, какие порты используется для ПРОТОКОЛов

Если вы задали использовать SSL (опция «-S»), то по умолчанию будет использоваться обычный порт SSL.

Если вы используете нотацию «://», то вы должны использовать квадратные скобки [ ], если вы хотите цель для атак определить адресами IPv6 или CIDR («192.168.0.0/24»)

Обратите внимание, что hydra делает все атаки только на IPv4!

Если вы хотите атаковать адреса IPv6 вы должны добавить опцию «-6». Тогда все атаки будут на IPv6.

Если вы хотите задать цели через текстовый файл, вы не можете использовать обозначение ://, используйте старый стиль и задайте протокол (и опции модуля):

Логины и пароли Hydra

Есть много разных опций, как атаковать с логинами и паролями.

Опциями -l для логина и -p для пароля, вы можете сказать hydra использовать только эти логин и/или пароль для попытки.

С -L для логинов и -P для паролей вы указываете текстовые файлы с записями, например:

Дополнительно вы также можете пробовать пароли, основанные на логины, это делается опцией «-e».

Опция «-e» имеет три параметра:

  • s — пробовать логин как пароль
  • n — пробовать пустой пароль
  • r — перестановка в логине символов с зада на перёд и использование получившегося слова в качестве пароля

К примеру, если вы хотите попробовать логин в качестве пароля и пустой пароль, то вам нужно в командной строке указать «-e sn».

Для пароля кроме -p/-P есть ещё пара режимов:

Вы можете использовать текстовый файл, в котором логины и пароли разделены двоеточием, например:

Это популярный стиль записи листинга дефольтных значений аккаунта. В таком же виде генерирует файлы dpl4hydra.sh (генератор дефолтных логинов и паролей для hydra).

Использовать такой текстовый файл нужно с опцией -C, обратите внимание, что в этом режиме нельзя использовать опции -l/-L/-p/-P (хотя -e nsr можно).

И наконец, есть режим брутфорса с опцией -x (её нельзя использовать с -p/-P/-C):

Набор символов определяет ‘a’ для букв в нижнем регистре, ‘A’ — для букв в вернем регистре, ‘1’ — для цифр, а для всего другого используйте их реальные символы.

Примеры:

  • -x 1:3:a генерирует пароли длинной от 1 до 3 символов, состоящие только из букв в нижнем регистре
  • -x 2:5:/ генерирует пароли длинной от 2 до 5 символов, содержание только слэши
  • -x 5:8:A1 генерирует пароли длинной от 5 до 8 символов, с большими буквами и цифрами

Пример:

Специальные опции для модулей

Через третий параметр командной строки (ЦЕЛЬ СЛУЖБА ОПЦИИ) или после ключа -m , вы можете передать модулю одну опцию.

Многие модули используют их, а некоторые требуют их!

Чтобы получить дополнительную информацию по опции модуля, наберите

Специальные опции могут быть переданы через параметр -m или третьей опцией в командной строке или в формате сжуба://цель/опция.

Примеры (они все означают одно и то же):

Возобновление прерванной/оборванной сессии

Когда hydra прерывается командой Control-C , убивается или вылетает с ошибкой, она оставляет файл «hydra.restore» в котором содержится вся необходимая информация для восстановления сессии. Этот файл сессии пишется каждые 5 минут.

Примечание: файл hydra.restore НЕ может быть скопирован между различными платформами (например с little indian на big indian или с solaris на aix)

Как сканировать/взламывать через прокси

Переменная среды HYDRA_PROXY_HTTP определяет веб прокси (это работает только для службы http/www!)

Следующий синтаксис является валидными:

Читайте также:  Radeon 5830 драйвер windows 10
Оцените статью