Skip to main content

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:

Other Tools


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

  • + SeImpersonatePrivilegeImpersonateLoggedOnUser the S4U token in the current thread.
  • + SeAssignPrimaryTokenPrivilegeCreateProcessAsUser with the token as primary (real process, survives thread death).
  • + SeCreateTokenPrivilege — enumerate sessions via LSA, forge an indistinguishable token. See SeCreateTokenPrivilege.

Detection


Quick Reference