RID Hijacking
RID (Relative ID, part of the SID (Security Identifier)) hijacking is a persistence technique, where an attacker with SYSTEM level privileges assigns an RID 500 (default Windows administrator account) to some low privileged user, effectively making the low privileged account assume administrator privileges on the next logon.
This techniques was originally researched by Sebastian Castro - https://r4wsecurity.blogspot.com/2017/12/rid-hijacking-maintaining-access-on.html
Execution
This lab assumes that we've compromised the WS01 machine and have NT SYSTEM
access to it.
Below shows that the user hijacked
is a low privileged user and has an RID of 1006 or 0x3ee:
If we try to write something to c:\windows\ with the user hijacked
, as expected, we get Access is Denied
:
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EE stores some information about the userhijacked
that is used by LSASS during the user logon/authentication process. Specifically, at offset 0030
in the value F
there are bytes that denote user's RID, which in our case are 03ee (1006) for the user hijacked
:
We can change those 2 bytes to 0x1f4 (500 - default administrator RID), which will effectively make the user hijacked
assume administrator privileges:
Demo
After changing the hijacked
RID from 3ee to 1f4 and creating a new logon session, we can see that the user hijacked
is now allowed to write to c:\windows\, suggesting it now has administrative privileges:
Note, that the user hijacked
still does not belong to local administrators group, but its RID is now 500:
Detection
Monitor HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\*\F for modifications, especially if they originate from unusual binaries.
References
Last updated