geekypanda411/statcheck
GitHub: geekypanda411/statcheck
一个模块化的静态恶意软件分析编排框架,通过 Python 插件将外部工具串联为自定义分析流水线,减少人工干预。
Stars: 0 | Forks: 0
# Statcheck
Statchec 是一个高度模块化的 orchestrator,旨在利用基于 Python 的插件自动执行二进制文件的静态分析。
它支持将自定义的 analyzer 和 reporter 串联在一起,在无法或不必要使用重型、自动化沙箱系统的场景中,显著减少人工干预。
虽然其设计初衷是为了进行恶意软件分析和逆向工程,但其核心引擎足够灵活,几乎可以编排任何自动化处理任务。
## 为什么?
虽然现有的解决方案可以从二进制文件中提取各类有价值的信息,但这些系统通常迫使用户遵循严格、单体式的工作流程。
我想要一个真正模块化的解决方案——它允许分析师使用外部的、行业标准工具构建自定义的分析 pipeline,从而实现最大的速度和可靠性。
这种方法的优点:
- 构建你自己的工具:选择你信任且熟悉的工具,并按你的喜好将它们串联起来。
- 最大化性能:将繁重的处理工作交给已经针对这些任务进行优化的编译型工具(如 Capa、Detect It Easy、FLOSS 等)。
- 可扩展:通过简单的 Python wrapper,轻松集成用于分析和报告的新工具。
- 自定义洞察:编写自定义 Python 逻辑来解析、清理原始输出,并将它们关联成对你有意义的情报/洞察。
- 支持 LLM 的报告:默认情况下,数据被拆分为“Summary”(高信噪比)和“Complete”(原始输出)结构,这使得报告对于 AI 的上下文窗口极其高效。
## 🚀 功能
* **智能自动检测:** 使用 Detect It Easy (DiE) 自动检测目标文件格式(PE、ELF、Mach-O)。
* **格式感知执行:** 动态仅加载支持所提交文件格式的插件,从而节省内存和 CPU 周期。
* **格式覆盖:** 允许分析师针对混淆的恶意软件或内存转储手动覆盖检测结果。
* **代码与配置分离:** 通过简单的 `tools_config.json` 文件管理外部二进制文件路径,无需修改任何 Python 代码。
* **分叉式数据结构:** 生成的报告将关键洞察与原始工具输出分离开来。
## 🗺️ 未来路线图
- [ ] **环境变量支持:** 集成 `.env` 文件解析,以安全管理基于 Web 的插件的 secrets 和 API key。
- [ ] **执行模板:** 引入基于 JSON 的执行配置,以定义严格的工具链、指定执行顺序,并创建可重复的分析模板。
- [ ] **威胁情报 (TI) 插件:** 添加 analyzer,以针对 VirusTotal、ThreatFox 和 MalwareBazaar 等平台自动查询指标。
- [ ] **并行执行:** 升级 Orchestrator 引擎以并发运行独立的 analyzer,从而大幅缩短分析时间。
- [ ] **易于阅读的 Reporter:** 实现 Markdown 和 HTML reporter,以生成易于共享、视觉清晰的取证报告。
- [ ] **LLM 集成:** 创建一个专用的 reporter/analyzer,将高信噪比的 `result_summary` 输入到 LLM(云端/本地)中以自动生成洞察。
- [ ] **归档预处理:** 添加原生支持,以便在分析前自动解压受密码保护的恶意软件归档(例如 zip/7z 文件)。
## ⚙️ 安装与设置
**1. 克隆仓库**
```
git clone https://github.com/geekypanda411/statchec.git
cd statchec
```
**2. 安装 Python 依赖项**
```
pip install -r requirements.txt
```
**3. 配置你的外部工具**
Statchec 依赖于外部二进制文件(如 `diec`、`capa` 等)。
复制示例配置文件,并使用你特定机器上二进制文件的路径进行更新:
```
cp tools_config.example.json tools_config.json
```
编辑 `tools_config.json` 以指向你安装的工具:
```
{
"bin_path": "./bin",
"tools": {
"diec": "diec",
"capa": "capa-linux"
}
}
```
## 💻 用法
通过命令行运行 Statchec。
**标准自动检测运行:**
```
python main.py malware_sample.exe --format auto --report json
```
**强制指定格式(例如用于内存转储):**
```
python main.py dumped_payload.bin --format pe --report json
```
**启用 Debug 日志记录:**
```
python main.py malware_sample.exe --format auto --debug
```
## 🧩 编写插件 (Analyzer)
Statchec 的设计旨在实现无限的扩展性。要将新工具添加到你的 pipeline 中,只需在 `src/analyzers/` 目录中创建一个继承自 `BaseAnalyzer` 的新 Python 文件。
得益于动态插件架构,你无需在任何地方注册你的插件。Orchestrator 会自动发现它,检查其支持的格式,并执行它!
### 示例插件
```
import subprocess
from src.analyzers.base_analyzer import BaseAnalyzer
class MyCustomAnalyzer(BaseAnalyzer):
name = "My Awesome Tool"
supported_formats = ['pe', 'elf'] # Or ['all']
binary_id = "my_tool" # Maps to tools_config.json
def analyze(self, target_file, tool_path):
# 1. Run your external tool
result = subprocess.run([tool_path, str(target_file.path)], capture_output=True)
# 2. Parse the output (extract the signal from the noise)
summary = {"status": "malicious", "ioc": "192.168.1.1"}
raw_output = result.stdout
# 3. Save it back to the file using our bifurcated structure
target_file.add_result(
self.name,
summary_data=summary,
complete_data={"raw": raw_output}
)
```
## 🤝 贡献
欢迎贡献、提出问题和功能请求!请随时查看[问题页面](https://github.com/yourusername/statchec/issues)。如果你编写了很酷的新 Analyzer 或 Reporter 插件,请提交 Pull Request!
## 📝 许可证
本项目基于 MIT 许可证授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:DAST, Homebrew安装, Python, 云安全监控, 云资产清单, 恶意软件分析, 插件化架构, 无后门, 自动化编排, 逆向工具, 逆向工程, 静态分析