В общем, решил я по своим нуждам покопаться в настройках роутера, вбиваю я всем знакомый адрес, а тут пароль спрашивают. Как быть? Ну, начал я перебирать пароли, а их количество слишком большое, что бы перебирать все и слишком маленькое, чтобы делать reset.
И я открыл google. После пары запросов я узнал о такой вещи как hydra. И тут началось: жажда открытий, поиски неизведанного и так далее.
Приступим
Первым делом мной был составлен словарь паролей, ни много, ни мало, аж на 25 комбинаций. Далее качаем либо Kali linux, либо саму Гидру (если
Либо у вас вот такое диалоговое окно:
Либо логин и пароль запрашивает форма на сайте. Мой вариант первый, поэтому начнем с него. На нашем пути к «админке» стоит страж в виде диалогового окна. Это вид авторизации http-get.
Открываем терминал. Вводим:
hydra -l admin -P myPass.txt -s 80 192.168.1.1 http-get /
Где после «-l» идет логин, после «-P» словарь, после «-s» порт. Также в нашем распоряжении есть другие флаги:
-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 для справки по модулю)
Ну вот так как-то:
Второй вариант:
Не мой, честно взят с Античата, с исправлением грамматических ошибок автора (Обилие знаков пунктуации я оставил). Интересно это можно считать переводом?
Нас встречает форма на сайте:
Такой метод авторизации — http-post-form, и тут нужно немного повозится, так как нам нужно понять, как браузер отправляет роутеру данные.
В данном случае и использовал браузер Chrome (его аналог Chromium в Kali Linux, ставится через apt-get install chromium).
Сейчас нужно сделать одну очень глупую вещь… указать неверный логин и пасс…
для чего увидим позже…
Нажимаем F12 что бы перейти в режим редактирования веб-страницы.
Переходим в Network > Включаем галочку Preserv log.
Вводим ложные логин и пароль…
Ну что за дела? Так не пойдет! Более того, после нескольких неудачных попыток входа, форма блокируется на 180 секунд.
Переходим во вкладочку HEADERS ищем строку:
Request URL:http://192.168.0.1/index.cgi
Отрезаем все до ip-адреса — /index.cgi… Поздравляю мы нашли первую часть скрипта авторизации… Идем дальше… Переходим к вкладке FORM DATA и изменяем режим отображения на VIEV SOURCE.
update_login=login&update_password=password&check_auth=y&tokenget=1300&
update_login=login&update_password=password
Бинго! Мы нашли вторую часть скрипта авторизации! Еще чуть-чуть! теперь нужно найти страницу с сообщением об ошибке… Нужно нажать на вкладку ELEMENTS.
И выбрать элемент HTML кода (CTRL+SHIFT+C) и выбрать окно с сообщением об ошибки… в данном случае — Authentication failed!
<span langkey="bad_auth" style="display: inline;">Authentication failed!</span>
Выбираем:
span langkey="bad_auth"
и немножко правим… bad_auth — все! Ключ практически у нас в кармане… Теперь мы можем полностью написать строку авторизации:
index.cgi:update_login=login&update_password=password:bad_auth
Теперь нужно подставить вместо «login» — ^USER^ и вместо «password» ^PASS^ и тогда строка будет иметь вид:
index.cgi:update_login=^USER^&update_password=^PASS^:bad_auth
Вводим команду:
hydra -l admin -P router-pass.dic -t 1 -e nsr -vV -f -s 80 192.168.0.1 http-post-form "/index.cgi:update_login=^USER^&update_password=^PASS^:bad_auth"
Обратите внимание что между частями скрипта двоеточие! это обязательно! Кстати, блокировки формы через гидру не происходило… Это очень радует.
В работоспособности второго метода мне убедиться не светит, так как я не обладатель подходящей модели роутера. Придется довериться экспрессивному человеку с Античата.
Если кому интересно, будьте добры, проверьте и отпишитесь в комментариях. Я работал с роутером TL-WR1043N/TL-WR1043ND. Роутер с Античата — D-link300NRU.
Спасибо за внимание!
Комментарии (36)
AVX
10.12.2016 20:36Спасибо! весьма интересно.
Как-то давно делал скрипт на баше, там использовался то ли curl, то ли что ещё — и похожим образом я расковырял в роутере веб-странички, нашёл что и куда нажимать, и скрипт сам лазил на роутер, проверял наличие и статус двух соединений (так мне надо было) и если что не поднято — поднимал. Правда, задачи перебора паролей не стояло. Но и чисто «хакерских» утилит тоже не применялось. Думаю, что и перебор паролей можно на баше сварганить (да-да, тут вспоминается троллейбус из буханки).
inwady
11.12.2016 01:00Статья действительно интересная. Но мне кажется, что данную задачу можно выполнить раза в 2 быстрее, если использовать Burp.
Я думаю, что инструмент для дебага, для «трудных» авторизаций. Жду продолжения. :)5ap
11.12.2016 13:51Всё таки гидра легко ставится куда угодно и бесплатна. Установив Burb бесплатную версию у меня так и не получилось от него получить хоть чтото. Везде «заплати» и нет ясного порядка в UI. То же смое может сказать пользователь метасплоита, что им в разы быстрее пользоваться чем разбираться в 4х параметрах гидры.
LifeKILLED
11.12.2016 01:09У меня как раз DIR300NRU, как раз вспоминал пароль недавно. Надо попробовать второй способ.
TimsTims
11.12.2016 01:31+3Надо просто сделать hard reset. Что там критичного то можно потерять?
mikkisse
11.12.2016 12:13+2Бывает такое, что забываешь пароль от DLS соединения. А восстановить чего через провайдера бывает значительно трудно\долго + можно остаться без интернета на время восстановления, ибо ресет уже выполнен.
jok40
17.12.2016 11:09В DIR320 есть дыра, позволяющая посмотреть текущий логин и пароль:
http://IP_роутера/model/__show_info.php?REQUIRE_FILE=/var/etc/httpasswd
Может и в DIR300 есть нечто подобное.
APXEOLOG
11.12.2016 01:36+16Я-то думал тут и правда взлом, а статься про то, как посылать HTTP запросы...
23rd
11.12.2016 02:45+3Зачем в статье скрины разрешением 500х300, которые не прочитать, ни увеличить нельзя?
sarhome
11.12.2016 11:23+2Вы когда-нибудь смотрели спектакль перевернув бинокль наоборот? Вот у меня сейчас такое же ощущение. Хорошая статья и ужасные скриншоты
Hrodvitnir
11.12.2016 11:51Скриншоты второй части — с форума. Свои сделать не мог, так как у меня модель роутера не та.
solalex
11.12.2016 11:42+4Предлагаю изменить заголовок на «Подбор пароля для роутера», т.к. слово взлом здесь неуместно.
dimm_ddr
12.12.2016 14:50Ну, технически, брутфорс — разновидность взлома. А то, что возможные пароли были известны можно списать на социальную инженерию, примененную автором к самому себе. Технически — взлом. =)
dimonw
11.12.2016 15:20-1С mikrotik такие штуки не прокатят :).
Andrusha
12.12.2016 11:37… если настраивавший не поленился написать правила fail2ban.
lola_term
12.12.2016 14:43Fail2ban конечно хороший ограничитель, но он не в стандартных пакетах для микротика, но могут воспользоваться прелестями ipv6 и генерировать на каждую попытку адрес, по стандарту можно и надо ссж/телнет/веб все порты во вне, стандартные учетку заменить на свою, ограничить вход из под определенной резервированной группы адресов привязанных по макам(можно добавить по сертам)
IT_SECURITY
13.12.2016 10:13-1У меня открытый wi-fi уже третий год. Пусть пользуется кто хочет, мне не жалко.
Vilos
13.12.2016 15:08+2Вы потом «майору» будете рассказывать кто эти «кто хочет» и как «их» найти… для него это будете именно «вы».
bopoh13
14.12.2016 16:54Как выяснилось, им проще по подъездам в поисках гипотетического барыги какого-нибудь пройтись, чем искать открытые сети. Вот ловили кого-нить с подключением к ретрансляторам?
dimm_ddr
15.12.2016 13:56Сейчас — да. Будет ли когда-нибудь по-другому — неизвестно. Но если вдруг проверять начнут, то закрыть точку можно и не успеть.
jok40
13.12.2016 15:17+1Довольно странно слышать подобное от «специалиста по информационной безопасности».
IT_SECURITY
13.12.2016 22:15Стоит 2 точки одна asus c открытой сетью но вся урезана по скорости и запросам и с другой подсеткой через ИКсу, а вторая сиско для личных нужд и закрыта от посторонних вот и все!
забыл разъяснить
Stalkeros
13.12.2016 15:09Интересно, но я немного не понял, вроде же чтобы было приглашение ввести логин\пароль, нужно быть подключенным к роутеру по WiFi или проводом, верно?
Hrodvitnir
13.12.2016 15:12Я, конечно, не уверен, поправьте, если не прав, но, возможно, сработает с любым роутером, к которому есть доступ из сети.
GH0st3rs
Очередной ман по гидре, коих и так предостаточно
CRImier
Ну лично мне было интересно прочитать =) Сегодня доставал пароли из Asus роутера, подключившись к UART и выполняя nvram show|grep http_passwd. Так достаточно легко найти много интересных вещей (включая всякие логины и пароли), ну и можно даже немного конфигурировать роутеры, если не хочется подключаться к веб-интерфейсу. Тоже где-то описано, я уверен, но узнать про альтернативные способы полезно.