122 lines
3.6 KiB
Markdown
122 lines
3.6 KiB
Markdown
# A01.P010 - W-ZOMBI Relay Switch (Alcance a Redes Internas)
|
|
|
|
> **Estado**: ⏳ Pendiente
|
|
> **Pertenece a**: [A01 - Ecosistema ADN](./A01_dtic-ADN.md)
|
|
> **Fecha**: 2026-04-09
|
|
> **Responsable**: Lic. Ricardo MONLA
|
|
> **Versión**: 1.0 — Plan inicial
|
|
> **Prerequisito**: W-Zombi v2.1 (A01.P003)
|
|
|
|
---
|
|
|
|
## 📋 Resumen Ejecutivo
|
|
|
|
Extender W-Zombi para alcanzar **PCs y VMs en redes internas** que no tienen conectividad directa con NS8 vía Tailscale, usando un nodo intermedio (ej: `srv-dasu`) como **relay/switch**.
|
|
|
|
**Topología actual (problema):**
|
|
```
|
|
NS8 (Tailscale) ──✔──► srv-dasu (Tailscale + LAN)
|
|
│
|
|
NS8 ──────✖──────────► VM-interna (solo LAN)
|
|
```
|
|
|
|
**Topología objetivo:**
|
|
```
|
|
NS8 ──► srv-dasu (relay) ──► VM/PC interna (LAN)
|
|
↕ retransmite
|
|
cmd.json + log
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 Objetivo
|
|
|
|
Permitir que W-Zombi controle PCs/VMs en redes internas inaccesibles directamente desde NS8, utilizando un nodo intermedio con visibilidad en ambas redes como relay transparente.
|
|
|
|
---
|
|
|
|
## 🏗️ Opciones de Arquitectura
|
|
|
|
### Opción A: Relay HTTP en srv-dasu (Recomendada)
|
|
|
|
srv-dasu corre un mini-servidor que:
|
|
1. Escucha en puerto local (ej: 8001)
|
|
2. El zombi PS1 en la VM interna se conecta a `srv-dasu:8001`
|
|
3. srv-dasu reenvía `cmd.json` desde NS8 y `log` hacia NS8
|
|
|
|
**Pros:** Independiente, no requiere cambios en firewall
|
|
**Contras:** Requiere un servicio en srv-dasu
|
|
|
|
```
|
|
NS8:8000 ←──tailscale──→ srv-dasu:8001 ←──LAN──→ VM-target
|
|
(server) (relay) (zombi)
|
|
```
|
|
|
|
### Opción B: SSH Port Forward
|
|
|
|
```bash
|
|
# Desde NS8:
|
|
ssh -L 8001:IP_VM_INTERNA:8000 srv-dasu
|
|
```
|
|
|
|
**Pros:** Cero código nuevo
|
|
**Contras:** Requiere sesión SSH activa, no es autónomo
|
|
|
|
### Opción C: Tailscale Subnet Router
|
|
|
|
Configurar srv-dasu como subnet router para exponer la LAN interna.
|
|
|
|
**Pros:** Solución nativa Tailscale, todas las VMs accesibles
|
|
**Contras:** Requiere configuración de Tailscale admin, posibles implicaciones de seguridad
|
|
|
|
---
|
|
|
|
## 📋 Tareas (Opción A — Relay HTTP)
|
|
|
|
| ID | Tarea | Descripción | Estado |
|
|
|:--:|-------|-------------|--------|
|
|
| T1 | Diseño del relay | Definir protocolo de retransmisión | ✅ |
|
|
| T2 | `relay.rb` / `relay.ps1` | Comando sub-relay y engine ps1 | ✅ |
|
|
| T3 | Multi-target | Soportar múltiples VMs (ej: `cmd_vm101.json`, `cmd_vm102.json`) | ⏳ |
|
|
| T4 | CLI `w-zombi relay` | Subcomando para gestionar relays | ✅ |
|
|
| T5 | Validación | Test con PC Windows real vía relay | ⏳ |
|
|
|
|
---
|
|
|
|
## 📝 Contexto Técnico
|
|
|
|
### Nodos involucrados
|
|
|
|
| Nodo | Red | Rol | IP Tailscale |
|
|
|------|-----|-----|-------------|
|
|
| NS8 | Tailscale | Servidor W-Zombi (control) | 100.111.195.4 |
|
|
| srv-dasu | Tailscale + LAN | Relay/Switch | 100.116.210.36 |
|
|
| PC target | Solo LAN | Zombi (ejecuta comandos) | ¿? (LAN interna) |
|
|
|
|
### Flujo de datos
|
|
|
|
```
|
|
1. NS8 escribe cmd.json (id:201, cmd:"ipconfig")
|
|
2. srv-dasu (relay) polling NS8:8000/cmd.json cada 5s
|
|
3. srv-dasu sirve cmd.json en su puerto local 8001
|
|
4. PC-target (zombi PS1) polling srv-dasu:8001/cmd.json cada 5s
|
|
5. PC-target ejecuta "ipconfig", POST resultado a srv-dasu:8001/log
|
|
6. srv-dasu reenvía log a NS8:8000/log
|
|
```
|
|
|
|
---
|
|
|
|
## 🔮 Evolución Futura
|
|
|
|
- **Multi-relay**: Cadena de relays para redes muy segmentadas
|
|
- **Registro automático**: Zombis se anuncian al conectarse
|
|
- **Dashboard**: Ver estado de todos los zombis (directos + relay)
|
|
- **Integración Dron**: Lanzar comandos remotos como drones con eventos en Bitácora
|
|
|
|
---
|
|
|
|
## 📚 Referencias
|
|
|
|
- [A01.P003 — W-ZOMBI v2.0](./A01.P003_W-ZOMBI-v2.0.md)
|
|
- Fix v2.1: Ruta `/cmd` + JSON parsing robusto (2026-04-09)
|