BinAbsInspector:一款针对二进制代码的漏洞扫描和逆向分析工具

admin 2025年1月11日14:13:13评论17 views字数 2345阅读7分49秒阅读模式

 关于BinAbsInspector 

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└── test

 工具依赖 

Ghidra:【文档】

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无头模式

$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>...]"] 启用指定的检测器

Ghidra GUI使用

1、运行Ghidra,将目标二进制文件导入项目;

2、使用默认配置分析二进制文件;

3、分析完成后,打开“Window -> Script Manager”,并找到“BinAbsInspector.java”;

4、双击“BinAbsInspector.java”,在配置窗口中设置参数,并点击“OK”;

5、分析完成后,我们将能够在终端窗口中查看到导出的CWE报告;

Docker使用

git clone [email protected]:KeenSecurityLab/BinAbsInspector.gitcd BinAbsInspectordocker build . -t baidocker 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

BinAbsInspector:一款针对二进制代码的漏洞扫描和逆向分析工具

 

精彩推荐

BinAbsInspector:一款针对二进制代码的漏洞扫描和逆向分析工具
BinAbsInspector:一款针对二进制代码的漏洞扫描和逆向分析工具
BinAbsInspector:一款针对二进制代码的漏洞扫描和逆向分析工具
BinAbsInspector:一款针对二进制代码的漏洞扫描和逆向分析工具

原文始发于微信公众号(FreeBuf):BinAbsInspector:一款针对二进制代码的漏洞扫描和逆向分析工具

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月11日14:13:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   BinAbsInspector:一款针对二进制代码的漏洞扫描和逆向分析工具https://cn-sec.com/archives/1134239.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息