
Emuliert NIST SP 800-73 PIV-Smartcards unter Windows mithilfe eines PFX-Zertifikats und privaten Schlüssels und ermöglicht so die Smartcard-Authentifizierung für RDP-, Citrix- und VMware-Horizon-Sitzungen.
PIVert ist ein NIST-SP-800-73-PIV-Smartcard-Emulator. Du kannst PIVert eine PFX-Datei mit einem Zertifikat und dem zugehörigen privaten Schlüssel bereitstellen, und das Tool emuliert die Karte gegenüber Windows als echte PIV-Karte. Die Karte kann dann für die Authentifizierung über RDP, Citrix und VMWare Horizon mithilfe der integrierten Smartcard-Umleitungsfunktion verwendet werden.
Auf einem sauberen Rechner, auf dem PIVert noch nicht verwendet wurde, besteht der erste Schritt darin, den BixVReader-Treiber für virtuelle Smartcard-Lesegeräte zu installieren. ACHTUNG: Dabei wird auch ein selbstsigniertes Stammzertifikat einer vertrauenswürdigen Zertifizierungsstelle installiert, da der Treiber mit einem Testzertifikat selbstsigniert ist. Der Installationsschritt setzt außerdem die Gruppenrichtlinienoption AllowCertificatesWithNoEKU. Ohne diese Option werden nur Zertifikate mit der Smartcard-Logon-EKU zur Authentifizierung angeboten. Mit aktivierter Option stehen auch Zertifikate mit der Benutzerauthentifizierungs-EKU für die Authentifizierung zur Verfügung.
.\PIVert.exe install
[=] AllowCertificatesWithNoEKU on SmartCard Credential Provider not set, enabling...
[+] Enabled AllowCertificatesWithNoEKU on SmartCard Credential Provider
[=] Writing BixVReader.ini config to C:\Windows
[=] Installing driver signing certificate into Root and Trusted Publishers local machine store
[=] Installing driver MSI
[+] Installer completed
Um eine PIV-Karte mit einer PFX-Datei zu emulieren, gibst du einfach die PFX-Datei und das PFX-Passwort als Befehlszeilenargumente an.
.\PIVert.exe .\Administrator.pfx password
[=] Connected to Smartcard Data Pipe
[=] Connected to Smartcard Event Pipe
[+] Connected Virtal Smart Card Driver
[+] Virtual card inserted
[=] Press ESC to exit, or any other key to remove and reinsert the virtual card?
[=] Unsupported INS ca with CLA 0
[=] Request for PIV DataObject: CardHolderUniqieID
[=] Request for PIV DataObject: CertPIVAuth
[=] Request for PIV DataObject: CertSign
[=] Request for PIV DataObject: CertKeyMan
[=] Request for PIV DataObject: CertCardAuth
[=] Request for PIV DataObject: KeyHistory
[=] Request for PIV DataObject: CertPIVAuth
[=] Request for PIV DataObject: CertSign
[=] Request for PIV DataObject: CertCardAuth
[=] Request for PIV DataObject: CardHolderUniqieID
[=] Request for PIV DataObject: CertKeyMan
[=] Request for PIV DataObject: KeyHistory
Es scheint einen Fehler im Treiber zu geben (oder möglicherweise in meinem Code :D), bei dem Windows das Einführen der virtuellen Karte manchmal nicht erkennt, weil die ATR der virtuellen Karte nicht korrekt gelesen werden kann. Um dieses Problem zu umgehen, kannst du eine beliebige Taste außer ESC drücken, um die Karte virtuell zu entfernen und erneut einzuführen. Du erkennst das daran, dass die Anfragen für DataObjects beim Start wie oben nicht angezeigt werden.