Ekstrakcja haseł poprzez Group Policy Preferences (GPP) może być wykorzystana w ścieżce KILLCHAIN zaraz po fazie rozpoznania. Nie potrzeba do tego podwyższonych uprawnień, ani dodatkowego oprogramowania. Całość ataku opiera się na znanej podatności Microsoft, której o dziwo nie załatano. Wprowadzono tylko ostrzeżenia i alternatywne rozwiązania dla systemów Windows. Podatność polega na tym, że niektóre scenariusze GPO wymagają trzymania hasła w pliku konfiguracyjnym XML. Hasło to wykorzystywane jest do uwierzytelnienia konta, które ma wykonać daną akcję zdefiniowaną w GPO (np. scheduled task). Problem leży w tym, że zaszyfrowane hasła przechowywane są w pliku dostępnym dla wszystkich użytkowników w domenie, a co najlepsze, każdy może je odszyfrować kluczem opublikowanym przez Microsoft!

Preferencje Zasad Grupy zostały wprowadzone w systemie Windows Server 2008. Dały dużo możliwości konfiguracji środowiska i zapewniły sporo ułatwień dla administratorów infrastruktury MS. Jedną z najbardziej przydatnych funkcji GPP jest możliwość przechowywania i używania poświadczeń w kilku scenariuszach. Obejmują one:

  • Mapowanie napędów (Drives.xml)
  • Tworzenie lokalnych użytkowników
  • Konfiguracje drukarek (Printers.xml)
  • Tworzenie/aktualizowanie usług (Services.xml)
  • Zaplanowane zadania (ScheduledTasks.xml)
  • Zmienianie hasła administratora lokalnego

GPP jest bardzo pomocne dla administratorów, ponieważ zapewnia zautomatyzowany mechanizm, który wcześniej wymagał niestandardowego rozwiązania, takiego jak użycie skryptu. GPP zapewnia przydatną funkcję wykorzystywania zasad grupy do “wdrażania” zaplanowanych zadań za pomocą jawnych poświadczeń i zmiany lokalnych haseł administracyjnych na dużej liczbie komputerów za jednym razem – prawdopodobnie dwóch najbardziej popularnych scenariuszy użycia.
Musisz jednak wiedzieć: jeśli w Twojej infrastrukturze stosowany jest któryś z powyższych scenariuszy, prawdopodobnie jesteś podatny i podlegasz wysokiemu ryzku przejęcia haseł w postaci czystego tekstu!

Przy zakładaniu takiego GPO tworzony jest plik konfiguracyjny z rozszerzeniem XML, w którym obiekt GPP przechowuje hasło do konta zdefiniowanego w polityce. (dokładniej w atrybucie o nazwie “cpassword”) Zawartość przykładowego podatnego pliku XML przestawiono poniżej:

Atrybut “cpassword” przechowujący zaszyfrowane hasło dla obiektu GPP

Plik ten przechowywany jest w katalogu SYSVOL na kontrolerze domeny i niestety jest udostępniony wszystkim uwierzytelnionym użytkownikom. Hasło oczywiście jest szyfrowane za pomocą klucza AES, jednak Microsoft upublicznił klucz, co sprawia że każdy może odszyfrować hasła otrzymując je w postaci czystego tekstu. Co więcej, PowerSploit oferuje proste polecenie Get-GPPPassword, które znajdzie i odszyfruje te hasła.

Komenda “Get-GPPPassword” znajdująca i odszyfrowująca hasła z Group Policy Preferences

Jak się chronić?


Pierwszym krokiem do złagodzenia zagrożenia związanego z wyodrębnianiem haseł w postaci czystego tekstu za pomocą preferencji zasad grupy jest sprawdzenie, czy podatność istnieje w danym środowisku. Na rynku istnieją rozwiązania audytowe, które można wykorzystać do wyszukiwania wystąpień haseł, które mogą zostać skradzione przy użyciu tej metody.

Po zidentyfikowaniu potencjalnych luk wskazane jest znalezienie alternatywnych metod włączania wcześniej obsługiwanych zadań lub procesów za pomocą preferencji zasad grupy. Na przykład rozwiązanie lokalnego administratora haseł (LAPS) firmy Microsoft jest potencjalnym rozwiązaniem zapewniającym administracyjny dostęp do systemów zamiast skryptów logowania za pośrednictwem preferencji zasad grupy.