https://github.com/antonioCoco/SspiUacBypass?tab=readme-ov-file
https://github.com/hfiref0x/UACME 78(requires current user account password not to be blank.


原理:
通过 SSPI 在本地使用 NTLM 伪造网络身份验证
AcquireCredentialsHandle 是 Windows 安全支持提供程序接口(SSPI)中的一个函数,用于获取凭据的句柄。凭据句柄用于后续的身份验证过程
凭据的获取:如果在一个登录会话中多次调用 AcquireCredentialsHandle,系统可能会使用第一个创建的凭据token,而不是实际调用者的token。这意味着不论当前用户是谁,系统可能会错误地使用一个较低权限或不正确的凭据。
token混淆(token confusion)
在完成身份验证时,LSASS 创建了一个新的登录会话,并生成 具有更高权限的 token和一个过滤的 LUA 令牌。这个token具有完整的管理权限,而 LUA token则限制了用户的权限。
因为在同一个会话中多次调用 AcquireCredentialsHandle,服务器可能会将请求视为来自更高权限的token,而实际上请求是通过 LUA token发出的。此时,服务器可能错误地认为用户拥有更高的权限。
环回网络认证是指应用程序(通常是服务)尝试通过网络协议访问自身资源
demo实现:
通过AcquireCredentialsHandle函数获取出战和入站的NTLM凭据句柄,
然后使用通过 InitializeSecurityContext 和 AcceptSecurityContext 完成 NTLM Negotiation 、Challenge、Response,生成身份验证令,连续生成两次
然后增加判断,判断当前线程是否以较低的模拟级别运行,
RpcConnect连接到\\\\127.0.0.1\\pipe\\ntsvcs