工具
Karta 开源库匹配插件
Check Point Research 开发的源码辅助 IDA Python 插件,用于在大型二进制和固件中查找并匹配编译进去的开源库。识别脚本会列出二进制中存在哪些受支持的库(如 OpenSSL、zlib、libpng 和 net-snmp),并识别其版本;匹配脚本再借助由该库版本生成的 JSON 配置,按原始函数顺序定位各个编译单元,匹配其中的函数及其调用的外部 libc 函数,并可把选定的匹配结果作为名称导入 IDA。附带的 Thumbs Up 脚本可预先改进 IDA 的函数分析,包括区分固件中的 ARM 与 Thumb 代码。
使用条件与局限
- 审阅时最新版本为 v2.1.0,发布于 2021-05-18;所审阅的 master 分支提交日期为 2022-03-15,此后只增加了 README 和 CI 工作流的改动。README 称原作者离开 Check Point Research 后已无法继续维护该仓库,原因是运行全部回归测试的要求繁多,且涉及多个 IDA Pro 版本。
- 需要 IDA Pro 7.4 或更高版本及 Python 3;v1.2.0 是支持 Python 2 和旧版 IDA 的最后一个版本。setup.py 会安装 elementals、sark、click 和 scikit-learn 等依赖,而 requirements.txt 仍写着已弃用的 sklearn 包名。这些脚本通过 IDA 的脚本文件菜单加载,无需安装为插件。目前只实现了 IDA 这一种反汇编器后端,文档虽介绍了接入其他反汇编器的接口;未检查与当前 IDA 版本的兼容性。
- 应在 IDA 已充分分析的二进制上运行这些脚本;Windows 编译的二进制需勾选 Windows 选项。匹配需要对应库确切版本的配置:仓库自带 OpenSSL 1.0.1j、libpng 1.2.29、libtiff 4.0.8 以及 zlib 1.2.3 和 1.2.11 的配置,其他版本需按照 compilations/ 中的说明自行编译该库,再用 karta_analyze_src.py(同样需要调用 IDA)从静态库和目标文件生成配置。上游建议在运行 Thumbs Up 前备份二进制,因为它会大幅修改分析结果。
- 采用 MIT 许可。识别脚本包含 15 个库模块,其中闭源的 Treck 库只能检测是否存在。匹配结果是启发式的候选,不同匹配规则的准确度不同并以不同颜色标示,需要分析人员复核。本次未分析任何二进制。
关于此条目
- 类型
- 工具
- 类别
- 二进制对比工具
- 关联
- 基础工具
- 目标
- 二进制 · 固件
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- docs/Installation.md GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- docs/Open%20Source%20Fingerprinting.md GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- docs/Matching%20supported%20libraries.md GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- docs/Compiling%20a%20configuration.md GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- docs/Thumbs%20Up.md GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- docs/disassembler.md GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- setup.py GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- requirements.txt GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- LICENSE GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- src/libs GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- configs GitHub · CheckPointSW/Karta · 修订 7a3d0d3
- https://github.com/CheckPointSW/Karta/releases/tag/v2.1.0