Mode système de fichiers - Scanner de fichiers et de magasins de clés
Mode système de fichiers - Scanner de fichiers et de magasins de clés
Découverte récursive de certificats, de magasins de clés et de clés privées dans les répertoires et les magasins de certificats du système d'exploitation
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
Parcours des répertoires
Parcourt récursivement les répertoires à l'aide de walkdir avec une profondeur maximale configurable
Filtrage par extension
Filtre les fichiers par extension (.jks, .p12, .pfx, .pem, .crt, .cer, .key) et exclut les chemins configurés
Traitement parallèle
Traite les fichiers découverts en parallèle à l'aide de rayon (4 threads par défaut)
Analyse selon le format
Sélectionne l'analyseur approprié : PEM, DER, PKCS#12/PFX, JKS/JCEKS ou clé privée
Analyse des certificats
Analyse les certificats X.509 via x509-parser pour extraire les algorithmes, les tailles de clés et l'expiration
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
| Indicateur | Description | Défaut | Requis |
|---|---|---|---|
| --path <PATH> | Chemin du répertoire à analyser | . (répertoire courant) | Non |
| --recursive | Analyse les sous-répertoires de façon récursive | true | Non |
| --max-depth <N> | Profondeur de récursion maximale | 10 | Non |
| --extensions <EXT> | Extensions de fichiers à analyser (séparées par des virgules) | .jks,.p12,.pfx,.pem,.crt,.cer,.key | Non |
| --exclude <PATHS> | Répertoires à exclure (séparés par des virgules) | node_modules,.git,target | Non |
| --threads <N> | Nombre de threads de traitement parallèle | 4 | Non |
| --scan-windows-certstore | Analyse le magasin de certificats Windows (LocalMachine et CurrentUser) | false | Non |
| --certstore-name <NAME> | Magasin de certificats Windows à analyser : MY, ROOT, CA, TRUST ou ALL | ALL | Non |
| --output <FILE> | Chemin du fichier de sortie | stdout | Non |
| --format <FMT> | Format de sortie : json, yaml, terminal ou html | json | Non |
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 :
- 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.
- Analyse les fichiers correspondants en parallèle selon le nombre de threads configuré.
- Énumère facultativement le magasin de certificats Windows (LocalMachine + CurrentUser) lorsque
--scan-windows-certstoreest 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
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.