
Эмулирует смарт-карты PIV стандарта NIST SP 800-73 в Windows с использованием сертификата PFX и закрытого ключа, обеспечивая аутентификацию по смарт-карте для сеансов RDP, Citrix и VMware Horizon.
PIVert — это эмулятор смарт-карт PIV, соответствующий стандарту NIST SP 800-73. Вы можете передать PIVert PFX-файл, содержащий сертификат и соответствующий закрытый ключ, и инструмент представит карту Windows как подлинную карту PIV. Затем карту можно использовать для аутентификации через RDP, Citrix и VMWare Horizon с помощью встроенной функции перенаправления смарт-карт.
На чистой машине, где PIVert ещё не использовался, первым шагом необходимо установить драйвер виртуального ридера смарт-карт BixVReader. ВНИМАНИЕ: эта установка добавляет самоподписанный доверенный корневой сертификат центра сертификации, поскольку драйвер самоподписан с использованием тестового сертификата. Шаг установки также включает параметр групповой политики AllowCertificatesWithNoEKU. Без этого параметра для аутентификации предлагаются только сертификаты с EKU входа в систему со смарт-картой (Smartcard Logon). С включённым параметром для аутентификации также доступны сертификаты с EKU аутентификации пользователя (User Authentication).
.\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
Для эмуляции карты PIV с использованием PFX-файла достаточно указать PFX-файл и пароль PFX в качестве аргументов командной строки.
.\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
По-видимому, в драйвере (или, возможно, в моём коде :D) есть ошибка, из-за которой Windows иногда не обнаруживает вставку виртуальной карты из-за проблем с чтением ATR с виртуальной карты. Чтобы обойти эту проблему, можно нажать любую клавишу, кроме ESC, чтобы виртуально извлечь и заново вставить карту. Вы поймёте, что это произошло, если при запуске не увидите запросов DataObjects, как в примере выше.