我编写了一个运行为“本地系统”的.NET Windows服务。最近我读到,作为本地系统运行可能会向黑客公开系统凭证,使他们能够接管系统。 涉及的风险是什么?当我作为本地系统运行服务时,如何防止它们。
答案 0 :(得分:6)
以LocalSystem
运行的服务是系统可信空间的一部分。从技术上讲,他们拥有SeTcbName
特权。这意味着除其他外,这些服务可以改变任何安全设置,授予自己任何权限,并且通常可以执行Windows可以执行的任何操作。
因此,您服务中的任何缺陷 - 传递给系统函数的未经过处理的输入,坏的dll搜索路径,缓冲区溢出等等 - 都成为一个关键的安全漏洞。这就是为什么企业环境中的系统管理员如果在LocalSystem
下运行,则不允许安装您的服务。使用LocalService
和NetworkService
帐户。
答案 1 :(得分:0)
对于您运行的任何服务,或者我相信任何应用程序,您应该让应用程序删除不需要的权限,以减少黑客的影响。
因此,如果服务不需要写入本地目录或删除,则删除该权限。
此外,您可以查看是否需要访问注册表项。
您可以删除各种权限以限制可以造成的损害。
编辑:您可能想要查找 S2。窗口服务以查找有关本地系统导致的风险的更多信息。 http://www.sans.org/top20/
答案 2 :(得分:0)
我认为主要的问题是,如果有人发现您的服务中存在安全漏洞,让他访问系统资源和/或执行代码 - 它会使用本地系统权限(与管理员内置的相同)访问/执行。 问题是 - 你是否完全确定你的服务是黑客证明? :P