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

C# “作为”运行Windows服务有哪些安全风险;本地系统;?,c#,windows-services,C#,Windows Services,我编写了一个.NET Windows服务,它作为“本地系统”运行。最近我读到,作为本地系统运行可能会向黑客暴露系统凭据,使他们能够接管系统。 当我以本地系统运行服务时,涉及哪些风险以及如何预防这些风险。对于您运行的任何服务,或者我相信任何应用程序,您都应该让应用程序删除不需要的权限,以减少黑客的影响 因此,如果服务不需要写入本地目录或删除,则删除该权限 此外,您还可以查看是否需要访问注册表项 您可以删除各种权限以限制可能造成的损害 编辑:您可能需要查找S2。Window Services查找有关

我编写了一个.NET Windows服务,它作为“本地系统”运行。最近我读到,作为本地系统运行可能会向黑客暴露系统凭据,使他们能够接管系统。
当我以本地系统运行服务时,涉及哪些风险以及如何预防这些风险。

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

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

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

您可以删除各种权限以限制可能造成的损害

编辑:您可能需要查找S2。Window Services查找有关本地系统风险的更多信息。

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

作为

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


因此,服务中的任何缺陷——传递给系统函数的未初始化输入、错误的dll搜索路径、缓冲区溢出等等——都会成为一个严重的安全漏洞。这就是为什么在企业环境中,如果您的服务在
LocalSystem
下运行,则没有系统管理员允许安装该服务的原因。使用
LocalService
NetworkService
帐户。

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