O problemie związanym z przechowywaniem w pamięci haseł oraz ich hash’y przez system operacyjny Windows pisaliśmy na Kapitanie Hack’u w kampanii CYBER KILLCHAIN. Okazuję się, że cyberprzestępcy używając takich narzędzi jak np. Mimikatz mogą w prosty sposób pobrać hasła i hash-e z pamięci komputera i wykorzystywać do przeprowadzenia dalszych ataków.
Może nie wszyscy zdają sobie z tego sprawę, ale w systemie Windows znajduje się ustawienie, które jest domyślnie wyłączone i może nam pomóc w zabezpieczeniu się. Włączenie tego ustawienia pozwali nam się chronić przed tego typu zagrożeniem. W tytule specjalnie użyliśmy słowa „zabezpieczyć” w cudzysłowie, ponieważ jak się okazuje, i opiszemy to poniżej, zabezpieczenie nie gwarantuje nam 100% skuteczności. Pokażemy, dlaczego w poniższym artykule.


Co to jest proces LSASS.exe?

LSASS (ang. Local Security Authority Subsystem Service) jest jednym z najbardziej krytycznych procesów w systemie operacyjnym Microsoft Windows. Kto jeszcze z nim nie miał do czynienia to pewnie nie koncentrował się na Windows. Proces Lsass.exe odpowiedzialny jest za egzekwowanie polityki bezpieczeństwa w systemie – sprawdza użytkowników logujących się do komputera lub serwera Windows (lokalnie oraz przy pomocy zdalnego pulpitu), obsługuje zmiany haseł i tworzy tokeny dostępu. W przypadku kontrolerów domeny w Active Directory jest odpowiedzialny za całość procesów uwierzytelniania użytkowników i odpytywania po LDAP usługi katalogowej. Czyli pełni rolę takiego lokalnego strażnika zabezpieczeń systemowych. Jego aktywność jest zapisywana w dzienniku zabezpieczeń systemu Windows (Security).
Ponieważ lsass.exe jest kluczowym plikiem systemowym, jego nazwa jest często fałszowana przez złośliwe oprogramowanie. Plik lsass.exe używany przez system Windows znajduje się w katalogu systemowym „Windows” w podfolderze „System32” (najczęściej domyślnie w „C:\Windows\System32”).
Jeśli więc zaobserwujesz w Task Managerze (menadżer zadań), że jest on uruchomiony z innej lokalizacji to najprawdopodobniej złapałeś wirusa, oprogramowanie szpiegujące, trojana lub robaka. Zdarza się też, że cyberprzestępcy ze względu na sposób, w jaki niektóre systemy wyświetlają czcionki, mogą nazwać ten plik czymś w rodzaju Isass.exe (duże „I” zamiast małej „l”), aby skłonić użytkowników do zainstalowania lub wykonania złośliwego zamiast zaufanego w systemie pliku.

Właściwości procesu LSASS.exe w Menadżerze zadań Windows

Proces LSASS.exe stał się także przedmiotem ataków hackerskich wykorzystujących luki w jego architekturze bezpieczeństwa, w głównej mierze związane z niezabezpieczoną alokacją w pamięci haseł użytkowników. Narzędzia takie jak Mimikatz wyodrębnia z procesu lsass poświadczenia bez względu na to, czy uruchamiamy je bezpośrednio na serwerze lub stacji roboczej. Może też wykonać zrzut pamięci procesu lsass do pliku i wyodrębnić z niego poświadczenia w późniejszym etapie.


Ochrona procesu LSASS.exe (LSA Protection)

Ochrona procesu LSASS.exe jest ważnym elementem hardeningu systemu Windows. Od wersji Windows Server 2012 R2 i Windows 8.1 oraz nowszych w systemie znajduję się specjalistyczne ustawienie „RunAsPPL” pozwalające zmitygować ryzyko przejęcia haseł z lsass.exe przez oprogramowanie używane przez cyberprzestępców. Kradzież poświadczeń (haseł) jest z punktu hackera jest banalna jeśli uzyskają oni dostęp do systemu na uprawnieniach administratorskich (kilka razy pisaliśmy o użyciu Mimikatz). Dlatego tak ważne jest, abyśmy podczas naszej codziennej pracy na komputerze nie pracowali na koncie z uprawnieniami administracyjnymi!

W systemie Windows 10 i Server 2016 Microsoft zrobił postęp i zaimplementował narzędzie Credential Guard, które pomaga złagodzić problem jednak wcześniejsze wersje systemu Windows są nadal podatne na tego typu ataki.

Zgodnie z następującym artykułem Microsoft, jesteśmy w stanie uruchomić LSASS w specjalnym trybie chronionym. Jeśli zaimplementujemy w systemie ustawienie RunAsPPL zasadniczo uniemożliwimy Mimikatz’owi i podobnemu złośliwemu oprogramowaniu poprawne działanie. Oprócz tego uniemożliwimy również wykonanie zrzutu z pamięci procesu lsass do pliku za pomocą menedżera zadań.


Co musimy zrobić, aby włączyć zabezpieczenie Lsass.exe?

Po pierwsze musimy uruchomić edytor rejestru (narzędzie „regedit”) na prawach administratora lokalnego i dodać następujący klucz DWORD o nazwie RunAsPPL i wartości 1 w ścieżce:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

Po tej zmianie musimy zrestartować komputer.

Ustawienie w rejestrze pozwalające na ochronę procesu lsass.exe

Po tej operacji powinniśmy być zabezpieczeni przed wykonaniem zrzutu pamięci z procesu „lsass.exe” do pliku oraz domyślnym działaniem Mimikatz’a.

Nieudana próba wykonania pliku zrzutu pamięci dla procesu lsass.exe

Ponieważ zwykłe narzędzie Mimikatz jest rozpoznawane i blokowane przez usługę Windows Defender w celu zademonstrowania działania narzędzia Mimikatz wykonaliśmy kompilację własnego (kapitan.exe) opisaną tutaj. Poniżej przedstawiliśmy próbę pobrania haseł z pamięci narzędzia Mimikatz (kapitan.exe) przy użyciu komendy „sekurlsa::logonpasswords

Zakończona fiaskiem próba pobrania haseł użytkowników z Windows wykonana za pomocą naszej wersji narzędzia Mimikatz

Czy należy do końca ufać zabezpieczeniu RunAsPPL?

Jak to w świecie Microsoft – wszystko byłoby pięknie, gdyby nie pojawiło się kolejne obejście zabezpieczenia. Tak jak w przypadku opisywanego obejścia zabezpieczenia Credential Guard w Windows 10 i Windows 2016, tak ustawieniem RunAsPPL nie osiągniemy w pełni skutecznych zabezpieczeń. Okazuje się, że używając specjalnego sterownika w postaci pliku „mimidrv.sys” możemy usunąć flagi zabezpieczeń w Windows (w tym blokadę UEFI) i obejść zabezpieczenie Microsoft bez konieczności wykonywanie restartu komputera.

Obejście blokady RunAsPPL wykonane w programie Mimikatz

Obejście działa dla najnowszych systemów Windows 10 (wersja 1903 x64 oraz x86).
Poniżej przedstawiamy krótkie demo:


Jak sobie radzić z problemem?

Jak widać na powyższym filmie w celu wykonania obejścia blokady RunAsPPL musimy uruchomić program Mimikatz na poświadczeniach posiadających uprawnienie lokalnego administratora. Jest to dla nas bardzo ważne ostrzeżenie, aby używać takich uprawnień jedynie w wyjątkowych sytuacjach oraz pracować na co dzień na poświadczeniach zwykłego użytkownika.

Na pomoc w wykrywaniu tego typu sytuacji może przyjść nam włączenie obsługi HVCI umożliwiając blokadę wgrywania sterowników nie posiadających certyfikatu oraz sprawdzaniu integralności systemu. Jednak włączenie tej funkcji w organizacjach może blokować działanie niektórych legalnych programów, więc implementacja jej może być ryzykowna. W przypadku HVCI i Mimikatz, autor programu chwali się, że potrafi je również obejść.

Monitorowanie malware pod kątem zagrożeń w systemie (wstrzykiwania do pamięci sterowników, monitorowanie procesów itp.) wydaje się być na obecny czas najbardziej skuteczną metodą pozwalająca dowiedzieć się o tego typu przypadkach.