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

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

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

john

Teniendo como resultado la contraseña s3rvice

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

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

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

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

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

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

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.

Written by

Rodrigo Mencos

Hi there! I’m Rodrigo, born and raised in Guatemala and currently a DevOps engineer with love for coffee, infosec, technology and outdoor exploration.


Hola! Soy Rodrigo de Guatemala. Actualmente soy Ingeniero DevOps a quien le encanta el cafe, la seguridad informatica, tecnologia y explorar el mundo.