Malware Dev 02 - Windows SDDL 后门利用之 SCManager

写在最前

如果你是信息安全爱好者,如果你想考一些证书来提升自己的能力,那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里:

https://discord.gg/9XvvuFq9Wb

我拥有 OSCP,OSEP,OSWE,OSED,OSCE3,CRTO,CRTP,CRTE,PNPT,eCPPTv2,eCPTXv2,KLCP,eJPT 证书。

所以,我会提供任一证书备考过程中尽可能多的帮助,并分享学习和实践过程中的资源和心得,大家一起进步,一起 NB~


背景

看到 Grzegorz Tworek(@0gtweet)的有关于 SDDL 后门利用的推文,感觉非常新奇。所以花时间学习了一下 SDDL,并且动手实践了一下 SCManager 的利用。

Windows 的访问控制(或者就是权限管理)让人摸不着头脑(想象 Linux 真的是单纯又简单),一会儿 SDDL,一会儿 ACL,一会儿 ACE,一会儿 DACL,一会儿 SACL,一会儿安全描述符(Security Descriptors),这些都是什么东西。这篇文章,我们一起浅析一下 Windows 访问控制(Access Control)。

其实不用被这么多术语所迷惑,等我们接下来用实际的例子把 SDDL 解释一遍,整个 Windows 访问控制就基本上清晰了。

在对 Windows SDDL 权限管理有一定的了解之后,我们再一起看一下对于 SDDL 的后门利用。

Windows 访问控制列表(Access Control List)

定义

Windows 访问控制,或者通常就叫权限,是随处可见的。每一个文件,每一个文件夹,甚至每一个注册表的键值,每一个服务,都有各自的权限(Permissions)。

每个用户,或者组,对于一个文件的权限。

在这里插入图片描述

每个用户,或者组,对于一个文件夹的权限。

在这里插入图片描述

每个用户,或者组,对于一个注册表键值对的权限。

在这里插入图片描述

以上看到的内容,就是 Windows 中,一个用户,或者组的 Access Control List(访问控制列表)。这是 GUI 上的样子,那么我们深入到最底层,Access Control List 又是什么样子的呢?

我们来看一下用户或者组,对于一个 Windows 服务的权限。

拿 Print Spooler 服务举例。

sc.exe sdshow Spooler

这就是 Windows 访问控制列表的真实样子。以下红框中的内容,就是本文要剖析的,Windows SDDL 安全描述符定义语言。

在这里插入图片描述
看到这里,想必大家会深深爱上 Linux 😄

Access Control List(访问控制列表),是 Windows 整个权限系统的统称。如果有一个包含关系,那么 Access Control List 就是外层最大的那一个圈,包含着接下来讨论的所有概念。

Windows SDDL

定义

SDDL,Security Descriptor Definition Language,是 Windows 中,以 字符串形式 来对一个对象的 安全描述符 做定义的语言。

安全描述符,指的是一种可以表示一个对象的所有者(O),所属组(G),对不同主体(用户,组)所开放的权限(DACL),以及系统审计规则(SACL)的数据结构。如下图。

图片来自https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-azod/ec52bde3-9c86-4484-9080-e72148a2d53b

字符串形式,指的就是 安全描述符 的表现形式。

SDDL,就是用来定义 安全描述符 的语言。

在这里插入图片描述
上图红框中过的字符串,就是 Print Spooler 服务的 SDDL 定义。

SDDL 的格式

SDDL 的格式如下:

O:owner_sid
G:group_sid
D:dacl_flags(string_ace_1)(string_ace_2)…(string_ace_n)
S:sacl_flags(string_ace_1)(string_ace_2)…(string_ace_n)

如果 SDDL 以 D 开头,代表着这条 SDDL 定义的是一条 DACL。

如果 SDDL 以 S 开头,代表着这条 SDDL 定义的是一条 SACL。

DACL 和 SACL,都包含着数量不等的 ACE(string_ace)。

每一条 ACE,都包含着 6 个以分号分隔的成员。我们之后会展开细说。

O 和 G 不常出现,也不是我们的重点。

接下来,我们就这里出现的几个新术语,DACL,ACE,SACL,一一做解释。

DACL

定义

DACL, Discretionary Access Control List,中文译为 自由访问控制列表。其实有点不太准确。Discretionary,翻译成 量化,可能更为恰当。量化控制列表,指的就是对于各个不同的主体,我们分别给与了什么样的权限。

我们以 test-file.txt 文件的 SDDL 来举例说明。

cacls test-file.txt /S
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值