W tym artykule zademonstrujemy ciekawy sposób na przejęcie kontroli nad Active Directory, wykorzystując do tego tylko jeden serwer z włączoną funkcją nieograniczonej delegacji Kerberos oraz serwer, na którym uruchomiona jest usługa serwera wydruku (Print Spooler) – w naszym przypadku kontroler domeny.

Nieodpowiednio skonfigurowana i niezabezpieczona domena w kontekście użycia funkcji nieograniczonej delegacji Kerberos może powodować ogromne ryzyko dla firmy. Cyberprzestępcy doskonale zdają sobie z tego sprawę i wiedzą, że nieprawidłowości w konfiguracji, o których piszemy nadużywane są w firmach, dlatego konieczne jest ograniczenie ryzyka poprzez prawidłowe skonfigurowanie tej funkcji. Jak się chronić o tym poniżej.


W czym tkwi problem?

W artykule tutaj pokazaliśmy, jak można skompromitować domenę AD przez serwer Windows 2016 włączając na jego koncie w AD funkcję nieograniczonej delegacji Kerberos. Mogliśmy podszyć się pod użytkownika, który poprosił o dostęp do zaatakowanej usługi. Niedawno specjaliści z SpectreOps pokazali jak za pomocą takiego serwera i kontrolera domeny z włączoną usługą serwera wydruku można szybko przeprowadzić atak na domenę i przejąć nad nią kontrolę.

Ciekawostką jest to, że usługa wydruku (Print Spooler) jest domyślnie włączona na każdym serwerze Windows. Tak więc do wykonania ataku potrzebujemy jedynie przejęcia kontroli nad serwerem, którego konto w Active Directory posiada włączoną opcję nieograniczonego delegowania Kerberos. O tym jak znaleźć taki serwer w AD pisaliśmy także w artykule wymienionym powyżej.


Scenariusz ataku

Atakujący zmusza kontroler domeny (DC) do próby uwierzytelnienia na hoście kontrolowanym przez atakującego (SA), który ma włączoną funkcję „nieograniczone delegowanie Kerberos” w AD. Odbywa się to za pośrednictwem interfejsu API RCP RpcRemoteFindFirstPrinterChangeNotificationEx, który umożliwia klientom podczas drukowania subskrybowanie powiadomień o zmianach na serwerze wydruku.

W celu prawidłowego wykonania ataku musimy wykonać następujące kroki (dla osób, które nie lubią czytać, na końcu artykułu zamieściliśmy film).


Krok 1. Przejęcie komputera z włączoną nieograniczoną delegacją Kerberos w AD

Warunkiem przeprowadzenia ataku jest to, że atakujący musi skompromitować system z włączoną na jego koncie w AD nieograniczoną delegacją Kerberos oraz musi na nim zdobyć poświadczenia lokalnego administratora.
Postanowiliśmy pominąć fazę exploitacji serwera i zdobycia na nim wymaganych poświadczeń. W naszym środowisku testowym lab jest to serwer Microsoft Windows 2016 o nazwie SA, do którego zalogujemy się jako użytkownik attacker z lokalnymi uprawnieniami administracyjnymi. Z niego będziemy przeprowadzać atak.

Rysunek 1. Uprawnienia użytkownika attacker na komputerze SA
Rysunek 2. Komputer SA w Active Directory posiada włączoną opcję nieograniczonego delegowania Kerberos

Przed atakiem chcemy się upewnić, że na serwerze SA nie posiadamy żadnego biletu TGT Kerberos kontrolera domeny.

Rysunek 3. Listing przechowywanych w pamięci biletów TGT na serwerze SA

Krok 2. Zlokalizowanie serwera lub kontrolera domeny z uruchomioną usługą Print Spooler i wykonanie do niego spreparowanego żądania

Atakujący znajduje ofiarę, która obsługuje serwer druku (Print Spooler). W tym naszym przypadku będzie to kontroler domeny, ponieważ chcemy pójść na skróty. Oczywiście w normalny scenariuszu może to być inny serwer w sieci, do którego chcemy przejąć uprawnienia.

Rysunek 4. Uruchomiona usługa Print Spooler na naszym kontrolerze domeny (DC)

W celu wykonania tego kroku posłużymy się specjalistycznym narzędziem SpoolSample lub możemy wykonać komendę „copy /b FILE \\Server\PRINTQ”, gdzie FILE jest lokalnym plikiem zawierającym zadanie do wydrukowania, a PRINTQ jest nazwą udostępnionej kolejki wydruku.

W naszym środowisku lab kontroler domeny nie udostępnia kolejki wydruku (jedynie ma uruchomioną usługę), więc w scenariuszu ataku posłużyliśmy się skompilowanym przez nas narzędziem SpoolSample. Przeprowadziliśmy także jego skan na portalu Virustotal, aby poznać, ile silników AV rozpoznaję go jako złośliwe. Lekko zdziwiliśmy się, bo otrzymaliśmy wynik 7/67! Plus dla Microsoft :), który jako jeden z nielicznych go wykrył. Oczywiście VT to skaner z linii komend i nie posiada wszystkich „ficzersów” jak skanery w wersji enterprise, ale zawsze daje jakiś pogląd na zagrożenie 🙂

Rysunek 5. Wyniki skanu narzędzia SpoolSample wykonane na portalu Virustotal.com

Do prawidłowego uruchomienia narzędzia SpoolSample konieczne jest podanie dwóch parametrów: nazwy serwera docelowego oraz lokalnego.

.\SpoolSample.exe DC SA

Rysunek 6. Uruchomienie narzędzia SpoolSample

Po wywołaniu interfejsu API nasz kontroler domeny DC próbuje uwierzytelnić się na zaatakowanym hoście SA, ujawniając tym samym swój bilet TGT zaatakowanemu systemowi, który jest pod kontrolą atakującego. Możemy się o tym przekonać uruchamiając naszą wersję narzędzia Mimikatz oraz wykonując następujące polecenie

mimikatz # sekurlsa::tickets


Rysunek 7. Listing biletów TGT oraz przechowanego w pamięci TGT kontrolera domeny

Na powyższym ekranie widać, że uzyskaliśmy bilet TGT kontrolera domeny DC$. To co nam jeszcze pozostało to jego wyodrębnienie (eksport) i użycie. Dzięki temu będziemy mogli podszyć się pod kontroler domeny, aby następnie przeprowadzić atak DCSync i zrzucić skróty haseł użytkowników domeny.

Rysunek 8. Wykonanie ataku Pass -the-Ticket i przejęcie uprawnień kontrolera domeny

Krok 3. Wykonanie ataku DCSync i wyodrębnienie nim NTLM hasha administratora domeny!

Eksportując i używając TGT kontrolera domeny możemy w jego imieniu poprosić o hashe użytkowników domeny. Moglibyśmy w podobny sposób pobrać hash hasła najważniejszego użytkownika krbtgt w domenie i potem wykonać atak Golden Ticket. Na poniższym ekranie pobraliśmy za pomocą DCSync hash administratora domeny.

Rysunek 9. Pobranie za pomocą DCSync hash’a hasła Administratora domeny

Od tej pory przejęliśmy domenę AD!

Przypominamy, że konta kontrolerów domeny należą w AD do grupy zabezpieczeń Domain Controllers, która to posiada uprawnienia replikacji domeny – w tym replikacji haseł użytkowników wymaganego do przeprowadzenia ataku DCSync.

Rysunek 10. Uprawnienia replikacji w domenie AD przydzielone dla grupy Domain Controllers

Jak sobie radzić z problemem?

Przede wszystkim wyłączyć usługę Print Spooler na kontrolerach domeny, ponieważ jak widać na podstawie powyższego scenariusza z dużą łatwością możemy pobrać z niego bilet TGT, którego potem można użyć do przeprowadzenia dalszych ataków. Z wyłączeniem usługi serwera wydruku na innych serwerach może być problem, dlatego powinniśmy je szczególnie chronić i monitorować. Ponadto powinniśmy:

  1. Zastosować łatkę Microsoft: CVE-2019-0683
  2. Zastosować się do zaleceń przedstawionych w artykule: ”Przejęcie domeny Active Directory za pomocą delegacji Kerberos”.
  3. Mądrze monitorować użycie kont, przypisywania uprawnień delegacji i zabezpieczyć konta uprzywilejowane.

Demo ataku

Na koniec przedstawiamy film z całego scenariusza ataku.