可执行文件静态分析器

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/dragon-dreamer/binary-valentine

项目简介

Binary Valentine是一款开源、免费使用的可执行文件静态分析器。它能够检测到其他分析方式通常无法检测到的各种问题,如格式和安全问题,提供加固和优化建议。

主要功能

  • 检测与可执行文件格式有关的缺陷、配置错误、格式和安全问题,提出加固和优化建议。
  • 支持灵活的项目配置,可以作为单独的文件或在命令行中提供。
  • 支持多种输出格式(终端输出、纯文本、SARIF)。
  • 支持单个可执行文件规则和组合(跨可执行文件)规则。
  • 可构建到SSDLC(安全软件开发生命周期)中。
  • 多线程和快速。 使用快速的SSD驱动器,在10-20秒内扫描Windows 10的整个System32文件夹。

Binary Valentine目前支持的内容

可移植可执行文件格式

Binary Valentine目前仅支持可移植可执行文件格式(在Windows、EFI、X-Box上广泛使用)。 对于此格式,它检测各种问题:

  • 安全问题,例如缺少加固选项(例如ASLR)、不安全配置(例如可写代码段)或使用危险的WinAPI函数。
  • 配置问题,例如版本信息错误、应用程序图标和清单问题。
  • 优化问题,可以解决可执行文件更快或更小的问题(例如使用基于配置文件的优化)。
  • 系统问题,这些问题与操作系统滥用有关,例如废弃的或内部的WinAPI使用、系统兼容性问题和DPI意识。
  • 格式问题,这些问题与PE格式本身有关。

对于可移植可执行文件,目前提供了160多个规则。 大多数规则是单个可执行文件,但其中一些是组合扫描(例如,版本信息跨可执行文件一致性检查规则)。

灵活的项目配置

可以向Binary Valentine提供XML项目文件,根据所选规则和过滤器扫描项目。 项目可以包含一个或多个要扫描的文件或目录(带有可选的正则表达式来过滤路径名)。 每个路径或文件可以使用单独设置的应用规则、警告级别和类别进行配置。 除此之外,XML项目可以指定输出格式和执行选项(例如线程数和最大内存使用限制)。 除了基于项目的执行,还可以通过将所有参数提供给其命令行来调用Binary Valentine。

行业标准的输出格式

Binary Valentine支持多种输出格式,以便与其他系统集成。 除了终端和纯文本输出外,它还支持静态分析结果交换格式(SARIF)2.1.0,这是静态分析工具输出的行业标准格式。

跨平台

Binary Valentine可以使用一组C++20编译器在多个平台上构建:

  • Windows 10/11,MSVC 2022(提供Visual Studio解决方案和CMake构建)
  • Linux,GCC 13.0(CMake构建)
  • Linux,Clang 16(CMake构建)

截至今天,支持Windows 10/11和现代Linux(内核版本5.1或更高版本,启用了io_uring)。

 

二进制情人节

二进制情人节是一个开源的、免费使用的可执行文件静态分析器。它能够检测到许多其他方法(如静态代码分析)通常无法检测到的各种问题。

 

网站:binary-valentine.com.

主要特点

  • 发现与可执行文件格式相关的错误、配置错误、格式和安全问题,而不是代码本身。提供加固和优化技术建议。
  • 支持灵活的项目配置(文件路径、规则过滤器),可以作为单独文件或命令行中提供。
  • 支持多种输出格式(终端输出、纯文本、SARIF)。
  • 支持单个可执行文件规则和组合(跨可执行文件)规则。
  • 可构建为 SSDLC(安全软件开发生命周期)的一部分。
  • 多线程和快速。使用快速的 SSD 硬盘,在 10-20 秒内扫描整个 Windows 10 System32 文件夹。

二进制情人节目前支持的内容

可移植可执行文件格式

二进制情人节目前仅支持可移植可执行文件格式(在 Windows、EFI、X-Box 上广泛使用)。对于这种格式,它可以检测出各种问题:

  • 安全问题,例如缺少加固选项(例如 ASLR)、不安全的配置(例如可写代码段)或使用危险的 WinAPI 函数。
  • 配置问题,例如版本信息错误、应用程序图标和清单问题。
  • 优化问题,可以通过优化使可执行文件更快或更小(例如使用基于配置文件的优化)。
  • 系统问题,与操作系统误用相关,例如使用已弃用或内部 WinAPI、系统兼容性问题和 DPI 意识。
  • 格式问题,与 PE 格式本身相关。

针对可移植可执行文件,目前提供了超过 160 条规则。大多数规则是单个可执行文件,但其中一些进行了组合扫描(例如版本信息跨可执行文件一致性检查规则)。

灵活的项目配置

二进制情人节可以提供 XML 项目文件,根据选择的规则和过滤器扫描项目。一个项目可以包含一个或多个要扫描的文件或目录(可选的正则表达式可用于过滤路径名)。每个路径或文件都可以配置一个独立的应用规则、警告级别和类别集。除此之外,XML 项目还可以指定输出格式和执行选项(例如线程数和最大内存消耗限制)。除了基于项目的执行,二进制情人节还可以通过提供所有参数到其命令行来调用。

行业标准输出格式

二进制情人节支持多种输出格式,以便与其他系统集成。除了终端和纯文本输出外,它还支持静态分析结果交换格式(SARIF)2.1.0,这是静态分析工具输出的行业标准格式。

跨平台

二进制情人节可以使用一组 C++20 编译器构建为多个平台:

  • Windows 10/11,MSVC 2022(提供了 Visual Studio 解决方案和 CMake 构建)
  • Linux,GCC 13.0(CMake 构建)
  • Linux,Clang 16(CMake 构建)

截至今天,Windows 10/11 和现代 Linux(内核版本 5.1 或更高,启用了 io_uring)得到支持。

标签:工具分享, PE解析, 可执行文件分析