工具

capa 可执行文件功能识别工具

Mandiant FLARE 团队的工具,将 YAML 规则集与从 PE、ELF、.NET 文件或 32/64 位 shellcode 中提取的 API 调用、导入、字符串和常量等特征进行匹配,报告可执行文件具备哪些功能。匹配结果按功能命名空间归类并标注 ATT&CK 和 MBC,详细输出会列出每项匹配所依据的函数或基本块地址及特征,为分析人员指出值得深入研究的代码。它还能读取 CAPE、DRAKVUF 和 VMRay 沙箱报告以利用动态特征,可选用 vivisect、IDA Pro、Ghidra 或 Binary Ninja 进行分析,并提供 IDA 和 Ghidra 的 explorer 插件以及查看 JSON 结果的浏览器界面。

使用条件与局限

  • 审阅时的版本为 v10.0.0,发布于 2026-10-16,提供用 PyInstaller 打包、无需安装即可运行的独立构建,涵盖 Linux(x86_64、arm64 及 Python 3.13 版本)、macOS(x86_64 和 arm64)和 Windows;所审阅的 master 分支提交在该标签之后仅同步了规则子模块。安装指南指出 Linux 构建需要 GLIBC 2.26+,macOS 首次运行时须在 Gatekeeper 中批准该程序。flare-capa PyPI 软件包(10.0.0,需 Python 3.10+)不含默认规则和库识别签名,需通过 -r 和 -s 参数指定。
  • 输入由使用者提供:PE、ELF 或 .NET 模块、原始 shellcode、CAPE、DRAKVUF 或 VMRay 报告、BinExport2 文件或已保存的 capa 特征文件。IDA Pro explorer 插件需要 IDA 7.4+ 和 Python 3.10+(已测试至 IDA 9.0);Ghidra 后端和 explorer 脚本需要通过 PyGhidra 启动的 Ghidra 12.0+;Binary Ninja 后端需使用另行安装的 Binary Ninja。
  • 局限性文档指出,加壳或混淆的程序、安装程序以及 AutoIt 等打包程序会导致结果有误或不完整,分散在包装函数或子函数中的功能也无法匹配;当规则检测到加壳或安装程序时,capa 会发出警告。匹配结果是基于规则的功能迹象,并非已确认的行为。
  • 采用 Apache-2.0 许可,独立的 capa-rules 仓库同样如此。v10.0.0 修复了通过特制 vivisect .viv 工作区文件执行代码的问题,该问题影响 v9.4.0 及更早版本;现在仅在设置 CAPA_LOAD_VIV_WORKSPACE=1 时才会加载已有工作区。递归克隆源码还会拉取测试文件子模块,安装指南警告其中包含大量恶意软件样本。本次未分析任何样本。

关于此条目

类型
工具
类别
原生分析工具
关联
基础工具
目标
二进制

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. README.md GitHub · mandiant/capa · 修订 7a235c4
  2. README.md#L153-L160 GitHub · mandiant/capa · 修订 7a235c4
  3. doc/installation.md GitHub · mandiant/capa · 修订 7a235c4
  4. doc/usage.md GitHub · mandiant/capa · 修订 7a235c4
  5. doc/limitations.md GitHub · mandiant/capa · 修订 7a235c4
  6. capa/loader.py#L65-L75 GitHub · mandiant/capa · 修订 7a235c4
  7. capa/ida/plugin/README.md#L97-L110 GitHub · mandiant/capa · 修订 7a235c4
  8. capa/ghidra/README.md GitHub · mandiant/capa · 修订 7a235c4
  9. pyproject.toml GitHub · mandiant/capa · 修订 7a235c4
  10. LICENSE.txt GitHub · mandiant/capa · 修订 7a235c4
  11. https://github.com/mandiant/capa/releases/tag/v10.0.0
  12. https://pypi.org/project/flare-capa/10.0.0/