nishanrajmulik1/cloud-soc-honeynet-azure
GitHub: nishanrajmulik1/cloud-soc-honeynet-azure
该项目是一个云基础的SOC蜜罐实验室,使用Microsoft Sentinel和KQL来开发检测规则并分析网络攻击,解决安全运营中的实战演练和威胁研究问题。
Stars: 0 | Forks: 0
# Azure Sentinel SOC 蜜罐:检测工程与威胁分析

## 项目摘要
- **目标:** 在单台笔记本电脑上,从零开始构建完整的SOC能力,涵盖日志收集、检测规则、地理可视化与事件响应。
- **区域:** 澳大利亚东部(数据驻留地)
- **暴露窗口:** 约72小时
- **成果:** 捕获297,534次攻击,自动生成39个事件,成功入侵0次。
## 架构
| 层级 | 技术 |
|---|---|
| 蜜罐虚拟机 | Windows 10 Pro 22H2 (Standard_B2s) |
| 日志收集 | 通过数据收集规则使用Azure Monitor Agent (AMA) |
| 日志存储 | Azure Log Analytics 工作区 |
| SIEM | Microsoft Sentinel |
| 查询语言 | Kusto查询语言 (KQL) |
| 威胁映射 | MITRE ATT&CK 框架 |
| 地理定位 | 内置KQL函数 `geo_info_from_ip_address()` |
## 关键数据
| 指标 | 数值 |
|---|---|
| 捕获的失败登录尝试 | **297,534** |
| 独立攻击者IP数 | **28** |
| 源国家数 | **14** |
| 从暴露到首次攻击的时间 | **约20小时** |
| 部署的自定义检测规则数 | **5** |
| 自动生成的事件数 | **39** |
| 成功的未授权登录 | **0** |
## 攻击来源国前5名
| 国家 | 尝试次数 |
|---|---|
| 🇺🇸 美国 | 99,076 |
| 🇺🇦 乌克兰 | 69,910 |
| 🇧🇩 孟加拉国 | 30,699 |
| 🇷🇴 罗马尼亚 | 27,677 |
| 🇲🇾 马来西亚 | 14,838 |
## 最具攻击性IP前5名
| IP | 国家 | 尝试次数 |
|---|---|---|
| 20.119.34.7 | 美国 | 99,068 |
| 119.148.8.66 | 孟加拉国 | 30,699 |
| 80.94.95.83 | 罗马尼亚 | 27,671 |
| 165.99.199.134 | 马来西亚 | 14,838 |
| 138.94.140.190 | 墨西哥 | 14,401 |
## 被攻击最多的用户名前5名

| 用户名 | 尝试次数 |
|---|---|
| \HONEYPOT | 144,605 |
| \ADMINISTRATOR | 28,227 |
| \USER | 15,236 |
| \ADMIN | 6,026 |
| \BACKUP | 4,952 |
## 已构建的检测规则

| # | 规则 | MITRE ATT&CK | 严重性 | 结果 |
|---|---|---|---|---|
| 1 | 来自单IP的RDP暴力破解 | T1110.001 | 中 | 已触发(经调整后,见经验教训) |
| 2 | 暴力破解后成功登录 | T1110 + T1078 | 高 | 未触发(无入侵) |
| 3 | 从异常国家成功登录 | T1078 | 高 | 未触发(无入侵) |
| 4 | 密码喷洒检测 | T1110.003 | 中 | 生成27个事件 |
| 5 | 针对单账户的分布式暴力破解 | T1110 | 高 | 阈值调整后触发 |
## 仓库结构
```
azure-sentinel-honeypot-soc/
├── README.md (this file)
├── architecture/ (diagrams, design docs)
├── kql-queries/ (analysis queries)
├── detection-rules/ (5 Sentinel rules + MITRE mapping)
├── playbooks/ (incident response procedures)
├── reports/ (final analysis writeup)
├── screenshots/ (evidence and visualisations)
└── notes/ (daily progress log)
```
## 关键经验教训
### 1. LogonType 3 vs 10 - 检测工程洞察
最初的检测规则过滤 `LogonType == 10` (远程交互,完整RDP会话)。对297,534条失败登录事件的分析显示,**100%的攻击记录为LogonType 3 (网络)**,没有记录为LogonType 10。现代RDP暴力破解工具会在Windows建立远程交互会话之前,在网络级别认证 (NLA) 阶段失败。**生产环境的检测规则必须包含LogonType 3以捕获真实的攻击模式。**
### 2. 主机名泄露作为侦察风险
48%的尝试针对 `\HONEYPOT`,该名称源自虚拟机主机名。生产环境的虚拟机应使用非描述性主机名 (例如 `web-prd-04`),以避免通过RDP横幅、证书CN或网络广播向攻击者泄露用途。
### 3. 单IP持续攻击 vs 僵尸网络扩散
单个IP (`20.119.34.7`,位于美国) 产生了33%的攻击流量。大多数威胁模型假设分布式僵尸网络活动,但专用的攻击者基础设施也同样常见。速率限制和基于IP的异常检测是互补的控制措施。
### 4. Sentinel连接器与通用DCR的陷阱
只有当数据收集规则是通过Sentinel中的 **Windows安全事件(通过AMA)** 连接器页面创建时,`SecurityEvent` 表才会被填充,*而不是* 通过通用的 监视器 -> 数据收集规则 路径。通用DCR会填充 `Event` 表,该表不会触发Sentinel的内置检测。这一点文档记录不佳,耗费了大量故障排除时间。详见 `reports/final-analysis-report.md`。
### 5. 未触发规则的价值
规则2和3(入侵指标)在观察期间从未触发,而这正是期望的结果。一个*因为*未发生入侵而没有触发的检测规则是一个有价值的信号。检测工程同时衡量信号与静默。
## 与ACSC Essential Eight的映射
| 控制项 | 本实验如何体现 |
|---|---|
| 多因素认证 | 将会击败100%观察到的攻击 |
| 限制管理员权限 | `\ADMINISTRATOR` 账户遭受28,227次尝试,绝不应暴露于外部 |
| 操作系统补丁 | Windows 10 22H2在暴露期间收到了补丁;基于AMA的监控继续运行 |
| 应用控制 | 如果发生入侵,将减轻入侵后活动 |
## 工具与技术
`Microsoft Azure` · `Microsoft Sentinel` · `Log Analytics` · `KQL` · `Azure Monitor Agent` · `MITRE ATT&CK` · `ACSC Essential Eight` · `Windows安全事件日志`
## 作者
由 **Nishan Rajmulik** 作为自主学习的SOC分析师项目构建。
寻求检测工程、SOC分析师 (T1/T2) 和安全运营相关职位。
[GitHub](https://github.com/nishanrajmulik1)
[LinkedIn](https://www.linkedin.com/in/nrajmulik)
标签:AMSI绕过, Azure Monitor Agent, Azure云平台, KQL查询语言, Microsoft Sentinel, MITRE ATT&CK框架, SOC安全运营, 地理可视化, 威胁分析, 威胁情报, 威胁检测, 子域名暴力破解, 安全信息与事件管理, 开发者工具, 搜索引擎爬取, 攻击映射, 攻击统计, 数据收集规则, 日志存储, 网络安全, 自动化侦查工具, 自动化检测, 蜜罐实验室, 蜜罐技术, 隐私保护