Основные уязвимости Active Directory 1 часть
Большинство организаций и предприятий во всем мире сегодня используют Active Directory в своей инфраструктуре в качестве решения для централизованного управления своими ресурсами. Но, как и любая другая подобная технология, Active Directory очень сложна, и ее защита требует значительных усилий и многолетнего опыта.
Этот список состоит из 16 проблем, которые чаще всего обнаруживаются во время тестов проникновения внутренней инфраструктуры и оценок уязвимостей. В этом нет ничего особенного или нового, это просто список типичных проблем.
Список организован случайным образом - поэтому он больше похож на контрольный список, чем на упорядоченный список ранжирования:
1. Пользователи, имеющие право добавлять компьютеры в домен
2. Атрибут AdminCount установлен для обычных пользователей.
3. Большое количество пользователей в привилегированных группах.
4. Учетные записи служб, являющиеся членами администраторов домена.
5. Чрезмерные привилегии
6. Учетные записи служб, уязвимые для Kerberoasting.
7. Пользователи с паролями, срок действия которых не истекает.
8. Пользователи без пароля.
9. Хранение паролей с использованием обратимого шифрования..
10. Хранение паролей с использованием хэшей LM..
11. Аккаунты, уязвимые к AS-REP Roasting'y.
12.Слабая политика паролей домена
13. Неактивные учетные записи домена
14. Привилегированные пользователи с просроченным паролем.
15. Пользователи со слабым паролем
16. Учетные данные в SYSVOL и настройках групповой политики (GPP)
Начнём.
1. Пользователи, имеющие право добавлять компьютеры в домен.
Это означает, что любой пользователь домена с низкими привилегиями может присоединить к домену до 10 компьютеров. Не очень, хорошо, наверное, но в чем дело?
Проблема в том, что эти настройки позволяют любому пользователю присоединиться к своему собственному неуправляемому компьютеру для доступа к корпоративному домену со следующими преимуществами:
- На их машину не будут загружены антивирусные программы или решения EDR.
- К их системе не будут применяться никакие настройки или политики GPO.
- Позволяет им иметь права администратора в своей системе
В корпоративных средах у пользователей никогда не должно быть прав локального администратора на своих машинах. Это одна из фундаментальных мер безопасности, которую следует применять повсеместно.
Если пользователи имеют административные привилегии на своих машинах, они могут выполнять привилегированные операции в сети, такие как создание необработанных сетевых пакетов, выполнение сканирования сети, запуск эксплойтов со своей машины для атаки на другие системы в сети и многое другое.
Поэтому пользователям никогда не должно быть разрешено присоединять компьютеры к домену.
Как проверить
Самый простой способ проверить это - подключить тестовую машину Windows (физическую или виртуальную) к целевой корпоративной сети, чтобы она могла подключиться к контроллерам домена.
1) Запустите sysdm.cpl, чтобы открыть «Свойства системы» -> нажмите «Изменить» и укажите имя целевого домена:
Щелкните "ОК".
2) Теперь нам будет предложено ввести учетные данные. Предоставьте любые учетные данные пользователя домена с низким уровнем привилегий.
В случае успеха мы должны увидеть сообщение «Добро пожаловать в домен org.local!» сообщение, и наша тестовая машина должна быть добавлена в AD в контейнере CN = Computers.
В качестве альтернативы мы также можем присоединить нашу тестовую машину к AD, используя следующую команду PowerShell:
Код:
add-computer –domainname <FQDN-DOMAIN> -Credential <DOMAIN>\<USER> -restart –force
# Пример
add-computer –domainname org.local -Credential ORG\john -restart –force
После перезапуска нашей тестовой машины машина должна быть полностью присоединена к домену.
3) Теперь мы должны иметь возможность проверить, действительно ли наш компьютер был добавлен в домен, перечислив компьютеры домена.
Обратите внимание, что если бы у нас был доступ к контроллерам домена, вот как мы могли бы перечислить все компьютеры, которые были добавлены не администраторами:
Код:
Import-Module ActiveDirectory
Get-ADComputer -LDAPFilter "(ms-DS-CreatorSID=*)" -Properties ms-DS-CreatorSID
2. Атрибут AdminCount установлен для обычных пользователей.
Атрибут AdminCount в Active Directory используется для защиты административных пользователей и членов привилегированной группы, например:
- Domain Admins
- Enterprise Admins
- Schema Admins
- Backup Operators
- Server Operators
- Replicator
- и тому подобное
Как проверить
Чтобы найти пользователей с атрибутом AdminCount, равным 1, мы можем использовать инструмент LDAPDomainDump . Этот инструмент собирает важную информацию обо всех пользователях, группах и компьютерах в домене. Все, что нам нужно, это учетные данные любого пользователя домена с низким уровнем привилегий и возможность доступа к порту LDAP любого контроллера домена.
Вот что надо делать .
1) Сначала соберите информацию с контроллера домена:
Python:
python ldapdomaindump.py -u <DOMAIN>\\<USER> -p <PASS> -d <DELIMITER> <DC-IP>
# Пример:
python ldapdomaindump.py -u example.com\\john -p pass123 -d ';' 10.100.20.1
(мы без проблем могли передать и хеш пароля)
2) После завершения сбора мы можем получить список пользователей с атрибутом AdminCount, равным 1, путем анализа файла domain_users.json:
Код:
jq -r '.[].attributes | select(.adminCount == [1]) | .sAMAccountName[]' domain_users.json
В качестве альтернативы, если у нас есть доступ к контроллеру домена, мы можем получить список этих пользователей следующим образом:
Код:
Import-Module ActiveDirectory
Get-AdObject -ldapfilter "(admincount=1)" -properties admincount
На этом первая часть закончена, пока что только кину удочку, хочу услышать отзывы и рекомендации. Если зайдёт, то без проблем продолжу!)