AtharvaG109/binscope
GitHub: AtharvaG109/binscope
一款用于快速分类与初步分析 PE、ELF 和 Mach-O 二进制文件的静态工具,帮助识别打包器与可疑特征。
Stars: 0 | Forks: 0
# binScope
[](https://github.com/AtharvaG109/binscope/actions/workflows/ci.yml)
[](https://github.com/AtharvaG109/binscope/releases)
[](./LICENSE)
`binscope` 是一个用于分类 PE、ELF 和 Mach-O 二进制文件的 Rust CLI 工具,能够识别打包器信号、提取字符串,并生成可供分析师进一步完善的 YARA 规则骨架。
## 为什么使用 binscope
逆向工程师经常需要一个快速初步分析工具,在不打开完整反汇编器的情况下回答一些高价值问题:
- 这个二进制文件是什么格式?看起来可疑吗?
- 哪些节看起来被打包或加密了?
- 哪些导入和提取的字符串指向注入、网络通信、注册表滥用或加密行为?
- 我能快速将这些最有趣的特征转化为 YARA 起点规则吗?
`binscope` 为这种快速初步分析循环而构建。
## 功能特性
- 使用 `object` reader API 解析 PE、ELF 和 Mach-O 二进制文件
- 计算每个节和每 256 字节块的 Shannon 熵
- 标记可疑的导入组合,例如 `VirtualAlloc` + `WriteProcessMemory` + `CreateRemoteThread`
- 构建导入指纹,包括一个面向 PE 的 `imphash` 风格 MD5
- 提取 ASCII 和 UTF-16LE 字符串,然后分类 URL、IP 地址、注册表键、文件路径、加密术语和可疑的 WinAPI 引用
- 检测通用打包器提示,包括 UPX、Themida、MPRESS、ASPack、Petite 以及可疑的节名称
- 提取 PE Rich 头信息和基本的 PE 资源元数据
- 报告 ELF 加固信号,例如 PIE、NX、RELRO、剥离状态、解释器以及类似 `DT_NEEDED` 的依赖提示
- 输出彩色终端报告和机器友好的 JSON
- 从提取的字符串、熵和导入指纹生成 YARA 规则骨架
- 汇总整个目录并提供聚合风险概览
- 在 `summarize` 期间递归扫描 `zip`、`jar`、`tar`、`tgz` 和 `tar.gz` 容器
## 安装
从本仓库安装:
```
cargo install --path .
```
或本地构建:
```
cargo build --release
./target/release/binscope --help
```
## 用法
```
binscope analyze /path/to/binary
binscope analyze /path/to/binary --json
binscope analyze /path/to/binary --yara
binscope analyze /path/to/binary --strings-interesting-only
binscope summarize /path/to/folder
binscope summarize /path/to/folder --json
binscope summarize /path/to/archive.zip --json
binscope summarize /path/to/archive.tar.gz
```
## 示例输出
```
binscope sample_pe.exe (PE)
Risk score: 68/100 Size: 65536 bytes SHA256: 1d1f...
Machine: X86_64 Entry point: 0x14b0 Sections: 4 Imports: 52 Strings: 14 interesting / 173 total
Import hash: 2f3f...
Findings
[critical] Suspicious API combo: injector: Classic remote-thread injection chain
[high] High-entropy section .packed: Entropy 7.91 suggests compression, encryption, or packed payloads
[medium] Suspicious import libraries: kernel32.dll, ntdll.dll
```
## 本地验证
```
cargo fmt
cargo check --offline
cargo test --offline
```
## 基于测试用例的测试
干净的示例二进制文件位于 [`testdata/fixtures`](./testdata/fixtures):
- `sample_pe.exe`
- `sample_elf`
- `sample_macho`
它们是有意设计的良性测试用例,用于 CI 中的解析器和报告覆盖率测试。
## 测试数据
[`testdata`](./testdata) 目录包含两部分内容:
- `fixtures/`:提交到仓库中用于自动化测试的干净二进制文件
- `samples.json`:真实世界家族或打包器的仅元数据哈希和引用
本仓库不存储实际的恶意软件样本。
## 查找测试文件
最快的方法:
- 使用 [`testdata/fixtures`](./testdata/fixtures) 中提交的测试用例
- 在已有目录上运行查找脚本
在本开发过程中已知可用的文件包括:
- `/Users/atharvagham/Downloads/rev_satellitehijack/satellite`
- `/Users/atharvagham/Downloads/job_scout_opt_starter/.venv/lib/python3.11/site-packages/setuptools/cli.exe`
- `/usr/bin/true`
然后分析其中一个:
```
binscope analyze testdata/fixtures/sample_pe.exe
binscope analyze testdata/fixtures/sample_elf --json
binscope analyze testdata/fixtures/sample_macho --strings-interesting-only
binscope summarize testdata/fixtures --json
```
递归进入归档文件:
```
binscope summarize suspicious_bundle.zip --json
binscope summarize dropper_samples.tar.gz
```
## GitHub 自动化
本仓库包含:
- 推送和拉取请求上的 CI
- 错误和特性请求的 issue 模板
- 拉取请求模板
- Dependabot 用于 Cargo 和 GitHub Actions 更新
- 针对标记版本的自动化构建发布
## 文档
仓库示例和示例输出位于 [docs/README.md](./docs/README.md)。
## 路线图想法
- 更丰富的 PE 资源解码
- 嵌套归档策略控制和大小阈值
- 延迟导入分析
- 可配置的风险配置文件
- 超出 JSON 的批量导出格式
## 贡献
欢迎贡献。请参考 [CONTRIBUTING.md](./CONTRIBUTING.md) 了解开发流程,[CHANGELOG.md](./CHANGELOG.md) 了解发布说明,以及 [`.github/CODEOWNERS`](./.github/CODEOWNERS) 了解审查所有权。
## 安全
如果您认为在 `binscope` 中发现了安全问题,请不要首先在公共 GitHub 上打开 issue。请遵循 [SECURITY.md](./SECURITY.md) 中的指导。
## 说明
- `binscope` 是一个静态初步分析工具,不会执行二进制文件。
- 本地的 PE `imphash` 实现有意保持轻量和透明,而不是试图镜像其他生态系统中的每一个边缘情况。
- 本实现使用本地缓存的 `object` crate 而非 `goblin`,以便项目可以在离线环境中构建。
标签:DAST, DNS信息、DNS暴力破解, ELF, Mach-O, PE, Rust, SEO: 二进制分析工具, SEO: 恶意软件检测, SEO: 逆向工程工具, YARA规则, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 内存注入检测, 加密货币相关, 可执行文件, 可视化界面, 威胁情报, 字符串提取, 开发者工具, 开源安全工具, 恶意软件分析, 打包器检测, 文件格式识别, 注册表操作, 熵分析, 网络流量审计, 网络行为分析, 逆向工程, 逆向工程平台, 通知系统, 静态分析