Как взломать хэши в Linux с hashcat

Введение
Если вы начинающий специалист по кибербезопасности и хотите изучать «наступательные» приёмы, важно понимать инструменты, которые используют pentester’ы и red team’ы. Одно из таких заданий — привилегированное повышение доступа, которое часто начинается с получения хэшей паролей. hashcat — мощный инструмент для брутфорса и атак по словарю, который помогает восстановить пароли по известным хэшам.
В этой статье вы найдёте:
- Краткое объяснение хэшей и их свойств;
- Обзор режимов атак hashcat;
- Инструкции по установке на разных дистрибутивах Linux;
- Пошаговый пример извлечения хэша из /etc/shadow и его расшифровки;
- Альтернативные подходы, контрольный чеклист для ролей и рекомендации по защите.
Важно: все демонстрации выполняйте в контролируемой лаборатории с явным разрешением на тестирование. Несанкционированный взлом является незаконным.
Что такое хэши?
Хеширование — это односторонняя математическая функция, которая возвращает фиксированной длины значение независимо от размера входа. Основные свойства:
- Быстро вычисляется;
- Детeрминировано: одинаковый вход даёт одинаковый хэш;
- Небольшие изменения во входе существенно меняют хэш;
- Односторонняя операция: по хэшу восстановить исход не тривиально.
Краткое определение: хеш — уникальный идентификатор данных фиксированной длины, используемый для проверки целостности и хранения паролей.
Почему hashcat?
hashcat — многопоточный инструмент для восстановления паролей по хэшам. Его сильные стороны:
- Поддерживает 300+ алгоритмов (MD5, SHA1, SHA512, bcrypt, NTLM и другие);
- Много режимов атак: словарь, комбинатор, правила, брутфорс, гибриды;
- Работает на Windows, Linux, BSD и macOS (при сборке);
- Поддерживает работу на GPU для ускорения поиска.
Для практики и тестов hashcat — удобный выбор благодаря гибкости режимов и богатству опций.
Режимы атак в hashcat — кратко
- Brute-force (брутфорс): перебор всех комбинаций в заданном наборе символов и длине. Гарантирует находку при достаточной длине, но часто непрактичен по времени.
- Dictionary (словари): перебор значений из списка (wordlist). Быстро при наличии подходящих слов.
- Hybrid: словарь + маска/брутфорс, например дописать цифры или символы.
- Rule-based: применение правил к элементам словаря (подмена, добавление, удаление, капитализация и т.д.).
- Combinator: сочетание слов из двух списков.
Ментальная модель: думайте о поиске пароля как об уменьшении пространства поиска — словари и правила сильно сокращают пространство по сравнению с чистым брутфорсом.
Установка hashcat на Linux
На многих дистрибутивах hashcat доступен в репозиториях. Примеры:
Для Debian/Ubuntu:
sudo apt-get update
sudo apt-get install hashcatДля Fedora/CentOS/RHEL (dnf):
sudo dnf update
sudo dnf install hashcatДля Arch Linux:
sudo pacman -Syu
sudo pacman -S hashcatПосле установки рекомендуется просмотреть справку:
hashcat --helpТаблица основных опций (кратко):
| Опция | Описание |
|---|---|
| -m | Тип хэша (числовой идентификатор), по умолчанию 0 = MD5 |
| -a | Режим атаки: 0 = straight (словник), 1 = комбинированный, 3 = брутфорс |
| -o | Выходной файл для найденных паролей |
| wordlist | Путь к словарю паролей |
Примечание: перед использованием убедитесь, что ваше железо соответствует требованиям hashcat (GPU-драйверы, доступ к OpenCL/CUDA и т. п.). Подробности — на официальном сайте hashcat.
Извлечение и взлом хэшей из /etc/shadow
Файл /etc/shadow хранит хэши паролей пользователей в Linux и доступен только root. Если вы получили содержимое этого файла (в рамках легального теста), можно попытаться восстановить пароли.
Пример: создадим пользователя alice и проверим её хэш (выполняйте в лаборатории):
sudo su
sudo useradd -c "Alice" alice
passwd aliceПроверим запись в /etc/shadow:
cut -d: -f1 /etc/shadow | grep aliceПример строки (приведён вывод):
alice:$y$j9T$TANXgpk59y8r3jgPbDl/w/$UqiK6yahwqfyqhcegWLa1.z64TyePP5.VQpUnLqI3VD:19023:0:99999:7::Сохраните строку хэша в файл hash.txt.
Определение типа хэша
Тип хэша часто можно определить по префиксу или по конфигурации системы. Например, в /etc/login.defs задаётся ENCRYPT_METHOD:
grep ENCRYPT_METHOD /etc/login.defsТакже hashcat содержит список режимов с описанием; поиск по названию помогает найти числовой идентификатор. Например, для sha512 идёт ссылка на идентификатор 1800:
hashcat -h | grep sha512Запуск hashcat
Используем режим словаря (-a 0) с referenc’ом шифра (-m 1800) и словарём rockyou:
hashcat -m 1800 -a 0 hash.txt /usr/share/wordlists/rockyou.txtПример вывода, где найден пароль (в примере пароль — 12345):
.
.
$y$j9T$TANXgpk59y8r3jgPbDl/w/$UqiK6yahwqfyqhcegWLa1.z64TyePP5.VQpUnLqI3VD:12345
.
.
Примечание о словарях: в Kali rockyou.txt обычно предустановлен в /usr/share/wordlists. Чтобы найти словари на системе, можно выполнить:
locate wordlists | lessДля других дистрибутивов rockyou можно скачать из репозитория SecLists на GitHub, например:
wget https://github.com/danielmiessler/SecLists/blob/master/Passwords/Leaked-Databases/rockyou-20.txtВажно: из-за форматов файлов GitHub этот URL может вернуть HTML — используйте raw-ссылку или скачайте репозиторий целиком.
Пошаговая методика (мини-методология)
- Подготовка окружения: изолированная лаборатория, легальные права доступа, обновлённые драйверы GPU/CPU.
- Сбор хэшей: получаем целевые хэши (например, /etc/shadow) и сохраняем в файл.
- Определение типа хэша: по префиксу ($6$, $2y$ и т.д.) или через справку hashcat (-m).
- Выбор словаря и правил: rockyou, SecLists, подборка целевых слов; применить правила (-r).
- Запуск брутфорса/гибридов: маски и правила для ускорения.
- Анализ результатов: проверка файла вывода (-o), повторная итерация с другими словарями/правилами.
- Документирование и отчётность: время выполнения, параметры, найденные пароли и рекомендации по устранению уязвимости.
Практические подсказки и приёмы
- Используйте опцию –show для быстрого просмотра найденных паролей:
hashcat --show -m 1800 hash.txt- Применяйте правила из папки rules/ hashcat для генерации вариантов слов.
- Для GPU-ускорения убедитесь, что установлены корректные драйверы и что hashcat видит устройства (hashcat -I).
- Если hashcat не поддерживает имя алгоритма, ищите числовой идентификатор (-m).
Альтернативные инструменты и подходы
- John the Ripper: популярный инструмент для восстановления паролей, удобен для некоторых форматов и интеграций.
- oclHashcat (историческое имя): ныне объединён с hashcat, но в отдельных сборках всё ещё встречается.
- Hydra, Medusa: рассчитаны на сетевые атаки (онлайн bruteforce), а не на локальные хэши.
Когда выбирать альтернативы: если требуется поддержка специфического формата или встроенная предварительная обработка — John может быть удобнее; для масштабного GPU-брутфорса чаще выбирают hashcat.
Ментальные модели и эвристики
- «Сделай пространство поиска меньше»: сначала словари и правила, затем маски и брутфорс.
- «Сочетай знания о пользователе со словарём»: имена, даты, компании, популярные паттерны.
- «Много правил — мало итераций»: комбинирование небольших правил часто эффективнее одного огромного брутфорса.
Роль‑базовые чеклисты
Для red team / pentester:
- Убедиться в авторизации на тестирование;
- Экспортировать хэши корректно и безопасно;
- Начать с целевых словарей и правил;
- Логировать время и параметры атак;
- Очистить следы в лаборатории и оформить отчёт.
Для системного администратора:
- Защитить /etc/shadow (правильные права доступа);
- Использовать соли и современные алгоритмы (bcrypt/argon2 когда возможно);
- Отслеживать привилегированные операции и попытки чтения;
- Ограничить использование слабых паролей политиками и блокировками;
- Периодически проводить аудит и тесты в контролируемой среде.
Для blue team / SOC:
- Настроить детекцию массовых попыток брутфорса на сервисах;
- Контролировать подозрительную активность с учетных записей;
- Имплементировать MFA на критичных ресурсах;
- Реагировать по инциденту: смена ключей/паролей и анализ вектора компрометации.
Критерии приёмки
- Хэш корректно распознан (верный -m для hashcat);
- Инструмент запускается и использует доступный ускоритель (CPU/GPU);
- Пароль либо найден и подтверждён, либо пространство поиска исчерпано;
- Все шаги задокументированы и воспроизводимы в тестовой среде.
Когда методы не сработают (контрпримеры)
- Современное хеширование с сильной солью и адаптивным алгоритмом (bcrypt, argon2) существенно замедляет брутфорс и делает восстановление непрактичным.
- Длинные и случайные пароли (high-entropy) практически не поддаются словарным атакам.
- Если хэши частично повреждены или используют нестандартный формат, это усложняет или делает невозможным обработку стандартными инструментами.
Тестовые случаи и приёмка результатов
- Тест 1: распознать SHA512-хэш и найти пароль из rockyou — ожидаемый результат: пароль найден.
- Тест 2: применить правило uppercase + добавить 2 цифры — ожидаемый результат: найти варианты, не покрываемые базовым словарём.
- Тест 3: попытка брутфорса с маской ?l?l?l?d?d (3 буквы + 2 цифры) — ожидаемый результат: успешная проверка ограниченного пространства.
Рекомендации по защите (жёсткая защита)
- Не храните пароли в открытом виде; применяйте адаптивные алгоритмы (bcrypt/argon2) с настройкой времени/памяти;
- Используйте уникальную соль для каждой записи;
- Внедрите многофакторную аутентификацию для критичных учетных записей;
- Включите блокировки/затримки логина после нескольких неудачных попыток;
- Проводите регулярные учения по восстановлению после инцидента.
Юридические и приватные соображения
- Любые действия по сбору или взлому хэшей возможны только с явным разрешением владельца системы;
- Обработка персональных данных должна соответствовать локальному законодательству о защите данных (например, GDPR в ЕС) — сообщите о рисках и минимизируйте сведения, которые вы храните как доказательства;
- При тестировании фиксируйте разрешения и границы теста.
Краткая сводка по инструментам и словарям
- rockyou.txt — один из самых распространённых словарей для тестирования (в Kali находится в /usr/share/wordlists по умолчанию);
- SecLists — большой репозиторий словарей и списков для тестов безопасности;
- Правила (rules) — мощный способ расширить словарные атаки без полного брутфорса.
1‑строчный глоссарий
- Соль (salt): случайные данные, добавляемые к паролю перед хешированием для уникализации хэшей;
- Маска: шаблон для брутфорса (например, ?l?l?d означает две строчные буквы и цифру);
- -m: числовой идентификатор алгоритма в hashcat;
- -a: режим атаки в hashcat.
Факт‑бокс (ключевые числа и ссылки)
- Поддержка алгоритмов: 300+;
- Часто используемый идентификатор для SHA512 в hashcat: 1800;
- Популярный локальный словарь в Kali: /usr/share/wordlists/rockyou.txt;
- Команда просмотра помощи: hashcat –help
Примеры вывода и отладка
Если hashcat выдаёт ошибки:
- Проверьте драйверы GPU и доступность OpenCL/CUDA;
- Убедитесь, что формат хэша корректен и соответствует выбранному -m;
- Используйте –debug-mode и –debug-file для подробного логирования при необходимости.
Заключение
hashcat — универсальный инструмент для восстановления паролей по хэшам, полезный для pentest’ов и аудитов безопасности. Эффективность атак зависит от выбранной стратегии: сначала словари и правила, затем маски и брутфорс. Администраторам важно применять современные схемы хранения паролей, использовать соли и адаптивные алгоритмы, а также внедрять MFA и мониторинг аномалий.
Важно: соблюдайте юридические ограничения и проводите тесты только в рамках разрешённой и изолированной среды.
Короткое резюме ниже.
Краткое резюме:
- hashcat позволяет восстанавливать пароли по хэшам разными методами;
- начинайте с идентификации типа хэша и использования целевых словарей;
- защищайте системы современными алгоритмами, солью и MFA.