Mimikatz Wyodrębnij hasła użytkownika systemu Windows z pamięci zwykłym tekstem

W tym artykule, który został napisany jako część serii artykułów poświęconych bezpieczeństwu systemów Windows (w ostatnim artykule omawialiśmy bezpieczeństwo haseł przechowywanych w GPP), zapoznamy się z dość prostą metodą uzyskiwania jasnych haseł wszystkich użytkowników działających w systemie Windows Korzystanie z narzędzia Open Source Mimikatz.

Oświadczenie.  Informacje i technologie opisane w tym artykule powinny być wykorzystywane wyłącznie w celach informacyjnych i zapoznawczych, aw żadnym wypadku nie powinny być wykorzystywane do uzyskiwania dostępu do kont, informacji i systemów stron trzecich..

Treść

  • Przechowuj hasła i skróty w pamięci systemu Windows
  • Używamy Mimikatz do wyodrębnienia haseł użytkowników z lsass.exe online
  • Uzyskiwanie hasła użytkownika ze zrzutu pamięci systemu Windows
  • Pobieranie haseł użytkowników z plików maszyn wirtualnych i plików hibernacji
  • Używanie Mimikatza w atakach typu hash
  • Jak chronić system Windows przed wyodrębnianiem haseł z pamięci za pośrednictwem mimikatz?

Przechowuj hasła i skróty w pamięci systemu Windows

Większość administratorów systemu jest przekonana, że ​​system Windows nie przechowuje haseł użytkowników w postaci zwykłego tekstu, a jedynie w postaci skrótu. I chociaż obecnie istnieje wiele narzędzi, które mogą wyodrębnić skróty haseł użytkowników z systemu, można z całą pewnością stwierdzić, że używając dość złożonego hasła, które nie jest „ze słownika”, atakujący praktycznie nie ma szans na jego pobranie z bezpośrednią brutalną siłą lub na podstawie już obliczonych skrótów.

Zasadniczo jest to prawda, ale istnieją różne niuanse dotyczące użytkowników zalogowanych do określonego systemu Windows. Faktem jest, że niektóre procesy systemowe do swoich oficjalnych celów nadal używają haseł użytkowników w otwartej (lub zaszyfrowanej) formie, a nie ich skrótów.

Na przykład mechanizm uwierzytelnianie skrótowe (HTTP Trawienie Uwierzytelnianie), używany do obsługi logowania jednokrotnego (Single Sign On), do swojej pracy wymaga znajomości wprowadzonego hasła użytkownika, a nie tylko jego skrótu (możesz tylko zgadywać, dlaczego programiści zaimplementowali to w ten sposób). Hasła (a mianowicie hasła, a nie ich skróty) użytkowników w postaci zaszyfrowanej są przechowywane w pamięci systemu operacyjnego, a dokładniej w pamięci procesu LSASS.Exe. Problem polega na tym, że szyfrowanie hasłem jest realizowane za pomocą standardowych funkcji Win32 LsaProtectMemory i LsaUnprotectMemory, które są zaprojektowane do szyfrowania / deszyfrowania określonego fragmentu pamięci. Utility French Developers mimikatz pozwala odbierać zaszyfrowane dane z pamięci i deszyfrować je za pomocą funkcji LsaUnprotectMemory, umożliwiając wyświetlanie wszystkich kont użytkowników autoryzowanych w systemie i ich haseł (w otwartej, już odszyfrowanej formie!). Aby wykorzystać tę lukę, osoba atakująca musi mieć możliwość dołączenia specjalnej biblioteki do procesu lsass.exe.

Pobierz narzędzie mimikatz może być tutaj: http://blog.gentilkiwi.com/mimikatz

Informacje. Narzędzie mimikatz jest wykrywane przez większość programów antywirusowych i przeglądarek jako potencjalnie niebezpieczne oprogramowanie (narzędzie hakerskie).

Narzędzie mimikatz pozwala wyodrębnić hasła użytkownika bezpośrednio z pamięci (poprzez wstrzyknięcie biblioteki sekurlsa.dll do lsass.exe), z zapisanego zrzutu pamięci komputera, a nawet z pliku hibernacji.

Używamy Mimikatz do wyodrębnienia haseł użytkowników z lsass.exe online

  • Pobierz i uruchom Mimikatz.exe z uprawnieniami administratora (istnieją wersje x86 i x64 narzędzia dla odpowiednich systemów)
  • W kontekście narzędzia uruchom polecenia

mimikatz # privilege :: debug
mimikatz # sekurlsa :: logonPasswords full

(ostatnie polecenie dla wszystkich aktywnych użytkowników w systemie wyświetli nazwy kont i ich hasła).

Jak widać, narzędzie pokazało nam bardzo złożone hasło użytkownika w postaci zwykłego tekstu! Wszystko to wynika z faktu, że dozwolone jest używanie trybu debugowania na tym komputerze poprzez ustawienie flagi SeDebugPrivilege dla pożądanego procesu. W tym trybie programy mogą uzyskać niskopoziomowy dostęp do pamięci procesów działających w imieniu systemu.

Wyobraź sobie, że jest to serwer terminali, na którym pracuje wielu użytkowników jednocześnie i na którym jest między innymi sesja administratora przedsiębiorstwa. Tj. jeśli masz uprawnienia administratora na jednym serwerze, możesz nawet przechwycić hasło administratora domeny.

Uwaga. W czerwcu 2017 r. Wiele dużych firm w Rosji, na Ukrainie i w innych krajach zostało zainfekowanych wirusem ransomware typu non-petya, który został wykorzystany przez zintegrowany moduł mimikatz do zbierania haseł użytkowników i administratorów domen.Uwaga. Ta technika nie zadziała, jeśli w systemie znajduje się nowoczesny program antywirusowy, który blokuje wstrzykiwanie. W takim przypadku musisz najpierw utworzyć zrzut pamięci urządzenia, a już na drugim komputerze „wyciągnąć” z niego hasła do sesji wszystkich użytkowników.

Uzyskiwanie hasła użytkownika ze zrzutu pamięci systemu Windows

Zrzut pamięci dla procesu LSASS można uzyskać za pomocą funkcji PowerShell Out-Minidump.ps1. Zaimportuj funkcję Out-Minidump do PoSh i zrzuć pamięć procesową LSASS:

Get-Process lsass | Out-minidump

Wynikowy zrzut pamięci w naszym przykładzie to lsass_592.dmp (domyślnie jest zapisany w katalogu% windir \ system32%), musisz skopiować go na inny komputer z narzędziem mimikatz i uruchomić polecenie:

Mimikatz „sekurlsa :: minidump lsass_592.dmp”

Za pomocą następującego polecenia uzyskujemy z zapisanej pamięci zrzut listy użytkowników pracujących w systemie i ich haseł:

mimikatz # sekurlsa :: logonPasswords

Jak widać, nic skomplikowanego.

W ten sposób możesz uzyskać zrzut pamięci z komputera zdalnego przy użyciu psexec lub WinRM (jeśli masz uprawnienia administratora) i wyodrębnić z niego hasło użytkownika.

Pobieranie haseł użytkowników z plików maszyn wirtualnych i plików hibernacji

Śmiało Za pomocą prostych manipulacji osoba atakująca może łatwo wyodrębnić hasła użytkownika z plików zrzutu pamięci, pliku hibernacji systemu (hiberfil.sys) i. Pliki vmem maszyn wirtualnych (zamień pliki maszyn wirtualnych i ich migawki).

Aby to zrobić, potrzebujesz pakietu Debugowanie Narzędzie dla Windows (WinDbg), ja mimikatz i narzędzie do konwersji .vmem do pliku zrzutu pamięci (w przypadku Hyper-V może to być vm2dmp.exe lub MoonSols Windows Memory Toolkit dla plików VMware vmem).

Na przykład, jeśli to konieczne, przekonwertuj plik wymiany vmem maszyny wirtualnej VMWare na zrzut, wykonaj polecenie:

bin2dmp.exe „winsrv2008r2.vmem” vmware.dmp

Ładujemy wynikowy zrzut do WinDbg (Plik -> Otwórz zrzut awaryjny), ładujemy bibliotekę mimikatz o nazwie mimilib.dll (wybierz wersję w zależności od głębokości bitowej systemu):

.załaduj mimilib.dll

Szukamy procesu lsass.exe na zrzucie:

!proces 0 0 lsass.exe

I na koniec piszemy:

.process / r / p fffffa800e0b3b30
!mimikatz

i uzyskaj listę użytkowników systemu Windows i ich hasła w postaci zwykłego tekstu.

Uzyskiwanie haseł użytkowników systemu Windows w formie otwartej za pomocą narzędzia Mimikatz działa w następujących systemach, w tym tych działających na różnych wersjach Hyper-V 2008/2012 i VMWare:

  • Windows Server 2008/2008 R2
  • Windows Server 2012 / R2
  • Windows 7
  • Windows 8
Uwaga. Nawiasem mówiąc, funkcjonalność mimikatz jest już zaimplementowana w Metasploit Framework.

Używanie Mimikatza w atakach typu hash

W przypadku, gdy nie można uzyskać hasła użytkownika, a jedynie jego skrót, Mimikatz może zostać użyty do tak zwanego ataku pass-the-hash (ponowne użycie skrótu). W takim przypadku skrótu można użyć do uruchomienia procesów w imieniu użytkownika. Na przykład po otrzymaniu skrótu NTLM użytkownika następujące polecenie uruchomi wiersz polecenia w imieniu konta uprzywilejowanego:
sekurlsa :: pth / user: Administrator / domain: CORP / ntlm: NTLM hash / run: cmd

Jak chronić system Windows przed wyodrębnianiem haseł z pamięci za pośrednictwem mimikatz?

W systemach Windows 8.1 i Server 2012 R2 (i nowszych) możliwość wyodrębnienia haseł za pomocą LSASS jest nieco ograniczona. Domyślnie systemy te nie przechowują w pamięci skrótów i haseł LM w postaci zwykłego tekstu. Ta sama funkcjonalność jest cofnięta do wcześniejszych wersji systemu Windows (7/8 / 2008R2 / 2012), w których musisz zainstalować specjalną aktualizację KB2871997 (aktualizacja zapewnia inne możliwości wzmocnienia bezpieczeństwa systemu) i w gałęzi HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest ustaw parametr rejestru DWORD UseLogonCredential równe 0 (WDigest jest wyłączony).

Jeśli po zainstalowaniu aktualizacji i klucza UseLogonCredential spróbujesz wyodrębnić hasła z pamięci, zobaczysz, że mimikats nie może wyodrębnić haseł i skrótów za pomocą polecenia creds_wdigest.

Jeśli jednak masz uprawnienia administratora, możesz łatwo zmienić ten klucz:

reg dodaj HKLM \ SYSTEM \ CurrentControlSet \ Control \ SecurityProviders \ WDigest / v UseLogonCredential / t REG_DWORD / d 1

Następnie możesz ponownie uzyskać dostęp do haseł w pamięci LSA.

Zestaw narzędzi mimikatz zawiera również inne narzędzia do odzyskiwania haseł i ich skrótów z pamięci (WDigest, LM-hash, NTLM-hash, moduł przechwytywania biletów Kerberos), dlatego zaleca się wdrożenie następujących środków jako zaleceń:

  • Odmów przechowywania haseł przy użyciu szyfrowania odwracalnego
  • Wyłącz NTLM
  • Odmów używania zapisanych haseł w Credential Manager
  • Odmów uwierzytelnienia użytkownika domeny pamięci podręcznej (klucz CachedLogonsCount i logowanie interakcyjne: liczba poprzednich logowań do pamięci podręcznej)
  • Jeśli poziom funkcjonalności domeny nie jest niższy niż Windows Server 2012 R2, możesz dodać konta administratora do specjalnej grupy użytkowników chronionych
Wskazówka. Szczegółowy artykuł na temat ochrony pamięci systemów Windows przed wyodrębnianiem haseł i skrótów - Metody ochrony przed mimikatz w domenie Windows

Podczas testowania mimkatz na Windows 10 Pro x64 z ustawieniami, mimkatz 2.0 był w stanie uzyskać skróty haseł aktywnego użytkownika (ale nie hasło w postaci zwykłego tekstu).

W starszych systemach, w celu obejścia tego problemu, należy ograniczyć uzyskanie uprawnień do debugowania i wyłączyć dostawcę zabezpieczeń wdigest za pośrednictwem rejestru. Do tego w oddziale HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Lsa znajdź klucz Pakiet bezpieczeństwasi usuń wiersz z listy pakietów wdigest. Musisz jednak zrozumieć, że osoba atakująca, posiadająca odpowiednie uprawnienia do rejestru, nie ma trudności z przywróceniem ustawień.

Wnioski. Po raz kolejny przypominamy sobie wspólne prawdy:

  • Nie używaj tych samych haseł do różnych usług (zwłaszcza terminalowych należących do stron trzecich).
  • Pomyśl o bezpieczeństwie haseł i danych znajdujących się na maszynach wirtualnych w chmurze, ponieważ nie możesz mieć pewności, kto jeszcze ma dostęp do hiperwizorów i pamięci, na której znajdują się pliki maszyny wirtualnej.
  • Zminimalizuj w swoich systemach liczbę kont, które mają uprawnienia lokalnego administratora (zobacz przewodnik na temat zabezpieczania kont administratora w Windows)
  • Nigdy nie loguj się przy użyciu konta administratora domeny na serwerach i komputerach dostępnych dla innych użytkowników.