diff --git a/scripts/w-zombi/README.md b/scripts/w-zombi/README.md new file mode 100644 index 00000000..6926659a --- /dev/null +++ b/scripts/w-zombi/README.md @@ -0,0 +1,55 @@ +# W-Zombi: Toolkit de Inyección Lateral para Windows VMs + +> Técnica documentada en la bitácora del [25/02/2026](../../bitacoras/2026-02-25.md) (Hito DB01). + +## Problema + +La consola HTML5/VNC de Proxmox **no soporta copiar/pegar** texto, lo que impide al operador provisionar comandos complejos (instalaciones, configuraciones) en las VMs Windows recién creadas que aún no tienen SSH. + +## Solución: C2 Polling Loop + +Se utiliza una arquitectura de "Command & Control" liviana que sortea la limitación del portapapeles: + +``` +srv-ns8 (10.0.10.8) VM Windows (VNC) +┌──────────────────┐ ┌────────────────────┐ +│ logger.py │ ← HTTP :8000 ←── │ s.txt (loop) │ +│ (servidor HTTP) │ │ Consulta payload │ +│ │ ── payload.ps1 ──→ │ cada 15 seg │ +│ │ │ Ejecuta y reporta │ +└──────────────────┘ └────────────────────┘ +``` + +## Flujo Operativo + +### 1. En srv-ns8 (la IA): +```bash +cd scripts/w-zombi +python3 logger.py +``` +Esto levanta un servidor HTTP en el puerto 8000 que sirve los archivos del directorio. + +### 2. En la VM Windows (el operador tipea manualmente en VNC): +```powershell +iwr 10.0.10.8:8000/s.txt -useb|iex +``` +Este one-liner de ~35 caracteres es lo único que el operador necesita tipear a mano. + +### 3. La IA modifica `payload.ps1`: +Cada vez que el loop de la VM consulta, ejecuta lo que esté en `payload.ps1`. La IA puede cambiar su contenido dinámicamente para inyectar cualquier secuencia de comandos. + +## Archivos + +| Archivo | Tipo | Descripción | +| :--- | :--- | :--- | +| `s.txt` | PowerShell | C2 polling loop (se ejecuta en la VM, consulta payload cada 15s). | +| `payload.ps1` | PowerShell | Carga útil dinámica que la IA modifica según la tarea. | +| `install_ssh.ps1` | PowerShell | Payload especializado: instala OpenSSH Server nativo. | +| `sonda_windows.ps1` | PowerShell | Payload especializado: diagnóstico y relevamiento del sistema. | +| `logger.py` | Python 3 | Servidor HTTP efímero con logging de requests entrantes. | + +## Seguridad + +- El servidor HTTP es **efímero** — solo se levanta durante la operación. +- Solo escucha en la red interna (`10.0.10.x` / `10.0.100.x`). +- Una vez instalado SSH en la VM, este mecanismo deja de ser necesario. diff --git a/install_ssh.ps1 b/scripts/w-zombi/install_ssh.ps1 similarity index 100% rename from install_ssh.ps1 rename to scripts/w-zombi/install_ssh.ps1 diff --git a/logger.py b/scripts/w-zombi/logger.py similarity index 100% rename from logger.py rename to scripts/w-zombi/logger.py diff --git a/payload.ps1 b/scripts/w-zombi/payload.ps1 similarity index 100% rename from payload.ps1 rename to scripts/w-zombi/payload.ps1 diff --git a/s.txt b/scripts/w-zombi/s.txt similarity index 100% rename from s.txt rename to scripts/w-zombi/s.txt diff --git a/scripts/sonda_windows.ps1 b/scripts/w-zombi/sonda_windows.ps1 similarity index 100% rename from scripts/sonda_windows.ps1 rename to scripts/w-zombi/sonda_windows.ps1