Основы хеширования в Hashcat

LinuxBeginner
Практиковаться сейчас

Введение

Добро пожаловать в мир хеширования и взлома паролей! Хеширование — это фундаментальная концепция в кибербезопасности, используемая для проверки целостности данных и безопасного хранения паролей. Хеш-функция принимает на вход данные (например, пароль) и возвращает строку байтов фиксированного размера — хеш. Этот процесс спроектирован как односторонний, что означает, что его невозможно легко обратить для получения исходных данных.

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.