Credential Security Support Provider protocol, CredSSP
Credential Security Support Provider protocol, CredSSP
Категория: Программы Теги: Уязвимости Опубликовано: 27 мая 2025

Уязвимость BDU:2018-00607 (CVE-2018-0886) CredSSP Windows

Уязвимость CVE-2018-0886 (BDU:2018-00607) затрагивает протокол Credential Security Support Provider (CredSSP) в Windows. Она связана с недостаточной проверкой сертификатов сервера при аутентификации, что позволяет злоумышленнику выполнить атаку типа «человек посередине» (MitM) и перехватить учетные данные пользователя. В результате атакующий может выполнить произвольные команды от имени легитимного пользователя, например, через RDP-сессию.

Анализ уязвимости

Уровень опасности: 7.0 HIGH
Вектор атаки: CVSS:3.0/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H

  • AV:L (Вектор атаки) – Атака требует локального доступа (например, физического или через сеть с ограниченным охватом).

  • AC:H (Сложность эксплуатации) – Высокие условия для эксплуатации (требуется точное время и глубокие знания).

  • PR:N (Уровень привилегий) – Для атаки не нужны привилегии.

  • UI:R (Взаимодействие с пользователем) – Требуется действие пользователя (например, подключение к вредоносному RDP-серверу).

  • S:U (Влияние на другие системы) – Не оказывает влияния на другие системы.

  • C:H/I:H/A:H (Последствия) – Полная компрометация конфиденциальности, целостности и доступности.

Условия эксплуатации

Для успешной атаки необходимо:

  1. Наличие в сети MitM-позиции: злоумышленник должен находиться между клиентом и сервером (например, в локальной сети или через ARP-спуфинг).

  2. Использование уязвимых версий Windows: список включает Windows 7–10, Server 2008–2016.

  3. Действия пользователя: жертва должна подключиться к поддельному RDP-серверу, сгенерированному атакующим.

  4. Отсутствие обновлений: на целевой системе не установлен патч (март 2018), который исправляет проверку сертификатов в CredSSP.

Уязвимые версии ОС

  • Windows Server 2008 R2 SP1 64-bit
  • Windows 7 SP1 64-bit
  • Windows Server 2008 SP2 32-bit
  • Windows 7 SP1 32-bit
  • Windows 8.1 64-bit
  • Windows 8.1 32-bit
  • Windows Server 2008 SP2 64-bit
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2008 R2 SP1 32-bit
  • Windows 8.1 RT 32-bit
  • Windows 8.1 RT 64-bit
  • Windows 10 64-bit
  • Windows 10 32-bit
  • Windows 10 1511 64-bit
  • Windows 10 1511 32-bit
  • Windows 10 1607 64-bit
  • Windows 10 1607 32-bit
  • Windows 10 1703 32-bit
  • Windows Server 2016
  • Windows 10 1703 64-bit
  • Windows 10 1709 64-bit
  • Windows 10 1709 32-bit
  • Windows Server 1709

Анализ эксплоита CredSSP

Эксплоит от Preempt Security (автор Eyal Karni) реализует MitM-атаку через модифицированную версию библиотеки RDPY. Рассмотрим его компоненты.

Установка зависимостей
Скрипт install.sh подготавливает окружение:

  • Устанавливает Python 2.7, OpenSSL 1.1.0 с патчем для поддержки CredSSP.

  • Меняет версию библиотеки cryptography, чтобы обойти ограничения проверки сертификатов.

Пример патча для OpenSSL:

# Фрагмент openssl_diff_file.diff  
+ /* Enable weak ciphers for compatibility with older clients */  
+ SSL_CTX_set_cipher_list(ctx, "ALL:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK");  

Это позволяет использовать устаревшие шифры, что упрощает подмену сертификатов.

Генерация вредоносного сертификата
Скрипт gen_cmd.py внедряет команду в сертификат:

# Фрагмент gen_cmd.py  
def inject_command(cert_path, key_path, command):  
    cert = X509.load_cert(cert_path)  
    cert.add_ext(X509.new_extension('1.3.6.1.4.1.311.2.1.21', command.encode()))  
    cert.save_pem('exploitc.pem')  

Расширение OID 1.3.6.1.4.1.311.2.1.21 используется для передачи произвольных команд через сертификат.

MitM-прокси RDP
Основной скрипт rdpy-rdpcredsspmitm.py перехватывает CredSSP-трафик:

# Фрагмент обработки соединения  
class CredSSPMitMFactory(RDPClientMitMFactory):  
    def __init__(self, cert, key):  
        self.cert = cert  
        self.key = key  

    def onClientAuth(self, client):  
        client.setTLSContext(self._create_ssl_ctx())  # Подмена SSL-контекста  

    def _create_ssl_ctx(self):  
        ctx = SSL.Context(SSL.SSLv23_METHOD)  
        ctx.use_certificate_file(self.cert)  # Использование поддельного сертификата  
        ctx.use_privatekey_file(self.key)  
        return ctx  

Прокси имитирует легитимный сервер, заставляя клиент отправить учетные данные, которые затем передаются на настоящий сервер.


Защита от уязвимости

  1. Установка обновлений: Применить патч от марта 2018, который активирует строгую проверку сертификатов в CredSSP.

  2. Отключение CredSSP:

    # Команда для отключения CredSSP на клиенте  
    Disable-WSManCredSSP -Role Client  
  3. Использование последних ОС: Windows 10 1803+ и Server 2019 содержат встроенные исправления.

  4. Мониторинг сети: Выявление аномальных RDP-подключений и MitM-активности (например, через анализ сертификатов).

Алексей Черемных Алексей Черемных
52