Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
AutoPiff — 用于检测Windows内核驱动补丁中漏洞修复的语义分析引擎 — 58条YAML规则、Ghidra反编译、可达性追踪与评分 | Kitploit
工具/GitHubGitHub/splintersfury/autopiff
静态分析漏洞分析漏洞利用逆向工程恶意软件分析二进制分析固件分析
GitHubsplintersfury/autopiff

AutoPiff

用于检测Windows内核驱动补丁中漏洞修复的语义分析引擎 — 58条YAML规则、Ghidra反编译、可达性追踪与评分

查看仓库
6445个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

AutoPiff

自动化补丁情报与发现框架

一个用于检测 Windows 内核驱动程序补丁中漏洞修复的语义分析引擎。AutoPiff 使用保守的 YAML 规则,以高精度和可解释性识别安全相关的代码变更。

概述

AutoPiff 分析易受攻击版本与已修补版本之间的差异,自动检测:

  • 释放后使用修复 (ExFreePool 后的空值赋值)
  • 边界检查添加 (memcpy 前的长度校验)
  • 用户/内核边界加固 (ProbeForRead/ProbeForWrite)
  • 整数溢出保护 (安全数学辅助函数)
  • 状态加固 (互锁引用计数)
  • IOCTL 输入校验、池损坏防护、权限检查等

主要特性

  • 高精度:保守规则最大限度减少误报
  • 可解释:每个发现都包含理由和证据
  • 汇点感知:规则考虑与危险 API 的接近程度
  • 评分模型:根据可利用性和可达性对发现进行排名
  • Karton 集成:作为分布式服务在恶意软件分析管道中运行

为什么选择 AutoPiff?

大海捞针

root@kitploit:~
Vendor releases 500 driver updates/year
├── 490 are feature/performance/cosmetic changes
├── 8 are minor bug fixes
└── 2 are silent security fixes (no CVE assigned)

Without automation: Manually review 500 to find 2
With AutoPiff:      Review 10 high-scorers to find 2

安全补丁通常在没有 CVE 分配的情况下发布。手动逆向分析每一个驱动更新来找出与安全相关的部分是不可行的。AutoPiff 通过自动呈现重要的变更来解决这一问题。

AutoPiff 自动化了什么

总计:每个驱动对 4-12 小时缩短至 2-5 分钟

哪些仍需人类专家

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│  AutoPiff 自动化的部分                                                   │
│  ├── 找到针:"此函数在 ExFreePool 附近发生变更"       │
│  ├── 分类:"看起来像释放后使用修复"                    │
│  └── 排序:"得分 5.5 - 值得调查"                       │
├─────────────────────────────────────────────────────────────────┤
│ 仍需手动(您的专业判断)                                  │
│  ├── 确认可利用性:"我能否实际触发它?"                │
│  ├── 根因分析:"为什么存在漏洞?"                       │
│  ├── 漏洞利用开发:"如何到达这个汇点?"                │
│  └── 影响评估:"现实风险如何?"                         │
└─────────────────────────────────────────────────────────────────┘

AutoPiff 并非要取代漏洞利用研究,而是通过自动化侦察阶段,使其在规模上可行。

使用场景

1. 静默补丁检测

  • 监控驱动程序中未分配 CVE 的安全修复
  • 当高得分的语义差异出现时获取告警
  • 在漏洞被公开披露之前捕获它们

2. 一日漏洞研究

  • 当 CVE 公告发布时,快速识别准确的补丁
  • 将补丁模式与漏洞类型关联
  • 加速漏洞利用开发时间线

3. 厂商安全审计

  • 分析某一类驱动程序随时间变化的所有版本
  • 生成显示修复出现时间的时间线
  • 识别厂商处理漏洞的模式

4. 历史 CVE 语料库构建

  • 处理已知 CVE 驱动对以构建训练数据
  • 验证并改进检测规则
  • 创建补丁特征的知识库

架构

AutoPiff 作为 Karton 管道运行,包含 8 个顺序阶段和一个并行的 DriverAtlas 分流分支。每个阶段都是通过 Redis/RabbitMQ 通信的独立微服务。

root@kitploit:~
graph LR
    sources["WinBIndex<br/>VirusTotal"]:::src --> s0["Stage 0<br/>Monitor"]
    s0 --> s14["Stages 1-4<br/>Patch Differ"]
    s0 --> triage["DriverAtlas<br/>Triage"]:::triage
    s14 --> s5["Stage 5<br/>Reachability"]
    s5 --> s6["Stage 6<br/>Ranking"]
    s6 --> s7["Stage 7<br/>Report"]
    s6 --> s8["Stage 8<br/>Alerter"]
    triage --> alerts["MWDB Tags<br/>+ Alerts"]:::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

语义规则

AutoPiff 包含 22 个类别共 58 条规则。完整规范请参见 Docs/semantic_rules.md,技术参考请参见 Docs/SEMANTIC_RULES_REFERENCE.md。

汇点组

规则引擎跟踪 8 个汇点组中的 50 多个危险 API 符号:

  • 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

评分模型

发现结果使用可配置模型评分(rules/scoring.yaml):

root@kitploit:~
final_score = semantic_score + reachability_bonus + sink_bonus - penalties

评分组成部分:

  • 语义得分:规则权重 × 置信度 × 类别乘数
  • 可达性加成:IOCTL (+4.0), IRP (+2.5), PnP (+2.0), 内部 (+0.5)
  • 汇点加成:memory_copy (+1.5), user_probe (+1.5), pool_alloc (+1.2)
  • 惩罚项:匹配质量低、噪声风险高

门控:

  • 置信度 < 0.45 的发现结果被丢弃
  • 匹配置信度 < 0.40 时分数上限为 3.0

安装

作为 Karton 服务(推荐)

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

包含 MWDB、仪表盘和监控的完整生产环境栈,请参见 driver_analyzer。

作为独立库

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)

配置

环境变量

规则定制

编辑 rules/semantic_rules.yaml 以添加或修改规则:

root@kitploit:~
rules:
  - rule_id: my_custom_rule
    category: bounds_check
    confidence: 0.85
    required_signals:
      - sink_group: memory_copy
      - change_type: guard_added
      - guard_kind: length_check
    plain_english_summary: Added length validation before memory copy.

输出格式

AutoPiff 生成附加到 MWDB 样本的 JSON 报告:

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": "Pointer is now set to NULL after freeing memory."
      }
    ],
    "summary": {
      "total_deltas": 1,
      "top_score": 5.5,
      "match_rate": 100.0
    }
  }
}

文档

项目结构

root@kitploit:~
AutoPiff/
├── Docs/                          # Design docs and specifications
├── ghidra/scripts/                # Ghidra headless scripts
│   └── autopiff_reachability.py   # Reachability BFS + decompilation export
├── rules/
│   ├── semantic_rules.yaml        # 58 detection rules
│   ├── sinks.yaml                 # 50+ dangerous API symbols
│   └── scoring.yaml               # Scoring model configuration
├── schemas/                       # JSON schemas for each stage
├── services/
│   ├── karton-patch-differ/       # Stages 1-4: diffing + semantic analysis
│   ├── karton-reachability/       # Stage 5: call-graph + decompilation
│   ├── karton-ranking/            # Stage 6: scoring
│   ├── karton-report/             # Stage 7: report generation
│   ├── karton-driver-triage/      # DriverAtlas attack surface triage
│   ├── autopiff-alerter/          # Stage 8: Telegram alerts
│   ├── driver-monitor/            # Stage 0: version polling
│   └── dashboard/                 # Web UI
├── tests/unit/                    # 137 unit tests
├── docker-compose.yml
└── README.md

与 driver_analyzer 的集成

AutoPiff 旨在与 driver_analyzer 配合使用,后者提供了完整的生产基础设施(MWDB、Karton、MinIO、仪表盘)。driver_analyzer 的 docker-compose 文件直接构建 AutoPiff 服务:

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

安装说明请参见 driver_analyzer README。

许可证

MIT 许可证 - 详情请参见 LICENSE。

致谢

  • Karton - 分布式恶意软件处理框架
  • MWDB Core - 恶意软件仓库
  • Ghidra - 美国国家安全局的软件逆向工程框架
下载工具
阶段手动工作量使用 AutoPiff节省时间
版本配对5-15分钟/驱动自动~100%
反编译2-10分钟/二进制批量并行~95%
函数匹配30-60分钟/对即时~100%
识别安全变更2-8小时/对数秒~99%
初步分类与排序1-2小时即时~100%
报告生成30-60分钟即时~100%
阶段服务功能
0driver-monitor轮询 WinBIndex 和 VirusTotal 以获取新驱动版本,上传至 MWDB
1-4karton-patch-differ版本配对,Ghidra 反编译,函数匹配,语义规则评估
5karton-reachabilityGhidra 调用图 BFS,从 IOCTL/IRP 入口点到变更函数,完整反编译导出
6karton-ranking根据可达性、语义严重性和攻击面评分
7karton-report生成结构化 Markdown 报告,上传至 MWDB
8autopiff-alerter对得分 >= 8.0 的发现发送 Telegram 告警
—autopiff-driver-triageDriverAtlas 攻击面评分(与 1-4 并行),标记 MWDB 样本,Telegram 告警
类别检测示例
bounds_check在 memcpy 前添加长度检查
lifetime_fixExFreePool 后空值赋值
user_boundary_check添加 ProbeForRead/ProbeForWrite
int_overflow使用安全数学辅助函数
state_hardening互锁引用计数操作
ioctl_input_validation分发处理程序中的新大小/类型检查
pool_type_hardening迁移至 NonPagedPoolNx
privilege_check添加 SeSinglePrivilegeCheck
变量描述默认值
MWDB_API_URLMWDB Core API 端点http://mwdb-core:8080/api/
MWDB_API_KEY用于上传的 MWDB API 密钥(必填)
KARTON_REDIS_HOSTKarton 的 Redis 主机karton-redis
AUTOPIFF_GHIDRA_TIMEOUTGhidra 反编译超时(秒)900
VT_API_KEY用于驱动监控的 VirusTotal API 密钥(可选)
TELEGRAM_BOT_TOKEN用于告警的 Telegram Bot 令牌(可选)
TELEGRAM_CHAT_ID用于告警的 Telegram 聊天 ID(可选)
AUTOPIFF_SCORE_THRESHOLDTelegram 告警的最低分数8.0
DRIVERATLAS_SCORE_THRESHOLD分流告警的最低攻击面分数8.0
文档描述
Docs/semantic_rules.md语义规则规范:规则的构成以及每个类别检测的内容
Docs/SEMANTIC_RULES_REFERENCE.md规则引擎、评估逻辑和评分的技术参考
Docs/reachability.md可达性标记规范:从分发入口点开始的调用图 BFS
Docs/reporting.md报告输出规范和格式
Docs/decisions.md设计决策与理由日志
rules/semantic_rules.yaml全部 58 条检测规则 (YAML)
rules/sinks.yaml50 多个危险 API 符号,按类别分组
rules/scoring.yaml评分模型配置
schemas/每个管道阶段输出的 JSON schema