networking

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

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 #

text
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 #

PortaFunzione
3478STUN/TURN standard (UDP/TCP)
3479STUN alternativo
5349STUN/TURN over TLS
443TURN over TLS (bypass firewall)

1. Enumerazione #

Nmap #

bash
nmap -sU -sT -p 3478 10.10.10.40
text
PORT     STATE SERVICE
3478/udp open  stun
3478/tcp open  stun

STUN binding request #

bash
stun 10.10.10.40 3478
text
STUN client version 0.97
Primary:
  Mapped address: 203.0.113.5:54321
  Binding test: success
  NAT type: Full Cone

Intelligence: il tuo IP pubblico visto dal server, tipo di NAT (Full Cone = permissivo).

TURN test — il vero target #

bash
# Con turnutils_uclient (da coturn)
turnutils_uclient -t -T 10.10.10.40 -p 3478 -u testuser -w testpass

Se si connette senza credenziali → open TURN relay.

bash
# Test senza credenziali
turnutils_uclient -t 10.10.10.40 -p 3478

2. 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 #

bash
# stunner: crea SOCKS5 proxy via TURN
stunner turn://10.10.10.40:3478 -u user -p pass socks5://127.0.0.1:1080
bash
# Proxychains attraverso il tunnel
proxychains nmap -sT -Pn 10.10.10.0/24

Credenziali TURN nel JavaScript frontend #

Le applicazioni WebRTC spesso hardcodano le credenziali TURN nel codice client-side:

bash
curl -s http://target.com/ | grep -iE "turn:|stun:|credential|iceServers"
javascript
// 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 #

AzioneComando
Nmapnmap -sU -sT -p 3478 target
STUN bindingstun target 3478
TURN testturnutils_uclient -t target -p 3478
TURN con credsturnutils_uclient -t target -p 3478 -u user -w pass
Cerca creds WebRTCcurl -s http://target/ | grep -i "turn:|credential"
TURN → SOCKSstunner turn://target:3478 socks5://127.0.0.1:1080
Proxychainsproxychains 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

hackita.it/supportohackita.it/servizi.

#STUN #TURN Relay #WebRTC

DIVENTA PARTE DELL’ÉLITE DELL’HACKING ETICO.

Accedi a risorse avanzate, lab esclusivi e strategie usate dai veri professionisti della cybersecurity.

Non sono un robot

Iscrivendoti accetti di ricevere la newsletter di HACKITA. Ti puoi disiscrivere in qualsiasi momento.