La configuración repetitiva de proxies entre la máquina anfitriona y las máquinas virtuales (VM) es uno de los mayores cuellos de botella en las pruebas de penetración. Para optimizar la intercepción de tráfico, es fundamental establecer una arquitectura estandarizada donde herramientas como Burp Suite actúen como proxies centrales, redirigiendo el flujo de red de navegadores virtualizados sin intervención manual constente.
Arquitectura de Red y Enrutamiento
El aislamiento de red debe permitir la comunicación bidireccional. Se recomienda utilizar el modo NAT o Host-Only, donde la máquina anfitriona opera como la puerta de enlace predeterminada para el segmento virtual. El tráfico sigue la ruta: Navegador en VM → Interfaz Virtual del Host → Proxy → Internet.
Para validar la topología en el sistema anfitrión, se pueden utilizar comandos de PowerShell para identificar la interfaz virtual y verificar la latencia:
Get-NetIPAddress -InterfaceAlias "VMware Network Adapter VMnet8" | Select-Object IPAddress
Test-Connection -ComputerName 192.168.50.130 -Count 2
Plantillas Persistentes para Interceptores
Para evitar configurar los escuchas en cada sesión, se debe generar un archivo de estado inicial. A diferencia de la configuración predeterminada que escucha en todas las interfaces, es más seguro y estable vincular el proxy a la IP específica del adaptador virtual, utilizando un puerto alternativo como el 8888.
Ejemplo de configuración JSON para cargar en el arranque del proyecto:
{
"proxy": {
"request_listeners": [
{
"certificate_mode": "per_host",
"listen_mode": "specific",
"listener_interface": "192.168.50.1",
"listener_port": 8888,
"running": true,
"support_invisible_proxying": true
}
]
},
"target": {
"scope": {
"exclude": [
{
"enabled": true,
"host": "^10\\..*",
"protocol": "https"
}
]
}
}
}
Automatización de Firefox mediante Políticas
En lugar de depender de extensiones gráficas que requieren interacción manual, el despliegue de proxies en Firefox puede automatizarse inyectando directivas en el perfil del usuario. Creando un archivo user.js en el directorio del perfil de la máquina virtual, las configuraciones de red se aplican de forma nativa e inmutable en cada inicio.
user_pref("network.proxy.type", 1);
user_pref("network.proxy.http", "192.168.50.1");
user_pref("network.proxy.http_port", 8888);
user_pref("network.proxy.ssl", "192.168.50.1");
user_pref("network.proxy.ssl_port", 8888);
user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1");
Gestión de Estados con vmrun
Los entornos de prueba se degradan rápidamente tras la instalación de múltiples herramientas. La utilización de la utilidad de línea de comandos vmrun permite orquestar la creación y reversión de instantáneas (snapshots) para distintos vectores de ataque, siendo fácilmente integrable en scripts de automatización de infraestructura.
# Listar máquinas activas en el entorno
vmrun -T ws list
# Crear punto de restauración limpio
vmrun -T ws snapshot "C:\VMs\Win10_Test\Win10_Test.vmx" "Clean_State"
# Revertir a estado base sin confirmación interactiva
vmrun -T ws revertToSnapshot "C:\VMs\Win10_Test\Win10_Test.vmx" "Clean_State"
Despliegue de Infraestructura de Clave Pública (PKI)
La inspección de tráfico TLS/SSL requiere que la máquina virtual confíe en la autoridad de certificación (CA) del interceptor. Generar certificados con curvas elípticas ofrece un rendimiento superior en el handshake y mayor eficiencia criptográfica.
Generación de la CA en la máquina anfitriona:
openssl ecparam -genkey -name prime256v1 -out custom_ca.key
openssl req -new -x509 -key custom_ca.key -out custom_ca.pem -days 1825 -subj "/CN=Custom Intercept CA"
Instalación desatendida en el almacén de Windows de la VM utilizando el binario nativo certutil:
$certPath = "\\192.168.50.1\share\custom_ca.pem"
certutil -addstore -f "ROOT" $certPath
Diagnóstico de Capa de Red y Transporte
Cuando la intercepción falla, el aislamiento del problema debe realizarse capa por capa:
- Reglas de Filtrado: Asegurar que el firewall del anfitrión permita el tráfico entrante al puerto del proxy mediante objetos nativos de Windows: ```
New-NetFirewallRule -DisplayName "Intercept Proxy" -Direction Inbound -Protocol TCP -LocalPort 8888 -Action Allow
- Validación de Transporte: Forzar una petición desde la VM ignorando advertencias locales para confirmar el túnel HTTP: ```
curl -v --proxy http://192.168.50.1:8888 --proxy-insecure https://example.org
- Verifiacción de Cadena de Confianza: Navegar a la interfaz web del proxy (ej.
http://192.168.50.1:8888) para descargar el certificado dinámico y comprobar que no se generan alertas deSEC_ERROR_UNKNOWN_ISSUERen el cliente tras su instalación.