0x00 前言
在域渗透中,有关域内主机的本地管理员的安全介绍还很少,对于LAPS大都比较陌生,所以这次就和我一起学习一下吧。
![e2e9f53cb6f540459e00079fcb75ae7e.png](https://i-blog.csdnimg.cn/blog_migrate/945a1dc42a04658a16a4ac2d797fa0fc.jpeg)
0x01 简介
在实际的域环境中,域内主机的本地管理员账户往往被忽视,再加上统一的配置,域内主机的本地管理员密码往往相同,这就带来了一个问题,如果获得一台域内主机的本地管理员密码,其他域内主机的本地管理员密码自然就知道了,解决这个问题最好的办法就是确保每台域内主机有不同的密码,并且定期更换。
所以微软在今年3月1号发布了LAPS(Local Administrator Password Solution)协议。
0x02 学习目标
站在渗透的角度,在研究之初设立了以下目标:
> 1、如果域内主机本地管理员账户密码相同,如何利用?> 2、LAPS是如何配置使用的?> 3、如果安装了LAPS,有没有利用方法?
注:
对于问题1,如果账户权限配置不当,可以利用pass-the-hash尝试获取其他域内主机权限,mimikatz的操作命令之前有介绍,本文不做重点介绍,暂时忽略。链接:http://drops.wooyun.org/tips/7547
0x03 测试环境
域控:server 2008 r2 x64域内主机: win7 x64
0x04 配置LAPS
1、安装LAPS
域控:
-1)下载LAPS
https://www.microsoft.com/en-us/download/details.aspx?id=46899
-2)安装
选择全部功能
如图
![40e85bcf679bff9c47f55938b57a5f88.png](https://i-blog.csdnimg.cn/blog_migrate/ab1499c3ee3a1cb976634be71a83ee07.jpeg)
域内主机:
下载安装,方法同上
Tips:
域内主机批量安装可使用组策略安装的方法
参考链接如下:
Install 32-bit and 64-bit applications with Group Policy and SCCM
2、域控LAPS配置
对于这部分可以理解为域的配置以LDAP(Lightweight Directory Access Protocol)协议存储,现在需要添加两个属性来存储LAPS信息:
ms-MCS-AdmPwd:存储密码ms-MCS-AdmPwdExpirationTime:存储过期时间
我们可以打开C:Program FilesLAPSAdmPwd.Utils看到LAPS的安装配置:
如图
![2acb3491b54f6eb19d640edb68c6d286.png](https://i-blog.csdnimg.cn/blog_migrate/a2b4ed21a30f3e4ecdffbbcc503b39a7.jpeg)
-1)在域控上执行以下Powershell命令(需要使用域管权限登录)
import-module AdmPwd.PSGet-Command -Module AdmPwd.PSUpdate-AdmPwdADSchema
如图
![a70a92abefed1dee7b4185df274aefd9.png](https://i-blog.csdnimg.cn/blog_migrate/d55f18a12a118dc9acced5071de72e11.jpeg)
注:
server2008 默认Powershell 版本2.0执行import-module AdmPwd.PS会出现如下错误:下载powershell3.0,安装后重启再次执行即可
如图
![ed3b3940b2ce043d0ab10c35060e3dc4.png](https://i-blog.csdnimg.cn/blog_migrate/25f5502c4cd1acc51dae33ce86fd6491.jpeg)
-2)配置活动目录权限
(1)查看可以访问存储密码的用户组:
powershell执行:
import-module AdmPwd.PSFind-AdmPwdExtendedRights -OrgUnit "CN=Computers,DC=test,DC=local"
如图
![9c4c20783e5c09ee1975b1b57acb7110.png](https://i-blog.csdnimg.cn/blog_migrate/e574231da121883005b96ba41e43f323.jpeg)
(2)取消用户组访问存储密码的权限:
打开ADSIEdit.msc,右键连接,如图
![ab540324c315913d5b9bf130f4102cce.png](https://i-blog.csdnimg.cn/blog_migrate/5675853212c6c7e920bfb8f5ed885420.jpeg)
![9614a48da67f8964cba9c88117a63dd0.png](https://i-blog.csdnimg.cn/blog_migrate/bd4bfd5bb0c9be469b5023dc0b70d064.jpeg)
选择对应的组,右键-属性,如图
![274def73fc65447985c06189cdba7d34.png](https://i-blog.csdnimg.cn/blog_migrate/d30c8f8b534757404099829af563025f.jpeg)
选择安全-高级,如图
![d841ccaac07c798f4a6a0a811724e57b.png](https://i-blog.csdnimg.cn/blog_migrate/a2f5fbd92c1d4b40b05a351aab407e95.jpeg)
选中取消权限的用户-编辑-勾中拒绝所有扩展权限,如图
![fa2e752a25e4089268ee6ee54275e3d6.png](https://i-blog.csdnimg.cn/blog_migrate/3d0fca18248a5d0f160e99c2fb833f64.jpeg)
(3)增加用户组读取和重置存储密码的权限:
powershell执行:
import-module AdmPwd.PSSet-AdmPwdReadPasswordPermission -OrgUnit "CN=Computers,DC=test,DC=local" -AllowedPrincipals testadministratorSet-AdmPwdResetPasswordPermission -OrgUnit "CN=Computers,DC=test,DC=local" -AllowedPrincipals testadministrator
如图
![f8af2dfec14f525d83e4cf71a7bc39df.png](https://i-blog.csdnimg.cn/blog_migrate/efaac70c2b0e0b765e4ad282039f1517.jpeg)
(4)为域内主机添加可以更新密码的权限:
import-module AdmPwd.PSSet-AdmPwdComputerSelfPermission -OrgUnit "CN=Computers,DC=test,DC=local"
如图
![95527e4a2b9aa9f9c7fd525d4b51718a.png](https://i-blog.csdnimg.cn/blog_migrate/3a6044824734b382b5acaca8a55b6282.jpeg)
-3)配置LAPS密码组策略
gpedit.msc-管理模板-LAPS,设置对应的密码策略
如图
![e222332f1f0996e55a81e1d296d6999e.png](https://i-blog.csdnimg.cn/blog_migrate/f4a3131d8de55158d945b22d339b3f81.jpeg)
0x05 查看LAPS存储的密码
共有以下三种方法
1、属性编辑器
打开Active Directory 用户和计算机
查看-选中高级功能,如图
![bcc130394887fafee5c7e947e1f1bae8.png](https://i-blog.csdnimg.cn/blog_migrate/05b3540df7fcad078d5ed4cfb21a8775.jpeg)
选中对应计算机-右键-属性-属性编辑器-找到
ms-Mcs-AdmPwd:存储密码ms-Mcs-AdmPwdExpirationTime:存储过期时间
如图
![e05877ddddfdbf17c7cf955ed694ab9b.png](https://i-blog.csdnimg.cn/blog_migrate/7535693d851d20670358f9e75c74b5fe.jpeg)
2、LAPS UI
安装LAPS时可以选择安装LAPS UI,启动后输入计算机名,查询,如图
![59583c9208da16b7250eca606255695e.png](https://i-blog.csdnimg.cn/blog_migrate/794c9bda12d84701363193cb5f197df3.jpeg)
3、Powershell
(1)查询某主机
Import-Module AdmPwd.PS Get-AdmPwdPassword –ComputerName testf
或者
Get-ADComputer testf -Properties ms-Mcs-AdmPwd | select name, ms-Mcs-AdmPwd
如图
![f5db2d8bbd29ac1e2919abf83b25439a.png](https://i-blog.csdnimg.cn/blog_migrate/244c2195a66c8d172292949d24f16da7.jpeg)
![486861cac62e5628b6af94a1da8e5982.png](https://i-blog.csdnimg.cn/blog_migrate/abf95c43f3379eef1261b7f0cb038b11.jpeg)
(2)查询所有主机
function Get-LAPSPasswords{ [CmdletBinding()] Param( [Parameter(Mandatory=$false, HelpMessage="Credentials to use when connecting to a Domain Controller.")] [System.Management.Automation.PSCredential] [System.Management.Automation.Credential()]$Credential = [System.Management.Automation.PSCredential]::Empty, [Parameter(Mandatory=$false, HelpMessage="Domain controller for Domain and Site that you want to query against.")] [string]$DomainController, [Parameter(Mandatory=$false, HelpMessage="Maximum number of Objects to pull from AD, limit is 1,000.")] [int]$Limit = 1000, [Parameter(Mandatory=$false, HelpMessage="scope of a search as either a base, one-level, or subtree search, default is subtree.")] [ValidateSet("Subtree