
Proxy inverso ciego al contenido para escaneo de seguridad con protección de exposición
Un proxy inverso local para el escaneo de seguridad ciego al contenido.
Go · HTTPS local · HTTP y WebSocket · Tor / SOCKS5
El razonamiento / Cómo funciona / Inicio rápido / Certificados / Tor / CAPTCHA / Evidencia / Desarrollo
Las pruebas de seguridad son una disciplina de comportamiento. Lo que hace una aplicación -- cómo maneja la entrada, qué controles aplica, qué refleja de vuelta, cómo falla -- es lo que importa. La identidad debería ser irrelevante para ese análisis.
Las herramientas de seguridad asistidas por IA no funcionan así. Ven el objetivo -- su dominio, su marca, su organización -- y forman opiniones. Suavizan los hallazgos para servicios conocidos. Se niegan a sondear según quién es el objetivo. Se niegan a probar rutas que asocian con un proveedor concreto. La IA está tomando decisiones que pertenecen al operador, y las toma basándose en el contexto en lugar del comportamiento.
Este es el eje equivocado. El operador autoriza el alcance. La herramienta evalúa el comportamiento. Son responsabilidades diferentes y no deberían colapsar en una sola. Pero hoy, cada herramienta asistida por IA tiene la identidad completa del objetivo conectada a cada decisión que toma -- qué probar, con cuánta fuerza insistir, si informar.
Blinder es un punto de partida: una herramienta práctica, pero también una postura de que las pruebas deben separarse del contexto. Este es un intento temprano de difundir la idea. Si el enfoque resuena, agradeceríamos mejores implementaciones, contribuciones o simplemente la conversación sobre dónde debería estar la línea.
Eliminar la identidad no significa eliminar el contenido. Ahí es donde fallan la mayoría de los enfoques ingenuos. Las vulnerabilidades son observables como cambios en el contenido de la respuesta -- mensajes de error, entrada reflejada, datos que la sesión no debería alcanzar, resultados calculados que revelan evaluación del lado del servidor. Si un proxy eliminara este contenido, ocultaría la evidencia que el probador está buscando.
El requisito es quirúrgico: eliminar la identidad preservando las señales de comportamiento. Una página que no pertenece a nadie pero se comporta exactamente como la original -- incluso cuando se comporta mal.
Blinder es un proxy inverso HTTPS local que se sitúa entre el escáner de IA (o el navegador) y el objetivo. Reescribe la identidad -- dominios, marcas, nombres de organizaciones, correos electrónicos, direcciones IP -- mientras preserva el comportamiento funcional de la aplicación: sus errores, sus reflejos, sus controles de seguridad, sus códigos de estado, su estructura de contenido.
Para la IA posterior, el objetivo es una aplicación anónima alojada localmente en https://127.0.0.1:8099. Ninguna marca que reconocer. Ningún dominio sobre el que formarse una opinión. La IA prueba lo que la aplicación hace, no quién es.
Esto es el escaneo ciego al contenido: el operador controla quién es el objetivo; la IA se centra en lo que hace.
El contenido de reemplazo es parte de la corrección: relleno neutro para visualización, valores reversibles para datos de la aplicación, y diagnósticos y comportamiento de control preservados. Los avisos de eliminación generados no pertenecen a las páginas.
| Depuración de contenido | El texto de visualización se reemplaza con relleno de prosa neutro; los elementos interactivos (botones, etiquetas, controles de formulario) y el contenido de diagnóstico (mensajes de error, trazas de pila, marcado reflejado) se preservan. Los tokens de identidad, las referencias de dominio y los valores de cookies se reescriben en cuerpos HTTP, cabeceras y texto de WebSocket. --preserve-content mantiene el texto de visualización original para la depuración solo de identidad. |
| Integridad de recursos | El SRI original se verifica por referencia y se recalcula para los recursos reescritos, con los hashes CSP correspondientes traducidos. Las referencias versionadas vinculan los bytes servidos; se preserva la integridad de los recursos externos. |
| Caché de respuestas | Validadores de caché ascendente/descendente separados. La revalidación 304 fusiona cabeceras de política de seguridad. Desalojo consciente de Vary. |
| Manejo de sesiones | Nombres de cookies reversibles con depuración por valor. Enrutamiento multi-origen mediante --extra-origin con nombres de host alias deterministas, enrutamiento por cabecera Host y traducción de origen CORS. |
| Retransmisión de CAPTCHA | Cola de desafíos orientada al operador y orígenes de proveedor separados. Los recursos enrutados por Tor mantienen las cookies, CSP y CORS del proveedor separados del objetivo y del operador. |
| Enrutamiento privado | HTTP ascendente y WebSocket a través de Tor SOCKS5 con resolución remota de nombres de host. Los fallos de Tor son errores graves, nunca alternativas silenciosas. |
| HTTPS local | CA local con vida útil de 90 días y renovación automática; los certificados hoja de sesión se firman al vuelo. Confía en la CA una vez -- añadir orígenes o cambiar alias nunca requiere volver a confiar. Modo efímero disponible. |
| Evidencia | HAR previo a la depuración con persistencia basada en diario, manifiesto de solicitudes con recuentos de depuración/fuga por solicitud, mapeos de dominio e informe de depuración. Las comparaciones de respuestas emparejadas comprueban la fidelidad del tamaño en bytes y si los cambios de contenido/estado sobreviven al enmascaramiento. Las comprobaciones de preservación de señales registran el comportamiento verificado y los defectos restantes. |
Consulta comportamiento soportado y puertas de entrega para el estado de implementación y las limitaciones conocidas.
Compila con Go 1.26+. El binario no tiene dependencia de tiempo de ejecución externa.
git clone https://github.com/Splinters-io/blinder.git
cd blinder
make build
./blinder --preflight
Sigue el consejo sobre certificados específico del sistema operativo, luego inicia una sesión:
capture_dir=$(mktemp -d)
./blinder --target https://your-authorized-target.example \
--identity YourOrganisation \
--har "$capture_dir/session.har" \
--output "$capture_dir/output"
Apunta tu navegador o escáner a https://127.0.0.1:8099. Añade múltiples tokens de identidad con flags --identity repetidos. Detén con Ctrl-C para guardar la evidencia de la sesión.
Usa --config (-c) para cargar los valores predeterminados desde un archivo YAML. Los flags de CLI anulan el archivo.
# blinder.yaml
listen: "127.0.0.1:9443"
target: "https://example.com"
alias: "target-001.local"
identity:
- "ExampleCorp"
- "example.com"
output: "/tmp/blinder-output"
captcha_config: "captcha.yaml"
no_verify_tls: true
tor:
enabled: false
addr: "127.0.0.1:9050"
har:
path: "/tmp/session.har"
max_body: 10485760