K.S*_*eff 5 c windows kernel driver
是否可以通过进程限制对命名管道的访问(图像名称或进程 ID 都可以)?
这里的上下文是一个 Filter Minidriver,它必须与执行大部分业务逻辑的用户空间服务进行通信。由于这种通信是安全敏感的,我想保护它免受外部干扰,而默认情况下,驱动程序创建的命名管道似乎可以由任何知道管道名称的用户空间进程进行通信(通过静态或动态分析很容易发现)。
这是我已经知道的:管道是 Windows 中的安全对象,因此它们有一个安全描述符。该安全描述符可以包含 DACL,它应该限制对对象的访问。我广泛搜索了条件 ACE 的文档和示例,我希望它们能够实现我想要的功能,但我未能找到任何相关内容。
编辑:我已经接受了 MSalters 的回答。人们普遍认为SYSTEM== ring0,虽然驱动程序的代码签名可能看起来很重要,但SYSTEM可以轻松禁用代码签名,因此不需要从SYSTEM到 的权限升级ring0- 它们已经相同。另一方面,即使是默认的安全描述符(在微过滤器驱动程序上下文中 - 请参阅参考资料FltBuildDefaultSecurityDescriptor)也包含一个限制,以便只有SYSTEM管理员可以访问该对象,因此不需要(或似乎是可能的)进一步的操作。
无论如何,图像名称不受保护,任何人都可以创建“Notepad.EXE”。进程 ID 只是一个数字,可以重复使用,因此也没有保护。此外,您可以通过多种方式将 DLL 走私到另一个进程中,因此即使您知道某个特定进程正在运行您的 EXE,您仍然不知道它是否只运行您的 EXE。
Windows 安全模型使用安全主体(用户和系统帐户)的概念。这些受到 ACL 的直接支持,并且受到保护以防止欺骗。如果您的过滤器驱动程序拒绝与任何人交谈,但它愿意与用户 X 的进程 A 交谈,那么它应该愿意与用户 X 的任何进程交谈,这是有道理的。