Arizonal8/Azure-Cloud-Honeypot-SOC-Lab-Unauthorised-Access-Monitoring
GitHub: Arizonal8/Azure-Cloud-Honeypot-SOC-Lab-Unauthorised-Access-Monitoring
这是一个基于Azure和Microsoft Sentinel的云蜜罐实验室项目,旨在通过故意配置错误的Windows虚拟机实时捕获、分析并可视化未授权的暴力破解访问尝试。
Stars: 0 | Forks: 0
# Azure 云蜜罐与 SOC 实验室 — 未授权访问监控
## 架构

上图展示了完整的数据流:来自公共互联网的攻击者尝试通过一个宽松的 NSG 入侵暴露的 VM,该 VM 将安全事件转发到 Log Analytics Workspace,Microsoft Sentinel 通过 GeoIP 监视列表和基于 KQL 的攻击地图来丰富数据并进行可视化。
## 目录
- [项目概述](#project-overview)
- [使用的工具与服务](#tools--services-used)
- [基础设施设置](#infrastructure-setup)
- [主要发现](#key-findings)
- [攻击数据分析](#attack-data-analysis)
- [Sentinel 与监视列表配置](#sentinel--watchlist-configuration)
- [攻击地图](#attack-map)
- [架构图提示词](#architectural-diagram-prompt)
- [经验教训](#lessons-learned)
## 项目概述
本项目通过以下步骤模拟了真实的 SOC 分析师工作流:
1. 在 Azure 上部署一台 Windows 11 VM,并故意禁用所有防火墙保护
2. 配置网络安全组 (NSG) 规则 (`Danger_All_access`,优先级 100) 以允许来自任何源、任何端口的入站流量
3. 在域、专用和公用配置文件上禁用 Windows Defender 防火墙
4. 安装 **AzureMonitorWindowsAgent** 以将安全事件转发到 Log Analytics Workspace
5. 将 GeoIP 数据库(55K 条记录)作为监视列表导入 Microsoft Sentinel
6. 编写 KQL 查询以将失败的登录事件与地理位置数据进行关联
7. 渲染一个交互式攻击地图,显示全球范围内的攻击者来源
该蜜罐于 **2026 年 4 月 6 日** 上线,并在防火墙禁用后的几分钟内就吸引了真实的暴力破解攻击。
## 使用的工具与服务
### 云平台
| 服务 | 用途 |
|---|---|
| **Microsoft Azure** | 云基础设施提供商 |
| **Azure Virtual Machine** (Windows 11) | 蜜罐目标 — `SOC-LabTest-RG` |
| **Azure Virtual Network** (`VN_SOC_Lab`) | 网络隔离容器 |
| **Azure Network Security Group (NSG)** | 故意配置错误以允许所有入站流量 |
| **Azure Public IP** (`SOC-LabTest-RG-ip`) | 暴露的公共端点 (`20.108.28.87`) |
| **Azure Log Analytics Workspace** (`LogAnalyticsWorkspaceSOC`) | 集中式日志聚合 |
| **Azure Data Collection Rule** (`DCR_Win_SOC`) | 将 VM 安全事件路由到工作区 |
| **AzureMonitorWindowsAgent** v1.41.0.0 | 将 Windows 安全事件发送到 Log Analytics 的 VM 扩展 |
| **Microsoft Sentinel** (SIEM) | 威胁检测、监视列表管理和攻击可视化 |
| **Azure Workbook** | 托管交互式 Windows VM 攻击地图 |
| **Microsoft Defender for Cloud** | 资产清单和态势监控 |
### 查询与分析
| 工具 | 用途 |
|---|---|
| **KQL (Kusto Query Language)** | 查询 `SecurityEvent` 表以获取事件 ID 4625(失败登录) |
| **Sentinel Watchlist** (`geoip`) | 包含 54,803 行的 GeoIP 数据库,用于 IP 到地理位置的丰富 |
| **Advanced Hunting** | 通过 `_GetWatchlist('geoip')` 验证监视列表导入 |
### 本地 / 客户端工具
| 工具 | 用途 |
|---|---|
| **Linux (Ubuntu — `arinze-Latitude-5420`)** | 用于管理实验室、运行终端命令和 Ping VM 的本地工作站 |
| **Remmina Remote Desktop Client** | 用于从 Linux 工作站通过 RDP 连接到 Windows VM |
| **Windows Event Viewer** | 直接在 VM 上检查原始安全日志(事件 ID 4625, 4624, 4672) |
| **Windows Defender Firewall (Advanced Security)** | 故意在所有配置文件上禁用以暴露 VM |
## 基础设施设置
### 资源组:`RG-SOC-LAB-APRIL` (英国南部)
| 资源 | 类型 |
|---|---|
| `SOC-LabTest-RG` | 虚拟机 (Windows 11) |
| `SOC-LabTest-RG-ip` | 公共 IP 地址 |
| `SOC-LabTest-RG-nsg` | 网络安全组 |
| `soc-labtest-rg282_z1` | 网络接口 |
| `SOC-LabTest-RG_OsDisk_1_...` | 托管磁盘 |
| `VN_SOC_Lab` | 虚拟网络 |
| `LogAnalyticsWorkspaceSOC` | Log Analytics 工作区 |
| `DCR_Win_SOC` | 数据收集规则 |
| `SecurityInsights(loganalyticsworkspacesoc)` | Sentinel 解决方案 |
| `88c296e6-... (Virtual M attack Map)` | Azure Workbook |
### NSG 入站规则
| 优先级 | 规则名称 | 端口 | 协议 | 源 | 操作 |
|---|---|---|---|---|---|
| **100** | `Danger_All_access` ⚠️ | Any | Any | Any | **Allow** |
| 65000 | AllowVnetInBound | Any | Any | VirtualNetwork | Allow |
| 65001 | AllowAzureLoadBalancerInBound | Any | Any | AzureLoadBalancer | Allow |
| 65500 | DenyAllInBound | Any | Any | Any | Deny |
## 主要发现
### 暴力破解攻击量
从查询导出中捕获的 **1,000 个安全事件**(时间窗口:2026 年 4 月 6 日,约 07:00–09:00 UTC)中:
- **1,000 个事件中有 969 个(96.9%)是失败的登录尝试**(事件 ID 4625)
- 只有 **31 个事件**是合法的系统登录或特权分配
- 攻击在防火墙禁用后的 **几分钟**内就开始了
### 攻击者 IP
| IP 地址 | 失败尝试次数 | 备注 |
|---|---|---|
| `185.156.73.74` | **491** | 主要攻击者 |
| `185.156.73.169` | **478** | 次要攻击者 — 相邻 IP,可能是同一威胁行为者 |
| `5.151.212.211` | 模拟 | 来自本地 Linux 工作站的实验室控制测试 |
两个主要 IP 紧密相邻,表明来自同一基础设施的自动化凭据填充活动。
### 针对的热门用户名(凭据填充)
| 用户名 | 尝试次数 |
|---|---|
| `administrator` | 58 |
| `admin` | 21 |
| `user` | 13 |
| `test` | 12 |
| `administrador` | 8 |
| `user1` | 8 |
| `user2` | 7 |
| `backup` | 4 |
| `testuser` | 4 |
| `teste` | 4 |
### 地理来源(来自 Sentinel 攻击地图)
| 位置 | 失败登录次数 |
|---|---|
| **Jordanow, Poland** | ~47,700(主导的红色集群) |
| Mumbai, India | 1 |
攻击绝大多数集中在单一的东欧来源。
### 身份验证方法
所有暴力破解尝试均通过 `NtLmSsp` 使用 **NTLM 身份验证** 和 **登录类型 3(网络)** — 这与自动化的 RDP/SMB 凭据填充工具一致。
### 模拟攻击(实验室控制)
还从本地 Linux 工作站(`arinze-Latitude-5420`,IP `5.151.212.211`)使用 Remmina 模拟了手动未授权登录尝试,生成了账户名为 `Arizay` 的事件 ID 4625。这在 Windows Event Viewer 中可见,并在 Sentinel 日志中得到确认。
## 📊 攻击数据分析
`query_data.csv` 包含从 Log Analytics 中的 `SecurityEvent` 表导出的 1,000 行数据。观察到的主要事件 ID:
| 事件 ID | 描述 | 计数 |
|---|---|---|
| **4625** | 帐户登录失败 | **969** |
| 4624 | 帐户成功登录 | ~15 |
| 4672 | 为新登录分配了特殊权限 | ~10 |
| 5379 | 读取了凭据管理器凭据 | ~6 |
事件 ID 4625 的绝对主导地位证实了 VM 在整个监控窗口内处于活跃、持续的暴力破解攻击之下。
## 🗺️ Sentinel 与监视列表配置
### 监视列表:`geoip`
- **源文件:** `geoip-summarized.csv`
- **总行数:** 54,803
- **SearchKey:** `network` (CIDR 块)
- **字段:** `network`, `latitude`, `longitude`, `cityname`, `countryname`
- **状态:** 成功 ✅
- **导入时间:** 2026 年 4 月 6 日,上午 10:34
### KQL 查询(攻击地图)
```
let GeoIPDB_FULL = _GetWatchlist("geoip");
let WindowsEvents = SecurityEvent;
WindowsEvents | where EventID == 4625
| order by TimeGenerated desc
| evaluate ipv4_lookup(GeoIPDB_FULL, IpAddress, network)
| summarize FailureCount = count() by IpAddress, latitude, longitude, cityname, countryname
| project FailureCount, AttackerIp = IpAddress, latitude, longitude,
city = cityname, country = countryname,
friendly_location = strcat(cityname, " (", countryname, ")");
```
此查询:
1. 加载完整的 GeoIP 监视列表
2. 筛选失败登录的安全事件(事件 ID 4625)
3. 执行 IPv4 查找以将攻击者 IP 与地理位置匹配
4. 按 IP 和位置进行汇总
5. 输出到 Azure Workbook 地图可视化(热力图:绿色 → 红色)
## 攻击地图
攻击地图是作为一个 **Azure Workbook** 构建的,使用带有热力图着色(根据 `FailureCount` 从绿色到红色)的 `Map` 可视化效果。波兰上方的巨大红色气泡代表了主导的攻击集群(来自 Jordanow 的约 47,700 次失败登录尝试)。
## 经验教训
- 公共 IP 上暴露的 RDP/SMB 服务会在 **几分钟内** 被发现并遭到攻击,而不是几小时 — 面向互联网的蜜罐几乎会立即收到真实流量
- 攻击者使用带有标准用户名字典(`administrator`、`admin`、`user`、`test`)的完全自动化凭据填充 — 默认凭据仍然是最受攻击的攻击向量
- 两个紧密相邻的 IP(`185.156.73.74` 和 `185.156.73.169`)产生了几乎相同数量的攻击,这表明来自同一威胁行为者的协调、脚本化活动
- Microsoft Sentinel 的 GeoIP 监视列表 + KQL `ipv4_lookup` 函数提供了强大、可扩展的威胁地理位置定位,无需第三方工具
- 基于 Network Logon (Type 3) 的 NTLM 是针对暴露的 Windows 目标的 RDP 暴力破解攻击中使用的主导协议
- **AzureMonitorWindowsAgent** 提供了从 VM 到 SIEM 的无缝遥测转发,配置开销极低
- NSG 规则必须始终遵循默认拒绝 模型 — 单个高优先级的允许所有规则将完全抵消所有下游的拒绝规则
## ⚠️ 免责声明
本实验仅在受控、隔离的 Azure 环境中进行,仅用于教育和研究目的。VM 被故意配置错误以吸引攻击。**此配置绝不应在生产环境中复制。** 所有资源均在独立的订阅和资源组中创建,并应在实验后拆除。
*实验时间:2026 年 4 月 6 日 | Azure 区域:英国南部 | 作者:Arinze Ihekweme*
标签:AMSI绕过, Azure 虚拟机, CISA项目, GeoIP, KQL, Log Analytics, Microsoft Azure, Microsoft Sentinel, PoC, Windows 11, 主机安全, 事件 ID 4625, 凭据填充, 威胁检测, 安全运营中心, 密码管理, 暴力破解, 未授权访问, 红队行动, 网络安全, 网络安全审计, 网络安全监控, 网络映射, 蜜罐, 证书利用, 隐私保护, 驱动开发