Introducción — Búsqueda de garantías y OSINT
Los portales de SafeBase expuestos sirven a dos audiencias a la vez:
- Prospectos que necesitan prueba de su postura de seguridad
- Investigadores de seguridad (equipos azul y rojo)
Cada marca verde revela un control que (supuestamente) existe hoy; cada marca ausente es una pista igual de clara sobre lo que no existe.
Qué hace este método de detección
El enfoque descrito en este artículo:
- Extrae cada título de control directamente del cuerpo HTML usando Nuclei en modo headless
- Normaliza esos títulos en hallazgos legibles por máquina mediante una única plantilla basada en expresiones regulares
- Genera coincidencias JSON/CLI de controles de seguridad internos
¿Por qué recopilar estos datos?
Los marcos de cumplimiento tales como:
- ISO 27001
- SOC 2
- PCI-DSS
- Regulaciones de privacidad regionales
…requieren evidencia de que los controles de seguridad están en vigor y funcionando.
SafeBase simplifica esto eliminando la necesidad de interminables intercambios de correos electrónicos y solicitudes de documentos.
¿Por qué hacer scraping de tu propio Trust Centre?
Aunque tú lo hayas construido, existen razones de peso:
Garantía continua
Los auditores esperan cada vez más evidencia continua y en tiempo realDetección de cambios
Los nombres de controles, agrupaciones o políticas pueden cambiar tras actualizaciones o adquisicionesMapeos de terceros
La salida en JSON permite mapear contra marcos como NIST 800-53
Valor para el equipo azul vs. equipo rojo
| Equipo | Beneficio |
|---|---|
| Equipo Azul | Garantiza que las afirmaciones públicas se mantengan precisas |
| Equipo Rojo | Identifica brechas comparando con bibliotecas de controles internos |
Detección
La revisión manual funciona, pero no escala.
En cambio, este enfoque usa ProjectDiscovery / Nuclei, una herramienta de escaneo rápido impulsada por plantillas YAML.
¿Por qué Nuclei?
- Detección basada en plantillas
- Escaneo de alta velocidad
- Fácilmente personalizable
- Ideal para automatización a gran escala
Matchers
La plantilla incluye 70 matchers.
Ejemplos de matchers con expresiones regulares
- type: regex
name: firewall
regex: ['(?i)Firewall(?:[\s\S]{0,600}?data-testid="enabled")?']
- type: regex
name: incident-response-policy
regex: ['(?i)Incident\s+Response\s+Policy(?:[\s\S]{0,600}?data-testid="enabled")?']
Técnicas de expresiones regulares utilizadas
| Problema | Solución |
|---|---|
| Diferentes capitalizaciones | Bandera (?i) |
| Espacios/saltos de línea mixtos | \s+ |
| Separación desconocida entre título e icono | [\s\S]{0,600}? |
Eliminación de falsos positivos
Un matcher DSL garantiza mayor precisión:
- type: dsl
name: names
dsl:
- 'status_code == 200'
- 'contains_any(body, "Powered by SafeBase")'
condition: and
Qué verifica esto
Ambas condiciones deben ser verdaderas:
- El código de estado de respuesta es 200
- El HTML contiene "Powered by SafeBase"
Evasión del WAF de Cloudflare
La mayoría de los portales SafeBase están detrás del WAF de Cloudflare, que bloquea los intentos de scraping.
Solución: Modo headless
Usando la ejecución de Chromium headless de Nuclei:
- Ejecuta desafíos JavaScript
- Evita el Managed Challenge de Cloudflare
- Renderiza contenido dinámico
Configuración headless
headless:
- steps:
- action: navigate
args:
url: "{{BaseURL}}"
- action: sleep
args:
duration: 1s
Descripción
navigate
Lanza Chromium y carga la URL objetivosleep (1s)
Permite:- Ejecución de JavaScript
- Establecimiento de cookies
- Renderizado completo de la página
Aumenta el retardo si el HTML aparece incompleto.
Resolución de problemas
Si faltan resultados:
- Tu IP puede estar bloqueada
- Usa un proxy si es necesario
Escaneo a gran escala
1. Construye tu lista de objetivos
# domains.txt
https://trust.gitlab.com
https://security.projectdiscovery.io
https://trust.your-vendor-here.com
También puedes incluir:
- Subdominios
- Endpoints rastreados
2. Ejecuta Nuclei con concurrencia
nuclei \
-t safebase-checks-enabled.yaml \
-headless \
-l matches.txt \
-c 50 \
-o safebase-scan.json
Banderas clave
| Bandera | Propósito |
|---|---|
-l |
Archivo de entrada |
-c 50 |
Navegadores en paralelo (consume muchos recursos) |
-o |
Archivo de salida |
Opciones de salida
- JSON
- CSV
- Stdout
Puedes reenviar resultados a:
- S3
- Slack
- SIEM
Repositorio de plantillas
https://github.com/rxerium/internal-security-detect
3. Automatizar mediante CI/CD
Ejemplo con GitHub Actions
jobs:
safebase-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
nuclei -t safebase-checks-enabled.yaml -headless -l domains.txt -c 50 -o results.json
- name: Upload artefact
uses: actions/upload-artifact@v4
with:
name: safebase-results
path: results.json
Reflexiones finales
Esta técnica se limita a organizaciones que usan SafeBase, pero demuestra un concepto poderoso:
El OSINT pasivo puede intersectarse con el cumplimiento, la garantía y la detección.
Al aprovechar los portales de confianza de acceso público, los investigadores pueden:
- Analizar marcos de control
- Validar afirmaciones de seguridad
- Detectar cambios automáticamente
…todo sin autenticación ni acceso directo al sistema.