jachetti/container-security-training

GitHub: jachetti/container-security-training

面向CrowdStrike销售工程师的容器安全交互式培训平台,通过17个真实攻击场景演示容器威胁并展示Falcon检测能力。

Stars: 0 | Forks: 0

# 容器安全培训 Web 应用 交互式容器化 Web 应用程序,用于教授 CrowdStrike 销售工程师关于容器安全、攻击技术和 Falcon 传感器检测的知识。 ## 架构 - **Backend**: FastAPI (Python 3.11) - **Database**: SQLite,包含 40 个独特的 Falcon 检测 + 17 个攻击场景 - **Container Orchestration**: 用于安全执行攻击场景的 Docker SDK - **Frontend**: React + TypeScript (待实现) - **Deployment**: Docker Compose ## 功能 ### 17 个交互式攻击场景 **核心技术(11 个场景):** 1. 容器逃逸 2. 反向 Shell 与 C2 (Python) 3. 网络侦察 4. 凭证窃取 5. 恶意软件下载 6. Rootkit 安装 7. DNS 数据渗出 8. 数据收集 9. 持久化机制 10. 命令混淆 11. 基于情报的威胁 **Kill Chain 场景(6 个场景):** 12. 完整攻击 Kill Chain 13. 容器突破路径 14. 加密货币挖矿 15. 供应链攻击 16. 横向移动 17. 云元数据滥用 ### API 端点 - `GET /api/scenarios` - 列出所有场景 - `GET /api/scenarios/{id}` - 获取场景详情及步骤 - `GET /api/learning-paths` - 获取精选学习路径 - `POST /api/containers/create` - 创建场景容器 - `POST /api/containers/execute` - 执行攻击命令 - `WS /api/ws/execution/{session_id}` - 实时输出流 - `GET /api/detections` - 浏览 40 个独特的参考检测 ## 快速开始 ### 前置条件 - **Docker** 20.10+ 及 Docker Compose - **Linux 主机**(推荐)或带有 Docker Desktop 的 macOS - 至少 1GB RAM 可用于 Docker - 端口 8000 可用 ### 安装 1. **克隆或导航到项目目录**: ``` cd /path/to/ContainerStoryApp ``` 2. **构建并启动服务**: ``` docker-compose up --build ``` 3. **初始化数据库**(仅首次): ``` docker-compose exec webapp python app/db/init_db.py ``` 4. **访问应用程序**: - API: http://localhost:8000 - API 文档: http://localhost:8000/api/docs - 健康检查: http://localhost:8000/health ### 验证安装 ``` # 检查所有服务是否正在运行 docker-compose ps # 测试 API curl http://localhost:8000/api/scenarios # 查看日志 docker-compose logs -f webapp ``` ## 使用方法 ### API 示例 **列出所有场景**: ``` curl http://localhost:8000/api/scenarios | jq ``` **获取场景详情**: ``` curl http://localhost:8000/api/scenarios/container-escape-nsenter | jq ``` **为场景创建容器**: ``` curl -X POST http://localhost:8000/api/containers/create \ -H "Content-Type: application/json" \ -d '{"scenario_id": "container-escape-nsenter"}' | jq ``` **执行命令**: ``` curl -X POST http://localhost:8000/api/containers/execute \ -H "Content-Type: application/json" \ -d '{ "container_id": "abc123...", "command": "whoami", "scenario_id": "container-escape-nsenter", "step_number": 1 }' | jq ``` **浏览检测数据库**: ``` curl "http://localhost:8000/api/detections?severity=Critical&limit=10" | jq ``` ### WebSocket 实时执行 ``` const ws = new WebSocket('ws://localhost:8000/api/ws/execution/session-123'); ws.onopen = () => { ws.send(JSON.stringify({ action: 'execute', container_id: 'abc123...', command: 'whoami' })); }; ws.onmessage = (event) => { const data = JSON.parse(event.data); console.log(data.type, data.data); }; ``` ## 开发 ### 项目结构 ``` ContainerStoryApp/ ├── backend/ │ ├── app/ │ │ ├── main.py # FastAPI application │ │ ├── api/ │ │ │ ├── scenarios.py # Scenario endpoints │ │ │ ├── containers.py # Execution endpoints │ │ │ └── detections.py # Detection data endpoints │ │ ├── models/ │ │ │ ├── scenario.py # Database models │ │ │ └── detection.py │ │ ├── services/ │ │ │ ├── container_runner.py # Docker orchestration │ │ │ └── falcon_client.py # Falcon integration │ │ └── db/ │ │ ├── database.py # SQLite connection │ │ └── init_db.py # Data import script │ ├── Dockerfile │ └── requirements.txt │ ├── scenarios/ │ ├── definitions/ # 17 YAML scenario files │ └── dockerfiles/ │ └── vulnerable-base/ # Base container image │ ├── detections/ │ └── reference_detections.yaml # 40 unique detections │ ├── docker-compose.yml ``` ### 运行测试 ``` # 运行后端测试 docker-compose exec webapp pytest # 检查数据库 docker-compose exec webapp python -c "from app.db.database import SessionLocal; from app.models.detection import Detection; db = SessionLocal(); print(f'Detections: {db.query(Detection).count()}')" ``` ### 清理 ``` # 停止所有服务 docker-compose down # 移除 volumes 和 containers docker-compose down -v # 清理场景 containers docker ps -a --filter "label=app=container-security-training" -q | xargs docker rm -f ``` ## 安全注意事项 ⚠️ **重要**:此应用程序在容器中执行真实的攻击命令 - **网络隔离**:场景容器在隔离的 Docker 网络中运行 - **资源限制**:CPU/内存限制可防止资源耗尽 - **超时**:所有命令都有执行超时 - **无特权模式**:仅在明确需要时才使用特权容器 - **Docker Socket 访问**:Web 应用需要 Docker socket 访问权限以管理容器 ### 推荐部署方式 - 在专用 Linux 主机或 VM 上运行 - 请勿暴露于公共互联网 - 仅使用内部网络 - 实施身份验证(MVP 中未包含) - 监控资源使用情况 - 定期清理容器 ## Falcon 传感器集成 该应用程序包含 CrowdStrike Falcon 集成的占位符: **启用实时 Falcon 检测**: 1. 将 Falcon API 凭证添加到环境: ``` # docker-compose.yml environment: - FALCON_CLIENT_ID=your_client_id - FALCON_CLIENT_SECRET=your_client_secret ``` 2. 在 `backend/app/services/falcon_client.py` 中实现 Falcon API 调用 3. 在 Docker 主机上配置 Falcon 传感器 4. 检测将与执行的场景相关联 **检测关联**: - 每个场景步骤都指定了预期的 Falcon 检测 - API 在命令执行后检查匹配的检测 - 通过 WebSocket 进行实时检测流传输(启用时) ## 故障排除 ### Docker 权限问题 ``` # 将用户添加到 docker 组 sudo usermod -aG docker $USER newgrp docker ``` ### 容器无法启动 ``` # 检查日志 docker-compose logs webapp # 重新构建 docker-compose build --no-cache webapp docker-compose up webapp ``` ### 数据库问题 ``` # 重新初始化数据库 docker-compose exec webapp rm -f app/db/data/container_security.db docker-compose exec webapp python app/db/init_db.py ``` ### 端口已被占用 ``` # 在 docker-compose.yml 中更改端口 ports: - "8080:8000" # Use 8080 instead of 8000 ``` ## 路线图 - [ ] 带有终端模拟器的 React 前端 - [ ] 用户身份验证和会话管理 - [ ] 进度跟踪和评分 - [ ] 实时 Falcon API 集成 - [ ] 更多场景(Kubernetes、Docker API 滥用) - [ ] 检测分析和修复指导 - [ ] 导出报告 - [ ] 多租户支持 ## 许可证 内部 CrowdStrike 培训工具 - 不得对外分发。 ## 支持 如有问题或疑问,请联系安全工程团队。 ## 致谢 基于 40 个精心策划的独特 Falcon 容器检测构建,以提供真实的培训场景。
标签:AMSI绕过, AV绕过, Cloudflare, CrowdStrike Falcon, DAST, DNS 反向解析, Docker Compose, Docker SDK, Docker 容器, FastAPI, HTTP工具, IP 地址批量处理, MITRE ATT&CK, PE 加载器, Python, React, SQLite, Syscalls, TypeScript, Web截图, 云元数据滥用, 供应链攻击, 反向Shell, 命令与控制, 威胁检测, 子域名突变, 安全意识教育, 安全插件, 安全攻防演练, 容器安全, 容器逃逸, 密码管理, 恶意软件分析, 无后门, 横向移动, 漏洞修复, 漏洞利用演示, 版权保护, 编程规范, 网络信息收集, 网络安全培训, 请求拦截, 逆向工具, 销售工程师培训, 靶场平台