Introduction — Chasse aux garanties et OSINT
Les portails SafeBase exposés servent deux audiences à la fois :
- Les prospects qui ont besoin d'une preuve de votre posture de sécurité
- Les chercheurs en sécurité (équipes bleues et rouges)
Chaque coche verte révèle un contrôle qui (supposément) existe aujourd'hui ; chaque coche manquante est un indice tout aussi éloquent sur ce qui n'existe pas.
Ce que fait cette méthode de détection
L'approche décrite dans cet article :
- Collecte chaque titre de contrôle directement depuis le corps HTML via Nuclei en mode headless
- Normalise ces titres en résultats lisibles par machine via un unique gabarit basé sur des expressions régulières
- Produit des correspondances JSON/CLI des contrôles de sécurité internes
Pourquoi collecter ces données ?
Les référentiels de conformité tels que :
- ISO 27001
- SOC 2
- PCI-DSS
- Réglementations régionales sur la vie privée
…exigent des preuves que les contrôles de sécurité sont en place et opérationnels.
SafeBase simplifie cela en supprimant la nécessité d'interminables échanges de courriels et de demandes de documents.
Pourquoi scraper votre propre Trust Centre ?
Même si vous l'avez construit, les raisons sont solides :
Assurance continue
Les auditeurs attendent de plus en plus des preuves permanentes en temps réelDétection des changements
Les noms de contrôles, les regroupements ou les politiques peuvent évoluer après des mises à jour ou des acquisitionsMappages tiers
La sortie JSON permet la mise en correspondance avec des référentiels comme NIST 800-53
Valeur pour l'équipe bleue vs. l'équipe rouge
| Équipe | Avantage |
|---|---|
| Équipe Bleue | S'assure que les déclarations publiques restent exactes |
| Équipe Rouge | Identifie les lacunes en comparant avec les bibliothèques de contrôles internes |
Détection
La revue manuelle fonctionne, mais ne passe pas à l'échelle.
Cette approche utilise plutôt ProjectDiscovery / Nuclei, un outil de scan rapide propulsé par des gabarits YAML.
Pourquoi Nuclei ?
- Détection pilotée par gabarit
- Scan haute vitesse
- Facilement personnalisable
- Idéal pour l'automatisation à grande échelle
Matchers
Le gabarit comprend 70 matchers.
Exemples de matchers avec expressions régulières
- 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")?']
Techniques d'expressions régulières utilisées
| Problème | Solution |
|---|---|
| Casse différente | Indicateur (?i) |
| Espaces/sauts de ligne mixtes | \s+ |
| Écart inconnu entre titre et icône | [\s\S]{0,600}? |
Élimination des faux positifs
Un matcher DSL garantit une précision accrue :
- type: dsl
name: names
dsl:
- 'status_code == 200'
- 'contains_any(body, "Powered by SafeBase")'
condition: and
Ce que cela vérifie
Les deux conditions doivent être vraies :
- Le code de statut de la réponse est 200
- Le HTML contient "Powered by SafeBase"
Contournement du WAF Cloudflare
La plupart des portails SafeBase se trouvent derrière le WAF Cloudflare, qui bloque les tentatives de scraping.
Solution : Mode headless
Via l'exécution de Chromium headless de Nuclei :
- Exécute les défis JavaScript
- Contourne le Managed Challenge de Cloudflare
- Rend le contenu dynamique
Configuration headless
headless:
- steps:
- action: navigate
args:
url: "{{BaseURL}}"
- action: sleep
args:
duration: 1s
Détail
navigate
Lance Chromium et charge l'URL ciblesleep (1s)
Permet :- L'exécution JavaScript
- La pose des cookies
- Le rendu complet de la page
Augmenter le délai si le HTML apparaît incomplet.
Dépannage
Si des résultats sont manquants :
- Votre IP est peut-être bloquée
- Utiliser un proxy si nécessaire
Scan à grande échelle
1. Constituer votre liste de cibles
# domains.txt
https://trust.gitlab.com
https://security.projectdiscovery.io
https://trust.your-vendor-here.com
Vous pouvez également inclure :
- Des sous-domaines
- Des points de terminaison explorés
2. Lancer Nuclei avec concurrence
nuclei \
-t safebase-checks-enabled.yaml \
-headless \
-l matches.txt \
-c 50 \
-o safebase-scan.json
Options clés
| Option | Rôle |
|---|---|
-l |
Fichier d'entrée |
-c 50 |
Navigateurs parallèles (gourmand en ressources) |
-o |
Fichier de sortie |
Options de sortie
- JSON
- CSV
- Stdout
Vous pouvez transmettre les résultats à :
- S3
- Slack
- SIEM
Dépôt de gabarits
https://github.com/rxerium/internal-security-detect
3. Automatiser via CI/CD
Exemple avec 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
Réflexions finales
Cette technique se limite aux organisations utilisant SafeBase, mais elle illustre un concept puissant :
L'OSINT passif peut croiser la conformité, l'assurance et la détection.
En exploitant les portails de confiance accessibles au public, les chercheurs peuvent :
- Analyser les référentiels de contrôle
- Valider les déclarations de sécurité
- Détecter les changements automatiquement
…le tout sans authentification ni accès direct au système.