Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
SSH-Snake — 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. | Kitploit
Strumenti/GitHubGitHub/megamansec/ssh-snake
Escalation di PrivilegiRicognizioneMappatura della ReteMovimento LateraleRaccolta InformazioniPost-ExploitPenetration TestingRed TeamingArchived
GitHubmegamansec/ssh-snake

SSH-Snake

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.

2.3k2214 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi RepositorySito web

SSH-Snake: Traversal di Rete Automatico Basato su SSH

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

  1. Sul sistema corrente, trova tutte le chiavi private SSH,
  2. Sul sistema corrente, trova tutti gli host o le destinazioni (user@host) per cui le chiavi private possono essere accettate,
  3. Tenta di connettersi tramite SSH a tutte le destinazioni usando tutte le chiavi private trovate,
  4. Se la connessione a una destinazione ha successo, ripete i passaggi #1 - #4 sul sistema a cui ci si è connessi.

È 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.

Schermate

Una schermata ridotta dell'output di SSH-Snake in una rete molto piccola.

Un grafico che visualizza la relazione tra sistemi tramite SSHI 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).

Un grafico che visualizza la relazione tra sistemi tramite SSHI nodi verdi indicano un host (senza nome utente) che può connettersi a se stesso (host1<-->host1). Gli spigoli verdi indicano che la connessione è bidirezionale (host1<-->host2). L'host grigio nell'angolo in alto a destra è l'host su cui lo script è stato inizialmente eseguito.

Un grafico che visualizza la relazione tra sistemi tramite SSHI 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).

Utilizzo ed Esecuzione di SSH-Snake

SSH-Snake può essere scaricato o reindirizzato in bash:

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

oppure

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

Informazioni su SSH-Snake

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

Caratteristiche

  • Connessione SSH ricorsiva da un sistema all'altro utilizzando chiavi private SSH locali,
  • Traversal e propagazione/replicazione fileless dello script SSH-Snake utilizzando solo stdin e argomenti bash verso sistemi remoti,
  • Elevazione automatica dei privilegi a root utilizzando sudo se possibile,
  • Scoperta di file di chiavi private SSH dalle voci di .bash_history,
  • Scoperta di chiavi private SSH da file e cartelle comunemente usati,
  • Esfiltrazione di chiavi private SSH come output dello script,
  • Esecuzione di comandi personalizzati configurabili su ogni sistema,
  • Sistema modulare plug-and-play per scoprire chiavi private e sistemi,
  • Rilevamento di host da intervalli IP, ultimi accessi, host conosciuti, file di configurazione SSH e altro,
  • Capacità di rilevare quando un sistema è già stato scansionato o è in fase di scansione, in modo che una rete come A->B->C possa anche scoprire C->A ma non regredisca a A->B->C-A->B->C->A->B->....,
  • Capacità di generare visualizzazioni grafiche di una rete a partire dall'output dello script,
  • ... e altro ancora.

Impostazioni

SSH-Snake viene fornito con alcune impostazioni generali che possono essere configurate. Queste impostazioni sono documentate in SETTINGS.md#general-settings.

SSH-Snake offre anche una varietà di strategie configurabili/plug-and-play (funzioni) che possono essere utilizzate per scoprire chiavi private SSH su un sistema e trovare host e destinazioni a cui tentare di connettersi. Sono forniti valori predefiniti ragionevoli, tuttavia se si desidera eseguire una scansione il più approfonditamente possibile, abilitare più tecniche di scoperta può aiutare. Se una scansione richiede molto tempo, disabilitare alcune tecniche di scoperta può aiutare. Con l'eccezione di una strategia (find_ssh_keys), ciascuna delle strategie può essere attivata/disattivata. Sono documentate in SETTINGS.md#configurable-discovery-strategies.

Comprensione dell'Output

L'output grezzo di SSH-Snake contiene un mix di informazioni sulle chiavi private scoperte, destinazioni e messaggi di errore.

Una spiegazione dettagliata dell'output completo di SSH-Snake si trova in OUTPUT.md.

Un esempio di output si trova in example-output.log.

Visualizzazione delle Relazioni tra Sistemi

L'output di SSH-Snake può essere utilizzato per creare grafici/visualizzazioni della rete attraversata dallo script.

Una spiegazione dettagliata su come creare e interpretare immagini/visualizzazioni dall'output di SSH-Snake si trova in GRAPHICS.md.

Altri Strumenti

Oltre alla capacità di creare visualizzazioni della rete attraversata da SSH-Snake, vengono forniti altri tre strumenti. Ovvero:

  1. forward-lookup-host.py: Dato un host o una destinazione di origine, determina tutti i sistemi a cui è possibile accedere direttamente o indirettamente (cioè attraverso un sistema terziario).
  2. reverse-lookup-host.py: Dato un host o una destinazione di destinazione, determina tutti i sistemi che possono accedervi direttamente o indirettamente.
  3. shortest-path-create-chain.py: Dati l'host o la destinazione A e B, determina il percorso più breve che li collega.

Il terzo strumento genera anche un comando che può essere utilizzato per connettersi dalla destinazione A alla destinazione B. Ad esempio:

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

Shortest path from [email protected] to [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

Poiché lo script è piuttosto grande, caricare lo script in un here-document (cosa che fa automaticamente perché lo script è in realtà un Quine) fa sì che bash scriva in un file temporaneo (poiché è maggiore di 65535 byte).

Per ridurre le dimensioni in modo che rimanga 100% fileless, Snake.nocomments.sh ha una versione con tutti i commenti, gli spazi bianchi non necessari e le righe vuote rimossi. Questo riduce le dimensioni del file in modo che il file temporaneo non venga creato da bash.

Bug / Problemi

Se si incontrano bug o problemi relativi allo script, si prega di segnalarli come issue su GitHub. Si prega di includere le proprie impostazioni di configurazione.

Sono particolarmente interessato a eventuali output [line] interessanti associati a errori che non sono stati intercettati dallo script.

Limitazioni

  • Solo IPv4: Come tutti i migliori programmi, lo script non supporta IPv6. Non immagino che ci sarà supporto a breve.
  • Solo Porta 22: Si presume generalmente che SSH sia in esecuzione sulla porta 22.
  • GNU coreutils: Lo script fa molto affidamento su GNU coreutils. Non ho determinato quanto (se presente) GNU-ismo sia utilizzato nello script.
  • Lo script attualmente non cerca socket dell'agent SSH.
Scarica lo strumento
ip
timeout
arp
ifconfig
ipconfig
xargs