Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
iodine — Instrada dati IPv4 attraverso server DNS per bypassare le restrizioni del firewall e fornire accesso di rete occulto per i test di penetrazione. | Kitploit
Strumenti/GitHubGitHub/yarrick/iodine
Evasione IDS/IPSEsfiltrazione DatiSicurezza di RetePenetration TestingCommand and ControlRed TeamingStrumento di Accesso RemotoTop in Esfiltrazione Dati n.2Top in Evasione IDS/IPS n.13
8.0k5981062 giorni faRevisionato da Kitploit
GitHub
yarrick/iodine

iodine

Instrada dati IPv4 attraverso server DNS per bypassare le restrizioni del firewall e fornire accesso di rete occulto per i test di penetrazione.

Vedi RepositorySito web

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

iodine - https://code.kryo.se/iodine

Questo è un software che consente di incapsulare dati IPv4 attraverso un server DNS. Può essere utile in diverse situazioni in cui l'accesso a Internet è protetto da firewall, ma le query DNS sono consentite.

COMPILAZIONE

Per compilare iodine è necessario meson. Esegui i seguenti comandi per compilare all'interno della directory build:

meson setup build
cd build
ninja

Per compilare ed eseguire i test è necessaria la libreria check. Avviali eseguendo ninja test all'interno della directory di build.

AVVIO RAPIDO

Provalo all'interno della tua LAN! Segui questi semplici passaggi:

  • Sul tuo server, esegui: ./iodined -f 10.0.0.1 test.com. Se utilizzi già la rete 10.0.0.0, usa un'altra rete interna come 172.16.0.0.
  • Inserisci una password.
  • Sul client, esegui: ./iodine -f -r 192.168.0.1 test.com. Sostituisci 192.168.0.1 con l'indirizzo IP del tuo server.
  • Inserisci la stessa password.
  • Ora il client ha l'IP del tunnel 10.0.0.2 e il server ha 10.0.0.1.
  • Prova a fare ping tra i due attraverso il tunnel.
  • Fatto! :)

Per utilizzarlo effettivamente attraverso un nameserver di relay, vedi sotto.

COME USARLO

Nota: server e client devono parlare esattamente lo stesso protocollo. Nella maggior parte dei casi, questo significa eseguire la stessa versione di iodine. Sfortunatamente, implementare la compatibilità di protocollo all'indietro e in avanti di solito non è fattibile.

Lato server

Per usare questo tunnel, hai bisogno del controllo su un dominio reale (come mydomain.com), e di un server con un indirizzo IP pubblico su cui eseguire iodined. Se questo server esegue già un programma DNS, cambia la sua porta di ascolto e poi usa l'opzione -b di iodined per lasciare che iodined inoltri le richieste DNS. (Nota che questa procedura non è consigliata in ambienti di produzione, perché l'inoltro DNS di iodined non è completamente trasparente, ad esempio i trasferimenti di zona non funzioneranno.) In alternativa puoi inoltrare il sottodominio dal tuo server DNS a iodined che deve quindi essere eseguito su una porta diversa (-p).

Poi, delega un sottodominio (ad esempio, t1.mydomain.com) al server iodined. Se usi BIND per il tuo dominio, aggiungi due righe come queste al file di zona:

t1		IN	NS	t1ns.mydomain.com.		; nota il punto!
t1ns		IN	A	10.15.213.99

La riga NS è tutto ciò che serve per instradare le query per il sottodominio t1 al server t1ns. Usiamo un nome breve per il sottodominio, per mantenere quanto più spazio possibile disponibile per il traffico dati. Alla fine della riga NS c'è il nome del tuo server iodined. Può essere qualsiasi nome, che punta ovunque, ma in questo caso è facilmente mantenuto nello stesso file di zona. Deve essere un nome (non un indirizzo IP), e quel nome stesso deve avere un record A (non un CNAME).

Se il tuo server iodined ha un IP dinamico, usa un provider di DNS dinamico. Semplicemente punta la riga NS ad esso, e ometti la riga A:

t1		IN	NS	myname.mydyndnsprovider.com.	; nota il punto!

Poi ricarica o riavvia il tuo programma nameserver. Ora qualsiasi query DNS per domini che terminano in t1.mydomain.com sarà inviata al tuo server iodined.

Infine avvia iodined sul tuo server. Il primo argomento è l'indirizzo IP all'interno del tunnel, che può essere di qualsiasi range che non usi ancora (per esempio 192.168.99.1), e il secondo argomento è il dominio assegnato (in questo caso t1.mydomain.com). Usare l'opzione -f manterrà iodined in esecuzione in primo piano, il che aiuta durante i test. iodined aprirà un'interfaccia virtuale ("tun device"), e inizierà anche ad ascoltare le query DNS sulla porta UDP 53. Inserisci una password sulla riga di comando (-P pass) o dopo che il server è stato avviato. Ora tutto è pronto per il client.

Se c'è la possibilità che userai un tunnel iodine da ambienti inaspettati, avvia iodined con l'opzione -c. Riga di comando risultante in questa situazione di esempio:

./iodined -f -c -P secretpassword 192.168.99.1 t1.mydomain.com

Lato client

Tutta la configurazione è fatta, basta avviare iodine. Accetta uno o due argomenti, il primo è il server DNS di relay locale (opzionale) e il secondo è il dominio che hai usato (t1.mydomain.com). Se non specifichi il primo argomento, verrà consultata l'impostazione DNS corrente del sistema.

Se le query DNS sono consentite verso qualsiasi computer, puoi dare direttamente l'indirizzo del server iodined come primo argomento (nell'esempio: t1ns.mydomain.com o 10.15.213.99). In quel caso, può anche accadere che qualsiasi traffico sia consentito verso la porta DNS (53 UDP) di qualsiasi computer. Iodine lo rileverà, e passerà al tunneling UDP raw se possibile. Per forzare il tunneling DNS in ogni caso, usa l'opzione -r (particolarmente utile quando si testa all'interno della propria rete).

L'interfaccia del tunnel del client otterrà un IP vicino a quello del server (in questo caso 192.168.99.2 o .3 ecc.) e una MTU adeguata. Inserisci la stessa password del server, sia come opzione da riga di comando che dopo che il client è stato avviato. Usare l'opzione -f manterrà il client iodine in esecuzione in primo piano.

Riga di comando risultante in questa situazione di esempio, aggiungendo -r forza il tunneling DNS anche se il tunneling UDP raw sarebbe possibile:

./iodine -f -P secretpassword t1.mydomain.com

Da entrambi i lati, ora dovresti essere in grado di fare ping all'indirizzo IP all'altro capo del tunnel. In questo caso, ping 192.168.99.1 dal client iodine, e 192.168.99.2 dal server iodine.

INFO VARIE

IPv6

I dati all'interno del tunnel sono solo IPv4.

Il server ascolta sia IPv4 che IPv6 per le richieste in ingresso per impostazione predefinita. Usa le opzioni -4 o -6 per ascoltare solo su un protocollo. La modalità raw verrà tentata sullo stesso protocollo usato per il login.

Il client può usare nameserver IPv4 o IPv6 per connettersi a iodined. I nameserver di relay tradurranno automaticamente tra i protocolli se necessario. Usa le opzioni -4 o -6 per forzare il client a usare una versione IP specifica per le sue query DNS.

Se il tuo server è in ascolto su IPv6 ed è raggiungibile, aggiungi un record AAAA per esso alla tua configurazione DNS. Estendendo l'esempio sopra apparirebbe così:

t1		IN	NS	t1ns.mydomain.com.		; nota il punto!
t1ns		IN	A	10.15.213.99
t1ns		IN	AAAA	2001:db8::1001:99

Routing

È possibile instradare tutto il traffico attraverso il tunnel DNS. Per fare questo, prima aggiungi una route host verso il nameserver usato da iodine attraverso l'interfaccia wired/wireless con il gateway predefinito come gateway. Poi sostituisci il gateway predefinito con l'indirizzo IP del server iodined all'interno del tunnel DNS, e configura il server per fare NAT.

Tuttavia, nota che il traffico dati incapsulato non è affatto cifrato, e può essere letto e modificato da parti esterne relativamente facilmente. Per la massima sicurezza, esegui una VPN attraverso il tunnel DNS (=doppio tunneling), o usa l'accesso secure shell (SSH), possibilmente con port forwarding. Quest'ultimo può anche essere usato per la navigazione web, quando esegui un proxy web (per esempio Privoxy) sul tuo server.

Test

Il server iodined risponde alle richieste NS inviate per i sottodomini del dominio del tunnel. Se il tuo sottodominio iodined è t1.mydomain.com, invia una richiesta NS per foo123.t1.mydomain.com per vedere se la delega funziona. dig è un buon strumento per questo:

% dig -t NS foo123.t1.mydomain.com
ns.io.citronna.de.

Inoltre, il server iodined risponderà alle richieste che iniziano con 'z' per qualsiasi dei tipi di richiesta supportati, per esempio:

dig -t TXT z456.t1.mydomain.com
dig -t SRV z456.t1.mydomain.com
dig -t CNAME z456.t1.mydomain.com
Scarica lo strumento