Jak odzyskać po ataku Golden gMSA
W tym artykule opisano podejście do naprawiania poświadczeń konta usługi zarządzanego przez grupę (gMSA), które mają wpływ na zdarzenie ujawnienia bazy danych kontrolera domeny.
Symptomy
Aby uzyskać opis ataku Golden gMSA, zobacz następujący artykuł Semperis:
Opis w powyższym artykule jest dokładny. Podejściem do rozwiązania problemu jest zastąpienie obiektu klucza głównego usługi dystrybucji kluczy firmy Microsoft (kdssvc.dll, znanej również jako KDS) i wszystkich gMSA korzystających z naruszonego obiektu klucza głównego KDS.
Więcej informacji
W przypadku pomyślnego ataku na gMSA atakujący uzyskuje wszystkie ważne atrybuty obiektu klucza głównego KDS i Sid
msds-ManagedPasswordID
atrybuty obiektu gMSA.
Atrybut msds-ManagedPasswordID
jest obecny tylko na zapisywalnej kopii domeny. W związku z tym, jeśli baza danych kontrolera domeny jest uwidoczniona, tylko domena, którą hostuje kontroler domeny, jest otwarta dla ataku Golden gMSA. Jeśli jednak osoba atakująca może uwierzytelnić się na kontrolerze domeny innej domeny w lesie, osoba atakująca może mieć wystarczające uprawnienia, aby uzyskać zawartość msds-ManagedPasswordID
. Osoba atakująca może następnie użyć tych informacji do utworzenia ataku na konta gMSA w dodatkowych domenach.
Aby chronić dodatkowe domeny lasu po ujawnieniu jednej domeny, należy zastąpić wszystkie zarządzane konta w domenie uwidocznionej, zanim osoba atakująca będzie mogła użyć tych informacji. Zazwyczaj nie znasz szczegółów tego, co zostało ujawnione. W związku z tym zaleca się zastosowanie rozwiązania do wszystkich domen lasu.
Jako środek proaktywny inspekcja może służyć do śledzenia ujawnienia obiektu klucza głównego KDS. Listę kontroli dostępu systemu (SACL) z pomyślnymi odczytami można umieścić w kontenerze Główne klucze główne, co umożliwia inspekcję pomyślnych operacji odczytu atrybutu msKds-RootKeyData
msKds-ProvRootKey
klasy. Ta akcja określa poziom ekspozycji obiektu w odniesieniu do ataku Golden gMSA.
Uwaga 16.
Inspekcja pomaga wykrywać tylko atak online na dane klucza głównego KDS.
Możesz rozważyć ustawienie parametru ManagedPasswordIntervalInDays
na 15 dni lub wybranie odpowiedniej wartości podczas tworzenia konta zarządzanego przez użytkownika, ponieważ ManagedPasswordIntervalInDays
wartość staje się tylko do odczytu po utworzeniu konta zarządzanego przez grupy.
W przypadku naruszenia zabezpieczeń to ustawienie może skrócić czas następnego kroczenia.
Zmniejszy teoretyczną liczbę gMSA, która ma zostać ponownie utworzona między datą przywrócenia kopii zapasowej a końcem ekspozycji bazy danych, a przynajmniej okresem trwania okna ryzyka do czasu wprowadzania tych gMSAs, jeśli trzymasz się scenariusza 1.
Oto przykładowy scenariusz:
Po ekspozycji bazy danych należy wykonać odzyskiwanie w ciągu "Dzień D".
Przywrócona kopia zapasowa pochodzi z D-15.
Uwaga 16.
D-15 oznacza dzień, który jest 15 dni przed "Dzień D".
Wartość gMSA
ManagedPasswordIntervalInDays
wynosi 15.GMSA istnieją i zostały zwinięte D-1.
Nowsze konta zasad grupy zostały utworzone na podstawie D-10.
Naruszenie zabezpieczeń odbywa się na D-5, a niektóre gMSA zostały utworzone w tej dacie.
Oto wyniki:
GMSA utworzone między D i D-5 nie są zainteresowane*.
Grupy gMSA utworzone między D-15 (przywrócona kopia zapasowa) i D-5 (naruszenie)* muszą zostać utworzone ponownie lub należy przyjąć, że okna ryzyka można oczekiwać z D+5 do D+10. Na przykład:
- W systemie D+5 należy ponownie utworzyć konta zasad grupy utworzone na serwerze D-10.
- W systemie D+10 należy ponownie utworzyć konta gMS utworzone na serwerze D-5.
*Zależy od dokładnego czasu naruszenia lub utworzenia kopii zapasowej.
Oto przykładowa oś czasu:
W celu debugowania można przejrzeć identyfikatory zdarzeń systemu, zabezpieczeń, usług katalogowych i dziennika zdarzeń Security-Netlogon.
Aby uzyskać więcej informacji na temat naruszenia zabezpieczeń, zobacz Używanie zasobów zabezpieczeń firmy Microsoft i platformy Azure w celu ułatwienia odzyskiwania po naruszeniu bezpieczeństwa tożsamości systemowej.
Rozwiązanie
Aby rozwiązać ten problem, użyj jednej z następujących metod, w zależności od sytuacji. Metody obejmują utworzenie nowego obiektu klucza głównego KDS i ponowne uruchomienie usługi dystrybucji kluczy firmy Microsoft na wszystkich kontrolerach domeny domeny.
Scenariusz 1: Masz wiarygodne informacje o tym, jakie informacje zostały ujawnione i kiedy
Jeśli wiesz, że ekspozycja miała miejsce przed określoną datą, a ta data jest wcześniejsza niż najstarsze hasło zarządzanego konta zarządzanego przez Ciebie, możesz rozwiązać problem bez ponownego tworzenia zasad grupy, jak pokazano w poniższej procedurze.
Metoda polega na utworzeniu nowego obiektu klucza głównego KDS nieznanego osobie atakującej. Gdy konta zasad grupy przerzucą swoje hasło, zostaną przeniesione do nowego obiektu klucza głównego KDS. Aby rozwiązać problemy z zasadami grupy, które niedawno wprowadziły swoje hasło przy użyciu starego klucza głównego KDS, konieczne jest przywrócenie autorytatywne w celu wymuszenia aktualizacji hasła natychmiast po przywróceniu.
Uwaga 16.
- Nie trzeba ręcznie naprawiać zasad grupy, które zostały utworzone po zakończeniu ekspozycji bazy danych usług domena usługi Active Directory (AD DS). Osoba atakująca nie zna szczegółów tych kont, a hasła dla tych kont zostaną wygenerowane ponownie na podstawie nowego obiektu klucza głównego KDS.
- Należy rozważyć obiekt gMSA w trybie konserwacji do momentu ukończenia procedury i zignorować możliwe błędy zgłaszane z kontami w dzienniku zdarzeń System, Security, Directory Services i Security-Netlogon.
- W przewodniku założono, że konta zarządzane przez administratora są obiektami podrzędnymi kontenera Zarządzanych kont usług. Jeśli konta zostały przeniesione do niestandardowych kontenerów nadrzędnych, należy uruchomić kroki związane z kontenerem Zarządzanych kont usług w gMSA w tych kontenerach.
- Przywracanie autorytatywne przywraca wszystkie atrybuty do stanu, w których znajdowały się w czasie tworzenia kopii zapasowej, w tym kont, które mogą pobierać poświadczenia gMSA (
PrincipalsAllowedToRetrieveManagedPassword
).
W domenie, w której znajdują się konta zarządzane przez grupy, które chcesz naprawić, wykonaj następujące kroki:
Przełącz kontroler domeny w tryb offline i odizoluj go od sieci.
Przywróć kontroler domeny z kopii zapasowej utworzonej przed ujawnieniem bazy danych usług AD DS.
Jeśli interwał haseł dla konta zarządzanego przez grupy jest dłuższy niż wiek kopii zapasowej, możesz zdecydować się na tolerowanie okna, w którym nadal działa poprzedni materiał klucza. Jeśli nie możesz czekać tak długo, a pasująca starsza kopia zapasowa nie ma zbyt wielu gMSA, musisz przełączyć plan na scenariusz 2.
Uruchom operację autorytatywnego przywracania w kontenerze zarządzanych kont usług domeny. Upewnij się, że operacja przywracania zawiera wszystkie obiekty podrzędne kontenerów, które mogą być skojarzone z tym kontrolerem domeny. Ten krok powoduje wycofanie stanu ostatniej aktualizacji hasła. Następnym razem, gdy usługa pobierze hasło, hasło zostanie zaktualizowane do nowego na podstawie nowego obiektu klucza głównego KDS.
Zatrzymaj i wyłącz usługę dystrybucji kluczy firmy Microsoft na przywróconym kontrolerze domeny.
Na innym kontrolerze domeny wykonaj kroki opisane w temacie Create the Key Distribution Services KDS Root Key (Tworzenie klucza głównego usług dystrybucji kluczy), aby utworzyć nowy obiekt klucza głównego KDS.
Uwaga 16.
W środowisku produkcyjnym należy poczekać 10 godzin, aby upewnić się, że nowy klucz główny KDS jest dostępny. Sprawdź atrybut,
EffectiveTime
aby dowiedzieć się, kiedy będzie można używać nowego klucza głównego KDS.Uruchom ponownie usługę dystrybucji kluczy firmy Microsoft na wszystkich kontrolerach domeny.
Utwórz nowy gMSA. Upewnij się, że nowy gMSA używa nowego obiektu klucza głównego KDS do utworzenia wartości atrybutu
msds-ManagedPasswordID
.Uwaga 16.
Ten krok jest opcjonalny, ale umożliwia sprawdzenie, czy nowy klucz główny KDS jest obecnie używany i używany w usłudze dystrybucji kluczy firmy Microsoft.
msds-ManagedPasswordID
Sprawdź wartość pierwszego utworzonego konta zarządzanego przez użytkownika. Wartość tego atrybutu to dane binarne zawierające identyfikator GUID pasującego obiektu klucza głównego KDS.Załóżmy na przykład, że obiekt klucz główny KDS ma następujące
CN
polecenie .GMSA utworzona przy użyciu tego obiektu ma wartość podobną
msds-ManagedPasswordID
do poniższej.W tej wartości dane identyfikatora GUID zaczynają się od przesunięcia 24. Części identyfikatora GUID znajdują się w innej sekwencji. Na tej ilustracji czerwone, zielone i niebieskie sekcje identyfikują ponownie uporządkowane części. Pomarańczowa sekcja identyfikuje część sekwencji, która jest taka sama jak oryginalny identyfikator GUID.
Jeśli pierwsza utworzona usługa gMSA używa nowego klucza głównego KDS, wszystkie kolejne konta zasad grupy również używają nowego klucza.
Wyłącz i zatrzymaj usługę dystrybucji kluczy firmy Microsoft na wszystkich kontrolerach domeny.
Ponownie połącz się i przełącz przywrócony kontroler domeny z powrotem do trybu online. Upewnij się, że replikacja działa.
Teraz przywracanie autorytatywne i wszystkie pozostałe zmiany (w tym przywrócone konta gMSA) są replikowane.
Ponownie włącz i uruchom usługę dystrybucji kluczy firmy Microsoft na wszystkich kontrolerach domeny. Wpisy tajne przywróconych gMSA zostaną wycofane, a nowe hasła zostaną utworzone na podstawie nowego obiektu klucza głównego KDS po żądaniu.
Uwaga 16.
Jeśli konta zasad grupy są przywracane, ale nie są używane i mają
PrincipalsAllowedToRetrieveManagedPassword
wypełniony parametr, możesz uruchomićTest-ADServiceAccount
polecenie cmdlet na przywróconej gMSA przy użyciu podmiotu zabezpieczeń, który może pobrać hasło. Jeśli wymagana jest zmiana hasła, to polecenie cmdlet będzie następnie rzutować konta zasad grupy na nowy klucz główny KDS.Sprawdź, czy wszystkie konta zarządzane przez grupy zostały wycofane.
Uwaga 16.
GMSA bez wypełnionego parametru
PrincipalsAllowedToRetrieveManagedPassword
nigdy nie będzie rzutowany.Usuń stary obiekt klucza głównego KDS i zweryfikuj replikacje.
Uruchom ponownie usługę dystrybucji kluczy firmy Microsoft na wszystkich kontrolerach domeny.
Scenariusz 2: Nie znasz szczegółów ujawnienia obiektu klucza głównego KDS i nie możesz czekać na wprowadzenie haseł
Jeśli nie wiesz, jakie informacje zostały ujawnione lub kiedy zostały ujawnione, takie narażenie może być częścią całkowitej ekspozycji lasu usługi Active Directory. Może to spowodować sytuację, w której osoba atakująca może uruchomić ataki w trybie offline na wszystkie hasła. W takim przypadku rozważ uruchomienie odzyskiwania lasu lub zresetowanie wszystkich haseł konta. Odzyskiwanie kont zasad grupy do czystego stanu jest częścią tego działania.
Podczas poniższego procesu należy utworzyć nowy obiekt klucza głównego KDS. Następnie użyjesz tego obiektu, aby zastąpić wszystkie konta gMSA w domenach lasu, które używają uwidocznionego obiektu klucza głównego KDS.
Uwaga 16.
Poniższe kroki przypominają procedurę opisaną w temacie Wprowadzenie do kont usług zarządzanych przez grupę. Istnieje jednak kilka ważnych zmian.
Wykonaj te kroki:
Wyłącz wszystkie istniejące konta zarządzane przez grupę i oznacz je jako konta do usunięcia. W tym celu dla każdego konta ustaw
userAccountControl
atrybut na 4098 (ta wartość łączy flagi WORKSTATION_TRUST_ACCOUNT i ACCOUNTDISABLE (wyłączone).Możesz użyć skryptu programu PowerShell w następujący sposób, aby ustawić konta:
$Domain = (Get-ADDomain).DistinguishedName $DomainGMSAs = (Get-ADObject -Searchbase "$Domain" -LdapFilter 'objectclass=msDS-GroupManagedServiceAccount').DistinguishedName ForEach ($GMSA In $DomainGMSAs) { Set-ADObject "$GMSA" -Add @{ adminDescription='cleanup-gsma' } -Replace @{ userAccountControl=4098 } }
Użyj jednego kontrolera domeny i wykonaj następujące kroki:
Wykonaj kroki opisane w artykule Create the Key Distribution Services KDS Root Key (Tworzenie klucza głównego usług dystrybucji kluczy ), aby utworzyć nowy obiekt klucza głównego KDS.
Uruchom ponownie usługę dystrybucji kluczy firmy Microsoft. Po ponownym uruchomieniu usługa pobiera nowy obiekt.
Tworzenie kopii zapasowych nazw hostów DNS i nazw głównych usług (SPN) skojarzonych z każdym gMSA oznaczonym do usunięcia.
Edytuj istniejące konta zasad grupy, aby usunąć nazwy SPN i nazwy hostów DNS.
Utwórz nowe konta gMSA, aby zastąpić istniejące konta zasad grupy. Należy je również skonfigurować przy użyciu nazw hostów DNS i nazw SPN, które zostały właśnie usunięte.
Uwaga 16.
Należy również przejrzeć wszystkie wpisy uprawnień przy użyciu bezpośrednio usuniętych identyfikatorów SID usługi gMSA, ponieważ nie są już możliwe do rozwiązania. Podczas zastępowania wpisu kontroli dostępu (ACE) rozważ użycie grup do zarządzania wpisami uprawnień gMSA.
Sprawdź nowe konta zasad grupy, aby upewnić się, że używają nowego obiektu klucza głównego KDS. W tym celu wykonaj następujące kroki:
Zanotuj
CN
wartość (GUID) obiektu klucza głównego KDS.msds-ManagedPasswordID
Sprawdź wartość pierwszego utworzonego konta zarządzanego przez użytkownika. Wartość tego atrybutu to dane binarne zawierające identyfikator GUID pasującego obiektu klucza głównego KDS.Załóżmy na przykład, że obiekt klucz główny KDS ma następujące
CN
polecenie .GMSA utworzona przy użyciu tego obiektu ma wartość podobną
msds-ManagedPasswordID
do obrazu.W tej wartości dane identyfikatora GUID zaczynają się od przesunięcia 24. Części identyfikatora GUID znajdują się w innej sekwencji. Na tej ilustracji czerwone, zielone i niebieskie sekcje identyfikują ponownie uporządkowane części. Pomarańczowa sekcja identyfikuje część sekwencji, która jest taka sama jak oryginalny identyfikator GUID.
Jeśli pierwsza utworzona usługa gMSA używa nowego klucza głównego KDS, wszystkie kolejne konta zasad grupy również używają nowego klucza.
Zaktualizuj odpowiednie usługi, aby używać nowych zasad grupy.
Usuń stare konta zasad grupy, które używały starego obiektu klucza głównego KDS, używając następującego polecenia cmdlet:
$Domain = (Get-ADDomain).DistinguishedName $DomainGMSAs = (Get-ADObject -Searchbase "$Domain" -LdapFilter '(&(objectClass=msDS-GroupManagedServiceAccount)(adminDescription=cleanup-gsma))').DistinguishedName ForEach ($GMSA In $DomainGMSAs) { Remove-ADObject "$GMSA" -Confirm:$False }
Usuń stary obiekt klucza głównego KDS i zweryfikuj replikacje.
Uruchom ponownie usługę dystrybucji kluczy firmy Microsoft na wszystkich kontrolerach domeny.
Scenariusz 3. Rezygnacja administratora domeny, w tym czasie nie zostały skradzione żadne informacje i możesz poczekać na wycofanie haseł
Jeśli członek o wysokim poziomie uprawnień z administratorami domeny lub równoważnymi uprawnieniami rezygnuje, nie ma dowodu ujawnienia klucza głównego KDS w tym czasie i możesz sobie pozwolić na przedział czasu wprowadzania haseł. Nie musisz ponownie utworzyć kont gMSA.
W ramach środków zapobiegawczych klucz główny KDS musi zostać przerzucony, aby zapobiec wszelkim atakom po wykorzystaniu. Na przykład były administrator domeny okazał się nieuczciwy i przechowywał pewne kopie zapasowe.
Zostanie utworzony nowy obiekt klucza głównego KDS, a konta gMSA będą w naturalny sposób rzutowane.
Uwaga 16.
W przypadku naruszenia zabezpieczeń związanego z administratorem domeny zapoznaj się ze scenariuszem 1 lub scenariuszem 2, zgodnie z tym, co zostało ujawnione, i postępuj zgodnie z działaniami korygowania lokalnego w temacie "Korzystanie z zasobów zabezpieczeń firmy Microsoft i platformy Azure w celu ułatwienia odzyskiwania po naruszeniu tożsamości systemowej".
W domenie zawierającej zarządzane konta zarządzane przez użytkownika, które chcesz wdrożyć, wykonaj następujące kroki:
Na kontrolerze domeny wykonaj kroki opisane w temacie Tworzenie klucza głównego KDS usług dystrybucji kluczy, aby utworzyć nowy obiekt klucza głównego KDS.
Uwaga 16.
W środowisku produkcyjnym należy poczekać 10 godzin, aby upewnić się, że nowy klucz główny KDS jest dostępny. Sprawdź atrybut,
EffectiveTime
aby dowiedzieć się, kiedy będzie można używać nowego klucza głównego KDS.Uruchom ponownie usługę dystrybucji kluczy firmy Microsoft na wszystkich kontrolerach domeny.
Utwórz nowy gMSA. Upewnij się, że nowy gMSA używa nowego obiektu klucza głównego KDS do utworzenia wartości atrybutu
msds-ManagedPasswordID
.Uwaga 16.
Ten krok jest opcjonalny, ale umożliwia sprawdzenie, czy nowy klucz główny KDS jest obecnie używany i używany w usłudze dystrybucji kluczy firmy Microsoft.
msds-ManagedPasswordID
Sprawdź wartość pierwszego utworzonego konta zarządzanego przez użytkownika. Wartość tego atrybutu to dane binarne zawierające identyfikator GUID pasującego obiektu klucza głównego KDS.Załóżmy na przykład, że obiekt klucz główny KDS ma następujące
CN
polecenie .GMSA utworzona przy użyciu tego obiektu ma wartość podobną
msds-ManagedPasswordID
do poniższej ilustracji.W tej wartości dane identyfikatora GUID zaczynają się od przesunięcia 24. Części identyfikatora GUID znajdują się w innej sekwencji. Na tej ilustracji czerwone, zielone i niebieskie sekcje identyfikują ponownie uporządkowane części. Pomarańczowa sekcja identyfikuje część sekwencji, która jest taka sama jak oryginalny identyfikator GUID.
Jeśli pierwsza utworzona usługa gMSA używa nowego klucza głównego KDS, wszystkie kolejne konta zasad grupy również używają nowego klucza.
W zależności od następnego rzutu hasła wpisy tajne gMSA będą naturalnie rzutowane, a nowe hasła zostaną utworzone na podstawie nowego obiektu klucza głównego KDS po żądaniu.
Uwaga 16.
Jeśli używane konta zasad grupy zostały wycofane, ale nieużywane konta zasad grupy z tym samym interwałem rzutowania nie zostały wypełnione i mają
PrincipalsAllowedToRetrieveManagedPassword
wypełniony parametr, możesz uruchomićTest-ADServiceAccount
polecenie cmdlet. Używa podmiotu zabezpieczeń, który może pobrać hasło gMSA, a następnie przenosi grupę zarządzanego konta do nowego klucza głównego usługi KDS.Sprawdź, czy wszystkie konta zarządzane przez grupy zostały wycofane.
Uwaga 16.
GMSA bez parametru nigdy nie będzie rzutowy
PrincipalsAllowedToRetrieveManagedPassword
.Po wprowadzeniu wszystkich gMSA do nowego obiektu klucza głównego KDS usuń stary obiekt klucza głównego KDS i zweryfikuj replikacje.
Uruchom ponownie usługę dystrybucji kluczy firmy Microsoft na wszystkich kontrolerach domeny.
Informacje
Omówienie kont usług zarządzanych przez grupę
Wyłączenie odpowiedzialności za kontakty z osobami trzecimi
Firma Microsoft udostępnia informacje kontaktowe innych firm, aby uzyskać dodatkowe informacje na temat tego tematu. Informacje te mogą zostać zmienione bez powiadomienia. Firma Microsoft nie gwarantuje dokładności informacji kontaktowych innych firm.