HTB Forest – Writeup

Forest es una maquina en HTB, basada específicamente en AD. Fue una maquina muy divertida y que tenía distintos puntos de ataque. Sin mas que decir, empecemos.

Enumeración:

Not shown: 65514 closed ports`
`PORT      STATE SERVICE      VERSION`
`88/tcp    open  kerberos-sec Microsoft Windows Kerberos (server time: 2019-12-21 19:15:29Z)`
`139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn`
`389/tcp   open  ldap         Microsoft Windows Active Directory LDAP (Domain: htb.local, Site: Default-First-Site-Name)`
`464/tcp   open  kpasswd5?`
`593/tcp   open  ncacn_http   Microsoft Windows RPC over HTTP 1.0`
`636/tcp   open  tcpwrapped`
`3268/tcp  open  ldap         Microsoft Windows Active Directory LDAP (Domain: htb.local, Site: Default-First-Site-Name)`
`3269/tcp  open  tcpwrapped`
`5985/tcp  open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)`
`|_http-server-header: Microsoft-HTTPAPI/2.0`
`|_http-title: Not Found`
`9389/tcp  open  mc-nmf       .NET Message Framing`
`47001/tcp open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)`
`|_http-server-header: Microsoft-HTTPAPI/2.0`
`|_http-title: Not Found`
`49664/tcp open  msrpc        Microsoft Windows RPC`
`49665/tcp open  msrpc        Microsoft Windows RPC`
`49666/tcp open  msrpc        Microsoft Windows RPC`
`49667/tcp open  msrpc        Microsoft Windows RPC`
`49671/tcp open  msrpc        Microsoft Windows RPC`
`49676/tcp open  ncacn_http   Microsoft Windows RPC over HTTP 1.0`
`49677/tcp open  msrpc        Microsoft Windows RPC`
`49684/tcp open  msrpc        Microsoft Windows RPC`
`49698/tcp open  msrpc        Microsoft Windows RPC`
`49717/tcp open  msrpc        Microsoft Windows RPC`
`Service Info: Host: FOREST; OS: Windows; CPE: cpe:/o:microsoft:windows`
`
`Host script results
`|`_smb2-security-mode: SMB: Couldn't find a NetBIOS name that works for the server. Sorry!`
`_smb2-time: ERROR: Script execution failed (use -d to debug)_`

Luego de recibir los resultados del nmap, encontramos que la maquina está corriendo el dominio htb.local. Decidí luego enumerar el SMB con:

enum4linux -U 10.10.10.161

Entre todas las lineas que recibí, los datos importantes fueron estos usuarios:

Bandera de User:

Metí los datos en users.txt y corrí la herramienta de impacket (https://github.com/SecureAuthCorp/impacket), GetNPUsers, para tratar de agarrar algún ticket.

Efectivamente tengo uno para svc-alfresco. En este punto llamé al buen amigo John para que realizara el resto del trabajo:

Teniendo como resultado la contraseña s3rvice

Luego, con Evilwinrm, me conecté con el usuario y las credenciales obtenidas:

Ya adentro, podemos agarrar la bandera del usuario.

Camino a Root

El camino que yo elegí fue correr bloodhound (https://github.com/fox-it/BloodHound.py) en la maquina. Sin embargo, al no podes subir ningún archivo, tuve que correrlo remoto de la siguiente forma:

Luego de obtener los archivos .json, abrí BloodHound y analicé la situación actual de la maquina:

Lo primero que suelo hacer es seleccionar la opción Transitive Object Controller. Luego de hacerlo, tendremos una visualización más limpia y despliegue de que somos dueños y que podemos cambiar.

Acá noté que Alfresco es dueño del usuario Tree, el cual es miembro del grupo Exchange Windows Permissions y de Group Policy Creator. Acá existen distintas formas de proseguir. En mi caso, decidí cambiarle la contraseña al user de Tree y ver qué tipo de enumeración adicional podía realizar.

Así que, ingresé de nuevo a Evilwinrm con el usuario SVC-Alfresco y le cambié la contraseña al usuario Tree por test@123.

Luego, corrí un secretsdump para ver si ahí había algo:

Y efectivamente se encontraba el hash del usuario Administrator.

OJO: Vean como indica el formato del hash domainuid:rid:lmhash:nthash, ya que puede causarles problemas cuando lo quieran usar.

Probé con John y Hashcat y no tuve suerte. Por lo que decidí usar la técnica Pass-The-Hash

Listo, tenemos control del sistema como Administrator y podemos ir directo a conseguir la bandera.

PROTIP: Existen otras opciones. smbexec, wmi o psexec. Como recomendación, prueben siempre primero con smbexec o wmiexec.

PROTIP 2: Se pueden pasar hashes solo cuando son NTLM 1. Hashes NTLM 2, no se pueden pasar.

Pasa a ver el writeup de Nest acá: https://www.mirairo.net/htb-nest-writeup-espanol/

Leave a Comment