topcug/kubernetes-sigma-soc-detection-lab
GitHub: topcug/kubernetes-sigma-soc-detection-lab
一个结合Kubernetes可观测性工具与Sigma规则,用于学习SQL注入漏洞利用与高级检测工程(Detection as Code)的完整实战靶场。
Stars: 1 | Forks: 0
# Kubernetes SQL 注入检测实验
[](https://github.com/topcug/kubernetes-sigma-soc-detection-lab/actions/workflows/ci.yml)

一个用于学习 SQL 注入利用、Kubernetes 可观测性以及检测即代码的完整实践实验。
本仓库配套了由三部分组成的博客系列文章,从一个包含漏洞的 PHP/MySQL 实验开始,将攻击面转移到运行 OWASP Juice Shop 的 Kubernetes 中,最后以可移植的 Sigma 规则结束,这些规则可以编译为 Loki、Elasticsearch 和 Splunk 查询。

## 您将构建的内容
在本次实验结束时,您将拥有:
- 一个用于测试 SQL 注入技术的包含漏洞的 PHP/MySQL 应用程序
- 在 Minikube 上运行作为真实目标应用程序的 OWASP Juice Shop
- 收集系统调用级别容器活动的 Falco
- 解析 HTTP 流量并检测 SQL 注入负载的 Zeek
- 将遥测数据转发到 Loki 的 Fluent Bit
- 用于调查的 Grafana 仪表板和查询
- 可转换为特定后端查询的 Sigma 检测规则
- 用于验证恶意和良性流量的回归测试负载

## 实验架构
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Juice Shop │ │ Zeek │ │ Falco │
│ (Target App) │────│ (Network Mon.) │ │ (Syscall Mon.) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌─────────────────┐
│ Fluent Bit │
│ (Log Collector) │
└─────────────────┘
│
┌─────────────────┐
│ Loki │
│ (Log Storage) │
└─────────────────┘
│
┌─────────────────┐
│ Grafana │
│ (Visualization) │
└─────────────────┘
```
## 前置条件
* Docker
* Minikube 或其他 Kubernetes 集群
* kubectl
* Helm 3.x
* curl
* Python 3.8+ 及 pip
## 学习路径
如果您想了解本实验背后的概念、方法和原理,请先阅读完整的系列文章。
1. [时间、错误与联合:实用的 SQL 注入利用与检测](https://topcug.clarifyintel.com/posts/sql-injection-practical-guide/):构建一个受控的 PHP/MySQL SQL 注入实验室,并测试身份验证绕过、基于 UNION 的提取、基于错误的泄露、基于布尔值的推断以及基于时间的盲注枚举。
2. [在 Kubernetes 上构建随时可检测的 SOC 实验室](https://topcug.clarifyintel.com/posts/soc-detection-lab-kubernetes/):在 Minikube 上部署 OWASP Juice Shop,并使用 Falco、Zeek、Fluent Bit、Loki 和 Grafana 构建可观测的检测流水线。
3. [在 Kubernetes 上使用 Sigma 进行 SQL 注入检测](https://topcug.clarifyintel.com/posts/sql-injection-detection-sigma-kubernetes/):将经过实验室测试的检测逻辑转换为可移植的 Sigma 规则,并将其编译为 Loki、Elasticsearch 和 Splunk 查询。
## 涵盖的攻击技术
* 使用 `OR 1=1` 重言式进行身份验证绕过
* 基于注入的 UNION 跨表提取数据
* 利用 MySQL 错误输出进行基于错误的注入
* 通过真/假响应行为进行布尔盲注
* 使用延迟的数据库响应进行基于时间的盲注
* URL 编码的负载变体
* 使用 `--`、`#` 和内联 SQL 注释进行基于注释的混淆
## 检测范围
* 使用 Zeek HTTP 解析进行网络级别的检测
* 使用 Falco 系统调用监控进行运行时检测
* 使用 Fluent Bit 进行集中式日志收集
* 使用 Loki 和 Grafana 进行日志存储和调查
* 用于独立于后端的检测逻辑的 Sigma 规则
* 为 Loki、Elasticsearch 和 Splunk 生成查询
* 使用已知的恶意和良性负载进行回归测试
* 为分析师提供上下文的 MITRE ATT&CK 映射
## 仓库内容
* `juice-shop.yaml` - OWASP Juice Shop 的 Kubernetes 清单
* `zeek-daemonset.yaml` - 用于网络检查的 Zeek 部署
* `detect-sqli.zeek` - 用于 SQL 注入检测的 Zeek 脚本
* `falco-values.yaml` - 用于系统调用监控的 Falco Helm 值
* `fluent-bit.yaml` - 用于日志转发的 Fluent Bit 配置
* `parsers-conf` - Zeek 日志格式的解析器配置
* `sigma-sqli-detection-pipeline.yaml` - 用于 SQL 注入检测的 Sigma 规则
* `requirements.txt` - Sigma 工具的 Python 依赖项
* `tests/` - 测试资产和验证辅助工具
* `sqli.pcap` - 用于流量分析的示例数据包捕获
## 快速开始
克隆仓库:
```
git clone https://github.com/topcug/kubernetes-sigma-soc-detection-lab.git
cd kubernetes-sigma-soc-detection-lab
```
启动 Minikube:
```
minikube start
```
部署 Juice Shop:
```
kubectl apply -f juice-shop.yaml
kubectl get pods,svc
```
部署 Zeek:
```
kubectl create configmap zeek-scripts --from-file=detect-sqli.zeek
kubectl apply -f zeek-daemonset.yaml
```
安装 Falco:
```
helm repo add falcosecurity https://falcosecurity.github.io/charts
helm repo update
helm install falco falcosecurity/falco --values falco-values.yaml
```
按照第二部分演练中的说明安装 Fluent Bit 和 Loki/Grafana。
## 测试 SQL 注入负载
向 Juice Shop 发送基本的重言式负载:
```
curl "http://$(minikube ip):30602/rest/products/search?q=test%27%20OR%201=1--"
```
通过 Loki 在 Grafana 中查询 Zeek 的检测结果:
```
{job="default/zeek"} |~ "DETECTED SQLi"
```
或者使用第三部分中更广泛的 Sigma 生成的 LogQL 模式,来检测原始、编码、基于 UNION 和注释混淆的变体。
## Sigma 工作流
安装所需的 Sigma 工具:
```
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
将 Sigma 规则转换为 Loki:
```
sigma convert -t loki sigma-sqli-detection-pipeline.yaml
```
使用 ECS Zeek 流水线转换为 Elasticsearch/Lucene:
```
pip install pysigma-backend-elasticsearch
sigma list pipelines lucene
sigma convert -t lucene -p ecs_zeek_beats sigma-sqli-detection-pipeline.yaml
```
目标是保留一条检测规则作为事实来源,并从中生成特定于后端的查询。
## 验证工作流
在信任该规则之前,使用恶意和良性负载集对其进行验证。
* 恶意负载应触发检测。
* 良性搜索词应保持静默。
* 误报应在 Sigma YAML 中修复,然后重新编译。
* 每次规则更改都应像代码一样经过审查、版本控制和测试。
这为您提供了一种可重复的“检测即代码”工作流,而不是一次性的仪表板查询。
## 相关博客文章
这些文章不属于 SQL 注入系列,但它们解释了 Kubernetes 网络概念,有助于在分析 Pod 流量和数据包可见性时提供思路。
* [Pod 的诞生:veth 对、IPAM 和容器网络](https://topcug.clarifyintel.com/posts/pod-birth-veth-pairs-ipam/)
* [深入 Pod 间网络:Kindnet 中的节点内流量](https://topcug.clarifyintel.com/posts/intra-node-pod-traffic/)
* [Kubernetes 中的原子 ConfigMap 更新](https://topcug.clarifyintel.com/posts/kubernetes-configmap-atomic-updates/)
* [轻松实现金丝雀部署:使用 GitHub Actions 和 Argo CD Rollouts 的 CI/CD 之旅](https://topcug.clarifyintel.com/posts/canary-deployments-cicd-gitops/)
## 检测方法
* Zeek 检测 HTTP URI 和正文数据中的 SQL 注入模式。
* Falco 捕获容器内可疑的运行时活动。
* Fluent Bit 规范化并转发日志。
* Loki 存储日志以便快速调查。
* Grafana 提供面向分析师的查询和仪表板。
* Sigma 保持检测逻辑可跨平台移植。
## 贡献
发现了问题、误报、损坏的部署步骤或额外的攻击向量?欢迎提交 issue 或 pull request。
本实验旨在作为 SQL 注入检测、Kubernetes 遥测和检测即代码工作流的实用培训资源。
## 资源
* [OWASP SQL 注入](https://owasp.org/www-community/attacks/SQL_Injection)
* [OWASP Juice Shop](https://owasp.org/www-project-juice-shop/)
* [Sigma](https://sigmahq.io/)
* [Zeek](https://zeek.org/)
* [Falco](https://falco.org/)
* [Fluent Bit](https://fluentbit.io/)
* [Grafana Loki](https://grafana.com/oss/loki/)
## 许可证
MIT 许可证。使用本实验室进行培训、研究、编写检测规则或构建您自己的 Kubernetes 安全实验室。
标签:AMSI绕过, Chrome Headless, CISA项目, DevSecOps, Elasticsearch, Falco, Fluent Bit, Grafana, Kubernetes安全, Loki, Minikube, OpenVAS, OWASP Juice Shop, PHP, Rootkit, Sigma规则, SOC实验室, Web安全, Web截图, Zeek, 上游代理, 代码即检测, 威胁检测, 子域名突变, 安全实验靶场, 安全运营, 容器安全, 扫描框架, 攻击模拟, 敏感词过滤, 目标导入, 网络安全, 蓝队分析, 请求拦截, 逆向工具, 隐私保护, 驱动签名利用