Skip to main content

用户与组

用户与组是域的重要组成部分,并且组是用户的容器,在同一个组里的用户具有特定的相同属性。对于用户和组的枚举,自然是我们首先要做的,因为很多漏洞和不当配置的利用都是围绕着用户与组、主机、服务等展开的。


准备工作

我们可以使用多种工具对域内的用于和组进行枚举,这里,我们使用 PowerView 脚本。我们可以通过 powershell-import 导入脚本,然后使用 powershell 或者 powerpick 命令进行脚本命令执行。

image.png

Web02white-bird.local 域中,我们可以进而对该域进行枚举。虽然我们还没有正式学到域信任的概念,在课程介绍阶段,大家了解到 white-bird.local raven-med.local 域互相信任,当然也包括了 Web01 主机所在的 prod 子域。简单来说,可以互相访问对方域的资源,至少可以枚举对方域的域信息。例如,我们在 Web02 主机上以 white-bird\serveradm 的身份枚举到了 PROD 域中的所有域用户的账户名称,通过 -domain 指定要枚举的域。Web01 是一台 Linux 的域主机,如果一些学员对在 Linux 域主机的枚举还不熟悉的话,我们可以以这样的方式跨域枚举。

image.png

好了,补充了工具用法与简单的理论知识,我们来枚举域的用户与群组信息。


用户与组的枚举

在枚举域用户的时候,我们需要关注以下这些属性:

用户描述

虽然很多时候用户描述可能是空白的,但如果不是空白的话,用户描述可能会揭露域用户的角色。 如服务器管理员、开发人员等。

Get-NetUser | select description

image.png

我们没有发现什么特别的,然后看看 raven-med.local 域的:

image.png

我们发现 simon 的描述是 CA Manager,这也许意味着 simon 具有 CA 相关的权限,我们发现 simon 是分组 CertManager 的成员。

image.png

预认证

如果某些域用户禁用了预认证 ,我们可以使用 ASREPRoasting 攻击他们并获取 krb5asrep 哈希。 如果幸运的话,我们有可能离线破解这些哈希并获得明文凭证。在现代化的 AD 环境中,已经没有必要禁用预认证了,从安全与防御的角度出发,系统管理员应当给所有账户开启域认证。

Get-NetUser -PreAuthNotRequired

image.png

在当前域,是没有符合条件的用户存在的,看看其他的域,发现了用户 jason 不需要预认证。

image.png

SPN

如果一个域用户被设置了SPN,那么它是一个服务帐号。我们可以对它们进行 Kerberoasting 攻击并获取 krb5tgs 哈希。 如果幸运的话,我们可能离线破解这些哈希并获得用户的明文凭证。

Get-NetUser -SPN

我们发现,账户 sql_servicekrbtgt 被设置了 SPNsql_service 看起来就是一个 SQL 的服务账户,而 krbtgt 总是会被设置 SPN,但实际并不可利用。

image.png

组归属

每个域用户至少属于“域用户”组,但如果有任何域用户属于多个组,那么他们往往可能具有特别的权限,例如可以访问某台主机上的共享目录。

Get-NetUser | select samaccount,memberof

更适合通过BloodHound查 BloodHound (后续内容介绍) 查看成员与组的关系,虽然使用SharpHound枚举的时候会带来迹象


我们以当前用户 serveradm 为例,发现其来自群组 Server Admin

image.png

查看 Server Admin 群组信息,根据描述得知,该组成员可以管理 Web02 Dev01 主机,因此 serveradm 可能对这 2 个主机具有远程访问权限,甚至最高权限 (root 和 Administrator)

image.png

外部成员

如果一个外部成员被拿下了,我们可借此移动到该外部成员原来所在的域。

PowerView枚举:

Get-DomainForeignUser

image.png


在我们可访问的域里,并没有发现外部成员。但是,我们发现,raven-med.local 中的用户 michael,在名为 ExtAdmin 的分组中。ExtAdmin 让人联想到 External Administrator,那么会不会代表 michael 在其他一个我们目前无法访问的域里充当着外部成员呢?这个只能在我们获得了更多的系统和域后验证了。

image.png

image.png

 

组的枚举

而在枚举组的时候,我们需要关注一下这些

组描述

类似于用户描述

PowerView描述:Get-NetGroup | select description


组类型

如果一个组并非是内置的,而是自定义的,例如Server Admins,那么我们需要多关注一下,因为这个组可能具有特定的权限,例如对SQL服务器具备本地管理员权限。


外部组

意义同外部成员。

PowerView枚举:Get-DomainForeignGroupMember