
Uno script PowerShell per eseguire l'autenticazione PKINIT con l'API di Windows da una macchina non appartenente al dominio.
Uno script PowerShell per eseguire l'autenticazione PKINIT con l'API Windows da una macchina non appartenente a un dominio.
Questo cmdlet crea una nuova sessione di accesso con il certificato specificato tramite PKINIT.
È pensato per essere eseguito su una VM non appartenente a un dominio. Il cmdlet ha due modalità: una che imposta chiavi di registro e una che applica una patch alla memoria di LSASS per bypassare i controlli lato client relativi al certificato del controller di dominio. Questi controlli falliscono quando si esegue su una macchina che non è unita al dominio.
Nella modalità registro (quella predefinita), sono necessari privilegi di amministratore per impostare le chiavi di registro pertinenti (e ripristinarle alla fine). Se le chiavi sono già impostate, i privilegi di amministratore non sono richiesti. Inoltre, il certificato CA deve essere aggiunto all'elenco delle autorità di certificazione attendibili. Se questo metodo fallisce (ad esempio a causa di un controllo che non viene bypassato con le chiavi di registro), si può provare invece il metodo della patch. È meno elegante ma bypasserà qualsiasi controllo lato client relativo al certificato KDC.
Nella modalità patch (-PatchLsass), la funzione KerbCheckKdcCertificate in LSASS verrà patchata.
Poiché KerbCheckKdcCertificate non è esportata da kerberos.dll, è necessario recuperare i simboli.
Affinché i simboli vengano recuperati automaticamente da questo cmdlet, la variabile d'ambiente
_NT_SYMBOL_PATH deve essere definita (ad esempio SRV*c:\symbols*https://msdl.microsoft.com/download/symbols).
Se i simboli non sono già su disco, è necessaria una connessione Internet per scaricarli.
È necessario anche Windows SDK per scaricare i simboli. Di default, lo script
cercherà in C:\Program Files (x86)\Windows Kits\10\Debuggers\x64 le DLL di cui
ha bisogno (dbghelp.dll e symsrv.dll).
Per una spiegazione più dettagliata, vedere il blogpost associato.
PS > Invoke-RunAsWithCert user.pfx -Domain CORP.LOCAL