# Windows Credential Manager: Management von Identitäten & Secrets

TL;DR / Management Summary Der Windows Credential Manager (Anmeldeinformationsverwaltung) ist der zentrale Tresor für Web-Logins, Netzwerk-Freigaben und Zertifikate. Unter der Haube nutzt er die DPAPI (Data Protection API), um Secrets mit dem Passwort des Users zu verschlüsseln. Für Admins ist er essentiell, um “Passwort-Hopping” auf Fileshares zu verwalten und Identitäten für automatisierte Tasks (Task Scheduler) sicher zu hinterlegen.


# 1. Einführung & Architektur

Wie Windows Geheimnisse bewahrt.

Passwörter in Windows werden nicht einfach in Textdateien gespeichert. Sie landen im Windows Vault.

# Die Data Protection API (DPAPI)

Jedes Secret im Credential Manager wird mit einem Schlüssel verschlüsselt, der vom User-Passwort abgeleitet ist.

# Architektur-Diagramm (Mermaid)

graph TD
    APP[Browser / Outlook / Net Drive] -->|Request| WCM[Credential Manager]
    WCM -->|Auth| VAULT[Windows Vault / Filesystem]
    VAULT -->|Encrypted with| DPAPI[DPAPI Master Key]
    DPAPI -->|Derived from| PWD[User Password / TPM]
    
    subgraph "Storage Path"
    VAULT_FILE[%AppData%\Microsoft\Protect]
    end

# 2. Verwaltung in der Praxis

Aufräumen im Tresor.

# GUI Aufruf

control /name Microsoft.CredentialManager Hier finden Sie:

# CLI Verwaltung (cmdkey)

Admins nutzen cmdkey, um Passwörter für Skripte oder automatische Verbindungen zu hinterlegen.

# Neue Anmeldeinformation für einen Fileserver hinzufügen
cmdkey /add:fs01.firma.de /user:DOMAIN\User /pass:MeinSicheresPasswort

# Liste aller gespeicherten Windows-Credentials
cmdkey /list

# Ein Secret löschen
cmdkey /delete:fs01.firma.de

# 3. Deep Dive: Secrets Management für Admins

Sicherheit in Automatisierung.

Wie hinterlegt man ein Passwort für ein PowerShell-Skript, ohne es im Klartext in die Datei zu schreiben?

# Die PowerShell-Lösung (SecureString)

Wir nutzen den DPAPI-Schutz von PowerShell:

# Passwort verschlüsselt in eine Datei exportieren (Nur dieser User auf diesem PC kann sie lesen!)
read-host -assecurestring | convertfrom-securestring | out-file "C:\Secrets\password.txt"

# Passwort im Skript wieder einlesen
$password = cat "C:\Secrets\password.txt" | convertto-securestring
$cred = New-Object System.Management.Automation.PSCredential ("AdminUser", $password)

# 4. Day-2 Operations: Identitätsschutz & Hardening

Den Safe verstärken.

# LSA Protection

Schützen Sie den Prozess, der die Keys im RAM hält, vor Diebstahl (Mimikatz):

# Vault-Bereinigung via GPO

Sie können via GPO erzwingen, dass Netzwerk-Passwörter nach dem Abmelden gelöscht werden (besonders wichtig für Shared-Workstations).


# 5. Troubleshooting & “War Stories”

Wenn der Tresor klemmt.

# Top 3 Fehlerbilder

  1. Symptom: User wird ständig nach dem Passwort für ein Netzlaufwerk gefragt, obwohl “Speichern” geklickt wurde.

    • Ursache: Der Hostname in der GPO weicht vom Hostname im Credential Manager ab (z.B. IP vs. FQDN).
    • Lösung: Credentials immer auf den FQDN registrieren.
  2. Symptom: Passwort-Änderung im AD führt zu “Account Lockout” am PC.

    • Ursache: Im Credential Manager ist noch das alte Passwort für Outlook oder ein Netzlaufwerk hinterlegt. Die App versucht ständig, sich mit dem alten Key anzumelden.
    • Lösung: Den Tresor via control userpasswords2 (Erweitert -> Passwörter verwalten) leeren.
  3. Symptom: Skripte schlagen fehl, wenn sie als “Scheduled Task” laufen.

    • Ursache: Die DPAPI-Secrets des Admins sind nicht verfügbar, wenn kein interaktives Profil geladen ist.
    • Lösung: Task mit “Run only when user is logged on” testen oder Managed Service Accounts (gMSA) nutzen.

# “War Story”: Der vergessene Test-Admin

Ein Admin hinterlegte sein Domain-Admin Passwort via cmdkey auf einem Webserver, um Daten von einem Share zu ziehen. Er vergaß es zu löschen. Ein Angreifer kompromittierte die Web-App, erlangte Shell-Zugriff und las via cmdkey /list das Ziel aus. Er brauchte zwar das Passwort im Klartext, konnte aber durch den hinterlegten Token den Fileserver direkt angreifen. Lehre: Nutzen Sie niemals persönliche Admin-Accounts für automatisierte Aufgaben. Verwenden Sie Service-Accounts mit minimalen Rechten.


# 6. Monitoring & Auditing

Wer greift auf den Safe zu?

# Event ID 4648

Wird geloggt, wenn eine Anmeldung mit expliziten Anmeldeinformationen erfolgt (typisch für Credential Manager Nutzung).


# 7. Fazit & Empfehlung

Der Credential Manager ist ein Freund, wenn man seine Grenzen kennt.


# Anhang: Cheatsheet

Aufgabe Befehl
Tresor öffnen control keymgr.dll
Credential via PowerShell Get-Credential
Alle gespeicherten Targets cmdkey /list
LSA Status prüfen `Get-Process lsass

# Referenzen