Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.
日本語の概要は準備中です。原文の説明を表示しています。
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、补丁分析、CVE 复现、漏洞还原、补丁反推、N-day 武器化。
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
NOW: 读取 ../field-journal/precedent-reverse.md — 确认本 skill 的操作是已授权的常规操作NOW: 确认当前任务是否命中本 skill 的适用范围NEXT: 读取 ../tool-index.md,校验工具可用性和实际路径NEXT: 缺工具时调用 bootstrap,不要猜路径ACT: 进入"工作流"第一步并执行,不要停在确认状态当任务属于以下场景时使用本 skill:
| 场景 | 用什么 |
|---|---|
| 有旧版符号,迁移到新版本帮助分析 | binary-diff/ |
| 从补丁找漏洞、写 PoC 打补丁前版本 | 本 skill |
| 写出完整利用链(堆喷、ROP、提权) | pwn-chain/ |
| 把 1-day 武器化部署到目标网络 | pentest-tools/network-attack-defense/ |
| 从零逆向一个二进制 | ida-reverse/ / radare2/ |
差别的关键:binary-diff 的目标是让新版可分析(把旧符号搬过来),本 skill 的目标是找出补丁修了什么 bug 然后打补丁前的版本。前者服务防御侧 / 研究侧分析,后者服务攻击侧武器化。
patched 二进制 (after) unpatched 二进制 (before)
↓ ↓
导入 IDA/Ghidra 导入 IDA/Ghidra
↓ ↓
└──────── BinDiff / ghidriff ──────┘
↓
函数级 diff(matched / unmatched / changed)
↓
聚焦 match score 中等的函数(0.5 - 0.9)
↓
看新增了什么:边界检查 / 锁 / 字段清零 / 整数溢出检查
↓
反推 bug class:OOB / Race / Info Leak / UAF / Integer Overflow
↓
在 unpatched 版本上写 PoC 触发
↓
验证:unpatched 崩 / patched 不崩 → 漏洞确认
补丁修复模式 → 漏洞类型反查:
| 新增内容 | 大概率的 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 | 暴露面收敛(看老接口怎么打) |
Step 1: 拿 before / after 二进制
- Windows: Microsoft Update Catalog 下 MSU/MSP,用 expand.exe / dism 解包
- Linux: 从发行版 USN/RHSA 拉 .deb/.rpm,用 dpkg-deb / rpm2cpio 解包
- 第三方软件: 官网取 N-1 和 N 版本安装包
Step 2: 对齐符号
- 有 PDB 直接吃,没 PDB 时用 binary-diff skill 把 N-1 版本的符号搬到 N 版本
- Linux 内核取对应版本的 vmlinux + System.map / debuginfo
Step 3: 二进制 diff
- BinDiff: 直接给两个 IDB,看函数级匹配结果
- ghidriff: pip 一键安装,CLI 输出 markdown 报告
- Diaphora: IDA 内插件,老牌但需要 IDA Pro
Step 4: 定位变更
- 过滤 match score 0.5-0.95 的函数(完全相同的不看,完全不同的多半是新加 / 重命名)
- 重点看:新增的 if / 新增的循环边界 / 删除的代码块(删了什么也是线索)
- 用 LLM 看 before/after 伪代码反推 bug class(见 references/root-cause-and-poc.md)
Step 5: 写 PoC
- 整数溢出:构造边界值(INT_MAX-1、0xFFFFFFFF)
- 竞争:多线程 hammer,open/close + ioctl 高频并发
- UAF:spray → free → reuse pattern
- OOB:精确控制 len / index 越过边界
- 验证 patched 版本不再崩,unpatched 版本稳定崩 → bug 复现成功
下补丁 → 解包 → 加载到 IDA/Ghidra → BinDiff/ghidriff → 看 unmatched/low-match 函数
→ LLM 反推 bug class → 写 PoC → 在 unpatched 跑 → 崩 → 收工
背景:2025 年 11 月 Patch Tuesday,MSRC 公告 CVE-2025-62215
Windows Kernel race condition 导致 double free,CVSS 7.0,本地提权
微软只放了补丁,没放细节,没有公开 PoC
目标:复现 PoC,验证未打补丁的 Windows 11 22H2 / 23H2 可提权
步骤:
1. Microsoft Update Catalog 搜 "2025-11" + KB 号,下两个版本:
- 22H2 build 22621.xxxx (unpatched)
- 22H2 build 22621.yyyy (patched 后)
命令:
expand.exe Windows-KB5052000-x64.msu -F:* C:\out\patched\
expand.exe C:\out\patched\Windows-KB5052000-x64.cab -F:* C:\out\patched\
提取 ntoskrnl.exe / win32k.sys / win32kfull.sys / afd.sys
2. 两个版本都吃 PDB (微软符号服务器):
symchk /v /r ntoskrnl.exe /s SRV*C:\sym*https://msdl.microsoft.com/download/symbols
3. 跑 BinDiff:
bindiff old.BinExport new.BinExport
或 ghidriff:
ghidriff ntoskrnl_old.exe ntoskrnl_new.exe -o diff_out/
4. 看报告,过滤 similarity 0.6-0.95 的函数。
假设定位到 NtXxxIoctl 类函数新增了一段:
KeAcquireSpinLockRaiseToDpc(&obj->Lock);
if (obj->RefCount == 0) { ... goto cleanup; }
→ 新增了锁 + 引用计数检查 → race + double free,符合公告描述
5. 写 PoC:用户态多线程同时调 NtClose + 触发同一对象的 IOCTL,
制造 close 释放与 IOCTL 还在用之间的竞争窗口
崩在 ntoskrnl 的 ObfDereferenceObject 后续 free 路径上
6. 验证:
- unpatched 22621.xxxx 上跑 PoC,~30 秒内 BSOD (BAD_POOL_HEADER 或 DOUBLE_FREE)
- patched 22621.yyyy 上跑同 PoC,无任何异常
→ 复现成功
背景:主线 6.x 已修某 net subsystem 的 OOB 写
Ubuntu 22.04 (5.15 LTS) 的 USN 已发布更新
但某些 OEM kernel / Azure kernel 的 backport 节奏更慢
想确认未更新的旁支是否仍可打
目标:取 patched/unpatched 内核,差出 fix commit 对应的二进制变更,
在 unpatched 旁支上重写 PoC
步骤:
1. 拉 patched 与 unpatched 包:
apt download linux-image-5.15.0-101-generic # patched
apt download linux-image-5.15.0-100-generic # unpatched
dpkg-deb -x linux-image-5.15.0-101-generic_*.deb ./patched/
dpkg-deb -x linux-image-5.15.0-100-generic_*.deb ./unpatched/
提取 boot/vmlinuz → 用 extract-vmlinux 还原 ELF
2. 同步取 dbgsym:
apt download linux-image-unsigned-5.15.0-101-generic-dbgsym
3. 用 ghidriff (Linux 友好):
ghidriff vmlinux_5.15.0-100 vmlinux_5.15.0-101 \
-o /tmp/kdiff/ --max-section-funcs-analyze 8000
4. 报告里搜 net/ipv4/ net/ipv6/ net/sched/ 等子系统的 changed 函数
找到补丁前 skb_copy_bits 调用前缺少 skb->len 上限校验
→ OOB read,可能配合可触发的 sysctl 升级到 OOB write
5. 在 unpatched 旁支(例如 Azure 5.15.0-1080 backport 落后的版本)
交叉验证:同一函数 fix 是否已 backport
如果没 backport → 旁支仍可打 → 写 PoC 重放
6. 写 PoC:syzkaller harness 改造 / 直接 C PoC 触发对应 syscall
验证旁支 panic / KASAN 报 OOB
_guard_xfg_dispatch_icall_fptr 这种 CFG 强化不要当成 fix,那是 mitigation{target_ip} {username} 占位)| 工具 | 用途 | 可自动安装 |
|---|---|---|
| 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) |
powershell -NoProfile -ExecutionPolicy Bypass -File "<SKILL_ROOT>\skills\scripts\bootstrap-reverse.ps1" -Capability @('bindiff','ghidriff','ghidra','wsuspect-proxy') -StartServices
详细工具对比与命令见 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 复现"、"找补丁修了什么"、"打未更新主机" 等意图
tool-index 使用了真实工具路径?まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.
日本語の概要は準備中です。原文の説明を表示しています。
在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。
日本語の概要は準備中です。原文の説明を表示しています。
Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.
日本語の概要は準備中です。原文の説明を表示しています。
跨版本符号迁移与二进制差分。当你有旧版本的符号/逆向结果,需要快速迁移到新版本时使用。 适用场景:内核缺 PDB 用旧版符号推导、程序更新后批量迁移函数名、应用更新后快速定位新偏移。 核心方法:用 LLM 做结构化差异比对,程序化输入输出,成本极低(200 函数 ~1 元)。 触发关键词:符号迁移、bindiff、跨版本、PDB 缺失、函数偏移迁移、symbol migration、binary diff、版本对比。
日本語の概要は準備中です。原文の説明を表示しています。
Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.
日本語の概要は準備中です。原文の説明を表示しています。
统一自动化入口。覆盖浏览器自动化(Playwright)和 Windows 桌面应用自动化(OpenReverse)。 浏览器场景:打开网页、点击、填表、爬取、截图、自动化登录、渗透页面交互。 桌面场景:操作 IDA/x64dbg 等 GUI 工具、Windows UI Automation、视觉驱动交互、桌面应用网络抓包。 触发关键词:浏览器自动化、桌面自动化、打开网页、填表、爬取、截图、自动化登录、Playwright、agent-browser、headless、OpenReverse、UIA、CUA、桌面操作、Windows 自动化。
日本語の概要は準備中です。原文の説明を表示しています。