0

首先,我必须提供一些上下文。

我可以通过在键 'HKLM\SYSTEM\CurrentControlSet\Services\PROCMON24\Instances\Process Monitor 24 Instance' 中进行两项更改来将 procmon 设置为在某个非默认高度运行:

  1. 将海拔高度值从其默认的“385200”更改为所需的值;例如。'136500'
  2. 并为密钥添加特殊权限: user:Everyone type:Deny permissions:('set value' | 'delete')

改变海拔高度的原因是显而易见的。添加特殊权限的原因不太明显:没有此 procmon 将简单地将 Altitude 重置为其默认值。

好的,这是我的问题:

我无法以编程方式删除添加的权限或更改该键或其值。这并不奇怪,因为权限拒绝“每个人”访问。

但是,我可以使用 regedit 轻松删除该权限。我只是选择权限并将其删除。

那么 regedit 使用什么技巧来覆盖该权限呢?

我可以看到它以当前用户身份运行,而不是“系统”。我可以使用 psexec 以“SYSTEM”身份运行删除脚本,但这也被拒绝访问。

4

1 回答 1

0

回想起来,很明显 regedit 没有使用任何特殊的技巧或特权来删除“拒绝所有人”ACE。有问题的 ACE 并未拒绝对注册表项的所有操作。它只是否认“删除”和“设定值”。有了那个 ACE,甚至 regedit 都无法删除或设置值。也就是说,它无法打开具有“删除”或“设置值”访问权限的密钥。

regedit可以做的是使用 write-dacl 访问打开密钥。有问题的 ACE 并不否认这一点。

一旦 regedit(或任何其他程序)打开具有 write-dacl 访问权限的密钥,它就可以删除有问题的 ACE,然后对密钥进行任何其他需要的更改。

嗬!

于 2019-02-21T18:17:26.620 回答