Dzisiejszy artykuł jest pierwszym z serii należącej do kampanii „Active Directory Persistence”, w której pokazujemy jakie są sposoby na stworzenie przyczółku w Active Directory umożliwiającego stały dostęp i przejęcie pełnej kontroli nad najważniejszym katalogiem uprawnień.
Do czego służy Backdoor?
Backdoor, czyli tylna furtka umożliwia cyberprzestępcy utworzenie przyczółku w środowisku IT, w celu uzyskania do niego dostępu i wykonywania w nim określonych aktywności. Tutaj opisaliśmy, w jakich okolicznościach można było przejąć w łatwy sposób uprawnienia administratora poprzez przejęcie biletu Kerberos. Metoda ta nie gwarantowała nam stałego dostępu do środowiska, a jedynie chwilowe uzyskanie poświadczeń administracyjnych. Tak zdobyty dostęp, można w dalszej fazie ataku wykorzystać do zaszycia się na stałe w środowisku i utworzenia backdoor’a. Etap ten nazywa się fazą Persistence.
Zapewne nasuwa Ci się pytanie: Po co tworzyć backdoor w środowisku, skoro posiadamy/zdobyliśmy uprawnienia użytkownika z najwyższymi uprawnieniami domenowymi?
Powodów jest kilka. Jeśli wykonaliśmy to w taki sposób jaki opisaliśmy w tym artykule, to uprawnienia admina ekspirują (w naszym przypadku bilet Kerberos). Jeśli zaś posiadamy aktualne hasło do takiego użytkownika, to może zostać zmienione np. przez system PAM.
Drugi powód to utworzenie przyczółku za pomocą, którego wykonywane działania będą mniej podejrzane w środowisku i będziemy mogli uzyskiwać do niego stały dostęp.
Trzeci to fakt, że działania na koncie administracyjnym mogą wzbudzać podejrzenia i być wykrywane przez specjalistyczne narzędzia do bezpieczeństwa.
Jak zatem taki backdoor utworzyć? O tym napiszemy w dalszej części artykułu.
Deskryptory zabezpieczeń obiektów AD
Oprócz ataków takich jak Golden Ticket czy Silver Ticket, dzięki którym możemy zapewnić sobie ukryty przyczółek bez wykonywania żadnych modyfikacji lub wykonania kodu w środowisku IT, istnieje inna droga ułatwiająca ukrywania się w Active Directory. Jest to podejście polegające na odpowiedniej konfiguracji deskryptorów zabezpieczeń obiektów w AD, które wymaga pewnego rodzaju modyfikacji środowiska. Te modyfikacje również nie wymagają konieczności wykonania kodu oraz mają jedną ciekawa zaletę – przetrwają nawet w przypadku aktualizacji systemu operacyjnego i zmiany poziomu funkcjonalności domeny.
Oznacza to, że modyfikacje deskryptorów zabezpieczeń usługi Active Directory stanowią doskonałą okazję do ukrywania się w domenie przy minimalnym śladzie kryminalistycznym.
Jeśli jest Ci znane środowisko Active Directory, to zapewne wiesz, że obiekty usługi katalogowej Active Directory (klasy obiektów) posiadają na sobie zabezpieczenia. Co oznacza, że zawierają deskryptor zabezpieczeń. Manipulując nimi odpowiednio, w szczególności właścicielami obiektu i pól DACL, możemy uzyskać takie uprawnienia, że utworzymy wysoko uprzywilejowane konto umożliwiające przeprowadzanie operacji takich, jak na koncie administratora. Wykonamy w ten sposób eskalacja uprawnień bez konieczności dodawania użytkownika do grup administracyjnych w domenie.
Nie trzeba być wysoko uprzywilejowanym użytkownikiem w Active Directory, aby umożliwić posiadanie nad nim pełnej kontroli. Wystarczy odpowiednia konfiguracja oraz narzędzie po stronie atakującego i możemy wykonywać operacje pozwalające zarządzać AD.
Przy monitorowaniu bezpieczeństwa AD często popełniamy błąd patrząc jedynie na zawartość oraz modyfikację grup administracyjnych.
Ukrywanie użytkownika w domenie
Jednym ze sposobów utworzenia backdoora w domenie jest ukrycie użytkownika wpolegające na modyfikacji deskryptorów zabezpieczeń dla innych obiektów. Dzięki temu możemy np. ukryć nazwę obiektu, uniemożliwiając oprogramowaniu do bezpieczeństwa lub specjalistom od bezpieczeństwa łatwe wykrycie takiego użytkownika. Taki obiekt można osłaniać do tego stopnia, że nie będzie on dostępny nawet podczas wyszukiwania w AD.
W naszym przypadku backdoorem może być zwykłe konto użytkownika, do którego uzyskamy odpowiedni dostęp i które będziemy mogli wykorzystać je do przejmowania kontroli nad środowiskiem. Ważne w przypadku takiego ukrywania obiektu jest:
- Zmiana właściciela obiektu użytkownika na konto na atakującego lub konto kontrolowane przez atakującego.
- Zmiana odpowiednich uprawnień (deskryptorów zabezpieczeń) na tym obiekcie użytkownika, aby inne obiekty nie miały do niego dostępu.
- Umieszczenie obiektu użytkownika w jednostce organizacyjnej (OU), na której odmówimy praw „do wyświetlenia wszystkich obiektów podrzędnych”, czyli uprawnienia: RIGHT_DS_LIST_CONTENTS. Oznaczać to będzie, że obiekt stanie się niewidoczny w AD.
Poniżej zamieściliśmy krok po kroku opis jak wykonać takiego backdoora.
Krok 1. Utworzenie konta użytkownika w AD
Zakładamy, że posiadasz stosowne uprawnienia w AD do tworzenia kont użytkowników lub zdobyłeś poświadczenia administratora domeny. W naszym przypadku użytkownikiem, którym będziemy chcieli użyć jako backoor’a będzie użytkownik o nazwie „backdoor”. Doskonałym miejscem na utworzenie konta w strukturze AD będzie wbudowany kontener w AD o nazwie „Keys”. Dlaczego wybraliśmy ten kontener? Po pierwsze musimy w jakimś miejscu w strukturze AD utworzyć użytkownika. Chcąc ukryć jego wyświetlanie dla innych w AD musimy zmienić uprawnienia na tym OU/kontenerze, w którym się znajduje. Jeśli utworzylibyśmy go we wbudowanym kontenerze Users lub nawet innym (stworzonym przez nas OU), wówczas wzbudzałoby to dodatkowe podejrzenia. Po drugie odebrane uprawnienia do wyświetlania obiektu w OU/kontenerze, w którym są inne obiekty skutkowałyby także wyświetlaniem innych obiektów znajdujących się w jego wnętrzu (patrz krok 3). Po trzecie kontener „Keys” jest tworzony domyślnie przy instalacji AD i najczęściej jest pusty w AD. Zatem możemy się domyśleć, że możemy upozorować ukrycie naszego użytkownika.
Uwaga! Keys jest kontenerem niewyświetlanym w standardowych opcjach konsoli ADUC. Aby go wyświetlić, należy włączyć poniższe opcje wyświetlania „Advanced Features”.
Nowego użytkownika utworzymy z konsolki ADUC lub z linii komend poleceniem:
net user backdoor P@ssw)rd /ADD /DOMAIN
Jeśli użyjemy powyższego polecenia z linii komend musimy naszego użytkownika przenieść jeszcze do kontenera o nazwie „Keys”.
Utworzony użytkownik „backdoor” w kontenerze „Keys”.
Krok 2. Odebranie uprawnień ACL do obiektu Backdoor
W tym kroku uniemożliwimy innym obiektom w AD uzyskiwanie dostępu do backdoor’a. Przydzielimy uprawnienia Deny Full Controll dla grupy Everyone. Everyone to grupa wbudowana w AD odpowiadająca za wszystkie obiekty. W tym celu musimy prawym przyciskiem myszy wejść na właściwości obiektu Backdoor -> przejść do zakładki „Security” i kliknąć przycisk Advanced. Teraz musimy dodać grupę Everyone i zaznaczyć wszystkie uprawnienia jako DENY oraz przepisać właściciela (pole Owner) na użytkownika Backdoor.
Po kliknięciu OK zobaczymy:
W wyniku wykonania powyższych operacji oraz odświeżenia konsoli ADUC zobaczymy to co poniżej:
Widzimy, że obiekt wyświetla się nadal, ale ma zmienioną ikonę i nie możemy przeczytać/zobaczyć w ADUC klasy obiektu (zdefiniowana jako „Unknown”). Do pełni szczęścia musimy wykonać jeszcze jedną operacje, ukrywająca wyświetlanie obiektu. Zrobimy to już na kontenerze Keys.
Krok 3. Odebranie uprawnień wyświetlania obiektów w OU
Ostatnią rzeczą jaką wykonamy to odebranie uprawnień wyświetlania obiektów w kontenerze Keys. Wykonany to także przy użyciu opcji Security oraz posłużymy się grupą Everyone. Klikamy prawym przyciskiem myszy na kontenerze „Keys” -> wybieramy „Properties” -> zakładka „Security” -> przysk „Advanced”. Klikamy na przycisk „Add” i w polu Principal wskazujemy grupę „Everyone”. W polu „Type” wybieramy „Deny”. Na liście „Permissions” zaznaczamy List contents.
Klikamy OK.
Klikamy OK.
Klikamy „Yes”.
Oczywiście powyższe uprawnienia możemy wykonać skryptem. Dla zainteresowanych prosimy o kontakt.
Efekt po odświeżeniu wyświetlania w konsoli ADUC:
Udało nam się ukryć użytkownika w AD!
Tak utworzonym użytkownikiem możemy spokojnie logować się do komputerów.
Od strony Active Directory gdybyśmy chcieli wyszukać obiekt Backdoor, konsola ADUC nie zwróci nam żadnego wyniku.
Podsumowanie
W dzisiejszym artykule, pierwszym z serii Active Directory Persistence, pokazaliśmy, jak można utworzyć konto użytkownika backdoor i je ukryć w strukturze AD, a następnie wykorzystać je do uzyskania dostępu do środowiska IT. W przypadku tworzenia backdoorów celowo nie tworzymy konta z uprawnieniami Domain Admin, ponieważ byłoby to podejrzane dla każdego z działu bezpieczeństwa.
W kolejnych artykułach pokażemy co dalej możemy zrobić z tak utworzonym użytkownikiem. Będziemy konfigurować dla niego odpowiednie wpisy w AD, za pomocą których będziemy mogli przejąć kontrole nad środowiskiem.
Porady na temat radzenia sobie i zabezpieczania przed tego typu aktywnościami zamieścimy w naszym ostatnim artykule z kampanii.