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
Tunna — Tunna è un insieme di strumenti che incapsuleranno e tunnelleranno qualsiasi comunicazione TCP su HTTP. Può essere utilizzato per bypassare le restrizioni di rete in ambienti completamente protetti da firewall. | Kitploit
Strumenti/GitHubGitHub/secforce/tunna
Proxy Web e IntercettazioneEvasione IDS/IPSPenetration TestingRed Teaming
GitHubsecforce/tunna

Tunna

Tunna è un insieme di strumenti che incapsuleranno e tunnelleranno qualsiasi comunicazione TCP su HTTP. Può essere utilizzato per bypassare le restrizioni di rete in ambienti completamente protetti da firewall.

Vedi Repository
1.3k2805 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

Tunna

Tunna è un insieme di strumenti che incapsulano e tunnelano qualsiasi comunicazione TCP su HTTP. Può essere utilizzato per aggirare restrizioni di rete in ambienti completamente protetti da firewall.

v1.1 Versione Alpha

root@kitploit:~
				  _____                        
				 |_   _|   _ _ __  _ __   __ _ 
				   | || | | | '_ \| '_ \ / _` |
				   | || |_| | | | | | | | (_| |
				   |_| \__,_|_| |_|_| |_|\__,_|	
                                                 

                 Tunna 0.1, per tunnelare connessioni TCP su HTTP di Nikos Vassakis
                 http://www.secforce.co.uk	/ nikos.vassakis <at> secforce.com

################################################################################################################

SOMMARIO

root@kitploit:~
TLDR: Tunnelizza connessioni TCP su HTTP

In un ambiente completamente protetto da firewall (connessioni in entrata e in uscita limitate – tranne la porta del server web)

La webshell può essere utilizzata per connettersi a qualsiasi servizio sull'host remoto. Si tratta di una connessione locale su una porta locale dell'host remoto e dovrebbe essere consentita dal firewall.

La webshell legge i dati dalla porta del servizio, li incapsula su HTTP e li invia come risposta HTTP al proxy locale.

Il proxy locale decapsula e scrive i dati sulla propria porta locale, alla quale si connette il programma client.

Quando il proxy locale riceve dati sulla porta locale, li invia alla webshell come richiesta POST HTTP.

La webshell legge i dati dalla richiesta POST HTTP e li inserisce sulla porta del servizio.

E si ripete --^

Solo la porta del server web deve essere aperta (tipicamente 80/443) L'intera comunicazione (esternamente) avviene tramite il protocollo HTTP

UTILIZZO

python proxy.py -u <urlremoto> -l <portalocale> [opzioni]

Opzioni

--help, -h mostra questo messaggio di aiuto ed esci

--url=URL, -u URL url della webshell remota

--lport=PORTA_LOCALE, -l PORTA_LOCALE porta di ascolto locale

--verbose, -v Verbose (mostra la dimensione dei pacchetti)

--buffer=DIMENSIONE_BUFFER, -b DIMENSIONE_BUFFER* dimensione della richiesta HTTP (alcune webshell hanno limitazioni sulla dimensione)

Nessuna opzione SOCKS

Le opzioni vengono ignorate se viene utilizzato un proxy SOCKS

--no-socks, -n Non utilizzare il proxy SOCKS

--rport=PORTA_REMOTA, -r PORTA_REMOTA porta remota del servizio a cui deve connettersi la webshell

--addr=IP_REMOTO, -a IP_REMOTO indirizzo a cui deve connettersi la webshell remota (predefinito = 127.0.0.1)

Opzioni proxy upstream

Tunnela la connessione attraverso un proxy locale

--up-proxy=PROXY_UP, -x PROXY_UP Proxy upstream (http://proxyserver.com:3128)

--auth, -A Il proxy upstream richiede autenticazione

Opzioni avanzate

--ping-interval=INTERVALLO_PING, -q INTERVALLO_PING intervallo del thread di ping webshprx (predefinito = 0.5)

--start-ping, -s Avvia prima il thread di ping – alcuni servizi inviano dati per primi (es. SSH)

--cookie, -C Cookie di richiesta

--authentication, -t Autenticazione di base

  • Consulta le limitazioni

Esempi di utilizzo: python proxy.py -u http://10.3.3.1/conn.aspx -l 8000 -v

root@kitploit:~
# Questo avvierà un server proxy SOCKS locale sulla porta 8000
# Questa connessione verrà incapsulata su HTTP e decapsulata sul server remoto

python proxy.py -u http://10.3.3.1/conn.aspx -l 8000 -x https://192.168.1.100:3128 -A -v

# Questo avvierà un server proxy SOCKS locale sulla porta 8000
# Si connetterà attraverso un proxy locale (https://192.168.1.100:3128) che richiede autenticazione
# alla webshell Tunna remota

python proxy.py -u http://10.3.3.1/conn.aspx -l 4444 -r 3389 -b 8192 -v --no-socks

# Questo avvierà una connessione tra la webshell e il servizio RDP (3389) dell'host remoto
# Il client RDP può connettersi sulla porta locale 4444
# Questa connessione verrà incapsulata su HTTP

Prerequisiti

root@kitploit:~
Possibilità di caricare una webshell sul server remoto

LIMITAZIONI / BUG NOTI / SOLUZIONI EMPIRICHE

root@kitploit:~
Questo è un codice proof-of-concept e potrebbe causare un DoS del server.
	Sono stati fatti tutti gli sforzi per pulire dopo l'esecuzione o in caso di errore (nessuna garanzia)

Basato su test locali: 		
	* Il buffer JSP deve essere limitato (opzione buffer):
			4096 ha funzionato su Linux Apache Tomcat
			1024 ha funzionato su XAMPP Apache Tomcat (lento)
			* Oltre ciò si sono verificati problemi con byte mancanti sul socket remoto
			es: ruby proxy.rb -u http://10.3.3.1/conn.jsp -l 4444 -r 3389 -b 1024 -v

	* Socket non abilitati per impostazione predefinita:
		php windows (IIS + PHP)
		XAMPP Windows
		php linux (server web integrato PHP/apache + PHP)
	Se ricevi l'errore Uncaught Error: Call to undefined function socket_create()
	vedi https://stackoverflow.com/questions/6137823/fatal-error-call-to-undefined-function-socket-create
	
	
	* Ritorni a capo sulle webshell (al di fuori del codice): 
		vengono inviati nelle risposte / scritti sul socket locale → corrompono i pacchetti

	* Webshell PHP per windows: la funzione loop causa DoS sul socket remoto: 
		aggiunta funzione sleep → funziona ma un po' lento 
	* La webshell PHP necessita della rimozione dei caratteri di nuova riga alla fine del file (dopo "?>")
		poiché questi verrebbero inviati in ogni risposta e confondono Tunna 
	

FILE

root@kitploit:~
Webshell:
	conn.jsp	Testato su Apache Tomcat (windows + linux)
	conn.aspx	Testato su IIS 6+8 (windows server 2003/2012) 
	conn.php	Testato su LAMP + XAMPP + IIS (windows + linux)

WebServer:
	webserver.py	Testato con Python 2.6.5

Proxy:
	proxy.py	Testato con Python 2.6.5

Dettagli Tecnici

Decisioni architetturali

root@kitploit:~
I dati vengono inviati grezzi nel corpo della richiesta HTTP POST (nessuna variabile POST)

Le istruzioni / configurazione vengono inviate alla webshell come parametri URL (HTTP GET)
I dati vengono inviati nel corpo HTTP (HTTP POST)

Websocket non utilizzati: non supportati per impostazione predefinita dalla maggior parte dei server web
Le risposte HTTP asincrone non sono realmente possibili
	Il proxy interroga costantemente il server (predefinito 0.5 secondi)

FASE DI INIZIALIZZAZIONE

Il 1° pacchetto avvia una sessione con la webshell – ottiene un cookie come risposta es: http://webserver/conn.ext?proxy

Il 2° pacchetto invia le opzioni di configurazione della connessione alla webshell es: http://webserver/conn.ext?proxy&port=4444&ip=127.0.0.1

root@kitploit:~
IP e porta a cui deve connettersi la webshell
Questa è una richiesta thread:
	In php questa richiesta entrerà in un ciclo infinito 
	per mantenere attiva la connessione socket della webshell
	In altre webshell viene ricevuto [OK]

CLIENT TUNNA

Verrà creato un socket locale a cui si connetterà il programma client Una volta che il client è connesso, viene avviato il thread di ping e inizia l'esecuzione. Qualsiasi dato sul socket (dal client) viene letto e inviato come richiesta HTTP POST Qualsiasi dato sul socket della webshell viene inviato come risposta alla richiesta POST

THREAD DI PING

Poiché le risposte HTTP non possono essere asincrone. Questo thread esegue richieste HTTP GET sulla webshell a un intervallo (predefinito 0.5 secondi) Se la webshell ha dati da inviare, li invia (anche) come risposta a questa richiesta Altrimenti invia una risposta vuota

In generale: I dati dal proxy locale vengono inviati con HTTP POST Ci sono richieste GET ogni 0.5 secondi per interrogare la webshell per dati Se ci sono dati sul lato della webshell, vengono inviati come risposta a una di queste richieste

WEBSHELL

La webshell si connette a un socket sull'host locale o remoto. Qualsiasi dato scritto sul socket viene rinviato al proxy come risposta a una richiesta (POST/GET) Qualsiasi dato ricevuto con una POST viene scritto sul socket.

NOTE

Tutte le richieste devono avere il parametro URL "proxy" impostato per essere gestite dalla webshell (http://webserver/conn.ext?proxy)

ALL'USCITA / IN CASO DI ERRORE

Termina tutti i thread e chiude il socket locale Invia proxy&close alla webshell: Termina i thread remoti e chiude il socket

SOCKS

Il supporto SOCKS è un modulo aggiuntivo per Tunna. Localmente è un thread separato che gestisce le richieste di connessione e il traffico, aggiunge un'intestazione che specifica la porta e la dimensione del pacchetto e lo inoltra a Tunna. Tunna lo invia al server web remoto, rimuove le intestazioni HTTP e inoltra il pacchetto al proxy SOCKS remoto. Il proxy SOCKS remoto avvia la connessione e mappa la porta ricevuta sulla porta locale. Se il proxy SOCKS remoto riceve dati dal servizio, consulta la tabella di mapping e trova la porta a cui rispondere, aggiunge la porta come intestazione in modo che il proxy SOCKS locale sappia dove inoltrare i dati. Qualsiasi traffico dalla porta ricevuta verrà inoltrato alla porta locale e viceversa.

COPYRIGHT & ESCLUSIONE DI RESPONSABILITÀ

Tunna, Incapsulamento TCP su HTTP Nikos Vassakis Copyright (C) 2014 SECFORCE.

Questo strumento è destinato esclusivamente a scopi legali.

Questo programma è software libero: puoi ridistribuirlo e/o modificarlo secondo i termini della Licenza Pubblica Generale GNU come pubblicata dalla Free Software Foundation, versione 3 della licenza o (a tua scelta) qualsiasi versione successiva.

Questo programma è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza nemmeno la garanzia implicita di COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO. Vedi la Licenza Pubblica Generale GNU per maggiori dettagli.

Dovresti aver ricevuto una copia della Licenza Pubblica Generale GNU insieme a questo programma. In caso contrario, visita http://www.gnu.org/licenses/.

Scarica lo strumento