dharnesh08/recon
GitHub: dharnesh08/recon
一款基于C++17的自动化固件与二进制漏洞分析命令行工具,集成逆向工程与源码及二进制安全扫描功能。
Stars: 0 | Forks: 0
# recon — 二进制逆向工程与漏洞扫描器
一个基于 C++17 的命令行工具,用于对原始二进制文件进行逆向工程,并扫描源代码/二进制文件以查找漏洞。
## 构建
```
make # standard build
make debug # with AddressSanitizer
make install # copy to /usr/local/bin
```
依赖要求:支持 C++17 的 `g++`(`sudo apt install g++` 或 `brew install gcc`)
## 用法
```
recon [OPTIONS]
```
### 二进制分析选项
| 标志 | 描述 |
|------|-------------|
| `-b, --binwalk` | 运行 binwalk 提取(如果未安装,则回退到 magic-byte 扫描器) |
| `-s, --strings` | 提取可打印字符串 |
| `-x, --hexdump` | 十六进制转储 |
| `-d, --disasm` | 使用 objdump/ndisasm 进行反汇编 |
| `-H, --header` | ELF/PE/Mach-O 头信息 + 安全缓解措施 |
| `-e, --entropy` | 每 4KB 块的熵分析 |
| `-a, --all` | 运行所有模块 |
### 漏洞扫描选项
| 标志 | 描述 |
|------|-------------|
| `-V, --vuln` | 自动检测并扫描漏洞 |
| `--vuln-src` | 强制进行源代码级别的漏洞扫描 (C/C++) |
| `--vuln-bin` | 强制进行二进制级别的漏洞扫描 |
### 输出选项
| 标志 | 描述 |
|------|-------------|
| `-o, --output ` | 将结果保存到文件 |
| `-w, --width ` | 十六进制转储列宽(默认:16) |
| `-m, --min-len ` | 提取时的最小字符串长度(默认:4) |
| `--no-color` | 禁用 ANSI 颜色 |
| `-v, --verbose` | 详细模式 |
## 示例
```
# 对固件二进制文件的 Full analysis
./recon -a firmware.bin
# Extract 并扫描,同时保存输出
./recon -b -s -H -o results.txt firmware.bin
# 扫描 C 源代码以发现 vulnerabilities
./recon -V --vuln-src main.c
# Narrow hex dump(8 列)并进行 string 提取
./recon -x -w 8 -s -m 6 mystery.bin
# Disassemble + 检查 security mitigations
./recon -d -H target_binary
# 仅进行 Entropy analysis(检测 encrypted/packed sections)
./recon -e suspicious.bin
```
## 漏洞扫描器
### 检测到的源代码模式
- **缓冲区溢出** — `gets`、`strcpy`、`strcat`、`scanf("%s")`、`sprintf`、`memcpy`
- **格式化字符串** — `printf(user_input)`、带有变量格式的 `fprintf`
- **整数溢出** — `(int)strlen`、带有乘法运算的 `malloc`
- **命令注入** — `system()`、`popen()`、`execl/execv`
- **竞态条件** — `access()` + open TOCTOU、`tmpnam()`
- **弱随机性** — `rand()`、`srand(time(...))`
- **弱加密** — MD5、SHA-1、DES
- **不安全的输入** — `atoi`、`atof`、`atol`
- **栈安全** — `alloca()`、VLA
- **内存管理** — 未检查的 `free()`、未验证的 `malloc` 返回值
### 二进制级别检查
- 针对嵌入式文件系统/归档文件的 magic-byte 扫描
- ELF 安全缓解措施检测:NX、Stack Canary、PIE、RELRO
- 符号表中的危险导入函数检测
- 硬编码凭证/机密字符串检测
## 可选系统工具(增强分析)
| 工具 | 用途 | 安装 |
|------|---------|---------|
| `binwalk` | 固件提取 | `pip install binwalk` |
| `strings` | 字符串提取 | 通常已预装 |
| `objdump` | 反汇编 | `sudo apt install binutils` |
| `readelf` | ELF 分析 | `sudo apt install binutils` |
| `checksec` | 安全标志 | `sudo apt install checksec` |
| `file` | 文件类型检测 | 通常已预装 |
所有工具在未安装的情况下均具有内置的回退机制。
标签:C++17, DAST, DNS 反向解析, DNS 解析, ELF解析, HTTP头分析, Mach-O解析, PE解析, SecOps, Wayback Machine, 二进制分析, 云安全架构, 云安全运维, 云资产清单, 代码生成, 十六进制转储, 反汇编, 固件安全, 固件提取, 字符串提取, 安全缓解措施检测, 开发安全, 恶意软件分析, 渗透测试工具, 源码扫描, 漏洞分析, 熵分析, 物联网安全, 网络安全, 自动化漏洞扫描, 路径探测, 逆向工程, 配置审计, 错误基检测, 隐私保护, 静态代码分析