May 26, 2023

Атака bruteforce для каждого

Приветствую! В этом уроке мы познакомимся с двумя новыми инструментами — hydra и nmap. Также, затронем работу в burpsuite. Совместив их вместе, вы станете умельцами одного из самых опасных методов атаки — bruteforce. Приятного чтения, дальше — больше! Не забывайте подписываться на наш проект, который создан не ради денег. Будем рады новичкам в чате.


ДИСКЛЕЙМЕР


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


Сканируем IP на открытые порты

Производить это действие мы будем используя утилиту nmap. В качестве подопытного будет мой личный сайт, IP которого уже известен. Сканировать порты нужно для того, чтобы узнать, какие службы работают на этом адресе помимо веб-ресурса, как в нашем случае. Это могут быть принтеры, камеры, базы данных и даже сервера онлайн игр. Расскажу вам забавный кейс: найдя IP нужного мне пользователя в слитой базе данных форума, оказалось что он статичный. Статичный = привязан к одному устройству и не меняется продолжительное время. Казалось бы, что это даст? Просканировав его на открытые порты, мне удалось обнаружить некое устройство, работающее на порту "8080". Этот порт в основном используют для размещения сайтов (HTTP). Перейдя по ссылке "192.168.*.*:8080" меня встретила страница авторизации камеры. Далее дело за малым: две строчки в терминал, 30 минут времени и я наблюдаю как в гостиной убирается какая-то женщина. Естественно, это все вымысел. Вот это я сказочник! Так вот, нам потребуется ввести в терминал подобную команду, заменив значения на свои. Выполнение от имени root!


sudo nmap -p- -sV -sS -T4 192.168.1.1


Теперь давайте разберём её: "-p-" используется для полной проверки всех портов в диапазоне от 0 до 65535. Параметр "-sV" расскажет о версиях сервиса. "-sS" используется для более обширных результатов. Путём лживых рукопожатий с сервером он покажет нам какие порты были отфильтрованы, а какие просто открыты. "-T" — скорость сканирования, от 1 до 5. Чтобы не уронить сервер от флуда запросами, советуется использовать более низкие значения. В основном, команда которую мы рассмотрели выше — база, её нужно записать в отдельный текстовый документ. Если вы хотите пройтись только по популярным портам (более быстрый вариант) — используйте параметр "-F", предварительно убрав "-p-". После успешного выполнения, мы увидим подобную картину (на скриншоте я использовал режим быстрого сканирования):

результат сканирования на открытые порты

Обнаружено много интересных протоколов, но мы остановимся на FTP. Это сервер, на котором зачастую хранятся данные. Его можно сравнить с облаком. Кстати, метод передачи файлов (FTP) давно устарел и не имеет никакого шифрования, хоть и очень часто встречается даже на крупных ресурсах. Настоятельно советую использовать более надёжные варианты!

Знакомство с hydra

И нет, я не оставлю реферальную ссылку по которой скидка на соль -15%=)
Hydra — мощнейший инструмент для брутфорса, с его помощью можно брутить практически все то, что использует для авторизации логин и пароль. Кстати, есть две версии: консольная и графическая. Я буду показывать работу в консольной, но вы можете самостоятельно ознакомиться с графической, благо, там все максимально упростили. С портом мы определились, будем бить 21 (FTP). Но перед этим нам нужно найти то, чем бить=) Речь о базе логинов/паролей. Хочу обратить ваше внимание на то, что это дело индивидуальное. Например, в протоколе RDP (Windows Server) часто используют логин "Administrator", и самое интересное в том, что в отличие от страны он меняется. В Италии — "Administrador", в Швеции — "Administratör". Думаю, суть понятна. Если вы брутите какую-то камеру, обратите внимание на её модель и обратитесь к документации производителя. В 90% там будет указан стандартный логин, это 50% работы.
В Kali Linux по умолчанию есть словарь "rockyou". Он предоставляется в запакованном виде. Чтобы воспользоваться им, введите эти команды:


sudo gunzip /usr/share/wordlists/rockyou.txt.gz cd /usr/share/wordlists/ sudo mv rockyou.txt /home/{username}


Командой "gunzip" мы распаковали архив, далее перешли в директорию с файлом и перенесли его в "домашнюю папку" по пути /home/{username}
читаем содержимое командой "cat", чтобы удостовериться

С паролями разобрались, осталось найти только логин. Мы можем указать целый лист популярных, но как я и советовал выше, точите его под таргет. Вы можете сканировать ресурсы инструментами с прошлой статьи для поиска открытых лог-файлов, которые с огромной вероятностью содержат в себе нужные юзернеймы. Если не знакомы с протоколом/сервисом, воспользуйтесь поисковиками, сконструировав подобный запрос: "{ваш сервис} default credentials".
Крайне советую вам этот гит, на котором размещено все для подобных целей: от списка логинов, до payload'ов. Думаю, достойная закладка в вашем браузере.
В моем случае будет загружен список из 2 логинов, которые я получил в логах сервера интуицией. Выполняем такую команду, заменяя значения на свои:


sudo hydra -L usernames.txt -P rockyou.txt 192.168.0.1 ftp -t 30


bruteforce атака на ftp сервер

Теперь давайте разбирать команду. Параметр "-L" указывает на список логинов. Если мы работаем с целью, логин которой известен — вводим маленькую "-l", после чего указываем юзернейм. С параметром "-P" все аналогично, только речь об паролях. Следующим параметром указывается IP таргета который "пентестим". Далее, протокол. У меня это FTP, вы должны заменить на свой. Кстати, если сервис работает не на обычном порту, вы также можете указать его самостоятельно параметром "-s", последующим значением вводим нужный порт. Один из важных аргументов это "-t", который указывает кол-во потоков. Вы должны понимать, что некоторые конфигурации серверов не всегда выдерживают долбёжку в панель и могут падать/ограничивать количество запросов. Моим оптимальным значением будет 30. Если вы заметили что скорость существенно низкая, нужно понизить этот параметр и попробовать вновь. Скорее всего, сервер обнаружил атаку и установил вам определённые "лимиты". Если вы хотите вывод логов в консоль, добавьте аргумент "-V"
Ура! Команда на целевой таргет полностью готова и её можно сохранять в текстовый документ. При успехе, мы получим строку в консоли с данными.

Брутим логины/пароли на сайте

Это, наверное, будет самый полезный навык в работе. Практически все камеры используют авторизацию через HTTP страницу. В этом примере будет участвовать web-panel известного стиллера, которую я написал самостоятельно и поднял на своем сервере, конечно же. Кстати, вы можете самостоятельно найти несколько тысяч подобных, сконструировав правильный запрос в criminalip.io, Shodan.io и подобных сайтах. Выглядят все они примерно вот так:

стартовая страница авторизации таргета

Единственное, что у нас есть: поля для авторизации и кнопка. Первым делом, нужно отловить сам запрос к серверу во время отправки логина и пароля. Для этого я использую утилиту "Burpsuite". Не будем рассматривать весь функционал, обо нём можно написать книгу да и статья не об этом. Найдите "Burpsuite" через поиск приложений, он предустановлен в системе по умолчанию. Я буду использовать платную версию, но для нашей задачи отличия будут минимальными. Переходим во вкладку "Target" и кликаем "Open browser".

демонстрация вкладки "Tagret"

У нас откроется обычный браузер на основе Chromium. Перейдите на сайт, который нужно "пентестить" и авторизуйтесь любыми данными. Далее, нужно вернуться в burp и найти запрос типа "post". Я выделил его у себя оранжевым цветом. Нам нужно скопировать строчку, в которой передались данные авторизации. У меня она выглядит так: username=admin&password=12345678
Так же нужно скопировать параметр "URL", а именно эту часть: /index.php?auth

пример отловленного post запроса с burpsuite

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


$ hydra -L usernames.txt -P rockyou.txt 192.168.0.1 http-post-form "/index.php?auth:username=^USER^&password=^PASS^:Error login or password" -V


Базовые параметры разбирать не будем, так как сделали это выше. В скобочки мы поместили страницу, которая будет обрабатывать запрос. После двоеточия идёт наше "тело запроса", вместо данных авторизации я указал ^USER^&^PASS^ — думаю, логично за что это отвечает. Эти места будут заменяться данными для bruteforce атаки. (^USER^ — логин, ^PASS^ — пароль) Далее, указано сообщение, которое появляется на экране в случае ввода невалидных данных. То есть, если сайт вернёт нам ответ, в котором не будет содержаться "Error login or password" — аккаунт будет сочтён за рабочий. Параметр "-V" будет выводить все попытки авторизации в консоль, (даже неудачные) можете не использовать его.

брутфорс авторизации сайта используя метод http-post-form

Итоги

Теперь, нам не составит труда подключиться к своей камере, если мы забыли пароль=) Мы умеем проверять свои сервера на уязвимость к брутфорсу, свои самописные web-панели, да и в конце концов, школьные электронные журналы, которые создали специально для проверки. Благодарю всех за прочтение, если статья оказалась вам полезной — пожалуйста, подпишитесь на наш Telegram. У нас сейчас даже рекламы нет, это будет лучшая благодарность. Мирного неба!


НАШ КАНАЛ: t.me/hack2day

НАШ КАНАЛ: t.me/hack2day

НАШ КАНАЛ: t.me/hack2day