
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.
🐍 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:
user@host) para os quais as chaves privadas possam ser aceitas,É 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.
Uma captura de tela reduzida da saída do SSH-Snake em uma rede muito pequena. |
|---|
Os 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). |
|---|
O SSH-Snake pode ser baixado ou direcionado para o bash:
wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh
ou
curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash
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, ip, timeout, arp, ifconfig, ipconfig e xargs 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.
.bash_history,O SSH-Snake vem com algumas configurações gerais que podem ser ajustadas. Essas configurações estão documentadas em SETTINGS.md#general-settings.