it-swarm.com.de

Exportieren eines nicht exportierbaren privaten Schlüssels aus dem Speicher

Ich muss den privaten Schlüssel aus dem Windows Store exportieren. Was kann ich tun, wenn der Schlüssel als nicht exportierbar gekennzeichnet ist? Ich weiß, dass es möglich ist, dass Programm Jailbreak diesen Schlüssel exportieren kann.

Zum Exportieren des Schlüssels verwende ich Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair(), das den Schlüssel aus (RSACryptoServiceProvider)cryptoProv.ExportParameters(true) exportiert. Exportierter Schlüssel, den ich in Org.BouncyCastle.Cms.CmsSignedDataGenerator für die CMS-Signatur verwende.

Ich brauche eine Lösung für .Net, aber jede Lösung wird nützlich sein. Vielen Dank.

38
Gorf

Sie haben Recht, keine API, bei der ich weiß, dass ich PrivateKey exportieren möchte, das als nicht exportierbar gekennzeichnet ist. Wenn Sie jedoch (im Speicher) normale APIs patchen, können Sie den normalen Exportweg verwenden :)

Es gibt eine neue Version von Mimikatz, die auch CNG-Export unterstützt (Windows Vista/7/2008 ...).

  1. download (und starten mit Administratorrechten): http://blog.gentilkiwi.com/mimikatz (Trunk-Version oder letzte Version)

Führen Sie es aus und geben Sie die folgenden Befehle in die Eingabeaufforderung ein:

  1. privilege::debug (sofern Sie ihn nicht bereits haben oder nur auf CryptoApi abzielen)
  2. crypto::patchcng (nt 6) und/oder crypto::patchcapi (nt 5 & 6)
  3. crypto::exportCertificates und/oder crypto::exportCertificates CERT_SYSTEM_STORE_LOCAL_MACHINE

.pfx-Dateien sind passwortgeschützt "mimikatz"

40
Gentil Kiwi

ich wollte Jailbreak erwähnen, insbesondere ( GitHub ):

Jailbreak

Jailbreak ist ein Werkzeug zum Exportieren von Zertifikaten, die als .__ markiert sind. kann nicht aus dem Windows-Zertifikatspeicher exportiert werden. Dies kann helfen, wenn Sie müssen Zertifikate zum Sichern oder Testen extrahieren. Du musst haben vollen Zugriff auf den privaten Schlüssel im Dateisystem, um Jailbreak zur Arbeit.

Voraussetzungen: Win32

13
Ian Boyd

Gentil Kiwis answer ist richtig. Er entwickelte dieses Mimikatz-Tool, mit dem nicht exportierbare private Schlüssel abgerufen werden können.

Seine Anweisungen sind jedoch veraltet. Du brauchst:

  1. Laden Sie die neueste Version von https://github.com/gentilkiwi/mimikatz/releases herunter. _

  2. Führen Sie das Cmd mit Administratorrechten auf demselben Computer aus, auf dem das Zertifikat angefordert wurde

  3. Wechseln Sie in das Mimikatz-Bin-Verzeichnis (Win32- oder X64-Version).

  4. mimikatz ausführen

  5. Folgen Sie den Wiki-Anweisungen und die .pfx-Datei (geschützt mit dem Kennwort mimikatz) wird im selben Ordner der Mimikatz-Ablage abgelegt

mimikatz # crypto :: capi
Lokale CryptoAPI gepatcht 

mimikatz # privileg :: debug
Privileg '20' OK 

mimikatz # crypto :: cng
"KeyIso" Dienst gepatcht 

mimikatz # crypto :: zertifikate/systemstore: local_machine /store:my /Export
* Systemspeicher: 'local_machine' (0x00020000)
* Store: "Mein"

  1. example.domain.local
    Schlüsselcontainer: example.domain.local
    Anbieter: Microsoft Software Key Storage Provider
    Typ: CNG-Schlüssel (0xffffffff)
    Exportierbarer Schlüssel: NEIN
    Schlüsselgröße: 2048
    Öffentlicher Export: OK - 'local_machine_my_0_example.domain.local.der'
    Privater Export: OK - 'local_machine_my_0_example.domain.local.pfx' 
13
Zanon

Es gibt Code und Binärdateien hier für eine Konsolen-App, die private Schlüssel exportieren kann, die als nicht exportierbar markiert sind, und löst kein Virenschutzprogramm aus für Apps wie mimikatz.

Der Code basiert auf einem Artikel der NCC Group . Das Tool muss mit dem lokalen Systemkonto ausgeführt werden, da es direkt in den vom Windows-Prozess lsass verwendeten Speicher schreibt, um Schlüssel vorübergehend als exportierbar zu kennzeichnen. Dies kann mit PsExec aus SysInternals ' PsTools geschehen:

  1. Erstellen Sie eine neue Eingabeaufforderung, die als lokaler Systembenutzer ausgeführt wird:

    PsExec64.exe -s -i cmd

  2. Führen Sie in der neuen Eingabeaufforderung das Tool aus:

    exportrsa.exe

  3. Das Tool fordert Sie zur Eingabe eines Kennworts für jeden gefundenen Schlüssel auf. Dies ist das Kennwort, mit dem Sie die exportierte PFX-Datei sichern möchten. Es kann also beliebig sein

2
Cocowalla

Leider ist das oben erwähnte Tool von mehreren Antivirus-Anbietern blockiert. Wenn dies für Sie der Fall ist, werfen Sie einen Blick auf das Folgende.

Öffnen Sie das nicht exportierbare Zertifikat im Zertifizierungsspeicher und suchen Sie den Wert für den Fingerabdruck. 

Öffnen Sie als nächstes regedit unter dem Pfad und suchen Sie den Registrierungsschlüssel, der dem Fingerabdruckwert entspricht. 

Ein Export des Registrierungsschlüssels enthält das vollständige Zertifikat einschließlich des privaten Schlüssels. Kopieren Sie den Export nach dem Export auf den anderen Server und importieren Sie ihn in die Registry. 

Das Zertifikat wird im Zertifikat-Manager mit dem privaten Schlüssel angezeigt.

Computerspeicher: HKLM\SOFTWARE\Microsoft\SystemCertificates\MY\Certificates Benutzerspeicher: HKCU\SOFTWARE\Microsoft\SystemCertificates\MY\Certificates

Zur Not können Sie den Export als Sicherung des Zertifikats speichern. 

2
Ernest Correale

Möglicherweise müssen Sie Antivirus deinstallieren (in meinem Fall musste ich Avast entfernen).

Dadurch wird sichergestellt, dass der Befehl crypto::cng funktioniert. Ansonsten gab es Fehler:

mimikatz $ crypto::cng
ERROR kull_m_patch_genericProcessOrServiceFromBuild ; OpenProcess (0x00000005)

Nach dem Entfernen von Avast:

mimikatz $ crypto::cng
"KeyIso" service patched

Zauber. (:

BTW

Windows Defender ist eine weitere Spyware, die das Programm blockiert, so dass Sie es mindestens für die Zeit der Programmnutzung deaktivieren müssen.

0
Daniel Kmak

Dies funktionierte für mich unter Windows Server 2012 - Ich musste ein nicht exportierbares Zertifikat exportieren, um einen anderen ADFS-Server einzurichten. Denken Sie daran, die Anweisungen für den Jailbreak oben zu verwenden, z.

crypto :: zertifikate/export/systemstore: CERT_SYSTEM_STORE_LOCAL_MACHINE

0
miker2069