
Un script de PowerShell para realizar la autenticación PKINIT con la API de Windows desde una máquina no unida a un dominio.
Un script de PowerShell para realizar la autenticación PKINIT con la API de Windows desde una máquina no unida al dominio.
Este cmdlet crea una nueva sesión de inicio de sesión con el certificado especificado mediante PKINIT.
Está pensado para ejecutarse en una máquina virtual no unida al dominio. El cmdlet tiene dos modos: uno que establece claves de registro y otro que parchea la memoria de LSASS para omitir las comprobaciones del lado del cliente relacionadas con el certificado del controlador de dominio. Estas comprobaciones fallan cuando se ejecuta en una máquina que no está unida al dominio.
En el modo de registro (el predeterminado), se necesitan privilegios de administrador para establecer las claves de registro correspondientes (y restaurarlas al final). Si las claves ya están establecidas, no se requieren privilegios de administrador. Además, el certificado de la CA debe añadirse a la lista de entidades de certificación de confianza. Si este método falla (p. ej., debido a una comprobación que no se omite con las claves de registro), se puede probar el método de parcheo. Es menos elegante, pero omitirá cualquier comprobación del lado del cliente relacionada con el certificado KDC.
En el modo de parcheo (-PatchLsass), se parcheará la función KerbCheckKdcCertificate de LSASS.
Como KerbCheckKdcCertificate no está exportada por kerberos.dll, es necesario recuperar los símbolos.
Para que este cmdlet recupere los símbolos automáticamente, la variable de entorno
debe definirse (p. ej. ).
Si los símbolos no están ya en disco, se necesita una conexión a Internet para descargarlos.
También se necesita el SDK de Windows para descargar los símbolos. Por defecto, el script
buscará en las DLL que
necesita ( y ).
_NT_SYMBOL_PATHSRV*c:\symbols*https://msdl.microsoft.com/download/symbolsC:\Program Files (x86)\Windows Kits\10\Debuggers\x64dbghelp.dllsymsrv.dllPara una explicación más detallada, consulte la entrada de blog asociada.
PS > Invoke-RunAsWithCert user.pfx -Domain CORP.LOCAL