
Script Bash sans fichier et auto-propageant qui découvre récursivement les clés privées SSH et les hôtes accessibles, puis parcourt le réseau via SSH pour cartographier les chemins de compromission.
🐍 SSH-Snake est un outil puissant conçu pour effectuer une traversée de réseau automatique à l'aide des clés privées SSH découvertes sur les systèmes, dans le but de créer une cartographie complète d'un réseau et de ses dépendances, en identifiant dans quelle mesure un réseau peut être compromis à l'aide de SSH et de clés privées SSH à partir d'un système donné.
SSH-Snake peut révéler automatiquement les relations entre les systèmes connectés via SSH, ce qui nécessiterait normalement une quantité considérable de temps et d'efforts pour être réalisé manuellement.
En d'autres termes, SSH-Snake effectue automatiquement et récursivement les tâches suivantes :
user@host) où les clés privées peuvent être acceptées,Il est entièrement auto-répliquant et auto-propageant -- et entièrement sans fichier. À bien des égards, SSH-Snake est en réalité un ver : il se réplique et se propage d'un système à un autre aussi loin qu'il le peut.
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 pour vous.
Bien que cet outil soit destiné à des fins de hacking, 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 soit être téléchargé, soit être transmis par pipe à 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 couramment 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 l'un des paquets requis, il échoue gracieusement, en alertant l'utilisateur que l'analyse ne pouvait pas continuer sur ce système particulier (et revient en arrière, en continuant depuis le système précédent).
SSH-Snake est entièrement sans fichier : après que l'utilisateur a exécuté le script, celui-ci est transmis au bash des destinations via stdin et les arguments de bash (via SSH). Aucune preuve matérielle du script n'existe sur les systèmes analysés : la seule preuve de l'exécution du script se trouve dans l'arborescence des processus, et la quantité substantielle 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 tente de se connecter plus loin depuis ce système avant de revenir en arrière.
Le nom SSH-Snake vient du fait que la sortie du script ressemble à un serpent qui se glisse de haut en bas dans le réseau. Cependant, contrairement au jeu Snake, SSH-Snake ne mourra pas lorsqu'il se mordra la queue (se connecte à un système qu'il a déjà analysé ou qu'il est en train d'analyser) : il imprimera simplement comment il s'est connecté là-bas comme d'habitude, mais reviendra et ne réanalysera pas la destination (afin d'éviter une récursion infinie).
SSH-Snake a été testé sur diverses distributions de Linux et sur MacOS (avec Homebrew Bash installé). Si vous rencontrez un OS basé sur Linux avec lequel il n'est pas compatible, veuillez soumettre un rapport.
.bash_history,SSH-Snake est livré avec quelques paramètres généraux qui peuvent être configurés. Ces paramètres sont documentés dans SETTINGS.md#general-settings.