Blackfield
Última actualización
¿Te fue útil?
Última actualización
¿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.
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Blackfield.
Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX.
Transformaremos el archivo XML obtenido en el resultado de nmap y lo transformaremos en un archivo HTML. Levantaremos un servidor HTTP con Python3.
Comprobaremos el nombre del dominio que nos enfrentamos, el nombre del equipo y que tipo de máquina nos enfrentamos.
Procederemos a añadir la entrada en nuestro archivo /etc/hosts
Intentaremos de realizar un reconocimiento para enumerar los usuarios a través de RPC con NSrpcenum sin éxito.
Procederemos a enumerar los recursos compartidos que hay en el SMB.
A través de smbmap probaremos de autenticarnos con el usuario "guest" y ver los permisos que disponemos.
Revisaremos el contenido del recurso compartido "profiles" a través de smbmap.
Accederemos al recurso compartido con el usuario "guest" al recurso compartido "profiles" y nos descargaremos todo el contenido del recurso.
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".
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.
Del listado de usuarios que disponemos, probaremos de validar los usuarios válidos. Para ello, haremos uso de kerbrute.
Estos archivos que hemos validado los guardaremos en un nuevo archivo "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.
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.
De los TGT obtenidos procederemos a crackear los hashes con john para obtener la contraseña del usuario.
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.
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".
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.
Enumeraremos el LDAP a través de la herramienta ldapdomaindump.
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.
Realizaremos una enumeración con BloodHound a través de bloodhound-python.
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.
Probando de enumerar el SMB con estas nuevas credenciales, comprobamos que este usuario dispone de acceso para el recurso compartido "forensic".
Revisaremos el contenido del recurso compartido "forensic" a través de smbmap.
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".
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.
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.
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).
Extraeremos la SAM y SYSTEM y nos la descargaremos en nuestra Kali.
A través de samdump2 obtendremos los hashes NTLM de los usuarios locales del equipo.
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.
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
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:.
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.
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.
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.