Гид по технологиям

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

7 min read Кибербезопасность Обновлено 26 Dec 2025
Взлом хэшей в Linux с hashcat
Взлом хэшей в Linux с hashcat

Взлом хэшей в Linux с помощью hashcat

Что такое хэши

Определение: хэш — это односторонняя математическая функция, которая преобразует входные данные любой длины в фиксированный набор битов; при правильном применении хэши необратимы.

Краткие свойства хеширования:

  • Быстро вычисляются.
  • Детеминированы: один и тот же вход даёт один и тот же результат.
  • Малые изменения во входе кардинально меняют выход.
  • Надёжные алгоритмы минимизируют вероятность коллизий (разных входов с одинаковым выводом).

Важно: хеширование отличают от шифрования тем, что для хэша обычно нет «ключа», который позволил бы восстановить исходные данные.

Зачем использовать hashcat

Hashcat — это многопоточный инструмент для перебора паролей по хэшам. Его основные преимущества:

  • Поддержка сотен алгоритмов (MD5, NTLM, bcrypt, SHA-* и др.).
  • Несколько режимов атак: словарные, комбинаторные, правила, маски, гибридные и брутфорс.
  • Использование как CPU, так и GPU для ускорения.
  • Кроссплатформенность: Windows, Linux, BSD и др.

Краткое руководство по выбору режима атаки:

  • Словарь — быстрый старт при наличии предположений о пароле.
  • Правила — расширяют словарь преобразованиями (Append, Prepend, заменами).
  • Маска — эффективна, когда известен формат пароля (например, 2 буквы + 4 цифры).
  • Брутфорс — гарантированно найдёт пароль в пределах заданного алфавита и длины, но может быть крайне медленным.

Режимы атак hashcat — что они делают и когда не работают

  1. Словарная атака (dictionary)

    • Описание: проверяет слова из файла-словника против хэша.
    • Подходит если цель использует простые или скомпрометированные пароли.
    • Когда не работает: пользователи применяют длинные случайные пароли или фразы.
  2. Правила (rule-based)

    • Описание: применяет трансформации к словнику (замены, добавления символов, изменение регистра).
    • Подходит для экономии времени при известных паттернах пользователя.
    • Когда не работает: если пароль полностью случайный.
  3. Маска (mask)

    • Описание: перебор по заранее заданной структуре (например ?u?l?d?d — загл, стр, цифра, цифра).
    • Подходит при знании формата (микросервисы, шаблоны учета паролей).
    • Когда не работает: когда формат неизвестен или слишком вариативен.
  4. Комбинационная атака

    • Описание: комбинирует два словника (например имя + год).
    • Подходит при использовании комбинаций знакомых слов.
  5. Брутфорс

    • Описание: полный перебор всех возможных комбинаций в заданном диапазоне.
    • Подходит как крайняя мера.
    • Когда не работает: при отсутствии времени и слишком большой поисковой области.
  6. Гибрид (dictionary + mask)

    • Описание: берёт слово из словника и дополняет маской (например пароль + 2 цифры).
    • Подходит при частичном знании структуры пароля.

Как установить hashcat в Linux

Установка в разных дистрибутивах (выполняйте от пользователя с sudo):

Ubuntu / Debian:

sudo apt update
sudo apt install hashcat

Fedora / RHEL / CentOS (dnf):

sudo dnf update
sudo dnf install hashcat

Arch Linux:

sudo pacman -Syu
sudo pacman -S hashcat

Проверка после установки:

hashcat --help

Совет: проверьте, что ваша система соответствует аппаратным требованиям и что драйверы GPU установлены, если вы планируете использовать ускорение на GPU.

Основные опции hashcat

КороткаяПараметрОписание
-mтип хэшаРеференсный номер типа хэша (например в примере SHA512 — 1800)
-aрежим атаки0 — словарь, 1 — комбинатор, 3 — брутфорс/маска и т.д.
-ooutput-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

Хэш пароля пользователя Alice и метод хеширования

  • Вы также можете искать подсказки в значении префикса ($6$ — обычно SHA512). Проверка через hashcat можно выполнить так:
hashcat -h | grep -i sha512

Поиск режима sha512 в справке hashcat

В примере 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

Пример расположения словарей в Kali Linux

Пример загрузки словаря из репозитория (в исходной статье использован пример):

wget https://github.com/danielmiessler/SecLists/blob/master/Passwords/Leaked-Databases/rockyou-20.txt

Методология для тестировщика (мини-плейбук)

  1. Сбор и валидация:
    • Убедитесь в правовом основании теста.
    • Соберите копию /etc/shadow и /etc/passwd (в тестовой среде).
  2. Идентификация:
    • Определите формат хэша (префиксы, login.defs, справка hashcat).
  3. Подготовка словарей:
    • Начните со стандартных словарей и локальных списков (rockyou, SecLists).
    • Постройте пользовательские словари по профайлу цели.
  4. Выбор режима:
    • Словарь + правила → маска → брутфорс (по возрастанию затрат).
  5. Запуск и мониторинг:
    • Контролируйте нагрузку на систему и использование GPU.
    • Сохраняйте найденные пары в файл с -o.
  6. Отчёт и ремедиация:
    • Документируйте методику, время и найденные пароли.
    • Предложите рекомендации по защите.

Критерии приёмки:

  • Получен список успешных паролей для тестовых аккаунтов.
  • Подготовлены рекомендации по исправлению уязвимостей.
  • Работа проведена в рамках согласованных правил и времени.

Чек-лист ролей: Ред-тим и Сисадмин

Ред-тим:

  • Иметь письменное разрешение на тестирование.
  • Собрать артефакты: /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 и строгая политика паролей.

Важно: любой тест должен проводиться в рамках правового поля и корпоративной политики.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Отключить Always‑On на iPhone 14 Pro
Советы

Отключить Always‑On на iPhone 14 Pro

Использовать iPhone при неработающей кнопке Домой
Мобильные устройства

Использовать iPhone при неработающей кнопке Домой

Настройка HDR на PS5 — максимальная яркость
Гайды

Настройка HDR на PS5 — максимальная яркость

Парсинг JSON в shell с jq
Shell

Парсинг JSON в shell с jq

Команда tree в Linux — визуализация каталогов
Linux

Команда tree в Linux — визуализация каталогов

Управление громкостью телевизора через Fire TV Stick
Руководство

Управление громкостью телевизора через Fire TV Stick