Введение
В этом лабораторном практикуме вы научитесь использовать Hydra для генерации паролей для атак методом грубой силы (brute-force) с использованием различных методов генерации паролей. Вы сосредоточитесь на использовании опции Hydra -x для создания паролей на основе различных критериев, таких как длина, наборы символов и распространённые шаблоны паролей.
Лабораторный практикум проведет вас через несколько сценариев генерации паролей, включая базовые наборы символов, смешанные комбинации символов, числовые шаблоны и структуры паролей из реальной жизни. Вы будете атаковать тестовый FTP-сервер на localhost, чтобы практиковать эти методы и научиться эффективно анализировать результаты атак методом грубой силы.
Генерация паролей с помощью опции -x
В этом шаге вы узнаете, как использовать опцию -x в Hydra для генерации паролей на основе заданного формата. Это полезно, когда у вас есть информация о потенциальной структуре пароля, например, известный диапазон длины или набор символов.
Опция -x Hydra позволяет определить минимальную и максимальную длину генерируемых паролей, а также набор символов для использования. Синтаксис: -x min:max:charset.
Начнём с простого примера. Вы сгенерируете пароли длиной от 6 до 8 символов, используя только строчные буквы.
Сначала убедитесь, что вы находитесь в каталоге ~/project. Это стандартный каталог при запуске лабораторного практикума.
cd ~/project
Теперь вы будете использовать Hydra для генерации паролей. Для демонстрации вы будете атаковать SSH-сервис на localhost. Это позволит вам увидеть генерацию паролей без фактического выполнения успешной атаки (поскольку мы используем несуществующего пользователя).
Выполните следующую команду в терминале:
hydra -l testuser -vV -x 3:5:a-z localhost ssh
Давайте разберём эту команду:
hydra: Команда для запуска инструмента Hydra.-l testuser: Указывает имя пользователя для использования. Здесь "testuser" используется как плейсхолдер (вероятно, такого пользователя не существует).-vV: Включает подробный вывод, показывая каждую попытку.-x 3:5:a-z: Это ключевая часть. Она сообщает Hydra сгенерировать пароли с:3: Минимальная длина 3 символа.5: Максимальная длина 5 символов.a-z: Используются только строчные буквы (a-z). Другие варианты включаютA-Z(заглавные буквы),0-9(цифры), и вы можете их комбинировать, например,a-zA-Z0-9для строчных, заглавных и цифр.
localhost: Целевой хост.ssh: Целевой SSH-сервис.
Вы увидите, как Hydra пытается подключиться с сгенерированными паролями, такими как "aaa", "aaaa", "aaaaa", "aab" и так далее. При использовании опции -x Hydra автоматически генерирует пароли на основе заданных критериев.
Примечание: Количество комбинаций для паролей длиной от 3 до 5 символов, используя только строчные буквы, управляемо: 26³ + 26⁴ + 26⁵ = 17 576 + 456 976 + 11 881 376 ≈ 12,4 млн комбинаций, что находится в пределах возможностей Hydra.
Важно: Используйте
Ctrl+Cдля остановки атаки, так как её выполнение может занять много времени.
Вывод будет показывать сгенерированные пароли, поскольку Hydra пытается подключиться к SSH-сервису.
Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaaaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aab" - 1 of 1 [child 0] (0/0)
...
Важно: Ограничения комбинаций паролей
При использовании опции -x Hydra, крайне важно учитывать общее количество комбинаций паролей, которые будут сгенерированы. Hydra имеет встроенное ограничение в 4 миллиарда паролей, чтобы предотвратить непрактичные попытки brute-force.
Вот несколько примеров количества комбинаций:
- 3-5 символов, только строчные буквы (a-z): ~12,4 млн комбинаций ✓
- 4-6 символов, только строчные буквы (a-z): ~321 млн комбинаций ✓
- 6-8 символов, только строчные буквы (a-z): ~217 млрд комбинаций ✗ (превышает лимит)
- 4-6 символов, буквенно-цифровые (a-zA-Z0-9): ~57 млрд комбинаций ✗ (превышает лимит)
Всегда рассчитывайте количество комбинаций перед запуском: charset_size^min_length + ... + charset_size^max_length
Атака FTP сгенерированными паролями
В этом шаге вы будете использовать возможности Hydra по генерации паролей для атаки на тестовый FTP-сервер. Вы будете использовать список паролей, генерируемых "на лету" с помощью опции -x.
Сначала вам нужно настроить простой FTP-сервер для тестирования. Вы будете использовать python3-pyftpdlib, который является лёгкой библиотекой FTP-сервера для Python.
Установите python3-pyftpdlib, если она ещё не установлена:
sudo apt update
sudo apt install -y python3-pyftpdlib
Запустите FTP-сервер в фоновом режиме на порту 2121, обслуживая файлы из каталога ~/project. Опция -w разрешает запись.
nohup python3 -m pyftpdlib -p 2121 -w -u testuser -P secret ~/project > /dev/null 2>&1 &
Часть nohup ... & запускает команду в фоновом режиме и предотвращает её остановку при закрытии терминала. > /dev/null 2>&1 перенаправляет стандартный вывод и стандартную ошибку в /dev/null, сохраняя ваш терминал чистым. Опции -u testuser -P secret настраивают пользователя с паролем "secret", который может получить доступ к серверу.
Теперь вы будете использовать Hydra для атаки на этот FTP-сервер. Вы будете использовать опцию -x для генерации паролей и попытки входа как пользователя "testuser".
Выполните следующую команду в терминале:
hydra -l testuser -vV -x 4:6:a-z 127.0.0.1 ftp -s 2121
Давайте разберём эту команду:
hydra: Инструмент командной строки Hydra.-l testuser: Указывает имя пользователя для использования: "testuser".-vV: Включает подробный вывод, показывая каждую попытку входа.-x 4:6:a-z: Это сообщает Hydra генерировать пароли с:4: Минимальная длина 4 символа.6: Максимальная длина 6 символов.a-z: Используются только строчные буквы (a-z).
127.0.0.1: Целевой хост (localhost). Вы используете127.0.0.1вместоlocalhost, чтобы избежать потенциальных проблем с разрешением DNS внутри контейнера.ftp: Сервис для атаки (FTP).-s 2121: Указывает номер порта. Вы нацелены на FTP-сервер, работающий на порту 2121.
Вы должны увидеть, как Hydra пытается выполнить вход с сгенерированными паролями. Поскольку FTP-сервер настроен со специфическими учетными данными (имя пользователя: testuser, пароль: secret), Hydra найдёт правильный пароль, когда сгенерирует "secret" во время своих попыток brute-force.
Важно: Используйте
Ctrl+Cдля остановки атаки, так как её выполнение может занять много времени.
Вывод будет показывать попытки входа и, в конечном итоге, сообщение об успешном входе.
Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT] target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaaa
[ATTEMPT] target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaab
...
[2121][ftp] host: 127.0.0.1 login: testuser password: secret
Теперь давайте попробуем немного более сложный пример, объединив строчные буквы и цифры:
hydra -l testuser -vV -x 3:5:a-z0-9 127.0.0.1 ftp -s 2121
Это сгенерирует пароли, такие как "aaa", "aab", "aac" и так далее, систематически перебирая все комбинации из 3 символов сначала, затем из 4 символов и, наконец, из 5 символов. Наблюдайте за выводом, чтобы увидеть сгенерированные пароли и успешный вход.
Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT] target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaa
[ATTEMPT] target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aab
...
[2121][ftp] host: 127.0.0.1 login: testuser password: secret
Этот шаг продемонстрировал, как использовать Hydra с опцией -x для генерации паролей и атаки на FTP-сервер. Помните, что следует использовать эти методы ответственно и этично.
Генерация паролей с разными регистрами
В этом шаге вы узнаете, как генерировать пароли, используя как прописные, так и строчные буквы. Это распространённый шаблон паролей, который многие пользователи используют, что делает его эффективной стратегией брутфорса.
Многие пользователи создают пароли с использованием разных регистров, чтобы соответствовать требованиям сложности паролей. Понимание этого шаблона может значительно повысить эффективность ваших атак брутфорсом.
Убедитесь, что вы находитесь в каталоге ~/project и ваш FTP-сервер всё ещё работает:
cd ~/project
Давайте сгенерируем пароли, используя разные регистры. Выполните следующую команду:
hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121
Эта команда генерирует пароли, используя:
a-z: строчные буквы (a-z)A-Z: прописные буквы (A-Z)
Вы увидите пароли, такие как "aaa", "Aaa", "aAa", "AAa", "aaA", "AaA", "aAA", "AAA", "aab", "Aab" и т.д. Обратите внимание, как Hydra систематически комбинирует прописные и строчные буквы.
Давайте попробуем диапазон 3-4 символа, чтобы лучше увидеть шаблон:
hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121
Это сгенерирует пароли длиной от 3 до 4 символов с использованием разных регистров. Вы можете наблюдать, как прогрессируют комбинации:
- 3 символа: "aaa", "Aaa", "aAa", "AAa", "aaA", "AaA", "aAA", "AAA", "aab", "Aab" и т.д.
- 4 символа: "aaaa", "Aaaa", "aAaa", "AAaa", "aaaA", "AaaA", "aAaA", "AAaA" и т.д.
Понимание шаблона:
Генерация паролей с использованием разных регистров следует систематическому подходу, где Hydra перебирает все возможные комбинации прописных и строчных букв. Это особенно эффективно, потому что:
- Многие политики паролей требуют использования разных регистров.
- Пользователи часто используют заглавную букву в начале или случайные заглавные буквы.
- Распространённые шаблоны включают использование заглавной буквы в начале слова.
Этот шаг продемонстрировал, как использовать генерацию паролей с разными регистрами для атак брутфорсом, что эффективно против паролей, использующих как прописные, так и строчные буквы.
Генерация буквенно-цифровых паролей
В этом шаге вы узнаете, как генерировать пароли, сочетающие буквы и цифры. Буквенно-цифровые пароли очень распространены, так как они балансируют безопасность и запоминаемость.
Буквенно-цифровые пароли являются одним из самых распространённых типов паролей, потому что:
- Они удовлетворяют большинству требований к сложности паролей.
- Их легче запомнить, чем чисто случайные строки.
- Они часто используются в корпоративных средах.
Давайте сгенерируем буквенно-цифровые пароли с помощью Hydra:
hydra -l testuser -vV -x 3:4:a-zA-Z0-9 127.0.0.1 ftp -s 2121
Это генерирует пароли с использованием:
a-z: строчные буквы (a-z)A-Z: прописные буквы (A-Z)0-9: цифры (0-9)
Примеры сгенерированных паролей: "abc", "A2b", "123", "aB1", "Te1" и т.д.
Давайте попробуем более целенаправленный подход, используя только строчные буквы и цифры:
hydra -l testuser -vV -x 3:4:a-z0-9 127.0.0.1 ftp -s 2121
Это сгенерирует пароли, такие как "aaa", "aa1", "a12", "123", "test" и т.д.
Общие буквенно-цифровые шаблоны:
Пользователи часто следуют предсказуемым шаблонам при создании буквенно-цифровых паролей:
- Слово + цифры (например, "pass123")
- Цифры + слово (например, "123pass")
- Переменное чередование букв и цифр (например, "a1b2")
Давайте смоделируем шаблон, где пользователи могут использовать короткие буквенно-цифровые комбинации:
hydra -l testuser -vV -x 4:5:a-z0-9 127.0.0.1 ftp -s 2121
Этот шаг продемонстрировал, как генерировать буквенно-цифровые пароли, которые являются одними из самых распространённых типов паролей в реальных сценариях.
Генерация паролей только из цифр
В этом шаге вы узнаете, как генерировать пароли, состоящие только из цифр. Такие пароли часто используются для ПИН-кодов, простых паролей и систем, где допускаются только цифры.
Пароли, состоящие только из цифр, часто используются в:
- ПИН-кодах устройств и учетных записей
- Простых паролях для базовых систем
- Временных паролях
- Системах со старыми требованиями, допускающими только цифры
Давайте сгенерируем пароли, состоящие только из цифр:
hydra -l testuser -vV -x 3:6:0-9 127.0.0.1 ftp -s 2121
Это генерирует пароли, состоящие только из цифр, такие как "123", "1234", "0000", "9999", "5678" и т.д.
Для паролей, похожих на ПИН-коды (обычно 4-6 цифр), попробуйте:
hydra -l testuser -vV -x 4:4:0-9 127.0.0.1 ftp -s 2121
Это генерирует комбинации ровно из 4 цифр, которые могут представлять:
- Годы (1990, 2000, 2023 и т.д.)
- Распространённые ПИН-коды (1234, 0000, 1111 и т.д.)
- Годы рождения
- Значимые даты
Давайте попробуем шаблон из 6 цифр, распространённый для более длинных ПИН-кодов:
hydra -l testuser -vV -x 6:6:0-9 127.0.0.1 ftp -s 2121
Общие шаблоны паролей, состоящих только из цифр:
Пользователи часто выбирают предсказуемые пароли, состоящие только из цифр:
- Последовательные числа: 123456, 654321
- Повторяющиеся цифры: 111111, 000000
- Даты: годы рождения, текущий год
- Простые шаблоны: 121212, 123123
Применение в реальных условиях:
Генерация паролей, состоящих только из цифр, особенно полезна при атаке на:
- ПИН-коды мобильных устройств
- ПИН-коды банкоматов
- Простые пароли для систем
- Временные коды доступа
Этот шаг продемонстрировал, как генерировать пароли, состоящие только из цифр, которые часто используются во многих системах.
Генерация паролей с пользовательскими наборами символов, включая символы
В этом шаге вы научитесь создавать наборы символов, включающие определённые знаки. Это полезно, когда известно или предполагается, что целевая система использует определённые специальные символы в паролях.
Многие политики паролей требуют специальных символов, и пользователи часто выбирают распространённые знаки, которые легко набирать. Понимание, какие символы включать, может сделать ваши атаки методом грубой силы более эффективными.
Давайте сгенерируем пароли с настроенными наборами символов, включающими определённые знаки:
hydra -l testuser -vV -x '3:4:a-z0-9!@#' 127.0.0.1 ftp -s 2121
Это генерирует пароли, используя:
a-z: строчные буквы (a-z)0-9: цифры (0-9)!@#: определённые символы
Примеры: "abc!", "a1@", "te#", "12!", и т.д.
Давайте попробуем другой набор распространённых символов:
hydra -l testuser -vV -x '3:4:a-z$%&' 127.0.0.1 ftp -s 2121
Это использует строчные буквы и символы $, %, &.
Для паролей, которые могут включать более сложные символы:
hydra -l testuser -vV -x '3:4:a-zA-Z0-9!@#$%^&*' 127.0.0.1 ftp -s 2121
Это создаёт комплексный набор символов с:
- Строчными и прописными буквами
- Цифрами
- Распространёнными символами: !@#$%^&*
Наиболее распространённые символы в паролях:
Основываясь на анализе паролей, эти символы чаще всего используются:
!- Восклицательный знак@- Знак "собаки"#- Решётка/фунт$- Знак доллара%- Знак процента^- Знак возведения в степень&- Знак амперсанда*- Звёздочка
Стратегический выбор символов:
При создании настроенных наборов символов следует учитывать:
- Доступность на клавиатуре (символы на числовой строке часто используются)
- Требования политики паролей
- Культурные предпочтения (некоторые символы более распространены в определённых регионах)
- Ограничения системы (некоторые системы не допускают определённых символов)
Целевые наборы символов:
Для конкретных сценариев можно использовать целевые наборы символов:
## Распространённые знаки препинания
hydra -l testuser -vV -x '3:4:a-z0-9.,;:' 127.0.0.1 ftp -s 2121
## Символы скобок
hydra -l testuser -vV -x '3:4:a-z0-9()[]{}' 127.0.0.1 ftp -s 2121
## Математические символы
hydra -l testuser -vV -x '3:4:a-z0-9+-=/' 127.0.0.1 ftp -s 2121
В этом шаге показано, как создавать настроенные наборы символов с определёнными знаками, позволяя настраивать атаки методом грубой силы на основе известных или предполагаемых шаблонов паролей.
Резюме
В этом лабораторном практикуме вы изучили использование Hydra для генерации паролей в атаках методом грубой силы с помощью пошагового подхода. Вы подробно изучили опцию -x Hydra в различных сценариях, каждый из которых фокусировался на конкретных методах генерации паролей.
Вы отработали различные стратегии генерации паролей, включая:
- Генерация базовых паролей: Изучение синтаксиса опции
-xи основных концепций - Сценарии атак на FTP: Применение генерации паролей к реальным сервисам
- Пароли с прописными и строчными буквами: Объединение прописных и строчных букв для распространённых шаблонов паролей
- Буквенно-цифровые пароли: Использование букв и цифр, наиболее распространённого типа паролей в реальных сценариях
- Пароли, состоящие только из цифр: Целевое воздействие на ПИН-коды и простые цифровые пароли с высокой эффективностью взлома
- Настраиваемые наборы символов: Создание целевых комбинаций символов на основе распространённых шаблонов использования


