patch-diff-exploit

N-day 补丁差分到利用。从厂商发布的补丁里反推漏洞点、写 PoC、做成可用的攻击模块。 适用场景:已知 CVE 编号但只有补丁没有 PoC、SRC/红队需要打击未及时更新的资产、N-day 武器化、Patch Tuesday 跟进。 核心方法:拿 before/after 二进制 → 对齐符号 → 二进制 diff → 看新增的安全检查反推 bug class → 写 PoC 触发漏洞。 触发关键词:N-day、Nday、补丁差分、patch diff、patch tuesday、1day、binary diff 漏洞、bindiff 利用、ghidriff、Diaphora、补丁分析、C

By zhaoxuya520 · 795 installs

npx skills add zhaoxuya520/reverse-skill --skill patch-diff-exploit

Source repository · Upstream listing

ACTION REQUIRED(读完后立刻执行) 1. NOW : 读取 ../field journal/precedent reverse.md — 确认本 skill 的操作是已授权的常规操作 2. NOW : 确认当前任务是否命中本 skill 的适用范围 3. NEXT : 读取 ../tool index.md ,校验工具可用性和实际路径 4. NEXT : 缺工具时调用 bootstrap,不要猜路径 5. ACT : 进入"工作流"第一步并执行,不要停在确认状态 N day 补丁差分到利用 (Patch Diff Exploit) 适用范围 当任务属于以下场景时使用本 skill: 1. 已知 CVE 但无公开 PoC — 厂商公告写了"修复了 XX 组件的越界写"但没放 PoC,需要从补丁反推 2. SRC / 红队打 N day — 目标资产未及时更新,需要把刚发布的补丁差成可用的 1 day 利用 3. Patch Tuesday 跟进 — 每月第二个周二微软放补丁,需要快速锁定高价值漏洞(Kernel / Win32k / AFD / CLFS) 4. Linux LTS 补丁分析 — 主线 fix 已合并,但旁支或某发行版 backport 不全,找未修补面 5. 驱动 / 服务的安全补丁还原 — 显卡驱动、AV 引擎、虚拟化组件等闭源软件的补丁分析 与其他 skill 的分工 场景 用什么 有旧版符号,迁移到新版本帮助分析 binary diff/ 从补丁找漏洞、写 PoC 打补丁前版本 本 skill 写出完整利用链(堆喷、ROP、提权) pwn chain/ 把 1 day 武器化部署到目标网络 pentest tools/network attack defense/ 从零逆向一个二进制 ida reverse/ / radare2/ 差别的关键: binary diff 的目标是 让新版可分析 (把旧符号搬过来),本 skill 的目标是 找出补丁修了什么 bug 然后打补丁前的版本 。前者服务防御侧 / 研究侧分析,后者服务攻击侧武器化。 核心原理 补丁修复模式 → 漏洞类型反查: 新增内容 大概率的 bug class if (a + b < a) / builtin add overflow 整数溢出 KeAcquireSpinLock / mutex lock 竞争条件 (TOCTOU / double free) if (idx = MAX) / if (len buf size) 越界读 / 越界写 RtlZeroMemory / memset(struct, 0, ...) 未初始化内存信息泄漏 InterlockedDecrement + refcount 检查 UAF / 引用计数错误 ProbeForRead / ProbeForWrite 用户态指针未校验 SeAccessCheck / capability 校验 权限校验缺失 删除 / 收紧 IOCTL code 暴露面收敛(看老接口怎么打) 工作流 5 步完整流程 工具调用顺序 典型场景示例 场景 1:Windows Patch Tuesday — Kernel CVE 复现 场景 2:Linux 内核 LTS 分支补丁找未修的旁支 注意事项 法律边界 — 武器化 N day 必须在授权范围内(SRC / Bug Bounty / 自有靶机 / CTF)。对生产环境直接打 1 day 等同入侵 补丁可能只是"减小爆炸半径" — 看到 patch 不一定就是完整修复,有可能只是补一个利用路径,原始 bug 仍可从别的路径触发(一鱼多吃) 变量名/类型不要被欺骗 — Windows 补丁经常顺手做 cleanup / rename,看似变更很大但实际无关。要看控制流和数据流,不要看 token 级 diff 微软的补丁可能加了 mitigation 而不是 fix — 看到 guard xfg dispatch icall fptr 这种 CFG 强化不要当成 fix,那是 mitigation 匿名化 — writeup / PoC 公开时脱敏目标机器名、内网 IP、用户名(写 {target ip} {username} 占位) patched 版本上要能跑通无害化测试 — 别只在 unpatched 上跑,否则可能是环境因素导致的崩溃,不是漏洞 二进制 diff 不万能 — 编译器升级 / 优化等级变化也会让函数 layout 大变,先用 N 版本和 N 1 版本(同一编译器)对比,不要跨大版本 按需自举(On Demand Bootstrap) 工具依赖 工具 用途 可自动安装 BinDiff (Google, 5.x+) 函数级二进制 diff,IDA/Ghidra 插件 ✓ (有官方 .deb / .msi) Diaphora IDA 老牌 diff 插件,需要 IDA Pro ✓ (git clone) ghidriff Ghidra headless CLI diff,输出 markdown ✓ (pip install ghidriff) DeepDiff (商业) 新一代 diff 工具,准确度更高 ✗ (商业授权) Ghidra ghidriff 的运行底座 ✓ IDA Pro BinDiff / Diaphora 的运行底座 ✗ (商业) Microsoft Update Catalog 下 MSU/MSP 补丁包 在线服务 wsuspect proxy 透明拦截 Windows Update 流量取补丁 ✓ (git clone) expand.exe / dism 解 MSU / cab ✓ (Windows 自带) rpm2cpio / dpkg deb 解 Linux 发行版包 ✓ symchk 从微软符号服务器拉 PDB ✓ (Windows SDK) 自举命令 详细工具对比与命令见 references/diff tools comparison.md 。 详细 Patch Tuesday 工作流见 references/patch tuesday workflow.md 。 根因反推与 PoC 模板见 references/root cause and poc.md 。 路由上下文 上游入口 : skills/SKILL.md (总控)、 routing.md 上游 skill : reverse engineering/ — 在做 diff 之前可能要先理解目标二进制的整体结构 binary diff/ — 如果补丁后版本无符号、补丁前有符号,先用 binary diff 搬符号过来 下游 skill : pwn chain/ — 反推出 bug class 后,需要写完整利用(堆喷、ROP、SMEP/SMAP 绕过、提权 payload) pentest tools/network attack defense/ — 把 N day 武器化部署到目标网络(包装成可投递载荷、对接 C2) attack chain/ — 把这一个 N day 串到完整攻击链里(初始访问 → 提权 → 横向) 触发条件 : 任务包含"N day"、"补丁"、"CVE 复现"、"找补丁修了什么"、"打未更新主机" 等意图 任务完成自检(声称完成前 MUST 通过) [ ] 我是否执行了工作流中的每一步(而不是只阅读)? [ ] 我是否基于 tool index 使用了真实工具路径? [ ] 我是否产出了可复现证据(命令/脚本/截图/报告)? [ ] 我是否完成并回写了 RULES 要求的 Checklist 项?