Menu dostępności

Metody na zrzut pamięci z procesu lsass.exe oraz wyciąganie z niego haseł użytkowników

W dzisiejszym artykule opiszemy różne metody pozwalające wykonać zrzut z pamięci procesu lsass.exe, który na końcu posłuży nam do dekodowania listy haseł użytkowników zalogowanych do systemu Windows. Pokażemy także kawałek niewykrywalnego przez zabezpieczenia Microsoft kodu w C++ umożliwiającego wykonanie takiego zrzutu.

O procesie lsass.exe, jego zabezpieczeniu i roli, jaka pełni w systemie Windows pisaliśmy sporo w artykule tutaj. Dzisiaj natomiast opiszemy co może nas czekać, jeśli z jakiś powodów zabezpieczenia zawiodą lub będą wyłączone i będziemy mogli wykonać taki zrzut z pamięci, potocznie zwany dump’em.


Metody wykonania memory dump’a w Windows

Pamięć systemu Windows kryje w sobie wiele ciekawych artefaktów bezpieczeństwa w tym ten najciekawszy – hasła użytkowników. Udowodnił to sam autor narzędzia Mimikatz Benjamin Delpy, który w 2011 roku pokazał sposób ich przechowywania przez Microsoft w pamięci komputera w postaci czystego tekstu, działający już od Windows XP. Jednak od tego momentu wiele się zmieniło zarówno od strony samego narzędzia jak i zabezpieczeń systemowych. Dzisiaj mimikatz’a potrafi wykryć większość z rozwiązań antywirusowych w tym sam Defender wbudowany w Windows, pod warunkiem, że jego kod nie zostanie zaciemniony i odpowiednio zmodyfikowany. W nowszych jego wersjach pojawiły się sposoby obejścia blokad zastosowanych w Windows takich jak Credential Guard czy RunAsPPL w postaci załadowania do pamięci specjalnego sterownika. Wykrywalność malware zależy też od rodzaju użytego oprogramowania do bezpieczeństwa. Zatem stosowanie alternatywnych metod na poznania haseł, różnych od narzędzia Mimikatz z pewnością będzie znacznie ciekawsze, dlatego postanowiliśmy je opisać. Pierwszym warunkiem jaki musimy spełnić w celu wykonania dump’a procesu jest zdobycie wymaganych uprawnień w systemie. W tym celu musimy pozyskać uprawnienia administratora lokalnego bądź SYSTEM. Sposoby na zdobycie takich uprawnień są różne – opisywaliśmy je w kilku artykułach na Kapitanie, w tym w ostatnim tutaj. Kiedy zdobędziemy uprawnienia możemy spróbować użyć jednej z kilku poniższych metod.


Metoda 1 – wykonanie zrzutu z Task Manager’a

W polu Uruchom wpisujemy „taskmgr.exe”. Przechodzimy do zakładki procesy i prawym przyciskiem myszy klikamy na proces lsass.exe i wybieramy opcję „Create Dump File”.

Wynik:


Metoda 2 – użycie narzędzia ProcDump

Jeśli mamy odrobinę szczęścia i możemy skopiować lub odnaleźć na komputerze legalne narzędzie z paczki sysinternals (może je używać administrator) – ProcDump.exe. W tym celu musimy wykonać następującą komendę do wykonania dump’a procesu lsass.exe

procdump.exe -accepteula -ma lsass.exe c:\temp\lsass.dmp

Wynik:


Metoda 3 – wykorzystanie wbudowanej w Windows biblioteki comsvcs.dll

Załadowanie przez wbudowane w Windows narzędzie „rundll32.exe” i wykonanie natywnej biblioteki comsvcs.dll znajdującej się w katalogu „C:\Windows\system32” umożliwi nam również wykonanie dump’a procesu lsass.exe. Przed jej wywołaniem musimy znać jedynie identyfikator procesu w systemie. Najlepiej pobrać go w PowerShell używając funkcji „Get-Process lsass”, a następnie przekazać do wywołania w rundll32.exe

Poniżej komenda:

rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump 656 C:\temp\lsass.dmp full

Wynik:


Metoda 4 – napisane własnego kodu

Jeśli wszystkie z powyższych metod zawiodą, bo są wykrywalne przez zabezpieczenia możemy napisać własny kod w aplikacji. Poniższy kod używa natywnego wywołania funkcji Windows API MiniDumpWriteDump w celu wykonania zrzutu pamięci dla wskazanego procesu (w naszym przypadku jest to lsass.exe). Funkcja ta jest dostępna w bibliotece Windows dbghelp.dll.

Po kompilacji i uruchomieniu narzędzia lsassDump.exe w linii komend powinniśmy otrzymać zrzut.


Analiza pliku *.dmp i poznanie haseł użytkowników

W celu wykonania analizy wykonanego wcześniej pliku zrzutu „lsass.dmp” użyjemy mimikatz’a na niezabezpieczonej stacji. Wystarczy przekopiować plik *.dmp na taki komputer i odpalić na nim następujące komendy

sekurlsa::minidump C:\Temp\lsass.dmp sekurlsa::logonpasswords

Wynik

Oczywiście powyższa procedura dekodowania haseł z pliku *.dmp nie zadziała, jeśli wcześniej na Windows mieliśmy włączonego Windows Defender Credential Guard.


Co jeśli narzędzia security/EDR blokują możliwość wykonania zrzutu?

Może się zdarzyć sytuacja, że zainstalowane w systemie oprogramowanie antywirusowe zainstalowane na komputerze blokuje wywołanie funkcji MiniDumpWriteDump. W zależności od typu konkretnego oprogramowania do bezpieczeństwa użytego na stacji roboczej możemy zastosować starą metodę tzw.Hooking opisaną dokładniej tutaj.

W wielkim skrócie, metodę odpięcia interfejsu API (hooking) można porównać do serwera proxy sieci Web, w której wszystkie wywołania interfejsu API (w tym ich argumenty), które wykonuje aplikacja (np. CreateFile, ReadFile, OpenProcess itp.) są przechwytywane i sprawdzane przez oprogramowanie AV / EDR. Następnie AV/EDR decyduje, czy działanie programu nosi złośliwy zamiar, czy nie. Sposób, w jaki dostawcy EDR przechwytują w interfejsie użytkownika takie złośliwe wywołania funkcji polega na przejmowaniu/modyfikowaniu definicji funkcji (API) znajdujących się w bibliotekach DLL systemu Windows, takich jak kernel32 / kernelbase i ntdll. Do obejścia EDR przydatna będzie wiedza z zakresu Assemblera. W tym przypadku musimy zastosować specjalistyczny kod, który obejdzie funkcję wywołania EDR (instrukcję JMP w Assembler), lecz wiedza o tym wykracza poza zakres tego artykułu i postaramy się ją opisać w osobnym.


Jak sobie radzić z problemem?

Przede wszystkim powinniśmy zaimplementować w naszych systemach wszystkie zalecenia Microsoft dotyczące ochrony przechowywania haseł użytkowników w pamięci (WDigest i RunAsPPL). Implementacja Windows Credential Guard pozwoli nam uchronić się przed kradzieżą haseł (w pewnym stopniu), ale niestety jest implementowana w wersjach Enterprise Windows i może być nieosiągalna dla większości firm. Oczywiście powyższe zmiany w systemie wymagają testów i najlepiej je wcześniej sprawdzić, czy nie zakłócą działania w pracy innych aplikacji.

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. W przypadku użycia metody nr 4 warto monitorować użycie w systemie biblioteki dbghelp.dll, ponieważ to w niej znajduje się zaimplementowana w naszym kodzie funkcja MiniDumpWriteDump. Również monitorowanie systemu plików pod kątem pojawiania się rozszerzeń plików *.dmp. będzie cenna wskazówką, czy w systemie nie zadziałało się coś złego.


Podsumowanie

Wykonanie dump’a procesu lsass.exe w niezabezpieczonym środowisku IT prowadzi do powstania poważnego incydentu bezpieczeństwa. Niezastosowanie się do powyższych porad może narazić organizację lub nasz komputer na duże ryzyko. Metody jakie opisaliśmy powyżej pozwolą sprawdzić, czy ochrona działa i spełnia swoje założenia. Pamiętajcie też, że nie ma 100% metody zabezpieczenia się przed tymi incydentami, ale zawsze jest szansa zarządzenia ryzykiem. Zachęcamy do udostępniania artykułu wśród znajomych i do odwiedzenia naszego profilu na portalach społecznościowych na LinkedIn oraz Facebook.

Popularne

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

Jak zmienić nieznane/zapomniane hasło Administratora na Windows?

W tym artykule pokażemy, jak możemy zmienić hasło administratora na komputerze posiadając do niego fizyczny dostęp. Artykuł ten można potraktować także jako przestrogę dla firm, które nie zaimplementowały jeszcze odpo...
Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

Jak awaria Azure Front Door rzuciła cień na globalne usługi chmurowe

W środę 9 października użytkownicy platformy Microsoft Azure na całym świecie doświadczyli poważnych zakłóceń. Wiele usług stało się niedostępnych, a administratorzy nie mogli nawet zalogować się do portalu...
Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jak poznać hasło administratora lub użytkowników logujących się do Twojego komputera?

Jeśli masz odrobinę szczęścia lub „odpowiednie umiejętności” i potrafisz zdobyć lokalne uprawnienia administracyjne na Twoim komputerze w firmie lub zaliczasz się do grona tych szczęściarzy, którzy pracuj...
Czego nie mówi Broadcom? Luka w VMware jest banalna do wykorzystania i korzysta z niej co najmniej jedna grupa hakerska!

Czego nie mówi Broadcom? Luka w VMware jest banalna do wykorzystania i korzysta z niej co najmniej jedna grupa hakerska!

Niedawno załatana wysoce poważna luka w zabezpieczeniach VMware jest wykorzystywana jako zero-day od października 2024 roku do wykonywania kodu z podwyższonymi uprawnieniami. Taką informacją podzieliło się w...
Uwaga, administratorzy oraz zespoły bezpieczeństwa Splunk! Sześć krytycznych luk w Splunk Enterprise – analiza i rekomendacje

Uwaga, administratorzy oraz zespoły bezpieczeństwa Splunk! Sześć krytycznych luk w Splunk Enterprise – analiza i rekomendacje

Splunk opublikował ważne informacje, dotyczące szeregu nowych podatności w swoich produktach Splunk Enterprise i Splunk Cloud Platform. Luki mogą umożliwić atakującym wykonanie nieautoryzowanego kodu Ja...