AbdelazezMohamedAzez/cloud-threat-detection
GitHub: AbdelazezMohamedAzez/cloud-threat-detection
一个基于机器学习的 AWS 云威胁检测项目,利用行为异常分析与人本化告警降低日志调查负担。
Stars: 0 | Forks: 0
# 基于机器学习的 AWS 行为云威胁检测






一个云安全与机器学习项目,用于分析 AWS CloudTrail 日志以检测异常行为、生成精细化的人本化告警,并通过交互式 Streamlit 仪表板可视化可疑活动。
该项目还包含一个 DevSecOps 层,集成了 Docker、GitHub Actions CI/CD、Trivy 安全扫描和 Docker Hub 镜像发布。
## 概述
云环境每天生成大量的审计事件。
尽管这些日志包含有价值的安全信号,但人工审查困难、耗时且不具备可扩展性。
本项目通过构建一个基于行为的异常检测管道来解决这一挑战,将原始半结构化日志数据转换为可供调查的告警,并通过专为云安全分析设计的仪表板呈现结果。
## 仓库范围
本仓库包含该项目的 **运行时 / 组合版本**。
它包括:
- Streamlit 仪表板
- 最终调查输出
- Docker 和 CI/CD 文件
- 文档和安全说明
为了保持仓库轻量并兼容 GitHub 大小限制,原始数据集和中间处理文件未包含在本版本中。
因此,该仓库旨在用于:
- 仪表板执行
- 结果检查
- 基于 Docker 的使用
- CI/CD 演示
它不适用于在没有恢复归档的原始数据和中间数据的情况下重新运行完整的预处理和模型训练管道。
## 关键特性
- AWS CloudTrail 日志预处理与清洗
- 安全与行为特征工程
- 使用 Isolation Forest 进行无监督异常检测
- 人本化告警精炼以减少自动化噪声
- 用于调查与可视化的 Streamlit 仪表板
- Docker 化仪表板部署
- GitHub Actions CI/CD 管道
- Trivy 安全扫描
- Docker Hub 镜像发布
## 数据集
本项目使用 **flaws.cloud CloudTrail 数据集**,这是一个从真实云环境收集的公共 AWS CloudTrail 数据集。
### 主要字段
- `eventTime`
- `eventName`
- `eventSource`
- `sourceIPAddress`
- `awsRegion`
- `userIdentity`
- `mfaAuthenticated`
- `errorCode`
## 方法论
### 1. 预处理
原始 CloudTrail JSON 日志会:
- 展平为表格格式
- 清洗与标准化
- 转换为 CSV 文件以供分析
### 2. 特征工程
使用两类特征。
**安全特征**
- 根活动
- MFA 状态
- AccessDenied 事件
- 源 IP 与区域线索
**行为特征**
- 用户的稀有事件
- 用户的稀有 IP
- 用户的稀有区域
- 不寻常的活动时间
- 用户活动频率模式
### 3. 异常检测
本项目使用 **Isolation Forest**,一种无需标记攻击数据的无监督异常检测模型。
### 4. 告警精炼
应用一层精炼以:
- 减少 AWS 内部自动化噪声
- 区分人类活动与服务生成活动
- 生成更有意义的调查告警
### 5. 可视化
使用 Streamlit 仪表板探索和调查最终的可疑事件。
## 管道
```
Raw CloudTrail Logs
↓
Flattening and Cleaning
↓
Feature Engineering
↓
Baseline Anomaly Detection
↓
Behavior-Based Anomaly Detection
↓
Refined Human-Focused Alert Filtering
↓
Final Investigation Alerts
↓
Streamlit Dashboard
```
## DevSecOps 工作流
```
Source Code
↓
GitHub Repository
↓
GitHub Actions CI/CD
↓
Python Checks
↓
Docker Image Build
↓
Trivy Security Scan
↓
Docker Hub Publish
↓
Run Dashboard from Docker Image
```
## 当前结果
来自精炼管道的最终输出:
- **所有异常:** 24,509
- **人本化告警:** 3,513
- **顶级唯一告警:** 2,414
- **高优先级告警:** 2,366
这些结果代表了经过预处理、异常检测、精炼和过滤后的最终调查就绪输出。
## 截图
### 仪表板概览

### 调查筛选器与图表

### 可疑活动图表

## 仪表板
该仪表板提供:
- 汇总指标
- 用户、事件、区域与告警级别的筛选器
- 顶级可疑用户
- 顶级可疑事件类型
- 顶级可疑源 IP
- 顶级可疑 AWS 区域
- 最终排名的调查告警
其设计旨在使异常检测结果更易于理解,并更有用于云安全调查。
## 架构

更多细节请参见 [docs/architecture.md](docs/architecture.md)。
## 威胁模型
本项目主要用于帮助检测:
- 特权滥用
- 账户妥协指标
- 可疑 API 行为
- 侦察与枚举模式
更多细节请参见 [docs/threat-model.md](docs/threat-model.md)。
## 项目结构
```
cloud-threat-detection/
│
├── app/
│ └── streamlit_app.py
│
├── data/
│ └── final_outputs/
│ ├── final_all_anomalies.csv
│ ├── final_human_alerts.csv
│ └── final_top_alerts.csv
│
├── docs/
│ ├── architecture.md
│ ├── threat-model.md
│ ├── architecture-diagram.png
│ └── images/
│
├── infra/
│ └── docker/
│ └── Dockerfile
│
├── pipelines/
│ ├── run_dashboard.ps1
│ ├── run_dashboard_docker.ps1
│ └── run_finalize_alerts.ps1
│
├── scripts/
│ ├── analysis/
│ ├── modeling/
│ └── preprocessing/
│
├── security/
│ └── security-notes.md
│
├── tests/
│ └── test_dashboard_smoke.py
│
├── .github/
│ └── workflows/
│ └── ci.yml
│
├── .dockerignore
├── .gitignore
├── requirements.txt
└── README.md
```
## 主要组件
### 在本版本中活跃的组件
- `app/streamlit_app.py`
- `infra/docker/Dockerfile`
- `.github/workflows/ci.yml`
- `data/final_outputs/`
### 包含的项目脚本
该仓库还包含原始预处理、建模与分析脚本,位于 `scripts/` 目录中,以确保项目完整性和参考用途。
## 本地设置
### 安装依赖
```
python -m pip install -r requirements.txt
```
### 运行仪表板
```
python -m streamlit run .\app\streamlit_app.py
```
### 使用 Docker 运行
```
docker build -f .\infra\docker\Dockerfile -t cloud-threat-detection-dashboard .
docker run --rm -p 8501:8501 cloud-threat-detection-dashboard
```
### 重要说明
当前仓库版本针对以下内容进行了优化:
- 仪表板执行
- 最终告警检查
- Docker 使用
- CI/CD 演示
完整的预处理、特征工程与模型训练管道需要归档的原始数据和中间数据,这些数据未包含在此轻量级的 GitHub 版本中。
## Docker Hub
### 拉取已发布镜像
```
docker pull abdelazez1/cloud-threat-detection:latest
```
### 直接从 Docker Hub 运行
```
docker run --rm -p 8501:8501 abdelazez1/cloud-threat-detection:latest
```
## CI/CD
GitHub Actions 管道执行以下操作:
- 依赖安装
- Python 烟雾测试
- 最终仪表板数据验证
- Docker 镜像构建
- Trivy 文件系统扫描
- Trivy 镜像扫描
- Docker Hub 镜像发布
这使得项目能够在代码变更后自动构建、扫描并交付。
## 安全扫描
安全检查通过 **Trivy** 集成。
当前扫描包括:
- 文件系统扫描
- 容器镜像扫描
这有助于识别:
- 高危和关键漏洞
- 不安全的依赖项
- 容器相关风险
## 技术栈
- Python
- Pandas
- Scikit-learn
- Streamlit
- AWS CloudTrail
- Isolation Forest
- Docker
- GitHub Actions
- Trivy
- Docker Hub
## 参考
- AWS CloudTrail 文档
- flaws.cloud 公共 CloudTrail 数据集
- Scikit-learn Isolation Forest 文档
- AWS GuardDuty 文档
- 最近的异常检测与日志分析研究
## 后续改进
- 进一步减少误报
- 改善人本活动与服务活动之间的分离
- 添加实时告警
- 将仪表板部署到云环境
- 比较更多异常检测模型
- 扩展 DevSecOps 检查与策略验证
## 结论
本项目展示了如何利用基于行为的异常检测来识别 AWS CloudTrail 日志中的可疑云活动。
通过结合预处理、特征工程、异常检测、告警精炼、仪表板可视化、Docker 容器化、CI/CD 自动化与安全扫描,项目提供了一个实用且可扩展的云威胁检测工作流。
本 GitHub 版本专注于可重现性、仪表板交付与 DevSecOps 集成,而完整的训练流程依赖于归档的大型数据集和中间文件。
标签:AMSI绕过, Apex, AWS, CloudTrail, DevSecOps, Docker, DPI, GitHub Actions, Kubernetes, Mutation, NIDS, SEO, Streamlit, 上游代理, 人机协同, 仪表盘, 可视化, 告警优化, 威胁检测, 安全扫描, 安全防御评估, 审计日志, 容器化, 异常检测, 时序注入, 机器学习, 自动笔记, 行为检测, 访问控制, 请求拦截, 逆向工具