57 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AD CS Account Persistence
{{#include ../../../banners/hacktricks-training.md}}
**Це невеликий підсумок розділів про збереження на машині з чудового дослідження з [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf)**
## **Розуміння крадіжки облікових даних активного користувача за допомогою сертифікатів PERSIST1**
У сценарії, де сертифікат, що дозволяє автентифікацію домену, може бути запитаний користувачем, зловмисник має можливість **запросити** та **вкрасти** цей сертифікат, щоб **підтримувати збереження** в мережі. За замовчуванням шаблон `User` в Active Directory дозволяє такі запити, хоча іноді він може бути вимкнений.
Використовуючи інструмент під назвою [**Certify**](https://github.com/GhostPack/Certify), можна шукати дійсні сертифікати, які забезпечують постійний доступ:
```bash
Certify.exe find /clientauth
```
Підкреслюється, що сила сертифіката полягає в його здатності **автентифікуватися як користувач**, якому він належить, незалежно від будь-яких змін пароля, поки сертифікат залишається **дійсним**.
Сертифікати можна запитувати через графічний інтерфейс, використовуючи `certmgr.msc`, або через командний рядок з `certreq.exe`. З **Certify** процес запиту сертифіката спрощується наступним чином:
```bash
Certify.exe request /ca:CA-SERVER\CA-NAME /template:TEMPLATE-NAME
```
Після успішного запиту сертифікат разом із його приватним ключем генерується у форматі `.pem`. Щоб перетворити це в файл `.pfx`, який можна використовувати в системах Windows, використовується наступна команда:
```bash
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
```
Файл `.pfx` можна завантажити на цільову систему та використовувати з інструментом під назвою [**Rubeus**](https://github.com/GhostPack/Rubeus) для запиту квитка на отримання квитка (TGT) для користувача, продовжуючи доступ зловмисника на стільки, наскільки сертифікат є **дійсним** (зазвичай один рік):
```bash
Rubeus.exe asktgt /user:harmj0y /certificate:C:\Temp\cert.pfx /password:CertPass!
```
Важливе попередження стосується того, як ця техніка, в поєднанні з іншим методом, викладеним у розділі **THEFT5**, дозволяє зловмиснику постійно отримувати **NTLM hash** облікового запису без взаємодії з Службою підсистеми локальної безпеки (LSASS) і з не підвищеного контексту, що забезпечує більш прихований метод для тривалого викрадення облікових даних.
## **Отримання постійності машини за допомогою сертифікатів - PERSIST2**
Інший метод полягає в реєстрації облікового запису машини скомпрометованої системи для сертифіката, використовуючи шаблон за замовчуванням `Machine`, який дозволяє такі дії. Якщо зловмисник отримує підвищені привілеї на системі, він може використовувати обліковий запис **SYSTEM** для запиту сертифікатів, що забезпечує форму **постійності**:
```bash
Certify.exe request /ca:dc.theshire.local/theshire-DC-CA /template:Machine /machine
```
Цей доступ дозволяє зловмиснику автентифікуватися в **Kerberos** як обліковий запис машини та використовувати **S4U2Self** для отримання квитків служби Kerberos для будь-якої служби на хості, ефективно надаючи зловмиснику постійний доступ до машини.
## **Розширення постійності через поновлення сертифікатів - PERSIST3**
Останній обговорюваний метод полягає у використанні **термінів дії** та **періодів поновлення** шаблонів сертифікатів. Поновлюючи сертифікат до його закінчення терміну дії, зловмисник може підтримувати автентифікацію в Active Directory без необхідності додаткових реєстрацій квитків, які можуть залишити сліди на сервері Центру сертифікації (CA).
### Поновлення сертифікатів з Certify 2.0
Починаючи з **Certify 2.0**, процес поновлення повністю автоматизований через нову команду `request-renew`. З урахуванням раніше виданого сертифіката (в **форматі base-64 PKCS#12**) зловмисник може поновити його без взаємодії з оригінальним власником ідеально для прихованої, довгострокової постійності:
```powershell
Certify.exe request-renew --ca SERVER\\CA-NAME \
--cert-pfx MIACAQMwgAYJKoZIhvcNAQcBoIAkgA... # original PFX
```
Команда поверне новий PFX, який дійсний ще на один повний термін, що дозволяє вам продовжувати автентифікацію навіть після того, як перший сертифікат закінчує термін дії або відкликується.
## References
- [Certify 2.0 SpecterOps Blog](https://specterops.io/blog/2025/08/11/certify-2-0/)
{{#include ../../../banners/hacktricks-training.md}}