The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project The YapLink Project

Сохраняем доступ. Бэкдоры в Active Directory. Часть 2.

Tartuga

Местный
Регистрация
19.12.2019
Сообщения
101
Реакции
22

Разрешение SeEnableDelegationPrivilege после добавления записи
При добавлении любого SID или имени пользователя в любую строку данного файла в разделе [Privilege Rights] изменения вступают в силу, когда контроллер домена или пользователя перезагружают или обновляют групповую политику.

PS > $Policy = Get-DomainPolicy -Source DC
PS > $Policy['Privilege Rights']['SeEnableDelegationPrivilege']

Таким образом, если целевой пользователь обладает полными правами на любого другого пользователя в домене, то оператор может изменить значения свойства msDS-AllowedToDelegateTo для подконтрольного пользователя, делегировав права абсолютно на любую службу в домене. Контроль над всеми службами в домене дает нам контроль над всем доменом.

Security Support Provider.
Security Support Provider Interface (SSPI) — программный интерфейс в Microsoft Windows между приложениями и провайдерами безопасности. SSPI используется для отделения протоколов уровня приложения от деталей реализации сетевых протоколов безопасности и обеспечивает уровень абстракции для поддержки множества механизмов аутентификации.

SSPI позволяет легко расширять методы проверки подлинности Windows, позволяя добавлять новых поставщиков поддержки безопасности (SSP). Вот некоторые из стандартных служб SSP:

  1. NTLM — это протокол аутентификации, используемый в сетях, которые включают машины с операционной системой Windows.
  2. Kerberos — определяет, как клиенты взаимодействуют со службой сетевой аутентификации на основе билетов.
  3. Negotiate — это SSP, который действует как прикладной уровень между SSPI и другими поставщиками общих служб.
  4. Schannel — это SSP, который содержит набор протоколов безопасности, обеспечивающих идентификацию личности и безопасную конфиденциальную связь посредством шифрования.
  5. Digest — это SSP, который реализует упрощенный протокол аутентификации для сторон, участвующих в обмене данными на основе протоколов HTTP или SASL.
  6. CredSSP — это SSP, позволяющий приложению делегировать учетные данные пользователя для удаленной аутентификации.
Но мы можем добавить свой SSP в систему Windows. Имеющийся в mimikatz модуль SSP обеспечивает автоматическую регистрацию локально аутентифицированных учетных данных. Таким образом, оператор сможет получать актуальный пароль учетной записи компьютера, учетные данные служб, а также все учетные записи, которые авторизуются в системе.

Есть два способа сделать это. Первый — воспользоваться модулем misc.

mimikatz # privilege::debug
mimikatz # misc::memssp


Использование модуля misc::memssp mimikatz
Но этот способ не переживет перезагрузки машины. Теперь разберем более сложный, но надежный второй способ. Необходимо скопировать mimilib.dll в папку C:\Windwows\System32. После этого надо обновить запись в реестре по пути HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Security Packages, добавив туда mimilib.


Запись Security Packages в реестре
Теперь все данные авторизации будут регистрироваться в журнале C:\Windwows\System32\kiwissp.log.


Пароль пользователя root в открытом виде
Используя групповые политики, можно собирать информацию со всех журналов всех машин в домене, а также сохранять их в какой-нибудь общедоступный ресурс.

Списки доступа и дескрипторы безопасности.
Учетные записи теневого администратора (shadow admins) — это учетные записи, которые имеют «негласные» привилегии и обычно остаются незамеченными, так как они не входят в привилегированную группу Active Directory. Как правило, привилегии таким учетным записям предоставлены за счет прямого назначения разрешений (списков доступа). Поскольку учетная запись теневого администратора обладает неявными привилегиями и ее сложнее обнаружить (она не состоит ни в каких привилегированных группах), то она наиболее приоритетна для оператора.

Каждый объект в Active Directory имеет свой собственный список разрешений ACE (записи контроля доступа), которые в совокупности составляют ACL (список контроля доступа). ACL каждого объекта определяет, кто имеет разрешения на этот конкретный объект и какие действия могут быть выполнены с ним.


ACL группы «Администраторы домена для всех»

ACL группы «Администраторы домена для System»
То есть группе «Администраторы домена» по умолчанию предоставляется полный доступ ко всем объектам домена. Но оператор может взять непривилегированную учетную запись пользователя и предоставить ей те же ACE, что и группе «Администраторы домена». Такая учетная запись и будет классифицироваться как учетная запись теневого администратора.

Преимущество этого метода состоит в том, что обнаружить его можно, только постоянно отслеживая списки контроля доступа, что на самом деле делается очень редко либо вообще никогда. Рассмотрим три самых распространенных варианта использования метода.

Первый вариант — когда оператор предоставляет учетной записи полный контроль над группой «Администраторы домена».


Полный контроль над группой «Администраторы домена»
В данном варианте учетная запись не состоит в указанной группе и не является привилегированной, но в любой момент может добавить себя или другую подконтрольную учетную запись в эту группу, выполнить необходимые действия и удалиться из группы.

Второй вариант — когда оператор предоставляет учетной записи разрешение «Сбросить пароль» для другой учетной записи из группы «Администраторы домена».


Разрешение «Сбросить пароль» для учетной записи «Администратор»
И третий вариант — когда оператор предоставляет учетной записи привилегии на репликацию изменений каталога.


Разрешения на репликацию изменений каталога
Любой пользователь с таким разрешением имеет возможность реплицировать любые объекты, включая пароли. Это дает оператору право на выполнение атаки DCSync.

Directory Services Restore Mode.
Каждый контроллер домена имеет внутреннюю учетную запись локального администратора. Она называется учетной записью режима восстановления служб каталогов (DSRM). Причем пароль для данной учетной записи редко подлежит изменению, так как основной способ сделать это на контроллере домена заключается в запуске инструмента командной строки ntdsutil.

Есть возможность синхронизировать пароль DSRM на контроллере домена с определенной учетной записью домена. Установить пароль можно, выполнив последовательно следующие команды.
> ntdsutil
: set dsrm password
: reset password on server null
: []
: q
: q


Замена пароля DSRM
Но дело в том, что пользователь DSRM по умолчанию — это «Администратор». Таким образом, их пароли совпадают. Но оператор может связать пользователя DSRM с любым другим пользователем домена.

> ntdsutil
: set dsrm password
: sync from domain account [пользователь]
: q
: q


Связывание пользователя DSRM с другой учетной записью
После того как удалось связать учетную запись DSRM с другой учетной записью, определимся, как ее можно использовать. Первым делом добавим свойство DsrmAdminLogonBehavior в HKLM:\System\CurrentControlSet\Control\Lsa\. Возможные значения:

  • 0 (по умолчанию): можно использовать учетную запись DSRM, только если DC запущен в DSRM;
  • 1: можно использовать учетную запись DSRM для входа в систему, если локальная служба AD остановлена;
  • 2: всегда можно использовать учетную запись DSRM.
Для авторизации по сети (ведь это запись администратора DSRM) нам необходимо выставить значение 2.

PS> New-ItemProperty "HKLM:\System\CurrentControlSet\Control\Lsa\" -Name "DsrmAdminLogonBehavior" -Value 2 -PropertyType DWORD


Добавление свойства DsrmAdminLogonBehavior

Свойство DsrmAdminLogonBehavior в реестре
При этом оператору не нужно знать пароль пользователя, достаточно хеша пароля (для path the hash). Если значение свойства DsrmAdminLogonBehavior равно 2, а оператор может изменить пароль DSRM, то данный способ позволяет ему сохранить права администратора на контроллере домена даже при изменении всех паролей пользователей и компьютеров домена.

Skeleton Key.
Skeleton Key — это особенное вредоносное программное обеспечение, которое позволяет легко понижать защищенность учетных записей в домене Active Directory с точки зрения авторизации. Эта программа внедряется в процесс LSASS и создает там собственный пароль, который будет актуален для любой учетной записи домена. Причем настоящие пароли тоже будут действительны, поэтому риск, что бэкдор обнаружат, значительно снижается.

В сетях Windows, как правило, есть два основных метода аутентификации: NTLM и Kerberos. И оба этих метода подвергаются вмешательству Skeleton Key. Таким образом, при NTLM-аутентификации хеш пароля сравнивается не с базой SAM, а с хешем Skeleton Key внутри LSASS. В случае с Kerberos шифрование будет понижено до алгоритма, который не поддерживает соль (RC4_HMAC_MD5). Поэтому хеш, проверяемый на стороне сервера, будет удовлетворять хешу Skeleton Key, и аутентификация всегда будет успешной.

Для внедрения бэкдора необходимы права администратора домена. Но стоит помнить, что, поскольку используется внедрение в процесс, перезагрузка контроллера домена удалит вредоносную программу. При этом выполнить атаку очень просто, для этого нужен mimikatz.

mimikatz # privilege::debug
mimikatz # misc::skeleton


Внедрение Skeleton Key с помощью mimikatz
В результате этих действий появился еще один пароль, который также работает для пользователя: mimikatz.


Авторизация с поддельным паролем Skeleton Key

Авторизация с реальным паролем пользователя
При этом данный пароль подходит для авторизации под абсолютно любой учетной записью пользователя домена.


Авторизация под пользователем «Администратор» с паролем Skeleton Key

Авторизация под пользователем notroot с паролем Skeleton Key
Стоит также упомянуть и LSA. При внедрении бэкдора может появиться следующая ошибка.


Авторизация под пользователем notroot с паролем Skeleton Key
Чтобы избежать этого, нам нужно выполнить атаку в обход LSA. Но и это несложно сделать с помощью mimikatz.

mimikatz # privilege::debug
mimikatz # !+
mimikatz # !processprotect /process:lsass.exe /remove
mimikatz # misc::skeleton


Внедрение бэкдора Skeleton Key в обход LSA

Заключение.
Можно сказать, что Skeleton Key — это метод, который оператор может использовать для доступа к хостам и сетевым ресурсам без необходимости взламывать пароли пользователей домена. Полученный этим способом доступ сохраняется после смены паролей всех пользователей (включая администраторов) до перезагрузки контроллера домена.
 
Верх