Главная > Информация > Статьи > Детали
Шифрование хэшей в Windows 10 Anniversary Update
27.12.2016
С наступающим Новым Годом и Рождеством!
27.12.2016
Небольшие исправления, изменения в движке DPAPI
06.12.2016
Безопасность хэшей в Windows 10 Anniversary Update
30.11.2016
Тесты новых устройств

Статьи и видео

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

Шифрование хэшей в Windows 10 Anniversary Update


Совсем недавно, к годовщине первого выхода Windows 10, Microsoft порадовало пользователей выпуском крупного обновления этой популярной операционной системы.

Windows 10 Anniversary Update стала еще более совершеннее. Появились новые возможности, такие как:

  • Перетасовка кнопок в меню Пуск
  • Настоящая забота о пользователе в виде еще большего количества рекламных предложений
  • Изменение формы горячо любимых всеми плиток
  • Улучшенная отправка ваших персональных данных на серверы Microsoft
  • Отличная черно-белая форма оформления - опробованный метод борьбы с куриной слепотой
  • Новые иконки в минималистичном стиле - новое слово в дизайне и плод многомесячной работы тысяч дизайнеров
  • Разбиение настроек системы по разным диалогам, для развития экстрасенсорных возможностей пользователя

Ну а если говорить серьезно, то наряду с огромным количеством "полезных" визуальных плюшек появились и такие, которые действительно вызывают восхищение. Например, командная строка Linux, чистая переустановка системы, улучшенный интеллект Cortana, новые способы входа в систему при помощи Windows Hello и т.д.

Забавно, но в документации по новым возможностям защиты Windows 10 нигде не упомянут тот факт, что обычная система входа тоже претерпела некоторые изменения. Незначительные, но тем не менее достаточные, чтобы перестало работать большинство утилит для вытаскивая парольных хэшей Windows. Эти изменения, вероятно, тесно связаны с политикой Microsoft о прекращении поддержки устаревших и уязвимых криптографических алгоритмов. В нашем конкретном примере, это отказ от алгоритма шифрования RC4. К счастью, последние версии программы Reset Windows Password уже получили поддержку новой схемы шифрования Windows 10 AU.

Пароли пользователей, как заявляет Microsoft, хранятся в системе не в текстовом представлении, а в виде хэшей, которые можно просмотреть, открыв ветку реестра (доступ к ней имеет только система):
HKLM/SAM/SAM/Domains/Account/users/<RID>/V.
Где <RID> - уникальный идентификатор пользователя. Уникальный идентификатор пользователя можно узнать, просканировав ветки
HKLM/SAM/SAM/Domains/Account/users/names/<NAME>
В них каждому ключу с именем пользователя прописан соответствующий ему RID. Например, RID учетной записи 'Administrator' всегда равен 500 (0x1F4 в шестнадцатеричной нотации), а пользователя Guest — 501 (0x1F5).

Любая V запись содержит данные переменной длины, соответствующие этой учетной записи. От аббревиатуры, видимо, произошло и название: V - Variable, в отличие от C - Constant. Каждая переменная в V записи кодируется через константу от 0 до 0xCC. Например, имя пользователя соответствует константе 0xС. Через нее по смещению, определяемому самой константой, находится индекс со смещением на данные. LM- и NT-хэши закодированы через константы 0x9C и 0xA8 соответственно. Но для получения конечного хэша пароля, он должен пройти несколько дополнительных этапов расшифровки.

Структура хранения хэшей пользователя в реестре SAM

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

  1. Первоначально система определяет путь к ключу реестра в котором хранятся настройки учетной записи. Например, HKLM/SAM/SAM/Domains/Account/Users/00001F4
  2. Затем происходит чтение переменной, отвечающей за хранение NTLM хэша. Она соответствует константе 0xA8. Берем нашу константу и читаем индекс данных, содержащийся по этому смещению. В нашем случае это 0x19C. Прибавляем индекс данных к адресу 0xCC и получаем смещение 0x268, по которому находятся реальные данные, т.е. наш сырой NTLM хэш. Смотрите картинку. Теперь хэш может быть прочитан, необходимо его расшифровать.
  3. При помощи SYSKEY расшифровывается главный ключ SAM сессии (SAM session key). Ключ SAM сессии хранится в ветке реестра HKLM/SAM/SAM/Domains/Account/V. Фактически, эта структура данных подразумевает хранение двух ключей шифрования: текущего и предыдущего. Алгоритмы, используемые на этом шаге: MD5 и RC4. В Windows 10 Anniversary Update RC4 заменен на AES.
  4. С помощью ключа SAM сессии берется сырой хэш, полученный на шаге 2, и расшифровывается при помощи алгоритма RC4 или AES (для Windows 10 Anniversary Update).
  5. Теперь полученные данные проходят последнее финальное преобразование алгоритмом DES, где в качестве ключа шифрования берется RID пользователя. Наш NTLM хэш готов.

Как видно из схемы, в Windows 10 Anniversary Update потоковый алгоритм шифрования RC4 в 3-м и 4-м шаге был заменен блочным шифром AES. Это привело к изменению структуры хранения данных (как минимум потому, что длина данных в блочном шифре AES всегда кратна 16), но не позволило увеличить стойкость операционной системы к взлому.
 

Вывод. В Windows 10 Anniversary Update были изменены алгоритмы шифрования учетных записей SAM. Новые алгоритмы улучшили защиту парольных хэшей? Нет. Стоило городить огород? Да, так как унифицированные изменения коснулись и доменных пользователей Windows Server 2016, некоторые приватные данные которых могли быть скомпрометированы уязвимостью устаревшего алгоритма RC4. Но это уже совсем другая история.

Документ доступен для свободного распространения
и перепечатки с обязательной ссылкой на первоисточник.
(с) 2006 Passcape Software. All rights reserved.


Опубликовано:
11:56:38 01.12.2016
Автор:
Passcape_Admin
Последнее обновление
12:30:46 01.12.2016