Атака 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}
С паролями разобрались, осталось найти только логин. Мы можем указать целый лист популярных, но как я и советовал выше, точите его под таргет. Вы можете сканировать ресурсы инструментами с прошлой статьи для поиска открытых лог-файлов, которые с огромной вероятностью содержат в себе нужные юзернеймы. Если не знакомы с протоколом/сервисом, воспользуйтесь поисковиками, сконструировав подобный запрос: "{ваш сервис} default credentials
".
Крайне советую вам этот гит, на котором размещено все для подобных целей: от списка логинов, до payload'ов. Думаю, достойная закладка в вашем браузере.
В моем случае будет загружен список из 2 логинов, которые я получил в логах сервера интуицией. Выполняем такую команду, заменяя значения на свои:
sudo hydra -L usernames.txt -P rockyou.txt 192.168.0.1 ftp -t 30
Теперь давайте разбирать команду. Параметр "-L
" указывает на список логинов. Если мы работаем с целью, логин которой известен — вводим маленькую "-l
", после чего указываем юзернейм. С параметром "-P
" все аналогично, только речь об паролях. Следующим параметром указывается IP таргета который "пентестим". Далее, протокол. У меня это FTP
, вы должны заменить на свой. Кстати, если сервис работает не на обычном порту, вы также можете указать его самостоятельно параметром "-s
", последующим значением вводим нужный порт. Один из важных аргументов это "-t
", который указывает кол-во потоков. Вы должны понимать, что некоторые конфигурации серверов не всегда выдерживают долбёжку в панель и могут падать/ограничивать количество запросов. Моим оптимальным значением будет 30. Если вы заметили что скорость существенно низкая, нужно понизить этот параметр и попробовать вновь. Скорее всего, сервер обнаружил атаку и установил вам определённые "лимиты". Если вы хотите вывод логов в консоль, добавьте аргумент "-V
"
Ура! Команда на целевой таргет полностью готова и её можно сохранять в текстовый документ. При успехе, мы получим строку в консоли с данными.
Брутим логины/пароли на сайте
Это, наверное, будет самый полезный навык в работе. Практически все камеры используют авторизацию через HTTP страницу. В этом примере будет участвовать web-panel известного стиллера, которую я написал самостоятельно и поднял на своем сервере, конечно же. Кстати, вы можете самостоятельно найти несколько тысяч подобных, сконструировав правильный запрос в criminalip.io, Shodan.io и подобных сайтах. Выглядят все они примерно вот так:
Единственное, что у нас есть: поля для авторизации и кнопка. Первым делом, нужно отловить сам запрос к серверу во время отправки логина и пароля. Для этого я использую утилиту "Burpsuite
". Не будем рассматривать весь функционал, обо нём можно написать книгу да и статья не об этом. Найдите "Burpsuite
" через поиск приложений, он предустановлен в системе по умолчанию. Я буду использовать платную версию, но для нашей задачи отличия будут минимальными. Переходим во вкладку "Target
" и кликаем "Open browser
".
У нас откроется обычный браузер на основе Chromium. Перейдите на сайт, который нужно "пентестить" и авторизуйтесь любыми данными. Далее, нужно вернуться в burp и найти запрос типа "post
". Я выделил его у себя оранжевым цветом. Нам нужно скопировать строчку, в которой передались данные авторизации. У меня она выглядит так: username=admin&password=12345678
Так же нужно скопировать параметр "URL
", а именно эту часть: /index.php?auth
По итогу, несколько потраченных минут и мы можем начать наш перебор. Воспользуемся все той же гидрой. Из этих данных мы составим такую команду:
$ 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
" будет выводить все попытки авторизации в консоль, (даже неудачные) можете не использовать его.
Итоги
Теперь, нам не составит труда подключиться к своей камере, если мы забыли пароль=) Мы умеем проверять свои сервера на уязвимость к брутфорсу, свои самописные web-панели, да и в конце концов, школьные электронные журналы, которые создали специально для проверки. Благодарю всех за прочтение, если статья оказалась вам полезной — пожалуйста, подпишитесь на наш Telegram. У нас сейчас даже рекламы нет, это будет лучшая благодарность. Мирного неба!
НАШ КАНАЛ: t.me/hack2day
НАШ КАНАЛ: t.me/hack2day
НАШ КАНАЛ: t.me/hack2day