Почему Microsoft отключает RC4 в Kerberos и что это значит для вашей инфраструктуры
Итак, если вы ещё не слышали — в январе 2026 года Microsoft начала поэтапное отключение шифрования RC4-HMAC в протоколе Kerberos для контроллеров домена Active Directory. Причина проста и конкретна: уязвимость CVE-2026-20833 (CVSS 5.5), которая позволяет проводить атаки Kerberoasting. Злоумышленник с обычными правами доменного пользователя запрашивает сервисные билеты, зашифрованные слабым RC4, и взламывает пароли сервисных учёток офлайн.
RC4, созданный аж в 1987 году, не использует соль при преобразовании пароля в ключ — из-за этого хеши взламываются в 10–100 раз быстрее, чем AES. К июлю 2026 года RC4 будет полностью отключён на всех контроллерах домена через обязательные обновления Windows.
Если ваша среда не готова — аутентификация Kerberos просто перестанет работать для систем, которые зависят от RC4. Без вариантов.
Параллельно, в марте 2026-го Microsoft закрыла ещё одну серьёзную уязвимость — CVE-2026-25177 (CVSS 8.8), связанную с повышением привилегий в AD DS через дублирование SPN/UPN с помощью Unicode-символов. Обе уязвимости недвусмысленно говорят: безопасность AD требует немедленных действий.
График отключения RC4: три фазы от Microsoft
Microsoft разбила переход на три этапа, чтобы у администраторов было время подготовить инфраструктуру:
| Фаза | Дата | Что происходит |
|---|---|---|
| Фаза 1 — Аудит | Январь 2026 | Новые события аудита (Event ID 201, 4768, 4769), появляется ключ реестра RC4DefaultDisablementPhase |
| Фаза 2 — Принудительное включение | Апрель 2026 | AES-SHA1 становится стандартом по умолчанию, RC4-фоллбэк отключается автоматически |
| Фаза 3 — Полное отключение | Июль 2026 | Режим аудита удалён, ключ реестра игнорируется, работает только AES |
После июля 2026 года откат к RC4 станет невозможен через стандартные средства. Поэтому настоятельно рекомендую провести аудит и миграцию до апреля — когда начнётся принудительное применение. Честно говоря, лучше не тянуть до последнего момента.
Шаг 1: Аудит использования RC4 в вашем домене
Включение расширенного аудита Kerberos
Первым делом нужно понять, где в вашей среде ещё используется RC4. С обновлениями января 2026-го Microsoft расширила события Event ID 4768 (запрос TGT) и Event ID 4769 (запрос сервисного билета) новыми полями:
- Ticket Encryption Type — тип шифрования билета
- Session Encryption Type — тип шифрования сессии
- msDS-SupportedEncryptionTypes — поддерживаемые типы шифрования учётной записи
- Available Keys — доступные ключи шифрования
Значение 0x17 в полях Ticket или Session Encryption Type означает использование RC4-HMAC. Именно его мы и ищем.
Быстрая проверка через Event Viewer
На контроллере домена откройте Event Viewer → Windows Logs → Security и отфильтруйте по Event ID 4768. Ищите записи, где Ticket Encryption Type содержит 0x17:
# PowerShell: поиск RC4-билетов в журнале безопасности
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4768
} -MaxEvents 500 | Where-Object {
$_.Message -match '0x17'
} | Select-Object TimeCreated,
@{N='Account';E={($_.Properties[0]).Value}},
@{N='ClientIP';E={($_.Properties[9]).Value}} |
Format-Table -AutoSize
Автоматизированный аудит скриптами Microsoft
Microsoft выложила два PowerShell-скрипта в репозитории Kerberos-Crypto на GitHub:
- List-AccountKeys.ps1 — перечисляет доступные ключи шифрования для учётных записей
- Get-KerbEncryptionUsage.ps1 — анализирует типы шифрования Kerberos с фильтрацией по RC4
Запустите их на каждом контроллере домена:
# Загрузка и запуск скриптов аудита
# Требуется модуль ActiveDirectory
Import-Module ActiveDirectory
# Поиск всех учётных записей с RC4 без AES-ключей
Get-ADUser -Filter * -Properties msDS-SupportedEncryptionTypes |
Where-Object {
$_."msDS-SupportedEncryptionTypes" -eq 0 -or
$_."msDS-SupportedEncryptionTypes" -eq $null
} | Select-Object SamAccountName, DistinguishedName |
Export-Csv -Path "C:\Audit\Accounts_Without_AES.csv" -NoTypeInformation
# Поиск сервисных учётных записей с SPN и RC4
Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName, msDS-SupportedEncryptionTypes |
Where-Object {
$_."msDS-SupportedEncryptionTypes" -band 4 -and
-not ($_."msDS-SupportedEncryptionTypes" -band 24)
} | Select-Object SamAccountName, ServicePrincipalName,
@{N='EncTypes';E={$_."msDS-SupportedEncryptionTypes"}} |
Format-Table -AutoSize
Аудит компьютерных учётных записей
Не забудьте про компьютерные учётные записи. Старые машины на Windows Server 2003 или Windows XP не поддерживают AES (да, такие ещё встречаются в продакшене — видел не раз):
# Поиск устаревших компьютерных учётных записей
Get-ADComputer -Filter * -Properties OperatingSystem, msDS-SupportedEncryptionTypes |
Where-Object {
$_.OperatingSystem -match '2003|XP|2000' -or
$_."msDS-SupportedEncryptionTypes" -eq $null
} | Select-Object Name, OperatingSystem,
@{N='EncTypes';E={$_."msDS-SupportedEncryptionTypes"}} |
Export-Csv -Path "C:\Audit\Legacy_Computers.csv" -NoTypeInformation
Шаг 2: Обновление атрибута msDS-SupportedEncryptionTypes
Для каждой учётной записи, которая ещё сидит на RC4, нужно явно прописать поддержку AES через атрибут msDS-SupportedEncryptionTypes. Вот таблица значений битовой маски:
| Значение | Шифрование | Описание |
|---|---|---|
| 0x4 | RC4-HMAC | Устаревшее, небезопасное |
| 0x8 | AES128-CTS-HMAC-SHA1-96 | Современное |
| 0x10 | AES256-CTS-HMAC-SHA1-96 | Современное, рекомендуется |
| 0x18 (24) | AES128 + AES256 | Рекомендуемое значение |
| 0x1C (28) | RC4 + AES128 + AES256 | Переходный период |
Массовое обновление учётных записей через PowerShell
# Обновление всех пользователей без явного типа шифрования
# Значение 24 = AES128 + AES256 (без RC4)
Get-ADUser -Filter {msDS-SupportedEncryptionTypes -notlike "*"} |
Set-ADUser -Replace @{"msDS-SupportedEncryptionTypes" = 24}
# Обновление сервисных учётных записей (безопасный вариант с предпросмотром)
Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName, msDS-SupportedEncryptionTypes |
ForEach-Object {
Write-Host "Обновление: $($_.SamAccountName) — SPN: $($_.ServicePrincipalName)" -ForegroundColor Yellow
# Раскомментируйте строку ниже после проверки:
# Set-ADUser -Identity $_ -Replace @{"msDS-SupportedEncryptionTypes" = 24}
}
Обязательный сброс паролей
Вот тут внимание — это критически важный момент, который многие пропускают. После обновления атрибута msDS-SupportedEncryptionTypes необходимо сбросить пароль каждой затронутой учётной записи. Почему? Потому что AES-ключи Kerberos генерируются только при смене пароля. Без сброса учётная запись не получит AES-ключи, даже если атрибут формально указывает на поддержку AES.
# Сброс пароля сервисной учётной записи
Set-ADAccountPassword -Identity "svc_sqlserver" -Reset -NewPassword (
Read-Host "Введите новый пароль" -AsSecureString
)
# Для управляемых учётных записей (gMSA) — пароль управляется автоматически
# Достаточно убедиться, что атрибут msDS-SupportedEncryptionTypes установлен
Шаг 3: Настройка групповой политики (GPO)
Для централизованного управления типами шифрования Kerberos удобнее всего использовать GPO:
- Откройте Group Policy Management Console
- Создайте или отредактируйте GPO, привязанный к OU с контроллерами домена
- Перейдите в Computer Configuration → Policies → Windows Settings → Security Settings → Local Policies → Security Options
- Найдите параметр Network security: Configure encryption types allowed for Kerberos
- Установите флажки только для AES128_HMAC_SHA1 и AES256_HMAC_SHA1
Важный нюанс: в переходный период (пока не завершён полный аудит) можно временно оставить RC4 включённым вместе с AES. Снимайте флажок RC4 только после того, как убедитесь, что все учётные записи и устройства поддерживают AES. Иначе рискуете получить массовые блокировки в самый неподходящий момент.
# Проверка применённой политики на контроллере домена
gpresult /r /scope:computer | findstr /i "kerberos"
# Принудительное обновление GPO
gpupdate /force
Шаг 4: Обработка особых случаев
Linux и Unix-системы
Отдельная головная боль — Linux-клиенты, интегрированные с Active Directory. Они часто используют keytab-файлы с RC4. Для миграции:
# На Linux-машине: проверка текущего keytab
klist -kte /etc/krb5.keytab
# Если в списке только arcfour-hmac (RC4), нужно пересоздать keytab
# Пример для SSSD/Samba:
net ads keytab create -U administrator
# Или вручную через ktutil:
ktutil
addent -password -p HTTP/[email protected] -k 1 -e aes256-cts-hmac-sha1-96
wkt /etc/krb5.keytab
quit
NAS-устройства и сетевые аплайансы
Многие NAS-устройства (Synology, QNAP) и сетевые аплайансы по умолчанию используют RC4 для Kerberos-аутентификации в домене. Тут совет простой: проверьте документацию производителя на поддержку AES и обновите прошивку до актуальной версии. Не откладывайте — в некоторых случаях обновление прошивки требует перезагрузку, а это нужно планировать заранее.
Доверительные отношения между доменами (Forest Trusts)
Ещё один момент, о котором легко забыть: межлесные доверительные отношения по умолчанию поддерживают только RC4. Для включения AES:
# Проверка текущих типов шифрования для доверия
Get-ADTrust -Filter * -Properties msDS-SupportedEncryptionTypes |
Select-Object Name, Direction,
@{N='EncTypes';E={$_."msDS-SupportedEncryptionTypes"}}
# Включение AES для доверительного отношения
Set-ADTrust -Identity "trusted.domain.local" `
-Replace @{"msDS-SupportedEncryptionTypes" = 24}
Устаревшие системы Windows Server 2003 / XP
Эти системы не поддерживают AES. Тут вариантов немного:
- Вывести из эксплуатации (лучший вариант, если возможно)
- Изолировать в отдельный VLAN с минимальным доступом
- Перенести рабочие нагрузки на современные ОС
Шаг 5: Принудительное отключение RC4 и валидация
Настройка реестра контроллера домена
Когда аудит завершён и все зависимости от RC4 устранены, можно переходить к решительным действиям. Установите значение реестра на каждом контроллере домена:
# Установка AES-only на контроллере домена
# Значение 0x18 = только AES128 + AES256
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\KDC" `
-Name "DefaultDomainSupportedEncTypes" `
-Value 0x18 -Type DWord
# Для полного набора AES (включая AES-SHA2):
# Значение 0x38 = AES128 + AES256 + AES-SHA2
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\KDC" `
-Name "DefaultDomainSupportedEncTypes" `
-Value 0x38 -Type DWord
# Перезапуск службы KDC
Restart-Service -Name "KDC" -Force
Очистка кешированных билетов Kerberos
После применения изменений клиенты могут какое-то время использовать старые кешированные билеты с RC4. Обновите их принудительно:
# На клиентских машинах Windows:
klist purge
# На серверах — очистка всех сессий:
klist -li 0x3e7 purge
Мониторинг после миграции
После отключения RC4 не расслабляйтесь — продолжайте мониторить события 4768 и 4769. Все записи должны показывать типы шифрования 0x11 (AES128) или 0x12 (AES256). Если вдруг появляются ошибки аутентификации — смотрите Event ID 4771 (ошибка предварительной аутентификации Kerberos).
# Мониторинг ошибок Kerberos после миграции
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4771
} -MaxEvents 100 | Select-Object TimeCreated,
@{N='Account';E={($_.Properties[0]).Value}},
@{N='ErrorCode';E={($_.Properties[4]).Value}},
@{N='ClientIP';E={($_.Properties[6]).Value}} |
Format-Table -AutoSize
Шаг 6: Защита от CVE-2026-25177 (повышение привилегий в AD DS)
Параллельно с миграцией RC4 → AES стоит закрыть ещё одну дыру — CVE-2026-25177, выпущенную в мартовском Patch Tuesday 2026. Эта уязвимость с рейтингом CVSS 8.8 позволяет аутентифицированному злоумышленнику получить привилегии уровня SYSTEM через создание дублирующих SPN/UPN с помощью Unicode-символов. Серьёзная штука.
Действия по устранению
- Установите мартовские обновления 2026 на все контроллеры домена через WSUS или Windows Update
- Проведите аудит SPN на предмет дубликатов:
# Поиск дублирующих SPN в домене
setspn -X
# Расширенный поиск через PowerShell
$spns = Get-ADObject -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName
$allSPNs = $spns | ForEach-Object { $_.ServicePrincipalName } | Sort-Object
$duplicates = $allSPNs | Group-Object | Where-Object { $_.Count -gt 1 }
$duplicates | ForEach-Object {
Write-Host "Дубликат SPN: $($_.Name) — количество: $($_.Count)" -ForegroundColor Red
}
- Настройте мониторинг событий Kerberos (Event ID 4768, 4769, 4771) в SIEM-системе для обнаружения попыток эксплуатации
- Примените принцип минимальных привилегий ко всем сервисным учётным записям — это базовая гигиена, которая поможет не только с этой CVE
Чек-лист миграции: от аудита до полного отключения RC4
Чтобы ничего не упустить, держите этот чек-лист под рукой:
- ☐ Установлены обновления Windows от января 2026 года на всех контроллерах домена
- ☐ Включён аудит событий 4768/4769 с расширенными полями шифрования
- ☐ Запущены скрипты
List-AccountKeys.ps1иGet-KerbEncryptionUsage.ps1 - ☐ Выявлены все учётные записи с
msDS-SupportedEncryptionTypes = 0илиnull - ☐ Обновлён атрибут
msDS-SupportedEncryptionTypesдо значения 24 (AES128+AES256) - ☐ Сброшены пароли всех затронутых сервисных учётных записей
- ☐ Обновлены keytab-файлы для Linux/Unix-систем
- ☐ Проверены доверительные отношения между доменами/лесами
- ☐ Обновлены NAS-устройства и сетевые аплайансы
- ☐ Выведены из эксплуатации или изолированы системы Windows Server 2003/XP
- ☐ Настроена GPO с разрешением только AES-шифрования
- ☐ Установлено значение реестра
DefaultDomainSupportedEncTypes = 0x18 - ☐ Установлены мартовские обновления 2026 (CVE-2026-25177)
- ☐ Настроены SIEM-алерты для мониторинга оставшегося RC4-трафика
Часто задаваемые вопросы
Что произойдёт, если не мигрировать с RC4 до июля 2026?
Всё просто: после июльских обновлений Windows RC4 будет полностью отключён на контроллерах домена без возможности отката. Все учётные записи, устройства и приложения, которые зависят от RC4 для Kerberos-аутентификации, перестанут аутентифицироваться. Это может обернуться массовыми сбоями входа в домен, отказом сервисов и недоступностью сетевых ресурсов. Не самый приятный сценарий, правда?
Как узнать, использует ли моя среда RC4?
Установите январские обновления 2026 на контроллерах домена — они добавляют расширенные поля в события аудита 4768 и 4769. Ищите значение 0x17 в полях Ticket Encryption Type и Session Encryption Type. Также запустите PowerShell-скрипты List-AccountKeys.ps1 и Get-KerbEncryptionUsage.ps1 из репозитория Microsoft Kerberos-Crypto на GitHub — они автоматизируют большую часть работы.
Сломается ли аутентификация Linux-машин после отключения RC4?
Да, если Linux-машины используют keytab-файлы, содержащие только RC4-ключи (arcfour-hmac). Решение: пересоздайте keytab-файлы с AES-ключами командой net ads keytab create или ktutil и убедитесь, что конфигурация /etc/krb5.conf разрешает шифрование AES256 и AES128.
Нужно ли сбрасывать пароли после обновления msDS-SupportedEncryptionTypes?
Да, и это обязательный шаг — не пропускайте его. AES-ключи Kerberos генерируются исключительно при смене пароля учётной записи. Если обновить атрибут msDS-SupportedEncryptionTypes, но не сбросить пароль, AES-ключи не создадутся, и учётка продолжит использовать RC4. Для gMSA (управляемых учётных записей) пароль ротируется автоматически — тут можно не беспокоиться.
Как проверить, что миграция на AES прошла успешно?
Мониторьте события 4768 и 4769 в журнале безопасности контроллеров домена. Все записи должны показывать типы шифрования 0x11 (AES128) или 0x12 (AES256). Если значений 0x17 (RC4) больше нет — миграция завершена успешно. Для финальной проверки запустите Get-KerbEncryptionUsage.ps1.