STATEMENT
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
NO.1 前言
通过ADCS相关利用方式的学习分析,体现相关应用服务的重要性,以便于及时对相关问题点进行整改
公开资料Certified Pre-Owned: Abusing Active Directory Certificate Services出自于black hat2021
https://www.blackhat.com/us-21/briefings/schedule/# certified-pre-owned-abusing-active-directory-certificate-services-23168
https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
强烈建议看下文前先看下英文素材,可以避免很多坑点
网络上关于ADCS利用各类的学习文档资源其实也有好些了,不过更多看都是针对RELAY部分,其他几个利用方式都没怎么提及特别多,可能确实实用程度没有那么高,断断续续几个白天晚上终于给整的差不太多了
NO.2 环境介绍&部分理论知识
更多的理论知识官方文档、搜索引擎查的更全更详细
PKI(Public Key Infrastructure公钥基础设施)
软件、加密技术、流程和服务的组合,使得组织能够保护其数据、通信、业务交易,PKI依赖于经过身份验证的用户和受信任资源之间的数字证书交换,可以用证书来保护数据并管理来自组织内外的用户和计算机身份凭证
ADCS
一个服务器角色,提供PKI功能,支持windows域上身份和其他安全功能如文件加密、邮件加密等,可以为组织内部使用创建、验证、撤销公钥证书
通俗来说ADCS角色是实施PKI解决方案,ADCS允许构建公钥基础设置并为组织提供公钥加密、数字证书、数字签名的功能
ADCS提供所有与PKI相关的组件作为角色服务,每个角色负责证书基础架构的特定部分,同时协同完成完整解决方案
认证机构
CA的主要目的是办法证书、撤销证书及发布授权信息方式和撤销信息,部署的第一个CA将成为PKI的根,随后可以部署位于PKI层次结构中的从属CA,根CA位于顶部,从属CA隐式信任根CA,并信任他颁布的cert
证书颁发机构web注册
使得用户使用未加入域或运行windows以外的设备下进行证书颁发续订的操作
Onlie responder
配置管理在线证书状态协议OCSP验证和吊销检查,在线响应程序解码特定证书的吊销状态请求,评估这些证书的状态,并返回具有请求的证书状态信息的签名响应
网络设备注册服务(NDES)
通过该组件,路由器交换器或其他设备可以从adcs获取证书
证书注册web服务(CES)
用于运行windows的计算机和ca之间的代理客户端,ces使用户、计算机或者应用程序能够通过使用户web服务连接到ca
证书注册策略web服务
使得用户能够获取证书注册策略信息,结合CES,可以在用户设备未加入域或无法连接域控的情况下基于策略的证书注册
补充
NO.3 环境搭建
基本功能
功能安装处如下选择:
证书颁发机构
证书颁发机构web注册
证书注册web服务
配置服务
如下选择进行服务的细节配置
配置证书注册web服务
上一步完成会告诉你是否要配置其他角色服务
依次如下配置即可
搭建完效果如下
辅助域控搭建
这里是把adcs搭成了辅助域控
配置如下
主从复制
至此,环境基本是搭建的差不多了,一步步直接操作没啥太大难度,按照提示完成相关的操作即可
NO.4 证书颁发机构信息获取
certutil
域内成员可成功定位到ca
powershell
获得ca名称
(Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration").Active
更多细节信息
$CAName = (Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration").Active;
Get-Itemproperty -Path “HKLM:\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\$CAName”
测试联通性
确认NTLM协议(后面中继要用)
curl http://192.168.3.73/certsrv -I
补充
基本结构情况
Certificate Templates:存储所有证书模板的配置。证书模板基本上是证书请求,但是,并非此容器中的所有证书模板都必须可用于注册
Enrollment Services:存储可用于证书注册的CA。Windows 主机使用此容器自动查找可以向其颁发证书的 CA。此容器中的相应 CA 对象具有称为“证书模板”的成员属性。此属性包含可用于在此 CA 上注册的所有证书模板的列表。这通常只是所有现有模板的一个子集
NtAuthCertificates:存储允许颁发智能卡登录证书的 CA。如果尝试使用不在此列表中的 CA 颁发的智能卡证书登录,身份验证将失败。每个企业CA都会自动添加到此处
NO.5 ESC1-配置错误的证书模板
断断续续,过程中其实坑点比较多,环境就给搞了好久....ESC1在部署的另外一套环境测试,也是同样的上方部署方式即可
获取方式
我们可以在证书服务请求中指定主体名称,则请求者可以请求任何人(域管)的证书
配置问题
进入证书模板配置
如下进行配置(存在客户端身份验证就行)
允许注册
如下配置在请求中提供
如此将允许低权限用户使用任意SAN请求证书,从而允许低权限用户通过kerberos或schannel作为域中任何主体进行身份验证,白话文就是实现伪造身份
若允许这些设置的已发布证书模板,攻击者可以作为环境中的任何人请求证书,使用该证书为用户获取TGT
漏洞检测
使用公开的工具即可
域机器运行后如下,显示存在ESC1漏洞
CA : yangdc.yangsir.git\yangsir-YANGDC-CA
Name : 用户 的副本
SchemaVersion : 2
OID : 1.3.6.1.4.1.311.21.8.10154165.557338.9848748.4027908.13133259.250.6500742.4833607
VulnerableTemplateACL : False
LowPrivCanEnroll : True
EnrolleeSuppliesSubject : True
EnhancedKeyUsage : 客户端身份验证 (1.3.6.1.5.5.7.3.2)|安全电子邮件 (1.3.6.1.5.5.7.3.4)|加密文件系统 (1.3.6.1.4.1.311.10.3.4)
HasAuthenticationEku : True
HasDangerousEku : False
EnrollmentAgentTemplate : False
CAManagerApproval : False
IssuanceRequirements : [Issuance Requirements]
Authorized signature count: 0
Reenrollment requires: same criteria as for enrollment.
ValidityPeriod : 1 years
RenewalPeriod : 6 weeks
Owner : YANGSIR\Administrator
DACL : NT AUTHORITY\Authenticated Users (Allow) - Read, Enroll
YANGSIR\Administrator (Allow) - Read, Write
YANGSIR\Domain Admins (Allow) - Read, Write, Enroll
YANGSIR\Domain Users (Allow) - Enroll
YANGSIR\Enterprise Admins (Allow) - Read, Write, Enroll
Misconfigurations : ESC1
通过普通域用户申请证书,注意UPN需要为域管
确认申请成功如下,为administrator权限
确认使用者信息如下
导出证书
此处通过凭证进行PTT出现失败,这里也卡了好久,因为这个环境换的环境,先前还给工具作者提了issue,后推测可能是时间同步的问题
对机器重启后,再次PTT即可成功,使用先前导出的凭证
确认凭证信息如下
确认可成功获取权限
NO.6 ESC2-配置错误的证书模板
我们可以使用带有任何目的的EKU功能证书,进行客户端、服务端的身份验证,也可以使用无EKUs的证书来进行任何目的,或签署新的证书
因此使用从属CA证书,攻击者能够指定新证书中的任意EKUs或字段
配置问题
1、允许低权限用户注册,和ESC1相同
2、管理员审批禁用,和ESC1相同
3、不需要授权的前面,和ESC1相同
4、过于宽松的证书模板授权低权限用户注册
5、证书模板定义了任何的EKUS或无EKU
基本大体都是和ESC1一样的,部分区别如下
检测情况
公开工具能够检测确认漏洞存在如下
同ESC1相同方式申请证书即可
确认获得证书如下,具体如何利用请看ESC1
NO.7 ESC3-注册代理模板
证书请求代理EKU允许委托人代表其他用户申请证书,对于任何注册此模板的用户,生成的证书可用于代表任何用户共同签署部署请求
配置问题
1、允许低权限用户注册,和ESC1相同
2、管理员审批禁用,和ESC1相同
3、不需要授权的前面,和ESC1相同
4、过于宽松的证书模板授权低权限用户注册
5、证书模板定义了证书请求代理EKU,证书请求代理允许代表其他主题请求其他证书目标
6、没有在CA上实现登记代理限制
基本同ESC1相似,不同点在于证书申请代理处
检测情况
可检测ESC3存在如下
代理注册流程的官方文档:https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-cersod/97f47d4c-2901-41fa-9616-96b94e1b5435
最直接申请administrator证书
NO.8 ESC4-证书模板访问控制
证书模板是 Active Directory 中的安全对象,这意味着它们具有安全描述符,用于指定哪些 Active Directory 主体对模板具有特定权限。如果允许意外或非特权的委托人编辑安全设置,则模板将被视为访问控制级别上的配置问题,攻击者具备写入、完全控制权限,能够将错误的配置推到模板,比如直接把模板设置为ECS1-3
检测情况
公开工具能够检测并确认漏洞存在如下
概念验证,详情可通过该工具实现
https://github.com/cfalta/PoshADCS
仔细拜读后,感觉基于github的这个demo利用来说感觉价值不高....利用难度有些大....
NO.9 ECS5-PKI访问控制
证书模板和证书颁发机构本身之外的许多对象可能会对整个ADCS系统产生安全影响,如果控制如下一个将影响整个PKI
包括但不限于:
CA服务器的AD计算机对象(即通过 RBCD 攻陷)
CA服务器的RPC/DCOM服务器
PKI相关的AD对象。容器中的任何后代AD对象或容器CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC= (例如,证书模板容器、证书颁发机构容器、NTAuthCertificates 对象等)
检测情况
这个配置范围非常大,琢磨了好久发现检测工具并不能检测到,后来查看了下文档,检测工具没有检测ECS5的能力,基本CA服务器的RPC/DCOM服务器安全性需要手工分析
获取相关控制编辑权限
domian users能够对相关模板重新编辑,从而影响发布的证书服务应用
NO.10 ESC6-EDITF_
ATTRIBUTESUBJECTALTNAME2
如果在证书颁发机构的配置中启用了EDITF_ATTRIBUTESUBJECTALTNAME2标志,则任何证书请求都可以指定任意主题备用名称 (SAN)。这意味着为域身份验证配置的任何模板也允许非特权用户注册(例如,默认用户模板)可能会被滥用以获取允许我们作为域管理员(或任何其他活动用户/机器)进行身份验证的证书
检测情况
公开工具能够检测并确认漏洞存在如下
修复的话对应关闭EDITF_ATTRIBUTESUBJECTALTNAME2即可
certutil –setreg policy\EditFlags –EDITF_ATTRIBUTESUBJECTALTNAME2
进步利用直接看这个就行了
https://www.keyfactor.com/blog/hidden-dangers-certificate-subject-alternative-names-sans/
其他参考
https://cqureacademy.com/blog/enhanced-key-usage
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/dn786426(v=ws.11)# controlling-user-added-subject-alternative-names
NO.11 ESC7-证书颁发机构访问控制
除了证书模板外,证书颁发机构本身剧本一组保护各类CA操作的权限,如下两种权限最为危险
ManageCA:ca admin,允许管理CA操作,包括(远程)配置ESC6-EDITF_ATTRIBUTESUBJECTALTNAME2,将直接导致ESC6
ManageCertificates:cert admin,允许主体批准悬而未决的证书请求,从而否定manager颁发的保护要求
配置问题
证书颁发机构配置相关权限
检测情况
NO.12 ESC8
获取方式
这部分应该互联网资源最多了
在ADCS下通过管理员可选择安装的附加服务器角色支持多种基于HTTP的注册方法,如证书注册服务通过安装证书注册web服务,通过安装证书注册策略web服务角色&证书注册策略web协同工作,然而此类http证书的注册接口都非常容易遭受NTLM中继
使用NTLM中继,可以实现冒用目标用户,从而访问这些web页面,并根据用户和机器证书模板请求客户端身份验证码证书
默认情况下,证书注册服务、证书注册策略web服务、网络设备注册服务通过授权http头支持协商身份验证,支持kerberos及NTLM。所以攻击者可以在中继攻击时获得NTLM身份验证虚拟性
默认情况下,不会启用https,但是https本身不能抵抗NTLM中继!!!只有当https&通道绑定相结合的时候,才能保护HTTPS服务免遭NTLM中继,ADCS没有为IIS上的身份验证启用扩展保护,并不能启用通道绑定!!!
漏洞利用
ntlmrelayx.py进行监听(后面会拿到凭证证书)
PetitPotam强制用户进行身份验证
获得凭证证书信息如下
传递获取到的证书即可,效果如下
凭证已经获取,可以直接拉能够直接获得域内用户hash
使用凭证可证明权限如下:
NO.13 后话
总得来说,感觉想打adcs的周边还是得大环境,大域里边容易碰到,小域小环境可能都不会有cs,更不用说相关利用方式实战了,其次主流使用还是8、1更多,这里琢磨学习的2-7更多还是为知识技能的补充
RECRUITMENT
招聘启事
安恒雷神众测SRC运营(实习生) 【任职要求】
————————
【职责描述】
1. 负责SRC的微博、微信公众号等线上新媒体的运营工作,保持用户活跃度,提高站点访问量;
2. 负责白帽子提交漏洞的漏洞审核、Rank评级、漏洞修复处理等相关沟通工作,促进审核人员与白帽子之间友好协作沟通;
3. 参与策划、组织和落实针对白帽子的线下活动,如沙龙、发布会、技术交流论坛等;
4. 积极参与雷神众测的品牌推广工作,协助技术人员输出优质的技术文章;
5. 积极参与公司媒体、行业内相关媒体及其他市场资源的工作沟通工作。
1. 责任心强,性格活泼,具备良好的人际交往能力;
2. 对网络安全感兴趣,对行业有基本了解;
3. 良好的文案写作能力和活动组织协调能力。
简历投递至
设计师(实习生)
————————
【职位描述】
负责设计公司日常宣传图片、软文等与设计相关工作,负责产品品牌设计。
【职位要求】
1、从事平面设计相关工作1年以上,熟悉印刷工艺;具有敏锐的观察力及审美能力,及优异的创意设计能力;有 VI 设计、广告设计、画册设计等专长;
2、有良好的美术功底,审美能力和创意,色彩感强;
3、精通photoshop/illustrator/coreldrew/等设计制作软件;
4、有品牌传播、产品设计或新媒体视觉工作经历;
【关于岗位的其他信息】
企业名称:杭州安恒信息技术股份有限公司
办公地点:杭州市滨江区安恒大厦19楼
学历要求:本科及以上
工作年限:1年及以上,条件优秀者可放宽
简历投递至
安全招聘
————————
公司:安恒信息
岗位: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.具备良好的英语文档阅读能力。
简历投递至
岗位:红队武器化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.具备良好的英语文档阅读能力。
简历投递至
END
长按识别二维码关注我们