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
SSH-Snake — SSH-Snake é um script sem arquivos, autopropagável e autorreplicante que automatiza a tarefa de pós-exploração de descoberta de chaves privadas SSH e de hosts. | Kitploit
Ferramentas/GitHubGitHub/megamansec/ssh-snake
Escalada de PrivilégiosReconhecimentoMapeamento de RedeMovimento LateralColeta de InformaçõesPós-ExploraçãoTestes de PenetraçãoRed TeamingArchived
GitHubmegamansec/ssh-snake

SSH-Snake

SSH-Snake é um script sem arquivos, autopropagável e autorreplicante que automatiza a tarefa de pós-exploração de descoberta de chaves privadas SSH e de hosts.

2.3k2214há 5 mesesRevisado 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
Ver RepositórioSite

SSH-Snake: Travessia Automatizada de Rede Baseada em SSH

🐍 SSH-Snake é uma ferramenta poderosa projetada para realizar travessia automática de rede usando chaves privadas SSH descobertas em sistemas, com o objetivo de criar um mapa abrangente de uma rede e suas dependências, identificando até que ponto uma rede pode ser comprometida usando SSH e chaves privadas SSH a partir de um sistema específico.

O SSH-Snake pode revelar automaticamente a relação entre sistemas conectados via SSH, o que normalmente exigiria uma enorme quantidade de tempo e esforço para ser feito manualmente.

Em outras palavras, o SSH-Snake executa as seguintes tarefas automática e recursivamente:

  1. No sistema atual, encontrar quaisquer chaves privadas SSH,
  2. No sistema atual, encontrar quaisquer hosts ou destinos (user@host) para os quais as chaves privadas possam ser aceitas,
  3. Tentar SSH em todos os destinos usando todas as chaves privadas descobertas,
  4. Se um destino for conectado com sucesso, repetir os passos #1 - #4 no sistema conectado.

É completamente auto-replicante e auto-propagante — e completamente sem arquivos. De muitas formas, o SSH-Snake é na verdade um worm: Ele se replica e se espalha de um sistema para outro o mais longe possível.

Em vez de pular manualmente entre sistemas com chaves SSH como se fosse um jogo Super Mario, deixe o SSH-Snake fazer o trabalho por você.

Embora esta ferramenta seja destinada a fins de hacking, administradores de sistemas também podem usá-la para entender melhor sua infraestrutura e rede. Se você quiser desabilitar a impressão de chaves privadas descobertas, comente esta linha de código.

Para uma análise aprofundada de como este script realmente funciona, detalhes técnicos, descobertas interessantes, decisões de design, benchmarking e lições aprendidas, confira este post no blog. Este software foi escrito por Joshua Rogers.

Capturas de Tela

Uma captura de tela reduzida da saída do SSH-Snake em uma rede muito pequena.

Um gráfico visualizando a relação entre sistemas usando SSHOs nós azuis indicam que o destino pode se conectar a si mesmo (user@host<-->user@host). As arestas vermelhas indicam que a conexão é bidirecional (user1@host1<-->user2@host2).

Um gráfico visualizando a relação entre sistemas usando SSHOs nós verdes indicam um host (sem nome de usuário) que pode se conectar a si mesmo (host1<-->host1). As arestas verdes indicam que a conexão é bidirecional (host1<-->host2). O host cinza no canto superior direito é o host onde o script foi inicialmente executado.

Um gráfico visualizando a relação entre sistemas usando SSHOs nós azuis indicam que o destino pode se conectar a si mesmo (user@host<-->user@host). As arestas vermelhas indicam que a conexão é bidirecional (user1@host1<-->user2@host2).

Usando e Executando o SSH-Snake

O SSH-Snake pode ser baixado ou direcionado para o bash:

root@kitploit:~
wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh

ou

root@kitploit:~
curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash

Sobre o SSH-Snake

O SSH-Snake emula perfeitamente o que um adversário humano faria para descobrir chaves privadas SSH e destinos onde elas podem ser usadas para se conectar. Escrito inteiramente em Bash, opera com um conjunto mínimo de dependências comumente disponíveis em grandes distribuições Linux (e MacOS): bash, ssh, coreutils, awk, uniq, sort, grep, tr, find e cat. getent OU dscacheutil é necessário. sed é necessário apenas para o primeiro sistema. Da mesma forma, sudo, hostname, , , , , e também podem ser usados, mas não são obrigatórios (e o script lida graciosamente com casos em que não estão presentes). Se um sistema for descoberto sem nenhum dos pacotes necessários, ele falha graciosamente, alertando o usuário de que a varredura não pôde continuar naquele sistema específico (e retrocede, continuando a partir do sistema anterior).

O SSH-Snake é completamente sem arquivos: após o usuário executar o script, ele é passado para o bash dos destinos via stdin e argumentos bash (através do SSH). Nenhuma evidência material do script existe em nenhum dos sistemas varridos: a única evidência da execução do script está na árvore de processos e na quantidade substancial de tentativas SSH inválidas que inevitavelmente ocorrerão.

O SSH-Snake adota uma abordagem de busca em profundidade para descoberta: uma vez que se conecta a um sistema, tenta se conectar ainda mais a partir desse sistema antes de retroceder.

O nome SSH-Snake vem do fato de que a saída do script se assemelha a uma cobra deslizando para cima e para baixo na rede. No entanto, ao contrário do jogo Snake, o SSH-Snake não morre quando morde o próprio rabo (conecta a um sistema já verificado ou atualmente em verificação): ele simplesmente imprime como se conectou lá normalmente, mas retorna e não re-varre o destino (para evitar recursão infinita).

O SSH-Snake foi testado em várias versões do Linux e MacOS (com Homebrew Bash instalado). Se você encontrar um sistema operacional baseado em Linux com o qual não seja compatível, por favor, submeta um relatório.

Recursos

  • Realizar SSH recursivamente de um sistema para outro usando chaves privadas SSH locais,
  • Travessia e propagação/replicação sem arquivos do script SSH-Snake usando apenas stdin e argumentos bash para sistemas remotos,
  • Elevação automática de privilégios para root usando sudo, se possível,
  • Descobrir arquivos de chaves privadas SSH a partir de entradas do .bash_history,
  • Descobrir chaves privadas SSH a partir de arquivos e pastas comumente usados,
  • Exfiltração de chaves privadas SSH como saída do script,
  • Execução de comandos personalizados configuráveis em cada sistema,
  • Sistema modular plug-and-play para descobrir chaves privadas e sistemas,
  • Detectar hosts a partir de faixas IP, últimos logins, hosts conhecidos, arquivos de configuração SSH e mais,
  • Capacidade de detectar quando um sistema já foi verificado ou está em processo de verificação, de modo que uma rede como A->B->C também possa descobrir C->A, mas não regrida para A->B->C-A->B->C->A->B->...,
  • Capacidade de gerar visualizações gráficas de uma rede a partir da saída do script,
  • ... e mais.

Configurações

O SSH-Snake vem com algumas configurações gerais que podem ser ajustadas. Essas configurações estão documentadas em SETTINGS.md#general-settings.

O SSH-Snake também vem com uma variedade de estratégias configuráveis/plug-and-play (funções) que podem ser usadas para descobrir chaves privadas SSH em um sistema e descobrir hosts e destinos para tentar se conectar. Padrões sensatos foram fornecidos, no entanto, se você deseja realizar uma varredura da maneira mais completa possível, ativar mais técnicas de descoberta pode ajudar. Se uma varredura estiver demorando muito, desativar algumas técnicas de descoberta pode ajudar. Com exceção de uma estratégia (find_ssh_keys), cada uma das estratégias pode ser ativada/desativada. Elas estão documentadas em SETTINGS.md#configurable-discovery-strategies.

Entendendo a Saída

A saída bruta do SSH-Snake contém uma mistura de informações sobre chaves privadas descobertas, destinos e mensagens de erro.

Uma explicação detalhada sobre a saída completa do SSH-Snake pode ser encontrada em OUTPUT.md.

Um exemplo de saída pode ser encontrado em example-output.log.

Visualizando Relacionamentos entre Sistemas

A saída do SSH-Snake pode ser usada para criar gráficos/visualizações da rede que o script percorre.

Uma explicação detalhada sobre como criar e interpretar imagens/visualizações a partir da saída do SSH-Snake pode ser encontrada em GRAPHICS.md.

Outras Ferramentas

Além da capacidade de criar visualizações da rede que o SSH-Snake percorre, três outras ferramentas são fornecidas. São elas:

  1. forward-lookup-host.py: Dado um host ou destino de origem, determinar todos os sistemas que podem ser acessados direta ou indiretamente (isto é, através de um sistema terciário).
  2. reverse-lookup-host.py: Dado um host ou destino de destino, determinar todos os sistemas que podem acessá-lo direta ou indiretamente.
  3. shortest-path-create-chain.py: Dado um host ou destino A e B, determinar o caminho mais curto conectando os dois.

A terceira ferramenta também gera um comando que pode ser usado para conectar do destino A ao destino B. Por exemplo:

root@kitploit:~
$ python3 tools/shortest-path-create-chain.py --file output.log --src '[email protected]' --dest '[email protected]'

Shortest path from [email protected] to [email protected]: [email protected]>[email protected]>[email protected]>[email protected]

[..]

ssh -i "/home/jrogers/.ssh/key" [email protected] 'sudo ssh -i "/root/.ssh/id_rsa" [email protected] 'ssh -i "/tmp/key" [email protected]''

Snake.sh vs Snake.nocomments.sh

Como o script é bastante grande, carregá-lo em um here-document (o que ele faz automaticamente porque o script é na verdade um Quine) faz com que o bash escreva em um arquivo temporário (já que é maior que 65535 bytes).

Para reduzir o tamanho de forma que permaneça 100% sem arquivos, o Snake.nocomments.sh tem uma versão com todos os comentários, espaços em branco desnecessários e linhas em branco removidos. Isso reduz o tamanho do arquivo para que o arquivo temporário não seja criado pelo bash.

Bugs / Problemas

Se você encontrar algum bug ou problema relacionado ao script, por favor, relate como uma issue no GitHub. Inclua suas configurações.

Estou particularmente interessado em quaisquer saídas [line] interessantes associadas a erros que não foram capturados pelo script.

Limitações

  • Apenas IPv4: Como todos os melhores programas, o script não suporta IPv6. Não imagino que haverá suporte para isso tão cedo.

  • Apenas Porta 22: Há uma suposição geral de que o SSH está rodando na porta 22.

  • GNU coreutils: O script depende fortemente do GNU coreutils. Não determinei quanto (se algum) GNU-ismo é usado no script.

  • O script atualmente não procura por sockets do agente SSH.

Baixar ferramenta
ip
timeout
arp
ifconfig
ipconfig
xargs