aaquibbb/Automating-Threat-Detection

GitHub: aaquibbb/Automating-Threat-Detection

利用 Google Gemini 自动生成、验证并部署 YARA 规则到 Wazuh,以检测恶意 Web Shell 的 LLM 辅助威胁检测流水线。

Stars: 0 | Forks: 0

# 使用 LLM 自动化威胁检测与 YARA 规则生成 **大型语言模型能否编写出足够出色并足以在 SOC 中部署的检测规则?** 本项目构建了一个端到端的流水线,利用 Google Gemini 自动生成、验证 YARA 规则,并将其部署到 Wazuh(开源 SIEM)中——然后针对 480 个真实世界的恶意 Web Shell 对它们进行了客观的测试。 ![Python](https://img.shields.io/badge/Python-3.x-blue) ![SIEM](https://img.shields.io/badge/SIEM-Wazuh-orange) ![LLM](https://img.shields.io/badge/LLM-Google%20Gemini-green) ![Detection](https://img.shields.io/badge/Rules-YARA-red) ## 问题背景 手动编写 YARA 规则来捕获恶意文件上传(Web Shell)既缓慢又具有滞后性。基于特征的检测总是落后于 payload 一步,而手动维护规则这一运营瓶颈更是加剧了分析师的告警疲劳。本项目旨在回答这个问题:**LLM 能否接管规则生成的繁重工作——并且它生成的规则是否真的具备实际部署价值?** ## 结果 这些规则针对包含 **480 个真实恶意 PHP Web Shell**(来自 Tennc Webshell Corpus 和 SecLists 的 c99、r57 和混淆后门)的正样本集,以及纯净的 **WordPress、Joomla 和 Drupal** 源代码(用于测量误报率)的负样本集进行了评估。 | 指标 | 得分 | |---|---| | Precision | **0.936** | | F1-Score | **0.89** | | 误报率 | 足够低,可用于实际部署 | **客观结论:** LLM 生成的静态规则在已知和经过轻微修改的 Web Shell 上表现强劲,但**重度混淆的恶意软件仍能绕过检测**。静态 YARA 检测存在上限,而使用 LLM 编写静态规则也会继承这一局限。这里的结论不是“AI 取代检测工程师”——而是 LLM 辅助的规则生成是纵深防御体系中的一个强大*第一层*,而非独立的解决方案。 ## 工作原理 ``` Web server artefact (suspect PHP file) │ ▼ [artifact_extractor.py] → extract entropy, metadata, strings │ ▼ [rule_generator.py] → Gemini generates a candidate YARA rule │ (prompt-engineered for valid metadata/strings/conditions) ▼ [rule_validator.py] → compile + test against malicious & benign sets │ ├── passes ──────► deploy rule into Wazuh └── fails ───────► feedback loop: regenerate with refined prompt ``` 特征提取是确定性的,并且在*任何*模型交互*之前*进行,从而在 AI 辅助输出和经过人工验证的生产内容之间保持了清晰的界限。 ## 技术栈 - **检测平台:** Wazuh(文件完整性监控 + 告警流水线) - **监控环境:** Apache Web 服务器,PHP 文件上传 - **LLM 提供商:** Google Gemini API - **规则格式:** YARA - **语言:** Python 3.x ## 仓库结构 ``` ├── artifact_extractor.py # Extracts entropy, metadata, and strings from files ├── rule_generator.py # Calls the Gemini API to generate YARA syntax ├── rule_validator.py # Compiles rules & tests against malicious/benign datasets └── requirements.txt ``` ## 设置与使用 假定您拥有正常工作的 Python 3 环境,并且已将 Google Gemini API 密钥导出为 `GEMINI_API_KEY`。 ``` # 安装依赖 pip install -r requirements.txt # 1. 从可疑文件中提取 artefacts python artifact_extractor.py --file /path/to/suspect.php --out artefacts.json # 2. 从 artefact 包生成候选 YARA 规则 python rule_generator.py --input artefacts.json --out rule.yar # 3. 对照恶意 + 良性数据集验证规则 python rule_validator.py --rule rule.yar ``` ## 数据集 - **恶意(正样本):** 480 个 PHP Web Shell — [Tennc Webshell Corpus](https://github.com/tennc/webshell)、[SecLists](https://github.com/danielmiessler/SecLists) - **良性(负样本):** 来自 WordPress、Joomla 和 Drupal 的未经修改的 PHP 源代码(用于误报对照) ## 局限性与未来工作 - **混淆是瓶颈。** 高度混淆的 Web Shell 可以绕过静态规则;将此与行为/动态分析相结合是明确的下一步计划。 - **Gemini 集成缺乏响应缓存** —— 这对于研究来说没问题,但实际部署需要速率限制和成本控制。 - **侧重于 Web 服务器。** 将覆盖范围扩展到端点和身份遥测是一个自然的扩展方向。 - **多格式输出。** 未来的迭代可以在 YARA 的基础上输出 Sigma 规则,并增加 prompt 级别的护栏,以捕获那些语法有效但语义薄弱的规则。 ## 项目价值 这项工作正处于安全运营中三个现实关注点的交汇处:扩展检测工程、减少分析师的告警疲劳,以及以可控且*谨慎*的方式将生成式 AI 集成到防御工作流中。它是有意保持轻量级和研究级别的,而不是经过生产强化的——其设计优先级是研究的可重复性、确定性的特征提取,以及在 AI 辅助输出和经人工验证的生产内容之间划定清晰的界限。 ## 作者 **Aaquib Parvez** — 诺森比亚大学网络安全硕士 (2026) SOC 分析师,致力于构建 AI 工具以加速威胁检测。 [LinkedIn](https://linkedin.com/in/aaquibparvez) · [GitHub](https://github.com/aaquibbb)
标签:DLL 劫持, URL发现, Wazuh, Webshell检测, YARA, 云资产可视化, 大语言模型, 安全检测, 自动化规则生成, 逆向工具