
SSH-Snake est un script sans fichier, auto-propagateur et auto-réplicant qui automatise la tâche de post-exploitation de découverte de clés privées SSH et d'hôtes.
🐍 SSH-Snake est un outil puissant conçu pour effectuer une traversée automatique du réseau en utilisant les clés privées SSH découvertes sur les systèmes, dans le but de créer une carte complète d'un réseau et de ses dépendances, identifiant dans quelle mesure un réseau peut être compromis en utilisant SSH et les clés privées SSH à partir d'un système particulier.
SSH-Snake peut automatiquement révéler les relations entre les systèmes connectés via SSH, ce qui prendrait normalement un temps et un effort considérables pour être effectué manuellement.
En d'autres termes, SSH-Snake effectue automatiquement et récursivement les tâches suivantes :
user@host) pour lesquels les clés privées pourraient être acceptées,Il est totalement auto-réplicatif et auto-propageant -- et complètement sans fichier. À bien des égards, SSH-Snake est en fait un ver : il se réplique et se propage d'un système à un autre aussi loin que possible.
Au lieu de sauter manuellement entre les systèmes avec des clés SSH comme dans un jeu Super Mario, laissez SSH-Snake faire le travail à votre place.
Bien que cet outil soit destiné à des fins de piratage, les administrateurs système peuvent également l'utiliser pour mieux comprendre leur infrastructure et leur réseau. Si vous souhaitez désactiver l'affichage des clés privées découvertes, commentez cette ligne de code.
Pour un examen approfondi du fonctionnement réel de ce script, des détails techniques, des découvertes intéressantes, des décisions de conception, des benchmarks et des leçons apprises, consultez cet article de blog. Ce logiciel a été écrit par Joshua Rogers.
Une capture d'écran réduite de la sortie de SSH-Snake dans un très petit réseau. |
|---|
Les nœuds bleus indiquent que la destination peut se connecter à elle-même (user@host<-->user@host). Les arêtes rouges indiquent que la connexion est bidirectionnelle (user1@host1<-->user2@host2). |
|---|
SSH-Snake peut être téléchargé ou redirigé vers 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
SSH-Snake émule de manière transparente ce qu'un adversaire humain ferait pour découvrir les clés privées SSH et les destinations où elles peuvent être utilisées pour se connecter. Entièrement écrit en Bash, il fonctionne avec un ensemble minimal de dépendances généralement disponibles sur les principaux systèmes Linux (et MacOS) : bash, ssh, coreutils, awk, uniq, sort, grep, tr, find et cat. getent OU dscacheutil est requis. sed n'est requis que pour le tout premier système. De même, sudo, hostname, ip, timeout, arp, ifconfig, ipconfig et xargs peuvent également être utilisés, mais ils ne sont pas requis (et le script gère gracieusement les cas où ils ne sont pas présents). Si un système est découvert sans aucun des paquets requis, il échoue gracieusement, alertant l'utilisateur que l'analyse n'a pas pu continuer sur ce système particulier (et fait marche arrière, continuant à partir du système précédent.)
SSH-Snake est totalement sans fichier : après que l'utilisateur a exécuté le script, il est passé au bash des destinations via stdin et les arguments bash (via SSH). Aucune trace matérielle du script n'existe sur aucun des systèmes scannés : la seule preuve de l'exécution du script est dans l'arbre des processus et le nombre substantiel de tentatives SSH invalides qui se produiront inévitablement.
SSH-Snake adopte une approche en profondeur d'abord pour la découverte : une fois qu'il se connecte à un système, il essaie de se connecter plus loin à partir de ce système avant de faire marche arrière.
Le nom SSH-Snake vient du fait que la sortie du script ressemble à un serpent qui serpente de haut en bas du réseau. Cependant, contrairement au jeu Snake, SSH-Snake ne mourra pas lorsqu'il se mord la queue (se connecte à un système qu'il a déjà scanné ou qu'il est en train de scanner) : il affichera simplement comment il s'est connecté là-bas normalement, mais reviendra et ne re-scannera pas la destination (afin d'éviter une récursion infinie).
SSH-Snake a été testé sur diverses distributions Linux et MacOS (avec Homebrew Bash installé). Si vous rencontrez un système d'exploitation basé sur Linux avec lequel il n'est pas compatible, veuillez soumettre un rapport.
.bash_history,SSH-Snake est fourni avec certains paramètres généraux qui peuvent être configurés. Ces paramètres sont documentés dans SETTINGS.md#general-settings.