Overview
SeTcbPrivilege (“Act as part of the operating system”) grants full trusted access to the LSA: create logon sessions for any user without their password, and inject arbitrary group SIDs into tokens. The LSA treats a holder as equivalent to SYSTEM.
Almost never assigned to non-SYSTEM accounts. When you find it on a service/user account (via GPO/secpol.msc), it is an immediate path to SYSTEM/Domain Admin.
Check if Enabled
Shows Disabled? Enable it in the current token at runtime:
S4U Logon — Token for Any User, No Password
S4U (Service-for-User) lets a trusted process get a logon token for any user without their password. MSV1_0_S4U_LOGON = local users, KERB_S4U_LOGON = domain users (needs DC reachable). Both require LsaRegisterLogonProcess, gated by SeTcbPrivilege.
NtObjectManager (Easiest)
James Forshaw’s module wraps all the LSA marshaling:
Group SID Injection
LsaLogonUser’s LocalGroups parameter accepts a TOKEN_GROUPS the LSA adds with no validation — put any SID in a token. Inject Domain Admins (S-1-5-21-...-512) into a low-priv user’s token when S4U for a DA fails (DC unreachable):
Injected SIDs do NOT appear in the 4624 logon event group list — stealthy. See Detection below.
Practical Chain — Service Account to Domain Admin
Service account with SeTcbPrivilege (vendor required it), not local admin:
Works even under Credential Guard — S4U is a designed LSA feature, not a memory read.
Combine with Other Privileges
- + SeImpersonatePrivilege —
ImpersonateLoggedOnUser the S4U token in the current thread.
- + SeAssignPrimaryTokenPrivilege —
CreateProcessAsUser with the token as primary (real process, survives thread death).
- + SeCreateTokenPrivilege — enumerate sessions via LSA, forge an indistinguishable token. See SeCreateTokenPrivilege.
Detection
Quick Reference