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, 云安全监控, 云资产清单, 恶意软件分析, 插件化架构, 无后门, 自动化编排, 逆向工具, 逆向工程, 静态分析