RoRvzzz/RedFlag
GitHub: RoRvzzz/RedFlag
RedFlag 是一款面向 C++ 项目的静态分析工具,通过扫描源代码和构建系统中的危险特征、混淆手段及隐藏 payload,生成透明风险评分以辅助人工安全审查。
Stars: 2 | Forks: 0
# RedFlag
# REDFLAG 现已加入 [PASTE-CO.DE](https://paste-co.de/scanner)





**RedFlag** 是一款静态分析工具,旨在标记 C++ 项目、Visual Studio 解决方案和构建系统中的风险模式。
RedFlag 并非声称能“理解”代码行为,而是作为一个高级启发式引擎,扫描**已知的危险特征**、**可疑的 API 组合**、**混淆技术**以及**构建流水线攻击**。它将这些静态指标汇总为加权风险评分,帮助开发者和研究人员快速识别需要人工审查的第三方代码中的“危险信号”。

- [为什么选择 RedFlag?](#why-redflag)
- [新功能](#features)
- [安装](#installation)
- [使用与 CLI](#usage--cli)
- [配置](#configuration)
- [工作原理](#how-it-works)
- [截图](#screenshots)
- [许可证](#license)

在克隆仓库或接手遗留的 C++ 项目时,人工审计耗时费力。一个项目可能在 `.cpp` 文件中看起来很干净,但却通过 `.vcxproj` 文件中的 `PreBuildEvent` 执行反弹 shell,或者将 payload 隐藏在拼接的字符串中。
**RedFlag 通过以下方式解决此问题:**
1.  解析 `.vcxproj` 文件,以查找隐藏在构建前/后事件和链接库中的命令行执行操作。
2.  规范化字符串和宏,以检测混淆的 API 调用(例如 `system("c" "md.exe")`)。
3.  提取并解码 Base64/XOR blob,以检查通常与 shellcode 相关的高熵字符串。

### 分析引擎
* **构建事件扫描:** 检测深藏在 Visual Studio XML 配置文件中的 `PowerShell`、`cmd.exe`、`curl` 和 `wget` 命令。
* **依赖扫描:** 即使源代码中未显式调用,也会标记可疑的链接库(例如 `wininet.lib`、`urlmon.lib`)。
* **反规避规范化:**
* 合并拼接的 C++ 字符串(`"A" "B"` → `"AB"`)。
* 去除逻辑中的注释,以暴露隐藏的命令。
* 检测通过 `#define` 进行的 API 别名化(例如 `#define RUN system`)。
* **启发式 XOR 与熵分析:**
* 暴力破解 XOR 字符串以查找隐藏的 URL 或 payload。
* 上下文感知的熵分析(区分随机资产和加密的 shellcode)。
### 模式匹配
* **执行:** `ShellExecute`、`CreateProcess`、`system()`
* **内存:** `VirtualAlloc`、`ReflectiveLoader`、`WriteProcessMemory`
* **网络:** `URLDownloadToFile`、`socket`、`InternetOpen`
* **加密:** `CryptEncrypt`、`Xor`、`FromBase64String`
### 操作
* **审查模式:** 交互式 CLI,用于对扫描结果进行分类筛选并立即打开文件。
* **支持 CI/CD:** 将结果导出为 JSON,并在发现严重/高危威胁时以错误代码退出。
* **丰富的 UI:** 格式化的表格、进度条和带颜色的严重程度指示器。

您的机器上需要安装 **Python 3.7+**。
**1. 克隆仓库:**
```
git clone https://github.com/rorvzzz/redflag.git
cd redflag
```
**2. 安装依赖:**
```
pip install -r requirements.txt
```

### 基础扫描
针对单个文件或目录运行。
```
python run.py "C:\Path\To\Project"
```
### 交互式审查模式
启动扫描后的交互式会话,以筛选结果并在默认编辑器中打开文件。
```
python run.py "C:\Path\To\Project" --review
```
### CI/CD 与自动化
生成机器可读的报告。如果检测到高危或严重结果,脚本将以代码 `1`(失败)退出;否则以 `0`(成功)退出。
```
python run.py "C:\Path\To\Project" --json results.json
```
### 选项
| 标志 | 描述 |
| :--- | :--- |
| `--review` | 扫描后进入交互模式以对结果进行分类筛选。 |
| `--json ` | 将结果导出为 JSON 文件。 |
| `--no-definitions` | 在控制台输出中隐藏技术定义。 |
| `--auto-update` | 自动检查并安装更新。 |
| `--verbose` | 显示详细的错误日志(对调试有用)。 |

RedFlag 支持特定于项目的配置。在目标目录的根目录下放置一个名为 `.redflag` 的文件(JSON 格式)以自定义扫描。
**`.redflag` 内容示例:**
```
{
"ignore_paths": [
"vendor/third_party_lib/",
"tests/data/"
],
"ignore_rules": [
"Mismatched File Extension"
],
"custom_rules": [
{
"category": "SECRETS",
"pattern": "AKIA[0-9A-Z]{16}",
"score": 10,
"description": "AWS Access Key ID Detected"
}
]
}
```
*有关完整模板,请参阅仓库中的 `redflag.example.json`。*

RedFlag 分 5 步执行分析:
1. **项目身份:** 检测目标是 VS 解决方案、Make 项目还是单个文件,以调整扫描策略。
2. **构建系统:** 解析 `.vcxproj` 和 `.sln` 文件,以识别命令行执行(PreBuild/PostBuild)和链接的二进制依赖项。
3. **规范化与预处理:**
* 合并相邻字符串。
* 解析宏。
* 去除注释以防止规避。
4. **深度扫描:**
* 对规范化的代码运行正则特征匹配。
* 提取数组以进行熵/图像分析。
* 暴力破解 XOR blob。
5. **裁定:** 汇总风险评分。如果文件包含多个相关指标(例如:混淆 + 网络 + 执行),它将生成行为学上的“高置信度”发现。

标签:C++, DNS 反向解析, LNA, Python, 云安全监控, 数据擦除, 无后门, 逆向工具, 静态分析