We wcześniejszych artykułach kampanii Active Directory Persistence pokazywaliśmy, jak stworzyć i ukryć użytkownika w domenie AD oraz jakie przydzielić mu w domenie uprawnienia, aby miał do niej pełny dostęp. W dzisiejszym artykule skupimy się na ciekawej możliwości, która daję cyberprzestępcom możliwość umieszczenia własnego komputera lub maszyny wirtualnej w domenie AD i atakowania z niej infrastruktury.

Często w firmach panuje przekonanie, że tylko administratorzy domeny (Domain Admins) mogą dodawać komputery do domeny. Nic bardziej mylnego. Jeśli nie wykonaliśmy wcześniejszego hardening’u i nie zmieniliśmy ustawień domyślnych, to każdy użytkownik domeny może dodać do niej aż do 10 komputerów! Niedowierzasz? Tak, to prawda, zaś cyberprzestępcy mogą wykorzystać tę możliwość do utworzenia własnej niekontrolowanej przez organizację stacji roboczej i przyłączenia jej do domeny celem wykonania dalszych faz ataku Cyber Kill Chain.


Użytkownicy mający uprawnienia do dodawania komputerów do domeny?

Mało kto wie, że podczas instalowania nowej usługi Active Directory konfigurowany jest licznik, który umożliwia każdemu użytkownikowi dodawanie stacji roboczych do domeny w ilości maksymalnie 10 sztuk. Jest to zdefiniowane przez atrybut ms-DS-MachineAccountQuota, który jest domyślnie ustawiony na 10 oraz specjalne uprawnienie w ustawieniu polityki GPO „Default Domain Controllers Policy” o nazwie „Add workstations to domain” z wartością Authenticated Users.

Wartość atrybutu ms-DS-MachineAccountQuota w AD można znaleźć w konsoli Active Directory Users and Computers (ADUC) z włączonymi zaawansowanymi funkcjami wyświetlania. W celu sprawdzenia tej wartości w domenie należy:

  • Wpisać w wierszu poleceń dsa.msc (Użytkownicy i komputery usługi Active Directory), następnie przejdź w opcje View -> włączyć „Advanced Features”.
  • Kliknąć prawym przyciskiem myszy na nazwie domeny -> „Properties” i wybrać zakładkę „Attribute Editor”.
  • Kliknąć na attribut ms-DS-MachineAccountQuota i w niej powinniśmy zobaczyć wartość 10.

Dla osób lubiących wiersz poleceń, powyższą wartość mogą sprawdzić używając komendy PowerShell:

>Get-ADObject ((Get-ADDomain).distinguishedname) -Properties ms-DS-MachineAccountQuota

O tym jacy użytkownicy mogą dodawać komputery do domeny odpowiada domyślne ustawienie GPO – Default Domain Controllers Policy – „Add workstations to domain”.

W naszym przypadku są to wszyscy uwierzytelnieni użytkownicy.

Jeśli domena Active Directory posiada w ten sposób skonfigurowane domyślne ustawienia w AD lub cyberprzestępca zdobył uprawnienia administratora i zmienił te ustawienia, wówczas istnieje możliwość utworzenia przyczółku – backdoora umożliwiającego dodanie komputera do domeny.

Oczywiście warto wspomnieć o jeszcze jednym warunku. Użytkownik taki musi posiadać lokalne uprawnienia administracyjne na dodawanym komputerze lub maszynie wirtualnej.


Co daje możliwość dodania komputera do domeny?

Problem polega na tym, że te ustawienia pozwalają każdemu użytkownikowi/cyberprzestępcy dołączyć do niej własny, niezarządzany komputer lub nawet maszynę wirtualną, aby uzyskać dostęp do domeny w firmie.
Powodów na dodanie stacji roboczej jest kilka. Oto niektóre:

  • Backdoor w postaci stacji roboczej przyłączonej do domeny, na której atakujący ma pełne uprawnienia do kontroli systemu.
  • Żadne rozwiązanie antywirusowe ani EDR nie zostanie przeniesione (zainstalowane) na komputer – nawet jeśli po instalacji Windows 10 znajdować się będzie na nim wbudowany Windows Defender, to można go wyłączyć. Dzięki temu cyberprzestępca będzie mógł uruchamiać na niej przeróżne narzędzia hackerskie i czuć się swobodnie, że jego złośliwa aktywność nie będzie monitorowana (przynajmniej na komputerze).
  • Żadne ustawienia ani zasady GPO nie zostaną zastosowane na systemie – oczywiście to zależy od konfiguracji domeny, ale można zblokować komputer, aby nie spływały na niego zdefiniowane przez administratora polityki GPO.
  • Pozwala atakującemu mieć uprawnienia administracyjne w systemie – posiadając takie uprawnienia możemy z systemem operacyjnym zrobić wszystko.
  • Umożliwia umieszczenie na nim narzędzi, które przejmą poświadczenia lub bilet Kerberos konta serwisowego lub administratora domeny – jeśli wdrożone jest w firmie rozwiązanie do autodeployment’u agentów lub korporacyjnego programowania dla nowo pojawiających się komputerów w domenie, takie rozwiązania najczęściej instalują programy na kontach wysoko uprzywilejowanych. Jeśli atakujący ma pełna kontrolę nad systemem może w nim ustawić pułapki, które pozwolą mu przejąć takie logujące się konto (NTLM hash, hasło lub nawet bilet Kerberos).

Oczywiście, żeby można było dodać komputer do domeny musimy posiadać na naszym komputerze uprawnienia administracyjne. Jeśli nasz komputer jest już członkiem domeny i posiadamy na nim uprawnienia administratora, możemy doinstalować na nim rolę Hyper-V (tutaj opis jak to wykonać), a następnie utworzyć własną maszynę wirtualną z system Windows 10. Taką maszynę wirtualną będziemy również mogli dodać do domeny (będziemy musieli skonfigurować na niej odpowiednie ustawienia karty sieciowej i adresy IP).

Dlatego w środowiskach korporacyjnych użytkownicy nigdy nie powinni mieć lokalnych uprawnień administracyjnych na swoich komputerach. Jest to jedna z podstawowych kontroli bezpieczeństwa, która powinna być stosowana powszechnie.

Jeśli użytkownicy mają uprawnienia administracyjne na swoich komputerach, mogą wykonywać uprzywilejowane operacje w sieci, takie jak tworzenie surowych pakietów sieciowych, skanowanie sieci, uruchamianie exploitów na swoich komputerach w celu ataku na inne systemy w sieci i wiele innych.


Scenariusz dodania komputera do domeny

Najłatwiejszym sposobem sprawdzenia tego scenariusza jest podłączenie maszyny testowej Windows (fizycznej lub maszyny wirtualnej) do docelowej sieci firmowej, aby mogła komunikować się z kontrolerami domeny. Załóżmy, że nasza domena, do której będziemy chcieli dodać komputer nazywa się KAPITAN.HACK (nazwa FQDN) oraz KAPITAN (nazwa NetBios). Posiadamy poświadczenia do lokalnego konta na komputerze o nazwie „kapitan”, które jest lokalnym administratorem i konto domenowe o nazwie „kapitanhack.pl” w domenie KAPITAN, do której będziemy chcieli dodać nasz komputer.
W celu dodania do domeny komputera lub maszyny wirtualnej musimy wykonać następujące kroki:


Krok 1. Skonfigurować odpowiednie wpisy na karcie sieciowej

Przy dodawaniu komputera do domeny musimy mieć możliwość skomunikowania się z nią. Do tego wymagane jest skonfigurowanie odpowiednich wpisów w karcie sieciowej komputera. W tym celu konfigurujemy:

  • Adres IP komputera
  • Maska podsieci
  • Domyślna brama
  • Adres IP serwera DNS

W niektórych firmach te ustawienia zarządzane są automatycznie przez serwer DHCP i rozwiązania kontrolujące dostępu do sieci, lecz zakładamy, że chcemy te ustawienia wpisać na sztywno i będziemy mogli za ich pomocą komunikować się z innymi komputerami w sieci. Musimy tez znaleźć wolny adres IP dla naszego komputera, ale nie będziemy już pisać jak to wykonać.
W naszym przypadku wpisaliśmy poniższe ustawienia sieciowe:

Jeśli wszystko jest w porządku domena „kapitan.hack” powinna odpowiadać na zapytania dns dotyczące rekordów srv.

Jeśli po tej operacji domena Kapitan.hack odpowiada również na ping możemy przejść do kroku nr 2.


Krok 2. Dodanie komputera do domeny

Uruchom w wierszu poleceń „sysdm.cpl” żeby otworzyć okna „Właściwości systemu” -> kliknij „Change” i podaj nazwę domeny docelowej: KAPITAN.HACK lub KAPITAN.

Kliknij OK.

Teraz zostaniemy poproszeni o poświadczenia. Podajemy poświadczenia użytkownika domeny o niskich uprawnieniach (w naszym przypadku użytkownik Kapitan\kapitanhack.pl).

Jeśli wszystko się powiedzie, powinien zostać wyświetlony komunikat: „Witamy w domenie Kapitan.Hack”!

Nasz komputer powinien zostać dodany do AD w kontenerze CN = Computers.

Alternatywnie możemy również dołączyć komputer do AD za pomocą następującego polecenia PowerShell:

>add-computer –domainname kapitan.hack -Credential KAPITAN\kapitanhack.pl -restart -force lub wbudowanego w Windows polecenia netdom join

Po ponownym uruchomieniu naszej maszyny testowej, maszyna powinna zostać w pełni dołączona do domeny i możemy do niej logować się na konta domenowe oraz ustawić pułapki.


Krok 3. Sprawdzenie w domenie, przez kogo został dodany komputer do domeny

Teraz powinniśmy być w stanie sprawdzić, czy nasz komputer został rzeczywiście dodany do domeny, wyświetlając listę komputerów domeny.
Poniżej prezentujemy sposób jak moglibyśmy wyświetlić listę wszystkich komputerów, które zostały dodane przez osoby niebędące administratorami domeny (wymagany jest moduł ActiveDirectory do PowerShell):

>Import-Module ActiveDirectory
>Get-ADComputer -LDAPFilter “(ms-DS-CreatorSID=*)” -Properties ms-DS-CreatorSID

oraz listę wszystkich użytkowników, przez których zostały one dodane

>Import-Module ActiveDirectory

>Get-ADComputer -LDAPFilter “(ms-DS-CreatorSID=*)” -Properties ms-DS-CreatorSID | Select-Object -Expandproperty mS-DS-CreatorSID | Select-Object -ExpandProperty Value | Foreach-Object {Get-ADUser -Filter {SID -eq $_}}


Podsumowanie


Domyślne ustawienia w Active Directory związane z dodaniem komputera do domeny przez zwykłego użytkownika mogą umożliwić cyberprzestępcom utworzenie tylnej furtki (backdoora) w środowisku korporacyjnym. Taki „backdoor”, jeśli się powiedzie stwarza ogromne możliwości atakowania domeny oraz przejmowania poświadczeń innych użytkowników. Dlatego powinniśmy zabezpieczyć się przed taką możliwością (uniemożliwić to) oraz w środowiskach korporacyjnych nie przydzielać użytkownikom lokalnych uprawnień administracyjnych na swoich komputerach. Jest to jedna z podstawowych kontroli bezpieczeństwa, która powinna być stosowana powszechnie.
Powinniśmy też monitorować te ustawienia w infrastrukturze, gdyż złośliwy aktor posiadający uprawnienia administracyjne mógłby je zmienić i umożliwić sobie w przyszłości utworzenie takiego przyczółku w postaci własnej stacji roboczej.

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

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

Podziel się z innymi tym artykułem!