Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
SSH-Snake — 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. | Kitploit
Herramientas/GitHubGitHub/megamansec/ssh-snake
Escalada de PrivilegiosReconocimientoMapeo de RedesMovimiento LateralRecopilación de InformaciónPost-ExplotaciónPruebas de PenetraciónRed TeamingArchived
GitHubmegamansec/ssh-snake

SSH-Snake

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.

2.3k221hace 4 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Ver RepositorioSitio web

SSH-Snake: Travesía Automatizada de Redes Basada en SSH

🐍 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:

  1. En el sistema actual, encuentra cualquier clave privada SSH,
  2. En el sistema actual, encuentra cualquier host o destino (usuario@host) donde las claves privadas puedan ser aceptadas,
  3. Intenta SSH a todos los destinos usando todas las claves privadas descubiertas,
  4. Si se establece una conexión exitosa con un destino, repite los pasos #1 - #4 en el sistema conectado.

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.

Capturas de pantalla

Una captura de pantalla reducida de la salida de SSH-Snake en una red muy pequeña.

Un gráfico que visualiza la relación entre sistemas usando SSHLos 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).

Un gráfico que visualiza la relación entre sistemas usando SSHLos nodos verdes indican un host (sin nombre de usuario) que puede conectarse a sí mismo (host1<-->host1). Las aristas verdes indican que la conexión es bidireccional (host1<-->host2). El host gris en la esquina superior derecha es el host donde se ejecutó inicialmente el script.

Un gráfico que visualiza la relación entre sistemas usando SSHLos 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).

Uso y Ejecución de SSH-Snake

SSH-Snake se puede descargar o canalizar a bash:

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

o

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

Acerca de SSH-Snake

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, , , , , , , y , 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.

Características

  • SSH recursivo de un sistema a otro usando claves privadas SSH locales,
  • Travesía y propagación/replicación sin archivos del script SSH-Snake usando solo stdin y argumentos de bash a sistemas remotos,
  • Elevación automática de privilegios a root usando sudo si es posible,
  • Descubrimiento de archivos de clave privada SSH a partir de entradas de .bash_history,
  • Descubrimiento de claves privadas SSH a partir de archivos y carpetas de uso común,
  • Exfiltración de claves privadas SSH como salida del script,
  • Ejecución de comandos personalizados configurables en cada sistema,
  • Sistema modular plug-and-play para descubrir claves privadas y sistemas,
  • Detección de hosts a partir de rangos IP, últimos inicios de sesión, hosts conocidos, archivos de configuración SSH y más,
  • Capacidad de detectar cuándo un sistema ya ha sido escaneado o está en proceso de escaneo, de modo que una red como A->B->C también pueda descubrir C->A pero no regrese a A->B->C-A->B->C->A->B->...,
  • Capacidad de generar visualizaciones gráficas de una red a partir de la salida del script,
  • ... y más.

Configuración

SSH-Snake incluye algunas configuraciones generales que se pueden ajustar. Estas configuraciones están documentadas en SETTINGS.md#configuraciones-generales.

SSH-Snake también incluye una variedad de estrategias (funciones) configurables/plug-and-play que se pueden usar para descubrir claves privadas SSH en un sistema y descubrir hosts y destinos a los que intentar conectarse. Se han proporcionado valores predeterminados razonables, sin embargo, si deseas realizar un escaneo lo más exhaustivo posible, habilitar más técnicas de descubrimiento puede ayudar. Si un escaneo lleva mucho tiempo, deshabilitar algunas técnicas de descubrimiento puede ayudar. Con la excepción de una estrategia (find_ssh_keys), cada una de las estrategias se puede activar/desactivar. Estas están documentadas en SETTINGS.md#estrategias-de-descubrimiento-configurables.

Comprensión de la Salida

La salida cruda de SSH-Snake contiene una mezcla de información sobre claves privadas descubiertas, destinos y mensajes de error.

Se puede encontrar una explicación detallada sobre la salida completa de SSH-Snake en OUTPUT.md.

Se puede encontrar un ejemplo de salida en example-output.log.

Visualización de las Relaciones entre Sistemas

La salida de SSH-Snake se puede utilizar para crear gráficos/visualizaciones de la red que recorre el script.

Se puede encontrar una explicación detallada sobre cómo crear e interpretar imágenes/visualizaciones a partir de la salida de SSH-Snake en GRAPHICS.md.

Otras Herramientas

Además de la capacidad de crear visualizaciones de la red que recorre SSH-Snake, se proporcionan otras tres herramientas. A saber:

  1. forward-lookup-host.py: Dado un host o destino de origen, determina todos los sistemas a los que se puede acceder directa o indirectamente (es decir, a través de un sistema terciario).
  2. reverse-lookup-host.py: Dado un host o destino de destino, determina todos los sistemas que pueden acceder a él directa o indirectamente.
  3. shortest-path-create-chain.py: Dados el host o destino A y B, determina la ruta más corta que los conecta.

La tercera herramienta también genera un comando que se puede usar para conectarse del destino A al destino B. Por ejemplo:

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

Ruta más corta desde [email protected] hasta [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

Dado que el script es bastante grande, cargar el script en un here-document (lo que hace automáticamente porque el script es en realidad un Quine) hace que bash escriba en un archivo temporal (ya que tiene más de 65535 bytes).

Para reducir el tamaño de modo que permanezca 100% sin archivos, Snake.nocomments.sh tiene una versión con todos los comentarios, espacios en blanco innecesarios y líneas en blanco eliminados. Esto reduce el tamaño del archivo para que bash no cree el archivo temporal.

Errores / Problemas

Si encuentras algún error o problema relacionado con el script, por favor repórtalo como un issue de GitHub. Incluye tus ajustes de configuración.

Estoy particularmente interesado en cualquier salida interesante de [línea] asociada con errores que no hayan sido capturados por el script.

Limitaciones

  • Solo IPv4: Como todos los mejores programas, el script no soporta IPv6. No imagino que haya soporte para esto en un futuro cercano.

  • Solo Puerto 22: Se asume generalmente que SSH se ejecuta en el puerto 22.

  • GNU coreutils: El script depende en gran medida de GNU coreutils. No he determinado cuánto GNU-ismo (si es que hay) se utiliza en el script.

  • El script actualmente no busca sockets de agente SSH.

Descargar herramienta
hostname
ip
timeout
arp
ifconfig
ipconfig
xargs