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.4k217620 giorni 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

    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%)

    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:

    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✅✅

    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