среда, 7 апреля 2010 г.

Hydra: анализ стойкости паролей на примере роутеров D-Link DI-604UP, DIR-320

Намедни попалась утилита бесплатная кросплатформенная Hydra, которая умеет перебирать логин/пароль для доступа к разного рода сервисам.
Сейчас рассмотрим подбор паролей для вебформ, в частности для доступа в админку роутеров через web-интерфейс.

Первый случай (попроще).
1. Имеем в распоряжении роутер DI-604UP (версия прошивки 1.03)
Допустим админка роутера висит по адресу  http://192.168.10.1/
Чтобы понять какой сервис (http-get, http-post, http-post-form, и т. п.) использует роутер при аутентификации воспользуемся бесплатным парсером заголовков HTTP - LiveHTTPHeader (аддон для браузера Mozilla Firefox). Утилита проста в использовании и я не буду останавливаться на том как ей пользоваться.
В случае с DI-604UP будет использоваться обычный GET-запрос на страницу "/". Да, да всё верно, страничка авторизации имеет адрес "/" относительно ip-адреса роутера.
Создаем простенький bat-файл для запуска hydra чтобы не замудряться каждый раз с командной строкой.

@echo off
hydra.exe -s 80 -t 1 -vV -e ns -f -l admin -p SgG31seHrt 192.168.10.1 http-get /
pause

Итак, разберемся с параметрами.
-s 80 - порт, по которому будем соединятся (в данном случае HTTP(80))
-t 1 - количество одновременных процессов. В данном случае это будет означать последовательный перебор паролей, т к роутер не поддерживает многопоточный перебор через HTTP. Не исключено что многопоточность доступна через telnet, но из соображений безопасности этот протокол на роутерах обычно выключен.
-vV - verbose mode. Будет выводится полная информация о всех действиях утилиты
-e ns - проверять пароли совпадающие с логином а так же пустые пароли
-f - остановит выполнение программы как только найдет первую подходящую пару логин/пароль, без ключа будет продолжать работу пока не дойдет до конца словаря.
-l admin - проверяем конкретный логин "admin", если нужно перебирать логины по словарю то нужно задавать -L login.txt
-p SgG31seHrt - проверяем конкретный пароль "SgG31seHrt", если нужно перебирать пароли по словарю, то нужно задавать -P passwords.txt
http-get - указываем сервис, в данном случае это обычный GET-запрос
/ - указываем страницу на которой происходит авторизация, включая все параметры, если таковые имеются. Эту информацию как раз и помогает получить аддон LiveHTTPHeader

В случае успеха получим примерно следующий вывод программы:

Hydra v5.4 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.
Hydra (http://www.thc.org) starting at 2010-04-07 12:45:02
[DATA] 1 tasks, 1 servers, 3 login tries (l:1/p:3), ~3 tries per task
[DATA] attacking service http-get on port 80
[VERBOSE] Resolving addresses ... done
[ATTEMPT] target 192.168.10.1 - login "admin" - pass "" - child 0 - 1 of 3
[ATTEMPT] target 192.168.10.1 - login "admin" - pass "admin" - child 0 - 2 of 3
[STATUS] attack finished for 192.168.10.1 (waiting for childs to finish)
[ATTEMPT] target 192.168.10.1 - login "admin" - pass "SgG31seHrt" - child 0 - 3 of 3
[80][www] host: 192.168.10.1   login: admin   password: SgG31seHrt  <----успех :)
Hydra (http://www.thc.org) finished at 2010-04-07 12:45:02

Если программа по какой-то причине будет прервана, то создается файл hydra.restore, который позволит запустить процесс подбора не с самого начала, а с места остановки программы.
Чтобы запустить прерванный процесс достаточно ввести:
hydra.exe -R

2. Рассмотрим теперь пример роутера DIR-320. (русифицированная прошивка 1.10)
Допустим админка роутера висит по адресу  http://192.168.0.1/login.php
В данном случае запрос будет посложнее. С помощью LiveHTTPHeader выясняем какие параметры передаются в запросе и сам тип запроса. Забегая вперед отмечу чтобы hydra поняла в какое место подставлять логин и пароль существуют параметры ^USER^ и ^PASS^.
После проведения анализа узнаем что используется запрос POST с использование формы.
В итоге для перебора паролей из файла 1.txt для логина "admin" получаем вот такой скрипт:

@echo off
hydra.exe -s 80 -t 1 -vV -e ns -f -l admin -P 1.txt 192.168.0.1 http-post-form "/login.php:ACTION_POST=LOGIN&LOGIN_USER=^USER^&LOGIN_PASSWD=^PASS^&login=+%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%D1%81%D1%8F+"
pause

Общий смысл запроса "<путь к странице скрипта>:<параметры скрипта>"
Если всё задано правильно, то увидим как запустится процесс подбора, если это не произошло - ищем ошибки в написании параметров.
Сегодня была рассмотрена лишь одно из применений этой замечательной утилиты. Так же мы не касались вопроса составления словарей.

PS По поводу антивирусов.
В частности Касперский определяет hydra как вредоносную программу, так и должно быть.
Никакого трояна или чегото подобного в программе нет. Просто на время тестов отключаем антивирус и работаем. :)

Комментариев нет: