Введение
Добро пожаловать в мир хеширования и взлома паролей! Хеширование — это фундаментальная концепция в кибербезопасности, используемая для проверки целостности данных и безопасного хранения паролей. Хеш-функция принимает на вход данные (например, пароль) и возвращает строку байтов фиксированного размера — хеш. Этот процесс спроектирован как односторонний, что означает, что его невозможно легко обратить для получения исходных данных.
Hashcat — это всемирно известный, мощный инструмент для восстановления паролей. Прежде чем вы сможете использовать его эффективно, вы должны понять основы того, что такое хеши и как с ними работать.
В этой лабораторной работе вы изучите основополагающие концепции хеширования. Вы исследуете распространенные типы хешей, сгенерируете собственный хеш, подготовите его для использования с Hashcat и поймете ключевое различие между паролем и его хешем. Эти знания — первый важный шаг на пути к освоению Hashcat.
Понимание распространенных типов хешей — MD5, SHA1 и NTLM
На этом этапе вы узнаете о трех распространенных типах хешей, с которыми вы часто будете сталкиваться в области кибербезопасности: MD5, SHA1 и NTLM. На этом этапе нет команд для выполнения; цель состоит в том, чтобы понять эти основные концепции.
Что такое хеш? Хеш — это уникальная строка символов фиксированного размера, которая генерируется из фрагмента данных. Алгоритмы хеширования спроектированы как односторонние функции, что означает, что вычислительно невозможно обратить процесс и найти исходные входные данные, имея только хеш.
MD5 (Message Digest 5) MD5 — один из старейших и наиболее известных алгоритмов хеширования. Он создает 128-битное (32-символьное шестнадцатеричное) хеш-значение. Хотя он когда-то был популярен для хранения паролей, сейчас он считается небезопасным для этой цели из-за уязвимостей, которые делают его подверженным «коллизиям» (когда два разных входа дают один и тот же хеш). Сегодня он в основном используется для проверки целостности файлов, чтобы гарантировать, что файл не был изменен во время передачи.
SHA-1 (Secure Hash Algorithm 1) SHA-1 был разработан как преемник MD5. Он создает 160-битный (40-символьный шестнадцатеричный) хеш. Как и MD5, SHA-1 также больше не считается безопасным для криптографических целей из-за обнаруженных слабых мест. Однако вы все равно встретите его в более старых системах и устаревших приложениях.
NTLM (NT LAN Manager) NTLM — это алгоритм хеширования, используемый Microsoft Windows для хранения паролей пользователей. Когда вы устанавливаете пароль в системе Windows, он преобразуется в хеш NTLM и сохраняется. Эти хеши являются распространенной целью при проведении тестирования на проникновение в средах Windows.
Понимание этих типов — первый шаг к идентификации хеша и выбору правильного метода для его взлома.
Создание хеша MD5 из строки с использованием 'echo' и 'md5sum'
На этом шаге вы сгенерируете MD5-хеш из простой текстовой строки. Это распространенная задача для быстрого хеширования фрагмента данных из командной строки. Мы будем использовать две стандартные утилиты Linux: echo и md5sum.
Сначала давайте разберемся с инструментами:
echo: Эта команда используется для вывода строки текста.md5sum: Эта команда вычисляет и проверяет контрольные суммы MD5.|(Пайп, или конвейер): Этот оператор направляет вывод команды слева в качестве входных данных для команды справа.
Мы будем хешировать строку password123. Важно использовать флаг -n с echo. Это указывает echo не выводить завершающий символ новой строки, который в противном случае был бы включен в расчет хеша и дал бы другой результат.
Выполните следующую команду в своем терминале:
echo -n "password123" | md5sum
Вы увидите следующий вывод. Длинная строка символов — это MD5-хеш строки "password123", а - указывает на то, что md5sum считывал свои входные данные из стандартного ввода (конвейера), а не из файла.
482c811da5d5b4bc6d497ffa98491e38 -
Теперь вы успешно создали свой первый хеш!
Подготовка текстового файла, содержащего один целевой хеш
На этом шаге вы создадите файл для хранения хеша, который вы сгенерировали. Hashcat и другие инструменты для взлома паролей обычно работают с файлами, содержащими один или несколько хешей, а не с прямым вводом строк. Это позволяет вам атаковать множество хешей одновременно.
Мы будем использовать MD5-хеш для password123, который вы сгенерировали на предыдущем шаге: 482c811da5d5b4bc6d497ffa98491e38.
Мы можем снова использовать команду echo, но на этот раз мы будем использовать оператор перенаправления вывода > для записи строки в новый файл с именем target_hash.txt. Эта команда создаст файл в вашей текущей директории (~/project).
Выполните следующую команду для создания файла:
echo "482c811da5d5b4bc6d497ffa98491e38" > target_hash.txt
Теперь давайте проверим, что файл был создан правильно и содержит хеш. Используйте команду cat для отображения содержимого файла:
cat target_hash.txt
Вывод должен быть самим хешем:
482c811da5d5b4bc6d497ffa98491e38
Теперь у вас есть правильно отформатированный целевой файл, готовый для использования с инструментом для взлома, таким как Hashcat.
Определение правильного режима хеширования для MD5 из справки Hashcat
На этом шаге вы узнаете, как найти правильный режим для определенного типа хеша в Hashcat. Hashcat поддерживает сотни различных алгоритмов хеширования, и вы должны точно указать ему, какой тип хеша вы пытаетесь взломать. Это делается с помощью числового "режима хеширования" (hash mode).
Чтобы найти правильный режим, вы можете использовать встроенное меню справки Hashcat. Запуск hashcat --help отобразит очень длинный список всех поддерживаемых типов хешей и соответствующих им режимов. Чтобы быстро найти то, что нам нужно, мы можем направить этот вывод в команду grep для поиска по слову "md5".
Выполните следующую команду для поиска режима хеширования MD5:
hashcat --help | grep -i "md5"
Флаг -i в grep делает поиск нечувствительным к регистру. Вы увидите много вывода, так как существует множество вариантов MD5. Ищите самый базовый.
...
0 | MD5 | Raw Hash
...
2410 | Cisco-ASA MD5 | Operating System
...
Как вы можете видеть в выводе, режим хеширования для стандартного, "сырого" (raw) MD5-хеша — это 0. Это число вы передадите Hashcat с флагом -m (например, -m 0), чтобы сообщить ему, что вы взламываете MD5-хеш.
Различение хеша и пароля
На этом заключительном шаге мы закрепим критическое различие между паролем и его хешем. Это фундаментальная концепция во взломе паролей.
- Пароль (Password) — это секретная строка, читаемая человеком. В нашем примере это
password123. - Хеш (Hash) — это зашифрованная строка фиксированной длины, сгенерированная из пароля. В нашем примере это
482c811da5d5b4bc6d497ffa98491e38.
Взлом паролей не выполняет обратное преобразование хеша. Вместо этого он работает путем взятия списка потенциальных паролей (словарный список, wordlist), хеширования каждого из них и сравнения результата с целевым хешем. Если они совпадают, пароль найден.
Чтобы проиллюстрировать это, давайте создадим простой файл словарного списка. В реальном сценарии этот файл будет содержать миллионы предполагаемых паролей. Для этой лабораторной работы он будет содержать только один правильный пароль.
Создайте файл с именем potential_passwords.txt, содержащий исходный пароль:
echo "password123" > potential_passwords.txt
Теперь давайте посмотрим на два подготовленных вами файла. Используйте команду ls, чтобы увидеть их в вашей директории.
ls
potential_passwords.txt target_hash.txt
У вас есть target_hash.txt, который содержит хеш для взлома, и potential_passwords.txt, который содержит пароль для проверки. Это разделение является ключом к тому, как работают инструменты для взлома паролей.
Резюме
Поздравляем с завершением этой лабораторной работы! Вы успешно изучили основные принципы хеширования, необходимые перед использованием таких инструментов, как Hashcat.
В этой лабораторной работе вы:
- Изучили концепции, лежащие в основе распространенных типов хешей, таких как MD5, SHA-1 и NTLM.
- Сгенерировали MD5-хеш из строки с помощью команд
echoиmd5sum. - Подготовили целевой файл хеша, который является стандартным форматом для инструментов взлома.
- Использовали команду
hashcat --helpдля определения правильного режима хеширования (hash mode) для MD5. - Укрепили свое понимание критической разницы между паролем и соответствующим ему хешем.
Имея эту основу, вы теперь лучше подготовлены к переходу к более продвинутым лабораторным работам, где вы будете использовать эти файлы и концепции для проведения реальной атаки по взлому паролей с помощью Hashcat.



