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, 命令与控制, 威胁检测, 子域名突变, 安全意识教育, 安全插件, 安全攻防演练, 容器安全, 容器逃逸, 密码管理, 恶意软件分析, 无后门, 横向移动, 漏洞修复, 漏洞利用演示, 版权保护, 编程规范, 网络信息收集, 网络安全培训, 请求拦截, 逆向工具, 销售工程师培训, 靶场平台