Y-T-T/PoC-Analyzer

GitHub: Y-T-T/PoC-Analyzer

基于 Semgrep AST 分析与启发式评分的静态检测引擎,用于在执行前识别第三方 PoC 脚本中潜藏的后门、反向 Shell 等恶意意图。

Stars: 0 | Forks: 0

# PoC Analyzer (概念验证恶意意图检测器) ![Python](https://img.shields.io/badge/Python-3.11%2B-blue?logo=python) ![Semgrep](https://img.shields.io/badge/Engine-Semgrep-green) ![License](https://img.shields.io/badge/License-Apache%202.0-purple) ![Version](https://img.shields.io/badge/Version-1.0.0-green) 与在代码中搜索*漏洞*的传统 SAST 工具不同,PoC Analyzer 旨在扫描**恶意意图**。它主要用于验证从 GitHub、Exploit-DB 或其他公共来源下载的第三方概念验证脚本,确保它们在执行前不包含隐藏的后门、反向 Shell 或恶意软件释放器。 ## 功能 * **多语言支持**:原生支持 **Python、Node.js、Go、PHP、Java、C/C++、Shell、Batch 和 PowerShell**。 * **启发式评分引擎**:基于加权行为(例如,代码混淆 = 高风险,Socket 连接 = 低风险)计算“风险评分”,而不是简单的关键字匹配。 * **基于 AST 的分析**:由 [Semgrep](https://semgrep.dev/) 驱动,使其能够理解代码结构并检测正则表达式经常遗漏的混淆模式(例如,`eval(base64...)`)。 * **实时威胁情报**:在每次扫描前自动从 [URLHaus](https://urlhaus.abuse.ch/) 更新恶意域名/IP 黑名单,确保检测到最新的 C2 基础设施。 * **智能去重**:自动将重复的发现进行分组,以防止分数膨胀,确保准确的风险评估。 * **丰富的报告**:生成美观、易读的终端报告,并附带明确的结论(SAFE / SUSPICIOUS / MALICIOUS)。 ## 演示 ![PoC Analyzer 目录演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/157ae00dea075437.png) *图:PoC Analyzer 检测目录中的恶意脚本。* ![PoC Analyzer 文件演示](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/17d9c7b113075439.png) *图:单个文件的详细威胁分析。* ## 规则路径 默认规则的组织结构如下: ``` └── rules/ # Semgrep Rule Definitions ├── common.yaml # Cross-language secrets IoCs ├── c.yaml # C/C++ rules ├── php.yaml # PHP specific rules ├── python.yaml # Python specific rules ├── js.yaml # JavaScript/Node.js rules ├── go.yaml # Go rules ├── java.yaml # Java rules ├── shell.yaml # Bash/Sh rules ├── batch.yaml # Batch/CMD rules └── powershell.yaml # PowerShell rules ``` ## 测试样本 测试用例已加密,以防止杀毒软件产生误报。在沙箱环境中使用密码:`infected` 解压 `test_samples.zip` 以运行测试。 ## Docker 使用方式(推荐) 在隔离的容器中运行 PoC Analyzer 是处理潜在恶意样本的最安全方式,同时可以避免本地依赖问题。 ### 1. 克隆仓库: ``` git clone https://github.com/Y-T-T/PoC-Analyzer.git cd PoC-Analyzer ``` ### 2. 构建镜像 从源目录构建 Docker 镜像。 ``` docker build -t poc-analyzer . ``` ### 3. 运行场景 **场景 A:查看帮助(默认)** 不带参数运行容器将显示帮助菜单。 ``` docker run --rm poc-analyzer ``` **场景 B:扫描内部测试样本** 镜像附带预打包的测试样本(在构建过程中已解压)。您可以直接针对它们测试分析器。 ``` docker run --rm poc-analyzer test_PoC/malicious_test.js ``` **场景 C:扫描本地文件(推荐)** 要扫描主机上的文件,请将当前目录(`$(pwd)`)挂载到容器内的卷(例如,`/scan`)。 ``` # 扫描特定文件 docker run --rm -v "$(pwd):/scan" poc-analyzer /scan/poc.py # 扫描整个目录 docker run --rm -v "$(pwd):/scan" poc-analyzer /scan/ ``` ## 本地安装 如果您倾向于原生运行: 1. **克隆仓库:** ``` git clone https://github.com/Y-T-T/PoC-Analyzer.git cd PoC-Analyzer ``` 2. **安装依赖:** 确保已安装 Python 3.11+ 和 Semgrep。 ``` pip install -r requirements.txt ``` 3. **运行分析器:** 请参阅下面的使用示例。 ## 高级用法 ### 1. 基本扫描 默认情况下,分析器使用本地 `rules/` 目录中找到的所有规则扫描目标文件。它会根据文件扩展名自动过滤规则。 ``` python pca.py poc.py ``` ### 2. 使用特定配置扫描 您可以指定自定义规则文件或不同的目录。 ``` python pca.py -c rules/js.yaml poc.js ``` ### 3. 调整灵敏度 默认风险阈值为 **100**。您可以对其进行调整,使其更严格或更宽松。 ``` # Strict mode:分数高于 80 被视为 MALICIOUS python pca.py -c rules/shell.yaml -t 80 poc.sh ``` ### 4. 深度扫描 默认情况下,分析器仅使用与文件扩展名相关的规则(例如,`.js` 文件使用 `js.yaml` 进行扫描)。要使用**所有**规则扫描文件(对于多语言文件或嵌入在 JavaScript 中的 PowerShell 等嵌入脚本非常有用),请使用 `--all-rules` 标志。 ``` python pca.py --all-rules poc.js ``` ### 5. 性能调优(多线程) 对于大型目录的扫描,您可以增加工作线程的数量。该工具会自动将其上限设置为系统 CPU 核心数,以防止系统死机。 ``` # 使用 8 个线程扫描大型项目 python pca.py -w 8 test_PoC/malicious_proj/ ``` ### 6. 黑名单更新配置 该工具会自动从 URLHaus 获取最新的恶意 URL。您可以控制要获取的最新条目数量(默认值:500),以平衡启动速度和覆盖范围。 ``` # 获取 top 1000 个恶意域名以获得更好的覆盖范围 python pca.py -m 1000 poc.py ``` ## 风险评分逻辑 分析器根据计算出的**风险评分**得出结论。 | 结论 | 条件 | 描述 | | --- | --- | --- | | **SAFE** | 得分 = 0 | 干净。未发现可疑指标。 | | **SUSPICIOUS** | 得分 > 0 | 包含一些潜在的风险因素(例如,系统调用、网络使用)。建议手动审查。 | | **MALICIOUS** | 得分 ≥ 阈值 | **高风险。** 存在后门行为的明确指标(例如,反向 Shell、混淆执行、释放器)。 | ### 评分示例 * **Socket 连接 (`socket`)**: +10(信息/网络) * **系统命令 (`os.system`)**: +60(高风险 - 直接 Shell 执行) * **混淆 (`base64 decode`)**: +80(高风险 - 常见的规避手段) * **反向 Shell 模式**: **+100(严重的恶意指标)** *示例:* 包含 `eval(base64...)` (+80) 和系统命令 (+60) 的脚本将获得 **140** 分。在阈值为 100 的情况下,这将被标记为 **MALICIOUS**。 ## 支持的语言与扩展名 | 语言 | 扩展名 | 关键检测能力 | | --- | --- | --- | | **Python** | `.py` | Pickle 反序列化、混淆的 Eval、Pip 投毒 | | **JavaScript** | `.js`, `.ts` | Node.js RCE、原型链污染、反向 Shell | | **Go** | `.go` | Syscall 滥用、内存操作、二进制文件释放器 | | **C / C++** | `.c`, `.cpp`, `.h` | Shellcode 加载器、进程注入、`system()` 滥用 | | **PHP** | `.php` | Webshell、命令注入、文件写入 | | **Java** | `.java` | 反射攻击、JNI 加载、运行时执行 | | **Shell** | `.sh` | 反向 Shell、`curl`、`bash`、单行命令 | | **Batch** | `.bat`, `.cmd` | `certutil` 下载器、防火墙篡改、卷影副本删除 | | **PowerShell** | `.ps1`, `.psm1` | 无文件攻击、AMSI Bypass、IEX 执行 | ## 免责声明 **此工具仅供教育和防御目的使用。** 1. **无担保**:本软件按“原样”提供,不提供任何形式的担保。作者对因使用或滥用本工具造成的任何直接或间接损害不承担任何责任。 2. **虚假的安全感**:静态分析无法保证 100% 的准确性。标记为“SAFE”的文件可能仍包含未检测到的恶意代码。**切勿仅凭此工具的结论就执行不受信任的 PoC。** 3. **需要沙箱环境**:请始终在隔离的沙箱环境(例如,虚拟机、Docker)中分析和测试不受信任的 PoC。 **许可证:** [Apache-2.0](LICENSE)
标签:C2基础设施检测, DNS 反向解析, GitHub安全, IP 地址批量处理, PoC脚本安全, Python, Semgrep, WordPress安全扫描, 代码审查, 代码混淆检测, 反向Shell检测, 后门检测, 启发式分析, 多语言支持, 威胁情报, 安全测试框架, 开发者工具, 文档安全, 无后门, 木马植入检测, 网络安全, 自动化安全工具, 请求拦截, 逆向工具, 错误基检测, 隐私保护, 静态代码分析