mrflippermen/siem-attack-lab
GitHub: mrflippermen/siem-attack-lab
一个 Docker 化的安全教育实验室,集成了漏洞靶机、ELK SIEM 检测平台和 Kali 攻击机,用于练习完整 Web 攻击链与实时日志取证分析。
Stars: 0 | Forks: 0
# 🛡️ 实验室:Web 漏洞环境 + SIEM (ELK) + 攻击机
这是一个 **100% Docker 化** 的环境,旨在通过实时日志分析来练习检测 Web 攻击。
它结合了一个带有漏洞的靶机、一条完整的 **CTF 攻击链**(SQLi → LFI → 文件上传 → RCE → flag)、一个具备自动封禁和反 AI 陷阱的微型 WAF、作为 SIEM 的 ELK stack,以及一台预装了进攻性工具的攻击机。
### 🎯 CTF 挑战(漏洞利用链)
靶机在 `web` 容器中隐藏了 **两个 flag**:一个 **USER**(在进入管理员面板时获得)和一个 **ROOT**(只能通过 RCE 获得)。要获取它们,你需要将多个步骤串联起来——详情请参阅 **[`docs/07-ctf-rce-chain.md`](docs/07-ctf-rce-chain.md)**:
1. **绕过 WAF 的 SQLi** (`/**/` + `#`) → 获取凭据 / PII / API keys。
2. **LFI `php://filter`** → 泄露硬编码的 `UPLOAD_TOKEN`。
3. **Auth bypass** (`admin'#`) → 获取管理员会话 → 🟡 **FLAG USER**。
4. **复杂的文件上传** → polyglot `GIF89a` + `.phtml` = **webshell** (www-data)。
5. 利用 **CVE-2025-32463**(sudo chroot LPE)实现 **Privesc 到 root** → 读取 `/root/root.txt` → 🔴 **FLAG ROOT**。
**包含的防御机制:**
- 🛡️ **acme-shield** — 微型 WAF(可绕过的黑名单)+ **自动封禁**(每个 IP 发起 10 次攻击 → **10 分钟内返回 403**,如果该 IP 屡犯则 **封禁 30 分钟**)+ **行为检测**:快速连续爆发、连续的复杂请求和枚举模式(bot/agente 行为)→ **封锁 3 分钟**,迫使其“多绕些弯路”。
- 🤖 **反 AI / 反 Agent 层(隐蔽运行)** — 不会自爆身份(没有所谓的 "honeypot"):伪装成 crawler 政策,并利用 *"validated review"* 框架在 HTTP headers、JSON-LD、不可见文本/zero-width、`llms.txt`/`ai.txt`/`sitemap`/`security.txt`、端点以及诱饵文件(`admin.php`, `api.php`, `/flag.txt`, `backup/config.php.bak`)中填满**看似真实的假 flag**和一个**虚假的上传 token**。目的:诱导 Agent(Claude Code / opencode / Cursor / Cline / Aider)上报虚假的 flag。
- 🔎 **SOC** 会检测整个攻击链:标签包括 `admin_area`, `webshell`, `rce`, `waf_block`, `ip_banned`, `ai_bait` 以及一条 *attack burst ≥10* 的规则。
## 🧱 架构
```
lab-net (bridge, aislada)
┌──────────┐ HTTP ┌──────────────┐ SQL ┌──────────┐
│ attacker │ ───────▶ │ web │ ───────▶ │ db │
│ (kali) │ │ Apache+PHP │ │ MySQL 8 │
└──────────┘ │ :80 (→8080) │ └──────────┘
└──────┬───────┘
│ access.log / error.log
▼ (volumen COMPARTIDO 'weblogs')
┌──────────────┐
│ filebeat │ lee el log en tiempo real
└──────┬───────┘
▼ :5044
┌──────────────┐ grok + detección de escáneres,
│ logstash │ firmas SQLi/LFI, geoip, user-agent
└──────┬───────┘
▼ :9200
┌──────────────┐ ┌──────────────┐
│elasticsearch │ ◀──▶ │ kibana │ :5601
└──────────────┘ │ Dashboards │
└──────────────┘
```
| 服务 | 角色 | 宿主端口 |
|-----------------|--------------------------------------|-------------|
| `web` | 漏洞靶机 (Apache + PHP) | 8080 |
| `db` | 包含待窃取凭据的 MySQL | — |
| `elasticsearch` | SIEM 存储端 | 9200 |
| `logstash` | 将原始 log 解析为结构化数据 | 5044 |
| `filebeat` | 从共享卷中采集 log | — |
| `kibana` | 可视化 / dashboards | 5601 |
| `attacker` | nmap, sqlmap, nikto, gobuster, hydra | — |
## ✅ 前置条件
你只需要一台拥有 **~4 GB 空闲内存** 并安装了 `git` 的 Linux 机器。
`Makefile` 会自动检测是否缺少 Docker、Compose、`make` 或 `python3`,并在无需人工干预的情况下进行安装——支持 **Debian、Ubuntu、Kali、Parrot、Fedora、RHEL、CentOS、Arch、openSUSE、Alpine**(以及任何支持使用 Docker 官方脚本作为后备的发行版)。
```
make check # si falta algo, lo instala solo
```
## 🚀 启动(只需一条命令)
```
git clone https://github.com/mrflippermen/siem-attack-lab.git
cd siem-attack-lab
cp .env.example .env # (opcional: ajusta las contraseñas; make lo crea solo si falta)
make soc # check → host (sysctl) → up --build → provision ← todo en uno
```
如果你是第一次运行且尚未安装 Docker,`make soc` 会检测到这一点,**自动安装 Docker + Compose + make + python3**,启动 daemon,使用 `sg docker` 调整权限,然后无需你做任何操作即可继续。
**首次运行** 需要几分钟时间(下载 ELK 和 Kali 镜像并构建靶机环境)。`make soc` 会完成所有准备工作:启动容器、应用 index template、导入 data views + saved searches + dashboard,并激活 **7 条检测规则**。
- **漏洞靶机** → http://localhost:8080
- **Kibana** → http://localhost:5601 (等待约 1 分钟加载)
等效的手动操作(`make soc` 内部实际执行的步骤):
```
sudo sysctl -w vm.max_map_count=262144
docker compose up -d --build
python3 soc/provision.py
```
## 🎯 完整测试(一条命令)
```
make test
```
启动 SOC,生成后台正常流量,发起 3 阶段攻击,等待规则进行评估,并显示事件计数和告警 feed。如果仅想发起攻击:运行 `make attack`。查看告警:运行 `make alerts`。
## 🛠️ Makefile 命令
| 命令 | 动作 |
|---------|--------|
| `make check` | 检查 Docker 和 Compose 是否就绪(如果缺少则自动安装) |
| `make install` | 在任何发行版上安装 Docker + Compose + make + python3 |
| `make soc` | check + host + up + provision(完整 pipeline) |
| `make test` | 自动化端到端测试 |
| `make attack` | 发起 3 阶段攻击 |
| `make alerts` | 显示 SOC 的告警 feed |
| `make status` | cluster 健康状态 + suspicious 事件计数 |
| `make dashboard` | (重新)生成并导入 Kibana dashboard |
| `make web` | 在浏览器中打开漏洞网站 |
| `make open` | 在浏览器中打开 Kibana |
| `make logs` | 跟踪 logstash/filebeat 的日志 |
| `make provision` | 重新应用模板、data views 和规则(幂等操作) |
| `make down` | 停止运行(保留数据) |
| `make clean` | 停止运行并删除卷 |
## 📊 Kibana
`make soc` 已经将 Kibana **自动配置完毕**:`weblogs-*` data view、分析师使用的 saved searches 以及 **"SOC — Web Attack Monitoring"** dashboard 都会自动导入。你只需打开 http://localhost:5601 然后:
1. 菜单 ☰ → **Analytics → Dashboard** → **"SOC — Web Attack Monitoring"**。
2. 或者选择 **Analytics → Discover**,使用 `weblogs-*` data view 来探索事件。
### 可直接使用的 KQL 过滤器
```
tags : "scanner_ua" # peticiones de sqlmap/nikto/nmap...
tags : "sqli_pattern" # firmas de inyección SQL
tags : "lfi_pattern" # path traversal / LFI
response >= 500 # errores que delatan inyección
response : 404 # ráfagas de fuerza bruta de dirs
clientip : "172.22.0.5" # rastrear una IP de origen concreta
ua.name : "Other" and tags : "suspicious"
```
## 🩺 故障排除
| 症状 | 原因 / 解决方案 |
|---------|------------------|
| `make: docker: No such file or directory` (Error 127) | 未安装 Docker。`make check` 会自动安装,或者运行 `make install`。 |
| `Cannot connect to the Docker daemon` | 服务未运行或缺少权限。`make check` 会使用 `sg docker` 自动解决。如果仍然存在:执行 `sudo systemctl enable --now docker`。 |
| 使用 docker 时提示 `Permission denied` | Makefile 会自动使用 `sg docker` 处理。如果手动执行命令:执行 `sudo usermod -aG docker $USER && newgrp docker`。 |
| Kibana 无法加载 (5601) | 运行 `make soc` 后需要约 1 分钟启动。请查看 `docker compose logs -f kibana`。 |
| Kibana 中没有显示事件 | 请先生成流量/发起攻击(`make attack`),并将时间范围设置为 *Last 15 minutes*。 |
| 端口 8080/5601/9200 被占用 | 更改 `docker-compose.yml` 中的端口映射,或释放被占用的端口。 |
| 从头开始 | 执行 `make clean`(删除数据),然后运行 `make soc`。 |
## 🧹 清理
```
make clean # = docker compose down -v (borra también los datos de ES)
```
## 📚 文档
| 章节 | 文件 |
|----------|---------|
| 1. 基础设施 | `docs/01-infraestructura.md` |
| 2. 攻击向量 | `docs/02-vector-de-ataque.md` |
| 3. 取证分析 (Kibana) | `docs/03-analisis-forense.md` |
| 4. 结论 | `docs/04-conclusion.md` |
| 5. SOC:检测与告警 | `docs/05-soc-alerting.md` |
| 6. 截图分步指南 | `docs/06-guia-capturas.md` |
| 7. CTF 挑战:SQLi→LFI→Upload→RCE→Flag | `docs/07-ctf-rce-chain.md` |
标签:CISA项目, Docker, ffuf, HTTP工具, WAF, Web报告查看器, 内容过滤, 安全实验环境, 安全防御评估, 版权保护, 网络安全, 请求拦截, 越狱测试, 逆向工具, 隐私保护