Porta 3478 STUN/TURN: NAT Traversal, Relay Abuse e Pentest

Porta 3478 STUN/TURN nel pentest: NAT traversal, IP leak, tipo di NAT, TURN relay abuse e misconfigurazioni in infrastrutture WebRTC e VoIP.
- Pubblicato il 2026-04-13
- Tempo di lettura: 3 min
STUN (Session Traversal Utilities for NAT) è un protocollo che aiuta i client dietro NAT a scoprire il proprio indirizzo IP pubblico e il tipo di NAT in uso. Ascolta sulla porta 3478 UDP (e spesso anche TCP) ed è un componente fondamentale di VoIP, WebRTC, videoconferenza e qualsiasi comunicazione peer-to-peer che deve attraversare il NAT. Nel penetration testing, un server STUN esposto ha valore diretto limitato — non dà accesso a dati o shell — ma rivela informazioni sulla topologia di rete e, nel caso di TURN (la sua estensione con funzione relay), può funzionare come open proxy per tunnelare traffico attraverso la rete del target.
La distinzione è cruciale: STUN è solo discovery (rivela IP), TURN è relay (inoltra traffico). Un TURN server mal configurato è un proxy aperto.
Come Funzionano STUN e TURN #
Client (LAN) STUN/TURN Server (:3478) Peer
┌────────────┐ ┌───────────────┐ ┌──────┐
│ 192.168.1.5│── Binding ──►│ "Tuo IP │ │ │
│ │ Request │ pubblico: │ │ │
│ │◄── Response ──│ 203.0.113.5" │ │ │
│ │ │ │ │ │
│ (TURN) │── Allocate ──►│ Relay addr │── relay ──►│ │
│ │◄── relay ─────│ inoltra dati │ │ │
└────────────┘ └───────────────┘ └──────┘STUN: il client chiede “qual è il mio IP pubblico?”. Il server risponde. Fine. TURN: il client chiede al server di allocare un relay address e inoltrare il traffico. Il server diventa un intermediario — tutto passa attraverso di lui.
Porte correlate #
| Porta | Funzione |
|---|---|
| 3478 | STUN/TURN standard (UDP/TCP) |
| 3479 | STUN alternativo |
| 5349 | STUN/TURN over TLS |
| 443 | TURN over TLS (bypass firewall) |
1. Enumerazione #
Nmap #
nmap -sU -sT -p 3478 10.10.10.40PORT STATE SERVICE
3478/udp open stun
3478/tcp open stunSTUN binding request #
stun 10.10.10.40 3478STUN client version 0.97
Primary:
Mapped address: 203.0.113.5:54321
Binding test: success
NAT type: Full ConeIntelligence: il tuo IP pubblico visto dal server, tipo di NAT (Full Cone = permissivo).
TURN test — il vero target #
# Con turnutils_uclient (da coturn)
turnutils_uclient -t -T 10.10.10.40 -p 3478 -u testuser -w testpassSe si connette senza credenziali → open TURN relay.
# Test senza credenziali
turnutils_uclient -t 10.10.10.40 -p 34782. TURN Misconfiguration — Open Relay #
Un TURN senza autenticazione è un open relay: tunnela qualsiasi traffico TCP/UDP attraverso la rete del target.
Cosa puoi fare con un TURN relay aperto #
- Scansione della rete interna del target attraverso il relay
- Anonimizzazione del traffico (il target vede l’IP del TURN, non il tuo)
- Bypass firewall — il TURN è nella rete interna
- Accesso a servizi interni non esposti
Tunneling via TURN #
# stunner: crea SOCKS5 proxy via TURN
stunner turn://10.10.10.40:3478 -u user -p pass socks5://127.0.0.1:1080# Proxychains attraverso il tunnel
proxychains nmap -sT -Pn 10.10.10.0/24Credenziali TURN nel JavaScript frontend #
Le applicazioni WebRTC spesso hardcodano le credenziali TURN nel codice client-side:
curl -s http://target.com/ | grep -iE "turn:|stun:|credential|iceServers"// Comune trovare:
iceServers: [{
urls: "turn:10.10.10.40:3478",
username: "webrtc_user",
credential: "WebRTC_P@ss!"
}]Credenziali in chiaro nel JavaScript — visibili a chiunque ispezioni la pagina.
3. Detection & Hardening #
- TURN con autenticazione obbligatoria — mai senza credenziali
- Token temporanei generati dal backend — non hardcodare nel frontend
- Rate limiting sulle allocazioni TURN
- Limita destinazioni relay — blocca relay verso la rete interna
- Firewall — porta 3478 solo per client autorizzati
- Monitora volumi di traffico anomali e allocazioni da IP sconosciuti
4. Cheat Sheet Finale #
| Azione | Comando |
|---|---|
| Nmap | nmap -sU -sT -p 3478 target |
| STUN binding | stun target 3478 |
| TURN test | turnutils_uclient -t target -p 3478 |
| TURN con creds | turnutils_uclient -t target -p 3478 -u user -w pass |
| Cerca creds WebRTC | curl -s http://target/ | grep -i "turn:|credential" |
| TURN → SOCKS | stunner turn://target:3478 socks5://127.0.0.1:1080 |
| Proxychains | proxychains nmap -sT -Pn internal_subnet |
Riferimento: RFC 5389 (STUN), RFC 5766 (TURN), WebRTC security. Uso esclusivo in ambienti autorizzati. https://medium.com/@jamesbordane57/stun-protocol-port-and-traffic-ab96f8f6cf5e







