Aller au contenu principal

Mode système de fichiers - Scanner de fichiers et de magasins de clés

S'applique à :
PEM / DER / PKCS#12 / PFXJKS / JCEKS KeystoresPrivate Key DetectionWindows Certificate Storev1.0.0
Statut

Implémenté - Disponible en v1.0.0. Développé en Rust avec walkdir + rayon pour le parcours parallèle et x509-parser pour l'analyse des certificats.

Vue d'ensemble​

Le mode système de fichiers effectue une analyse récursive des répertoires pour découvrir les certificats, les magasins de clés et les clés privées. Il utilise le parcours parallèle de fichiers assuré par walkdir et rayon, et analyse les certificats avec la crate x509-parser. En complément de l'analyse basée sur les fichiers, il peut facultativement énumérer le magasin de certificats Windows (via la crate schannel, couvrant les magasins LocalMachine et CurrentUser).

Fonctionnement​

Flux du mode système de fichiers

1

Parcours des répertoires

Parcourt récursivement les répertoires à l'aide de walkdir avec une profondeur maximale configurable

2

Filtrage par extension

Filtre les fichiers par extension (.jks, .p12, .pfx, .pem, .crt, .cer, .key) et exclut les chemins configurés

3

Traitement parallèle

Traite les fichiers découverts en parallèle à l'aide de rayon (4 threads par défaut)

4

Analyse selon le format

Sélectionne l'analyseur approprié : PEM, DER, PKCS#12/PFX, JKS/JCEKS ou clé privée

5

Analyse des certificats

Analyse les certificats X.509 via x509-parser pour extraire les algorithmes, les tailles de clés et l'expiration

6

Notation des risques

Calcule les scores de vulnérabilité quantique pour chaque actif découvert

Formats pris en charge​

📄 Format PEM

  • Certificats X.509 (.pem, .crt, .cer)
  • Clés privées (RSA, EC, PKCS#8 générique)
  • Clés publiques
  • Plusieurs blocs PEM par fichier

🔧 Format DER

  • Certificats X.509 encodés en binaire (.der, .cer)
  • Clés privées encodées en binaire
  • Analysés via x509-parser from_der

🔒 PKCS#12 / PFX

  • Fichiers .p12 et .pfx
  • Extraction des certificats
  • Détection des clés privées
  • Bundles protégés par mot de passe

☕ Magasins de clés Java

  • JKS (Java KeyStore)
  • JCEKS (Java Cryptography Extension KeyStore)
  • Énumération des alias
  • Prise en charge des magasins de clés protégés par mot de passe

🔑 Clés privées

  • Clés privées RSA
  • Clés privées EC
  • Clés encapsulées PKCS#8
  • Fichiers .key autonomes

💻 Magasins de certificats de l'OS

  • Magasin de certificats Windows (crate schannel) : magasins LocalMachine et CurrentUser
  • Activé via --scan-windows-certstore (choisissez le magasin avec --certstore-name : MY, ROOT, CA, TRUST ou ALL)

Utilisation​

Analyse de base​

# Scan current directory (default --path is .)
dke-scanner-agent filesystem

# Scan a specific directory recursively (recursive is true by default)
dke-scanner-agent filesystem --path /opt/applications

# Scan with output to a file
dke-scanner-agent filesystem --path /etc/ssl --output certs-report.json

# Scan and output in YAML format
dke-scanner-agent filesystem --path /srv --format yaml

Options en ligne de commande​

IndicateurDescriptionDéfautRequis
--path <PATH>Chemin du répertoire à analyser. (répertoire courant)Non
--recursiveAnalyse les sous-répertoires de façon récursivetrueNon
--max-depth <N>Profondeur de récursion maximale10Non
--extensions <EXT>Extensions de fichiers à analyser (séparées par des virgules).jks,.p12,.pfx,.pem,.crt,.cer,.keyNon
--exclude <PATHS>Répertoires à exclure (séparés par des virgules)node_modules,.git,targetNon
--threads <N>Nombre de threads de traitement parallèle4Non
--scan-windows-certstoreAnalyse le magasin de certificats Windows (LocalMachine et CurrentUser)falseNon
--certstore-name <NAME>Magasin de certificats Windows à analyser : MY, ROOT, CA, TRUST ou ALLALLNon
--output <FILE>Chemin du fichier de sortiestdoutNon
--format <FMT>Format de sortie : json, yaml, terminal ou htmljsonNon

Exemples avancés​

Architecture​

Le mode système de fichiers utilise walkdir pour le parcours récursif des répertoires et rayon pour le traitement parallèle des fichiers :

  1. Parcourt l'arborescence des répertoires jusqu'à la profondeur maximale configurée (10 par défaut), en conservant les fichiers qui correspondent aux extensions configurées et qui ne se trouvent pas dans un chemin exclu.
  2. Analyse les fichiers correspondants en parallèle selon le nombre de threads configuré.
  3. Énumère facultativement le magasin de certificats Windows (LocalMachine + CurrentUser) lorsque --scan-windows-certstore est défini.

L'analyse des certificats est assurée par la crate x509-parser, qui offre un décodage complet des certificats X.509 aux formats PEM et DER.

Exemple de sortie​

{
"scan_metadata": {
"scanner_version": "1.0.0",
"scan_mode": "filesystem",
"scan_date": "2025-01-30T15:45:22Z",
"scan_path": "/opt/applications",
"recursive": true,
"max_depth": 10
},
"summary": {
"files_scanned": 45678,
"keystores_found": 23,
"certificates_found": 156,
"private_keys_found": 67,
"total_findings": 246
},
"findings": [
{
"id": "fs-001",
"type": "keystore",
"file_path": "/opt/tomcat/conf/keystore.jks",
"format": "JKS",
"password_protected": true,
"certificates": [
{
"alias": "tomcat-ssl",
"subject": "CN=app.example.com",
"issuer": "CN=Example CA",
"not_after": "2025-12-31T23:59:59Z",
"algorithm": "RSA",
"key_size": 2048,
"has_private_key": true,
"quantum_vulnerable": true
}
],
"risk_assessment": {
"quantum_risk_score": 8.0,
"priority": "P1",
"severity": "HIGH"
}
},
{
"id": "fs-002",
"type": "certificate",
"file_path": "/etc/ssl/certs/server.crt",
"format": "PEM",
"certificate": {
"subject": "CN=www.example.com",
"algorithm": "ECDSA",
"curve": "P-256",
"quantum_vulnerable": true
},
"risk_assessment": {
"quantum_risk_score": 8.0,
"priority": "P1",
"severity": "HIGH"
}
}
]
}

Comportement par défaut​

Paramètres par défaut

Par défaut, le mode système de fichiers analyse le répertoire courant (.) de façon récursive jusqu'à 10 niveaux de profondeur avec 4 threads. Il recherche les fichiers portant les extensions .jks, .p12, .pfx, .pem, .crt, .cer et .key, tout en excluant automatiquement les répertoires node_modules, .git et target.

Dépannage​

Bonnes pratiques​