BinAbsInspector是一款针对二进制文件的静态分析工具,在该工具的帮助下,广大研究人员能够以自动化的形式对二进制文件进行逆向工程分析,并尝试扫描和识别其中潜在的安全漏洞。该项目是Keenlab长期维护的一个研究项目,并基于Ghidra实现其功能。
当前版本的BinAbsInspector支持x86、x64、armv7和aarch64架构上的二进制文件。
当前版本的BinAbsInspector已经实现了下列检测器:
CWE78(操作系统命令注入) CWE119(缓冲区溢出(常见案例)) CWE125(缓冲区溢出(带外数据读取)) CWE134(使用外部控制的格式字符串) CWE190(整型溢出) CWE367(TOCTOU) CWE415(双重释放) CWE416(释放后重用) CWE426(不受信任的搜索路径) CWE467(对指针类型使用sizeof()) CWE476(空指针解引用) CWE676(使用潜在的危险函数) CWE787(缓冲区溢出(带外数据写入))
该项目的文件及目录架构如下所示:
├── main
│ ├── java
│ │ └── com
│ │ └── bai
│ │ ├── checkers 实现检测器
│ │ ├── env
│ │ │ ├── funcs 函数模型
│ │ │ │ ├── externalfuncs 外部函数模型
│ │ │ │ └── stdfuncs cpp std模型
│ │ │ └── region 内存模型
│ │ ├── solver 分析核心和图形化模型
│ │ └── util 其他实用工具
│ └── resources
└── testGhidra:【文档】 Z3(v4.8.15):【Windows版本】【Linux版本】 扩展ZIP文件:【传送门】【安装文档】 https://github.com/KeenSecurityLab/BinAbsInspector/releases
广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/KeenSecurityLab/BinAbsInspector.git我们可以自行动手构建扩展,如果想要开发新功能的话,可以参考工具的【开发者文档】。
项目构建步骤如下:
1、安装Ghidra和Z3;
2、安装Gradle7.x;
3、下载项目代码;
4、在项目根目录下运行下列命令:
gradle buildExtension此时,生成的扩展文件将存储在下列路径:
dist/${GhidraVersion}_${date}_BinAbsInspector.zip广大研究人员可以以无头(headless)模式、GUI模式或Docker来运行BinAbsInspector。
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"上述命令的参数解释如下:
<projectPath> -- Ghidra 项目路径
<projectName> -- Ghidra项目名称
<scriptParams> -- 分析器参数支持的分析器参数
参数 | 描述 |
|---|---|
[-K <kElement>] | KSet大小,限制为 K |
[-callStringK <callStringMaxLen>] | 调用字符串最大长度,限制为 K |
[-Z3Timeout <timeout>] | Z3超时 |
[-timeout <timeout>] | 分析超时 |
[-entry <address>] | 入口地址 |
[-externalMap <file>] | 外部函数模型配置 |
[-json] | JSON格式输出 |
[-disableZ3] | 禁用Z3 |
[-all] | 启用所有检测器 |
[-debug] | 启用调试模式日志输出 |
[-check "<cweNo1>[;<cweNo2>...]"] | 启用指定的检测器 |
1、运行Ghidra,将目标二进制文件导入项目; 2、使用默认配置分析二进制文件; 3、分析完成后,打开“Window -> Script Manager”,并找到“BinAbsInspector.java”; 4、双击“BinAbsInspector.java”,在配置窗口中设置参数,并点击“OK”; 5、分析完成后,我们将能够在终端窗口中查看到导出的CWE报告;
git clone git@github.com:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $(pwd):/data/workspace bai "@@<script parameters>" -import <file>本项目的开发与发布遵循GPL-3.0开源许可证协议。
https://github.com/KeenSecurityLab/BinAbsInspector
https://keenlab.tencent.com/
https://github.com/NationalSecurityAgency/ghidra#install
https://github.com/Z3Prover/z3
https://github.com/Z3Prover/z3#building-z3-using-make-and-gccclang

精彩推荐



