Windows 系统第三方服务开发者可以借助 WSH (Windows Service Hardening) 机制提高安全性
2020-11-23 11:10:00 Author: www.4hou.com(查看原文) 阅读量:195 收藏

Windows服务帐户是特权升级的首选攻击面之一,如果你能够盗用此类帐户,则获得最高特权非常容易,这主要是由于操作系统默认将强大的模拟特权授予服务。

即使Microsoft引入了WSH(Windows Service Hardening),你也无法“降低”标准Windows服务的能力,但如果你需要构建或部署第三方服务,则可以通过使用WSH。在这篇文章中,我将向你展示一些有用的技巧。

利用虚拟帐户

显然,服务必须使用特定帐户运行,有一些内置的Windows帐户,例如Local Service和Network Service。但是也可以使用自我管理(无需处理密码)的虚拟帐户,并且你可以通过设置正确的权限来授予特定权限ACL位于资源上。这使你能够隔离服务,并且在出现攻击的情况下,它们只能访问你允许的资源。虚拟帐户也可以访问网络资源,但是在这种情况下,它们将模拟计算机帐户(COMPUTERNAME $)。

使用虚拟帐户配置服务

首先,你无需创建VSA,在安装服务后,系统会自动以以下格式为你创建一个匹配帐户:

NT SERVICE\

你所需要做的就是将帐户分配给你的服务:

2.png

不要忘记将密码字段留空。

限制对虚拟帐户的访问

现在,你的服务是在特定帐户下运行的,而不是像Local Service或Network Service这样的通用帐户,你可以在文件和目录等资源上实现细粒度的访问控制:

3.png

4.png

5.png

删除不必要的特权

模拟特权无疑会增加攻击面,因此,如果你的服务不需要模拟,为什么我们应该将其授予此服务用户呢?

6.png

是否可以删除此默认特权?当然可以!我们可以直接在注册表中或使用“ sc.exe”命令配置特权:

7.png

这些值将被写入注册表:

8.png

让我们看看特权是否被删除:

9.png

10.png

可以看到,危险的特权已被删除,再也无法将他重新找回,例如,使用此帖子中介绍的@itm4n的技巧。

写入受限令牌

如果将此额外的组添加到服务令牌中,则可以进一步限制服务帐户的权限。

11.png

12.png

这意味着默认情况下,你只能读取或执行资源,除非你明确授予写入访问权限:

13.png

14.png

本文翻译自:https://decoder.cloud/2020/11/05/hands-off-my-service-account/如若转载,请注明原文地址:


文章来源: https://www.4hou.com/posts/JlOK
如有侵权请联系:admin#unsafe.sh