什么是数字证书?
想象一下,你要去银行开户,需要身份证来证明你是你。数字证书就是网络上的“身份证”,它包含你的信息(如名字、邮箱)和一个“签名”(由证书颁发机构 CA 签发),证明它是真实的。证书常用于:
- 登录系统(比如 Kerberos 认证)。
- 加密网站(HTTPS)。
- 安全测试(渗透测试中,生成证书来模拟攻击)。
在 AD 环境中,证书由 AD CS(Active Directory Certificate Services)管理。它像一个“证书工厂”,你提交申请(请求),工厂根据“模板”(蓝图)生成证书。Certipy 是一个免费的 Python 工具,帮助你从命令行请求证书,常用于安全研究或测试。
生成证书不是随意的——你需要权限(如用户名和密码),否则工厂会拒绝。其过程则像填表格:提供基本信息、工厂细节、证书内容。不是所有字段都必须填,有些有默认值。
生成证书需要哪些字段?
1. 认证字段:证明你是合法申请人
这些是“入门票”,告诉系统“你是谁”。没有这些,请求会失败。
-
用户名(-u <用户名>):
- 含义:你的账户名,通常写成“用户名@域名”,比如“user@example.com”。域名是你的公司或组织的网络名。
- 是否必须:是的(或用其他认证方式代替)。例子:如果你是“ca-user@confidence.com”,就写这个。
-
密码(-p <密码>):
- 含义:你的账户密码。
- 是否必须:如果用密码登录,是的。但可以用“哈希”代替(见下面)。
-
哈希(-hashes <NTLM 哈希>):
- 含义:密码的加密版本,即NTLM hash。
- 是否必须:否(密码或这个,二选一)。
-
域控制器 IP(-dc-ip <IP 地址>)
2. 证书工厂字段:指定在哪里和怎么生成
这些决定证书从哪个“工厂”来,用什么“模具”。
-
证书颁发机构(-ca <CA 名字>):
- 含义:CA 的名字,比如“confidence-DC-CA”。CA 是“签发官”,像公章盖章处。
- 为什么需要:告诉工具去哪个 CA 申请。不同 CA 有不同规则。
- 怎么用:
-ca 'confidence-DC-CA'。先用certipy-ad find命令查出 CA 列表。 - 是否必须:是的。没有这个,请求无处可去。
-
目标 FQDN(-target <完整域名>):
- 含义:CA 服务器的完整网络名,比如“dc01.example.com”。FQDN 是“Fully Qualified Domain Name”的缩写,像详细地址。
- 为什么需要:精确指定连接哪个服务器,尤其是远程 CA。
- 怎么用:
-target 'dc01.example.com'。 - 是否必须:是的,如果 CA 不在本地。
-
模板(-template <模板名字>):
- 含义:证书的“蓝图”名字,比如“ca-login”或默认的“User”。模板定义证书的样子和用途。
- 为什么需要:不同模板有不同功能。比如“User”模板用于用户登录,“Machine”用于电脑。选错模板,证书可能没用。
- 怎么用:
-template 'ca-login'。用certipy-ad find查可用模板,尤其找“易受攻击”的(用于测试)。 - 是否必须:否,默认是“User”。但自定义时,必须指定。
3. 证书内容字段:定制证书的“个人信息”
这些让证书“个性化”,决定它属于谁、用于什么。
-
UPN(-upn <用户主要名称>):
- 含义:用户的主要身份,像邮箱格式,比如“administrator@example.com”。UPN 是“User Principal Name”的缩写。
- 为什么需要:证书的“备用名”,用于登录系统(Kerberos 认证)。在测试中,能伪装成别人。
- 怎么用:
-upn 'administrator@example.com'。如果模板允许,指定任意 UPN。 - 是否必须:否。但想生成针对特定用户的证书,就需要。
-
SID(-sid <安全标识符>):
- 含义:Windows 的“内部 ID”,一串数字如“S-1-5-21-…-500”。
- 为什么需要:增强证书的真实性,像添加“身份证号”。
- 怎么用:
-sid 'S-1-5-21-...-500'。先用certipy-ad account查 SID。 - 是否必须:否,但和 UPN 搭配用更好。
-
DNS 名(-dns <DNS 名字>):
- 含义:电脑的网络名,比如“computer.example.com”。
- 为什么需要:证书用于机器时,作为“备用名”。
- 怎么用:
-dns 'dc01.example.com'。 - 是否必须:否,主要机器证书用。
-
主题(-subject <主题名>):
- 含义:证书的“正式标题”,格式如“CN=Admin,DC=example.com”(CN 是 Common Name)。
- 为什么需要:定义证书主体是谁。
- 怎么用:
-subject 'CN=User,DC=domain'。 - 是否必须:否,模板有时自动填。
4. 其他可选字段
- 密钥大小(-key-size <大小>):证书“锁”的强度,默认 2048。
-key-size 4096更安全。 - PFX 文件(-pfx <文件>):用旧证书请求新一个。
-pfx 'old.pfx'。 - 代他人请求(-on-behalf-of <账户>):为别人申请。需要高权限。
- 取回旧证书(-retrieve
) :领取已批准的证书。
原文 https://blog.csdn.net/2301_79518550/article/details/151686799