Использование John the Ripper для взлома хэшей NTLM

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

Введение

В этой лабораторной работе вы получите практический опыт взлома хэшей NTLM (NT LAN Manager) с использованием John the Ripper, мощного инструмента для взлома паролей. Хэши NTLM обычно используются в средах Windows для хранения паролей пользователей. Понимание того, как эти хэши могут быть взломаны, имеет решающее значение для понимания уязвимостей безопасности паролей и внедрения более надежных мер безопасности.

Вы начнете с симуляции извлечения хэшей NTLM, затем научитесь правильно форматировать их для John the Ripper. Впоследствии вы будете использовать два основных метода взлома: словарные атаки с использованием списка слов и атаки полным перебором (brute-force) в инкрементальном режиме. Наконец, вы поразмышляете о последствиях безопасности хэшей NTLM и важности надежных политик паролей. Эта лабораторная работа предоставляет практический подход к фундаментальной концепции в области кибербезопасности.

Извлечение хэшей NTLM из системы

На этом этапе вы симулируете извлечение хэшей NTLM. В реальных сценариях хэши NTLM могут быть извлечены из различных источников, таких как база данных Security Account Manager (SAM) в системах Windows, Active Directory или сетевой трафик. Для этой лабораторной работы мы уже предоставили файл с именем hashes.txt в вашем каталоге ~/project, который содержит примеры хэшей NTLM.

Сначала давайте проверим наличие файла hashes.txt и изучим его содержимое. Этот файл содержит несколько строк, каждая из которых представляет запись пользователя с его хэшем NTLM. Формат обычно включает имя пользователя, идентификатор пользователя, хэш LM (часто пустой или по умолчанию), хэш NTLM и другие поля. Мы сосредоточимся на части с хэшем NTLM.

Используйте команду ls для вывода списка файлов в текущем каталоге, а затем команду cat для отображения содержимого hashes.txt.

ls -l ~/project/hashes.txt
cat ~/project/hashes.txt

Вы должны увидеть вывод, похожий на этот, показывающий детали файла и его содержимое:

-rw-r--r-- 1 labex labex 300 Mar 10 10:00 /home/labex/project/hashes.txt
user1:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
user2:501:aad3b435b51404eeaad3b435b51404ee:209c6174efb4b710:209c6174efb4b710:::
user3:502:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad065adec1000000:::
user4:503:aad3b435b51404eeaad3b435b51404ee:e52cac67419a9a224a30370a31323334:::
user5:504:aad3b435b51404eeaad3b435b51404ee:d41d8cd98f00b204e9800998ecf8427e:::

Хэш NTLM — это четвертое поле в каждой строке, разделенное двоеточиями. Например, для user1 хэш NTLM — это 31d6cfe0d16ae931b73c59d7e0c089c0.

Форматирование хэшей NTLM для John the Ripper

На этом этапе вы подготовите хэши NTLM для John the Ripper. Хотя John the Ripper часто может автоматически обрабатывать различные форматы хэшей, хорошей практикой является понимание ожидаемого ввода. Для хэшей NTLM John the Ripper обычно ожидает формат имя_пользователя:NTLM_хэш.

Наш файл hashes.txt содержит дополнительные поля. Нам нужно извлечь только имя пользователя и хэш NTLM. Для этого мы можем использовать команду cut. Команда cut может извлекать разделы из каждой строки файлов. Мы будем использовать : в качестве разделителя и выберем первое и четвертое поля.

Выполните следующую команду, чтобы извлечь и отформатировать хэши, а затем перенаправьте вывод в новый файл с именем ntlm_hashes.txt в вашем каталоге ~/project.

cut -d ':' -f 1,4 ~/project/hashes.txt > ~/project/ntlm_hashes.txt
cat ~/project/ntlm_hashes.txt

Вы должны увидеть отформатированные хэши, готовые для John the Ripper:

user1:31d6cfe0d16ae931b73c59d7e0c089c0
user2:209c6174efb4b710
user3:8846f7eaee8fb117ad065adec1000000
user4:e52cac67419a9a224a30370a31323334
user5:d41d8cd98f00b204e9800998ecf8427e

Этот файл ntlm_hashes.txt теперь содержит только имя пользователя и соответствующий хэш NTLM, что является идеальным форматом для John the Ripper.

Взлом хэшей NTLM с использованием списка слов

На этом этапе вы будете использовать John the Ripper для взлома хэшей NTLM с помощью списка слов (также известного как атака по словарю). Список слов — это файл, содержащий список распространенных паролей, словарных слов или ранее утекших паролей. Это часто самый эффективный метод взлома слабых паролей.

Мы предоставили простой файл списка слов с именем wordlist.txt в вашем каталоге ~/project. Давайте сначала изучим его содержимое.

cat ~/project/wordlist.txt

Вы должны увидеть следующее содержимое:

password
123456
qwerty
admin
test

Теперь используйте John the Ripper с файлом wordlist.txt для взлома хэшей в ntlm_hashes.txt. Команда john --format=NT --wordlist=wordlist.txt ntlm_hashes.txt указывает формат хэша как NTLM (NT), используемый список слов и файл, содержащий хэши.

john --format=NT --wordlist=~/project/wordlist.txt ~/project/ntlm_hashes.txt

John the Ripper попытается взломать хэши. Вы можете увидеть вывод, похожий на этот, указывающий, какие хэши были взломаны:

Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (NT [MD4 HASHES])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
123456           (user4)
test             (user2)
password         (user1)
3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% (ETA: 08:00) 3.750g/s 11.25p/s 11.25c/s 11.25C/s 123456...test
Session completed.

После процесса взлома вы можете просмотреть взломанные пароли с помощью команды john --show.

john --show ~/project/ntlm_hashes.txt

Вывод будет содержать список взломанных хэшей и их соответствующих паролей в открытом виде:

user1:password
user2:test
user4:123456

3 password hashes cracked, 2 left

Это показывает, что паролем user1 был password, user2test, а user4123456. Два других хэша (user3 и user5) не были взломаны этим списком слов, что указывает на то, что их пароли могут быть более надежными или отсутствовать в нашем простом списке слов.

Взлом хэшей NTLM в инкрементальном режиме

На этом этапе вы изучите инкрементальный режим John the Ripper, который выполняет атаку методом полного перебора (brute-force). В отличие от атак по списку слов, инкрементальный режим систематически перебирает комбинации символов, начиная с коротких, простых комбинаций и постепенно увеличивая сложность. Этот метод эффективен для взлома паролей, которых нет в списке слов, но может быть очень трудоемким для длинных или сложных паролей.

Инкрементальный режим John the Ripper использует наборы символов и правила для генерации паролей. Для хэшей NTLM мы можем указать формат NT и использовать опцию --incremental. John the Ripper имеет встроенные инкрементальные режимы (например, alnum, digits, all). Мы будем использовать режим инкрементального перебора по умолчанию, который пробует различные наборы символов.

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

john --session=reset

Теперь запустите John the Ripper в инкрементальном режиме против файла ntlm_hashes.txt. Этот процесс может занять несколько минут, в зависимости от сложности оставшихся невзломанных хэшей.

john --format=NT --incremental ~/project/ntlm_hashes.txt

Вы можете увидеть вывод, похожий на этот, когда John the Ripper пытается взломать оставшиеся хэши:

Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (NT [MD4 HASHES])
Remaining 2 password hashes to crack
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
(user5)
(user3)
2g 0:00:00:00 DONE (2023-10-27 08:05) 100.0% (ETA: 08:05) 2.500g/s 7.500p/s 7.500c/s 7.500C/s
Session completed.

После завершения процесса снова проверьте взломанные пароли с помощью john --show.

john --show ~/project/ntlm_hashes.txt

Теперь вы должны увидеть все взломанные хэши, включая user3 и user5. Пароль для user3admin, а для user5 — пустая строка (которая представлена как "" или ничего после двоеточия).

user1:password
user2:test
user4:123456
user3:admin
user5:

5 password hashes cracked, 0 left

Это демонстрирует эффективность инкрементального режима для взлома паролей, которых может не быть в списке слов, особенно коротких или простых.

Понимание безопасности хэшей NTLM

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

Хэши NTLM известны своей уязвимостью по нескольким причинам:

  • Отсутствие "соли" (Salting): В отличие от современных алгоритмов хэширования (например, bcrypt, scrypt), хэши NTLM не используют "соль". Соль — это случайные данные, добавляемые к паролю перед хэшированием, что делает каждый хэш уникальным даже для одинаковых паролей. Без соли злоумышленники могут использовать предварительно вычисленные таблицы (rainbow tables) для быстрого взлома хэшей.
  • Слабый алгоритм хэширования: NTLM использует MD4, который является относительно старым и криптографически слабым алгоритмом хэширования.
  • Нечувствительность к регистру (для хэша LM, хотя NTLM чувствителен к регистру): Хотя сам NTLM чувствителен к регистру, его предшественник, хэш LM, не был таковым, что приводило к путанице и иногда к более слабым парольным практикам.

Для снижения рисков, связанных со взломом хэшей NTLM, организации и пользователи должны:

  • Внедрять строгие парольные политики: Требовать длинные, сложные пароли, сочетающие буквы в верхнем и нижнем регистре, цифры и специальные символы. Это значительно усложняет как атаки по списку слов, так и атаки полным перебором.
  • Внедрять многофакторную аутентификацию (MFA): MFA добавляет дополнительный уровень безопасности помимо простого пароля, что значительно затрудняет злоумышленникам получение несанкционированного доступа, даже если они взломают пароль.
  • Использовать современные алгоритмы хэширования: Для новых систем или при миграции отдавайте предпочтение современным, соленым, адаптивным алгоритмам хэширования, таким как bcrypt, scrypt или Argon2.
  • Регулярно проводить аудит и мониторинг: Постоянно отслеживайте подозрительные попытки входа и проводите аудит надежности паролей.

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

Резюме

В этой лабораторной работе вы успешно научились использовать John the Ripper для взлома хэшей NTLM. Вы начали с понимания структуры хэшей NTLM, а затем отформатировали их для оптимального использования с John the Ripper. Затем вы применили два распространенных метода взлома паролей: атаки по списку слов и инкрементальные атаки (полный перебор), продемонстрировав их эффективность против слабых и простых паролей.

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