Menu dostępności

Atakowanie kont usługowych gMSA w Active Directory

W poprzednim tygodniu na łamach naszego portalu ukazał się artkuł, w którym opisywaliśmy, jak zarządzać kontami usług (MSA i gMSA) w Active Directory. W skrócie: Managed Service Account (MSA) to specjalny typ konta Active Directory, którego można używać do uruchamiania usług, aplikacji i zaplanowanych zadań. Samo konto jest o tyle bezpieczne, że hasłem zarządza samo AD a nie użytkownik, przez co pozostaje nieznane nawet dla samych administratorów.

Jednak, jak podaje Sean Metcalf na portalu Adsecurity.org, bezpieczeństwo tego konta nie jest tak mocne jak mogłoby się nam wydawać. Kluczową korzyścią jest automatyczna zmiana haseł poprzez Active Directory, a nie fakt, że dane uwierzytelniające są lepiej chronione.

W dzisiejszym poście postaramy się pokazać co może zrobić atakujący, jeśli konta gMSA nie są odpowiednio chronione.


Ważne atrybuty kont gMSA

Musimy zacząć od wymienienia ważnych dla nas atrybutów kont gMSA są to z pewnością:

  • atrybut msDS-GroupMSAMembership – odpowiada za to, kto może uzyskać dostęp do hasła gMSA.
  • atrybut msds-ManagedPassword zawiera BLOB z informacjami o hasłach dla kont usługowych zarządzanych grupowo.

Dodatkowo, aby uzyskać identyfikator klucza posłużymy się atrybutem msDS-ManagedPasswordId i na koniec msDS-ManagedPasswordInterval, który służy pobierania liczby dni przed automatyczną zmianą hasła

PS C:\> Get-ADServiceAccount -filter {name -eq 'KAPITANHACK_SVC’} -prop * | Select Name,DNSHostName,MemberOf,Created,LastLogonDate,PasswordLastSet,msDS-ManagedPasswordInterval,PrincipalsAllowedToDelegateToAccount,PrincipalsAllowedToRetrieveManagedPassword,msDS-ManagedPassword,ServicePrincipalNames

Powyższe informacje możemy pozyskać z Active Directory uruchamiając cmdlet PowerShell Get-ADServiceAccount. Przykład powyżej, gMSA jest członkiem grupy Administratorzy w domenie „Kapitan.hack”. Na zrzucie ekranu widać, że hasło zostało ostatnio zmienione i nie zmieni się przez 30 dni. Oznacza to, że jeśli uda się zdobyć hasło do tego konta, pozostanie miesiąc na wykorzystanie jego danych uwierzytelniających.

Atakujący wykona najprawdopodobniej dwa scenariusze, pierwszy, gdzie uzyskujemy dostęp do serwera z uprawnieniami administratora, aby za pomocą narzędzia Mimikatz wyciągnąć hash hasła NT. Drugi w przypadku braku dostępu do serwera wylistuje listę osób (i komputerów) z uprawnieniami do pozyskania hash’a aby użyć ich poświadczeń do wyciągnięcia hasła. Oba scenariusze mają taki sam cel, którym jest kompromitacja środowiska Active Directory.
W celu pokazania tych możliwości posłużyliśmy się scenariuszami opisanymi przez Sean Metcalf.


Scenariusz 1 – Pozyskiwanie dostępu do serwera z uruchomioną usługą gMSA

Po wejściu na serwer, na których działają usługi GMSA, mamy kilka opcji.

Źródło: Adsecurity

Jak widać serwer LCNSQL01 jest zarejestrowany jako Service Principal Name (SPN) w gMSA, widać też, że serwer znajduje się w Servers OU.

Wystarczy skompromitowanie konta z prawami do Servers OU lub delegowanymi prawami administratora poprzez GPO. Mając możliwość modyfikacji GPO, które łączy się z tym OU, uzyskujemy prawa administratora na serwerze LCN.

Po uzyskaniu praw administratora możemy zobaczyć, że w usługa gMSA została skonfigurowana tak aby uruchomić Windows License Manager.

Źródło: Adsecurity

Za pomocą Mimikatz i komendy sekurlsa::logonpasswords, możemy zobaczyć hash hasła natomiast nie jest to jeszcze forma, której możemy użyć do kompromitacji środowiska AD.

Źródło: Adsecurity

Nie jest to standardowe hasło (i nie jest to hasło przypisane do konta). Co więcej, ten hash hasła nie jest poprawny. Microsoft wczytuje dane uwierzytelniające GMSA do LSASS, ale nie wygląda, aby ich używał.

Aby uzyskać prawidłowy hash hasła NT, musimy użyć polecenia Mimikatz które jest używane do uzyskania biletów Kerberosa:

sekurlsa::ekeys

Źródło: Adsecurity

Scenariusz 2 – Brak dostępu do serwera

Mając informacje o tym, że istnieje grupa skonfigurowana z uprawnieniami do uzyskania hasła i wykorzystując to, że atrybut konta gMSA msDS-GroupMSAMembership zawiera grupę o nazwie „SVC-LAB-GMSA1 Group” możemy się dowiedzieć kto może żądać i otrzymywać hasło w postaci czystego tekstu.

Źródło: Adsecurity

Używając cmdlet Get-ADGroupMember jesteśmy w stanie określić członków danej grupy, widzimy, że występuję w niej komputery, użytkownicy i jeszcze jedna grupa „Server Admins”.

Źródło: Adsecurity

Teraz mamy listę wszystkich kont, które mogą uzyskać hasło gMSA w postaci czystego tekstu. Jest 11 kont użytkowników z taką możliwością, z czego 9 z nich wygląda jak zwykłe konta użytkowników.

Następnie kompromitujemy konto użytkownika lub komputera, który ma możliwość pozyskania hasła w postaci czystego tekstu. W tym celu możemy użyć cmdleta

Get-ADServiceAccount

Źródło: Adsecurity

Dane dotyczące hasła w postaci czystego tekstu które zawiera atrybut msds-ManagedPassword możemy uzyskać korzystając z modułu DSInternals który przekonwertuje blok haseł w postaci tekstu na hash NT.

Uwaga: Jeśli konto, które jesteśmy w stanie przejąć, jest kontem komputera, musimy uruchomić te polecenia jako SYSTEM na komputerze. Możemy do tego zastosować PSEXEC.

Załóżmy, że jesteśmy w stanie uzyskać prawa administratora/SYSTEM na serwerze z uprawnieniami do pozyskania hasła gMSA, ale usługa nie pracuje na tym hoście. W tym przypadku uruchomienie Mimikatz nie pomoże, ponieważ poświadczenia gMSA nie są przechowywane w pamięci.

Używając PSEXEC, jesteśmy w stanie wywołać polecenia jako lokalne konto SYSTEM. Po tym możemy wykonać te same czynności, które opisaliśmy powyżej.
Źródło: Adsecurity

Potwierdzenie hashy

Ostatnim krokiem jest potwierdzenie, że hash hasła NT uzyskany przez DSInternals odpowiada hasłu w Active Directory. Do tego możemy zastosować polecenie

DSInternals Get-ADReplAccount

Po potwierdzeniu, że hash konta gMSA zgadza się z hashem pobranym z AD możemy skompromitować środowisko AD.


Podsumowanie

Nieodpowiednio zabezpieczane konta gMSA szczególnie z wysokimi uprawnieniami potrafią w prosty sposób doprowadzić do kompromitacji całej domeny. Szczególnie ważne jest, aby weryfikować jakich uprawnień wymaga pracujące konto usługowe w naszym środowisku. Bądź czy istnieje możliwość nadania niższych uprawnień do prawidłowej pracy. Warto też zweryfikować ilość użytkowników którzy posiadają uprawnienia do pozyskania hasła z kont gMSA. W tym artykule między innymi opisywaliśmy, jak ograniczyć dostęp kont usługowych do poszczególnych serwerów, na których odpowiadają za obsługę. Nie ma potrzebny, aby były wystawione tam, gdzie nie wykonują żadnego zadania.

Popularne

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

W tym artykule pokażemy, jak możemy zmienić hasło administratora na komputerze posiadając do niego fizyczny dostęp. Artykuł ten można potraktować także jako przestrogę dla firm, które nie zaimplementowały jeszcze odpo...
Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

W środę 9 października użytkownicy platformy Microsoft Azure na całym świecie doświadczyli poważnych zakłóceń. Wiele usług stało się niedostępnych, a administratorzy nie mogli nawet zalogować się do portalu...
Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jeśli masz odrobinę szczęścia lub „odpowiednie umiejętności” i potrafisz zdobyć lokalne uprawnienia administracyjne na Twoim komputerze w firmie lub zaliczasz się do grona tych szczęściarzy, którzy pracuj...
Czego nie mówi Broadcom? Luka w VMware jest banalna do wykorzystania i korzysta z niej co najmniej jedna grupa hakerska!

Czego nie mówi Broadcom? Luka w VMware jest banalna do wykorzystania i korzysta z niej co najmniej jedna grupa hakerska!

Niedawno załatana wysoce poważna luka w zabezpieczeniach VMware jest wykorzystywana jako zero-day od października 2024 roku do wykonywania kodu z podwyższonymi uprawnieniami. Taką informacją podzieliło się w...
Uwaga, administratorzy oraz zespoły bezpieczeństwa Splunk! Sześć krytycznych luk w Splunk Enterprise – analiza i rekomendacje

Uwaga, administratorzy oraz zespoły bezpieczeństwa Splunk! Sześć krytycznych luk w Splunk Enterprise – analiza i rekomendacje

Splunk opublikował ważne informacje, dotyczące szeregu nowych podatności w swoich produktach Splunk Enterprise i Splunk Cloud Platform. Luki mogą umożliwić atakującym wykonanie nieautoryzowanego kodu Ja...