LAPS
为了继续解决针对进一步保护本地管理员的凭证的攻击,微软在 2015 年推出了本地管理员密码解决方案 LAPS,即可以远程(LAPS) 是一种用于管理域主机上的本地管理员凭证的解决方案。 本地管理员帐号户可以是默认帐户或自定义帐户。部署 LAPS 后,密码是随机的、自动更改的,并且与其他帐户的密码不同。在域主计算机上安装了 LAPS 之后,该主计算机会增加 2 多出两个新的域属性 ms-mcs-AdmPwnExpirationTime 和 ms-msc-AdmPwd,分别是 ms-mcs-AdmPwnExpirationTime 以及 ms-msc-AdmPwd,分别是过期时间以及和明文密码。 LAPS 通过域内中的组策略对象 GPO LAPS 进行管理。 域管理员对 ms-msc-AdmPwd 属性具有读取权限,但可以将读取权限委派给其他主体,如特定域用户或组。从系统管理员的角度,我们可以在 DC 上查看最新的LAPS密码。
枚举
明文密码仅具备特定权限的对象可以读取在 RAVEN-MED 域中,域管理员可以分配该权限。在之前章节中我们说过,配置了 LAPS 的有为一些域主机存在 admpwd.dll(其实也就 文件,当然我们也可以通过枚举1 LAPS台 GPO的作用域主机来得知) 安装。我们可以通过导入 powerview 脚本,执行以下命令:
Get-NetComputer -Filter "(https://github.com/leoloobeek/LAPSToolkitms-mcs-admpwdexpirationtime=*)" 来查| select dnshostname
我们看哪些主机到,RAVEN-MED 域中只有 mon01 被配置了 LAPS,哪些对象LAPS。
根据 Bloodhound,我们发现 PROD 域中的 harold 可以查看阅读 LAPSmon01 密码,以及如果当前用户可以具备权限,则读取对应主机的 LAPS 密码。因为
PowerView
读取权限,可以直接使用 PowerView 的命令 get-netcomputer -identity xxx 查看 LAPS 明文密码
在确定了 prod\harold 可以阅读 mon01 的 LAPS 密码后,我们需要获得 harold 的上下文。根据之前的利用,我们可以很轻松地得到 harold 的凭证从而获得访问。
然后执行以下命令以读取明文密码:
Get-NetComputer -Filter "(ms-mcs-admpwd=*)" | Select dnshostname,ms-mcs-admpwd
新 LAPS
就在 2023 年 4 月,微软发布了新一代 LAPS,而我们目前为止所讲的 LAPS 成为旧版本的了。新的 LAPS 有以下特征
1:Windows 原生集成。
2:支持 Azure AD
3:对本地 AD 的 LAPS 增加新的特性,例如下图所示