tcp-over-websockets: crea túneles TCP sobre WebSockets

Ya hemos visto varias herramientas para realizar túneles TCP sobre HTTP como  regeorg, tunnaABPTTS o Chisel, pero lo que no habíamos traído hasta ahora es una para realizar túnel TCP sobre WebSockets... así que hoy vamos a jugar con tcp-over-websockets del alemán Jannis Redmann aka derhuerst...

tcp-over-websockets está hecha bajo Node.js, de forma muy similar y sospechosa a su prima-hermana mayor wstunnel, y nos ayudará a evadir firewalls y otros incautos elementos de (des)protección perimetrales; ideal para una fase de post-explotación en la que ya hemos infectado una máquina y queremos a continuación pivotar o incluso acceder remotamente a otro servicio de la misma.

Tenéis el repo en https://github.com/derhuerst/tcp-over-websockets/, pero bastará con ejecutar lo siguiente para instalarlo:

npm install -g tcp-over-websockets

Una vez instalado, para arrancar el servidor (/usr/lib/node_modules/tcp-over-websockets/server.js) simplemente lanzaremos:

tcp-over-websockets-server
listening on 8088

 
Nota: a mi me funcionó con la versión 7.7.3 de node pero experimenté problemas con versiones anteriores.

Luego la sintaxis del cliente del cliente es muy sencilla:

# tcp-over-websockets --help

Usage:
    tcp-over-websockets --tunnel wss://example.org --target localhost:22 --port 8022

Parameters:
    --tunnel  the WebSocket address of the tunnel server
    --target  the hostname & port to connect to
    --port    the port to listen on


Sirva de ejemplo el establecimiento de túnel hacia Github a través del servidor de túneles público de now que cita el Readme:

tcp-over-websockets --tunnel wss://tcp-over-websockets-abvntgfmzf.now.sh --target github.com:22 --port 8022
listening on 8022, exposing github.com:22 via wss://tcp-over-websockets-abvntgfmzf.now.sh

Finalmente podremos atacar al puerto local especificado (8022) para acceder por SSH a Github a través del servidor indicado:

ssh 192.168.1.23 -p 8022
The authenticity of host '[192.168.1.203]:8022 ([192.168.1.203]:8022)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? ^C


Comentarios