WireGuard sobre WebSocket. Un binario Go. Ingreso público gratuito a través de cualquier CDN — sin arrendar VPS, sin Cloudflare Spectrum, sin dependencia de terceros.
WireGuard usa UDP. La mayoría de los CDN gratuitos (Cloudflare Free, Fastly, Bunny) solo hacen proxy de HTTP/WS. Las alternativas costosas —Cloudflare Spectrum, un relay UDP en Hetzner, los servidores DERP de Tailscale— implican pago mensual o dependencia de un proveedor.
arena-tunnel lo resuelve encapsulando cada datagrama UDP de WireGuard dentro de un frame binario de WebSocket. El servidor desempaqueta los frames en paquetes UDP y los entrega a una interfaz WireGuard local. El CDN ve lo que parece una sesión WSS de larga duración — tráfico perfectamente normal para un chat o un servicio de notificaciones.
Resultado: un túnel estable, cifrado y traversal de NAT que cuesta $0/mes, que sobrevive redes hostiles (proxies corporativos, portales cautivos, CGNAT). Latencia adicional: ~80–150 ms en el tramo CDN desde la mayor parte de LATAM.
Lado cliente CDN público Lado servidor
───────────────────── ──────────────────────── ──────────────────────────
arena-byoc arena-tunnel-server
├─ wireguard-go (TUN) ↑
└─ WSS dialer ──► wss://tu-host/... ──► cloudflared ──► │ WS upgrade
(free tier) ▼
Interfaz WireGuard kernel
│
▼
MASQUERADE / ruteo
│
▼
Tu red interna
Protocolo de transporte: un frame binario WS ↔ un datagrama UDP. Sin framing adicional. Nada que reverse-engineerear. ~50 líneas de glue en cada dirección. Leer ARCHITECTURE.md completo →
Sin VPS, sin Spectrum, sin suscripción a Tailscale. El free tier de Cloudflare carga todo el tráfico.
~6 MB por plataforma. Sin instalador, sin runtime, sin archivo de configuración.
WireGuard ChaCha20-Poly1305 por dentro. TLS 1.3 por fuera. El CDN solo ve frames WSS opacos.
WiFi de hotel, proxies corporativos, portales cautivos. WSS:443 pasa donde UDP no puede.
El plano de control embebe las claves WG en el binario de cada usuario vía -ldflags. Sin pegar claves manualmente.
Los forks deben quedar abiertos. Estándar para infraestructura de seguridad.
Tú traes tu propio C2. ARENA te presta un redirector y este túnel para que tu team server nunca toque la internet pública — el escenario solo ve el redirector. Aquí está el camino completo, desde la cuenta hasta el primer beacon.
Entra en arena.adversario.cl con tu cuenta. Abre la pestaña Weapons.
La pestaña Weapons te entrega una descarga por OS — el mismo binario que aparece en Descargar. Sin compilar. Elige tu plataforma y guárdalo.
Ejecuta el binario como root / Administrador (crea un dispositivo TUN — el mismo requisito que WireGuard o Tailscale). Abre tu navegador; autoriza como tu usuario de ARENA. Las claves se gestionan server-side — nunca pegas una clave privada.
# Linux / macOS — renombrar a arena-byoc para mayor comodidad en la shell
chmod +x arena-tunnel-client-linux-amd64
sudo mv arena-tunnel-client-linux-amd64 /usr/local/bin/arena-byoc
# Ejecutar una vez — vincula en el primer arranque, luego levanta el túnel
sudo arena-byoc
# → abre https://arena.adversario.cl/byoc2/connect?code=XXXXXX
# → autorizas en el navegador
# → la interfaz "arena-byoc" sube (10.201.x.x)
# → ruta 10.128.0.0/9 (todas las VMs del escenario) instalada automáticamente
# → el banner de conexión muestra: IP del túnel · IP edge · listener · SNI · cookie de atribución
arena-byoc status # identidad + estado del túnel
sudo arena-byoc logout # detener túnel + revocar dispositivo server-side
sudo arena-byoc pair --force # forzar re-vinculación (nuevo dispositivo o peer revocado)
¿SSH / sin navegador? Agrega --no-browser — el código y la URL se imprimen en stdout, ábrela desde cualquier dispositivo con navegador.
Windows: descomprime y ejecuta el .exe como Administrador (incluye wintun.dll). El paso de vinculación en el navegador es idéntico.
Levanta tu team server — Adaptix (compilado desde upstream), Cobalt Strike, lo que uses. El panel de Bring-Your-Own muestra tu redirector host, puerto de listener y la cookie de atribución __arena_tenant. Configura tu listener HTTP / malleable profile para:
__arena_tenant=<valor> que ARENA te da — así tus beacons se atribuyen a ti y suman puntos.Genera tu payload y ejecútalo en un host del escenario. Los beacons viajan:
host del escenario → redirector → arena-tunnel → tu TeamServer
Tu team server permanece privado durante todo el ejercicio.
La página de Estado muestra la accesibilidad del redirector y tus beacons recientes. Mientras tanto, el motor OPSEC de ARENA evalúa tu tradecraft — movimientos ruidosos (Kerberoasting, DCSync, sweeps de SharpHound, egreso C2 masivo) cuestan puntos. Mantén el ruido bajo.
¿No estás en ARENA o prefieres usar tu propio endpoint? El mismo binario se vincula con cualquier servidor WireGuard detrás de un CDN que haga proxy de WS, usando flags explícitos en lugar del flujo de navegador.
Ejecútalo junto a un servidor WireGuard en el mismo host. Expón el puerto HTTP a través de Cloudflare Tunnel (o cualquier CDN que haga proxy de WS).
# 1. Configuración estándar de servidor WireGuard
[Interface]
PrivateKey = <server-priv>
ListenPort = 51820
Address = 10.201.0.1/16
[Peer]
PublicKey = <client-pub>
AllowedIPs = 10.201.0.2/32
# 2. Lanzar el servidor arena-tunnel
arena-tunnel-server --listen 127.0.0.1:8888 --wg 127.0.0.1:51820
# 3. Regla de ingress en cloudflared
# wss://wg.ejemplo.com → http://127.0.0.1:8888
# Linux / macOS — requiere root para /dev/net/tun
sudo arena-byoc \
-priv <peer-priv-b64> \
-pub <server-pub-b64> \
-ip 10.201.0.2 \
-host wg.ejemplo.com
O embebe las credenciales en tiempo de compilación vía build.sh para una UX de cero configuración, un solo binario (así es como ARENA genera la descarga de cada estudiante).
Descarga el binario de la última versión según tu plataforma:
Servidores, escritorios y laptops x86.
Raspberry Pi 4/5, AWS Graviton, Oracle Ampere.
Mac anterior a M1.
M1, M2, M3, M4 — todos los Mac con Apple Silicon.
ZIP incluye wintun.dll. Ejecutar como Administrador.
Verificar integridad con sha256sum -c.
| Qué está protegido | Cómo |
|---|---|
| Payload del túnel (tu tráfico) | WireGuard ChaCha20-Poly1305 — extremo a extremo |
| El tramo de transporte | TLS 1.3 entre cliente/servidor y Cloudflare |
| Claves privadas WG | Generadas server-side, embebidas en el binario, nunca en JSON |
| Autenticidad del peer | Handshake noise de WireGuard; pubkeys estáticas |
El CDN ve metadatos de conexión pero no el contenido. Lee SECURITY.md para el modelo de amenaza completo.