- Взлом «админки» роутера
- Приступим
- Статья Router Scan by Stas’M на Kali Linux (взлом роутеров и Wi-Fi в промышленных масштабах)
- Kali linux взлом админки роутера
- Pirnazar
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Оглавление
- Взлом страницы входа роутера
- Брут-форс веб-форм роутеров
- Брут-форс роутеров
- Случайные величины в форме входа
- Оптимизация брут-форса путём атаки сразу на несколько целей
- Заключение
- Приступим
Взлом «админки» роутера
*Здесь могло быть предупреждение о том, что не нужно пользоваться данной программой в преступных целях, но hydra это пишет перед каждым сеансом взлома*
В общем, решил я по своим нуждам покопаться в настройках роутера, вбиваю я всем знакомый адрес, а тут пароль спрашивают. Как быть? Ну, начал я перебирать пароли, а их количество слишком большое, что бы перебирать все и слишком маленькое, чтобы делать reset.
И я открыл google. После пары запросов я узнал о такой вещи как hydra. И тут началось: жажда открытий, поиски неизведанного и так далее.
Приступим
Первым делом мной был составлен словарь паролей, ни много, ни мало, аж на 25 комбинаций. Далее качаем либо Kali linux, либо саму Гидру (если вы пингвин у вас линукс). Теперь у нас два варианта (ну как два, я нашел информацию по двум вариантам).
Либо у вас вот такое диалоговое окно:
Либо логин и пароль запрашивает форма на сайте. Мой вариант первый, поэтому начнем с него. На нашем пути к «админке» стоит страж в виде диалогового окна. Это вид авторизации 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 ищем строку:
Отрезаем все до ip-адреса — /index.cgi… Поздравляю мы нашли первую часть скрипта авторизации… Идем дальше… Переходим к вкладке FORM DATA и изменяем режим отображения на VIEV SOURCE.
Бинго! Мы нашли вторую часть скрипта авторизации! Еще чуть-чуть! теперь нужно найти страницу с сообщением об ошибке… Нужно нажать на вкладку ELEMENTS.
И выбрать элемент HTML кода (CTRL+SHIFT+C) и выбрать окно с сообщением об ошибки… в данном случае — Authentication failed!
и немножко правим… bad_auth — все! Ключ практически у нас в кармане… Теперь мы можем полностью написать строку авторизации:
Теперь нужно подставить вместо «login» — ^USER^ и вместо «password» ^PASS^ и тогда строка будет иметь вид:
Обратите внимание что между частями скрипта двоеточие! это обязательно! Кстати, блокировки формы через гидру не происходило… Это очень радует.
В работоспособности второго метода мне убедиться не светит, так как я не обладатель подходящей модели роутера. Придется довериться экспрессивному человеку с Античата.
Если кому интересно, будьте добры, проверьте и отпишитесь в комментариях. Я работал с роутером TL-WR1043N/TL-WR1043ND. Роутер с Античата — D-link300NRU.
Источник
Статья Router Scan by Stas’M на Kali Linux (взлом роутеров и Wi-Fi в промышленных масштабах)
Между прочим, этот самый Router Scan от Stas’M — потрясающая штука! Мне же больше всего нравится в этой программе:
- сканирование, при котором показываются как роутеры, так и другие аппаратно-программные элементы (камеры, серверы и пр.)
- перебор типичный паролей для найденных роутеров
- использование эксплойтов для ряда роутеров
- если получилось подобрать пароль или сработал эксплойт, то парсится вся информация, которую удалось достать. А это, обычно, логин-пароль, пароль от Wi-Fi, данные локальной сети и т. д.
Программа уникальна тем, что, в лучших традициях графических интерфейсов, нужно нажать одну кнопку и она всё сделает сама. Никаких знаний не нужно.
Программа мне понравилась до такой степени, что я стал искать альтернативы для Linux. Альтернатив я не нашёл.
Но главная идея этой программы — сканировать сеть и искать роутеры с дефолтными паролями или со слабыми прошивками — мне показалась настолько потрясающей, что захотелось сделать что-то подобное для Linux. Это задача средней сложности, т. е. вполне достижимая. Благо большинство модулей уже есть готовые: nmap (для сканирования портов) + curl (для аутентификации и применения эксплойтов) + grep (для парсинга страниц аутентификации (при определении модели роутера) и парсинга паролей и прочих полезных вещей при удачном подборе пароля/применении эксплойта).
У меня даже получилось сделать рабочий концепт, который насобирал для меня за день более 1000 паролей Wi-Fi. Концепт получился жутко медленным: сканер написан на PHP, причём написан без каких либо оптимизаций — всё делается в один поток, да при этом сканер реализован на попытке установить сокетное соединение. Т.е. если соединение происходит — значит начинает пробовать стандартные пароли и вынимать информацию из роутера в случае успеха. Если соединение не происходит — то программа ждёт, пока пройдёт время по таймауту. Понятно, что чаще соединение не происходит и, как следствие, почти всё время программа ждём окончания таймаутов. Всё это можно ускорить и оптимизировать, добавить новые модели роутеров. В общем, если за лето будет достаточно времени, чтобы доделать (хоть на базе nmap, хоть на базе PHP) до уровня «не стыдно показать исходный код», то обязательно поделюсь своими наработками. Благо что алгоритмы эксплойтов, которые применяются в сканере роутеров от Stas’M, доступны в виде исходных текстов и их вполне можно переписать под curl.
Вернёмся к Router Scan от Stas’M. Он шикарный! С его помощью вы сами можете насобирать уйму паролей от роутеров, от сетей Wi-Fi и узнать много нового о сетях и об обитающих там устройствах.
Если вы пользователь Windows, то для вас всё совсем просто — скачиваете, запускаете, вводите диапазон адресов и ждёте окончания сканирования.
Для пользователей Linux также возможен запуск программы Router Scan от Stas’M под Wine. Я покажу как это сделать на примере Kali Linux.
Установка Wine в Kali Linux
Внимание, если у вас Kali 2.0, то перейдите к инструкции “Установка Wine в Kali Linux 2.0“.
Если посмотреть информацию о пакете Wine в Kali Linux, то там будет указано, что пакет уже установлен. Если попытаться его запустить, то выясниться, что это всего-навсего заглушка, которая и рассказывает как провести установку. Вся установка делается тремя командами:
Далее скачиваете Router Scan от Stas M (Router Scan v2.60 Beta by Stas’M (build 04.02.2019) — Программы — Каталог файлов — Stas’M Corp.), распаковываете (в любое место), кликаете правой кнопкой по файлу RouterScan.exe, в контекстном меню выбираете «Открыть с помощью Wine…», а дальше всё как на Windows.
Вот пример работы Router Scan от Stas’M в Linux (сканирую диапазоны адресов моего родного города Муром):
Только хорошие результаты:
Если кто-то не до конца уловил принципы работы программы:
- программе не нужен Wi-Fi приёмник или что-то ещё — она работает по проводному соединению;
- чтобы попытаться взломать соседский Wi-Fi (а не на другом конце света), то нужно знать IP соседа или, хотя бы, диапазон IP интернет-провайдера соседа. Можно воспользоваться вот этим сервисом, чтобы узнать диапазоны принадлежащих провайдерам IP, либо диапазоны IP населённых пунктов.
Если ещё кому-то понадобиться отфильтровать диапазоны IP с сайта ipgeobase.ru, то можно сделать так:
Где вместо ‘URL‘ введите адрес страницы на ipgeobase.ru, которую нужно пропарсить.
VALERY
23.07.2015 в 16:07
Вообще штука офигенная
ANGEL
30.08.2015 в 20:35
подскажите как установить на амд х64?
WEBWARE TEAM
31.08.2015 в 06:14
Разницы нет – точно также.
MR_YODA
31.08.2015 в 11:34
Большое спасибо за сайт! Все статьи очень интересные и познавательные. AdBlock выключил.
А программа шикарная конечно.
WEBWARE TEAM
31.08.2015 в 15:40
Спасибо, что не прошли мимо моей просьбы.
MOOGE
06.09.2015 в 19:45
В контекстном меню не появляется «Открыть с помощью Wine…». Что можете посоветовать? Все команды выполнил по инструкции.
WEBWARE TEAM
07.09.2015 в 06:29
Если у вас в контекстном меню не появился Wine, то сделайте так:
нажмите правой кнопкой на приложение, которое хотите запустить
выберите «Открыть в другой программе»
там где строка для ввода введите wine и нажмите кнопку «Установить по умолчанию», нажмите ОК. Теперь все .exe файлы будут открываться двойным кликом.
Про Wine в Kali 2.0 написал отдельно: Установка Wine в Kali Linux 2.0
MIAL
10.11.2015 в 07:21
Я заглянул в окно дома соседа и увидел у него большой плазменной телевизоре, ещё на столе я увидел телефон, а в комнате его жену и двух детей.
Здравствуйте, скажите, а что делать дальше с полученной информацией?
Аналогия понятна?
Мой совет лично вам: ничего с ней не делать.
LAN
13.01.2016 в 08:01
Я тоже люблю С.Моэма…
Как прочекать кучу найденных IP камер на стандартные лог/пасы?
LAN
13.01.2016 в 07:50
Афтор сканера не планиурет добавлять брут камер по словарю. Можно ли самому запилить брут найденых в программе камер по внутреннему словарю. Лень прост поштучно вбивать каждый ip в Кали.
ИВАН
02.10.2016 в 11:12
Ребят, какой пароль на архив?
NOWASIVEM
06.12.2017 в 14:34
Запускаю RouterScan в Vine на WifiSlax, всё работает кроме вкладки по работе с Wifi в программе RouterScan. Помогите, что можно сделать, что бы работал Wifi в программе RouterScan под Vine.
ПЕТРУЧО
17.12.2017 в 06:05
“Афтор сканера не планиурет добавлять брут камер по словарю. Можно ли самому запилить брут найденых в программе камер по внутреннему словарю. Лень прост поштучно вбивать каждый ip в Кали.”
а ты 80й порт сканишь на камеры ? там вроде больше по сплойтам , а словать , так там файлик в роутерскане есть .
ЗЫ пароль на архив Stas’M Corp. емпни именно с точкой на конце
Источник
Kali linux взлом админки роутера
Pirnazar
Well-known member
Между прочим, этот самый Router Scan от Stas’M — потрясающая штука! Мне же больше всего нравится в этой программе:
- сканирование, при котором показываются как роутеры, так и другие аппаратно-программные элементы (камеры, серверы и пр.)
- перебор типичный паролей для найденных роутеров
- использование эксплойтов для ряда роутеров
- если получилось подобрать пароль или сработал эксплойт, то парсится вся информация, которую удалось достать. А это, обычно, логин-пароль, пароль от Wi-Fi, данные локальной сети и т. д.
Программа уникальна тем, что, в лучших традициях графических интерфейсов, нужно нажать одну кнопку и она всё сделает сама. Никаких знаний не нужно.
Программа мне понравилась до такой степени, что я стал искать альтернативы для Linux. Альтернатив я не нашёл.
Но главная идея этой программы — сканировать сеть и искать роутеры с дефолтными паролями или со слабыми прошивками — мне показалась настолько потрясающей, что захотелось сделать что-то подобное для Linux. Это задача средней сложности, т. е. вполне достижимая. Благо большинство модулей уже есть готовые: nmap (для сканирования портов) + curl (для аутентификации и применения эксплойтов) + grep (для парсинга страниц аутентификации (при определении модели роутера) и парсинга паролей и прочих полезных вещей при удачном подборе пароля/применении эксплойта).
У меня даже получилось сделать рабочий концепт, который насобирал для меня за день более 1000 паролей Wi-Fi. Концепт получился жутко медленным: сканер написан на PHP, причём написан без каких либо оптимизаций — всё делается в один поток, да при этом сканер реализован на попытке установить сокетное соединение. Т.е. если соединение происходит — значит начинает пробовать стандартные пароли и вынимать информацию из роутера в случае успеха. Если соединение не происходит — то программа ждёт, пока пройдёт время по таймауту. Понятно, что чаще соединение не происходит и, как следствие, почти всё время программа ждём окончания таймаутов. Всё это можно ускорить и оптимизировать, добавить новые модели роутеров. В общем, если за лето будет достаточно времени, чтобы доделать (хоть на базе nmap, хоть на базе PHP) до уровня «не стыдно показать исходный код», то обязательно поделюсь своими наработками. Благо что алгоритмы эксплойтов, которые применяются в сканере роутеров от Stas’M, доступны в виде исходных текстов и их вполне можно переписать под curl.
Вернёмся к Router Scan от Stas’M. Он шикарный! С его помощью вы сами можете насобирать уйму паролей от роутеров, от сетей Wi-Fi и узнать много нового о сетях и об обитающих там устройствах.
Если вы пользователь Windows, то для вас всё совсем просто — скачиваете, запускаете, вводите диапазон адресов и ждёте окончания сканирования.
Для пользователей Linux также возможен запуск программы Router Scan от Stas’M под Wine. Я покажу как это сделать на примере Kali Linux.
Установка Wine в Kali Linux
Внимание, если у вас Kali 2.0, то перейдите к инструкции “Установка Wine в Kali Linux 2.0“.
Если посмотреть информацию о пакете Wine в Kali Linux, то там будет указано, что пакет уже установлен. Если попытаться его запустить, то выясниться, что это всего-навсего заглушка, которая и рассказывает как провести установку. Вся установка делается тремя командами:
), распаковываете (в любое место), кликаете правой кнопкой по файлу RouterScan.exe, в контекстном меню выбираете «Открыть с помощью Wine…», а дальше всё как на Windows.
Вот пример работы Router Scan от Stas’M в Linux (сканирую диапазоны адресов моего родного города Муром):
Только хорошие результаты:
Если кто-то не до конца уловил принципы работы программы:
- программе не нужен Wi-Fi приёмник или что-то ещё — она работает по проводному соединению;
- чтобы попытаться взломать соседский Wi-Fi (а не на другом конце света), то нужно знать IP соседа или, хотя бы, диапазон IP интернет-провайдера соседа. Можно воспользоваться
Где вместо ‘URL‘ введите адрес страницы на ipgeobase.ru, которую нужно пропарсить.
VALERY
23.07.2015 в 16:07
Вообще штука офигенная
ANGEL
30.08.2015 в 20:35
подскажите как установить на амд х64?
WEBWARE TEAM
31.08.2015 в 06:14
Разницы нет – точно также.
MR_YODA
31.08.2015 в 11:34
Большое спасибо за сайт! Все статьи очень интересные и познавательные. AdBlock выключил.
А программа шикарная конечно.
WEBWARE TEAM
31.08.2015 в 15:40
Спасибо, что не прошли мимо моей просьбы.
MOOGE
06.09.2015 в 19:45
В контекстном меню не появляется «Открыть с помощью Wine…». Что можете посоветовать? Все команды выполнил по инструкции.
WEBWARE TEAM
07.09.2015 в 06:29
Если у вас в контекстном меню не появился Wine, то сделайте так:
нажмите правой кнопкой на приложение, которое хотите запустить
выберите «Открыть в другой программе»
там где строка для ввода введите wine и нажмите кнопку «Установить по умолчанию», нажмите ОК. Теперь все .exe файлы будут открываться двойным кликом.
Про Wine в Kali 2.0 написал отдельно: Установка Wine в Kali Linux 2.0
MIAL
10.11.2015 в 07:21
Я заглянул в окно дома соседа и увидел у него большой плазменной телевизоре, ещё на столе я увидел телефон, а в комнате его жену и двух детей.
Здравствуйте, скажите, а что делать дальше с полученной информацией?
Аналогия понятна?
Мой совет лично вам: ничего с ней не делать.
LAN
13.01.2016 в 08:01
Я тоже люблю С.Моэма…
Как прочекать кучу найденных IP камер на стандартные лог/пасы?
LAN
13.01.2016 в 07:50
Афтор сканера не планиурет добавлять брут камер по словарю. Можно ли самому запилить брут найденых в программе камер по внутреннему словарю. Лень прост поштучно вбивать каждый ip в Кали.
ИВАН
02.10.2016 в 11:12
Ребят, какой пароль на архив?
NOWASIVEM
06.12.2017 в 14:34
Запускаю RouterScan в Vine на WifiSlax, всё работает кроме вкладки по работе с Wifi в программе RouterScan. Помогите, что можно сделать, что бы работал Wifi в программе RouterScan под Vine.
ПЕТРУЧО
17.12.2017 в 06:05
“Афтор сканера не планиурет добавлять брут камер по словарю. Можно ли самому запилить брут найденых в программе камер по внутреннему словарю. Лень прост поштучно вбивать каждый ip в Кали.”
а ты 80й порт сканишь на камеры ? там вроде больше по сплойтам , а словать , так там файлик в роутерскане есть .
ЗЫ пароль на архив Stas’M Corp. емпни именно с точкой на конце
Этичный хакинг и тестирование на проникновение, информационная безопасность
Оглавление
Взлом страницы входа роутера
Чтобы иметь представления об HTTP аутентификации начнём с выдержки из справки Router Scan by Stas’M:
Формально можно разделить устройства на два типа — те, которые используют аутентификацию на уровне протокола HTTP, — и другие, которые её не используют — в их число входят устройства, использующие HTTP формы для авторизации.
Первый тип устройств довольно легко отличить от второго, открыв устройство в интернет браузере: у них в самом начале всегда появляется всплывающее окно с названием устройства и предложением ввести логин и пароль. Устройства второго типа не выдают подобного приглашения, а сразу открывают веб страницу, на которой также можно авторизоваться.
Но, если вы затрудняетесь визуально определить тип аутентификации, можно изучить HTTP заголовки ответа устройства, а конкретно заголовок WWW-Authenticate — именно он указывает на использование аутентификации на уровне протокола.
Для подбора пароля к таким устройствам Router Scan использует словари пар логин/пароль. Программой поддерживаются два метода аутентификации на уровне протокола:
- Basic — базовая аутентификация, имя пользователя и пароль обрабатываются обратимым шифром и отправляются в заголовках (подробнее).
- Digest — дайджест аутентификация, данные для входа необратимо хешируются алгоритмом MD5 и отправляются в заголовках (подробнее).
Для остальных устройств, не использующих эти методы, перебор по словарям не поддерживается (за исключением некоторых моделей, для которых была добавлена поддержка словаря Form аутентификации). Но можно воспользоваться функцией Use credentials в главном окне программы, которая проверяет пару логин/пароль независимо от метода аутентификации.
Итак, Router Scan использует брут-форс форм для авторизации на роутере не для всех моделей, в результате можно получить следующую картину:
Это несколько кучных подсетей в которых в избытке водится роутер ZTE F668. Скажу больше — почти во всех них стандартные логины и пароли, но ни Router Scan, ни RouterSploit не извлекает из них информацию, поскольку на роутере вход выполняется с помощью веб-формы, а для этой модели брут-форс не поддерживается.
Брут-форс веб-форм роутеров
Нам понадобится несколько инструментов. Первый из них — Burp Suite. По приведённой ссылке есть инструкции, в том числе для настройки работы Burp Suite с веб-браузерами — не будем здесь на этом останавливаться, выполните подготовительные действия самостоятельно.
Итак, открываем в веб-браузере интересующий нас роутер:
и убеждаемся, что Burp Suite действительно видит передаваемые данные:
Теперь отправляем заведомо неправильные данные, например, имя пользователя 11111111 и пароль 22222222:
Переходим к анализу в Burp Suite:
Данные отправляются методом POST, на страницу / (корневая папка) отправляется HTTP заголовок с кукиз Cookie: _TESTCOOKIESUPPORT=1, передаётся строка вида:
Смотрим ответ, для начала переключаемся на рендер:
Отлично, в ответе содержится слово Error, поищем его в сырых передаваемых данных:
Анализируем обычный ответ, без ввода пароля:
Там также встречается слово Error, то есть его наличие ни о чём не говорит — такой маркер не подходит для брут-форса. Надеюсь, самые внимательные заметили, что в ответе, пришедшем на аутентификацию, найдено два совпадения с Error, а в обычном ответе, только одно. Смотрим ещё раз ответ после попытки аутентификации:
В этом ответе содержится очень характерная строка:
Брут-форс роутеров
Для брутфорса я буду использовать программу patator. Чтобы вам было понятно, почему, прочитайте статью «Брут-форс веб-сайтов: инструкция по использованию patator, Hydra, Medusa». В этой же статье вы научитесь использовать patator для брут-форса веб-форм сайтов.
В общем виде, в самом простом случае, наша команда будет иметь следующий вид:
Теперь давайте заполним пробелы.
В качестве URL будет IP адрес роутера, например, 58.8.246.217, в качестве body нам нужно взять передаваемую строку, в нашем случае это frashnum=&action=login&Frm_Logintoken=0&Username=11111111&Password=22222222
И в ней в том месте, где имя пользователя, вставим FILE0, а вместо пароля вставим FILE1. В моём случае получилось: body=’frashnum=&action=login&Frm_Logintoken=0&Username=FILE0&Password=FILE1′
Теперь нам нужно указать путь до словарей. Словарь с именами пользователей у меня называется users.txt и расположен в той же папке, где я запускаю patator. Содержимое моего небольшого словаря:
Таким образом, я указываю имя словаря строкой 0=users.txt
Файл с паролями у меня называется passwords.txt, путь до него я указываю строкой 1=passwords.txt.
Содержимое моего файла passwords.txt:
Вспомним, что при отправке запроса также отправляется заголовок с куки _TESTCOOKIESUPPORT=1, поэтому к нашей команде мы добавляем header=’Cookie: _TESTCOOKIESUPPORT=1′.
Теперь нам нужно установить условие, по которому будет определяться, выполнен вход или нет. Этой строкой является «User information is error, please input again», поэтому для игнорирования ответов, содержащих указанную строку, мы запишем следующую опцию: -x ignore:fgrep=’User information is error’. Я немного сократил строку, так как точки и запятые у patator вызывают ошибки. Команда ignore говорит не сообщать о результатах, которые соответствуют следующему за двоеточием условию. Команда fgrep означает поиск строки в полученных данных. Для точного сообщения используется команда mesg, а для поиска по регулярному выражению есть команда egrep.
Собираем всё вместе:
Получаем такой результат:
Это странный результат, как будто бы почти все логины и пароли оказались верными.
Обратим внимание на строку с 302 Moved Temporarily. Она говорит о том, что при вводе учётных данных admin:password роутер хотел нас куда-то перенаправить. Видимо, это и есть правильные учётные данные (логинимся на роутере для проверки), а всё остальное это ложные срабатывания. Подумаем, как это могло получиться?
Получается, что по каким-то причинам роутер перестаёт отправлять строку «User information is error». Можно предположить, что после аутентификации, роутер запоминает наш IP и теперь все входы с этого адреса разрешены. Это можно проверить открыв в браузере страницу роутера. В моём случае это предположение не подтвердилось.
Самой вероятной причиной может быть защита от брутфорса. Попробуем быстро ввести несколько раз неправильные учётные данные. Точно:
Причина найдена, вместо строки «информация о пользователе это ошибка», нам показывают «You have input the wrong username or password for three times. Please try again a minute later», то есть «вы ввели имя пользователя или пароль неправильно три раза. Попробуйте снова через минуту».
Программа patator поддерживает одновременное использование нескольких опций -x и можно было бы добавить -x ignore:fgrep=’You have input the wrong username or password for three times’, но это не решает главную проблему: после трёх неправильных попыток нужно подождать 1 минуту. Для её исправления можно установить временной интервал между попытками в 1 минуту: —rate-limit=60
Но вспомним, что при вводе верных учётных данных происходит переадресация — сервер возвращает код 302:
Поэтому можно использовать конструкцию из двух опций: -x quit:code=302 и -x ignore:code=200. Перед двоеточием идёт команда, а затем условие, при котором выполняется эта команда. В первой строке quit означает выйти, как только получен код 302, то есть пароль найден и продолжать не нужно. Вторая команда ignore означает не показывать полученные данные при получении кода 200.
В результате получается команда:
Случайные величины в форме входа
Если сделать несколько попыток входа и изучить передаваемые данные, то можно заметить, что значение переменной Frm_Logintoken меняется.
Конкретная величина прописана в JavaScript коде:
И она меняется время от времени. Если передавать строку с неверно установленным токеном Frm_Logintoken, то роутер не примет даже правильный пароль. Это ещё одна защита от брутфорса. К счастью, patator имеет встроенный механизм обхода такой защиты.
Для этого используются опции before_urls и before_egrep. Опция before_urls указывает, какую страницу нужно загрузить до того, как будет сделана попытка аутентификации. А опция before_egrep ищет по заданному регулярному выражению в исходном коде страницы, полученной с помощью before_urls.
Для брут-форса исследуемого роутера нужно предварительно получить тот же адрес на котором вводятся данные, то есть before_urls=58.11.48.84.
Пример поиска по регулярному выражению: before_egrep=’_N1_:getObj(«Frm_Logintoken»).value = «(w+)»’
Здесь переменной _N1_ присваивается значение обратной ссылки — выражения в скобках. w+ обозначает главные составные символы, это синоним для «[_[:alnum:]]». Ещё раз — обратите внимание на скобки — это обратная ссылка. При этом в исходном фрагменте кода также присутствуют скобки — их нужно экранировать.
Также меняется передаваемая строка:
Теперь в ней используется _N1_ для присвоения значения параметру Logintoken.
Дополнительные примеры, в том числе для сразу двух величин, смотрите на странице https://kali.tools/?p=269.
Если роутер (или веб-приложение) устанавливает кукиз со случайным значением, то достаточно использовать before_urls в паре с accept_cookie=1 (принимать кукиз для последующей передачи).
Полная команда для брут-форса формы входа, с учётом всех нюансов исследуемой модели роутера, выглядит так:
Оптимизация брут-форса путём атаки сразу на несколько целей
Одна попытка в минуту это довольно медленно. Кстати, ведь в рассматриваемых условиях мы можем делать по три попытки в минуту, затем делать паузу. Не уверен, можно ли это сделать встроенным средствами patator.
Зато в patator есть очень полезный алгоритм, который используется по умолчанию при брут-форсе большого количества объектов. Можно запустить перебор учётных данных сразу на множестве роутеров. Для этого в качестве цели с опцией url укажите файл, например, url=FILE2, также укажите путь до самого файла: 2=routers_IP.txt. patator будет работать следующим образом: пробовать один логин:пароль на первом роутере, затем переходить ко второму роутеру и там пробовать один логин:пароль, затем к следующему, пока список не кончится. Когда список завершится, то patator зайдёт на второй круг и для первого роутера попробует вторую пару логин:пароль, затем перейдёт к следующему роутеру и так далее. В результате возникает естественная задержка между попытками ввода на одном роутере — пока делаются попытки входа на следующих в списке, каждому роутеру даётся время «передышки». Это позволяет значительно сократить значение —rate-limit или вовсе не использовать, так как если одновременно брут-форсятся десятки тысяч роутеров, то очередь до каждого роутера может доходить более чем через минуту. Номер файла имеет значение! То есть в начале полный круг проходится для файлов с номером . Это могут быть, например, имена пользователей. Если вы будете брать адреса роутеров для брут-форса из файла с номером , то patator будет атаковать только первый в списке роутер и перейдёт к следующему только тогда, когда закончатся логины и пароли для проверки.
На случай если найдены верные логин:пароль, то вместо команды quit (выход из программы), нужно использовать команду free (остановка тестирования хоста после нахождения валидного пароля) примерно следующим образом: -x free=url:code=302
Заключение
Итак, мы рассмотрели брут-форс роутера на примере конкретной модели. Мы столкнулись почти со всеми возможными проблемами, которые могут возникнуть при брут-форсе как роутеров в веб-формой входа, так и других веб-приложений, также использующих веб-форму для аутетификации. Разве что, не была рассмотрена ситуация с капчей и использованием набора прокси для ускорения процесса.
В целом алгоритм всегда примерно одинаковый:
- Анализ передаваемых данных. Это удобно делать с помощью Burp Suite. Особое внимание следует уделить произвольно меняющимся полям, кукиз, значению реферера и значению user-agent (это всё передаётся в HTTP заголовках)
- Анализ возвращаемых данных и поиск самых характерных маркеров и событий, свидетельствующих о правильности или неправильности логина и пароля
- Перед запуском брут-форса следует сделать проверку на методы противодействия брут-форсу
- В качестве маркера, который говорит patator об успешности входа, нужно выбирать строку или событие, у которого меньше всего вероятность вызвать ложное срабатывание
- Некоторым видам защит (например, блокировка после нескольких неправильных попыток) невозможно противодействовать, но можно оптимизировать процесс атаки различными способами
*Здесь могло быть предупреждение о том, что не нужно пользоваться данной программой в преступных целях, но hydra это пишет перед каждым сеансом взлома*
В общем, решил я по своим нуждам покопаться в настройках роутера, вбиваю я всем знакомый адрес, а тут пароль спрашивают. Как быть? Ну, начал я перебирать пароли, а их количество слишком большое, что бы перебирать все и слишком маленькое, чтобы делать reset.
И я открыл google. После пары запросов я узнал о такой вещи как hydra. И тут началось: жажда открытий, поиски неизведанного и так далее.
Приступим
Первым делом мной был составлен словарь паролей, ни много, ни мало, аж на 25 комбинаций. Далее качаем либо Kali linux, либо саму Гидру (если вы пингвин у вас линукс). Теперь у нас два варианта (ну как два, я нашел информацию по двум вариантам).
Либо у вас вот такое диалоговое окно:
Либо логин и пароль запрашивает форма на сайте. Мой вариант первый, поэтому начнем с него. На нашем пути к «админке» стоит страж в виде диалогового окна. Это вид авторизации 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 ищем строку:
Отрезаем все до ip-адреса — /index.cgi… Поздравляю мы нашли первую часть скрипта авторизации… Идем дальше… Переходим к вкладке FORM DATA и изменяем режим отображения на VIEV SOURCE.
Бинго! Мы нашли вторую часть скрипта авторизации! Еще чуть-чуть! теперь нужно найти страницу с сообщением об ошибке… Нужно нажать на вкладку ELEMENTS.
И выбрать элемент HTML кода (CTRL+SHIFT+C) и выбрать окно с сообщением об ошибки… в данном случае — Authentication failed!
и немножко правим… bad_auth — все! Ключ практически у нас в кармане… Теперь мы можем полностью написать строку авторизации:
Теперь нужно подставить вместо «login» — ^USER^ и вместо «password» ^PASS^ и тогда строка будет иметь вид:
Обратите внимание что между частями скрипта двоеточие! это обязательно! Кстати, блокировки формы через гидру не происходило… Это очень радует.
В работоспособности второго метода мне убедиться не светит, так как я не обладатель подходящей модели роутера. Придется довериться экспрессивному человеку с Античата.
Если кому интересно, будьте добры, проверьте и отпишитесь в комментариях. Я работал с роутером TL-WR1043N/TL-WR1043ND. Роутер с Античата — D-link300NRU.
Источник