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

我编写了一个运行为“本地系统”的.NET Windows服务。 最近我读到,作为本地系统运行可能会向黑客公开系统凭证,使他们能够接管系统。 涉及的风险是什么?当我作为本地系统运行服务时,如何防止它们。

作为LocalSystem运行的服务是系统可信空间的一部分。 从技术上讲,它们具有SeTcbName权限。 这意味着, 除其他外 ,此类服务可以更改任何安全设置,授予自己任何权限,并且通常可以执行Windows可以执行的任何操作。

因此,您服务中的任何缺陷 – 传递给系统函数的未经过处理的输入,错误的dll搜索路径,缓冲区溢出等等 – 都成为一个关键的安全漏洞。 这就是为什么企业环境中的系统管理员如果在LocalSystem下运行则不允许安装服务的原因。 使用LocalServiceNetworkService帐户。

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

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

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

您可以删除各种权限以限制可以执行的损害。

编辑:您可能想要查找S2。 Window Services,用于查找有关本地系统风险的更多信息。 http://www.sans.org/top20/

我认为主要的问题是,如果有人在您的服务中发现一个安全漏洞,让他访问系统资源和/或执行代码 – 它使用本地系统权限(与管理员内置的相同)访问/执行。 问题是 – 你是否完全确定你的服务是黑客certificate? :P