我编写了一个运行为“Local System”的.NET Windows服务。最近我读到,以local system身份运行可能会暴露系统凭据,使黑客能够接管系统。当我以Local System运行服务时,有哪些风险,并且如何防止它们。
我编写了一个运行为“Local System”的.NET Windows服务。最近我读到,以local system身份运行可能会暴露系统凭据,使黑客能够接管系统。当我以Local System运行服务时,有哪些风险,并且如何防止它们。
LocalSystem
运行的服务是系统可信空间的一部分。从技术上讲,它们拥有 SeTcbName
特权。这意味着,inter alia,这样的服务可以更改任何安全设置、授予自己任何特权,并通常执行 Windows 可以执行的任何操作。
因此,您的服务中的任何缺陷——传递给系统函数的未经过滤的输入、错误的 DLL 搜索路径、缓冲区溢出等——都会成为关键的安全漏洞。这就是为什么在企业环境中没有系统管理员会允许您的服务在 LocalSystem
下运行并安装。请使用 LocalService
和 NetworkService
帐户。
在您运行的任何服务或我相信任何应用程序中,您都应该删除不需要的权限,以减少黑客的影响。
因此,如果服务不需要写入本地目录或删除文件,则应删除该权限。
此外,您还可以查看是否需要访问注册表键。
有各种权限可供删除,以限制可能造成的损害。
编辑:您可能希望搜索S2. Window Services以获取有关由本地系统引起的风险的更多信息。 http://www.sans.org/top20/
SeTcbName
权限,因此LocalSystem
比本地管理员拥有更多的权限。 - Anton Tykhyy