Zugriff auf Windows verschlüsselte Dateien auf einem anderen PC

Ich bin neu in WIndows EFS und finde es sehr nützlich, außer mit einem Problem, kann nicht auf diese Dateien in einem anderen Windows-PC zugreifen. Ich finde einige Tutorials zum Zugriff auf andere Windows-PCs(1, 2). Nachdem ich sie gelesen habe, habe ich einige Fragen:

  • Nach dem Import des Verschlüsselungsschlüssels auf einen anderen PC, um auf die verschlüsselten Dateien auf diesem PC zuzugreifen, wird der Schlüssel für immer in diesem System gespeichert?
  • Wenn das Obige wahr ist, werden sie in der Lage sein zugriff auf andere verschlüsselte Dateien, die ich ihnen danach gebe?
Author: RogUE, 2015-08-10

2 answers

Nach dem Import des Verschlüsselungsschlüssels auf einen anderen PC, um auf die verschlüsselten Dateien auf diesem PC zuzugreifen, wird der Schlüssel für immer in diesem System gespeichert?

Nun, solange ihr Windows-Konto existiert und solange sie nicht löschen den Schlüssel (zB über den Zertifikatmanager, certmgr.msc). Abgesehen davon hat es kein Selbstzerstörungsdatum.

Wenn das Obige wahr ist, können sie dann auf andere verschlüsselte Dateien zugreifen, die ich ihnen danach gebe das?

Ja. (Im Allgemeinen ist es ziemlich dumm, jemand anderem Ihren eigenen EFS-Schlüssel zu geben.)

Denken Sie stattdessen daran, dass diese Schlüssel wie SSL-Zertifikate mit einer öffentlichen und einer privaten Hälfte sind. Unter Eigenschaften → Erweitert gibt es eine Liste aller Benutzer, die Zugriff haben sollen. Sie können also den öffentlichen Schlüssel einer anderen Person (das Zertifikat) importieren und der Liste für Ihre Dateien hinzufügen.

 3
Author: user1686,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-08-10 16:31:34

EFS wurde entwickelt, um Dateien vor Zugriff in Szenarien zu schützen, in denen ein nicht autorisierter Benutzer die Festplatte lesen kann, zum Beispiel:

  • ein Mitglied der Gruppe Administratoren, das ACL-Berechtigungen ändern kann, oder
  • eine Person mit physischem Zugriff auf den Computer entfernt die Festplatte und installiert sie auf einem anderen Computer, über den sie die volle Kontrolle haben

In eigenständigen Installationen generiert Windows automatisch ein selbstsigniertes EFS-Zertifikat, wenn ein Benutzer verschlüsselt ihre erste Datei. Standardmäßig ist dies der einzige private Schlüssel, der Dateien entschlüsseln kann. Benutzer, die auf EFS angewiesen sind, sollten immer:

  • Exportieren Sie ihr EFS-Zertifikat (einschließlich des privaten Schlüssels) und speichern Sie es an einem sicheren Ort oder
  • sichern Sie ihre Dateien an einem Ziel, das nicht mit demselben EFS-Schlüssel verschlüsselt ist (z. B. auf einem Flash-Laufwerk, das nicht verschlüsselt ist)

Die ursprüngliche Frage verweist bereits auf Anleitungen zum Exportieren und importieren des EFS-Zertifikats eines Benutzers. In dieser Antwort wiederholen wir einfach, dass EFS Dateien mit einem Zertifikat verschlüsselt, das im persönlichen Zertifikatspeicher des Benutzers gespeichert ist:

certmgr.msc-Aktueller Benutzer\Personal\Zertifikate

Hinweis: In Unternehmensumgebungen ist es üblich, ein 'Data Recovery Agent' (DRA) - Zertifikat mithilfe einer Gruppenrichtlinienobjekteinstellung anzugeben. Wenn ein DRA-Zertifikat angegeben wird, werden verschlüsselte Dateien hinzugefügt. Auf diese Weise können Dateien entweder mit dem ursprünglichen EFS entschlüsselt werden privater Schlüssel des Zertifikats oder der private Schlüssel DRA. In Stand-Alone-Umgebungen ist dies ebenfalls möglich, jedoch nicht üblich.

Das Windows-Betriebssystem speichert das EFS-Zertifikat eines Benutzers in geschützter Form im Profilverzeichnis dieses Benutzers. Es ist relativ einfach, diesen Schlüssel mit einigen speziellen Tools wiederherzustellen, wenn:

  • auf das Profilverzeichnis des Benutzers kann zugegriffen werden (normalerweise, C:\Users\<Username>)
  • das Anmeldekennwort des Benutzers ist bekannt

Die Werkzeuge, die Sie benötigen werden:

  • mimikatz Befehlszeilenprogramm zum Extrahieren von Schlüsseln (laden Sie die neueste Version von der Seite herunter)
  • OpenSSL Befehlszeilenprogramm zum Erstellen des EFS-Zertifikats (laden Sie die neueste Windows-Binärdatei von herunter slproweb.com)

In den folgenden Schritten gehen wir davon aus, dass sich das Profilverzeichnis des Benutzers, der die Dateien verschlüsselt hat, bei D:\Backup\Users\John Citizen befindet.

Schritt 1: Finden Sie heraus, welches Zertifikat zum Verschlüsseln des die Datei

Wir öffnen die Eingabeaufforderung und verwenden das in Windows integrierte Dienstprogramm 'cipher'.

(Hinweis: die erste Zeile ist der Befehl, der ausgeführt werden muss; die folgenden Zeilen zeigen die Ausgabe des Befehls.)

cipher /c my_encrypted_file.docx

...
  Users who can decrypt:
    John Citizen [xxxxxx]
    Certificate thumbprint: 9556 EAC7 EEE6 46DF 9453 63A7 F90B 3E3C F69E D981
...

Schritt 2: Exportieren Sie den öffentlichen Schlüssel und identifizieren Sie den Speicherort des privaten Schlüssels

Wir verwenden den Fingerabdruck aus dem vorherigen, um den öffentlichen Schlüssel zu exportieren und den privaten Schlüssel zu finden. Starten Sie in einem Eingabeaufforderungsfenster mimikatz und folgen Sie diesen folgendermaßen.

mimikatz # crypto::system /file:"D:\Backup\Users\John Citizen\AppData\Roaming\Microsoft\SystemCertificates\My\Certificates\9556EAC7EEE646DF945363A7F90B3E3CF69ED981" /export

...
[0002/1] KEY_PROV_INFO_PROP_ID
  Provider info:
        Key Container  : 63d5bb1c-3461-4af2-982e-7034ef01479a
        Provider       : Microsoft Enhanced Cryptographic Provider v1.0
        Provider type  : RSA_FULL (1)
        Type           : AT_KEYEXCHANGE (0x00000001)
        Flags          : 00000000
        Param (todo)   : 00000000 / 00000000
...

Dies speichert den öffentlichen Schlüssel in 9556EAC7EEE646DF945363A7F90B3E3CF69ED981.der. Die Ausgabe teilt uns auch mit, dass der private Schlüssel im Microsoft Enhanced Cryptographic Provider v1.0-Container 63d5bb1c-3461-4af2-982e-7034ef01479a gespeichert ist.

Schritt 3: Finde den privaten Schlüsselcontainer

mimikatz # dpapi::capi /in:"D:\Backup\Users\John Citizen\AppData\Roaming\Microsoft\Crypto\RSA\<__USER_SID__>\<YYYY>"
...
**KEY (capi)**
  dwVersion          : 00000002 - 2
  dwUniqueNameLen    : 00000025 - 37
  dwSiPublicKeyLen   : 00000000 - 0
  dwSiPrivateKeyLen  : 00000000 - 0
  dwExPublicKeyLen   : 0000011c - 284
  dwExPrivateKeyLen  : 0000064e - 1614
  dwHashLen          : 00000014 - 20
  dwSiExportFlagLen  : 00000000 - 0
  dwExExportFlagLen  : 000000fc - 252
  pUniqueName        : 63d5bb1c-3461-4af2-982e-7034ef01479a   <<< MATCHES VALUE FROM STEP 1
...
  **BLOB**
    dwVersion          : 00000001 - 1
    guidProvider       : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}
    dwMasterKeyVersion : 00000001 - 1
    guidMasterKey      : {e5cfe43c-d545-44c3-9bd7-da3ffc2013a0}   <<< ID OF THE MASTERKEY

Möglicherweise müssen Sie mehrere Ordner/Dateien im Ordner Crypto\RSA ausprobieren, bis Sie den privaten Schlüssel mit einem pUniqueName finden, der dem Schlüsselcontainerwert von entspricht Schritt 1. Die Zeile, die mit guidMasterKey beginnt, gibt die ID des master-Schlüssel zum Verschlüsseln des privaten Schlüssels (in diesem Fall e5cfe43c-d545-44c3-9bd7-da3ffc2013a0).

Schritt 4: Hauptschlüssel abrufen

In diesem Schritt benötigen wir das Anmeldekennwort des Benutzers.

(Wenn wir es nicht haben, gibt es immer noch Optionen, aber sie haben keinen Spielraum für diese Antwort.)

dpapi::masterkey /in:"D:\Backup\Users\John Citizen\AppData\Roaming\Microsoft\Protect\<__USER_SID__>\e5cfe43c-d545-44c3-9bd7-da3ffc2013a0" /password:<__USERLOGONPASSWORD__>

...
[masterkey] with password: <__USERLOGONPASSWORD__> (normal user)
  key : <__MASTERKEY__>
  sha1: 1b9f5ce5543a42b9933f26bbb7b7dd83d7929ee1   <<< HASH OF THE MASTERKEY
...

Schritt 5: Entschlüsseln Sie den privaten Schlüssel

mimikatz # dpapi::capi /in:"D:\Backup\Users\John Citizen\AppData\Roaming\Microsoft\Crypto\RSA\__USER_SID__\<YYYY>" /masterkey:1b9f5ce5543a42b9933f26bbb7b7dd83d7929ee1

...
        Key size       : 2048
        Private export : OK - 'raw_exchange_capi_0_63d5bb1c-3461-4af2-982e-7034ef01479a.pvk'
...

Schritt 6: Erstellen einer Zertifikatsdatei

In diesem Schritt erstellen wir aus der erhaltenen öffentlichen Schlüsseldatei eine PFX-Zertifikatsdatei in Schritt 1 und der privaten Schlüsseldatei haben wir in Schritt 4 erhalten.

openssl x509 -inform DER -outform PEM -in 9556EAC7EEE646DF945363A7F90B3E3CF69ED981.der -out public.pem
openssl rsa -inform PVK -outform PEM -in raw_exchange_capi_0_63d5bb1c-3461-4af2-982e-7034ef01479a.pvk -out private.pem
openssl pkcs12 -in public.pem -inkey private.pem -password pass:<__NEW_PASSWORD_TO_PROTECT_THIS_PFX_FILE__> -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out my_efs_certificate.pfx

Dadurch wird eine PFX-Zertifikatdatei mit dem Namen my_efs_certificate.pfx generiert.

Schritt 7: Importieren des PFX-Zertifikats

Importieren Sie das PFX-Zertifikat mit einer der folgenden Methoden:

  1. Öffnen Sie das Snap-In Certificate Management (certmgr.mmc; siehe Screenshot oben in dieser Antwort). Klicken Sie mit der rechten Maustaste auf den Ordner Personal\Certificates und wählen Sie Import .

  2. Doppelklicken Sie auf den PFX Datei.

  3. Verwenden Sie das in Windows integrierte Befehlszeilenprogramm certutil:

certutil -user -p mimikatz -importpfx my_efs_certificate.pfx NoChain,NoRoot

Voila! Sie sollten nun auf Dateien zugreifen können, die mit dem EFS-Zertifikat dieses Benutzers verschlüsselt sind.

 2
Author: Serge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-05-03 12:32:43