作为“本地系统”运行Windows服务存在哪些安全风险?

9

我编写了一个运行为“Local System”的.NET Windows服务。最近我读到,以local system身份运行可能会暴露系统凭据,使黑客能够接管系统。当我以Local System运行服务时,有哪些风险,并且如何防止它们。

3个回答

9

LocalSystem 运行的服务是系统可信空间的一部分。从技术上讲,它们拥有 SeTcbName 特权。这意味着,inter alia,这样的服务可以更改任何安全设置、授予自己任何特权,并通常执行 Windows 可以执行的任何操作。

因此,您的服务中的任何缺陷——传递给系统函数的未经过滤的输入、错误的 DLL 搜索路径、缓冲区溢出等——都会成为关键的安全漏洞。这就是为什么在企业环境中没有系统管理员会允许您的服务在 LocalSystem 下运行并安装。请使用 LocalServiceNetworkService 帐户。


0

在您运行的任何服务或我相信任何应用程序中,您都应该删除不需要的权限,以减少黑客的影响。

因此,如果服务不需要写入本地目录或删除文件,则应删除该权限。

此外,您还可以查看是否需要访问注册表键。

有各种权限可供删除,以限制可能造成的损害。

编辑:您可能希望搜索S2. Window Services以获取有关由本地系统引起的风险的更多信息。 http://www.sans.org/top20/


0
我认为主要问题在于,如果有人发现您的服务中存在安全漏洞,可以让他访问系统资源和/或执行代码 - 它将使用 Local System 权限(这与内置管理员相同)。问题在于 - 您确定您的服务是完全防黑客攻击的吗? :P

内置管理员在NT 4之后默认没有SeTcbName权限,因此LocalSystem比本地管理员拥有更多的权限。 - Anton Tykhyy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接