Надмірні дозволи в 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. Але потрібно пам’ятати, що це може вплинути на функціональність, тому слід переконатися, що всі наслідки зрозумілі, перш ніж застосовувати це. Також можливо окремо позначити облікові записи як «конфіденційні», але такий варіант застосовуватиме лише захист делегування.