Back
Featured image of post HTB Forest – Writeup

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:

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:

screenshot
screenshot

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.

alfresco
alfresco

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

john
john

Teniendo como resultado la contraseña s3rvice

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

EvilWinrm
EvilWinrm

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 poder subir ningún archivo, tuve que correrlo remoto de la siguiente forma:

BloodHound
BloodHound

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

BloodHound
BloodHound

BloodHound
BloodHound

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

BloodHound
BloodHound

MemberOf
MemberOf

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:

Corriendo Secretdump
Corriendo Secretdump

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

Passing the hash
Passing 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.

comments powered by Disqus
Built with Hugo
Theme Stack