- Brute-force встроенными средствами Kali Linux
- Ликбез
- Brute-force SSH
- Patator
- Hydra
- Medusa
- Metasploit
- Противодействие
- Brute-force WordPress
- BurpSuite
- Hydra
- Patator
- Nmap
- Противодействие
- Заключение
- Инструменты Kali Linux
- Список инструментов для тестирования на проникновение и их описание
- sshprank
- Описание sshprank
- Справка по sshprank
- Руководство по sshprank
- Примеры запуска sshprank
- Установка sshprank
- Генерация словаря
- Crunch
- Patator
- Hydra
- Medusa
- Metasploit
- Patator
- Hydra
- Medusa
- Metasploit
- Patator
- Hydra
- Medusa
- Metasploit
- Patator
- Patator
- Hydra
- Medusa
- Metasploit
- Patator
- Hydra
- Metasploit, Medusa
- Оставить комментарий Отменить ответ
Brute-force встроенными средствами Kali Linux
Рано или поздно у всех администраторов возникает необходимость в подборе паролей к своим сервисам, не важно в связи с чем возникла необходимость (новое рабочее место, плохая память, бывший сотрудник насолил и т.п.).
Хочу Вам представить статью о том, как можно попытаться востановить свои утерянные пароли к сервисам. Статья схабрена и огромное спасибо авторам из Pentestit.
Дисклеймер: Данная статья написана только в образовательных целях и автор не несёт ответственности за ваши действия. Ни в коем случае не призываем читателей на совершение противозаконных действий. Материал размещен только с целью ознакомления и принятию мер по обеспечению безопасности. Использование материалов в противоправных и противозаконных запрещено законом РК.
Ликбез
Brute-force (атака полным перебором) – метод решения математических задач, сложность которого зависит от количества всех возможных решений. Сам же термин brute-force обычно используется в контексте хакерских атак, когда злоумышленник пытается подобрать логин/пароль к какой-либо учетной записи или сервису.
Рассмотрим инструменты, которые можно использовать для выполнения brute-force атак на SSH и WEB-сервисы, доступные в Kali Linux (Patator, Medusa, Hydra, Metasploit), а также BurpSuite и даже самый известный сетевой сканер nmap.
Brute-force SSH
Для примера возьмем тестовую машину 192.168.60.50 и попробуем подобрать пароль пользователя test по SSH.
Мы будем использовать популярные пароли из стандартного словаря rockyou.txt. Этот и другие словари доступны в свободном доступе на гитхабе.
Patator
Для подбора пароля средствами Patator используем команду:
где:
ssh_login — необходимый модуль
host – наша цель
user – логин пользователя, к которому подбирается пароль или файл с логинами для множественного подбора
password – словарь с паролями
-x ignore:mesg=’Authentication failed’ — команда не выводить на экран строку, имеющую данное сообщение. Параметр фильтрации подбирается индивидуально.
Hydra
Для подбора пароля используя Hydra выполним команду:
где:
-V – показывать пару логин+пароль во время перебора
-f – остановка как только будет найден пароль для указанного логина
-P – путь до словаря с паролями
ssh://192.168.60.50 – указание сервиса и IP-адрес жертвы
Medusa
Для подбора пароля с использованием Medusa выполним команду:
где:
-h – IP-адрес жертвы
-u – логин
-P – путь к словарю
-M – выбор модуля
-f – остановка после нахождения валидной пары логин/пароль
-v – настройка отображения сообщений на экране во время процесса подбора
Metasploit
Произведем поиск инструмента для проведения brute-force атаки по SSH:
search ssh_login и получили ответ:
Для просмотра необходимых параметров, воспользуемся командой show options. Для нас это:
rhosts – IP-адрес жертвы
rport – порт
username – логин SSH
userpass_file – путь до словаря
stop_on_success – остановка, как только найдется пара логин/пароль
threads – количество потоков
Указание необходимых параметров производится через команду “set“.
Указав необходимые параметры набираем команду “run” и ждем.
Противодействие
Ограничить количество устанавливаемых соединений с использованием межсетевого экрана.
Пример настройки iptables:
Такое правило установит ограничение доступа к SSH для каждого IP-адреса до 1 соединения в секунду, значительно усложнив перебор. Также эффективным решением может быть использование двухфакторной аутентификации (например, используя eToken) или аутентификации с использованием ключевой пары, а также использование ACL на основе IP-адресов.
Brute-force WordPress
Рассмотрим другой пример — подбор пароля окна авторизации веб-формы.
Для примера будем подбирать пароль от учетной записи администратора wordpress.
BurpSuite
Для начала нам необходимо понять, как происходит процесс авторизации. Для этого мы будем использовать BurpSuite. Нам необходимо попробовать авторизоваться с любым паролем и логином, чтобы посмотреть какие запросы проходят через BurpSuite.
Отлично, мы увидели POST запрос для авторизации с ним мы и будем работать.
В BODY указано какой логин и пароль проверялись, а значит, мы можем попробовать самостоятельно подставить нужные нам значения.
Передаем этот запрос в Intruder и там выбираем необходимые параметры для атаки.
В пункте Payload Positions тип атаки оставляем sniper, но для проверки оставляем только параметр pwd. Таким образом, при атаке будет изменяться только этот параметр.
Загружаем необходимый словарь и начинаем атаку.
Из поведения веб-приложения мы видим, что неверный пароль возвращает код ответа 200. После перебора словаря, видим, что один из паролей дал ответ с кодом 302 — он и является верным.
Данный метод перебора занимает намного больше времени, чем при использовании Patator, Hydra, Medusa и т.д.
Даже с учетом того, что мы взяли небольшой словарь, BurpSuite перебирал словарь около 40 минут.
Hydra
Попробуем подобрать пароль с помощью Hydra.
Как мы уже знаем, при неверной авторизации возвращается код 200, а при успешной – 302. Попробуем использовать эту информацию.
Для запуска используем команду:
Здесь мы указываем обязательные параметры:
-l – имя пользователя
-P – словарь с паролями
-t – количество потоков
http-post-form – тип формы, у нас POST.
/wp-login.php – это URL страницы с авторизацией
^USER^ — показывает куда подставлять имя пользователя
^PASS^ — показывает куда подставлять пароль из словаря
S=302 – указание на какой ответ опираться Hydra. В нашем случае, ответ 302 при успешной авторизации.
Patator
Как мы уже знаем, при неудачной авторизации возвращается код 200, а при удачной – 302. Будем использовать тот же принцип, что и с Hydra:
Запуск производится командой:
http_fuzz – модуль для brute-force атаки http
url – адрес страницы с авторизацией
FILE0 — путь до словаря с паролями
body – информация, которая передается в POST запросе при авторизации
-t — количество потоков
-x – В данном случае мы указали команду не выводить на экран сообщения строки, содержащие параметр с кодом 200
accept_cookie – сохранение параметра cookie и передачи его в следующий запрос
Как итог – нам удалось подобрать пароль.
Nmap
Утилита Nmap позволяет позволяет в том числе производить подбор паролей для веб-форм авторизации, если использовать скрипт http-wordpress-brute с соответствующими аргументами:
–script-args – добавление аргументов
user или userdb – логин или файла с логинами
pass или passdb — указание пароля или словаря
thread – количество потоков
firstonly=true – выводить результат после первого же правильного пароля
Противодействие
Ограничить (усложнить) brute-force атаки на web-приложения можно средствами iptables (по аналогии с SSH) и средствами nginx.
Для этого необходимо создать зону лимитов:
и задействовать ее:
Такие настройки позволят ограничить количество запросов с одного IP-адреса до 40 в секунду.
Усложнить задачу перебора можно используя следующие методы:
— Применение межсетевого экрана и прочего ПО для ограничения количества обращений к защищаемому сервису. О том, как мы используем машинное обучение для выявления подобных атак (в том числе распределенных), можно почитать в статье.
— Использование средств, препятствующих быстрой проверке корректности ключа (например, Captcha).
Заключение
В данной статье мы поверхностно рассмотрели некоторые популярные инструменты. Сократить риск подбора пароля можно, следуя следующим рекомендациям:
— используйте устойчивые к подбору пароли;
— не создавайте пароли, используя личную информацию, например: дату рождения или имя + дата рождения или мобильный телефон;
— регулярно меняйте пароль;
— на всех аккаунтах применяйте уникальные пароли.
Подобные рекомендации (как и рекомендации по безопасной веб-разработке) мало кто соблюдает, поэтому необходимо использовать различные программные решения, позволяющие:
— ограничить подключение по IP-адресу, или, если это невозможно, ограничить одновременное количество соединений с сервисом (средствами iptables, nginx и прочими);
— использовать двухфакторную аутентификацию;
— выявлять и блокировать подобные атаки средствами SIEM, WAF или другими (например, fail2ban)
— Ну и если не убедительно, нет времени, много работы, бумажная безопасность превыше всего, чето не охото, как то лениво, многабукаф и т.п. отмазки, то просто воткните рядом с вэб сервисом файл htaccess который поможет Вам собрать все сопли и отбрить ненужные запросы.
Не нарушайте законы, подписывайтесь на наш канал, становитесь умнее и прогресивнее…
Источник
Инструменты Kali Linux
Список инструментов для тестирования на проникновение и их описание
sshprank
Описание sshprank
Быстрый массовый сканер SSH, взломщик входа (брут-форс учётных данных) и сборщик баннеров. Этот инструмент использует модуль python-masscan.
Справка по sshprank
Руководство по sshprank
Страница man отсутствует.
Примеры запуска sshprank
Взламывать цели из данного списка (-l sshds.txt) с именем пользователя admin (-u admin), списком паролей в файле (-P /tmp/passlist.txt) в 20 потоков работы с хостами:
Быстрое сканирование, затем взлом найденных служб ssh. Данные для сканирования передаются в masscan (-m ‘-p22,2022 —rate=5000 —source-ip 192.168.13.37 —range 192.168.13.1/24’):
Сгенерировать тысячу случайных IPv4 адресов, затем просканировать порты со скоростью 1k p/s и найденные sshd сервера попытаться взломать учётными данными ‘root:root’:
Собрать баннеры (-b hosts.txt) и вывести их в файл в формате, поддерживаемым опцией ‘-l‘:
Установка sshprank
Установка в Kali Linux
Установка в BlackArch
Программа предустановлена в BlackArch.
Как установить sshprank в Windows
После установки Python и PIP скачайте архив с исходным кодом sshprank по ссылке: https://github.com/noptrix/sshprank/archive/master.zip
Откройте командную строку или PowerShell (если не знаете как, то смотрите статью «Настройка рабочего окружения PowerShell в Windows и Linux»).
Перейдите в папку распакованного архива с помощью команды cd (у вас будет другой путь до папки):
Установите требуемые зависимости:
Выполните проверку (должна вывестись справка по использованию программой):
Далее работа с программой такая же как в Linux, но вместо sshprank нужно указывать python .\sshprank.py, например:
Информация об установке в другие операционные системы будет добавлена позже.
Источник
Генерация словаря
Crunch
Словарь с пользователями мы взяли небольшой и записали в него 4 пользователя.
Для составления словаря используется Crunch, как встроенное средство. Инструмент гибкий и может составить словарь по определенной маске. Если есть вероятность того, что пользователь может использовать словарный пароль, то лучше воспользоваться уже готовыми решениями, тем более, что, как показывает практика, самый популярный пароль – 123456.
Генерировать словарь будем на 5 символов по маске. Данный метод подходит для случаев, когда мы имеем представление о структуре пароля пользователя.
crunch 5 5 qwe ASD 1234567890 -t @@,%@ -o /root/wordlist.txt
5 – минимальное и максимальное количество символов;
qwe, ASD, 1234567890 – используемые символы;
-t – ключ, после которого указывается маска для составления пароля;
@ – нижний регистр;
, – верхний регистр;
% – цифры.
Сразу отметим, что на первых этапах мы будем для каждого инструмента описывать используемые ключи, но далее те же самые ключи уже не будут рассматриваться подробно, поскольку они крайне похожи друг на друга, а значит, имеют аналогичный синтаксис.
Patator
patator ssh_login host=192.168.60.50 user=FILE0 password=FILE1 0=/root/username 1=/root/wordlist.txt -x ignore:mesg=’Authentication failed’
ssh_login – модуль;
host – наша цель;
user – логин пользователя, к которому подбирается пароль или файл с логинами для множественного подбора;
password – словарь с паролями;
-x ignore:mesg=’Authentication failed’ – не выводить на экран строку, имеющую данное сообщение. Параметр фильтрации подбирается индивидуально.
Все инструменты мы тестируем с количеством потоков по умолчанию, никаким образом их количество не изменяем.
Patator справился ровно за 7 минут 37 секунд, перебрав 2235 вариантов.
Hydra
hydra -f -L /root/username -P /root/wordlist.txt ssh://192.168.60.50
-f – остановка перебора после успешного подбора пары логин/пароль;
-L/-P – путь до словаря с пользователями/паролями;
ssh://IP-адрес – указание сервиса и IP-адреса жертвы.
Hydra затратила на перебор 9 минут 11 секунд.
Medusa
medusa -h 192.168.60.50 -U /root/username -P /root/wordlist.txt -M ssh
-h – IP-адрес целевой машины;
-U/-P – путь к словарям логинов/паролей;
-М – выбор нужного модуля.
Medusa за 25 минут обработала только 715 комбинаций логин/пароль, поэтому данный инструмент не лучший выбор в случае с брутфорсом SSH.
Metasploit
Произведем поиск инструмента для проведения brute-force атаки по SSH:
search ssh_login
Задействуем модуль:
use auxiliary/scanner/ssh/ssh_login
Для просмотра необходимых параметров воспользуемся командой «show options». Для нас это:
rhosts – IP-адрес жертвы;
rport – порт;
user_file – путь до словаря с логинами;
pass_file – путь до словаря c паролями;
stop_on_success – остановка, как только найдется пара логин/пароль.
По умолчанию Metasploit использует 1 поток, поэтому и скорость перебора с использованием этого модуля очень низкая. За 25 минут так и не удалось подобрать пароль.
Patator
patator imap_login host=192.168.100.109 user=FILE0 password=FILE1 0=/root/username 1=/root/wordlist.txt -x ignore:code=1
imap_login – используемый модуль;
-x – параметр, который помогает фильтровать ответы от Patator. В данном случае игнорируем ответы с кодом 1.
Параметр х является уникальным для каждого конкретного случая, поэтому рекомендуется сначала запустить инструмент без него и посмотреть какие ответы в основном приходят, чтобы затем их игнорировать.
В итоге Patator смог подобрать пароль за 9 минут 28 секунд, что является практически тем же самым показателем, что и в случае с SSH.
Hydra
hydra -f imap://192.168.60.50 -L /root/username -P /root/wordlist.txt
Hydra справилась за 10 минут 47 секунд, что довольно неплохо.
Medusa
В связи с тем, что на сервере использовался самоподписанный сертификат, Medusa выдавала ошибку, исправить которую настройками инструмента не удалось.
Metasploit
В Metasploit не удалось подобрать подходящий модуль для брутфорса IMAP.
Patator
При использовании Patator появилось большое количество ложных срабатываний.
Hydra
hydra -L /root/username -P /root/wordlist.txt 192.168.60.50 smb
Благодаря своим алгоритмам Hydra справилась с задачей всего за 5 секунд.
Medusa
medusa -h 192.168.60.50 -U /root/username -P /root/wordlist.txt -M smbnt
Запуская перебор, я ожидал результатов, схожих с предыдущими, но на этот раз Medusa меня приятно удивила, отработав за считанные секунды.
Metasploit
С помощью поиска search smb_login находим нужный модуль scanner/smb/smb_login и применяем его.
Необходимо указать параметры:
RHOSTS – IP-адрес жертвы;
USER_FILE – словарь с пользователями;
PASS_FILE – словарь с паролями;
STOP_ON_SUCCESS – остановка после подобранной пары логин/пароль.
Metasploit справился с задачей за 1 минуту.
Patator
patator rdp_login host=192.168.60.50 user=FILE0 password=FILE1 0=/root/username 1=/root/wordlist.txt -x ignore:code=132
К сожалению, на данный момент из тестируемых инструментов только Patator может подбирать логин/пароль для RDP-протокола. При этом, даже если Patator и справился с поставленной задачей, в выводе дополнительно появилось ложное срабатывание.
Для начала нам необходимо понять, как происходит процесс аутентификации.
Для этого нужно отправить тестовые запросы аутентификации и уже из поведения веб-приложения можно будет увидеть, что неверный пароль возвращает код ответа 200, а успешная аутентификация — 302. На эту информацию и будем опираться.
Patator
Учитывая ответы веб-приложения на тестовые запросы, составим команду для запуска Patator:
patator http_fuzz url=http://site.test.lan/wp-login.php method=POST body=’log=FILE0&pwd=FILE1&wp-submit=Log+In&redirect_to=http%3A%2F%2Fsite.test.lan%2Fwp-admin%2F&testcookie=1′ 0=/root/username 1=/root/wordlist.txt before_urls=http://site.test.lan/wp-login.php -x ignore:code=200 accept_cookie=1
http_fuzz – модуль для brute-force атаки HTTP;
url – адрес страницы с аутентификацией;
FILE0 – путь до словаря с паролями;
body – информация, которая передается в POST запросе при аутентификацией;
-x – в данном случае мы указали команду не выводить на экран сообщения, содержащие параметр с кодом 200;
accept_cookie – сохранение параметра cookie и передачи его в следующий запрос;
Итог — нам удалось подобрать пароль чуть менее, чем за 30 секунд, что очень быстро.
Hydra
Как мы уже знаем, при неверной аутентификации возвращается код 200, а при успешной — 302. Воспользуемся этой информацией и выполним команду:
hydra -f -L /root/username -P /root/wordlist.txt http-post-form://site.test.lan -m «/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2Fsite.test.lan%2Fwp-admin%2F&testcookie=1:S=302»
Здесь мы указываем обязательные параметры:
-f – завершить перебор после получения валидной пары логин/пароль;
-L – словарь с пользователями;
-P – словарь с паролями;
http-post-form – тип формы (в нашем случае POST);
/wp-login.php – URL страницы с аутентификацией;
^USER^ – показывает куда подставлять имя пользователя;
^PASS^ – показывает куда подставлять пароль из словаря;
S=302 – указание на какой ответ опираться Hydra (в нашем случае — ответ 302 при успешной аутентификации).
Успех ожидал нас уже через 3 минуты 15 секунд.
Medusa
medusa -h site.test.lan -U /root/username -P /root/wordlist.txt -M web-form -m FORM:»/wp-login.php» -m FORM-DATA:»post?log=&pwd=&wp-submit=Log+In&redirect_to=http%3A%2F%2Fsite.test.lan%2Fwp-admin%2F&testcookie=1″
К сожалению, при попытках перебора пароля Medusa выдает ошибку «Segmentation fault».
Metasploit
С помощью поиска search wordpress_login находим нужный модуль auxiliary/scanner/http/wordpress_login_enum и применяем его. Необходимо указать параметры:
PASS_FILE – словарь с паролями;
RHOSTS – адрес жертвы;
STOP_ON_SUCCESS – остановка после подобранной пары логин/пароль;
USER_FILE – словарь с пользователями;
VALIDATE_USERS – отключить проверку существования учетной записи пользователя;
VERBOSE – отключить лишний вывод;
VHOST – доменное имя атакуемого сайта.
Затраченное время — 32 секунды.
Patator
patator ftp_login host=192.168.60.50 user=FILE0 password=FILE1 0=/root/username 1=/root/wordlist.txt -x ignore:code=530
В данном модуле Patator работает уже медленнее, чем с Web-формами, а пароль был подобран за 11 минут 20 секунд.
Hydra
hydra -f -L /root/username -P /root/wordlist.txt ftp://192.168.60.50
Работая по умолчанию в 16 потоков, Hydra смогла перебрать пароли за 7 минут 55 секунд.
Metasploit, Medusa
В Metasploit используем модуль auxiliary/scanner/ftp/ftp_login
В случае с Medusa запрос выглядит следующим образом:
medusa -f -M ftp -U /root/username -P /root/wordlist.txt -h 192.168.60.50
Все параметры стандартные, указываем путь до словарей и обязательно ставим завершение перебора после найденной пары логин/пароль.
С этим протоколом, как и c SSH, Metasploit и Medusa плохо справляются при стандартном количестве потоков. Поэтому если есть желание использовать именно эти инструменты, то необходимо вручную увеличивать количество потоков. Но и тут не все так просто. В однопоточном режиме FTP-сервер при использовании этих инструментов, сбросил соединение, чего не наблюдалось при использовании Patator или Hydra. Поэтому есть вероятность, что увеличение количества потоков не изменит ситуацию.
Протестировав разные, но в то же время похожие инструменты на различных сервисах, можно сказать, что у каждого из них есть как достоинства, так и недостатки, а с каким инструментом работать — решать только вам.
Ниже представлена сводная таблица с полученными результатами:
P.S. Потренироваться можно в наших лабораториях lab.pentestit.ru.
Оставить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Источник