
SSH-Snake è uno script auto-propagante, auto-replicante e senza file che automatizza il compito di post-sfruttamento della scoperta di chiavi private SSH e host.
🐍 SSH-Snake è un potente strumento progettato per eseguire il traversal automatico della rete utilizzando chiavi private SSH scoperte sui sistemi, con l'obiettivo di creare una mappa completa di una rete e delle sue dipendenze, identificando fino a che punto una rete può essere compromessa utilizzando SSH e chiavi private SSH a partire da un sistema specifico.
SSH-Snake può rivelare automaticamente la relazione tra sistemi connessi tramite SSH, cosa che normalmente richiederebbe un'enorme quantità di tempo e sforzo per essere eseguita manualmente.
In altre parole, SSH-Snake esegue automaticamente e ricorsivamente i seguenti compiti:
user@host) per cui le chiavi private possono essere accettate,È completamente auto-replicante e auto-propagante — e completamente fileless. In molti modi, SSH-Snake è in realtà un worm: si replica e si diffonde da un sistema all'altro il più lontano possibile.
Invece di saltare manualmente tra sistemi con chiavi SSH come in un gioco di Super Mario, lascia che SSH-Snake faccia il lavoro per te.
Sebbene questo strumento sia destinato a scopi di hacking, anche gli amministratori di sistema possono usarlo per comprendere meglio la propria infrastruttura e rete. Se si desidera disabilitare la stampa delle chiavi private trovate, commentare questa riga di codice.
Per un'analisi approfondita di come funziona realmente questo script, dettagli tecnici, scoperte interessanti, decisioni di progettazione, benchmarking e lezioni apprese, consulta questo post del blog. Questo software è stato scritto da Joshua Rogers.
Una schermata ridotta dell'output di SSH-Snake in una rete molto piccola. |
|---|
I nodi blu indicano che la destinazione può connettersi a se stessa (user@host<-->user@host). Gli spigoli rossi indicano che la connessione è bidirezionale (user1@host1<-->user2@host2). |
|---|
SSH-Snake può essere scaricato o reindirizzato in bash:
wget https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh
bash ./Snake.nocomments.sh
oppure
curl https://raw.githubusercontent.com/MegaManSec/SSH-Snake/main/Snake.nocomments.sh | bash
SSH-Snake emula perfettamente ciò che un attaccante umano farebbe per scoprire chiavi private SSH e destinazioni a cui connettersi. Scritto interamente in Bash, opera con un insieme minimo di dipendenze comunemente disponibili sui principali sistemi Linux (e MacOS): bash, ssh, coreutils, awk, uniq, sort, grep, tr, find e cat. È richiesto getent OPPURE dscacheutil. sed è richiesto solo per il primissimo sistema. Allo stesso modo, sudo, hostname, ip, timeout, arp, ifconfig, ipconfig e xargs possono essere utilizzati, ma non sono richiesti (e lo script gestisce con garbo i casi in cui non siano presenti). Se viene scoperto un sistema senza uno dei pacchetti richiesti, fallisce con garbo, avvisando l'utente che la scansione non può continuare su quel sistema (e torna indietro, proseguendo dal sistema precedente).
SSH-Snake è completamente fileless: dopo che l'utente esegue lo script, questo viene passato alla bash delle destinazioni tramite stdin e argomenti bash (via SSH). Non esiste alcuna traccia materiale dello script su nessuno dei sistemi scansionati: l'unica prova dell'esecuzione dello script è nell'albero dei processi e nella sostanziale quantità di tentativi SSH non validi che inevitabilmente si verificheranno.
SSH-Snake adotta un approccio depth-first alla scoperta: una volta connesso a un sistema, tenta di connettersi ulteriormente da quel sistema prima di tornare indietro.
Il nome SSH-Snake deriva dal fatto che l'output dello script sembra un serpente che striscia su e giù per la rete. Tuttavia, a differenza del gioco Snake, SSH-Snake non muore quando si morde la coda (si connette a un sistema già scansionato o in fase di scansione): stamperà semplicemente come si è connesso lì come di consueto, ma tornerà indietro e non riesaminerà la destinazione (per evitare ricorsione infinita).
SSH-Snake è stato testato su varie versioni di Linux e MacOS (con Homebrew Bash installato). Se si incontra un sistema operativo basato su Linux con cui non è compatibile, si prega di inviare una segnalazione.
.bash_history,SSH-Snake viene fornito con alcune impostazioni generali che possono essere configurate. Queste impostazioni sono documentate in SETTINGS.md#general-settings.