Взлом хэшей в Linux с hashcat

Что такое хэши
Определение: хэш — это односторонняя математическая функция, которая преобразует входные данные любой длины в фиксированный набор битов; при правильном применении хэши необратимы.
Краткие свойства хеширования:
- Быстро вычисляются.
- Детеминированы: один и тот же вход даёт один и тот же результат.
- Малые изменения во входе кардинально меняют выход.
- Надёжные алгоритмы минимизируют вероятность коллизий (разных входов с одинаковым выводом).
Важно: хеширование отличают от шифрования тем, что для хэша обычно нет «ключа», который позволил бы восстановить исходные данные.
Зачем использовать hashcat
Hashcat — это многопоточный инструмент для перебора паролей по хэшам. Его основные преимущества:
- Поддержка сотен алгоритмов (MD5, NTLM, bcrypt, SHA-* и др.).
- Несколько режимов атак: словарные, комбинаторные, правила, маски, гибридные и брутфорс.
- Использование как CPU, так и GPU для ускорения.
- Кроссплатформенность: Windows, Linux, BSD и др.
Краткое руководство по выбору режима атаки:
- Словарь — быстрый старт при наличии предположений о пароле.
- Правила — расширяют словарь преобразованиями (Append, Prepend, заменами).
- Маска — эффективна, когда известен формат пароля (например, 2 буквы + 4 цифры).
- Брутфорс — гарантированно найдёт пароль в пределах заданного алфавита и длины, но может быть крайне медленным.
Режимы атак hashcat — что они делают и когда не работают
Словарная атака (dictionary)
- Описание: проверяет слова из файла-словника против хэша.
- Подходит если цель использует простые или скомпрометированные пароли.
- Когда не работает: пользователи применяют длинные случайные пароли или фразы.
Правила (rule-based)
- Описание: применяет трансформации к словнику (замены, добавления символов, изменение регистра).
- Подходит для экономии времени при известных паттернах пользователя.
- Когда не работает: если пароль полностью случайный.
Маска (mask)
- Описание: перебор по заранее заданной структуре (например ?u?l?d?d — загл, стр, цифра, цифра).
- Подходит при знании формата (микросервисы, шаблоны учета паролей).
- Когда не работает: когда формат неизвестен или слишком вариативен.
Комбинационная атака
- Описание: комбинирует два словника (например имя + год).
- Подходит при использовании комбинаций знакомых слов.
Брутфорс
- Описание: полный перебор всех возможных комбинаций в заданном диапазоне.
- Подходит как крайняя мера.
- Когда не работает: при отсутствии времени и слишком большой поисковой области.
Гибрид (dictionary + mask)
- Описание: берёт слово из словника и дополняет маской (например пароль + 2 цифры).
- Подходит при частичном знании структуры пароля.
Как установить hashcat в Linux
Установка в разных дистрибутивах (выполняйте от пользователя с sudo):
Ubuntu / Debian:
sudo apt update
sudo apt install hashcatFedora / RHEL / CentOS (dnf):
sudo dnf update
sudo dnf install hashcatArch Linux:
sudo pacman -Syu
sudo pacman -S hashcatПроверка после установки:
hashcat --helpСовет: проверьте, что ваша система соответствует аппаратным требованиям и что драйверы GPU установлены, если вы планируете использовать ускорение на GPU.
Основные опции hashcat
| Короткая | Параметр | Описание |
|---|---|---|
| -m | тип хэша | Референсный номер типа хэша (например в примере SHA512 — 1800) |
| -a | режим атаки | 0 — словарь, 1 — комбинатор, 3 — брутфорс/маска и т.д. |
| -o | output-file | Сохранение найденных паролей в файл |
| wordlist | Путь к словарю паролей (файл) |
Примечание: hashcat использует числовые коды для типов хэшей; найдите соответствие через справку или документацию.
Важно: перед запуском убедитесь, что у вас есть законное разрешение на тестирование целевой системы.
Пример: извлечение хэшей из /etc/shadow и взлом
Файл /etc/shadow в Linux хранит хэши паролей. Он доступен только root. Если вы получили его копию незаконным способом — это инцидент безопасности. В тестовой среде или с разрешения можно провести анализ.
Создадим тестового пользователя и зададим пароль (демонстрация в контролируемой среде):
sudo su
sudo useradd -c "Alice" alice
passwd aliceПосмотреть строку пользователя в /etc/shadow:
grep '^alice:' /etc/shadowПример вывода (обрезано):
alice:$y$j9T$TANXgpk59y8r3jgPbDl/w/$UqiK6yahwqfyqhcegWLa1.z64TyePP5.VQpUnLqI3VD:19023:0:99999:7::Сохраните строку хэша в файл hash.txt:
echo 'alice:$y$j9T$TANXgpk59y8r3jgPbDl/w/$UqiK6yahwqfyqhcegWLa1.z64TyePP5.VQpUnLqI3VD' > hash.txtОпределение типа хэша:
- В /etc/login.defs может содержаться ENCRYPT_METHOD.
grep ENCRYPT_METHOD /etc/login.defs- Вы также можете искать подсказки в значении префикса ($6$ — обычно SHA512). Проверка через hashcat можно выполнить так:
hashcat -h | grep -i sha512В примере SHA512 в hashcat соответствует коду 1800. Запускаем атаку словарём rockyou (пример в тестовой среде):
hashcat -m 1800 -a 0 hash.txt /usr/share/wordlists/rockyou.txtФрагмент вывода (обозначено
.
.
$y$j9T$TANXgpk59y8r3jgPbDl/w/$UqiK6yahwqfyqhcegWLa1.z64TyePP5.VQpUnLqI3VD:12345
.
.
Примечание: в Kali Linux rockyou.txt часто предустановлен в /usr/share/wordlists. Для других дистрибутивов можно искать словари или скачать из репозиториев:
locate wordlists | lessПример загрузки словаря из репозитория (в исходной статье использован пример):
wget https://github.com/danielmiessler/SecLists/blob/master/Passwords/Leaked-Databases/rockyou-20.txtМетодология для тестировщика (мини-плейбук)
- Сбор и валидация:
- Убедитесь в правовом основании теста.
- Соберите копию /etc/shadow и /etc/passwd (в тестовой среде).
- Идентификация:
- Определите формат хэша (префиксы, login.defs, справка hashcat).
- Подготовка словарей:
- Начните со стандартных словарей и локальных списков (rockyou, SecLists).
- Постройте пользовательские словари по профайлу цели.
- Выбор режима:
- Словарь + правила → маска → брутфорс (по возрастанию затрат).
- Запуск и мониторинг:
- Контролируйте нагрузку на систему и использование GPU.
- Сохраняйте найденные пары в файл с -o.
- Отчёт и ремедиация:
- Документируйте методику, время и найденные пароли.
- Предложите рекомендации по защите.
Критерии приёмки:
- Получен список успешных паролей для тестовых аккаунтов.
- Подготовлены рекомендации по исправлению уязвимостей.
- Работа проведена в рамках согласованных правил и времени.
Чек-лист ролей: Ред-тим и Сисадмин
Ред-тим:
- Иметь письменное разрешение на тестирование.
- Собрать артефакты: /etc/shadow, конфиги, профайлы.
- Использовать отдельную тестовую среду при возможности.
- Логировать все команды и результаты.
Сисадмин:
- Проверить, что /etc/shadow доступен только root.
- Включить сложную политику паролей и MFA.
- Использовать современный KDF (argon2id, bcrypt или scrypt) с параметрами, соответствующими производительности.
- Проводить периодическую смену и аудит паролей.
Защита от атак восстановления паролей
Практические рекомендации по защите учетных записей и хэшей:
- Использовать сильные KDF: argon2id (предпочтительный), bcrypt, scrypt. Эти алгоритмы намеренно медленные и затратные по памяти, что замедляет перебор.
- Добавлять соль (salt) к каждому паролю — уникальную и длинную.
- Увеличивать коэффициент итераций/параметры нагрузки KDF с учётом возможностей сервера.
- Включать многофакторную аутентификацию (MFA).
- Ограничивать доступ к файлу /etc/shadow и проводить мониторинг чтения/копирования системных файлов.
- Принудительная смена пароля при подозрительных утечках.
Безопасная политика паролей:
- Минимальная длина не менее 12–16 символов для пользовательских паролей.
- Поощрение случайно сгенерированных паролей и использование менеджеров паролей.
Когда hashcat не поможет быстро
- Пароль длинный и случайный (генератор паролей/фразы).
- Используется сильный KDF с высокой стоимостью (argon2id с высокой памятью и временем).
- Пароль состоит только из символов вне выбранного алфавита или использует Unicode-символы, не учтённые в маске.
Дополнительные инструменты и альтернативы
- John the Ripper — альтернатива для восстановления паролей, имеет свои режимы и плагины.
- Hash-Identifier / online resources — для предварительной идентификации типа хэша (только для известных и разрешённых случаев).
- GPU-ускорение и распределённые очереди — применять с осторожностью и правовым обоснованием.
Блок с полезными шаблонами и сочетаниями команд
Пример запуска rule-based атаки с выводом в файл:
hashcat -m 1800 -a 0 -r /usr/share/hashcat/rules/best64.rule hash.txt /usr/share/wordlists/rockyou.txt -o cracked.txtПример маски (одна заглавная, 5 строчных, 2 цифры):
hashcat -m 1800 -a 3 hash.txt ?u?l?l?l?l?l?d?dЗапуск в режиме комбинаторики (2 словаря):
hashcat -m 1800 -a 1 hash.txt dict1.txt dict2.txtЭтические и правовые замечания
- Всегда имейте письменное разрешение на тестирование. Несанкционированное получение и использование хэшей — преступление.
- Инструменты восстановления паролей применимы только в контролируемой среде или в рамках разрешённого пентеста.
Краткое резюме
Hashcat — универсальный инструмент для восстановления паролей по хэшам. Для эффективного использования требуется понимать форматы хэшей, выбирать подходящие режимы атак и готовить качественные словари. Защититься от атак помогают современные KDF, соль, MFA и строгая политика паролей.
Важно: любой тест должен проводиться в рамках правового поля и корпоративной политики.
Похожие материалы
Отключить Always‑On на iPhone 14 Pro
Использовать iPhone при неработающей кнопке Домой
Настройка HDR на PS5 — максимальная яркость
Парсинг JSON в shell с jq
Команда tree в Linux — визуализация каталогов