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报告查看器, 内容过滤, 安全实验环境, 安全防御评估, 版权保护, 网络安全, 请求拦截, 越狱测试, 逆向工具, 隐私保护