Уязвимость в системе безопасности DPAPI Windows 10

Уязвимость в системе безопасности DPAPI Windows 10

Следующие версии Windows будут становиться все менее и менее ориентированы на обеспечение сохранности приватных данных

Ivan, Passcape Software,
https://www.passcape.com



Краткое описание

Наши специалисты нашли новую серьезную брешь в системе безопасности DPAPI, позволяющую расшифровать персональные данные последнего активного пользователя Windows 10.


Какие ОС затрагивает

Уязвимости подвержены все версии Windows 10, начиная с 1709 (Fall Creators Update), а также учетные записи Microsoft в предыдущих версиях Windows 10, если включена функция шифрования системного диска.

Что такое DPAPI

Data Protection Application Programming Interface или сокращенно DPAPI - является основным механизмом защиты персональных данных пользователя во всех операционных системах Windows, начиная с Windows 2000. DPAPI стала популярной в первую очередь из-за простоты использования, поскольку состоит всего лишь из двух функций шифрования и расшифровки конфиденциальных данных: CryptProtectData и CryptUnprotectData. Но несмотря на кажущуюся простоту, внутренний механизм работы CryptProtectData/CryptUnprotectData довольно сложный.

Предыдущие уязвимости DPAPI

DPAPI была создана с учетом многих аспектов безопасности и по-праву может считаться одной из лучших систем защиты данных, являясь наглядным примером того, как изначально хорошо продуманный продукт может служить долгие годы. Однако, первая реализация DPAPI имела очень серьезную проблему, из-за которой вся защита сводилась к нулю. Дело в том, что основной ключ шифрования DPAPI формировался на основе NTLM хэша пароля пользователя. Это означало, что достаточно было получить доступ к реестру SAM и извлечь NTLM хэш пользователя, чтобы расшифровать все пароли DPAPI. К счастью, в Microsoft быстро обнаружили просчет в логике и выкатили вторую, исправленную версию DPAPI, которая работает и по сей день.

Новая уязвимость в чем-то похоже на первую проблему, за исключением следующих пунктов:
  • Новая проблема затрагивает лишь последнего активного пользователя системы.
  • Новая уязвимость не распространяется на доменные учетные записи.
  • В отличие от первой реализации DPAPI, новая уязвимость это не ошибка разработчиков, а вынужденный компромисс безопасности и удобства работы, если можно так выразиться.

Что такое Automatic Restart Sign-On (ARSO)

Начиная с Windows 8 появилась возможность запуска приложений экрана блокировки. То есть приложений, запускающих и отображающих уведомления, пока сеанс пользователя заблокирован. Например, встречи календаря, уведомления электронной почты, сообщений и т.д. Однако, во время автоматической перезагрузки системы после обновления, эти приложения перестали бы работать, поскольку для их работы требуется активная сессия пользователя. Возникает очевидный конфликт безопасности, который был решен Microsoft довольно оригинальным способом.

Перед тем, как система обновлений начнет автоматическую перезагрузку, текущие учетные данные пользователя сохраняются в специальном секрете LSA. После перезагрузки эти учетные данные используются для автоматического входа пользователя в систему и создания активной сессии, но при этом интерактивная часть будет недоступна пользователю до тех пор, пока он не введет пароль, ПИН-код и т.д. Таким образом, последняя сессия пользователя будет автоматически восстановлена, приложения экрана блокировки могут работать. Так работает система Automatic Restart Sign-On.


Что такое Trusted Boot Auto-Logon (TBAL)

В Windows 10 система ARSO использует механизм Trusted Boot Auto-Logon (TBAL). Надо сказать, возможность автоматического входа пользователя в систему без ввода пароля присутствует во всех версиях Windows. Для этого в реестре Windows необходимо установить опцию для автоматического входа и прописать пароль на вход в текстовом виде. При загрузке система видит эту опцию, читает ее и использует сохраненный пароль для автоматического входа.

В Windows 10 автоматический вход в систему был дополнен механизмом TBAL. TBAL является своего рода симбиозом обычного автоматического входа и ARSO. Но имеет и ряд отличий, главные из которых это:
  • Поддержка учетных записей Microsoft
  • Отказ от хранения пароля в текстовом виде
  • TBAL включен всегда, а не только тогда, когда требуется автоматическая перезагрузка. На первых версиях Windows 10, TBAL активировался только после включения шифрования системного диска.
Каков же механизм работы TBAL?

Как работает TBAL

В Windows 10 перед завершением работы система записывает в LSA секрет с именем DefaulPassword специальный пароль _TBAL_{68EDDCF5-0AEB-4C28-A770-AF5302ECA3C9, признак того, что хранится не обычный пароль для автоматического входа, а маркер TBAL. Далее, в зависимости от типа учетной записи, создается еще один LSA секрет для локального или облачного провайдера. Если это обычная учетная запись, то создается секрет с именем M$_MSV1_0_TBAL_PRIMARY_{22BE8E5B-58B3-4A87-BA71-41B0ECF3A9EA, в который записывается имя пользователя, NTLM и SHA1 хэши пароля, а также другая служебная информация. Если это учетная запись Microsoft, то создается секрет с именем M$_CLOUDAP_TBAL_{8283D8D4-55B6-466F-B7D7-17A1352D9CAB_<UID> (для Windows 1607 и ранних версий) или M$_CLOUDAP_TBAL_{4416F0BD-3A59-4590-9579-DA6E08AF19B3_<UID> для более поздних версий. Где UID это SHA256 хэш универсального идентификатора пользователя. Этот секрет содержит 96-байтный ключ, нужный для расшифровки основного ключа шифрования DPAPI.

После перезагрузки система определяет маркер TBAL и передает управление системе TBAL provisioning, которая расшифровывает основной ключ DPAPI при помощи либо SHA1 хэша пароля пользователя (для оффлайн учетной записи), либо 96-байтного ключа, если это учетная запись Microsoft. После этого оба LSA-секрета удаляются. TBAL маркер не записывается во время гибернации или завершении активной сессии пользователя, а только перед перезагрузкой или завершением работы компьютера.


Причина уязвимости

Уязвимость заключается в том, что после завершения работы системы, любой, кто имеет физический доступ к ПК, может использовать сохраненный секрет TBAL для расшифровки первичного ключа шифрования DPAPI и, как следствие, всех данных пользователя, которые зашифрованы при помощи DPAPI. Очевидно, что причина уязвимости, в отличие от первой версии DPAPI или от предыдущих ошибок в реализации беспарольного входа, состоит не в ошибочной логике работы, а в концептуальном подходе Microsoft к обеспечению безопасности Windows. Впрочем, это глобальный тренд последних лет.

Какие данные в опасности

  • Сетевые пароли, хранящиеся в некоторых популярных интернет обозревателей: Google Chrome, Internet Explorer, Microsoft Edge, Opera и др.
  • Пароли почтовых клиентов Microsoft Office Outlook, Windows Mail
  • Пароли доступа к общим папкам и ресурсам
  • Пароли и ключи шифрования Windows Vault
  • Пароли соединений удаленного доступа к рабочему столу
  • Приватные ключи Системы Шифрования Файлов (EFS)
  • Ключи шифрования почты S-MIME
  • Сертификаты пользователя
  • Сетевые пароли, хранимые в Credential Manager
  • Персональные данные любого приложения, программно защищенные при помощи DPAPI. Например, Skype, Windows Rights Management Services, Windows Media, Google Talk и т.д.

PoC

Это видео демонстрирует, насколько просто получить доступ к персональным данным последнего пользователя системы, не зная его пароля на вход. Пароль Facebook, хранящийся в Windows Vault, расшифровывается автоматически. Хотя система DPAPI предполагает, что без знания пароля пользователя на вход, этого сделать нельзя.

Выводы

Следующие версии Windows будут становиться все менее и менее ориентированы на обеспечение сохранности приватных данных. Тем пользователям, для которых важен максимальный уровень защиты своих персональных данных, рекомендуется использовать оффлайн учетные записи и Windows 10 до версии 1709 с включенным SYSKEY-паролем и/или полным шифрованием системного диска.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Портал по информационной безопасности SecurityLab.ru проводит конкурс статей. Всех участников конкурса ждут ценные призы и подарки от компаний Лаборатория Касперского, Учебный центр «Информзащита», Keenetic, Positive Technologies, Инфосистемы Джет, Cybersecurity Help, HideMy.name а победителю конкурса будет вручен главный приз от компании Palo Alto Networks.

Антивирус для мозга!

Лечим цифровую неграмотность без побочных эффектов

Активируйте защиту — подпишитесь