2009-09-20 91 views
7

我已经编写了一个运行为“本地系统”的.NET Windows服务。最近我读到,由于本地系统可能会将系统凭据暴露给黑客,使他们能够接管系统,所以我运行这个系统。 涉及的风险是什么?当我以本地系统运行服务时,如何防止这些风险。作为“本地系统”运行Windows服务有哪些安全风险?

回答

6

作为LocalSystem运行的服务是系统可信空间的一部分。从技术上讲,他们有SeTcbName特权。这意味着,尤其是,这些服务可以改变任何安全设置,授予他们自己的任何特权,并且通常可以做Windows所能做的任何事情。因此,服务中的任何缺陷 - 传递给系统函数的unsanitized输入,错误的dll搜索路径,缓冲区溢出,无论如何 - 都会成为一个严重的安全漏洞。这就是为什么没有企业环境中的系统管理员将允许您的服务在LocalSystem下运行。使用LocalServiceNetworkService帐户。

0

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

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

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

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

编辑:你可能想要找一个S2。 Window Services以查找有关本地系统导致的风险的更多信息。 http://www.sans.org/top20/

0

我认为主要的问题是,如果有人会发现在你的服务中的安全漏洞,可以让他访问系统资源和/或执行代码 - 它的访问/使用本地系统权限执行(这是一样的建在管理员中)。 问题是 - 你是否确信你的服务是黑客证明? :P

+0

内建管理员在NT 4之后默认没有'SeTcbName',所以'LocalSystem'拥有比本地管理员更多的权限。 – 2009-09-20 21:43:43

相关问题