Pular para o conteúdo
Skillpedia
Código em geral42 mil · #4777

patch-diff-exploit

Ajuda seu agente a encontrar e explorar falhas de segurança em softwares já corrigidos. É útil para criar ataques contra sistemas desatualizados.

O que ela faz

Esta ferramenta ajuda a encontrar falhas de segurança (bugs) em programas de computador. Ela compara uma versão corrigida de um programa com uma versão antiga para descobrir exatamente o que foi mudado e como explorar o bug antes que a correção seja aplicada.

Quando usar

  • ✓Quando você sabe que um programa tem um bug (CVE), mas não existe um jeito fácil de demonstrar ou explorar ele.
  • ✓Para testar se sistemas que não foram atualizados recentemente são vulneráveis a falhas recém-descobertas.
  • ✓Para analisar correções de segurança lançadas em 'Patch Tuesday' e encontrar falhas exploráveis.

Exemplo do que pedir para a IA

“Encontre uma falha de segurança no programa X comparando a versão 1.0 com a versão 1.1, que corrigiu um problema.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/patch-diff-exploit/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/patch-diff-exploit/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela funciona comparando dois arquivos do programa: um com o bug e outro já corrigido. Ferramentas especiais analisam as diferenças para identificar o código que foi alterado e, com isso, descobrir como o bug funciona e como explorá-lo.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

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

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/zhaoxuya520/reverse-skill/main/skills/patch-diff-exploit/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

AÇÃO NECESSÁRIA (Execute imediatamente após a leitura)

  1. NOW: Leia ../field-journal/precedent-reverse.md — Confirme se a operação desta skill é uma operação regular autorizada
  2. NOW: Confirme se a tarefa atual se enquadra no escopo desta skill
  3. NEXT: Leia ../tool-index.md, verifique a disponibilidade da ferramenta e o caminho real
  4. NEXT: Chame o bootstrap quando a ferramenta estiver faltando, não adivinhe o caminho
  5. ACT: Entre na primeira etapa do "Fluxo de Trabalho" e execute, não pare no estado de confirmação

Diferença de Patch N-day para Exploração (Patch Diff Exploit)

Escopo

Use esta skill quando a tarefa pertencer aos seguintes cenários:

  1. CVE conhecido, mas sem PoC público — O anúncio do fornecedor diz "corrigido escrita fora dos limites no componente XX", mas sem PoC, é necessário inferir a partir do patch.
  2. SRC / Red Team atacando N-day — O ativo alvo não foi atualizado a tempo, é necessário transformar o patch recém-lançado em um exploit 1-day utilizável.
  3. Acompanhamento do Patch Tuesday — A Microsoft lança patches na segunda terça-feira de cada mês, é necessário identificar rapidamente vulnerabilidades de alto valor (Kernel / Win32k / AFD / CLFS).
  4. Análise de Patch LTS do Linux — A correção principal foi mesclada, mas o backport em ramos secundários ou em algumas distribuições está incompleto, procure por superfícies não corrigidas.
  5. Restauração de patches de segurança de driver / serviço — Análise de patches de software de código fechado como drivers de placa de vídeo, motores de antivírus, componentes de virtualização, etc.

Divisão de trabalho com outras skills

Cenário Qual usar
Possui símbolos de versão antiga, migrando para a nova versão para auxiliar na análise binary-diff/
Encontrar vulnerabilidades em patches, escrever PoC para atacar versões anteriores ao patch Esta skill
Escrever uma cadeia de exploração completa (heap spray, ROP, escalonamento de privilégios) pwn-chain/
Transformar 1-day em arma e implantar na rede alvo pentest-tools/network-attack-defense/
Fazer engenharia reversa de um binário do zero ida-reverse/ / radare2/

A chave da diferença: O objetivo de binary-diff é tornar a nova versão analisável (trazer símbolos antigos), enquanto o objetivo desta skill é encontrar o que o patch corrigiu e atacar a versão anterior ao patch. O primeiro serve para análise do lado da defesa / pesquisa, o segundo serve para a criação de armas do lado do ataque.

Princípio Central

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 不崩 → 漏洞确认

Padrão de correção de patch → Retrocesso do tipo de vulnerabilidade:

Conteúdo adicionado Classe de bug provável
if (a + b < a) / __builtin_add_overflow Estouro de inteiro
KeAcquireSpinLock / mutex_lock Condição de corrida (TOCTOU / double-free)
if (idx >= MAX) / if (len > buf_size) Leitura fora dos limites / Escrita fora dos limites
RtlZeroMemory / memset(struct, 0, ...) Vazamento de informação de memória não inicializada
InterlockedDecrement + verificação de refcount UAF / Erro de contagem de referência
ProbeForRead / ProbeForWrite Ponteiro de espaço do usuário não validado
SeAccessCheck / verificação de capability Falta de verificação de permissão
Exclusão / Restrição de código IOCTL Convergência da superfície de exposição (ver como atacar interfaces antigas)

Fluxo de Trabalho

Processo completo de 5 etapas

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 复现成功

Ordem de chamada de ferramentas

下补丁 → 解包 → 加载到 IDA/Ghidra → BinDiff/ghidriff → 看 unmatched/low-match 函数
       → LLM 反推 bug class → 写 PoC → 在 unpatched 跑 → 崩 → 收工

Exemplo de Cenário Típico

Cenário 1: Windows Patch Tuesday — Reprodução de CVE de Kernel

Contexto: Patch Tuesday de novembro de 2025, MSRC anuncia CVE-2025-62215
      Condição de corrida no Kernel do Windows leva a double free, CVSS 7.0, escalonamento de privilégios local
      A Microsoft forneceu apenas o patch, sem detalhes, sem PoC público

Objetivo: Reproduzir PoC, verificar se o Windows 11 22H2 / 23H2 sem patch pode ser escalonado

Etapas:
1. Pesquisar "2025-11" + número KB no Microsoft Update Catalog, baixar duas versões:
   - 22H2 build 22621.xxxx (sem patch)
   - 22H2 build 22621.yyyy (após patch)
   Comando:
     expand.exe Windows-KB5052000-x64.msu -F:* C:\out\patched\
     expand.exe C:\out\patched\Windows-KB5052000-x64.cab -F:* C:\out\patched\
   Extrair ntoskrnl.exe / win32k.sys / win32kfull.sys / afd.sys

2. Alimentar PDBs (servidor de símbolos da Microsoft) para ambas as versões:
     symchk /v /r ntoskrnl.exe /s SRV*C:\sym*https://msdl.microsoft.com/download/symbols

3. Executar BinDiff:
     bindiff old.BinExport new.BinExport
   Ou ghidriff:
     ghidriff ntoskrnl_old.exe ntoskrnl_new.exe -o diff_out/

4. Analisar o relatório, filtrar funções com similaridade de 0.6-0.95.
   Suponha que a localização aponte para uma nova seção em funções do tipo NtXxxIoctl:
     KeAcquireSpinLockRaiseToDpc(&obj->Lock);
     if (obj->RefCount == 0) { ... goto cleanup; }
   → Nova trava + verificação de contagem de referência → race + double free, consistente com a descrição do anúncio

5. Escrever PoC: Múltiplas threads em espaço do usuário chamam simultaneamente NtClose + acionam IOCTL do mesmo objeto,
   criando uma janela de concorrência entre o close liberando e o IOCTL ainda em uso
   Falha no caminho de liberação subsequente do ObfDereferenceObject em ntoskrnl

6. Verificação:

…
Perguntas frequentes

O que é um 'N-day'?

É uma falha de segurança que já foi corrigida pelo fabricante, mas que ainda pode ser explorada em sistemas que não aplicaram a atualização.

O que é um 'PoC'?

PoC significa 'Proof of Concept' (Prova de Conceito). É um pequeno código que demonstra como um bug de segurança pode ser explorado.

Essa ferramenta cria vírus?

Não diretamente. Ela ajuda a identificar e entender falhas de segurança. O uso para criar ataques maliciosos é ilegal e antiético.

Detalhes

Descrição original do autor

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 武器化。

repo: zhaoxuya520/reverse-skill

Popularidade

Estrelas no GitHub
42 mil
Posição no ranking
#4777
Licença
MIT
Atualizada em
22/09/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas