CredSSP — это протокол безопасности, разработанный инженерами компании Microsoft, который на сегодняшний день доступен в операционных системах Windows и используется развернутым на платформе программным обеспечением для того, чтобы безопасно послать предоставленные учетные данные с клиентского оборудования на конечный сервер. Примером такого взаимодействия может послужить сервер терминалов Microsoft, который для успешной аутентификации и последующего установления сеанса служб терминалов использует данный протокол для обеспечения безопасной доставки данных с личной информацией клиента, в том числе pin-кодом смарт-карты или личным паролем, на сервер.
Служба CredSSP является составной, так как ее работа основана на использовании ранее установленных соглашений о безопасности. Первый этап в алгоритме передачи данных заключается в установке зашифрованного канала связи между сервером и клиентом, который опирается на стандартизованный протокол TLS. В момент установления соединения сервер может не обладать никакой информацией о пользователе.
В дальнейшем установленный на первом этапе канал связи используется для обмена информационными сообщениями. Для проведения аутентификации участников соединения в действующем сеансе TLS используется механизм SPNEGO, который характеризуется своей универсальностью, простотой и высоким уровнем защищенности.
С технической точки зрения, работа данного механизма заключается в предоставлении платформы участникам сеанса связи, которая открывает список возможных вариантов распознавания подлинности предоставленной информации для аутентификации. При выборе одного из вариантов, для использующего SPNEGO прикладного протокола сохраняется непрозрачность протоколов безопасности. В описанной модели CredSSP выступает в роли протокола программного обеспечения, использующего более фундаментальное соглашение SPNEGO.
После положительного выполнения процесса аутентификации на основе механизма GSS-API наступает следующий этап — привязка к TLS-сеансу при помощи ключа шифрования, регламентированного в SPNEGO. Данный процесс выглядит следующим образом:
Протокол SPNEGO предоставляет клиенту ключ шифрования, который используется последним для кодирования хэша открытого ключа сервера.
Зашифрованный ключ передается на сторону сервера.
На сервере запускается проверка полученного ключа на предмет соответствия с тем, который был использован в процессе «рукопожатия» TLS. Если проверка пройдена успешно, в обратную сторону направляется подтверждение, зашифрованное аналогичным образом.
При успешном прохождении всего процесса, зашифрованные учетные данные отправляются серверу для дальнейшей обработки.
Дальнейшая транспортировка информации между двумя приложениями осуществляется при помощи протокола CredSSP, для шифрования данных используется протокол TLS. К новым соглашениям, которые вносит в процесс передачи CredSSP можно отнести:
формат клиентских учетных данных;
привязка CredSSP и GSS-API;
инкапсуляция токенов SPNEGO, которые транспортируются по установленному каналу связи TLS.
Пять лет назад разработчиками было выпущено CredSSP обновление, которое было призвано улучшить уровень безопасности подключений клиентам серверной и клиентской операционной системы Windows при использовании протокола RDP для установки удаленной связи. После того как библиотеки с обновлениями были установлены системными администраторами, многие из специалистов столкнулись с ошибкой, которая не позволяла разрешить проверку подлинности CredSSP и установить соединения с компьютерами по соглашению удаленного рабочего стола. В сообщении об ошибке указывалось, что основная причина возникшей проблемы заключается в шифровании.
Решение о выпуске обновления было принято специалистами Microsoft после обнаружения уязвимости протокола, по причине которой было возможно удаленно выполнить произвольный программный код, в том числе вредоносный. Проблемы с подключением начались после того, как разработчиками была изменена константа безопасности с Vulnerable на Mitigated. Существует несколько способов исправления ошибки, которые можно отнести как ко временным, так и к рекомендуемым. Рассмотрим некоторые из них.
Данное решение относится к временным. Для его реализации необходимо выполнить следующий алгоритм:
1. Перейти в подменю «Настройки удаленного доступа» и убрать утвердительную отметку с пункта «Разрешить подключение только с компьютеров…»
2. После выполнения описанных действий, машина будет готова к подключению.
Если по какой-либо причине воспользоваться панелью управления не представляется возможным, все действия можно произвести через реестр.
Для начала необходимо зайти в реестр, введя в поиске или в панели «Выполнить» команду regedit.exe. Далее необходимо подключить сетевой реестр, как показано на скриншоте:
В результате должна получиться дополнительная директория с двумя ответвлениями. Далее следует перейти в директорию или создать ее, в случае отсутствия.
В директории следует создать файл конфигурации AllowEncryptionOracle и в соответствующем поле установить ему значение, равное двум:
Таким образом сервер будет защищен минимально, что чревато возможными последствиями в виде кибератак. Однако данный способ поможет установить временное подключение к серверу.
В данном материале был дан ответ на вопрос: «Credssp — что это?», а также рассмотрены временные меры по устранению ошибки шифрования в процессе подключения. Чтобы максимально обезопасить соединения, рекомендуется установить последние обновления операционной системы на все машины, которые планируется использовать для передачи данных.