W tym artykule kampanii Active Directory Persistence pokażemy kolejny sposób na ukrycie uprawnień w domenie Active Directory wykorzystujący modyfikację uprawnień na obiekcie AdminSDHolder.

O ataku na AdminSDHolder i samym obiekcie pisaliśmy w innym naszym artykule. Teraz postanowimy rozwinąć to zagadnienie i pokazać, w jaki sposób atakujący może zapewnić użytkownikowi backdoor w domenie uprawnienia, które umożliwią mu zarządzanie najbardziej istotnymi obiektami w domenie AD, czyli grupami Security odpowiadającymi za administrację. Zrobimy to w trochę inny sposób niż zazwyczaj jest to wykonywane na obiekcie AdminSDHolder – modyfikując właściciela tych obiektów.


Ważne uwagi dotyczące modyfikacji AdminSDHolder!

Lista kontroli dostępu (ACL) obiektu AdminSDHolder jest używana jako szablon do kopiowania uprawnień do wszystkich „grup chronionych” i ich członków w usłudze Active Directory. Chronione grupy i ich członkowie są oznaczani w Active Directory przy użyciu atrybutu o nazwie „adminCount”, który zostanie ustawiony na 1 dla chronionych użytkowników i grup. Po usunięciu użytkownika z uprzywilejowanej grupy nadal utrzymuje on wartość adminCount równą 1, ale nie jest już uważany za obiekt chroniony w usłudze Active Directory.
Oznacza to, że uprawnienia AdminSDHolder nie zostaną do nich zastosowane. Jednak prawdopodobnie będą mieć nadal ustawioną wersję uprawnień AdminSDHolder, ponieważ dziedziczenie ich uprawnień będzie nadal wyłączone jako pozostałość po okresie, w którym byli chronieni uprawnieniami AdminSDHolder. Dlatego nadal warto przyjrzeć się tym obiektom i w większości przypadków, włączyć dziedziczenie uprawnień.

Listę obiektów chronionych przez SDProp z ustawioną flagą admincount=1 możesz sprawdzić wykonując poniższe polecenie Powershell:

Import-Module ActiveDirectory
Get-ADObject -LDAPFilter “(&(admincount=1)(|(objectcategory=person)(objectcategory=group)))” -Properties MemberOf,Created,Modified,AdminCount


Jak działa atak modyfikujący AdminSDHolder?

Poniżej znajduje się podsumowanie tego, jak działa atak:

1. Atakujący zdobywa poświadczenia uprzywilejowanego użytkownika (np. poprzez socjotechnikę lub sposób przedstawiony w artykule Backdoor w Active Directory? Część 2 – ograniczone delegowanie uprawnień i przejęcie domeny.

2. Atakujący modyfikuje uprawnienia na obiekcie AdminSDHolder, dodając nowego użytkownika backdoor do listy kontroli dostępu (ACL).

3. Za pośrednictwem mechanizmu SDProp uprawnienia AdminSDHolder są przekazywane do wszystkich chronionych obiektów co 60 minut (domyślnie), w tym do grup uprzywilejowanych, takich jak:

  • Administratorzy domeny (Domain Admins)
  • Administratorzy (Administrators)
  • Administratorzy przedsiębiorstwa (Enterprise Admins)
  • Administratorzy schematu (Schema Admins)
  • Administratorzy kopii zapasowej (Backup Operators)
  • Kontrolery Domeny (Domain Controllers)
  • Operatorzy kont (Account Operators)
  • Operatorzy Wydruku (Print Operators)
  • Kontrolery Domeny tylko do odczytu (Read-only Domain Controllers)
  • Operatorzy Serwera (Server Operators)

oraz użytkowników tych grup, w tym najważniejszych kont wbudowanych w katalog AD:

  • KRBTGT
  • Administrator

Nawet jeśli administrator zobaczy niewłaściwe uprawnienia na chronionym obiekcie i usunie je, w ciągu godziny te uprawnienia zostaną przywrócone przez mechanizm SDProp.


Scenariusz ukrycia uprawnień poprzez AdminSDHolder


Załóżmy w naszym scenariuszu, że nie będziemy modyfikować uprawnień listy ACL (DACL) na obiekcie AdminSDHolder, ponieważ byłoby to bardziej oczywiste w momencie, gdy administrator sprawdziłby listę uprawnień na obiektach (zakładka Security).

W naszym scenariuszy zmodyfikujemy właściciela obiektu (Owner) na użytkownika backdoor i zobaczymy, że wszystkie obiekty (grupy i użytkownicy) chronione odziedziczą go poprzez mechanizm SDProp (swoją drogą zadajmy sobie pytanie: Jak często administratorzy sprawdzają właścicieli obiektów? Zapewniamy, że bardzo rzadko).
Modyfikacja Owner’a na obiekcie ma tą przewagę nad modyfikacją listy ACL, że właściciel obiektu będzie mógł w dowolny sposób modyfikować listę w każdym momencie.
Oznacza to, że posiadając dostęp do konta użytkownika, który jest właścicielem jednej z grup chronionych np. Domain Admins, będziemy mogli na niej w każdej chwili zmodyfikować (przypisać/usunąć) uprawnienia umożliwiające dodanie dowolnego innego użytkownika do członków tej grupy.

W celu wykonania takiego backdoor’a na uprawnienia wykonujemy następujące kroki:


Krok 1. Przypisanie właściciela obiektu AdminSDHolder dla użytkownika backdoor

Zmieniając właściciela obiektu AdminSDHolder (podobnie jak w przypadku zmiany listy uprawnień ACL) zmieniamy automatycznie właścicieli wszystkich obiektów chronionych. W tym celu wykonujemy poniższą zmianę klikając na właściwości obiektu AdminSDHolder w konsoli „Active Directory Users and Computers”. Przechodzimy do zakładki „Security” i klikamy „Advanced”. Właściciela zmienimy klikając poprzez przycisk „Change”. Oczywiście operację tą musimy wykonać na wysoko uprzywilejowanym użytkowniku.


Krok 2. Wymuszenie mechanizmu SDProp

W tym momencie musielibyśmy czekać 60 min (domyślny czas), aż nasz właściciel „backdoor” znajdzie się na wszystkich obiektach chronionych. W celu przyspieszenia całej operacji skorzystaliśmy ze skryptu w PowerShell pozwalającego uruchomić od razu mechanizm SDProp.


Krok 3. Weryfikacja właściciela na obiektach w AD

Sprawdzamy, czy nasz użytkownik „backdoor” został właścicielem obiektów chronionych. Dla przykładu wybierzemy grupę „Domain Admins”.

Wszystko się zgadza z naszymi założeniami. Mechanizm SDProp zmienił właściciela na obiektach chronionych.


Krok 4. Przydzielenie uprawnień do modyfikacji obiektu Domain Admins

Pomimo, że użytkownik „backdoor” jest właścicielem obiektu Domain Admins, nie może na nim wykonywać operacji zmiany członkostwa w grupie.

Nie należy tym się zbytnio przejmować, ponieważ właściciel obiektu w AD może zmieniać jego uprawnienia!
Od teraz możemy zalogować się na stacje roboczą Windows 10 jako zwykły użytkownik „kapitanhack.pl” i wykonać w PowerShell polecenia na użytkowniku „backdoor”, które zmodyfikują listę ACL na grupie „Domain Admins” – dodane zostaną uprawnienia dla użytkownika „kapitanhack.pl” typu „GenericALL” pozwalające modyfikować tą grupę.

W wyniku wykonania powyższego skryptu zobaczymy konto użytkownika kapitanhack.pl na liście uprawnień grupy „Domain Admins”.


Krok 5. Dodanie dowolnego użytkownika do grupy Domain Admins

Od tej pory mamy możliwość dodania dowolnego konta do administratorów domeny (i nie tylko tej grupy). Oczywiście na całą operację mamy 60 minut, bo mechanizm SDProp nadpisze uprawnienia przydzielone w kroku 4 swoim standardowym szablonem.
W celu dodania użytkownika kapitanhack.pl do „Domain Admins” możemy użyć następujące polecenie odpalone na użytkowniku kapitanhack.pl:

net group „Domain Admins” kapitanhack.pl /add /domain


Podsumowanie


Pokazaliśmy kolejny typ backdoor’a w Active Directory, za pomocą którego atakujący może zdobyć w nim przyczółek i eskalować uprawnienia dla dowolnych użytkowników w sieci. Wykorzystaliśmy do jego użycia mechanizm SDProp, który automatycznie pilnuje uprawnień na chronionych obiektach AD.
W kolejnych artykułach pokażemy inne sposoby na „ukrycie się” w AD.


Polecamy nasze inne części cyklu Active Directory Persistence:

  1. Backdoor w Active Directory? Część 1 – Utworzenie przyczółku
  2. Backdoor w Active Directory? Część 2 – ograniczone delegowanie uprawnień i przejęcie domeny
  3. Backdoor w Active Directory? Część 3 – dodanie komputera do domeny

Zachęcamy do udostępniania i komentowania artykułu na Facebook oraz na LinkedIn.

Podziel się z innymi tym artykułem!