
도메인에 가입되지 않은 컴퓨터에서 Windows API를 사용하여 PKINIT 인증을 수행하는 PowerShell 스크립트.
도메인에 가입되지 않은 머신에서 Windows API를 통해 PKINIT 인증을 수행하는 PowerShell 스크립트입니다.
이 cmdlet은 PKINIT를 통해 지정된 인증서로 새 로그온 세션을 생성합니다.
도메인에 가입되지 않은 VM에서 실행하도록 만들어졌습니다. 이 cmdlet에는 두 가지 모드가 있습니다. 하나는 레지스트리 키를 설정하는 모드이고, 다른 하나는 LSASS 메모리를 패치하여 도메인 컨트롤러의 인증서와 관련된 클라이언트 측 검사를 우회하는 모드입니다. 이러한 검사는 도메인에 가입되지 않은 머신에서 실행할 때 실패합니다.
레지스트리 모드(기본값)에서는 관련 레지스트리 키를 설정(그리고 마지막에 복원)하기 위해 관리자 권한이 필요합니다. 키가 이미 설정된 경우 관리자 권한은 필요하지 않습니다. 또한 CA 인증서를 신뢰할 수 있는 인증 기관 목록에 추가해야 합니다. 이 방법이 실패할 경우(예: 레지스트리 키로 우회되지 않는 검사 때문에) 패치 방법을 대신 시도할 수 있습니다. 덜 우아하지만 KDC 인증서와 관련된 모든 클라이언트 측 검사를 우회합니다.
패치 모드(-PatchLsass)에서는 LSASS의 KerbCheckKdcCertificate 함수가 패치됩니다. KerbCheckKdcCertificate는 kerberos.dll에서 내보내지지 않으므로 심볼을 검색해야 합니다. 이 cmdlet이 심볼을 자동으로 검색하도록 하려면 환경 변수 _NT_SYMBOL_PATH가 정의되어 있어야 합니다(예: SRV*c:\symbols*https://msdl.microsoft.com/download/symbols). 심볼이 이미 디스크에 없으면 다운로드하기 위해 인터넷 연결이 필요합니다. 심볼을 다운로드하려면 Windows SDK도 필요합니다. 기본적으로 스크립트는 필요한 DLL(dbghelp.dll 및 symsrv.dll)을 찾기 위해 C:\Program Files (x86)\Windows Kits\10\Debuggers\x64를 확인합니다.
더 자세한 설명은 관련 블로그 게시물을 참조하세요.
PS > Invoke-RunAsWithCert user.pfx -Domain CORP.LOCAL