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
phantun — Trasforma flussi UDP in (falsi) flussi TCP che possono attraversare firewall/NAT di Layer 3 e Layer 4 (NAPT). | Kitploit
Strumenti/GitHubGitHub/dndx/phantun
Evasione IDS/IPSSicurezza di Rete
GitHubdndx/phantun

phantun

Trasforma flussi UDP in (falsi) flussi TCP che possono attraversare firewall/NAT di Layer 3 e Layer 4 (NAPT).

Vedi Repository
2.4k21710 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

Phantun

Un obfuscator UDP-to-TCP leggero e veloce.

GitHub Workflow Status docs.rs

Indice

  • Phantun
  • Ultima versione
  • Panoramica
  • Utilizzo
    • 1. Abilitare l'inoltro IP del kernel
    • 2. Aggiungere le regole firewall necessarie
      • Client
        • Usando nftables
        • Usando iptables
      • Server
        • Usando nftables
        • Usando iptables
    • 3. Eseguire i binari di Phantun come non-root (Opzionale)
    • 4. Avviare il demone Phantun
      • Server
      • Client
  • Overhead MTU
    • Calcolo MTU per WireGuard
  • Compatibilità delle versioni
  • Documentazione
  • Prestazioni
  • Piani futuri
  • Confronto con udp2raw
  • Licenza

Ultima versione

v0.8.1

Supporto per architettura MIPS in Phantun

Rust fornisce solo supporto Tier 3 per le piattaforme basate su MIPS dal 2023. Le build MIPS di Phantun sono quindi compilate usando il toolchain nightly di Rust e fornite solo su base del miglior sforzo.

Panoramica

Phantun è un progetto che offusca pacchetti UDP in connessioni TCP. Mira a raggiungere le massime prestazioni con il minimo overhead di elaborazione e incapsulamento.

È comunemente utilizzato in ambienti dove UDP è bloccato/limitato ma TCP è permesso.

Phantun converte semplicemente un flusso di pacchetti UDP in pacchetti di flusso TCP offuscati. Lo stack TCP utilizzato da Phantun è progettato per superare la maggior parte dei firewall/NAT stateful/stateless L3/L4. Non sarà in grado di superare proxy L7. Tuttavia, il vantaggio di questo approccio è che nessuno dei comuni killer di prestazioni UDP su TCP come ritrasmissioni e controllo di flusso si verificherà. Le proprietà sottostanti di UDP, come la consegna fuori ordine, sono totalmente preservate anche se la connessione finisce per apparire come una connessione TCP dal punto di vista dei firewall/NAT.

Phantun significa Phantom TUN, poiché è un offuscatore per traffico UDP che fa abbastanza lavoro per farlo passare attraverso firewall/NAT stateful come pacchetti TCP.

Phantun è scritto in Rust 100% sicuro. È stato ottimizzato estensivamente per scalare bene su sistemi multi-core e non ha problemi a saturare tutte le risorse CPU disponibili su una connessione veloce. Vedere la sezione Prestazioni per i risultati dei benchmark.

Risultati benchmark Phantun Diagramma del flusso di traffico

Utilizzo

Nell'esempio seguente si assume che il Server Phantun ascolti le connessioni Client Phantun in entrata sulla porta 4567 (opzione --local per il server) e inoltri i pacchetti UDP al server UDP su 127.0.0.1:1234 (opzione --remote per il server).

Si assume inoltre che il Client Phantun ascolti i pacchetti UDP in entrata su 127.0.0.1:1234 (opzione --local per il client) e si connetta al Server Phantun su 10.0.0.1:4567 (opzione --remote per il client).

Phantun crea un'interfaccia TUN sia per il Client che per il Server. Per il Client, Phantun assegna a sé stesso l'indirizzo IP 192.168.200.2 e fcc8::2 di default. Per il Server, assegna 192.168.201.2 e fcc9::2 di default. Pertanto, il kernel deve avere l'inoltro IPv4/IPv6 abilitato e vanno configurate regole iptables/nftables appropriate per NAT tra l'indirizzo della scheda di rete fisica e l'indirizzo dell'interfaccia Tun di Phantun.

È possibile personalizzare il nome dell'interfaccia Tun creata da Phantun e gli indirizzi assegnati. Si prega di eseguire l'eseguibile con le opzioni -h per vedere come modificarli.

Un altro modo per comprendere questa topologia di rete (si veda il diagramma sopra per un'illustrazione di questa topologia):

Il Client Phantun è come una macchina con indirizzo IP privato (192.168.200.2/fcc8::2) dietro un router. Affinché possa raggiungere Internet, è necessario eseguire SNAT dell'indirizzo IP privato prima che il suo traffico lasci la scheda di rete.

Il Server Phantun è come un server con indirizzo IP privato (192.168.201.2/fcc9::2) dietro un router. Per accedervi da Internet, è necessario eseguire DNAT sulla porta di ascolto sul router e cambiare l'indirizzo IP di destinazione con quello su cui il server ascolta le connessioni in entrata.

In questi casi, la macchina/iptables che esegue Phantun agisce come il "router" che permette a Phantun di comunicare con l'esterno usando i suoi indirizzi IP privati.

A partire da Phantun v0.4.1, IPv6 è completamente supportato sia per il lato TCP che UDP. Per specificare un indirizzo IPv6, usare il seguente formato: [::1]:1234 nelle opzioni della riga di comando. È anche supportata la risoluzione di record AAAA. Si prega di eseguire il programma con -h per vedere le opzioni dettagliate su come controllare il comportamento IPv6.

Torna all'indice

1. Abilitare l'inoltro IP del kernel

Modificare /etc/sysctl.conf, aggiungere net.ipv4.ip_forward=1 ed eseguire sudo sysctl -p /etc/sysctl.conf.

Configurazione specifica IPv6

Dovrà essere impostato anche net.ipv6.conf.all.forwarding=1.

Torna all'indice

2. Aggiungere le regole firewall necessarie

Client

Il Client necessita semplicemente di SNAT abilitato sull'interfaccia fisica per tradurre l'indirizzo di Phantun in uno utilizzabile sulla rete fisica. Questo può essere fatto semplicemente con il masquerading.

Nota: cambiare eth0 con il nome effettivo dell'interfaccia fisica

Torna all'indice

Usando nftables

root@kitploit:~
table inet nat {
    chain postrouting {
        type nat hook postrouting priority srcnat; policy accept;
        iifname tun0 oif eth0 masquerade
    }
}

Nota: La regola sopra usa inet come tipo di famiglia di tabella, quindi è compatibile con entrambi gli utilizzi IPv4 e IPv6.

Torna all'indice

Usando iptables

root@kitploit:~
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Torna all'indice

Server

Il Server deve eseguire DNAT sulla porta di ascolto TCP all'indirizzo dell'interfaccia TUN di Phantun.

Nota: cambiare eth0 con il nome effettivo dell'interfaccia fisica e 4567 con il numero di porta TCP effettivo utilizzato dal server Phantun

Torna all'indice

Usando nftables

root@kitploit:~
table inet nat {
    chain prerouting {
        type nat hook prerouting priority dstnat; policy accept;
        iif eth0 tcp dport 4567 dnat ip to 192.168.201.2
        iif eth0 tcp dport 4567 dnat ip6 to fcc9::2
    }
}

Torna all'indice

Usando iptables

root@kitploit:~
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination 192.168.201.2
ip6tables -t nat -A PREROUTING -p tcp -i eth0 --dport 4567 -j DNAT --to-destination fcc9::2

Torna all'indice

3. Eseguire i binari di Phantun come non-root (Opzionale)

È sconsigliato eseguire applicazioni esposte alla rete come utente root. Phantun può essere eseguito completamente come utente non-root con la capacità cap_net_admin.

root@kitploit:~
sudo setcap cap_net_admin=+pe phantun_server
sudo setcap cap_net_admin=+pe phantun_client

Torna all'indice

4. Avviare il demone Phantun

Nota: Eseguire l'eseguibile Phantun con l'opzione -h per vedere tutte le opzioni dettagliate.

Torna all'indice

Server

Nota: 4567 è la porta TCP su cui Phantun deve ascoltare e deve corrispondere alla regola DNAT specificata sopra. 127.0.0.1:1234 è il Server UDP a cui connettersi per nuove connessioni.

root@kitploit:~
RUST_LOG=info /usr/local/bin/phantun_server --local 4567 --remote 127.0.0.1:1234

Oppure usare un nome host con --remote:

root@kitploit:~
RUST_LOG=info /usr/local/bin/phantun_server --local 4567 --remote example.com:1234

Nota: Il Server assegna di default sia l'indirizzo privato IPv4 che IPv6 all'interfaccia Tun. Se non si desidera utilizzare IPv6, è sufficiente saltare la creazione della regola DNAT IPv6 sopra e la presenza dell'indirizzo IPv6 sull'interfaccia Tun non dovrebbe avere effetti collaterali sul server.

Torna all'indice

Client

Nota: 127.0.0.1:1234 è l'indirizzo UDP e la porta su cui Phantun deve ascoltare. 10.0.0.1:4567 è il Server Phantun a cui connettersi.

root@kitploit:~
RUST_LOG=info /usr/local/bin/phantun_client --local 127.0.0.1:1234 --remote 10.0.0.1:4567

Oppure usare un nome host con --remote:

root@kitploit:~
RUST_LOG=info /usr/local/bin/phantun_client --local 127.0.0.1:1234 --remote example.com:4567
Configurazione specifica IPv6
root@kitploit:~
RUST_LOG=info /usr/local/bin/phantun_client --local 127.0.0.1:1234 --remote [fdxx::1234]:4567

È supportato anche il nome di dominio con record AAAA.

Torna all'indice

Overhead MTU

Phantun mira a mantenere l'overhead di tunneling al minimo. L'overhead rispetto a un pacchetto UDP semplice è il seguente (usando IPv4 come esempio):

Pacchetto UDP standard: 20 byte header IP + 8 byte header UDP = 28 byte

Pacchetto offuscato: 20 byte header IP + 20 byte header TCP = 40 byte

Nota che Phantun non aggiunge alcun header aggiuntivo oltre agli header IP e TCP per superare l'ispezione stateful dei pacchetti!

Overhead aggiuntivo di Phantun: 12 byte. In altre parole, quando si utilizza Phantun, il payload utilizzabile per il pacchetto UDP è ridotto di 12 byte. Questo è l'overhead minimo possibile per questo tipo di offuscamento.

Diagramma header pacchetto

Torna all'indice

Calcolo MTU per WireGuard

Per coloro che utilizzano Phantun per incapsulare pacchetti UDP di WireGuard®, ecco alcune linee guida per determinare il MTU corretto da usare per l'interfaccia WireGuard.

root@kitploit:~
MTU WireGuard = MTU collegamento - header IPv4 (20 byte) - header TCP (20 byte) - overhead WireGuard (32 byte)

oppure

root@kitploit:~
MTU WireGuard = MTU collegamento - header IPv6 (40 byte) - header TCP (20 byte) - overhead WireGuard (32 byte)

Ad esempio, per un collegamento di rete con MTU 1500 byte, il MTU dell'interfaccia WireGuard dovrebbe essere impostato come:

IPv4: 1500 (MTU collegamento) - 20 - 20 - 32 = 1428 byte

IPv6: 1500 (MTU collegamento) - 40 - 20 - 32 = 1408 byte

Il pacchetto dati TCP Phantun risultante sarà di 1500 byte, che non supera il MTU dell'interfaccia di 1500.

Si prega di notare che Phantun non può funzionare correttamente se la dimensione del pacchetto supera quella del MTU del collegamento, poiché Phantun non esegue alcuna frammentazione IP e riassemblaggio. Per lo stesso motivo, Phantun imposta sempre il bit DF (Don't Fragment) nell'header IP per impedire ai dispositivi intermedi di eseguire qualsiasi frammentazione sul pacchetto.

È anche fortemente raccomandato utilizzare lo stesso MTU dell'interfaccia per entrambe le estremità di un tunnel WireGuard, altrimenti potrebbero verificarsi perdite di pacchetti impreviste e questi problemi sono generalmente molto difficili da diagnosticare.

Torna all'indice

Compatibilità delle versioni

Sebbene lo stack TCP sia abbastanza stabile, l'aspettativa generale è che si debbano eseguire versioni minori uguali del Server/Client di Phantun su entrambe le estremità per garantire la massima compatibilità.

Torna all'indice

Documentazione

Per gli utenti che desiderano utilizzare la libreria fake-tcp all'interno del proprio progetto, fare riferimento alla documentazione per la libreria su: https://docs.rs/fake-tcp.

Torna all'indice

Prestazioni

Le prestazioni sono state testate su 2 istanze AWS t4g.xlarge con 4 vCPU e 5 Gb/s NIC su LAN. È stato utilizzato nftables per reindirizzare il flusso UDP di iperf3 attraverso il tunnel Phantun/udp2raw tra le due istanze di test e il MTU è stato regolato per evitare frammentazione.

Sono state utilizzate Phantun v0.3.2 e udp2raw_arm_asm_aes 20200818.0. Queste erano le ultime release di entrambi i progetti ad aprile 2022.

Comando di test: iperf3 -c <IP> -p <PORT> -R -u -l 1400 -b 1000m -t 30 -P 5

Articolo su alcune delle tecniche utilizzate in Phantun per ottenere questo risultato di prestazioni: Writing Highly Efficient UDP Server in Rust.

Torna all'indice

Piani futuri

  • Bilanciamento del carico di un singolo flusso UDP in più flussi TCP
  • Test di integrazione
  • Inserimento/rimozione automatica delle regole firewall necessarie

Torna all'indice

Confronto con udp2raw

udp2raw è un altro progetto popolare di @wangyu- molto simile a ciò che Phantun può fare. In effetti ho tratto ispirazione per Phantun da udp2raw. La ragione principale per sviluppare Phantun è la mancanza di prestazioni durante l'esecuzione di udp2raw (specialmente su sistemi multi-core come Raspberry Pi). Tuttavia, l'obiettivo non è mai stato quello di essere completo come udp2raw e supportare solo i casi d'uso più comuni. In particolare, la modalità UDP su ICMP e UDP su UDP non sono supportate, non c'è anti-replay né supporto per la crittografia. Il vantaggio è prestazioni molto migliori nel complesso e meno overhead MTU grazie all'assenza di header aggiuntivi all'interno del payload TCP.

Ecco una rapida panoramica del confronto tra i due per aiutarvi a scegliere:

Torna all'indice

Licenza

Copyright 2021-2025 Datong Sun ([email protected])

Concesso in licenza secondo l'Apache License, Versione 2.0 <LICENSE-APACHE o https://www.apache.org/licenses/LICENSE-2.0> o la licenza MIT <LICENSE-MIT o https://opensource.org/licenses/MIT, a tua scelta. I file del progetto non possono essere copiati, modificati o distribuiti se non in conformità con tali termini.

Torna all'indice

Scarica lo strumento
ModalitàVelocità invioVelocità ricezioneUtilizzo CPU totale
Diretta (1 flusso)3.00 Gbits/sec2.37 Gbits/sec25% (1 core al 100%)
Phantun (1 flusso)1.30 Gbits/sec1.20 Gbits/sec60% (1 core al 100%, 3 core al 50%)
udp2raw (cipher-mode=none auth-mode=none disable-anti-replay) (1 flusso)1.30 Gbits/sec715 Mbits/sec40% (1 core al 100%, 1 core al 50%, 2 core in idle)
Connessione diretta (5 flussi)5.00 Gbits/sec3.64 Gbits/sec25% (1 core al 100%)
Phantun (5 flussi)5.00 Gbits/sec2.38 Gbits/sec95% (tutti i core utilizzati)
udp2raw (cipher-mode=none auth-mode=none disable-anti-replay) (5 flussi)5.00 Gbits/sec770 Mbits/sec50% (2 core al 100%)
Phantunudp2raw
Offuscamento UDP su FakeTCP✅✅
Offuscamento UDP su ICMP❌✅
Offuscamento UDP su UDP❌✅
Multi-thread✅❌
ThroughputMiglioreBuono
Modalità Layer 3Interfaccia TUNRaw socket + BPF
Overhead MTU tunneling12 byte44 byte
Connessioni TCP separate per ogni connessione UDPClient/ServerSolo Server
Anti-replay, crittografia❌✅
IPv6✅✅