【发布时间】:2009-09-20 00:38:10
【问题描述】:
我编写了一个作为“本地系统”运行的 .NET Windows 服务。最近我读到,作为本地系统运行可能会将系统凭据暴露给黑客,使他们能够接管系统。 当我作为本地系统运行服务时,涉及哪些风险以及如何防止它们。
【问题讨论】:
标签: c# windows-services
我编写了一个作为“本地系统”运行的 .NET Windows 服务。最近我读到,作为本地系统运行可能会将系统凭据暴露给黑客,使他们能够接管系统。 当我作为本地系统运行服务时,涉及哪些风险以及如何防止它们。
【问题讨论】:
标签: c# windows-services
以LocalSystem 运行的服务是系统可信空间的一部分。从技术上讲,他们拥有SeTcbName 特权。这意味着,除其他外,此类服务可以更改任何安全设置,授予自己任何特权,并且通常可以执行 Windows 可以执行的任何操作。
因此,您的服务中的任何缺陷——传递给系统函数的未经处理的输入、错误的 dll 搜索路径、缓冲区溢出等等——都会成为一个严重的安全漏洞。这就是为什么企业环境中没有系统管理员会允许安装您的服务,如果它在LocalSystem 下运行。使用LocalService 和NetworkService 帐户。
【讨论】:
对于您运行的任何服务,或者我相信任何应用程序,您应该让应用程序删除不需要的权限,以减少黑客的影响。
因此,如果服务不需要写入本地目录或删除,则删除该权限。
此外,您可以查看是否需要访问注册表项。
您可以删除各种权限以限制可能造成的损害。
编辑:您可能想要为 S2 进行查找。 Window Services 以查找有关本地系统风险的更多信息。 http://www.sans.org/top20/
【讨论】:
我认为主要问题是,如果有人在您的服务中发现一个安全漏洞,让他可以访问系统资源和/或执行代码 - 它使用本地系统权限访问/执行(与内置管理员相同) . 问题是——你完全确定你的服务是防黑客的吗? :P
【讨论】:
SeTcbName,所以LocalSystem的权限比本地管理员还要多。