
SSH-Snake es un script autopropagante, autorreplicante y sin archivos que automatiza la tarea de post-explotación de descubrimiento de claves privadas SSH y de hosts.
🐍 SSH-Snake es una herramienta potente diseñada para realizar travesía automática de redes utilizando claves privadas SSH descubiertas en sistemas, con el objetivo de crear un mapa completo de una red y sus dependencias, identificando hasta qué punto una red puede ser comprometida usando SSH y claves privadas SSH a partir de un sistema particular.
SSH-Snake puede revelar automáticamente la relación entre sistemas que están conectados mediante SSH, algo que normalmente requeriría una enorme cantidad de tiempo y esfuerzo para realizar manualmente.
En otras palabras, SSH-Snake realiza las siguientes tareas de forma automática y recursiva:
usuario@host) donde las claves privadas puedan ser aceptadas,Es completamente autorreplicante y autopropagante — y completamente sin archivos. En muchos sentidos, SSH-Snake es en realidad un gusano: se replica a sí mismo y se propaga de un sistema a otro lo más lejos posible.
En lugar de saltar manualmente entre sistemas con claves SSH como si fuera un juego de Super Mario, deja que SSH-Snake haga el trabajo por ti.
Aunque esta herramienta está destinada a fines de hacking, los administradores de sistemas también pueden usarla para comprender mejor su infraestructura y red. Si deseas deshabilitar la impresión de las claves privadas descubiertas, comenta esta línea de código.
Para un análisis en profundidad de cómo funciona realmente este script, detalles técnicos, descubrimientos interesantes, decisiones de diseño, evaluaciones comparativas y lecciones aprendidas, consulta esta entrada de blog. Este software fue escrito por Joshua Rogers.
Una captura de pantalla reducida de la salida de SSH-Snake en una red muy pequeña. |
|---|
Los nodos azules indican que el destino puede conectarse a sí mismo (usuario@host<-->usuario@host). Las aristas rojas indican que la conexión es bidireccional (usuario1@host1<-->usuario2@host2). |
|---|
SSH-Snake se puede descargar o canalizar a bash:
wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh
o
curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash
SSH-Snake emula sin problemas lo que un adversario humano haría para descubrir claves privadas SSH y destinos donde puedan usarse para conectarse. Escrito completamente en Bash, opera con un conjunto mínimo de dependencias comúnmente disponibles en los principales sistemas Linux (y MacOS): bash, ssh, coreutils, awk, uniq, sort, grep, tr, find, y cat. getent O dscacheutil es necesario. sed solo se requiere para el primer sistema. Del mismo modo, también se pueden usar sudo, hostname, ip, timeout, arp, ifconfig, ipconfig, y xargs, pero no son necesarios (y el script maneja con elegancia los casos en que no están presentes). Si se descubre un sistema sin alguno de los paquetes necesarios, falla con gracia, alertando al usuario de que el escaneo no pudo continuar en ese sistema en particular (y retrocede, continuando desde el sistema anterior).
SSH-Snake es completamente sin archivos: después de que el usuario ejecuta el script, se pasa al bash de los destinos a través de stdin y argumentos de bash (a través de SSH). No existe evidencia material del script en ninguno de los sistemas escaneados: la única evidencia de la ejecución del script está en el árbol de procesos y la cantidad sustancial de intentos SSH inválidos que inevitablemente ocurrirán.
SSH-Snake utiliza un enfoque de profundidad primero para el descubrimiento: una vez que se conecta a un sistema, intenta conectarse más desde ese sistema antes de retroceder.
El nombre SSH-Snake proviene del hecho de que la salida del script parece una serpiente deslizándose hacia arriba y hacia abajo en la red. Sin embargo, a diferencia del juego Snake, SSH-Snake no muere cuando muerde su propia cola (se conecta a un sistema que ya ha escaneado o que está escaneando actualmente): simplemente imprimirá cómo se conectó allí como de costumbre, pero regresará y no volverá a escanear el destino (para evitar la recursión infinita).
SSH-Snake ha sido probado en varias versiones de Linux y MacOS (con Homebrew Bash instalado). Si encuentras un sistema operativo basado en Linux con el que no sea compatible, por favor informa del problema.
.bash_history,SSH-Snake incluye algunas configuraciones generales que se pueden ajustar. Estas configuraciones están documentadas en SETTINGS.md#configuraciones-generales.