在WFP的FwpmFilterAdd函数中使用安全描述符添加过滤器

时间:2014-08-08 00:56:41

标签: security wfp

我想阻止任何人删除我的帐户以外的注册过滤器。 我想知道如果我在FwpmFilterAdd函数中设置安全描述符是可能的。 你能告诉我一个示例的源代码,它为我的目的添加了一个使用安全描述符的过滤器吗?

我读过"妨碍过滤器删除"和#34;强制删除过滤器"在WFP msdn。 有没有任何方法可以阻止任何人强制删除过滤器? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

首先,仅针对上下文,这些是您引用的示例代码的链接:

那里的示例只是说明了如何使用FwpmFilterSetSecurityInfoByKey0FwpmFilterGetSecurityInfoByKey0 API。然而,为这些样本选择的特定方案的实际目的是非常可疑的。为什么有人希望在WFP过滤器上设置显式ACL以禁用对世界的DELETE访问,同时禁用WRITE_DAC和WRITE_OWNER?出于所有实际目的,本地管理员总是可以取回对象的所有权,然后覆盖安全描述符(这是“强制过滤器删除”示例正在执行的操作)。 非管理员无法获取其他帐户的对象的所有权,并且即使使用默认安全描述符也无法删除WPF过滤器,这将通过将NULL作为第三个参数传递给FwpmFilterAdd来提供给过滤器。

要回答您的问题,您不需要再进一步保护它。使用“Hindering Filter Deletion”技术不会获得更多安全性。该技术所做的最好的是添加一小部分混淆。您为WFP过滤器获得的默认DACL是BFE引擎DACL,描述为here.使用默认DACL,只有本地管理员具有DELETE访问权限。根据定义,本地管理员可以对系统执行任何操作,因此管理员无需任何安全保护。