我当时正在研究Windows,当我知道,当使用本地系统以外的帐户运行服务时,SCM会自动授予帐户某些安全特权,比如SeServiceLogon right和SeTcbPrivlige,我知道它需要服务登录权,但是这个TcbPrivilege权限是什么呢?为什么需要它?
此外,如果服务要与桌面交互,则授予额外的四种特权,如创建令牌特权、分配主令牌特权等。请解释为什么需要它?
发布于 2014-10-01 11:35:49
TL;TR
此权限可用于在另一个用户(包括SYSTEM)下创建和运行进程,为该用户提供适当的访问令牌。
Windows服务是在后台运行的程序,用于执行操作系统运行所需的操作。当您说“使用本地系统以外的帐户运行服务时,SCM会自动授予帐户某些安全权限”时,应该注意的是,服务只能通过以下三个服务用户帐户服务用户帐户启动:
这意味着要运行Windows服务,您必须已经拥有这三个“用户”之一的特权。System本质上是一个管理员,另外两个是相当高级别的用户组。
来自MSDN的
C++常量: SE_TCB_NAME字符串:作为操作系统一部分所需的SeTcbPrivilege脚本短名称:SeTcbPrivilege。持卡人是可信计算机库的一部分。
服务是操作系统的扩展,因此在默认情况下SCM将此特权授予服务并不令人惊讶。受信任的计算机基础特权允许访问被认为是计算机(即操作系统)安全的“基础”的硬件设备驱动程序和/或软件组件。
允许进程像用户一样进行身份验证,从而获得与用户相同的资源的访问权限。只有低级别的身份验证服务才需要此权限。
换句话说,这允许进程模拟用户。我知道模拟这确实意味着您可以以SYSTEM。听起来很糟糕,但是有一种内置到Windows中的“模拟用户”机制。这是Run as Administrator履行其职责的方式。但是,要授予此权限,必须以某种方式提供管理员凭据。如果恶意软件已经能够给自己分配这个权限/特权,那么您已经有了很多麻烦。
访问令牌是允许线程/进程/用户访问操作系统某些部分的Windows方式。安全令牌几乎传递到Windows中使用的每个较低级别的函数。因为服务通常以更高的权限运行,所以它们被授予创建访问令牌的权限。在与桌面交互时,它们可能是与用户级对象交互。他们将需要为此访问、修改和创建令牌。
所有这些行为都不是不寻常的。服务是具有高系统权限的低级程序。您提到的特权都是服务要拥有的标准特权。因此,许多恶意软件会试图模仿,或者使用服务来访问系统。有关该主题的更多信息,请参见请看我的答案。
https://security.stackexchange.com/questions/68713
复制相似问题