Чрезмерные разрешения в Active Directory являются еще одной вечной проблемой, которую может быть трудно полностью устранить в сложных средах из-за большого количества движущихся частей. Эта проблема сложна еще и потому, что она часто возникает по разным причинам, таким как недостаточное количество политик или их несоблюдение, а также постоянная борьба между целесообразностью и безопасностью.
CrowdStrike Professional Services Red Team часто сталкивается с неправильно настроенными, забытыми или объектами с чрезмерными разрешениями, которые дают нам возможность перепрыгивать, пропускать и перепрыгивать к контролю над средой.
Учетные записи с чрезмерным разрешением
Эта ошибка появлялась в большинстве сред, которые были протестированы командой CrowdStrike. Служебные учетные записи, которые являются членами администраторов домена или эквивалентных групп, являются одной из самых больших проблем. А проблема заключается в том, что служебные учетные записи часто слишком распространены в среде для выполнения своей работы. Кроме того, они составляют наибольшую долю учетных данных, которые были найдены в незащищенных местах. Даже если их нельзя найти в файлообменнике, то учетные данные потенциально можно получить через Kerberoasting или из реестра хоста – если учетная запись работает как служба на этом хосте.
Однако опасными могут быть не только права администрирования домена – мы можем использовать служебные учетные записи как ступеньку к статусу локального администратора на серверах, которые содержат другие пути.
Другими основными игроками являются учетные записи администраторов службы поддержки, которые могут в конечном итоге скомпрометировать домен. Часто видны вложенные членства в группах Active Directory, которые ведут к встроенной группе администраторов домена или учетным записям с возможностью изменять другие принципы, что может скомпрометировать домен.
Недостаточная многоуровневость учетных записей
Не вдаваясь в подробности, активы в сети часто можно представить в виде уровней, где уровень 0 — это сам домен и лица, которые могут работать с ним (например, администраторы домена и контроллеры домена). Уровень 1 часто включает большинство других серверов и их администраторов, уровень 2 – это, как правило, администраторы службы поддержки и вспомогательная инфраструктура, а уровень 3 охватывает все остальное.
Хотя многие компании все лучше отделяют учетные записи администраторов от обычных учетных записей пользователей, CrowdStrike Professional Services Red Team часто обнаруживает, что для администраторов не существует дальнейшего разделения на уровни, особенно между уровнями 0 и 1/2. Это означает, что учетные записи с полным контролем над доменом входят на рабочие станции и файловые серверы, где их учетные данные потенциально доступны в LSASS, или оставляют устаревшие RDP-сессии, которые могут быть перехвачены. Это сложнее и более заметно при эксплуатации, но все же это является проблемой.
Неправильно настроенные и забытые права контроля доступа
Еще одна распространенная находка Red Team – это группа пользователей домена, которая имеет такие права доступа, как AllExtendedRights, WriteDacl или GenericAll на нескольких компьютерных объектах, а иногда даже на других пользователях.
Что еще хуже, компьютерные объекты могут не соответствовать серверу, который доступен через сеть. Но если объект не был удален из Active Directory, злоумышленники могут злоупотреблять этими разрешениями, чтобы завладеть им. Это может привести к последующим атакам для получения доступа к чему-то другому или регистрации в AD CS, таким как цепной контроль доступа.
Два самых распространенных пути для неправильно настроенных ACE на компьютерных объектах — это теневые учетные данные и ограниченное делегирование на основе ресурсов (RBCD), которыми можно злоупотреблять, когда пользователи домена имеют права AllExtendedRights, GenericAll, GenericWrite, WriteDacl или Owner на компьютерном объекте.
Первый вариант, теневые учетные данные, требует одного из двух сценариев: 1) PKINIT включен для аутентификации или 2) наличие TLS с LDAP. Злоумышленник записывает новые учетные данные в атрибут msDS-KeyCredentialLink объекта, добавляя механизм беспарольной аутентификации для этого объекта.
RBCD немного сложнее. Протокол аутентификации Kerberos использует билеты для получения доступа к службам во всей среде. Если пользователь хочет получить доступ к веб-серверу, он получает служебный билет для HTTP-сервиса и отправляет его. Однако, если этой службе нужен доступ к внутренней базе данных, чтобы получить информацию для пользователя, предоставленный служебный билет не покрывает этого. Таким образом, возникает проблема двойного перехода.

Первоначально Microsoft решила эту проблему, введя неограниченное делегирование. При такой настройке пользователь отправляет переадресованный билет выдачи билетов (TGT) в дополнение к служебному билету. Затем веб-сервер (в этом примере) мог запросить служебный билет от имени пользователя, чтобы получить доступ к внутренней базе данных. Но в чем проблема? TGT – это то же самое, что иметь пароль пользователя для всего, что использует аутентификацию Kerberos. Поэтому скомпрометированный сервер приведет к компрометации всех пользователей, получающих к нему доступ.

Далее – ограниченное делегирование. Microsoft добавила Service for User to Self (S4U2Self) и Service for User to Proxy (S4U2Proxy). Теперь служба может запрашивать билет на обслуживание для любого пользователя в среде либо для себя (S4U2Self), либо для определенного списка служб (S4U2Proxy). Этот список состоит из имен объектов служб (SPN), которые хранятся в атрибуте msDS-AllowedToDelegateTo объекта. Этот вариант лучше, но все еще имеет свои недостатки.

И, наконец, RBCD. С RBCD парадигма меняется: back-end имеет список сервисов, которые могут ему делегировать, и эти сервисы хранятся как SPN в атрибуте msDS-AllowedToActOnBehalfOfOtherIdentity. Front-end-сервис все еще использует S4U2Proxy и все еще может запрашивать служебный билет от имени любого незащищенного пользователя, но только если back-end-сервис позволяет это делать. Это шаг вперед, потому что теперь цель (back-end) должна быть скомпрометирована первой.

Введите неправильно настроенные ACE. Используя что-то вроде GenericWrite над другим объектом, в этом случае главным образом учетными записями компьютера, учетная запись может изменить атрибут msDS-AllowedToActOnBehalfOfOtherIdentity, чтобы добавить SPN, которым она управляет. Этот SPN может возникнуть в результате другой атаки (например, Kerberoasting), с другого контролируемого компьютера или из-за злоупотребления квотой учетной записи компьютера по умолчанию, которая позволяет любому пользователю добавлять 10 объектов компьютера без вопросов. Эти компьютерные объекты всегда поставляются с SPN.
После того, как свойство было изменено, злоумышленник может использовать S4U2Proxy для запроса билета службы для администратора к службе HOST цели, получая административный доступ через компьютер.
Потенциальные средства смягчения чрезмерных разрешений
Одним из важнейших шагов является регулярная проверка среды Active Directory на наличие неправильно настроенных элементов. Инструмент с открытым исходным кодом BloodHound отлично справляется с этим, беря данные из AD Explorer или собственного источника данных и размещая их в базе данных и на поисковом графике. Это может значительно упростить поиск по сравнению с самостоятельным просмотром Active Directory.

Ключевые области, на которые стоит обратить внимание:
- GenericAll, GenericWrite, AllExtendedRights и WriteDacl для непривилегированных пользователей или групп над другим объектом: нормальных причин немного, поэтому стоит пересмотреть эти права для непривилегированных пользователей
- Несколько уровней вложенных групп, которые могут привести к непреднамеренным разрешениям
- Объекты Active Directory: в частности компьютеры, которые больше не существуют в сети, но не были полностью удалены из Active Directory
Еще один нетехнический подход заключается в том, чтобы иметь жесткие политики и процедуры для создания и уничтожения объектов Active Directory. Это гарантирует, что для объектов не будет настроен шаблон по умолчанию, включая разрешения, которые им не нужны, или они не останутся позади при выводе из эксплуатации. Учетные записи службы администратора домена нельзя предоставлять без законной необходимости.
С технической стороны необходимо хорошо использовать встроенную группу защищенных пользователей в Active Directory. Это поможет предотвратить делегирование этих пользователей, как во время атаки RBCD, и кэширование их учетных данных, где бы они ни входили. Такой подход будет особенно полезным для администраторов домена и любых конфиденциальных администраторов уровня 1. Но нужно помнить, что это может повлиять на функциональность, поэтому следует убедиться, что все последствия понятны, прежде чем применять это. Также возможно отдельно обозначить учетные записи как «конфиденциальные», но такой вариант будет применять только защиту делегирования.