d7meealz/azure-cloud-soc-lab
GitHub: d7meealz/azure-cloud-soc-lab
基于 Azure 构建的紫队云 SOC 实验室,将蜜罐检测、Sentinel 检测工程、Web 渗透测试与 WAF 防御统一到一个安全运营中心。
Stars: 0 | Forks: 0
# 🛡️ Azure Cloud SOC — 紫队实验室




## 📂 仓库结构
```
azure-cloud-soc-lab/
├── diagrams/ → architecture, Red Team/WAF flow, GeoIP attack map
├── kql/ → detection & hunting queries (brute-force, logon, WAF, GeoIP)
├── media/ → demo GIFs (WAF block, firewall logs, Sentinel detection)
├── presentation/ → full project write-up (PDF)
└── README.md
```
## 🎥 演示
### WAF 实时拦截 SQL 注入
针对登录表单的实时 `' OR 1=1 --` 攻击在到达应用之前被 **403 Forbidden** 成功拦截。

### WAF 捕获的真实攻击
查询 `AGWFirewallLogs` 展示了被 OWASP Core Rule Set 拦截的活跃互联网攻击者 —— 包括路径遍历、PHP 注入和 SQL 注入,全部被匹配并拦截。

### Microsoft Sentinel 中触发的暴力破解检测
一个预定的分析规则检测到了 RDP 暴力破解:外部 IP 正在喷洒管理员用户名(一个源在每 10 分钟的窗口内尝试了 12 次以上)。

## 🧭 架构

**蓝队面 — 蜜罐 pipeline:** 互联网攻击者访问暴露的 Windows VM(通过 NSG 暴露的 RDP :3389);其安全事件通过 Log Analytics 工作区流入 Microsoft Sentinel。

**红队面 — Web 应用:** 攻击通过 Burp 路由到保护 OWASP Juice Shop 的 Application Gateway WAF;恶意 payload 在到达应用之前被 **403 Forbidden** 拦截。
两个面都流入**同一个** Log Analytics 工作区和 Microsoft Sentinel — 构建一个统一的 SOC。
## 🔵 蓝队 — 检测与响应
- 部署了一台暴露在互联网上的 Windows 10 蜜罐
- 通过 Azure Monitor Agent (AMA) + Data Collection Rule 将其连接到 Microsoft Sentinel
- 在第一小时内捕获了**真实的 RDP 暴力破解攻击** (EventID 4625)
- 在 VirusTotal 中验证了攻击者 IP,并构建了全球流量的 **GeoIP 攻击地图**
- 设计了经过调优、**映射到 MITRE ATT&CK** 的分析规则,可自动生成事件
- 作为分析师处理事件队列(分类 → 调查 → 归类 → 关闭)
## 🔴 红队 — 进攻测试与 WAF 防御
- 将 OWASP Juice Shop 部署为 Azure Container Instance
- **SQL 注入**身份验证绕过 (`' OR 1=1 --`) → 以 admin 身份登录
- 通过搜索字段进行 **跨站脚本攻击 (XSS)**
- 在其前方放置处于 Prevention 模式的 Azure Application Gateway **WAF (OWASP CRS)**
- 重新运行攻击 → 被 **403 Forbidden** 拦截
- 将 WAF 日志路由到同一个 SOC,并在 `AGWFirewallLogs` 中搜寻攻击
### 🌍 GeoIP 攻击地图
来自失败登录事件的攻击者 IP,通过 GeoIP watchlist (`ipv4_lookup`) 进行丰富,并绘制在世界地图上 —— 直观地证明了针对蜜罐的持续、全球性的自动化攻击。

*计数是每个位置的总失败登录尝试次数(非唯一攻击者);位置反映了 IP 托管地,不一定是攻击者的真实来源。*
## 🔍 检测规则 (KQL)
请参阅 [`kql/`](kql/) 文件夹:
| 规则 | 检测内容 | MITRE |
|------|---------|-------|
| [RDP 暴力破解](kql/failed-logons-bruteforce.kql) | 按源 IP 分组的失败登录 (4625) | T1110.001 |
| [成功登录](kql/successful-logon-detection.kql) | 真实网络/RDP 登录(已调优以排除噪音) | T1078 |
| [GeoIP 攻击地图](kql/attack-map-geoip.kql) | 用位置信息丰富攻击者 IP | — |
| [WAF 攻击搜寻](kql/waf-firewall-logs.kql) | 在 `AGWFirewallLogs` 中匹配攻击 | — |
## 💡 关键经验
- **检测重在调优,而非数量** — 一个简单的 `contains "success"` 规则会让你淹没在误报中;基于 EventID、LogonType 和源 IP 进行过滤才能使告警有意义。
- **上下文很重要** — 将真实的攻击者 IP 与 Azure 平台流量区分开来,将真实的违规与预期的管理员登录区分开来,是分类的核心。
- **攻防是一个整体系统** — 每次攻击都会生成 SOC 可检测到的 telemetry,从而闭合红/蓝循环。
## 📄 完整说明
[📑 演示文稿 (PDF)](presentation/Azure_SOC_Project.pdf)
**Abdulrahman Alzahrani** — 渗透测试员 | 网络安全分析师
🔗 [LinkedIn](https://linkedin.com/in/d7meealz) · ✍️ [Medium](https://medium.com/@d7meealz)
标签:CISA项目, Microsoft Azure, PE 加载器, WAF, 安全运营中心, 数据展示, 紫队, 红队, 网络映射, 请求拦截