我认识 Bob,他是一名系统管理员。Bob 需要将软件 Foo 部署到 Alice 的基于 Windows NT(XP 及以上版本)的工作设备上。Foo 是安全软件。它不是恶意软件。
Alice 拥有其设备的本地管理员权限。Bob 希望禁止 Alice 终止进程或卸载 Foo。但是,如果 Bob 愿意,他应该能够卸载 Foo。
假设有一种方法可以阻止本地管理员 Alice 终止特定进程 Foo。我该如何实现仅允许 Bob 卸载 Foo 的功能?
答案1
不可能。无论你采取什么保护措施,Alice 总是能够使用她的管理员卡来绕过它们。
答案2
您唯一的选择是将 Alice 从管理员组中删除,因为从个人经验来看,如果域将某些东西推送到我的电脑上而我不想要它,我只需通过服务禁用它或终止该进程,虽然我不是域管理员,但我是网络上其他每个设备的管理员。
答案3
你想要的并不实际。你能得到的最接近的结果是供应商修改他们的服务以注册为受保护的进程(Windows 8.1/2012 R2)。
使用早期启动反恶意软件 (ELAM) 驱动程序保护反恶意软件服务
https://msdn.microsoft.com/en-us/library/windows/desktop/dn313124%28v=vs.85%29.aspx
“在 Windows 8.1 中,引入了受保护服务的新概念,允许将反恶意软件用户模式服务作为受保护服务启动。在服务以受保护方式启动后,Windows 使用代码完整性仅允许受信任的代码加载到受保护的服务中。Windows 还保护这些进程免受代码注入和其他来自管理进程的攻击。”
[...]
“更新和服务
“在反恶意软件服务以受保护的方式启动后,其他未受保护的进程(甚至管理员)都无法停止该服务。在更新服务二进制文件的情况下,反恶意软件服务需要从安装程序接收回调以自行停止,以便对其进行维护。服务停止后,反恶意软件安装程序可以执行升级,然后按照上面注册服务和以受保护的方式启动服务部分中所述的步骤注册证书并以受保护的方式启动服务。
“请注意,服务应确保只有受信任的调用者才能停止服务。允许不受信任的调用者这样做违背了保护服务的目的。
取消注册服务
“卸载受保护的服务时,该服务必须通过调用 ChangeServiceConfig2 API 将自身标记为不受保护。请注意,由于系统不允许任何不受保护的进程更改受保护服务的配置,因此对 ChangeServiceConfig2 的调用必须由受保护的服务本身进行。在将服务重新配置为以不受保护的方式运行后,卸载程序只需采取适当的步骤即可从系统中删除反恶意软件。”