Zum Hauptinhalt springen

Dateisystemmodus – Datei- & Keystore-Scanner

Gilt für:
PEM / DER / PKCS#12 / PFXJKS- / JCEKS-KeystoresErkennung privater SchlüsselWindows-Zertifikatspeicherv1.0.0
Status

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

1

Verzeichnisdurchlauf

Durchläuft Verzeichnisse rekursiv mit walkdir bei konfigurierbarer maximaler Tiefe

2

Erweiterungsfilterung

Filtert Dateien nach Erweiterung (.jks, .p12, .pfx, .pem, .crt, .cer, .key) und schließt konfigurierte Pfade aus

3

Parallele Verarbeitung

Verarbeitet erkannte Dateien parallel mit rayon (Standard 4 Threads)

4

Formatspezifisches Parsing

Wählt den passenden Parser: PEM, DER, PKCS#12/PFX, JKS/JCEKS oder privater Schlüssel

5

Zertifikatsanalyse

Parst X.509-Zertifikate über x509-parser, um Algorithmen, Schlüsselgrößen und Ablaufdatum zu extrahieren

6

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​

FlagBeschreibungStandardErforderlich
--path <PATH>Zu scannender Verzeichnispfad. (aktuelles Verzeichnis)Nein
--recursiveUnterverzeichnisse rekursiv scannentrueNein
--max-depth <N>Maximale Rekursionstiefe10Nein
--extensions <EXT>Zu scannende Dateierweiterungen (kommagetrennt).jks,.p12,.pfx,.pem,.crt,.cer,.keyNein
--exclude <PATHS>Auszuschließende Verzeichnisse (kommagetrennt)node_modules,.git,targetNein
--threads <N>Anzahl paralleler Verarbeitungs-Threads4Nein
--scan-windows-certstoreWindows-Zertifikatspeicher scannen (LocalMachine und CurrentUser)falseNein
--certstore-name <NAME>Zu scannender Windows-Certstore: MY, ROOT, CA, TRUST oder ALLALLNein
--output <FILE>Pfad der AusgabedateistdoutNein
--format <FMT>Ausgabeformat: json, yaml, terminal oder htmljsonNein

Erweiterte Beispiele​

Architektur​

Der Dateisystemmodus verwendet walkdir für den rekursiven Verzeichnisdurchlauf und rayon für die parallele Dateiverarbeitung:

  1. 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.
  2. Parst die passenden Dateien parallel über die konfigurierte Thread-Anzahl.
  3. Enumeriert optional den Windows-Zertifikatspeicher (LocalMachine + CurrentUser), wenn --scan-windows-certstore gesetzt 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​

Standardeinstellungen

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.

Fehlerbehebung​

Bewährte Vorgehensweisen​