W dzisiejszym artykule opisujemy nowe ciekawe narzędzie do rozpoznawania nazw użytkowników w domenie Microsoft Active Directory. Jego działanie jest niewykrywalne w logach systemowych na kontrolerach domeny i wykorzystuje mechanizm bruteforce oraz pewien „błąd” do hakowania AD!
Pokazujemy scenariusz użycia oraz porady, jak się chronić i zabezpieczyć.


Ciekawa metoda na odpytanie zasobów Active Directory po LDAP

Jak dobrze wiemy z naszej kampanii Active Directory CYBER KILLCHAIN, rozpoznanie (rekonesans) to pierwsza faza ataku AD, w której napastnik stara się pozyskać jak najwięcej informacji z atakowanego środowiska i następnie wykorzystać je w kolejnym kroku, np. łamaniu haseł dla odgadniętych, istniejących nazw kont użytkowników.

Rekonesans AD można przeprowadzać na różne sposoby (omawialiśmy je w kampanii wymienionej w linku powyżej). Nowa metoda, którą tu opisujemy, bardzo nas zainteresowała, gdyż po pierwsze jest trudna do wykrycia (nie są z niej rejestrowane żadne informacje w logach kontrolerów domeny) i bardzo szybka, a po drugie wykorzystuje pewien błąd (podatność protokołu LDAP).

Pisząc o błędzie, chodzi nam oczywiście o pewne możliwości w żądaniach LDAP Ping, udokumentowane przez Microsoft na stronach Open Specifications Pages i zawierające pseudokod opisujący sposób inicjowania polecenia Ping LDAP, przyjmowane parametry i zwracane dane.


Błąd w LDAP czy „ficzer”?

Powyższe informacje po raz pierwszy zastosował holenderski badacz bezpieczeństwa Lars Karlslund do zaimplementowania narzędzia, które wykorzystuje „błąd” umożliwiający odpytanie zasobów Active Directory bez potrzeby uwierzytelniania się. Narzędzie nazywa się LDAPNomNom.
Jak twierdzi Karlslund, ów błąd „wciąż istnieje z powodu historycznej kompatybilności wstecznej”, więc z pewnością wiele środowisk Active Directory w firmach nadal umożliwia taki sposób skanowania.


Jak działa narzędzie LDAPNomNom?

Najprościej mówiąc, narzędzie wykorzystuje żądania LDAP Ping (cLDAP) do odpytywania po protokole LDAP usługi katalogowej – domeny Microsoft Active Directory przez nadużywanie żądań LDAP Ping (cLDAP). Wykonuje to anonimowo, więc bez koniecznego uwierzytelniania.

Interesującym faktem jest, że może być ono bardzo ponocne w zespołach RedTeam oraz pentesterów do przeprowadzania fazy rozpoznania środowiska (rekonesansu).

Cechuje go bardzo duża szybkość działania (skanuje nawet do 10 tysięcy użytkowników na sekundę) oraz fakt, że – uwaga – użycie narzędzia nie pozostawia żadnych logów w Active Directory (na kontrolerach domeny)! Dzieje się tak nawet na Windows 2022 z włączonym najwyższym stopniem audytu.

Ponadto LDAPNomNom cechują następujące funkcje:

  • próbuje automatycznie wykryć kontroler domeny na podstawie zmiennych środowiskowych na komputerach przyłączonych do domeny lub korzysta z nazwy hosta komputera wpisanej w parametrze „Sufiks DNS FDQN” (parametr dostępny w ustawieniach karty sieciowej),
  • zaczytuje listę nazwy użytkowników do testowania z strumienia wejściowego – ekranu lub pliku,
  • wyświetla na ekranie lub zapisuje do pliku wyjściowego odgadnięte nazwy użytkowników,
  • może pracować w trybie zrównoleglonym (domyślnie 8 połączeń jednocześnie),
  • pokazuje pasek postępu przy skanowaniu, jeśli używasz zarówno plików wejściowych, jak i wyjściowych.

Powyższe opcje sprawiają, że narzędzie może stać się wkrótce ulubioną bronią pentesterów (osób z zespołów RedTeam) do atakowania AD, a także być wykorzystywane w środowisku hakerskim.


Instalacja narzędzia LDAPNomNom

Narzędzie można pobrać z GitHub lub wykonać automatyczną instalację, wpisując poniższe polecenie (wymagane zainstalowanie środowiska GO):

go install github.com/lkarlslund/ldapnomnom@latest

Po jego wykonaniu na naszej końcówce narzędzie automatycznie pobierze się i skompiluje (przy użyciu środowiska GO).
Po uruchomieniu na systemie Windows możemy wpisywać w oknie wiersza linii poleceń dowolne nazwy użytkowników, które chcemy wyszukać w AD. Jeśli jakiś użytkownik zostanie znaleziony, jego nazwa będzie zwrócona na ekranie.


Scenariusz skanowania nazw użytkowników w domenie za pomocą narzędzia LDAPNomNom

LDAPNomNom posiada kilka ciekawych parametrów podawanych jako dodatkowe opcje w linii jego polecenia:

ldapnomnom [–server ipaddress] [–port number] [–tlsmode notls|tls|starttls] [–input filename] [–output filename [–progressbar]] [–parallel number-of-connections]

Dodatkowo możemy uniknąć wykrycia aktywności narzędzia na poziomie sieci, stosując jeszcze większe utrudnienie – używając przełącznika TLS, który działa na porcie 636 (domyślnie narzędzie wykonuje odpytywanie LDAP na porcie 389).

W celu przetestowania narzędzia w naszym środowisku z domeną KAPITAN.HACK, wykorzystaliśmy następujące komponenty:

  • plik tekstowy z nazwami użytkowników do odpytania AD: „users.txt”,
  • komputer Windows 10 ze skompilowanym i umieszczonym na nim narzędziem LDAPNomNom,
  • serwer z Kali Linux jako alternatywę dla Windows do testów,
  • kontroler domeny DC.KAPITAN.HACK o adresie IP 172.16.215.100.

Skanowanie z Windows 10 przeprowadzimy za pomocą poniższej komendy:

ldapnomnom –input users.txt –output results.txt –server 172.16.215.100 –parallel 16

W wyniku jej uruchomienia otrzymamy plik „results.txt” z odgadniętymi loginami istniejących użytkowników w AD. Zawartość plików wejściowego i wyjściowego prezentujemy poniżej. Widać, że odgadnięte zostały dwie nazwy użytkowników w AD: „faktura” oraz „administrator”.

Podobne wyniki otrzymaliśmy w przypadku skanowania kontrolera domeny AD z serwera Linux KALI:

Serwer Kali jest poza domeną Active Directory, więc wykorzystujemy jedynie dostępność w sieci kontrolera domeny i otwarte na nim porty LDAP. Podczas skanowania nie uwierzytelniamy się żadnym użytkownikiem!

Jako ciekawostkę dodamy, że przykładową listę kont użytkowników do testów (10 milionów) można pobrać tutaj.

Jesteśmy ciekawi, jakie wyniki otrzymacie w Waszych środowiskach.


Wskazówki dla Działów IT oraz Bezpieczeństwa – jak wykryć LDAPNomNom oraz jak przeciwdziałać jego użyciu

Pamiętajmy, że w środowisku AD w przypadku wykorzystania LDAPNomNom nie są generowane żadne dzienniki zdarzeń systemu Windows (testowane na systemach Windows 2016/2019/2022). Może to wywoływać pewne obawy wśród działów IT i Bezpieczeństwa.

W celu wykrycia powyższej aktywności wymagane jest zaimplementowanie w środowisku informatycznym niestandardowego monitorowania na poziomie sieci (nieszyfrowana analiza LDAP lub natężenia ruchu dla LDAPS). Można to osiągnąć przez wdrożenie specjalistycznych narzędzi do bezpieczeństwa. Pamiętaj, że im wcześniej wykryjesz skanowanie, tym szybciej możesz zapobiec wykonaniu dalszego ataku!

Można również przygotować się na próby przeprowadzenia takiego skanowania środowiska AD, umieszczając w nim tzw. sondy lub przeprowadzając specjalną jego konfigurację, pozwalającą na wcześniejsze zorientowanie się, że dzieje się coś podejrzanego. Dla przykładu jedną z nich jest zmiana wbudowanego konta administratora o nazwie „administrator”. Ponieważ każdy skaner z pewnością będzie próbował odpytać o takie konto wbudowane w infrastrukturze, wykrycie takiego incydentu pozwoli nam podjąć dalsze działania.

Inną metodą jest zaimplementowanie mechanizmu zapobiegania (eliminowania) przed atakiem Kerberoasting poprzez przeglądnięcie i usuniecie nazwy SPN z jak największej liczby kont w AD. Należy przy tym pamiętać, aby używać długich i złożonych haseł dla istniejących kont z nazwami SPN.

Firmom zainteresowanym bezpieczeństwem AD polecamy zapoznanie się z naszą koncepcją zabezpieczenia i zabarykadowania Active Directory oraz zapraszamy do kontaktu.

Podziel się z innymi tym artykułem!