Dateisystemmodus – Datei- & Keystore-Scanner
Dateisystemmodus – Datei- & Keystore-Scanner
Rekursive Erkennung von Zertifikaten, Keystores und privaten Schlüsseln über Verzeichnisse und OS-Zertifikatspeicher hinweg
Implementiert - Verfügbar ab v1.0.0. Entwickelt in Rust unter Verwendung von walkdir + rayon für den parallelen Durchlauf und x509-parser für das Zertifikatsparsing.
Überblick
Der Dateisystemmodus führt ein rekursives Scannen von Verzeichnissen durch, um Zertifikate, Keystores und private Schlüssel zu erkennen. Er verwendet einen parallelen Dateidurchlauf, angetrieben von walkdir und rayon, und parst Zertifikate mit dem x509-parser-Crate. Zusätzlich zum dateibasierten Scannen kann er optional den Windows-Zertifikatspeicher enumerieren (über das schannel-Crate, das die LocalMachine- und CurrentUser-Speicher abdeckt).
Funktionsweise
Ablauf des Dateisystemmodus
Verzeichnisdurchlauf
Durchläuft Verzeichnisse rekursiv mit walkdir bei konfigurierbarer maximaler Tiefe
Erweiterungsfilterung
Filtert Dateien nach Erweiterung (.jks, .p12, .pfx, .pem, .crt, .cer, .key) und schließt konfigurierte Pfade aus
Parallele Verarbeitung
Verarbeitet erkannte Dateien parallel mit rayon (Standard 4 Threads)
Formatspezifisches Parsing
Wählt den passenden Parser: PEM, DER, PKCS#12/PFX, JKS/JCEKS oder privater Schlüssel
Zertifikatsanalyse
Parst X.509-Zertifikate über x509-parser, um Algorithmen, Schlüsselgrößen und Ablaufdatum zu extrahieren
Risikobewertung
Berechnet Quantenanfälligkeitsscores für jedes erkannte Asset
Unterstützte Formate
PEM-Format
- X.509-Zertifikate (.pem, .crt, .cer)
- Private Schlüssel (RSA, EC, generisches PKCS#8)
- Öffentliche Schlüssel
- Mehrere PEM-Blöcke pro Datei
DER-Format
- Binär kodierte X.509-Zertifikate (.der, .cer)
- Binär kodierte private Schlüssel
- Geparst über x509-parser from_der
PKCS#12 / PFX
- .p12- und .pfx-Dateien
- Zertifikatsextraktion
- Erkennung privater Schlüssel
- Passwortgeschützte Bundles
Java-Keystores
- JKS (Java KeyStore)
- JCEKS (Java Cryptography Extension KeyStore)
- Alias-Enumeration
- Unterstützung passwortgeschützter Keystores
Private Schlüssel
- Private RSA-Schlüssel
- Private EC-Schlüssel
- PKCS#8-verpackte Schlüssel
- Eigenständige .key-Dateien
OS-Zertifikatspeicher
- Windows-Zertifikatspeicher (schannel-Crate): LocalMachine- & CurrentUser-Speicher
- Aktiviert über --scan-windows-certstore (wählen Sie den Speicher mit --certstore-name: MY, ROOT, CA, TRUST oder ALL)
Verwendung
Einfaches Scannen
# 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
Befehlszeilenoptionen
| Flag | Beschreibung | Standard | Erforderlich |
|---|---|---|---|
| --path <PATH> | Zu scannender Verzeichnispfad | . (aktuelles Verzeichnis) | Nein |
| --recursive | Unterverzeichnisse rekursiv scannen | true | Nein |
| --max-depth <N> | Maximale Rekursionstiefe | 10 | Nein |
| --extensions <EXT> | Zu scannende Dateierweiterungen (kommagetrennt) | .jks,.p12,.pfx,.pem,.crt,.cer,.key | Nein |
| --exclude <PATHS> | Auszuschließende Verzeichnisse (kommagetrennt) | node_modules,.git,target | Nein |
| --threads <N> | Anzahl paralleler Verarbeitungs-Threads | 4 | Nein |
| --scan-windows-certstore | Windows-Zertifikatspeicher scannen (LocalMachine und CurrentUser) | false | Nein |
| --certstore-name <NAME> | Zu scannender Windows-Certstore: MY, ROOT, CA, TRUST oder ALL | ALL | Nein |
| --output <FILE> | Pfad der Ausgabedatei | stdout | Nein |
| --format <FMT> | Ausgabeformat: json, yaml, terminal oder html | json | Nein |
Erweiterte Beispiele
Architektur
Der Dateisystemmodus verwendet walkdir für den rekursiven Verzeichnisdurchlauf und rayon für die parallele Dateiverarbeitung:
- Durchläuft den Verzeichnisbaum bis zur konfigurierten maximalen Tiefe (Standard 10) und behält Dateien, die den konfigurierten Erweiterungen entsprechen und nicht in einem ausgeschlossenen Pfad liegen.
- Parst die passenden Dateien parallel über die konfigurierte Thread-Anzahl.
- Enumeriert optional den Windows-Zertifikatspeicher (LocalMachine + CurrentUser), wenn
--scan-windows-certstoregesetzt ist.
Das Zertifikatsparsing wird vom x509-parser-Crate übernommen, das die vollständige Dekodierung von X.509-Zertifikaten sowohl aus dem PEM- als auch aus dem DER-Format bereitstellt.
Beispielausgabe
{
"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"
}
}
]
}
Standardverhalten
Standardmäßig scannt der Dateisystemmodus das aktuelle Verzeichnis (.) rekursiv bis zu 10 Ebenen tief mit 4 Threads. Er sucht nach Dateien mit den Erweiterungen .jks, .p12, .pfx, .pem, .crt, .cer und .key und schließt dabei automatisch die Verzeichnisse node_modules, .git und target aus.