hacktricks/windows-hardening/active-directory-methodology/ad-certificates/domain-persistence.md

90 lines
8.3 KiB
Markdown
Raw Normal View History

2024-02-11 01:46:25 +00:00
# AD CS Trwałość domeny
2022-09-01 21:06:19 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-09-01 21:06:19 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2022-09-01 21:06:19 +00:00
2024-02-11 01:46:25 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-09-01 21:06:19 +00:00
</details>
2024-02-11 01:46:25 +00:00
**To jest podsumowanie technik trwałości domeny udostępnionych w [https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf)**. Sprawdź to dla dalszych szczegółów.
2024-02-05 02:29:11 +00:00
2024-02-11 01:46:25 +00:00
## Fałszowanie certyfikatów za pomocą skradzionych certyfikatów CA - DPERSIST1
2022-09-01 21:06:19 +00:00
2024-02-11 01:46:25 +00:00
Jak można stwierdzić, czy certyfikat jest certyfikatem CA?
2022-09-01 21:06:19 +00:00
2024-02-11 01:46:25 +00:00
Można stwierdzić, że certyfikat jest certyfikatem CA, jeśli spełnione są kilka warunków:
2024-02-05 02:29:11 +00:00
2024-02-11 01:46:25 +00:00
- Certyfikat jest przechowywany na serwerze CA, a jego klucz prywatny jest zabezpieczony przez DPAPI maszyny lub przez sprzęt, takie jak TPM/HSM, jeśli system operacyjny to obsługuje.
- Zarówno pola Wydawcy, jak i Podmiotu certyfikatu odpowiadają nazwie odróżniającej CA.
- Rozszerzenie "Wersja CA" jest obecne wyłącznie w certyfikatach CA.
- Certyfikat nie zawiera pól Rozszerzonego Użycia Klucza (EKU).
2022-09-01 21:06:19 +00:00
2024-02-11 01:46:25 +00:00
Aby wyodrębnić klucz prywatny tego certyfikatu, obsługiwana metoda za pomocą wbudowanego interfejsu GUI jest narzędzie `certsrv.msc` na serwerze CA. Niemniej jednak, ten certyfikat nie różni się od innych przechowywanych w systemie; dlatego można zastosować metody takie jak technika [THEFT2](certificate-theft.md#user-certificate-theft-via-dpapi-theft2) do jego wyodrębnienia.
2022-09-02 13:32:02 +00:00
2024-02-11 01:46:25 +00:00
Certyfikat i klucz prywatny można również uzyskać za pomocą Certipy za pomocą następującej komendy:
2022-09-02 13:32:02 +00:00
```bash
certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup
```
2024-02-11 01:46:25 +00:00
Po uzyskaniu certyfikatu CA i jego klucza prywatnego w formacie `.pfx`, można użyć narzędzi takich jak [ForgeCert](https://github.com/GhostPack/ForgeCert), aby wygenerować ważne certyfikaty:
2022-09-01 22:02:18 +00:00
```bash
2024-02-05 02:29:11 +00:00
# Generating a new certificate with ForgeCert
2022-09-01 22:02:18 +00:00
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123! --Subject "CN=User" --SubjectAltName localadmin@theshire.local --NewCertPath localadmin.pfx --NewCertPassword Password123!
2024-02-05 02:29:11 +00:00
# Generating a new certificate with certipy
2022-09-02 13:32:02 +00:00
certipy forge -ca-pfx CORP-DC-CA.pfx -upn administrator@corp.local -subject 'CN=Administrator,CN=Users,DC=CORP,DC=LOCAL'
2024-02-05 02:29:11 +00:00
# Authenticating using the new certificate with Rubeus
2022-09-01 22:02:18 +00:00
Rubeus.exe asktgt /user:localdomain /certificate:C:\ForgeCert\localadmin.pfx /password:Password123!
2022-09-02 13:32:02 +00:00
2024-02-05 02:29:11 +00:00
# Authenticating using the new certificate with certipy
2022-09-02 13:32:02 +00:00
certipy auth -pfx administrator_forged.pfx -dc-ip 172.16.126.128
2022-09-01 22:02:18 +00:00
```
{% hint style="warning" %}
2024-02-11 01:46:25 +00:00
Użytkownik, którego dotyczy fałszowanie certyfikatu, musi być aktywny i zdolny do uwierzytelnienia w Active Directory, aby proces zakończył się sukcesem. Fałszowanie certyfikatu dla specjalnych kont, takich jak krbtgt, jest nieskuteczne.
2022-09-01 22:02:18 +00:00
{% endhint %}
2024-02-11 01:46:25 +00:00
Ten sfałszowany certyfikat będzie **ważny** do określonej daty zakończenia i **tylko wtedy, gdy certyfikat CA nadrzędnego jest ważny** (zazwyczaj od 5 do **10+ lat**). Jest również ważny dla **maszyn**, więc w połączeniu z **S4U2Self** atakujący może **utrzymywać trwałość na dowolnej maszynie domeny** tak długo, jak certyfikat CA jest ważny.\
Ponadto, **wygenerowane certyfikaty** za pomocą tej metody **nie mogą zostać unieważnione**, ponieważ CA o nich nie wie.
2022-09-01 22:02:18 +00:00
2024-02-11 01:46:25 +00:00
## Ufanie sfałszowanym certyfikatom CA - DPERSIST2
2022-09-01 22:02:18 +00:00
2024-02-11 01:46:25 +00:00
Obiekt `NTAuthCertificates` jest definiowany jako zawierający jeden lub więcej **certyfikatów CA** w swoim atrybucie `cacertificate`, który wykorzystuje Active Directory (AD). Proces weryfikacji przez **kontroler domeny** polega na sprawdzeniu obiektu `NTAuthCertificates` w poszukiwaniu wpisu odpowiadającego **CA określonemu** w polu Wydawca uwierzytelniającego **certyfikatu**. Jeśli zostanie znalezione dopasowanie, uwierzytelnianie jest kontynuowane.
2022-09-01 22:02:18 +00:00
2024-02-11 01:46:25 +00:00
Atakujący może dodać samopodpisany certyfikat CA do obiektu `NTAuthCertificates`, o ile ma kontrolę nad tym obiektem AD. Zazwyczaj tylko członkowie grupy **Enterprise Admin**, wraz z **Domain Admins** lub **Administrators** w **domenie korzenia lasu**, mają uprawnienia do modyfikowania tego obiektu. Mogą edytować obiekt `NTAuthCertificates`, używając `certutil.exe` z poleceniem `certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA126`, lub za pomocą [**narzędzia PKI Health**](https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/import-third-party-ca-to-enterprise-ntauth-store#method-1---import-a-certificate-by-using-the-pki-health-tool).
2022-09-01 22:02:18 +00:00
2024-02-11 01:46:25 +00:00
Ta możliwość jest szczególnie istotna, gdy jest używana w połączeniu z wcześniej opisaną metodą wykorzystującą ForgeCert do dynamicznego generowania certyfikatów.
2022-09-01 22:02:18 +00:00
2024-02-11 01:46:25 +00:00
## Złośliwa nieprawidłowa konfiguracja - DPERSIST3
2022-09-01 22:02:18 +00:00
2024-02-11 01:46:25 +00:00
Okazje do **trwałości** poprzez **modyfikacje deskryptorów zabezpieczeń komponentów AD CS** są liczne. Modyfikacje opisane w sekcji "[Eskalacja domeny](domain-escalation.md)" mogą być złośliwie wprowadzane przez atakującego z podwyższonym dostępem. Dotyczy to dodawania "uprawnień kontrolnych" (np. WriteOwner/WriteDACL itp.) do wrażliwych komponentów, takich jak:
2022-09-01 22:02:18 +00:00
2024-02-11 01:46:25 +00:00
- Obiekt **komputera AD serwera CA**
- Serwer **RPC/DCOM serwera CA**
- Dowolny **obiekt lub kontener potomny AD** w **`CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`** (na przykład kontener Szablony certyfikatów, kontener Certyfikujące urzędy, obiekt NTAuthCertificates itp.)
- **Grupy AD z uprawnieniami do kontrolowania AD CS** domyślnie lub przez organizację (takie jak wbudowana grupa Cert Publishers i jej członkowie)
2022-09-01 22:02:18 +00:00
2024-02-11 01:46:25 +00:00
Przykładem złośliwej implementacji byłoby dodanie uprawnienia **`WriteOwner`** do domyślnego szablonu certyfikatu **`User`**, gdzie atakujący jest właścicielem tego uprawnienia. Aby wykorzystać to, atakujący najpierw zmieniłby właściciela szablonu **`User`** na siebie. Następnie na szablonie ustawiono **`mspki-certificate-name-flag`** na **1**, aby włączyć **`ENROLLEE_SUPPLIES_SUBJECT`**, co umożliwia użytkownikowi podanie alternatywnego nazwy w żądaniu. Następnie atakujący mógłby **zarejestrować się** za pomocą **szablonu**, wybierając jako alternatywną nazwę **administratora domeny**, i wykorzystać uzyskany certyfikat do uwierzytelnienia jako DA.
2022-09-01 22:02:18 +00:00
2022-09-01 21:06:19 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-09-01 21:06:19 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2022-09-01 21:06:19 +00:00
2024-02-11 01:46:25 +00:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi trikami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-09-01 21:06:19 +00:00
</details>