Как я взломал ваш пароль Windows (часть 1)

Опубликовано: 9 Апреля, 2023

Введение

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

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

Как Windows хранит пароли

Компьютеры на базе Windows используют два метода хэширования паролей пользователей, оба из которых имеют совершенно разные последствия для безопасности. Это LAN Manager (LM) и NT LAN Manager (NTLM). Хэш — это результат криптографической функции, которая берет строку данных произвольного размера, выполняет над ней математическую функцию шифрования и возвращает строку фиксированного размера.

Хэши паролей LM

Хэш LAN Manager был одним из первых алгоритмов хеширования паролей, использовавшихся операционными системами Windows, и единственной версией, которая поддерживалась вплоть до появления NTLM, использовавшегося в Windows 2000, XP, Vista и 7. Эти более новые операционные системы по-прежнему поддерживать использование LM-хэшей для обеспечения обратной совместимости. Однако по умолчанию он отключен для Windows Vista и Windows 7.

Хэш LM пароля вычисляется с использованием шестиэтапного процесса:

  1. Пароль пользователя преобразуется во все буквы верхнего регистра
  2. К паролю добавляются нулевые символы, пока он не станет равным 14 символам.
  3. Новый пароль разделен на две половины по 7 символов.
  4. Эти значения используются для создания двух ключей шифрования DES, по одному из каждой половины с добавлением к каждому биту четности для создания 64-битных ключей.
  5. Каждый ключ DES используется для шифрования предустановленной строки ASCII ([email protected]#$%), в результате чего получаются два 8-байтовых значения зашифрованного текста.
  6. Два 8-байтовых значения зашифрованного текста объединяются, чтобы сформировать 16-байтовое значение, которое является завершенным хэшем LM.

На практике пароль «PassWord123» будет преобразован следующим образом:

  1. ПАРОЛЬ123
  2. ПАРОЛЬ123000
  3. ПАРОЛЬ и D123000
  4. ПАРОЛЬ1 и D1230001
  5. E52CAC67419A9A22 и 664345140A852F61
  6. E52CAC67419A9A22664345140A852F61

Изображение 23637
Рисунок 1: Пароль, преобразованный в хеш LM

Сохраненные пароли LM имеют несколько явных недостатков. Во-первых, шифрование основано на стандарте шифрования данных (DES). DES возник из проекта IBM 1970-х годов, который в конечном итоге был изменен NIST, спонсировался АНБ и выпущен в качестве стандарта ANSI в 1981 году. DES считался безопасным в течение многих лет, но в девяностые годы подвергся тщательному анализу из-за небольшого размера ключа всего 56-бит. Это достигло апогея в 1998 году, когда организация Electronic Frontier Foundation смогла взломать DES примерно за 23 часа. С тех пор DES считается небезопасным и с тех пор был заменен на Triple-DES и AES. Короче говоря, это еще один стандарт шифрования, который стал жертвой современных вычислительных мощностей и может быть взломан в кратчайшие сроки.

Возможно, самая большая слабость LM-хэша заключается в создании ключей DES. В этом процессе введенный пользователем пароль автоматически преобразуется в верхний регистр, дополняется до четырнадцати символов (это максимальная длина LM-хешированного пароля) и разделяется на две половины по семь символов. Учтите, что существует 95 в степени 14 различных возможных паролей, состоящих из 14 печатных символов ASCII, это число уменьшается до 95 в степени 7 возможных паролей при разделении на половину из 7 символов, а затем уменьшается до 69 в степени 7. возможных паролей, когда разрешены только символы ASCII в верхнем регистре. По сути, это делает использование различных регистров символов и увеличенной длины пароля почти бесполезным, когда пароль хранится в виде хэша LM, что делает пароли LM невероятно уязвимыми для попыток взлома методом грубой силы.

Хэши паролей NTLM

NT LAN Manager (NTLM) — это протокол проверки подлинности Microsoft, который был создан как преемник LM. NTLM был принят в качестве нового предпочтительного метода аутентификации и реализован в Windows NT 4.

Создание хэша NTLM (далее именуемого хэшем NT) на самом деле является гораздо более простым процессом с точки зрения того, что на самом деле делает операционная система, и основывается на алгоритме хеширования MD4 для создания хэша на основе серии математических вычислений. После преобразования пароля в Unicode алгоритм MD4 используется для создания хэша NT. На практике пароль «PassWord123» после преобразования будет представлен как «67A54E1C9058FCA16498061B96863248».

MD4 считается значительно более надежным, чем DES, поскольку он позволяет использовать более длинные пароли, позволяет различать прописные и строчные буквы и не разбивает пароль на более мелкие, которые легче взломать.

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

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

Вывод

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

использованная литература

  • http://technet.microsoft.com/en-us/library/cc875839.aspx
  • http://technet.microsoft.com/en-us/library/cc512606.aspx

**Примечание: После публикации этой статьи было обнаружено, что описание функциональности создания пароля NTLM было описано некорректно. Автор исправил эту проблему, и статья была переиздана с этими исправлениями 12/2012. — Крис Сандерс