Czym jest Zerologon?

Zerologon to:

luka w zabezpieczeniach systemu kryptograficznego procesu Microsoft Netlogon umożliwiająca napastnikowi przeprowadzenie ataku na kontrolery domeny Active Directory i podszycie się pod dowolny komputer, w tym także kontroler główny domeny.

Zerologon

Zerologon to nazwa luki w zabezpieczeniach o identyfikatorze CVE-2020-1472. Jej nazwa wywodzi się od usterki procesu logowania umożliwiającej ustawienie samych zer w wektorze inicjacji, podczas gdy jego wartość zawsze powinna być liczbą losową.

W skali stwarzanego zagrożenia CVSS (Common Vulnerability Scoring System) luce tej przyznano maksymalną liczbę 10 punktów (CVSS wer. 3.1). Znane są aktywne exploity testowe, które ją wykorzystują. Jest też wysoce prawdopodobne, że wkrótce zostanie wykorzystana w prawdziwych atakach.

Agencja CISA (Cybersecurity and Infrastructure Security Agency) opublikowała nadzwyczajną dyrektywę, w której nawołuje federalne agencje cywilne do natychmiastowego wyłączenia wszystkich serwerów Windows lub wprowadzenia na nich poprawek oraz podobne środki ostrożności zaleca organizacjom pozarządowym.

Firma Microsoft w sierpniu 2020 r. opublikowała dwie pierwsze poprawki, które należy zainstalować na wszystkich kontrolerach domeny.

Luka bazuje na wadzie systemu kryptograficznego w protokole Microsoft Active Directory Netlogon Remote Protocol (MS-NRPC) umożliwiającego logowanie się na serwerach przy użyciu protokołu NTLM (NT LAN Manager). Najgorsze jest to, że protokół MS-NRPC jest używany także do przesyłania pewnych zmian na kontach, na przykład haseł do kont usługowych na komputerze. Z perspektywy czasu można stwierdzić, że dodanie tej funkcji było uzasadnione, jednak zaniechanie weryfikacji źródła żądania zmiany haseł doprowadziło do powstania poważnej luki w zabezpieczeniach.

Dalej jest tylko gorzej. Zastosowana w MS-NRPC metoda szyfrowania nie jest najlepsza. W 1883 r. holenderski kryptograf Aguste Kerckhoffs opublikował dwa artykuły pt.  La Cryptographie Militaire (Kryptografia wojskowa), w których przedstawił sześć kluczowych zasad projektowania systemów kryptograficznych. Najbardziej znana z nich, tzw. zasada Kerckhoffsa, nakazuje zachowanie klucza kryptograficznego w tajemnicy, ale przestrzega przed poleganiem na tajności algorytmu chroniącego dane. Innymi słowy, dziś powiedzielibyśmy, że należy używać dobrze znanych, przetestowanych i sprawdzonych algorytmów.

W procesie logowania do systemu Windows NT początkowo użyto algorytmu 2DES, o którym wiadomo, że ma wady. Dziś MS-NRPC wykorzystuje algorytm Advanced Encryption Standard (AES) uważany za wzorcową technikę szyfrowania. Aby uzyskać odpowiedni poziom bezpieczeństwa, oprócz sprawdzonego algorytmu należy wybrać także pewne dodatkowe ustawienia. MS-NRPC wykorzystuje ustawienie o nazwie AES-CFB8 (Advanced Encryption Standard — Cipher Feed Back 8 bit). AES-CFB8 to mało znana i niedostatecznie przetestowana technika. Wykorzystanie AES-CFB8 w MS-NRPC wiąże się z błędem dotyczącym wektora inicjacji (IV), który powinien być liczbą losową, podczas gdy w MS-NRPC ma stałą wartość 16 bajtów i składa się z zer. To nie jest losowa liczba. I łatwo ją przewidzieć. A przewidywalność to największy wróg kryptografii.

Skąd wiemy o tej luce

O luce poinformował we wrześniu 2020 r. Tom Tervoort, holenderski badacz pracujący w Secura. Wprawdzie załatano ją już w sierpniu, ale dopiero po publikacji raportu przez Holendra we wrześniu zaczęły pojawiać się exploity testowe i odnotowano inną aktywność w tym zakresie. Tervoort opisuje swoje odkrycie i opowiada, w jaki sposób do niego doszło. Podczas prowadzenia badań stwierdził, że jest bardzo mało informacji o protokole MS-NRPC. Zaintrygowany postanowił poszperać głębiej. 

Choć początkowo szukał luki umożliwiającej przeprowadzenie ataku typu człowiek pośrodku („person-in-the-middle”), odkrył inna lukę opisaną w CVE-2020-1424. Kontynuując swoje badanie, odkrył lukę obecnie znaną pod nazwą Zerologon. W jego odkryciu najważniejszy jest fakt, że firma Microsoft zaimplementowała niespotykany rodzaj kryptografii różniący się od wszystkich innych protokołów RPC. W czasach systemu Windows NT konta przypisane do komputera nie były traktowane jako podmiot zabezpieczeń pierwszej klasy, przez co firma Microsoft nie mogła używać do uwierzytelniania komputerów lub kont protokołu Kerberos ani NTLM. W efekcie programiści opracowali alternatywne rozwiązanie. Stworzenie kodu i protokołów szyfrowania, których złamanie jest niemożliwe, to niesłychanie trudna sztuka. Jednak zanim luki zostaną wykryte może minąć dużo czasu. Tak właśnie stało się w tym przypadku.

Jak wygląda atak

Luka umożliwia hakerowi przejęcie kontroli nad kontrolerem domeny, w tym także nad kontrolerem głównym.  W tym celu należy zmienia on lub usuwa hasło do konta usługowego na kontrolerze. Potem może następnie spowodować odmowę usługi lub przejąć całą sieć.

Aby przeprowadzić atak z wykorzystaniem tej luki w zabezpieczeniach, napastnik musi ustanowić sesję TCP z kontrolerem domeny.  W przypadku fizycznej obecności w sieci haker może mieć dostęp do biurka użytkownika lub otwartego portu np. w sali konferencyjnej. Exploity te należą do grupy wewnętrznych, czyli takich, których skutki dla dzisiejszych firm są najbardziej kosztowne. Napastnik może przeprowadzić ataki z zewnątrz sieci, pod warunkiem, że uda mu się zdobyć dostęp do miejsca, z którego będzie mógł ustanowić sesję TCP z kontrolerem.

Posługując się metodą AES-CFB8 ze stałym wektorem inicjacji o długości 16 zerowych bajtów, Tervoort odkrył, że jeden na 256 kluczy da szyfr o wartości złożonej z samych zer. Z punktu widzenia napastnika możliwość wygenerowania szyfru złożonego z samych zer przy użyciu tak małej liczby kluczy jest bardzo korzystna. Wykonanie takiego zadania zajęłoby jego komputerowi zaledwie 2–3 sekundy. 

Dlaczego więc jest to takie ważne?

Jeśli komputer komunikujący się z kontrolerem domeny należy do użytkownika, który nie robi nic niezwykłego, to zagrożenie praktycznie nie istnieje. Wprawdzie powstanie szyfr o niskiej jakości, ale zadziałają sieciowe procesy uwierzytelniania. Problem ujawnia się tylko wtedy, gdy haker próbuje wykorzystać system.

W ataku, którego skuteczność wykazał Tervoort, napastnik najpierw musi zdobyć dane logowania lub hasło klienta sieci. Ze względu na wadę implementacji wektora inicjacji w protokole MS-NRPC potrzeba do tego tylko 256 prób. Normalnie konto użytkownika zostałoby zablokowane po trzech nieudanych próbach wprowadzenia hasła, ale nie dotyczy to konta komputera lub maszyny. W przypadku logowania komputera liczba prób wpisania hasła jest nieograniczona, co pozwala hakerowi przeprowadzenie wielu prób w krótkim czasie. Jego celem jest znalezienie jednego z kluczy generujących szyfr zawierający same zera.

Co może zrobić haker, kiedy już podszyje się pod komputer w sieci? Po wykonaniu pierwszego kroku haker nie zna jeszcze klucza szyfrowania sesji. Na razie udało mu się tylko podszyć pod czyjąś tożsamość dzięki trafieniu w jeden z 256 kluczy, który daje szyfr zawierający same zera. Kolejnym krokiem jest wyłączenie mechanizmu „podpisywania i pieczętowania”.

Podpisywanie i pieczętowanie RPC to mechanizm służący do szyfrowania danych przesyłanych za pośrednictwem protokołu MS-NRPC. Korzystanie z niego wydaje się logiczne, ponieważ pozwala na szyfrowanie przesyłanych informacji, ale w MS-NRPC jest to funkcja opcjonalna, która została wyłączona poprzez pominięcie flagi w nagłówku wiadomości. Po wyłączeniu podpisywania i pieczętowania wiadomości są przesyłane w czystej postaci, co daje hakerowi szerokie pole do działania. Może on na przykład usunąć albo zmienić hasło. W lutym 2021 r. firma Microsoft ma wydać poprawkę włączającą podpisywanie i pieczętowanie.

Trzeci krok to zmiana hasła do konta, które zostało przejęte. Dla hakera najkorzystniejsze jest zdobycie serwera Active Directory, najlepiej serwera głównego. W celu zmiany hasła napastnik wykorzystuje wiadomość NetServerPasswordSet2 w protokole MS-NRPC. Aby zmienić hasło, wystarczy wysłać ramkę z nowym hasłem. Najprościej jest usunąć hasło lub ustawić je na pustą wartość, co umożliwia hakerowi zalogowanie się w normalnym procesie. 

Jeśli atak jest skierowany na losowy komputer w sieci, to w jego wyniku straci on możliwość logowania. W związku z tym pierwszą konsekwencją tego typu ataku jest odmowa usługi.

Globalny wpływ

Obecnie istnieje już kilka exploitów testowych i jeśli na serwerach Active Directory nie zostanie zainstalowana poprawka, firmy mogą ponieść poważne straty, ponieważ ten rodzaj ataku umożliwia hakerowi wprowadzenie do sieci oprogramowania typu ransomware. 

Istnieją narzędzia pozwalające sprawdzić, czy dane serwery są podatne na ten typ ataku. Tervoort i Secura udostępnili w portalu GitHub narzędzie pozwalające sprawdzić, czy kontrolery domeny mają zainstalowane poprawki, czy nadal są podatne na atak.

Poprawka likwidująca lukę CVE-2020-1472

W sierpniu 2020 r. firma Microsoft opublikowała poprawkę likwidującą lukę CVE-2020-1472 (Zerologon). Wszystkie serwery Active Directory (2008 R2 i nowsze) należy jak najszybciej zaktualizować. Jednak średni czas od pojawienia się poprawki do momentu jej zainstalowania wciąż jest zbyt długi. Badacze twierdzą, że w przeciętnej organizacji od chwili pojawienia się poprawki do jej instalacji średnio mija od 60 do 150 dni (około pięciu miesięcy). Jest to tzw. wskaźnik MTTP (Mean Time to Patch — średni czas instalacji poprawki). 

Co gorsza, ta poprawka tylko połowicznie rozwiązuje problem. Firma Microsoft planuje opublikowanie drugiej fazy, obejmującej fazę wymuszonego wdrożenia, 9 lutego 2021 r. Do tego czasu wszystkie urządzenia będą musiały korzystać z trybu bezpiecznego kanału. W przeciwnym razie spotkają się z odmową dostępu. Starsze urządzenia niespełniające wymogów będzie trzeba ręcznie dodać do zasady grupowej wprost udzielającej dostępu urządzeniom niespełniającym wymogów.

Wdrażanie poprawek wirtualnych

Jako że opublikowana poprawka stanowi tylko połowę rozwiązania, konieczne będzie podjęcie dodatkowych środków pośrednich w celu ochrony sieci, urządzeń i danych. Jednym z takich środków jest potwierdzenie istnienia luki w zabezpieczeniach. Jest już dostępnych kilka narzędzi, jedno autorstwa firmy Secura i Tervoorta, służących do wykrywania luki Zerologon na serwerach Active Directory.

Należy stosować tradycyjne środki bezpieczeństwa pozwalające monitorować stan kont i sieci, wykrywać złośliwy ruch oraz mieć na oku inne wskaźniki infekcji. Niezwykle ważną rolę odgrywają systemy wykrywania włamań i zapobiegania im oraz oprogramowanie antimalware dla sieci i urządzeń hostujących (wszystkich punktów końcowych) pozwalające monitorować oprogramowanie ransomware, wirusy i inne zagrożenia. Należy zbierać dzienniki, zapisywać je w centralnym magazynie i analizować za pomocą narzędzia SIEM (Security Information & Event Manager). Ewentualnymi wskaźnikami zagrożenia wykrytymi w toku analiz dzienników powinny zająć się wyznaczone zespoły w ramach odpowiednich procesów. Potem kontrolę powinien przejąć silny i posiadający odpowiednią wiedzę zespół ds. reagowania na incydenty, którego pierwszym krokiem powinno być określenie zakresu zagrożenia i opracowanie rozwiązania.

Istnieje też nowsza technika polegająca na wdrażaniu poprawek wirtualnych — jest to środek bezpieczeństwa przeciw zagrożeniom wykorzystującym znane i nieznane luki. Program Trend Micro Zero Day Initiative (ZDI) zapewnia klientom ochronę na 81 dni przed powstaniem poprawki. Jest to możliwe dzięki implementacji warstw zasad i reguł bezpieczeństwa, które eliminują i przechwytują takie luki, jak Zerologon. 

Tematy dotyczące luki Zerologon