DC操作系统 – Windows Server 2008 R2标准
客户端操作系统 – Windows XP,Windows 7
我通过networking策略服务器实施了安全策略,并自动启用了有线自动configuration服务。 在启用有线自动configuration服务的同时,如果选中“允许服务与桌面交互”标记,则可以在某些Window7笔记本电脑中正常工作。
但在互联网上,它给我的警告“交互式服务可以显示用户界面并接收用户input,如果您允许服务与桌面交互,那么桌面上显示的任何信息也将显示在交互式用户桌面, 恶意用户就可以控制这个服务,或者从交互桌面上进行攻击。
你能给我举一些例子吗?恶意用户如何控制服务或从交互式桌面攻击它?
Microsoft在2008 / Vista中引入了会话0隔离。 在会话零隔离的情况下,所有Windows服务现在都在会话0中运行,所有人类会话都在会话1和以上运行。
所以,强烈build议devise一个需要与桌面交互的Windows服务。 devise一个与桌面交互的服务在技术上仍然是可能的,但是强烈的不鼓励。 这是错误的做法。
当Windows服务必须与桌面交互时,交互式login的桌面将切换到查看会话0的桌面,以便对话框或任何需要注意的事项都得到关注。
现在我们有一个非常高权限的帐户,通常是本地系统,显示一个标准用户的对话框。 该对话框正在本地系统的上下文中运行。 您正在给该标准用户一个机会,利用该对话框中的某些内容,并使其在Local System的安全上下文中执行某些操作。 所以这就是危险的地方。
这里的重点是Windows的消息转发机制,允许任何进程发送任何消息到自己的会话中的任何窗口。 如果其中一个窗口属于权利较高的进程,则这显然具有安全风险。 这类攻击被称为“粉碎攻击” ,并在几年前的整个安全现场进行了深入的讨论。
作为根本原因是不可能解决的 – 大多数情况下,如果不是所有为Windows编写的软件都依赖于此function,那么决定处理这个问题的唯一方法就是分割 – 在单个用户会话中运行的所有东西都必须是在单个安全上下文中运行。 自从90年代后期以来,服务devise准则一直在反映这一点,并且阻碍了GUI代码在服务的上下文中运行。 Windows Vista已经迫在眉睫,在这种情况下,您无法再让服务与用户的桌面进行交互。
当然,这也适用于Windows 7,通过选中“允许服务与桌面交互”,您可以让服务与用户看不到的虚拟桌面进行交互。 如果它修复你的服务 – 很好,让它成为。 但是请确保你没有任何Windows XP机器,因为这确实会造成前述的安全风险。