Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В сетях на основе Windows существует специальный подвид контроллеров домена под названием Read-only Domain Controller. Сегодня мы поговорим об уязвимостях таких контроллеров и рассмотрим векторы атак, которые можно к ним применить.
Read-only Domain Controller был представлен в Windows Server 2008. Его основная цель — обеспечить безопасное взаимодействие сервера со службой каталогов. Очень часто подобные контроллеры домена ставят в каких‑нибудь удаленных офисах компании, старых филиалах и прочих местах, где невозможно гарантировать достаточную физическую безопасность сервера. Получив доступ к такому устройству, ни один злоумышленник не сможет толком повлиять на домен.
Внутри RODC хранится копия базы AD, но чуточку измененная. Во‑первых, не сохраняется множество атрибутов, например ms-Mcs-AdmPwd
— в этом атрибуте хранится пароль локального администратора при настроенном LAPS. Во‑вторых, разрешено кешировать учетные данные лишь конкретных пользователей. Например, пользователей этого самого удаленного офиса.
Что такое кеширование? Это обычное сохранение учетных данных пользователей. Сохраняются они в файле ntds.dit
, равно как и на обычном контроллере домена.
Причем RODC не создает домен, а добавляется в существующий. Делается это еще на этапе установки и выглядит вот так.
Настройка RODC
При этом использование RODC дает множество преимуществ в плане безопасности: отдельный DNS-сервер, изменения в котором никак не отражаются на основном, делегирование роли администратора любому пользователю (причем этот пользователь необязательно должен быть администратором на обычных контроллерах домена).
Назначение пользователей
Также следует выделить особенность репликации (DCSYNC) — она возможна только со стороны обычного контроллера домена. RODC ничего реплицировать не может. Также присутствует изоляция SYSVOL — любые изменения в групповых политиках остаются на RODC и не распространяются на основной домен.
Если рассматривать RODC на «тировой» архитектуре Microsoft, то возникают определенные сложности, так как принадлежащие Tier 0 ресурсы не могут работать в тех местах, где должны находиться RODC. А RODC не должны иметь под контролем какие‑либо ресурсы из Tier 0. Поэтому хосты RODC и учетные данные для подключения к ним никак не могут принадлежать Tier 0, но вот сами компьютерные объекты RODC следует защищать, как Tier 0.
RODC имеет множество особенностей. Первая — почти вся нужная атакующему информация находится в атрибутах компьютерной учетной записи RODC. Наиболее интересные для нас атрибуты кратко описаны ниже.
managedBy
Здесь указывается объект, которому делегировано административное управление RODC. Любой пользователь или группа, указанные в этом атрибуте, являются локальными администраторами на RODC:
Get-ADComputer 'RODC' -prop managedBy
Изучение атрибутаmsDS-RevealOnDemandGroup, msDS-NeverRevealGroup
В этом атрибуте указываются объекты, учетные данные которых могут кешироваться. Кеширование нужно для того, чтобы эти пользователи могли проходить проверку подлинности на RODC.
Get-ADComputer 'RODC' -prop msDS-RevealOnDemandGroup,msDS-NeverRevealGroup
Изучение атрибутов
Соответственно, существует атрибут, запрещающий кеширование прописанных в нем учетных данных объектов. Он называется msDS-NeverRevealGroup
.
msDS-AuthenticatedToAccountList
Здесь будут храниться объекты, которые успешно аутентифицировались на RODC:
Get-ADComputer 'RODC' -prop msDS-AuthenticatedToAccountList
Изучение атрибутаmsDS-Revealed*
Это целая группа из нескольких атрибутов:
Get-ADComputer 'RODC' -prop msDS-RevealedList,msDS-RevealedDSAs,msDS-RevealedUsers
Изучение атрибутов
RODC кеширует учетные данные определенных пользователей как раз таки, чтобы проверить их подлинность. После успешной аутентификации по всем канонам должен быть сгенерирован TGT-билет, но RODC нельзя считать надежным KDC, поэтому у него создается собственная учетная запись krbtgt
. Ее пароль используется для подписи создаваемых TGT.
Упомянутая учетная запись имеет необычное имя: krbtgt_<цифры>
. Эти самые цифры — специальный идентификатор ключа, который использовался для шифрования TGT-билета. Имя новой учетной записи KRBTGT хранится в атрибуте msDS-KrbTgtLink
объекта RODC. А у этой самой новой учетной записи KRBTGT в атрибуте msDS-KrbTgtLinkBl
содержится имя RODC. Таким образом, обнаружив RODC, можно связать его с конкретным KRBTGT_XXXXX
. И, соответственно, обнаружив KRBTGT_XXXXX
, можно связать его с конкретным RODC.
Дополнительно отмечу, что RODC имеет право на сброс пароля этой самой KRBTGT_XXXXX
.
Get-ADUser -filter {name -like "krbtgt*"} -prop Name,Created,PasswordLastSet,msDS-KeyVersionNumber,msDS-KrbTgtLinkBl
Нахождение KRBTGT_XXXXXGet-ADComputer RODC -Properties msDS-KrbTgtLink
Нахождение связанного krbtgtGet-ADUser krbtgt_19160 -Properties msDS-SecondaryKrbTgtNumber,msDS-KrbTGTLinkBl
Нахождение связанного RODC
Источник: xakep.ru