用这个方法绕过 Windows10 用户组策略

king 2020-08-08
英文原文 系统与内网安全 发布于 2020-08-08 23:11:07 阅读 101 评论 0

我将分享Windows功能的(滥用)用法,这可能会导致绕过用户组策略(以及其他一些有趣的事情)。绕过用户组策略不是世界末日,但也不应该允许,并且取决于用户组策略设置,可能会导致不幸的安全情况。此技术已经针对Windows 7和Windows 10 Enterprise x64(10.18363 1909)进行了测试,并且不需要管理员访问权限。利用此技巧与登录时加载用户帐户注册表的方式有关,因此,让我们首先了解一下用户登录Windows帐户时会发生的情况来开始。

登陆时

登录Windows帐户时发生的许多事情之一就是为该帐户加载了用户定义的设置。这些设置是从“用户的注册表配置单元”中加载的,每次上拉regedit时,您都可以将其称为HKEY_CURRENT_USER。此配置单元包含与用户相关的设置,以及操作系统和可能安装的各种应用程序。此“配置单元”实际上是一个存储在文件系统上的文件,可以在“%USERPROFILE%\ ntuser.dat”中找到该文件。登录后,ProfSvc(用户配置文件服务)找到此文件并调用NtLoadKeyEx为了加载注册表配置单元。如果用户希望在其登录会话期间进行注册表项修改,则它必须通过适当的Microsoft API,这些API依次检查要修改的项的权限(就好像它是小型文件系统本身一样)。

问题

如果我们在启用“启动日志记录”的情况下启动ProcMon,则在登录到计算机时,ProfSvc服务中会有一个有趣的行为。

用户登录时ProcSvc的Procmon输出

在加载“%USERPROFILE%\ ntuser.dat”之前,ProfSvc只是检查“%USERPROFILE%\ ntuser.man”文件是否存在。什么是“ ntuser.man”?它与ntuser.dat完全一样(因为它是一个用户配置文件注册表配置单元),但是它是用于您要建立“ 必填配置文件”。我们知道%USERPROFILE%路径当然可以由非管理员写入,因此*我们可以通过删除自己制作的“ ntuser.man” *来获得一些有趣的结果。

绕过用户组策略

组策略是一项Microsoft功能,域管理员可以使用该功能来管理网络上用户的设置和实施。管理员可以在计算机级别和/或在用户级别配置这些组策略设置。对于用户策略,这些设置在登录时被推送到域用户的帐户中,并存储在“%USERPROFILE%\ ntuser.dat”配置单元中。这些用户策略对于域用户是只读的,可以防止更改它们。

Image for post

域用户对“策略”注册表项具有只读访问权限

由于我们可以换一个全新的配置单元,因此我们可以绕过或修改所有这些“受保护的”用户组策略实施。

我们只需要:

  • 们自己的名为“ ntuser.man”的用户注册表配置单元,
  • 或应用我们希望在配置单元中使用的任何策略键/值。
  • 文件拖放到目标计算机的%USERPROFILE%路径中
  • 销并重新登录。

但是Windows将重新同步组策略规则并覆盖这些更改……对吗?

那些熟悉用户组策略的人都知道,这些策略会在登录时(以及登录时的定期间隔)重新同步并重新应用自己,因此会覆盖可能已制定的任何已修改策略。即使我们试图通过从制作好的密钥的ACL中删除“ SYSTEM”来防止此替代,GpSvc(Windows组策略客户端)也将检测到该问题并在登录时更正ACL以重新获得可写权限,然后重写组策略设置。

但是……有一种解决方法。我研究了如何在GpSvc中进行此ACL修改。当GpSvc遇到我们的“ Policies”子项时,它会调用其内部函数* ForceRegCreateKeyEx ,该函数尝试以可写权限打开我们的“ Policy”子项之一,如果失败,则调用 AddPolicyPermissionOnKey *以取得密钥的所有权并还原对密钥具有可写权限的“ SYSTEM”,然后重新打开密钥并覆盖组策略条目。

Image for post

GpSvc.dll中的ForceRegCreateKeyEx例程

查看* AddPolicyPermissionOnKey 例程,*我注意到它修改了子项的ACL以添加“ SYSTEM”,但并未删除任何现有的ACL条目。这意味着,如果我们为“ DENY”系统可写权限设置一个显式条目,则由于“ DENY”规则将优先于它尝试添加的“ ALLOW”规则,因此它将有效地阻止“ SYSTEM”获得可写权限。

有了这个额外的技巧,这很简单,下面的GIF演示了这一点。

Image for post

左边是右边计算机所连接的域控制器。您可以在域控制器中看到为“用户组策略”设置了“删除任务管理器”规则,当右键单击任务栏时,可以看到灰色的“任务管理器”将其应用于域用户的计算机。但是,在将特制的“ NTUSER.man”文件拖放到%USERPROFILE%中之后,我们注销/登录,并且任务管理器规则不再适用。

其影响在很大程度上取决于“策略配置”,尽管从恶意软件的角度来看这可能是威胁,但更可能是来自无赖的域用户试图摆脱域管理员施加的限制的威胁。

其他含义

值得一提的是,除了绕过用户组策略外,该怪癖还可能导致其他结果。

-单一文件代码执行-某些漏洞可以将文件以非管理员。如果该漏洞利用带有自动启动注册表项的“%USERPROFILE \ ntuser.man”来删除远程SMB共享中的一个文件,则该漏洞现在只需删除一个不可执行的文件即可获得可靠的代码执行。
-防病毒/ EDR绕过-某些防病毒/ EDR产品只能通过拦截注册表API或内核回调来监视注册表修改。如果您通过替换整个配置单元来更改注册表,则可能会绕开监视和检测。
-拒绝服务
-通过在%userprofile%中放置一个空的ntuser.man文件,ProfSvc将无法加载注册表,从而阻止用户登录,需要安全模式启动或备份Admin帐户才能删除有问题的ntuser。人文件。

概念证明

(注意-这可能会损坏Windows帐户,请不要在非管理员的域计算机上尝试这样做。如果您感到好奇,建议在测试虚拟机中尝试这样做。*如果结束在个人计算机上尝试此操作,不要在管理员帐户上尝试,因为完成后将需要管理员帐户进入并删除ntuser.man文件*:

1. Crafting Ntuser.man

  • 您具有管理员访问权限的完全独立的(相同版本)Windows计算机上,将任何用户的注册表配置单元从%USERPROFILE%\ ntuser.dat文件复制到另一个文件夹。注意,您需要确保该用户未登录,才能实际复制该文件。
  • Administrator帐户下,启动regedit.exe,通过选择HKEY_LOCAL_MACHINE键并单击File-> Load Hive…来加载此复制的注册表配置单元。
  • 新加载的注册表下,清除或在适当的策略注册表路径下添加任何策略,例如,许多用户策略存储在\ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \中。
  • 加载regedit的配置单元的根目录中,更改权限以允许“每个人”完全控制(读/写/等)并传播所有子项的这些权限。
  • 据您要覆盖或添加的“策略”,您将需要找到与之相关的相应子项,因为它们并不全部都存储在用户注册表中的一个项下。例如,在“删除任务管理器”方案中,定义此值的值在\ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System项中。因此,“ System”子项是您要添加“ DENY”规则的位置,以拒绝该项的SYSTEM“写入/创建”特权。这样可以确保GpSvc无法覆盖它。

2. Drop Ntuser.man

  • 继续之前,请确保您在计算机上拥有一个备份帐户,该帐户具有与要测试的帐户分开的管理员特权。如果不是,请立即创建一个,因为这将删除PoC文件。
  • 您作为“%USERPROFILE%\ ntuser.man”制作的注册表配置单元复制到要覆盖其用户组策略的计算机上。
  • 销并重新登录。您可能会看到一个Windows欢迎屏幕,让此操作完成,现在所有用户组策略都已被ntuser.man中的内容覆盖。

3. Remove Ntuser.man

  • 试PoC后,注销并使用管理员帐户登录,以从用户的配置文件路径中删除“ ntuser.man”文件。

结论

根据我们的90天披露政策。尽管他们能够完全复制此问题,但Microsoft认为这是预期的行为,而不是安全问题。尽管我知道这不是关键问题,但我认为,无论采取何种方式进行修改,这样的受保护策略都跨越了安全边界。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://link.wangan.com/check?link=https...

译文地址:https://www.wangan.com/t/328

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!