Брутфорс гидра для windows

Инструменты Kali Linux

Список инструментов для тестирования на проникновение и их описание

Hydra

Описание Hydra

Программа hydra поддерживает огромное количество служб, благодаря своей быстроте и надёжности она завоевала заслуженную признательность среди тестеров на проникновение.

Программа прекрасно компилируется и работает на Linux, Windows/Cygwin, Solaris, FreeBSD/OpenBSD, QNX (Blackberry 10) и OSX.

В настоящее время поддерживаются следующие протоколы: Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST, 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, RTSP, 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.

Автор: Van Hauser, Roland Kessler

Справка по Hydra

Руководство по Hydra

Поддерживаемые службы (это же название модулей):

  • asterisk
  • afp
  • cisco
  • cisco-enable
  • cvs
  • firebird
  • ftp
  • ftps
  • http-head
  • https-head
  • http-get
  • https-get
  • http-post
  • https-post
  • http-get-form
  • https-get-form
  • http-post-form
  • https-post-form
  • http-proxy
  • http-proxy-urlenum
  • icq
  • imap
  • imaps
  • irc
  • ldap2
  • ldap2s
  • ldap3
  • ldap3s
  • ldap3-crammd5
  • ldap3-crammd5s
  • ldap3-digestmd5
  • ldap3-digestmd5s
  • mssql
  • mysql
  • nntp
  • oracle-listener
  • oracle-sid
  • pcanywhere
  • pcnfs
  • pop3
  • pop3s
  • postgres
  • rdp
  • redis
  • rexec
  • rlogin
  • rsh
  • rtsp
  • s7-300
  • sip
  • smb
  • smtp
  • smtps
  • smtp-enum
  • snmp
  • socks5
  • ssh
  • sshkey
  • svn
  • teamspeak
  • telnet
  • telnets
  • vmauthd
  • vnc
  • xmpp

Дополнительная информация об опции -x

Сгенерировать пароли длинной от 3 до 5, состоящие из букв нижнего регистра:

Сгенерировать пароли длинной от 5 до 8, состоящие из букв верхнего регистра и цифр:

Сгенерировать пароли длинной от 1 до 3 символов, содержащих только слэши:

Сгенерировать пароли длинной 5 символов, которые состоят только из /%,.-

Информация о дополнительных параметрах для модулей Hydra, в которых они требуются

cisco

Модуль cisco опционально принимает ключевое слово ENTER, затем он отправляет начальное ENTER при подключении к службе.

cisco-enable

Модуль cisco-enable опционально принимает пароль входа для устройства cisco.

Примечание: если используется AAA аутентификация, используйте опцию -l для имени пользователя и опциональный параметр для пароля пользователя.

cvs

Модуль cvs опционально принимает имя репозитория для атаки, по умолчанию это «/root»

firebird

Модуль firebird опционально принимает имя базы данных для атаки, по умолчанию это «C:\Program Files\Firebird\Firebird_1_5\security.fdb»

http-get, https-get, http-post, https-post

Модули требует страницу для аутентификации.

Например: «/secret» или «http://bla.com/foo/bar» или «https://test.com:8080/members»

http-get-form, https-get-form, http-post-form, https-post-form

Модули требует страницу и параметры веб-формы.

По умолчанию этот модуль настроен следовать максимум пяти редиректам подряд. Он каждый раз собирает новое куки с того же URL без переменных. Параметр принимает три разделённых «:» значения, плюс опциональные значения.

(Примечание: если вам нужно двоеточие в строке опций в качестве значения, экранируйте его с «\:», но не экранируйте «\» с «\\».)

  • Первое — это страница на сервере (URL) на которую отправляются данные методом GET или POST.
  • Второе — это переменные POST/GET получаемые либо из браузера, либо прокси и т. д. Имена пользователей и пароли будут подставлены вместо заполнителей «^USER^» и «^PASS^» (ПАРАМЕТРЫ ФОРМЫ).
  • Третье — это строка, которая проверяет неверный вход (по умолчанию). Перед условием неверного входа должна стоять «F=», перед условиям успешного входа должна стоять «S=». Это то место, где больше всего людей ошибаются. Вы должны проверить веб-приложение, на что похожа строка, которую он выдаёт при неуспешном входе и указать её в этом параметре!

Следующие параметры опциональны:

задаёт другую страницу с которой собрать начальные кукиз.

для отправки с каждым запросом заданного пользователем HTTP заголовка

^USER^ и ^PASS^ также могут быть размещены в этих заголовках!

Примечание: ‘h‘ добавит определённый пользователем заголовок в конец, независимо от того, отправила ли уже Hydra заголовок или нет.

H‘ заменит значение этого заголовка, если оно существует, тем, которое указал пользователь или добавит заголовок в конец.

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

Вы можете задать заголовок без экранирования двоеточий, но в этом случае вы не сможете разместить двоеточия в само значения заголовка, поскольку они будут интерпретироваться в hydra как разделители опций.

http-proxy

Модуль http-proxy опционально принимает страницу на которой аутентификация.

По умолчанию это http://www.microsoft.com/)

Поддерживаются и согласовываются автоматически Basic, DIGEST-MD5 и NTLM.

http-proxy-urlenum

Модуль http-proxy-urlenum только использует опцию -L, а не опции -x или -p/-P. После опции -L должно идти имя файла с URL списком, которые нужно пробовать как прокси. Учётные данные прокси могут быть указаны как опциональный параметр, например:

Читайте также:  Отключение требования пароля windows 10

imap, imaps

Модуль imap опционально принимает тип аутентификации: CLEAR or APOP (default), LOGIN, PLAIN, CRAM-MD5, CRAM-SHA1, CRAM-SHA256, DIGEST-MD5, NTLM

Дополнительно опцией TLS может быть принудительно выбрано TLS шифрование через STARTTLS.

irc

Модуль irc опционально принимает общий пароль сервера, если сервер его требует, и если ничего не указано, то будет использоваться пароль из -p/-P.

ldap2, ldap2s, ldap3, ldap3s, ldap3-crammd5, ldap3-crammd5s, ldap3-digestmd5, ldap3-digestmd5s

Модули опционально принимают DN (в зависимости от выбранного метода.

Примечание: вы также можете указать DN как логин, когда используется Простой метод аутентификации).

Ключевое слово «^USER^» заменяется логином.

Специальные указания для Простого метода имеют 3 режима работы: анонимный (без пользователя и пароля), не прошедший проверку подлинности (с пользователем, но без пароля), с проверкой подлинности юзер/пароль (пользователей и пароль).

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

Подсказка: для аутентификации в windows active directy ldap это обычно cn=^USER^,cn=users,dc=foo,dc=bar,dc=com for domain foo.bar.com

mysql

Модуль mysql is опционально принимает базу данных для атаки, по умолчанию это «mysql»

nntp

Модуль nntp опционально принимает один тип аутентификации из: USER (по умолчанию), LOGIN, PLAIN, CRAM-MD5, DIGEST-MD5, NTLM.

oracle-listener

Модуль oracle-listener / tns опционально принимает режим, в котором сохранён пароль, это может быть PLAIN (по умолчанию) или CLEAR.

pop3, pop3s

Модуль pop3 опционально принимает один из типов аутентификации: CLEAR (по умолчанию), LOGIN, PLAIN, CRAM-MD5, CRAM-SHA1, CRAM-SHA256, DIGEST-MD5, NTLM.

Дополнительно опцией TLS можно выбрать принудительное TLS шифрование через STLS.

postgres

Модуль postgres опционально принимает имя базы данных для атаки, по умолчанию это «template1».

rdp

Модуль rdp опционально принимает доменное имя Windows.

s7-300

Модуль S7-300 специально для Siemens PLC. Ему нужен только пароль или отсутствие аутентификации, поэтому просто используйте опцию -p или -P.

smb

По умолчанию модуль smb настроен для тестирования и локального и доменного аккаунта, используя простой пароль с диалектом NTLM.

Примечание: вы можете выбрать тип группы используя ключевое слово LOCAL или DOMAIN или other_domain: для указания доверенного домена.

Вы можете задать тип пароля используя ключевое слово HASH или MACHINE (для использования машинное имя NetBIOS в качестве пароля).

Вы можете установить диалект используя ключевое слово NTLMV2, NTLM, LMV2, LM.

smtp, smtps

Модуль smtp опционально принимает тип аутентификации из: LOGIN (по умолчанию), PLAIN, CRAM-MD5, DIGEST-MD5, NTLM.

Дополнительно опцией TLS может быть принудительно выбрано TLS шифрование через STARTTLS.

smtp-enum

Модуль smtp-enum опционально принимает SMTP команду из: VRFY (по умолчанию), EXPN, RCPT (который подключится используя аккаунт «root»)

Параметр входа используются как параметры имени и пользователя и пароля в качестве доменного имени.

Например, для тестирования, существует ли john@localhost на 192.168.0.1:

snmp

Модуль snmp опционально принимает следующие параметры:

Для комбинирования опций используйте двоеточие («:»), например:

sshkey

Модуль sshkey не обеспечивает дополнительных опций, хотя меняется значение опций -p и -P:

  • -p ожидает путь до незашифрованного приватного ключа в формате PEM.
  • -P ожидает имя файла, содержащего список путей до некоторых незашифрованных ключей в формате PEM.

svn

Модуль svn опционально принимает имя репозитория для атаки, по умолчанию это «trunk»

telnet, telnets

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

xmpp

Модуль xmpp опционально принимает тип аутентификации из: LOGIN (default), PLAIN, CRAM-MD5, DIGEST-MD5, SCRAM-SHA1.

Помните, что переданная цель должна быть fdqn, так как значение используется в запросе Jabber init, пример: hermes.jabber.org

Примеры запуска Hydra

Попытаться войти как пользователь root (-l root) используя список паролей (-P /usr/share/wordlists/metasploit/unix_passwords.txt) в 6 потоков (-t 6) на данный SSH сервер (ssh://192.168.1.123):

Попытаться войти как пользователь user (-l user) используя список паролей (-P passlist.txt) на данный FTP сервер (ftp://192.168.0.1):

Попытаться войти на SSH сервера (ssh) из списка (-M targets.txt) используя список пользователей (-L logins.txt) и список паролей (-P pws.txt):

Попробовать зайти на FTP сервера в указанной подсети (ftp://[192.168.0.0/24]/) с именем пользователя admin (-l admin) и паролем password (-p password):

Зайти на почтовый сервер (imap://192.168.0.1/), использующий протокол IMAP с именам пользователей из списка (-L userlist.txt) и паролем defaultpw (-p defaultpw), в качестве типа аутентификации выбран PLAIN:

Зайти на почтовый сервер с протоколом POP3S, размещённом указанном на IPv6 (-6) адресе 2001:db8::1, на порту 143 со списком учётных данных в формате «логин:пароль» размещённом в файле defaults.txt (-C defaults.txt) с использованием типа аутентификации DIGEST-MD5 и принудительным TLS шифрованием через STLS:

Установка Hydra

Программа предустановлена в Kali Linux.

Установка в BlackArch

Программа предустановлена в BlackArch.

Установка в Debian, Ubuntu, Linux Mint

Информация об установке в другие операционные системы будет добавлена позже.

Читайте также:  Windows 10 браузер удаленных файлов

xHydra (графический интерфейс для THC-Hydra)

Для запуска графического интерфейса xHydra выполните команду:

Программы, входящие в пакет THC-Hydra

В пакет Hydra входит программа pw-inspector — инструмент для уменьшения списка паролей за счёт отфильтровывания их по заданным параметрам.

Брутим пароли с Гидрой (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 можно поступить следующим образом:

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

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

Читайте также:  Установить dolby advanced audio для windows 10
Оцените статью