the_open_door
café
ESEN
← Volver al índice

Port Forwarding with netsh (portproxy)

netsh interface portproxy es la forma nativa de convertir un host Windows comprometido en un pivote sin subir herramientas de terceros, lo que reduce el riesgo de detección. Reenvía un puerto en el que escucha el pivote hacia una IP y puerto internos, de modo que desde nuestra máquina atacante alcanzamos servicios de un segmento al que el pivote sí tiene ruta (por ejemplo, el RDP de un controlador de dominio) pero nosotros no.

Mecanismo

Creamos la regla de reenvío: el pivote escuchará en 8080 y enviará todo a 3389 del host interno:

netsh.exe interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=3389 connectaddress=<internal-ip>

Comprobamos que la regla existe:

netsh.exe interface portproxy show v4tov4
Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
0.0.0.0         8080        172.16.5.25     3389

Si el firewall del pivote bloquea el puerto de escucha, abrimos una regla de entrada:

netsh advfirewall firewall add rule name="fwd" dir=in action=allow protocol=TCP localport=8080

Desde la máquina atacante conectamos contra el puerto del pivote, y él enruta hacia el destino interno:

xfreerdp /v:<pivot-ip>:8080 /u:<user> /p:<pass>

Al terminar, se limpia la regla:

netsh.exe interface portproxy delete v4tov4 listenport=8080 listenaddress=0.0.0.0

Requisitos

portproxy requiere privilegios de administrador en el pivote y depende del servicio IP Helper (iphlpsvc). El pivote debe tener una interfaz o ruta hacia el objetivo interno, y el firewall debe permitir la conexión entrante al puerto de escucha. A diferencia de un túnel SSH o Chisel, aquí no se crea un proxy SOCKS: es un reenvío puerto a puerto, uno por servicio.

Cómo detectarlo

Delatan el pivote las reglas portproxy nuevas (visibles con netsh interface portproxy show all o en la clave HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp), las reglas de firewall añadidas por línea de comandos, las conexiones a puertos poco habituales del host que se reenvían a otros segmentos, y la ejecución de netsh.exe con parámetros portproxy (evento 4688).

Defensa. Restringir el administrador local; segmentar la red para que un puesto de trabajo no tenga ruta hacia los servidores críticos; alertar sobre la creación de reglas portproxy y de firewall; y vigilar netsh.exe con EDR. Relacionado con local port forwarding, dynamic port forwarding, pivoting con Chisel, relay con socat y secuestro de sesión RDP.