Escáner de Vulns: manual del operador y catálogo de detección
Qué busca el escáner de qbit404, cómo darle un objetivo, qué hace cada check realmente, y cómo se prioriza la salida. Léelo antes de ejecutarlo sobre cualquier cosa que no sea tuya.
Qué es esta herramienta ¶
qbit404/scanner es un escáner no intrusivo dirigido por fingerprints y firmas. No explota. Sondea con peticiones seguras y bien conocidas y empareja respuestas contra un catálogo interno de firmas conocidas-vulnerables (etiquetadas con CVE), malas configuraciones, y perfiles malos conocidos de cabeceras / cookies / TLS. Los matchers son puro patrón + aritmética de versión; nada de lo que el escáner envía es destructivo ni amplificador de tasa.
Está pensado para sistemas que posees o tienes autorización escrita para probar. Apuntarlo a terceros es delito en la mayoría de jurisdicciones.
Qué cubre ¶
El catálogo trae 7 módulos. Los módulos se activan/desactivan por escaneo.
1. Higiene TLS ¶
- Validez de cadena de certificados, expiración < 30 días
- Auto-firmado en producción
- Algoritmo de firma débil en cert (MD5, SHA-1, RSA < 2048)
- Enumeración de cipher suites; marca: NULL, EXPORT, RC4, 3DES, modo CBC en TLS 1.0/1.1
- Versiones de protocolo: cualquier TLS 1.0 / 1.1 / SSL 3.0 / SSL 2.0 aceptado
- HSTS ausente / max-age muy bajo / sin
includeSubDomains - Ausencia de OCSP stapling
- Heartbleed (CVE-2014-0160) — envía un heartbeat benigno con longitud normal, comprueba longitud de respuesta
- ROBOT (CVE-2017-13099) — fingerprint, sin explotación
- Preparación PQ: sondea por anuncio KEX híbrido (X25519MLKEM768); marca ausencia en endpoints de cara a internet
2. Cabeceras HTTP y cookies ¶
- Faltan:
Content-Security-Policy,X-Content-Type-Options,X-Frame-Options/frame-ancestors,Referrer-Policy,Permissions-Policy - CORS:
Access-Control-Allow-Origin: *con credenciales - Cookies sin
Secure,HttpOnly,SameSite - Disclosure de Server / X-Powered-By / X-AspNet-Version
Cache-Controlen endpoints autenticados
3. Fingerprints de frameworks / CMS conocidos ¶
El escáner pasea por una lista de rutas trilladas (/wp-login.php, /administrator/, /.git/config, /server-status, /actuator/env, /api/v1/swagger.json, /.env, ...) y empareja firmas de cuerpo / cabecera contra el feed CVE:
- WordPress < 6.4.x —
/wp-json/wp/v2/usersexpuesto (enumeración estilo CVE-2017-5487) - Drupal < 7.58 — fingerprint Drupalgeddon2 (CVE-2018-7600)
- Joomla < 3.4.6 — fingerprint cadena RCE
- Apache HTTP < 2.4.49/2.4.50 — Path traversal (CVE-2021-41773 / 42013)
- nginx < 1.20.0 — heap overflow del resolver DNS (CVE-2021-23017)
- Tomcat < 9.0.71 — ghostcat (CVE-2020-1938)
- Spring Boot Actuator
/env,/heapdump,/jolokiaexpuestos - Jenkins script console, lectura anónima
- Confluence (CVE-2022-26134, CVE-2023-22515) fingerprints
- Atlassian Jira
/rest/api/2/user/picker?query= - GitLab enumeración de usuarios sin auth
- Log4Shell (CVE-2021-44228) — fingerprint JNDI en cabeceras HTTP vía callback canary (solo si proporcionas tu propio host canary)
4. Superficie API / OpenAPI ¶
- Spec en
/openapi.json//swagger.json//v2/api-docs— enumera endpoints, marca cualquiera que devuelva 200 a anónimo - Fingerprints BOLA / IDOR: parámetros
iden path cuyas respuestas cambian pero el alcance de auth no - Páginas de error verbosas que filtran stack traces
- Introspección GraphQL activa en producción
5. Autenticación y sesión ¶
- Formularios de login que postean por HTTP
- La respuesta de login filtra enumeración de usuarios (error distinto para "no existe ese usuario" vs "contraseña incorrecta")
- JWT
alg: noneaceptado - JWT firmado con secreto HS256 débil (diccionario offline contra un token capturado)
- OAuth: redirect URIs abiertos, PKCE ausente en clientes públicos
- Fijación de sesión: el servidor acepta cookie de sesión pre-establecida
6. Cloud / metadata ¶
- S3 buckets abiertos vía convenciones de nombrado conocidas
- Containers de Azure blob públicos
- Listado de buckets GCS sin auth
- Kubernetes
/api/v1/namespacesanónimo - Endpoint de metadata cloud alcanzable a través de sondas SSRF (solo con opt-in explícito del objetivo)
- Registry docker público
/v2/_catalog
7. Auditoría de preparación cuántica ¶
- Endpoint TLS anuncia o no KEX híbrido PQ
- El campo
algdel JWT incluye solo EdDSA / RSA-PSS — marca para migración híbrida - Algoritmo de firma del certificado — marca solo-clásicos para activos con validez > 5a
- Frescura de la cadena de cert de firma de código
- Fingerprint
Server:revelado mapeado contra el tracker PQ-ready de qbit404
Qué no hace ¶
- No explota. El check de Log4Shell requiere que proporciones un host canary para que el escáner confirme un callback; nunca carga un payload por JNDI.
- No hace brute-force a formularios de login en vivo más allá del diccionario offline de JWT.
- No hace DoS, amplificación de tráfico ni tormentas de sesión.
- No pivota. Cada objetivo se escanea de forma aislada.
Cómo usarlo ¶
El frontend en /tools/scanner te guía por:
- Check de autorización: confirma que tienes permiso para escanear el objetivo.
- Entrada de objetivo:
https://example.como un rango IP que poseas. - Selección de módulos: TLS, cabeceras, CMS, API, auth, cloud, PQ — toggle.
- Intensidad: ligera (10 req), normal (50 req), exhaustiva (250 req). Por defecto normal.
- Ejecutar.
El resultado es un informe priorizado:
- Crítico: RCE / bypass de auth conocido con exploit público. Suelta todo.
- Alto: versión vulnerable + exploit público + config estándar. Parchea esta semana.
- Medio: misconfig con vector de ataque creíble. Planifica.
- Bajo: higiene. Mete en el próximo pase de hardening trimestral.
- Info: sin hallazgo, solo señal.
Cada hallazgo incluye: id CVE / CWE, regla origen, evidencia cruda (snippet de request/response), y un párrafo de remediación con el objetivo de upgrade o el flag de config.
Formatos de salida ¶
- Informe HTML (por defecto): priorizado inline, listo para adjuntar a un ticket
- SARIF 2.1.0: tab de code-scanning en GitHub / GitLab
- JSON: pipe a tu SIEM
- CycloneDX VEX: para tracking alineado con SBOM
Frecuencia ¶
Un escaneo es una foto. Para servicios con despliegues frecuentes, agéndalo en CI post-deploy y en un cron semanal. El coste de un escaneo contra tu propia infra es despreciable; el coste de no saber, no.
Falsos positivos ¶
- La detección por versión a veces falla detrás de proxies inversos que limpian la cabecera
Server. El escáner cae a fingerprints de comportamiento, que son más ruidosos. - Los WAFs (Cloudflare, AWS WAF) atrapan y devuelven 403 a algunas sondas — marcado como
WAF_BLOCKED. Re-ejecuta autenticado para saltarte el WAF y evaluar el origen. - Los módulos TLS pueden malinterpretar endpoints que presentan distintas cipher suites por SNI.
Si te encuentras uno, abre un issue con el par request/response; el catálogo se actualiza semanalmente.
Legal ¶
Es tuyo cuando lo apuntas a tus cosas. No es tuyo cuando lo apuntas a las cosas de otros. El escáner se niega a correr contra dominios en su deny-list incorporado (navegadores, gobierno, bancos) sin un flag explícito --tengo-autorizacion-escrita, e incluso entonces escribe una entrada de audit-log en tu máquina local.
El escaneo de vulnerabilidades es higiene, no un sustituto del diseño. El catálogo solo encuentra lo ya visto. Usa el cazador 0-day para el resto.
OPS RELACIONADAS
Dentro de la suite PQC de NIST: ML-KEM (FIPS 203), ML-DSA (FIPS 204), SLH-DSA (FIPS 205)
Cuatro años después de nombrar a los finalistas de ronda 3, los estándares están firmados. Aquí está qué hace cada uno, qué parámetro elegir en cada nivel de seguridad, y la llamada mínima en Python y TypeScript.
Q-day: cómo los analistas fijan la ventana entre 2029 y 2034
Los pronósticos convergen en una ventana de cinco años. Comparamos seis estimaciones publicadas lado a lado, mostramos qué asume cada una, y enviamos una calculadora del teorema de Mosca para que derives tu propio plazo de migración.
Grover muerde a AES: por qué 128 ha muerto y 256 es tu nueva base
El algoritmo de Grover da un speedup cuadrático sobre la búsqueda de clave por fuerza bruta. AES-128 baja a ~64 bits efectivos. AES-256 se queda en ~128 bits. El arreglo es una línea de config — pero hay que encontrar cada sitio donde vive estado de cifrado.