triptiiSharma/azure-siem-honeypot-lab
GitHub: triptiiSharma/azure-siem-honeypot-lab
一个基于 Azure 和 Microsoft Sentinel 的蜜罐实验室项目,用于捕获、分析和可视化真实的 RDP 暴力破解攻击。
Stars: 0 | Forks: 0
# Azure Sentinel 蜜罐 + 实时攻击地图
## 概述
在 Azure 上部署了一台故意暴露的 Windows 10 虚拟机 (`CORP-NET-EAST-1`) 作为蜜罐,用于捕获和分析真实的 RDP 暴力破解活动。安全事件日志通过 Log Analytics Workspace 转发到 Microsoft Sentinel,并使用包含 54,000 行数据的 GeoIP watchlist 进行地理定位数据丰富,最后在自定义的 Sentinel Workbook 攻击地图上进行可视化展示。
**在暴露的大约 24 小时内,该虚拟机记录了 7,260 起安全事件 —— 其中 5,445 起是失败的 RDP 身份验证尝试 (事件 ID 4625),这些尝试源自跨越 4 个大洲的 9 个以上的国家。**
本项目展示了端到端的 SOC 工作流:日志摄取 → 标准化 → 丰富 → 威胁可视化。
## 架构 
## 技术栈 | 组件 | 工具 / 服务 | |-----------|---------------| | 云平台 | Microsoft Azure | | 蜜罐主机 | Azure 虚拟机 — Windows 10 Enterprise (Standard D2s v7) | | 网络暴露 | NSG 规则 `DANGER_AllowAnyCustomAnyInbound` (优先级 100) | | 日志存储库 | Log Analytics Workspace (`LOG-Analytics-SOC-Lab-0000`) | | SIEM | Microsoft Sentinel | | 日志转发 | Azure Monitor Agent (AMA) + Data Collection Rule | | 查询语言 | KQL (Kusto Query Language) | | IP 丰富 | Sentinel Watchlist — GeoIP (~54,000 个 IP 网络范围) | | 可视化 | Sentinel Workbook (`WIN-VM-AttackMap`) |
## 实施步骤 1. **配置蜜罐虚拟机** — 在 Azure (East US 2, Standard D2s v7) 上部署 Windows 10 Enterprise。分配了静态公网 IP (`20.109.34.67`)。 2. **禁用所有 NSG 限制** — 创建入站规则 `DANGER_AllowAnyCustomAnyInbound` (优先级 100,所有端口,所有协议,任何源),以将虚拟机完全暴露给互联网。 3. **禁用 Windows Defender 防火墙** — 关闭虚拟机内的 Domain、Private 和 Public 防火墙配置文件,以确保在操作系统级别不进行任何流量过滤。 4. **配置日志转发** — 在虚拟机上安装 Azure Monitor Agent;创建 Data Collection Rule (DCR) 以将 Windows 安全事件流式传输到 Log Analytics Workspace。 5. **将 Sentinel 连接到 LAW** — 在 Microsoft Sentinel 中启用“Windows Security Events via AMA”数据连接器,以开始摄取日志。 6. **通过 KQL 验证摄取** — 查询 `SecurityEvent | where EventID == 4625`,以确认失败的登录事件已出现在 Sentinel 中(在 3 天的时间窗口内返回了 5,404 条结果)。 7. **导入 GeoIP watchlist** — 将包含 54,000 行 IP 到位置的 CSV 加载到 Sentinel 中作为 Watchlist (别名: `GEOIP`)。在 KQL 中使用 `ipv4_lookup()`,用城市、国家和坐标来丰富攻击者 IP。 8. **构建攻击地图工作簿** — 使用 JSON 配置自定义的 Sentinel Workbook (`WIN-VM-AttackMap`),将丰富后的日志数据渲染为地理空间气泡图,并按来源显示实时攻击量。
## 关键发现 | 指标 | 数值 | |--------|-------| | 记录的安全事件总数 | 7,260 | | 失败的登录尝试 (事件 ID 4625) | 5,445 | | 失败登录占总事件的百分比 | **75%** | | 独立的攻击源国家 | 9+ | | 地理位置丰富后的日志行数 | 7,868 | | 虚拟机暴露时间 | ~24 小时 | | 观察到的被针对性用户名 | ADMINISTRATOR, REMOTE, XEON, HOME, SCAN, SCANNER 等 |
**按数量排名的主要攻击源(来自攻击地图):** | 来源 | 尝试次数 | |--------|----------| | 印度,巴特那 | ~2,460 | | 美国 | ~2,460 | | 新西兰,奥克兰 | ~1,310 | | 韩国,蔚山 | 691 | | 菲律宾,马卡蒂市 | 450 | | 美国,克劳利 | 226 | | 英国,米尔顿凯恩斯 | 139 | | 加拿大,伯灵顿 | 48 | | 印度,海得拉巴 | 36 | | 其他 | 36 |
## KQL 查询 有关所有查询及其说明,请参见 [`kql-queries/queries.md`](kql-queries/queries.md)。
## 观察与分析 有关深入的威胁分析,请参见 [`findings/observations.md`](findings/observations.md)。
## 截图 | 步骤 | 预览 | |------|---------| | 虚拟机概述 |  | | NSG 入站规则 (`DANGER_AllowAny`) |  | | 防火墙已禁用(所有配置文件) |  | | 事件查看器 — 5,445 × 4625 事件 |  | | Log Analytics Workspace 活动 |  | | Sentinel KQL — 5,404 次失败登录 |  | | 地理丰富后的日志(城市 + 国家) |  | | 实时攻击地图 Workbook |  |
## 经验教训 - **首次攻击时间以分钟计算,而不是小时。** 暴露在互联网上的 RDP endpoint 在配置后几乎会立即被自动化扫描器发现并成为目标。 - **攻击工具是系统化的,而不是随机的。** 观察到的用户名多样性(REMOTE, XEON, HOME, SCAN, SCANNER)表明这些是凭证填充框架使用的结构化字典,而不是机会性的手动探测。 - **IP 地理位置丰富是原始日志和可操作情报之间的桥梁。** 如果没有 GeoIP watchlist,数据只是一串 IP 列表;有了它,数据就变成了具有地理模式的威胁全景图。 - **多区域攻击分布表明存在僵尸网络基础设施。** 在单个观察时间窗口内,来自印度、美国、新西兰、韩国和菲律宾的同时大流量攻击表明这是协调的僵尸网络节点,而不是单一攻击者。 - **KQL 的 `ipv4_lookup()` 和 `evaluate` 运算符是生产级工具** — 此处使用的相同丰富模式可以直接扩展到企业级 SIEM 部署中。
## 后续步骤 / 潜在改进 - **自动化创建事件** — 配置 Sentinel Analytics Rules,设定暴力破解检测阈值(例如,5 分钟内来自单个 IP 的失败登录超过 10 次),以自动生成事件。 - **响应自动化** — 构建一个由 Sentinel 事件触发的 Logic App playbook,通过 NSG API 调用自动封锁违规 IP。 - **威胁情报关联** — 将攻击者 IP 与威胁情报源(MISP, VirusTotal API, Microsoft Defender TI)进行交叉比对,以识别已知的恶意行为者。 - **扩大蜜罐范围** — 并行部署一台 Linux 虚拟机,以比较不同操作系统类型下 SSH(端口 22)与 RDP(端口 3389)的攻击模式。 - **UEBA 基线化** — 启用 Sentinel 的用户和实体行为分析,以建立基线行为并标记登录模式中的统计异常。 ## 作者 **Tripti Sharma** GitHub: [@triptiiSharma](https://github.com/triptiiSharma) *本项目记录了基于 Azure 的蜜罐和 SIEM 环境的部署,用于教育和网络安全研究目的。*
## 架构 
## 技术栈 | 组件 | 工具 / 服务 | |-----------|---------------| | 云平台 | Microsoft Azure | | 蜜罐主机 | Azure 虚拟机 — Windows 10 Enterprise (Standard D2s v7) | | 网络暴露 | NSG 规则 `DANGER_AllowAnyCustomAnyInbound` (优先级 100) | | 日志存储库 | Log Analytics Workspace (`LOG-Analytics-SOC-Lab-0000`) | | SIEM | Microsoft Sentinel | | 日志转发 | Azure Monitor Agent (AMA) + Data Collection Rule | | 查询语言 | KQL (Kusto Query Language) | | IP 丰富 | Sentinel Watchlist — GeoIP (~54,000 个 IP 网络范围) | | 可视化 | Sentinel Workbook (`WIN-VM-AttackMap`) |
## 实施步骤 1. **配置蜜罐虚拟机** — 在 Azure (East US 2, Standard D2s v7) 上部署 Windows 10 Enterprise。分配了静态公网 IP (`20.109.34.67`)。 2. **禁用所有 NSG 限制** — 创建入站规则 `DANGER_AllowAnyCustomAnyInbound` (优先级 100,所有端口,所有协议,任何源),以将虚拟机完全暴露给互联网。 3. **禁用 Windows Defender 防火墙** — 关闭虚拟机内的 Domain、Private 和 Public 防火墙配置文件,以确保在操作系统级别不进行任何流量过滤。 4. **配置日志转发** — 在虚拟机上安装 Azure Monitor Agent;创建 Data Collection Rule (DCR) 以将 Windows 安全事件流式传输到 Log Analytics Workspace。 5. **将 Sentinel 连接到 LAW** — 在 Microsoft Sentinel 中启用“Windows Security Events via AMA”数据连接器,以开始摄取日志。 6. **通过 KQL 验证摄取** — 查询 `SecurityEvent | where EventID == 4625`,以确认失败的登录事件已出现在 Sentinel 中(在 3 天的时间窗口内返回了 5,404 条结果)。 7. **导入 GeoIP watchlist** — 将包含 54,000 行 IP 到位置的 CSV 加载到 Sentinel 中作为 Watchlist (别名: `GEOIP`)。在 KQL 中使用 `ipv4_lookup()`,用城市、国家和坐标来丰富攻击者 IP。 8. **构建攻击地图工作簿** — 使用 JSON 配置自定义的 Sentinel Workbook (`WIN-VM-AttackMap`),将丰富后的日志数据渲染为地理空间气泡图,并按来源显示实时攻击量。
## 关键发现 | 指标 | 数值 | |--------|-------| | 记录的安全事件总数 | 7,260 | | 失败的登录尝试 (事件 ID 4625) | 5,445 | | 失败登录占总事件的百分比 | **75%** | | 独立的攻击源国家 | 9+ | | 地理位置丰富后的日志行数 | 7,868 | | 虚拟机暴露时间 | ~24 小时 | | 观察到的被针对性用户名 | ADMINISTRATOR, REMOTE, XEON, HOME, SCAN, SCANNER 等 |
**按数量排名的主要攻击源(来自攻击地图):** | 来源 | 尝试次数 | |--------|----------| | 印度,巴特那 | ~2,460 | | 美国 | ~2,460 | | 新西兰,奥克兰 | ~1,310 | | 韩国,蔚山 | 691 | | 菲律宾,马卡蒂市 | 450 | | 美国,克劳利 | 226 | | 英国,米尔顿凯恩斯 | 139 | | 加拿大,伯灵顿 | 48 | | 印度,海得拉巴 | 36 | | 其他 | 36 |
## KQL 查询 有关所有查询及其说明,请参见 [`kql-queries/queries.md`](kql-queries/queries.md)。
## 观察与分析 有关深入的威胁分析,请参见 [`findings/observations.md`](findings/observations.md)。
## 截图 | 步骤 | 预览 | |------|---------| | 虚拟机概述 |  | | NSG 入站规则 (`DANGER_AllowAny`) |  | | 防火墙已禁用(所有配置文件) |  | | 事件查看器 — 5,445 × 4625 事件 |  | | Log Analytics Workspace 活动 |  | | Sentinel KQL — 5,404 次失败登录 |  | | 地理丰富后的日志(城市 + 国家) |  | | 实时攻击地图 Workbook |  |
## 经验教训 - **首次攻击时间以分钟计算,而不是小时。** 暴露在互联网上的 RDP endpoint 在配置后几乎会立即被自动化扫描器发现并成为目标。 - **攻击工具是系统化的,而不是随机的。** 观察到的用户名多样性(REMOTE, XEON, HOME, SCAN, SCANNER)表明这些是凭证填充框架使用的结构化字典,而不是机会性的手动探测。 - **IP 地理位置丰富是原始日志和可操作情报之间的桥梁。** 如果没有 GeoIP watchlist,数据只是一串 IP 列表;有了它,数据就变成了具有地理模式的威胁全景图。 - **多区域攻击分布表明存在僵尸网络基础设施。** 在单个观察时间窗口内,来自印度、美国、新西兰、韩国和菲律宾的同时大流量攻击表明这是协调的僵尸网络节点,而不是单一攻击者。 - **KQL 的 `ipv4_lookup()` 和 `evaluate` 运算符是生产级工具** — 此处使用的相同丰富模式可以直接扩展到企业级 SIEM 部署中。
## 后续步骤 / 潜在改进 - **自动化创建事件** — 配置 Sentinel Analytics Rules,设定暴力破解检测阈值(例如,5 分钟内来自单个 IP 的失败登录超过 10 次),以自动生成事件。 - **响应自动化** — 构建一个由 Sentinel 事件触发的 Logic App playbook,通过 NSG API 调用自动封锁违规 IP。 - **威胁情报关联** — 将攻击者 IP 与威胁情报源(MISP, VirusTotal API, Microsoft Defender TI)进行交叉比对,以识别已知的恶意行为者。 - **扩大蜜罐范围** — 并行部署一台 Linux 虚拟机,以比较不同操作系统类型下 SSH(端口 22)与 RDP(端口 3389)的攻击模式。 - **UEBA 基线化** — 启用 Sentinel 的用户和实体行为分析,以建立基线行为并标记登录模式中的统计异常。 ## 作者 **Tripti Sharma** GitHub: [@triptiiSharma](https://github.com/triptiiSharma) *本项目记录了基于 Azure 的蜜罐和 SIEM 环境的部署,用于教育和网络安全研究目的。*
标签:威胁可视化, 底层分析, 微软Azure, 红队行动, 蜜罐, 证书利用