Hashcat: главный инструмент для тестирования надёжности паролей

Hashcat: главный инструмент для тестирования надёжности паролей
Важно: Материал опубликован исключительно в образовательных целях и предназначен для изучения принципов работы технологий, методов защиты и проведения легального тестирования безопасности. Любые проверки, сканирование, эксплуатация уязвимостей или иные действия в отношении информационных систем допускаются только при наличии явного разрешения их владельца или в специально созданной лабораторной среде. Автор и администрация Kraken не несут ответственности за неправомерное использование информации, представленной в данной статье.

Когда происходит очередная крупная утечка данных, в новостях почти всегда появляется одна и та же фраза: "злоумышленники получили базу с хэшами паролей". У многих возникает вполне логичный вопрос. Если украли не сами пароли, а какие-то непонятные строки символов, почему это вообще считается серьёзной проблемой?

Дело в том, что современные системы практически никогда не хранят пароли в открытом виде. Вместо этого при регистрации пользователя пароль проходит через специальный алгоритм хэширования, который преобразует его в строку фиксированной длины. Например, пароль password после обработки алгоритмом MD5 превратится в:

5f4dcc3b5aa765d61d8327deb882cf99

Именно эта строка сохраняется в базе данных. Когда пользователь вводит пароль повторно, система ещё раз вычисляет его хэш и сравнивает результат с тем, что уже хранится в базе. Если значения совпадают - пользователь успешно проходит аутентификацию.

Важная особенность хэширования заключается в том, что этот процесс работает только в одну сторону. Получить хэш из пароля очень просто, а вот выполнить обратную операцию невозможно. Именно поэтому специалисты никогда не говорят о "расшифровке" хэшей. Расшифровывать здесь попросту нечего.

Но тогда возникает следующий вопрос. Если восстановить исходный пароль невозможно, каким образом злоумышленники всё же получают доступ к учётным записям после утечки базы данных?

Ответ довольно прост. Вместо попытки обратить хэш-функцию они начинают проверять огромное количество возможных паролей. Для каждого кандидата вычисляется новый хэш, после чего он сравнивается с тем, который был украден. Если значения совпали, значит найден исходный пароль.

Именно этим и занимается Hashcat - один из самых известных и производительных инструментов для тестирования надёжности паролей. Он не взламывает алгоритмы шифрования и не ищет способ "расшифровать" хэш. Его задача гораздо практичнее - максимально быстро проверять миллионы и даже миллиарды возможных комбинаций, используя мощности современных видеокарт.

Именно благодаря поддержке GPU Hashcat стал стандартом де-факто среди специалистов по информационной безопасности. Его используют во время внутренних аудитов безопасности, пентестов, соревнований CTF и расследований инцидентов, когда необходимо понять, насколько легко можно восстановить реальные пользовательские пароли после компрометации базы данных.

Однако здесь многие новички совершают одну и ту же ошибку. Они представляют работу Hashcat как бесконечный перебор всех возможных комбинаций символов. На практике такой подход почти никогда не используется. Чтобы понять почему, сначала нужно разобраться, что происходит после того, как в распоряжении специалиста оказывается хэш пароля. Именно с этого и начинается настоящая работа с Hashcat.

Получили хэш. Что дальше?

Представим типичную ситуацию. Во время внутреннего аудита безопасности или пентеста специалист получает дамп базы данных пользователей. Среди различных таблиц находится список логинов и хэшей паролей. Например, он может выглядеть так:

admin:5f4dcc3b5aa765d61d8327deb882cf99
ivan:8846f7eaee8fb117ad06bdd830b7586c
user:$2y$10$eImiTXuWVxfM37uY4JANjQ==

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

Это важный момент. Hashcat не умеет автоматически определять тип хэша. Программа должна точно знать, с каким алгоритмом ей предстоит работать. Если указать неверный режим, она честно переберёт миллионы паролей, но ни один из них никогда не совпадёт с искомым значением. В результате можно потерять часы вычислений и прийти к ошибочному выводу, что пароль слишком сложный.

К счастью, существуют утилиты, которые помогают определить наиболее вероятный алгоритм. Одна из самых известных - HashID.

hashid 5f4dcc3b5aa765d61d8327deb882cf99

После анализа программа предложит несколько возможных вариантов. Например, она может сообщить, что строка похожа на MD5, NTLM или другой алгоритм с аналогичной длиной хэша. Здесь важно понимать, что HashID не даёт стопроцентного ответа, а лишь предлагает наиболее вероятные варианты. Окончательное решение всегда принимает специалист, анализируя контекст, из которого был получен дамп.

Именно контекст зачастую оказывается важнее самого хэша. Например, если данные были получены из старого PHP-приложения, есть вероятность встретить MD5. Если речь идёт о Windows Active Directory, гораздо чаще используются NTLM-хэши. Современные веб-приложения обычно применяют bcrypt, Argon2 или PBKDF2. Опытный специалист всегда учитывает происхождение данных, а не полагается только на автоматическое определение.

Когда алгоритм становится известен, можно переходить к Hashcat. Каждому типу хэша соответствует собственный идентификатор, который передаётся через параметр -m. Например, для MD5 используется режим 0.

hashcat -m 0 hashes.txt rockyou.txt

На первый взгляд команда выглядит довольно простой, но в ней уже содержится вся необходимая информация для первого запуска. Параметр -m 0 сообщает Hashcat, что предстоит работать с MD5. Файл hashes.txt содержит список хэшей, которые необходимо проверить, а rockyou.txt - словарь с паролями, которые программа будет последовательно использовать в качестве кандидатов.

Здесь у многих возникает следующий вопрос. Если достаточно указать словарь и дождаться окончания проверки, почему вообще существуют десятки различных режимов атак, правил, масок и других возможностей Hashcat? Неужели нельзя просто взять самый большой словарь, который удастся найти, и проверить его целиком?

Именно на этом этапе становится понятно, что работа с Hashcat гораздо интереснее, чем кажется на первый взгляд. Огромный словарь далеко не всегда означает хороший результат, а полный перебор практически никогда не является лучшей стратегией.

Почему огромный словарь далеко не всегда решает проблему

Когда человек впервые знакомится с Hashcat, логика кажется очевидной. Если программа умеет проверять миллионы паролей в секунду, значит достаточно найти самый большой словарь, запустить подбор и дождаться результата. На практике всё работает совсем иначе.

Представьте двух пользователей. Первый в качестве пароля выбрал обычное слово password, второй использовал Kraken2026!. Формально оба пароля можно найти с помощью Hashcat, но вероятность успеха будет совершенно разной. Первый пароль наверняка присутствует практически в любом популярном словаре. Второй, скорее всего, нет, хотя человек придумал его буквально за несколько секунд.

Именно поэтому специалисты не используют словари как универсальное решение. Они рассматривают их лишь как первую и самую быструю проверку. Если пароль относится к числу распространённых комбинаций, Hashcat найдёт его практически сразу. Если же пользователь хоть немного изменил привычное слово, потребуется совершенно другой подход.

В качестве первого словаря очень часто используют RockYou. Это одна из самых известных коллекций паролей, составленная на основе реальной утечки данных. В ней содержатся миллионы комбинаций, которыми когда-то пользовались настоящие люди. Несмотря на свой возраст, RockYou до сих пор остаётся эффективным инструментом во время аудитов безопасности, потому что привычки пользователей меняются гораздо медленнее, чем кажется.

Запустить такую проверку можно буквально одной командой:

hashcat -m 0 hashes.txt rockyou.txt

После запуска Hashcat последовательно берёт каждый пароль из словаря, вычисляет его хэш и сравнивает с теми значениями, которые находятся в файле hashes.txt. Если совпадение найдено, программа сразу сообщает восстановленный пароль.

Но очень часто словарь заканчивается, а нужного результата всё ещё нет. Это вовсе не означает, что пароль оказался надёжным. Гораздо чаще причина гораздо банальнее - пользователь просто немного изменил привычную комбинацию. Добавил год рождения, поставил восклицательный знак в конце, написал первую букву заглавной или заменил букву "a" цифрой "4". Подобные изменения выглядят незначительными, но их уже достаточно, чтобы стандартный словарь оказался бесполезным.

Именно здесь и начинается та часть работы, которая отличает опытного специалиста от человека, просто умеющего запускать Hashcat. Вместо того чтобы бесконечно скачивать всё более крупные словари, специалист начинает менять стратегию проверки. В одних случаях лучше использовать маски, в других - автоматически изменять слова из словаря по определённым правилам, а иногда эффективнее объединить сразу несколько методов. Именно выбор стратегии, а не размер словаря, чаще всего определяет успех всей проверки.

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

Основные режимы атак в Hashcat

Несмотря на огромное количество параметров и возможностей, в большинстве случаев специалисты используют всего несколько основных режимов работы. Каждый из них решает свою задачу, поэтому универсального варианта не существует. Выбор зависит от того, что известно о пароле и какие данные удалось собрать во время аудита.

Самый распространённый режим - словарная атака, с которой мы уже познакомились. Hashcat последовательно проверяет пароли из заранее подготовленного словаря и сравнивает полученные хэши с теми, которые необходимо восстановить. Именно с этого обычно начинается любая проверка, поскольку такой подход позволяет очень быстро выявить слабые и популярные пароли.

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

Для подобных случаев в Hashcat существует режим масок. Вместо готового списка слов специалист описывает предполагаемую структуру пароля, а программа перебирает только те комбинации, которые соответствуют этому шаблону. Например, можно указать, что пароль состоит из одной заглавной буквы, нескольких строчных символов, четырёх цифр и специального знака в конце.

hashcat -a 3 -m 0 hashes.txt ?u?l?l?l?l?d?d?d?d?s

На первый взгляд такая запись выглядит необычно, но её идея довольно проста. Вместо перебора абсолютно всех возможных комбинаций Hashcat проверяет только те, которые соответствуют заданной структуре. Если специалист правильно понял привычки пользователей или требования парольной политики компании, количество вариантов сокращается во много миллионов раз.

Существует и ещё один популярный подход - гибридные атаки. Они объединяют сразу несколько стратегий. Например, программа может взять слово из словаря и автоматически добавить к нему четыре цифры, специальный символ или другой шаблон. Именно так удаётся быстро проверить варианты вроде Company2026, Admin1234 или Kraken!2025, которые очень часто встречаются в корпоративной среде.

hashcat -a 6 -m 0 hashes.txt company.txt ?d?d?d?d

Разумеется, это лишь небольшая часть возможностей Hashcat. Инструмент поддерживает десятки режимов атак, работу с правилами преобразования, собственными словарями, распределёнными вычислениями и множеством других функций. Но уже даже этих трёх режимов достаточно, чтобы понять одну важную мысль - успешная работа с Hashcat зависит не от того, сколько команд знает специалист, а от того, насколько правильно он выбрал стратегию проверки.

И здесь возникает ещё один распространённый миф. Многие считают, что если купить самую мощную видеокарту, то любой пароль рано или поздно удастся подобрать. На практике всё значительно сложнее, потому что скорость работы Hashcat зависит не только от оборудования, но и от алгоритма, которым был защищён пароль изначально.

Почему мощная видеокарта не гарантирует успех

В интернете можно встретить немало роликов, в которых Hashcat проверяет миллиарды паролей в секунду. Обычно после этого делают вывод, что достаточно купить современную видеокарту, и восстановить можно практически любой пароль. На самом деле всё далеко не так просто.

Действительно, Hashcat максимально эффективно использует вычислительные возможности GPU. Именно поэтому для его работы чаще всего применяются видеокарты, а не процессоры. Они способны одновременно выполнять огромное количество однотипных операций, что идеально подходит для массовой проверки паролей. Однако итоговая скорость зависит не только от мощности оборудования, но и от того, какой алгоритм хэширования использует целевая система.

Например, старые алгоритмы вроде MD5 или SHA-1 создавались задолго до появления современных требований к хранению паролей. Сегодня они вычисляются настолько быстро, что даже одна игровая видеокарта способна проверять огромное количество вариантов за очень короткое время. Именно поэтому использование MD5 для хранения паролей уже давно считается серьёзной ошибкой с точки зрения информационной безопасности.

Современные алгоритмы работают совсем по другому принципу. Такие функции, как bcrypt, scrypt или Argon2, специально разработаны так, чтобы каждая попытка вычисления занимала значительно больше времени и требовала больше ресурсов. Их задача заключается не в ускорении работы системы, а наоборот - в максимальном замедлении процесса подбора паролей.

Получается довольно интересная ситуация. Один и тот же пароль может быть восстановлен за считанные минуты, если он хранится в виде MD5-хэша, и оказаться практически недоступным для подбора при использовании Argon2 с корректно подобранными параметрами. Именно поэтому специалисты всегда оценивают не только сложность самого пароля, но и способ его хранения.

Но даже современный алгоритм не способен защитить систему, если пользователи продолжают выбирать слишком простые комбинации. Если пароль представляет собой Password123! или Company2026, вероятность его успешного восстановления всё ещё остаётся высокой, потому что подобные варианты проверяются одними из первых.

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

Именно поэтому в реальных проектах специалисты редко ставят перед собой задачу восстановить абсолютно каждый пароль. Главная цель аудита заключается совсем в другом - понять, насколько парольная политика организации устоит перед реальной атакой. Если значительная часть пользовательских паролей восстанавливается за короткое время, это говорит о необходимости пересмотреть требования к их созданию. Если же даже после применения различных стратегий Hashcat не удаётся получить результат, это, наоборот, является хорошим признаком и говорит о том, что существующие механизмы защиты работают эффективно.

Именно здесь становится понятно, что Hashcat - это не просто программа для подбора паролей. Это инструмент анализа, который помогает специалисту оценить реальный уровень защищённости организации. Но чтобы использовать его действительно эффективно, недостаточно знать несколько команд из документации. Нужно понимать, когда применять тот или иной режим атаки, как строить собственные словари, каким образом анализировать результаты и почему одна стратегия оказывается эффективнее другой. Этому уже невозможно научиться по одной статье - именно поэтому практическая работа с Hashcat занимает отдельное место в обучении специалистов по информационной безопасности.

Заключение

На первый взгляд может показаться, что Hashcat - это всего лишь программа, которая перебирает пароли. После первого запуска действительно создаётся именно такое впечатление. Нужно определить алгоритм хэширования, выбрать словарь, выполнить команду и дождаться результата. Однако уже после нескольких экспериментов становится понятно, что настоящая работа только начинается.

Даже в рамках этой статьи мы затронули лишь базовые возможности инструмента. Мы посмотрели, что такое хэши, почему их нельзя расшифровать, познакомились с первым запуском Hashcat, узнали о словарных, масочных и гибридных атаках, а также разобрались, почему производительность видеокарты далеко не всегда определяет успех проверки. Всё это позволяет понять общую логику работы инструмента, но не делает человека специалистом.

На практике во время аудита приходится решать гораздо более сложные задачи. Необходимо правильно определить алгоритм хэширования, подобрать оптимальную стратегию атаки, подготовить собственные словари, использовать правила преобразования, анализировать результаты, понимать особенности различных форматов хэшей и грамотно распределять вычислительные ресурсы. Именно совокупность этих навыков отличает человека, который просто умеет запускать Hashcat, от специалиста, способного эффективно оценивать устойчивость парольной политики организации.

Именно поэтому изучение Hashcat не сводится к запоминанию нескольких команд. Этот инструмент становится действительно полезным только тогда, когда появляется понимание того, почему в одной ситуации лучше использовать словарь, в другой - маску, а в третьей вообще отказаться от подбора и сделать вывод, что существующая защита реализована корректно.

Если вы хотите не просто познакомиться с Hashcat, а научиться уверенно применять его во время аудитов безопасности и пентестов, стоит изучать инструмент на практике. В модуле Kraken Academy мы последовательно разбираем все этапы работы: от установки и первого запуска до построения собственных стратегий атак, анализа различных алгоритмов хэширования и оценки результатов проверки в условиях, максимально приближенных к реальным проектам.

Hashcat по праву считается одним из главных инструментов специалиста по информационной безопасности. И чем раньше вы начнёте понимать не только его команды, но и логику работы, тем быстрее сможете перейти от простого знакомства с инструментом к осознанному тестированию надёжности паролей.

Следующий шаг - практика
CTA Image

Эта статья - только начало. Настоящие навыки появляются тогда, когда знания превращаются в практику. В Kraken Academy мы собрали полноценные курсы по информационной безопасности с лабораториями, практическими заданиями и пошаговыми образовательными треками - от первых шагов до уровня специалиста.

Начать обучение

Читать далее

Когда котику делать нечего он поднимает свою лабораторию

Когда котику делать нечего он поднимает свою лабораторию

❗Важно: Материал опубликован исключительно в образовательных целях и предназначен для изучения принципов работы технологий, методов защиты и проведения легального тестирования безопасности. Любые проверки, сканирование, эксплуатация уязвимостей или иные действия в отношении информационных систем допускаются только при наличии явного разрешения их владельца или в специально созданной лабораторной среде. Автор и администрация

Иллюзия безопасности: 5 мифов о кибербезопасности, в которые до сих пор верит топ-менеджмент

Иллюзия безопасности: 5 мифов о кибербезопасности, в которые до сих пор верит топ-менеджмент

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

Шпионаж из розетки: как данные могут покинуть компьютер через кабель питания

Шпионаж из розетки: как данные могут покинуть компьютер через кабель питания

В кибербезопасности принято защищать очевидные каналы связи. Компании устанавливают межсетевые экраны, шифруют трафик, контролируют USB-устройства, отключают беспроводные интерфейсы и физически изолируют особенно важные системы от интернета. Кажется, что компьютер, не подключённый к локальной сети и внешним сервисам, уже не способен передать данные наружу. Однако у любого работающего устройства остаются

Тестовое с сюрпризом: как фейковые рекрутеры воруют пароли и доступы

Тестовое с сюрпризом: как фейковые рекрутеры воруют пароли и доступы

Представьте, в данный момент вы ищете работу или открыты к предложениям. В известных сервисах по поиску работы или на почту приходит письмо от приятного HR-специалиста. Вакансия — сказка, вилка — выше рынка, требования идеальные. Вам предлагают сделать небольшое тестовое задание, чтобы оценить навыки. Вы скачиваете архив, запускаете файл… и через пять