npavanbushanreddy/threat-detections

GitHub: npavanbushanreddy/threat-detections

基于 Suricata 和 Wazuh 的检测即代码框架,通过 Git 分支晋升与 GitHub→AWS 自动化部署流水线实现生产级威胁检测规则的版本化管理和快速交付。

Stars: 0 | Forks: 0

# 🛡️ Threat-Detections [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Suricata](https://img.shields.io/badge/Suricata-8.x-red)](https://suricata.io/) [![Wazuh](https://img.shields.io/badge/Wazuh-4.x-blue)](https://wazuh.com/) [![MITRE ATT&CK](https://img.shields.io/badge/MITRE%20ATT%26CK-mapped-darkred)](https://attack.mitre.org/) [![Detection-as-Code](https://img.shields.io/badge/Detection--as--Code-✓-green)](https://github.com/npavanbushanreddy/threat-detections) [![AWS](https://img.shields.io/badge/AWS-EC2-orange)](https://aws.amazon.com/) [![Platform](https://img.shields.io/badge/Platform-Ubuntu%2024.04-purple)](https://ubuntu.com/) ## 👤 背景 — 为什么会有这个代码库 这个代码库是由 **Indusface Private Limited** 的安全研究工程师 **N Pavan Bushan Reddy** 建立的个人实验室。 在日常工作中: - 拥有 **4 年以上** 编写生产级 WAF 检测规则的经验,保护着 **5,000 多个** 客户应用 - 开发了 **100 多条** ModSec 规则,编写了 **75 多条** 基于异常的规则 - 在 BAS 平台(Cymulate、Picus、Nemecida)上实现了 **99% 的** 攻击覆盖率(不包含 DoS/Bot 规则) - 将误报分析自动化效率提升了 **90%** - 通过对编码/走私规避问题的研究,将成功的 WAF 绕过率降低了 **35%** - 发布了针对 Apache OFBiz(CVE-2024-38856)、PHP-CGI(CVE-2024-4577)、Apache Tomcat(CVE-2025-24813)、Zimbra XSS、Hotjar OAuth+XSS、Ivanti Endpoint Manager 等的 **零日漏洞通告和虚拟补丁** **这个代码库将同样的工程规范应用于 Suricata(NDR)+ Wazuh(SIEM)** —— 这是领先的 MDR/MSSP 平台使用的开源检测技术栈 —— 旨在展示在 ModSec/WAF 环境之外的完整检测内容生命周期。 ## 🎯 本项目展示了什么 一个 **端到端的检测工程流水线**,反映了现代 SOC 和 MSSP 如何大规模管理检测内容: - ✅ 所有检测规则的 **基于 Git 的版本控制** —— 每一次更改都可追溯 - ✅ **分支晋升工作流**(`dev` → `staging` → `main`) —— 保障生产环境安全 - ✅ 通过 Flask webhook 实现 **GitHub 到 AWS 的自动化部署** - ✅ **部署前的验证关卡**(`suricata -T` + Wazuh 服务健康检查) - ✅ **基于 systemd 的服务持久化** —— 无惧重启和崩溃 - ✅ **多引擎检测** —— Suricata(NDR)+ Wazuh(SIEM 关联) - ✅ **端到端延迟:从 GitHub push 到生产规则生效不到 10 秒** ## 📐 架构 ``` ┌──────────────────────────────────────────────────────────────┐ │ Developer Workflow │ │ git push origin main → GitHub │ └─────────────────────┬────────────────────────────────────────┘ │ webhook POST (HTTP) ▼ ┌──────────────────────────────────────────────────────────────┐ │ AWS EC2 — Detection Sensor (Ubuntu 24.04) │ │ ┌────────────────────────────────────────────────────────┐ │ │ │ Flask webhook listener (systemd, port 5000) │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ update.sh — validates → reloads → verifies │ │ │ │ │ │ │ │ │ ┌──────────┴──────────┐ │ │ │ │ ▼ ▼ │ │ │ │ Suricata 8 (NDR) Wazuh 4.x (SIEM) │ │ │ │ ├ ET ruleset ├ Manager (rule engine) │ │ │ │ └ Custom rules ──────┤ Indexer (OpenSearch) │ │ │ │ (symlinked from ├ Dashboard │ │ │ │ this repo) └ Correlation rules │ │ │ │ (symlinked from this repo) │ │ │ └────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────┘ ``` **攻击模拟流程(测试通道):** ``` Mac (attacker) → NGINX reverse proxy → Suricata (inline IDS/IPS) │ └─► eve.json │ ▼ Wazuh Manager (correlation) ``` 在 Suricata 和受保护的演示目标之间部署了一个跨账户的 WAF(NGINX), 能够全面监控网络层和边缘层的攻击流量。 ## 🚀 部署流水线(实时) 当代码被推送到 `main` 分支时: 1. **GitHub** 会向 AWS EC2(端口 5000)发送 webhook POST 请求 2. **Flask 监听器**([`scripts/webhook.py`](scripts/webhook.py),systemd 服务)接收该事件 3. **[`scripts/update.sh`](scripts/update.sh)** 负责编排部署过程: git pull origin main # 拉取最新的规则 suricata -T -c /etc/suricata/suricata.yaml # 验证关卡 systemctl reload suricata # 应用规则 systemctl restart wazuh-manager # 重启 SIEM systemctl is-active --quiet wazuh-manager # 健康检查 4. 如果任何一个关卡失败,**部署就会中止** —— 有问题的规则永远不会进入生产环境 **端到端延迟:** GitHub push 到生产环境部署完成 **不到 10 秒**。 ## 📁 代码库结构 ``` threat-detections/ ├── suricata/ │ └── rules/ Custom Suricata detection rules │ ├── local.rules Primary custom ruleset (IDS) │ └── ips-http-drop.rules IPS drop rules │ ├── Wazuh/ │ └── rules/ Custom Wazuh correlation rules │ └── local_rules.xml SIEM correlation & MITRE mapping │ ├── scripts/ Automation │ ├── update.sh Deployment orchestration │ ├── webhook.py Flask webhook listener │ └── stg-main-deployment.sh Staging → Main promotion helper │ ├── tests/ Validation & PCAP regression ├── docs/ Architecture & detection documentation ├── LICENSE └── README.md ``` ## 🌳 分支策略 采用生产级别的分支晋升模型: | 分支 | 用途 | 部署方式 | |-----------|-----------------------------------|--------------| | `dev` | 日常规则开发与测试 | 手动 | | `staging` | 生产环境前的验证 | 手动 | | `main` | 生产环境部署 | ✅ 自动化 | ### 晋升流程 ``` dev ──► staging ──► main │ │ │ │ │ └──► Webhook → AWS sensor (auto-deploy) │ └──► Manual promotion via stg-main-deployment.sh └──► Local development & rule regression testing ``` ## 🔐 检测工程规范 这里采用的规范与日常在生产环境 WAF 运维中使用的规范相同: ### Suricata 规则 - **自定义 SID 范围:** `1000000 – 1999999` - **验证:** 每一条规则在晋升到 `main` 分支前都必须通过 `suricata -T` 测试 - **文档说明:** 每条规则都包含 `msg`、`classtype`、`metadata` 和 `reference:` 字段 - **MITRE 映射:** 所有自定义规则都标记有 `mitre_technique_id` - **性能优化:** 使用粘滞缓冲区 (Sticky buffers) + `fast_pattern` 实现低成本的前置过滤匹配 ### Wazuh 规则 - **规则 ID 范围:** `100000 – 119999` - **分层结构:** - **第一层:** 镜像带有 MITRE 标签的单个 Suricata 告警 - **第二层:** 多事件关联(例如:同一个源在 5 分钟内发生 5 次 SQLi = 严重) - **第三层:** 多源关联(Suricata + 身份验证日志 + FIM) - **严重性:** 标准化的 0–16 级别映射 - **MITRE 映射:** 每条规则包含 `T1190` ## ⚙️ 部署组件 | 组件 | 实现方式 | |---------------------|------------------------------------------------------------| | 代码库 | GitHub | | Webhook 监听器 | Python 3 + Flask,端口 5000 | | 部署脚本 | Bash (`update.sh`),采用 `set -e` 严格模式 | | 服务管理 | systemd(`threat-webhook.service`,自动重启) | | 验证引擎 | Suricata 内置的配置测试(`-T` 标志) | | 权限模型 | 受限的 sudoers —— webhook 只能运行预先批准的命令 | | 检测引擎 | Suricata 8 (NDR) + Wazuh 4.x (SIEM) | | 基础设施 | AWS EC2 (Ubuntu 24.04, c7i-flex.large, gp3 EBS) | ## 🛡️ 安全控制措施 - ✅ 重载前进行 **Suricata 预验证** —— 有问题的配置无法进入生产环境 - ✅ **Wazuh 重启 + 健康状态验证** —— 能够检测到静默失败 - ✅ **systemd 自动重启** —— webhook 监听器可在崩溃后恢复 - ✅ **基于分支的部署** —— 只有 `main` 分支会触发生产部署 - ✅ **受限的 sudoers** —— webhook 仅执行特定的预先批准的命令 ## 🧪 测试方法 ### Suricata ``` # 验证规则语法 (deployment gate) sudo suricata -T -c /etc/suricata/suricata.yaml # 通过 ruleset 回放 PCAP (regression test) sudo suricata -r tests/pcaps/.pcap \ -S suricata/rules/local.rules \ -l /tmp/out/ -k none # 实时跟踪告警 sudo tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="alert")' ``` ### Wazuh ``` # 交互式规则测试 sudo /var/ossec/bin/wazuh-logtest # 服务健康状态 sudo systemctl status wazuh-manager wazuh-indexer wazuh-dashboard # 告警检查 sudo tail -f /var/ossec/logs/alerts/alerts.log ``` ## 📊 MITRE ATT&CK 覆盖范围 检测内容涵盖了多种战术: | 战术 | 针对的技术 | |-------------------------------|-----------------------------------------| | TA0043 侦察 | T1595 (主动扫描) | | TA0001 初始访问 | T1190 (利用面向公众的应用) | | TA0002 执行 | T1059 (命令和脚本解释器) | | TA0005 防御规避 | 编码/走私绕过检测 | | TA0006 凭证访问 | T1110 (暴力破解), T1552 (IMDS 滥用) | | TA0007 发现 | T1083 (文件和目录发现) | | TA0011 命令与控制 | T1071 (应用层协议) | ## 🔍 故障排除 ``` # Webhook 服务健康状态 sudo systemctl status threat-webhook.service sudo tail -f /var/log/threat-webhook.log # Suricata 状态与日志 sudo systemctl status suricata sudo journalctl -u suricata -n 50 # Wazuh stack sudo systemctl status wazuh-manager wazuh-indexer wazuh-dashboard # 验证 webhook listener 可达性 curl -X POST http://localhost:5000/webhook ``` ## 🎯 展示的核心能力 | 能力 | 代码库中的位置 | |-------------------------------------|-------------------------------------| | 版本控制的检测规则 | 所有规则都在 Git 中跟踪 | | 面向安全的自动化 CI/CD | Webhook → 验证 → 部署 | | 多引擎检测 | Suricata (NDR) + Wazuh (SIEM) | | MITRE ATT&CK 对齐 | 每条规则的 `metadata` 块 | | 应用于 SecOps 的 DevSecOps | 分支晋升 + 安全关卡 | | 生产环境安全控制 | 验证关卡 + 健康检查 | | 基础设施即代码 (IaC) 思维 | systemd 服务定义 | | 检测内容生命周期 | dev → staging → main 晋升流程 | | 误报调优规范 | 规则的迭代优化 | ## 🚀 未来增强计划 - [ ] 部署失败时自动回滚 - [ ] 重复 SID / 规则 ID 的 lint 检查 - [ ] 集成 GitHub Actions CI(合并前验证) - [ ] Sigma → Wazuh 转换流水线 - [ ] CI 中的 PCAP 回归测试套件 - [ ] Webhook 的 HMAC 签名验证 - [ ] 通过 Let's Encrypt + nginx 实现 HTTPS 端点 - [ ] 用于监控部署成功率的 Prometheus 指标 - [ ] 通过 Ansible 进行多传感器部署 ## 👤 作者 **N Pavan Bushan Reddy** Indusface 安全研究工程师 | WAF 与检测专家 | 威胁研究与 BAS 专家 *在威胁检测、WAF 优化以及入侵和攻击模拟 (BAS) 方面拥有 4 年以上经验。通过漏洞研究和安全工具调优开发主动防御措施。负责银行和医疗保健客户的缓解倡议,通过自定义签名和威胁建模将风险降低 99% 以上。* [![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-blue?logo=linkedin)](https://www.linkedin.com/in/n-pavan-bushan-reddy/) [![GitHub](https://img.shields.io/badge/GitHub-Follow-black?logo=github)](https://github.com/npavanbushanreddy) [![Email](https://img.shields.io/badge/Email-Contact-red?logo=gmail)](mailto:npavanbushanreddy1@gmail.com) ### 技能领域 **网络与安全基础设施:** 防火墙、WAF、WAS、WAAP、IDS、IPS、VPN、DNS、OSI、代理、TCP/IP、CDN、负载均衡器、VLAN、密码学基础 **漏洞与合规框架:** OWASP Top 10(Web 与 API)、CVSS、CVE **安全工具:** Burp Suite、Nemecida、Cymulate、Picus、AppTrana WAF/WAS、SqlMap、Wireshark、Nmap、Nuclei、Grafana(SQL 与 Lucene)、OpenSearch、Kibana **检测工程:** ModSec 规则与正则表达式、Suricata、Wazuh、基于异常的检测、误报调优、BAS 测试、零日漏洞虚拟补丁 ### 已发表的安全研究 - 🔍 [**CVE-2024-38856** — Apache OFBiz 认证前 RCE 漏洞](https://www.indusface.com/blog/) - 🔍 [**CVE-2024-4577** — Windows 服务器上的 PHP-CGI RCE 漏洞利用](https://www.indusface.com/blog/) - 🔍 [**CVE-2025-24813** — 正在被积极利用的 Apache Tomcat 漏洞](https://www.indusface.com/blog/) - 🔍 [**Zimbra 跨站脚本漏洞**](https://www.indusface.com/blog/) - 🔍 [**Hotjar OAuth+XSS** — 数百万账户面临接管的极高风险](https://www.indusface.com/blog/) - 🔍 [**利用 PHP 漏洞进行加密货币挖矿**](https://www.indusface.com/blog/) - 🔍 [**Ivanti Endpoint Manager 中的凭证强制**](https://www.indusface.com/blog/) ### 教育背景 - **研究生文凭 — IT 基础设施、系统与安全** | C-DAC E-City Bangalore | 2021年9月 – 2022年5月 | 平均分:73.86% - **工程学士 — 计算机科学与工程** | East Point College of Engineering Technology, VTU University | 2016 – 2020 ### 认证证书 - 网络安全简介 — SkillUp Online(证书 ID:3432878) - 网络安全简介 — Cisco - 网络基础 — Cisco ## 📜 许可证 [MIT 许可证](LICENSE) — 详情请参阅 LICENSE 文件。
标签:Detection-as-Code, DevSecOps, Metaprompt, Suricata, Wazuh, 上游代理, 应用安全, 现代安全运营, 负责任AI, 逆向工具