扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Windows 10中怎么绕过用户组策略,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
10年积累的成都网站设计、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有泉州免费网站建设让你可以放心的选择与我们合作。
当用户登录一个Windows账号时会发生很多事情,其中一个就是为该账号加载用户定义的设置。这些设置是从用户的注册表配置单元中加载的,也就是HKEY_CURRENT_USER下的子项。这个注册表项中包含的都是操作系统以及各种已安装应用程序中与用户相关的配置。这个注册表项其实是存储在文件系统中的一个文件,路径为“%USERPROFILE%\NTUSER.dat”。当用户登录时,ProfSvc(用户属性服务)会定位这个文件,并调用NtLoadKeyEx来加载注册表配置单元。如果用户想要在登录会话期间修改注册表键,则必须通过相应的微软API来实现,而且还会检测相应注册表键的修改权限。
如果我们在启用了”boot logging”功能之后运行ProcMon,就会发现目标设备的ProcMon服务有一个非常有趣的行为:
ProfSvc在加载“%USERPROFILE%\NTUSER.dat”之前,只会检测 “%USERPROFILE%\NTUSER.man”文件是否存在。那么,“NTUSER.man”是什么呢?它其实跟“NTUSER.dat”类似,但它主要针对的是“强制配置文件”。因为非管理员账号拥有“%USERPROFILE%”路径的写入权限,因此我们可以通过自己构造的“NTUSER.man”来实现我们的目的。
组策略是Windows系统提供的一种功能,它允许域管理员在主机级别或用户级别配置用户组策略。针对用户策略,相关设置会被在用户登录时推送至一个域用户的账号中,并存储在“%USERPROFILE%\NTUSER.dat”中。这些用户策略对域用户只读,以避免被篡改。
因为我们可以直接替换整个相关的注册表项,所以就可以绕过或者修改“被保护的”强制用户组策略了。
为了实现这个目的,我们只需要做以下几件事情:
1、制作我们自己的用户相关注册表项-“NTUSER.man”;
2、移除或替换注册表项中相应策略的键值;
3、将该文件存放到目标主机的“%USERPROFILE%”目录中;
4、注销并重新登录;
如果你了解Windows的组策略,你就会知道系统在用户登录时会重新同步并应用当前已修改的组策略,但此时我们修改过的策略很可能会被覆盖掉。虽然我们可以通过将“SYSTEM”从构造注册表键值的ACL中移除来避免这种情况,但是Windows组策略客户端-GpSvc将会检测到这种操作,并在用户登录时修复ACL以便获取到写入权限,然后重写组策略。
通过分析GpSvc对这种ACL的处理过程,我发现当GpSvc在检测到注册表中的组策略键值时,会调用内部函数ForceRegCreateKeyEx,这个函数会尝试利用写入权限来打开我们的组策略键值,如果失败,则会调用AddPolicyPermissionOnKey来获取该注册表项的相应权限,以恢复“SYSTEM”在该表项上的写入权限,并重新打开它然后覆盖组策略。
通过分析AddPolicyPermissionOnKey函数,我们发现该函数会修改注册表子项的ACL并添加“SYSTEM”角色,不过并不会删除已有的ACL项。这样的话一切就很明朗了,整个利用过程如下:
上图中左侧为域控制器,右侧为该控制器所连接的主机。我们可以看到,域控制器在用户组策略中设置了“Remove Task Manager”规则,并且应用到了我们的域用户主机中。接下来,当我们在“%USERPROFILE%”目录中存放了特制的“NTUSER.man”文件后,用户的注销或登录操作将不会再让这个规则生效。
注意事项:漏洞利用PoC可能会损坏你现有的Windows账号,请不要在拥有管理员权限的域主机中执行。除此之外,我们也不建议大家在个人PC上测试,而且不要使用Administrator账号测试,因为测试完成后我们需要使用该账号来删除“NTUSER.man”文件。
1、准备一台测试用的Windwos主机,然后拿到一个拥有管理员权限的账号,把任意用户对应的“%USERPROFILE%\NTUSER.dat”文件拷贝到另一个目录中。
2、在Administrator账号中打开注册表编辑器(regedit.exe),将注册表项“HKEY_LOCAL_MACHIN”备份好,然后点击“文件”-“加载配置单元”。
3、打开新加载的注册表项,在响应的策略注册表项路径下清除或者添加任意策略。比如说,很多的用户策略会存放在“\Software\Microsoft\Windows\CurrentVersion\Policies\”路径下。
4、在注册表配置单元的根节点,将权限修改为“Everyone”,即提供完整权限,并应用到该表项下的所有子项。
5、针对我们希望覆盖或添加的“策略”,我们需要找到与之相关的子键,这些子键可能不会都在同一个表项下。比如,在“Remove Task Manager”的场景中,定义该策略的值位于“\Software\Microsoft\Windows\CurrentVersion\Policies\System”键中,因此我们需要在“System”子键中添加一个“DENY”规则,阻止SYSTEM获取该键的“写入/创建”权限,确保GpSvc无法执行覆盖操作。
1、接下来,我们要确保已创建好备份的拥有管理员权限的账号。
2、将构造的注册表配置单元拷贝到目标主机的“%USERPROFILE%\NTUSER.man”路径下,然后覆盖用户组策略。
3、注销并重新登录,现在所有的用户组策略都已经被我们在“NTUSER.man”中定义的配置给替换掉了。
测试完成后,我们需要注销当前账户,然后使用Administrator账号来删除用户配置目录中的“NTUSER.man”文件。
关于Windows 10中怎么绕过用户组策略问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流