Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
AutoPiff — Mecanismo de análise semântica para detecção de correções de vulnerabilidades em patches de driver do kernel Windows — 58 regras YAML, descompilação Ghidra, rastreamento de alcançabilidade e pontuação | Kitploit
Ferramentas/GitHubGitHub/splintersfury/autopiff
Análise EstáticaAnálise de VulnerabilidadesExploraçãoEngenharia ReversaAnálise de MalwareAnálise de BináriosAnálise de Firmware
GitHubsplintersfury/autopiff

AutoPiff

Mecanismo de análise semântica para detecção de correções de vulnerabilidades em patches de driver do kernel Windows — 58 regras YAML, descompilação Ghidra, rastreamento de alcançabilidade e pontuação

Ver Repositório
644há 5 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

AutoPiff

Estrutura Automatizada de Inteligência e Descoberta de Patches

Um motor de análise semântica para detecção de correções de vulnerabilidades em patches de drivers do kernel do Windows. AutoPiff usa regras YAML conservadoras para identificar alterações de código relevantes para segurança com alta precisão e explicabilidade.

Visão Geral

O AutoPiff analisa as diferenças entre versões vulneráveis e corrigidas de drivers para detectar automaticamente:

  • Correções de Use-After-Free (atribuições nulas após ExFreePool)
  • Adição de verificações de limites (validação de tamanho antes de memcpy)
  • Endurecimento de fronteira usuário/kernel (ProbeForRead/ProbeForWrite)
  • Proteções contra estouro de inteiro (auxiliares matemáticos seguros)
  • Endurecimento de estado (contagem de referência intercravada)
  • Validação de entrada IOCTL, proteções contra corrupção de pool, verificações de privilégio e mais

Principais Características

  • Alta Precisão: Regras conservadoras minimizam falsos positivos
  • Explicável: Cada descoberta inclui fundamentação e evidências
  • Consciente de Sinks: Regras consideram proximidade com APIs perigosas
  • Modelo de Pontuação: Classifica descobertas por explorabilidade e alcançabilidade
  • Integração Karton: Executa como um serviço distribuído em pipelines de análise de malware

Por que AutoPiff?

Agulha no Palheiro

root@kitploit:~
Fornecedor lança 500 atualizações de driver/ano
├── 490 são alterações de funcionalidade/desempenho/estética
├── 8 são correções de bugs menores
└── 2 são correções de segurança silenciosas (sem CVE atribuído)

Sem automação: Revisar manualmente 500 para encontrar 2
Com AutoPiff:      Revisar 10 de alta pontuação para encontrar 2

Patches de segurança são frequentemente lançados sem atribuição de CVE. Reverter manualmente todas as atualizações de driver para encontrar as relevantes para segurança não é viável. O AutoPiff resolve isso exibindo automaticamente as alterações que importam.

O Que o AutoPiff Automatiza

Total: 4-12 horas por par de drivers reduzido para 2-5 minutos

O Que Ainda Requer Expertise Humana

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│  AUTOMATIZADO pelo AutoPiff                                     │
│  ├── Encontrar a agulha: "Esta função mudou perto de ExFreePool"│
│  ├── Classificar: "Parece uma correção de use-after-free"       │
│  └── Classificar: "Pontuação 5.5 - vale a pena investigar"     │
├─────────────────────────────────────────────────────────────────┤
│  AINDA MANUAL (Sua expertise)                                   │
│  ├── Confirmar explorabilidade: "Posso realmente acionar isso?" │
│  ├── Análise de causa raiz: "Por que isso era vulnerável?"      │
│  ├── Desenvolvimento de exploit: "Como alcanço este sink?"      │
│  └── Avaliação de impacto: "Qual é o risco no mundo real?"      │
└─────────────────────────────────────────────────────────────────┘

O AutoPiff não substitui a pesquisa de exploração. Torna-a viável em escala ao automatizar a fase de reconhecimento.

Casos de Uso

1. Detecção de Patch Silencioso

  • Monitorar drivers em busca de correções de segurança lançadas sem CVEs
  • Receber alertas quando deltas semânticos de alta pontuação aparecem
  • Capturar vulnerabilidades antes que sejam divulgadas publicamente

2. Pesquisa de Vulnerabilidade de 1 Dia

  • Quando um CVE é anunciado, identificar rapidamente o patch exato
  • Correlacionar padrões de patch com classes de vulnerabilidade
  • Acelerar cronogramas de desenvolvimento de exploits

3. Auditoria de Segurança do Fornecedor

  • Analisar todas as versões de uma família de drivers ao longo do tempo
  • Gerar linhas do tempo mostrando quando as correções apareceram
  • Identificar padrões de como os fornecedores lidam com vulnerabilidades

4. Construção de Corpus CVE Histórico

  • Processar pares de drivers CVE conhecidos para construir dados de treinamento
  • Validar e melhorar regras de detecção
  • Criar uma base de conhecimento de assinaturas de patch

Arquitetura

O AutoPiff executa como um pipeline Karton com 8 estágios sequenciais mais uma ramificação paralela de triagem DriverAtlas. Cada estágio é um microsserviço independente que se comunica via Redis/RabbitMQ.

root@kitploit:~
graph LR
    sources["WinBIndex<br/>VirusTotal"]:::src --> s0["Estágio 0<br/>Monitor"]
    s0 --> s14["Estágios 1-4<br/>Differ de Patch"]
    s0 --> triage["DriverAtlas<br/>Triagem"]:::triage
    s14 --> s5["Estágio 5<br/>Alcançabilidade"]
    s5 --> s6["Estágio 6<br/>Classificação"]
    s6 --> s7["Estágio 7<br/>Relatório"]
    s6 --> s8["Estágio 8<br/>Alertador"]
    triage --> alerts["Tags MWDB<br/>+ Alertas"]:::triage

    classDef src fill:#1a1a2e,stroke:#e94560,color:#eee
    classDef triage fill:#1a1a2e,stroke:#e9a345,color:#eee
    classDef default fill:#16213e,stroke:#0f3460,color:#eee

Regras Semânticas

O AutoPiff inclui 58 regras em 22 categorias. Veja Docs/semantic_rules.md para a especificação completa e Docs/SEMANTIC_RULES_REFERENCE.md para a referência técnica.

Grupos de Sink

O mecanismo de regras rastreia 50+ símbolos de API perigosos em 8 grupos de sink:

  • memory_copy: RtlCopyMemory, memcpy, memmove
  • pool_alloc: ExAllocatePool, ExAllocatePoolWithTag
  • pool_free: ExFreePool, ExFreePoolWithTag
  • user_probe: ProbeForRead, ProbeForWrite
  • io_sanitization: RtlULongAdd, RtlSizeTMult
  • exceptions: __try, __except
  • string_copy: strcpy, wcsncpy
  • refcounting: InterlockedIncrement/Decrement

Modelo de Pontuação

As descobertas são pontuadas usando um modelo configurável (rules/scoring.yaml):

root@kitploit:~
pontuacao_final = pontuacao_semantica + bonus_alcançabilidade + bonus_sink - penalidades

Componentes da Pontuação:

  • Pontuação Semântica: Peso da regra x confiança x multiplicador de categoria
  • Bônus de Alcançabilidade: IOCTL (+4.0), IRP (+2.5), PnP (+2.0), Interno (+0.5)
  • Bônus de Sink: memory_copy (+1.5), user_probe (+1.5), pool_alloc (+1.2)
  • Penalidades: Baixa qualidade de correspondência, alto risco de ruído

Limites:

  • Descobertas com confiança < 0.45 são descartadas
  • Confiança de correspondência < 0.40 limita a pontuação a 3.0

Instalação

Como Serviço Karton (Recomendado)

root@kitploit:~
git clone https://github.com/splintersfury/AutoPiff.git
cd AutoPiff
docker compose up -d

Para a stack completa de produção com MWDB, dashboards e monitoramento, veja driver_analyzer.

Biblioteca Independente

root@kitploit:~
pip install pyyaml

from services.karton_patch_differ.rule_engine import SemanticRuleEngine

engine = SemanticRuleEngine('rules/semantic_rules.yaml', 'rules/sinks.yaml')
hits = engine.evaluate(func_name, old_code, new_code, diff_lines)

Configuração

Variáveis de Ambiente

Personalização de Regras

Edite rules/semantic_rules.yaml para adicionar ou modificar regras:

root@kitploit:~
rules:
  - rule_id: minha_regra_personalizada
    category: bounds_check
    confidence: 0.85
    required_signals:
      - sink_group: memory_copy
      - change_type: guard_added
      - guard_kind: length_check
    plain_english_summary: Validação de tamanho adicionada antes da cópia de memória.

Formato de Saída

O AutoPiff produz relatórios JSON anexados a amostras MWDB:

root@kitploit:~
{
  "pairing": {
    "driver_new": {"sha256": "...", "version": "2.0.9.0"},
    "driver_old": {"sha256": "...", "version": "2.0.8.0"},
    "decision": "accept",
    "confidence": 0.95
  },
  "semantic_deltas": {
    "deltas": [
      {
        "function": "HandleIoctl",
        "rule_id": "null_after_free_added",
        "category": "lifetime_fix",
        "confidence": 0.88,
        "sinks": ["pool_free"],
        "final_score": 5.5,
        "why_matters": "O ponteiro agora é definido como NULL após liberar memória."
      }
    ],
    "summary": {
      "total_deltas": 1,
      "top_score": 5.5,
      "match_rate": 100.0
    }
  }
}

Documentação

Estrutura do Projeto

root@kitploit:~
AutoPiff/
├── Docs/                          # Documentos de design e especificações
├── ghidra/scripts/                # Scripts Ghidra headless
│   └── autopiff_reachability.py   # BFS de alcançabilidade + exportação de decompilação
├── rules/
│   ├── semantic_rules.yaml        # 58 regras de detecção
│   ├── sinks.yaml                 # 50+ símbolos de API perigosos
│   └── scoring.yaml               # Configuração do modelo de pontuação
├── schemas/                       # Schemas JSON para cada estágio
├── services/
│   ├── karton-patch-differ/       # Estágios 1-4: diff + análise semântica
│   ├── karton-reachability/       # Estágio 5: grafo de chamadas + decompilação
│   ├── karton-ranking/            # Estágio 6: pontuação
│   ├── karton-report/             # Estágio 7: geração de relatório
│   ├── karton-driver-triage/      # Triagem de superfície de ataque DriverAtlas
│   ├── autopiff-alerter/          # Estágio 8: alertas Telegram
│   ├── driver-monitor/            # Estágio 0: consulta de versões
│   └── dashboard/                 # Interface web
├── tests/unit/                    # 137 testes unitários
├── docker-compose.yml
└── README.md

Integração com driver_analyzer

O AutoPiff foi projetado para funcionar com driver_analyzer, que fornece a infraestrutura completa de produção (MWDB, Karton, MinIO, dashboards). O arquivo compose do driver_analyzer constrói os serviços AutoPiff diretamente:

root@kitploit:~
# Em driver_analyzer/docker-compose.yml
karton-driver-patch-differ:
  build:
    context: ../AutoPiff
    dockerfile: services/karton-patch-differ/Dockerfile
  volumes:
    - ../AutoPiff/rules:/app/rules:ro

Veja o README do driver_analyzer para instruções de configuração.

Licença

Licença MIT - Veja LICENSE para detalhes.

Agradecimentos

  • Karton - Estrutura de processamento distribuído de malware
  • MWDB Core - Repositório de malware
  • Ghidra - Estrutura de engenharia reversa de software da NSA
Baixar ferramenta
FaseEsforço ManualCom AutoPiffTempo Economizado
Emparelhamento de versões5-15 min/driverAutomático~100%
Decompilação2-10 min/binárioEm lote, paralelo~95%
Correspondência de funções30-60 min/parInstantâneo~100%
Identificação de alterações de segurança2-8 horas/parSegundos~99%
Triagem e classificação inicial1-2 horasInstantâneo~100%
Geração de relatório30-60 minInstantâneo~100%
EstágioServiçoO que faz
0driver-monitorConsulta WinBIndex e VirusTotal por novas versões de driver, envia para MWDB
1-4karton-patch-differEmparelhamento de versões, decompilação Ghidra, correspondência de funções, avaliação de regras semânticas
5karton-reachabilityBFS no grafo de chamadas Ghidra de pontos de entrada IOCTL/IRP para funções alteradas, exportação completa de decompilação
6karton-rankingPontua descobertas usando alcançabilidade, severidade semântica e superfície de ataque
7karton-reportGera relatórios markdown estruturados, envia para MWDB
8autopiff-alerterEnvia alertas Telegram para descobertas com pontuação >= 8.0
—autopiff-driver-triagePontuação de superfície de ataque DriverAtlas (paralelo a 1-4), marca amostras MWDB, alertas Telegram
CategoriaExemplo de Detecção
bounds_checkVerificação de tamanho adicionada antes de memcpy
lifetime_fixAtribuição nula após ExFreePool
user_boundary_checkAdicionado ProbeForRead/ProbeForWrite
int_overflowUso de auxiliar matemático seguro
state_hardeningOperações de contagem de referência intercravada
ioctl_input_validationNovas verificações de tamanho/tipo em manipuladores de dispatch
pool_type_hardeningMigração para NonPagedPoolNx
privilege_checkAdicionado SeSinglePrivilegeCheck
VariávelDescriçãoPadrão
MWDB_API_URLEndpoint da API MWDB Corehttp://mwdb-core:8080/api/
MWDB_API_KEYChave da API MWDB para uploads(obrigatório)
KARTON_REDIS_HOSTHost Redis para Kartonkarton-redis
AUTOPIFF_GHIDRA_TIMEOUTTempo limite de decompilação Ghidra (seg)900
VT_API_KEYChave da API VirusTotal para monitoramento de drivers(opcional)
TELEGRAM_BOT_TOKENToken do bot Telegram para alertas(opcional)
TELEGRAM_CHAT_IDChat Telegram para alertas(opcional)
AUTOPIFF_SCORE_THRESHOLDPontuação mínima para alertas Telegram8.0
DRIVERATLAS_SCORE_THRESHOLDPontuação mínima de superfície de ataque para alertas de triagem8.0
DocumentoDescrição
Docs/semantic_rules.mdEspecificação de regras semânticas: como as regras são estruturadas e o que cada categoria detecta
Docs/SEMANTIC_RULES_REFERENCE.mdReferência técnica para o mecanismo de regras, lógica de avaliação e pontuação
Docs/reachability.mdEspecificação de etiquetagem de alcançabilidade: BFS no grafo de chamadas a partir de pontos de entrada de dispatch
Docs/reporting.mdEspecificação e formato de saída do relatório
Docs/decisions.mdDecisões de design e registro de fundamentação
rules/semantic_rules.yamlTodas as 58 regras de detecção (YAML)
rules/sinks.yaml50+ símbolos de API perigosos agrupados por categoria
rules/scoring.yamlConfiguração do modelo de pontuação
schemas/Schemas JSON para saída de cada estágio do pipeline