文章目录
- 一、RID简介
- 二、修改RID进行权限维持
影子账户,顾名思义就是隐藏的用户,无法通过“计算机管理”或命令行查询,只能在注册表中找到其信息。下面的实验是在win 7上进行的。真正的影子账户其实是windwos RID 劫持。
一、RID简介
在windows中每个用户和组都会有一个独特的SID,而系统就是通过用户之间不同的SID来区分每个用户账户和组的。
whoami /user # 查看当前用户的SID
SID的最后一部分为RID,在windows中,每新增一个组或用户,RID都会递增一位。
wmic useraccount get name, sid # 查看系统中所有用户的SID
在windows中,部分应用是根据当前会话用户的SID来判断用户权限的。也就是说,如果用户A的RID被替换为用户B的RID,那么用户A将有用户B的部分权限。
二、修改RID进行权限维持
1、创建名为hacker$
的隐藏账户,其无法通过命令行找到。
net user hacker$ admin123. /add # 创建隐藏用户hacker
# net user <username> <password> /add
但是,可以通过控制面板和计算机管理中找到隐藏用户。
计算机管理的快捷方式为
compmgmt.msc
.
2、regedit
打开注册表,定位到HKLM\SAM\SAM
,单机右键,在弹出的快捷菜单中选择“权限”命令,将administrator
用户的权限设置为“完全控制”。该注册表下的内容在标准用户和管理员权限下都是不可见的。
3、在windows中,每个用户的RID就是用户的标识。系统自带用户RID是从500开始递增的,RID等于500的用户默认为管理员。在windows中自行创建的用户RID均是从1000开始递增的。在HKLM\SAM\SAM\Domain\Account\Users\Names
处选择administrator
,其内容为0x1f4
,转换为十进制就是500,代表管理员,也就是说,Name注册表下的每一个用户名存储的值就是该用户对应的RID。另外,注意Users
下有一个子项的文件夹名就是000001F4
,也就是说User注册表的子项存储的是RID对应用户的详细信息。例如,000001F4
这个子项保存的是administrator用户的详细信息,子项中的F值的0x30
和0x31
位置存储的就是用户RID副本。
如果SAM子项打不开,重新打开注册表。
4、用000001F4
子项中F的值,替换000003EA
(hacker$
用户)中F值。
以上过程其实就hacker$用户劫持了administrator用户的RID,从而使hacker$用户拥有administrator用户的权限。
5、分别选中注册表项hacker$
和000003EA
并导出。
6、删除hacker$用户,并导入注册表。
net user hacker$ /del
导入hacker$用户的注册表
导入成功后,可以看到注册表中生成了相应的表项。
7、打开控制面板和计算机管理,无法找到hacker$用户。至此,真正的影子用户创建成功。
8、影子账户防御。可以使用下面命令查看所有用户的SID,可以看到隐藏用户hacker$,注意此时RID还是1002,因为注册表Name
没改,只改F值。实际Name
处也似乎改不了,都显示空值。
wmic useraccount get name,sid
使用
STU1\hacker$ admin123.
登录计算机,会直接以管理员身份登录计算机,管理员登出时什么样,你上来就是什么样。