Najlepszy sposób na śledzenie wyliczenia nazwy użytkownika Brute-Force / Nieudana nazwa użytkownika próbuje AD

9

Mamy system Windows Server z zainstalowaną na nim aplikacją, która korzysta z poświadczeń domeny podczas logowania do aplikacji. Podczas ostatniego testu piórem testerzy mogli użyć aplikacji do wyliczenia prawidłowych nazw użytkowników domeny na podstawie odpowiedzi aplikacji (dało to inną odpowiedź dla niepoprawnej nazwy użytkownika niż niepoprawne hasło).

Aplikacja jest naprawiana, aby nie ujawniała tych informacji, ale wydaje mi się, że powinniśmy byli wykryć ten atak, ponieważ w ciągu krótkiego czasu było ponad 2000 000 prób podania nieprawidłowej nazwy użytkownika. Nie widzieliśmy tego, nawet gdy nasi administratorzy uważnie obserwowali Active Directory. Najwyraźniej awarie pojawiały się tylko w lokalnym dzienniku zdarzeń serwera, na którym aplikacja została zainstalowana.

Moje pytanie: 1) Czy istnieje sposób, aby Active Directory rejestrował nieudane żądania nazwy użytkownika w centralnej lokalizacji, abyśmy mogli zauważyć w nich skok?

2) Jeśli nie, jaki jest najlepszy sposób monitorowania i aktywnego wykrywania tego rodzaju ataków w przyszłości (Mam nadzieję, że nie będzie musiał kupować zbyt dużo nowego sprzętu).

Dzięki za pomoc.

Doug
źródło

Odpowiedzi:

11

Świetne pytanie.

Po pierwsze - większość „testerów penetracyjnych” uważam za dzieciaków skryptowych. Moje uprzedzenia mogą być niesprawiedliwe lub dokładne, ale zamieszczam niniejsze oświadczenie, aby w przypadku wykrycia jakiegokolwiek cynizmu w moim tonie wiedzieć, skąd on pochodzi. Nie twierdzę, że nie ma wykwalifikowanych pentesterów, ale taka jest moja ogólna ogólność.

(Niebieski zespół na całe życie!)

Moje pytanie: 1) Czy istnieje sposób, aby Active Directory rejestrował nieudane żądania nazwy użytkownika w centralnej lokalizacji, abyśmy mogli zauważyć w nich skok?

Nie podałeś wystarczających informacji, aby ktokolwiek mógł udzielić dokładnej i pewnej odpowiedzi na to pytanie. Powiedziałeś, że twoja aplikacja zawiera lukę, która pozwoliła atakującym wyliczyć konta użytkowników. Staram się zrozumieć, w jaki sposób czujesz, że potrzeby AD wykonać rejestrowanie dla swojej aplikacji.

Najwyraźniej awarie pojawiały się tylko w lokalnym dzienniku zdarzeń serwera, na którym aplikacja została zainstalowana.

Najwyraźniej awarie pojawiły się w dzienniku zdarzeń na serwerze? Lub niepowodzenia nie pojawiają się w dzienniku zdarzeń na serwerze? Jeśli tak, to co dokładnie powiedziały te wydarzenia? Kto je zalogował? Twoje zgłoszenie? Lub Windows? Dowiedz się, a być może uda mi się dodać dodatkowe wyjaśnienie do mojej odpowiedzi.

Zamierzam wyjść tutaj na prostotę w oparciu o twoje przypuszczenie, że te zdarzenia powinny być jakoś zarejestrowane przez Active Directory ... co jeśli twoi pentesterzy tak naprawdę nie wykorzystują wady aplikacji, ale zamiast tego używają bardzo dobrze znaną wadą samego protokołu Kerberos do wyliczania nazw użytkowników? Sam Kerberos zawiera coś, co uważam za wadę projektową, w której atakujący może podejmować tysiące prób „wstępnego uwierzytelnienia” (tj. Atak brutalnej siły), a KDC zareaguje inaczej w zależności od tego, czy konto użytkownika istnieje, czy nie. Nie jest to zachowanie specyficzne dla Active Directory, ale ma również zastosowanie do MIT Kerberos, Heimdal itp. KDC odpowieKDC_ERR_PREAUTH_REQUIREDjeśli podana została poprawna nazwa użytkownika bez danych przed autoryzacją, nawet bez próby autentycznego uwierzytelnienia. W ten sposób możesz wyliczyć nazwy użytkowników z KDC. Ponieważ jednak osoba atakująca (lub narzędzie, z którego korzysta osoba atakująca, taka jak KrbGuess - ponieważ pentesterzy są najlepsi, gdy korzystają z narzędzi innych osób), nie musi kontynuować pełnej próby uwierzytelnienia, nic nie jest rejestrowane, ponieważ nie podjęto próbę autentycznego uwierzytelnienia!

Teraz przejdź do następnego pytania:

2) Jeśli nie, jaki jest najlepszy sposób monitorowania i aktywnego wykrywania tego rodzaju ataków w przyszłości (Mam nadzieję, że nie będzie musiał kupować zbyt dużo nowego sprzętu).

Kilka rzeczy.

Po pierwsze, istnieją płatne produkty klasy korporacyjnej, które zostały zaprojektowane do wykrywania tego rodzaju ataków (między innymi). Wielu dostawców oferuje takie produkty, a rekomendacje produktów są nie na temat błędu serwera, ale wystarczy powiedzieć, że nie ma ich tam. Wiele z tych produktów wymaga, aby skonfigurować dublowanie portów między kontrolerami domeny a tymi „modułami zbierającymi dane”, tak aby widziały i analizowały dosłownie każdy pakiet wchodzący lub wychodzący z kontrolerów domeny.

(Przepraszam, to trochę pasuje do twojej klauzuli „bez kupowania zbyt wielu nowych rzeczy”).

Kolejną rzeczą, która może ci pomóc, jest wpis rejestru:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

LogLevel = 1

Udokumentowane tutaj .

Jeśli włączysz ten wpis rejestru, powinieneś zostać zalany zdarzeniami w dzienniku zdarzeń zabezpieczeń dotyczącym błędów Kerberos, które informują, że wymagane jest wstępne uwierzytelnianie Kerberos. Przykład takiego zdarzenia:

A Kerberos Error Message was received:
 on logon session DOMAIN\serviceaccount
 Client Time: 
 Server Time: 12:44:21.0000 10/9/2012 Z
 Error Code: 0x19 KDC_ERR_PREAUTH_REQUIRED
 Extended Error: 
 Client Realm: 
 Client Name: 
 Server Realm: DOMAIN
 Server Name: krbtgt/DOMAIN
 Target Name: krbtgt/DOMAIN@DOMAIN
 Error Text: 
 File: e
 Line: 9fe
 Error Data is in record data.

Ale to może ci pomóc, jeśli nie określa, skąd dokładnie pochodzi tsunami żądań Kerberos. To prowadzi nas z powrotem do produktów do wykrywania włamań dla przedsiębiorstw, o których wspomniałem wcześniej.

I nie zapomnij o przekazywaniu zdarzeń systemu Windows, które może sprawić, że Twoje serwery będą przekazywać zdarzenia do scentralizowanej lokalizacji, które będą analizowane za pomocą dowolnego narzędzia, które masz do dyspozycji.

Cała ta odpowiedź była do tej pory oparta na protokole Kerberos, czego nie mogę nawet przyjąć za pewnik, ponieważ podałeś tak mało szczegółów w swoim poście. Niemniej mam nadzieję, że to trochę pomoże.

Ryan Ries
źródło
Dzięki za twoją odpowiedź. Ponownie sprawdzę w poniedziałek, ale wydaje mi się, że dzienniki zdarzeń są standardowymi zdarzeniami systemu Windows w przypadku nieudanego logowania do lokalnego serwera (np. Byłyby to odpowiedniki nieudanego logowania przez RDP z niepoprawną nazwą użytkownika). To zdecydowanie nic konkretnego aplikacji. W przypadku wyliczenia uwierzytelnienia Kerberos uważam, że testery pióra musiałyby znajdować się w naszym lokalnym intranecie. Oni nie byli. Aplikacja jest publicznie dostępna w Internecie ze standardowym uwierzytelnianiem opartym na formularzach, które nazywa system operacyjny ukrytym.
Doug
0

To interesujące pytanie, na które chciałbym usłyszeć właściwą odpowiedź. Natknąłem się na pewne informacje, które Doug może uznać za pomocne, jednak uważam, że mogą być nieco nieodpowiednie. Ktoś inny może prawdopodobnie udzielić rozszerzonej odpowiedzi:

Zaloguj się do serwera, na którym chcesz przechowywać informacje o audycie, Uruchom -> RSOP.MSC -> Konfiguracja komputera -> Ustawienia systemu Windows -> Ustawienia zabezpieczeń -> Zasady lokalne -> Zasady inspekcji -> „Zdarzenia logowania do konta kontroli” & „ Audyt zdarzeń logowania ”

Wyjaśnienie dotyczące „zdarzeń logowania na konto” brzmi:

Kontroluj zdarzenia logowania do konta

To ustawienie zabezpieczeń określa, czy system operacyjny kontroluje za każdym razem, gdy komputer weryfikuje poświadczenia konta.

Zdarzenia logowania na koncie są generowane za każdym razem, gdy komputer weryfikuje poświadczenia konta, dla którego jest ono wiarygodne. Członkowie domeny i maszyny nie przyłączone do domeny są wiarygodne dla swoich kont lokalnych; kontrolery domeny są wiarygodne dla kont w domenie. Sprawdzanie poprawności poświadczeń może wspierać logowanie lokalne lub, w przypadku konta domeny Active Directory na kontrolerze domeny, może wspierać logowanie do innego komputera. Sprawdzanie poprawności poświadczeń jest bezstanowe, więc nie ma odpowiedniego zdarzenia wylogowania dla zdarzeń logowania na konto.

Jeśli to ustawienie zasad jest zdefiniowane, administrator może określić, czy należy kontrolować tylko sukcesy, tylko niepowodzenia, zarówno sukcesy, jak i niepowodzenia, czy też nie w ogóle kontrolować te zdarzenia (tj. Ani sukcesy, ani niepowodzenia).

Wyjaśnienie „zdarzeń logowania” brzmi:

Kontroluj zdarzenia logowania

To ustawienie zabezpieczeń określa, czy system operacyjny kontroluje każdą instancję użytkownika próbującego się zalogować lub wylogować z tego komputera.

Zdarzenia wylogowania są generowane za każdym razem, gdy sesja logowania zalogowanego konta zostanie zakończona. Jeśli to ustawienie zasad jest zdefiniowane, administrator może określić, czy należy kontrolować tylko sukcesy, tylko niepowodzenia, zarówno sukcesy, jak i niepowodzenia, czy też nie w ogóle kontrolować te zdarzenia (tj. Ani sukcesy, ani niepowodzenia).

Zasadniczo należy włączyć te zasady, zdefiniować ustawienia zasad i wybrać „błąd”, jeśli chcesz monitorować nieudane próby. Jeśli chcesz, możesz również monitorować sukcesy, ale może to być trudniejsze do przeanalizowania, jeśli martwisz się tylko o szukanie tego rodzaju ataku.

Jeśli martwisz się podobnymi konfiguracjami, na które mogą być narażone twoje systemy, zaleciłbym przyjrzenie się ustawieniom STIG ( link ), gdy jest używany w połączeniu ze skanerem SCAP, może on naprawdę pomóc w podkreśleniu niektórych zagrożeń, na jakie może być Twoja organizacja okładzina. Przeglądarka STIG ma tendencję do wywoływania kilku fałszywych trafień, ale jeśli zapoznasz się ze specyfiką każdego wydania, może się okazać, że nie jest on początkowy.

Sawta
źródło
1
Sugerowałbym bazowe MSFT lub nist, DISA przyjmuje założenia dotyczące środowiska, a nie zabezpiecza hosta jako całość. Tak, wymagany jest odpowiedni audyt. Przeczytałbym również najlepsze praktyki dotyczące zabezpieczania białej księgi Active Directory.
Jim B
Świetna uwaga, Jim B! Nie rozważyłem tego aspektu.
Sawta