SirBruceWoodland/azure-sentinel-honeypot-lab
GitHub: SirBruceWoodland/azure-sentinel-honeypot-lab
一个基于 Azure Sentinel 的蜜罐实验室项目,通过暴露诱饵服务器捕获真实攻击流量,演示完整的 SIEM 部署、威胁检测与事件响应流程。
Stars: 0 | Forks: 0
# Azure Sentinel SIEM 蜜罐实验室
**网络安全作品集项目 - Edward Antonucci - 2026年6月**
## 概述
本项目演示了使用 Microsoft Azure 进行云原生 SIEM 的端到端部署与运营。一台 Windows Server 2022 蜜罐 VM 被故意暴露在公共互联网上的三个服务(RDP、SSH、HTTP)中,以吸引真实的攻击流量,这些流量随后被 Microsoft Sentinel 和 Microsoft Defender XDR 接收、分析、可视化并进行响应。
**门户说明:** 在此项目期间,Microsoft 开始将 Sentinel 从 Azure 门户迁移到统一的 Microsoft Defender 门户(`security.microsoft.com`)。截图反映了这两种环境——这镜像了活跃过渡期间的真实场景(完全迁移预计在 2027 年 3 月 31 日)。
## 仪表板摘要
| 指标 | 数值 |
|---|---|
| 安全事件总数 | 80,800+ |
| 触发的警报总数 | 95 |
| 事件总数 | 6 |
| 唯一攻击者 IP | 43+ |
| 来源国家 | 遍布 5 大洲的 15 个国家 |
| SSH 探测事件 (NOUSER) | 5,742+ |
| IIS Web 探测请求 | 599+ |
## 架构
所有资源均部署在专用的资源组(`RG-Sentinel-Lab`,West US 区域)中:
| 组件 | 详情 |
|---|---|
| **Log Analytics Workspace** | `LAW-Sentinel-Lab` - 集中式数据存储 |
| **Microsoft Sentinel** | 工作区之上的 SIEM 层 |
| **蜜罐 VM** | Windows Server 2022 Datacenter, Standard D2s v3 |
| **网络安全组** | `DANGER_AllowAnyInbound` 规则 - 暴露所有端口;在事件响应 (IR) 期间添加了针对性的拒绝规则 |
| **数据收集规则** | `DCR-Honeypot` - Azure Monitor Agent 流式传输安全事件 + IIS 日志 |
| **暴露的服务** | RDP (3389), SSH (22 通过 OpenSSH), HTTP (80 通过 IIS) |
### 为什么要禁用防火墙?
禁用 Windows 防火墙并将 NSG 入站设置为允许所有流量,是为了最大限度地提高蜜罐的有效性。在生产环境中,这将是灾难性的配置错误,但在这里是故意的,旨在创建尽可能大的攻击面,并观察自动扫描仪和僵尸网络首先探测的内容。
### 为什么拒绝规则的优先级是 200?
NSG 规则按数字从小到大进行评估。优先级 100 已被 `DANGER_AllowAnyInbound` 占用,因此针对攻击者的特定拒绝规则被置于优先级 200。在生产环境中,“允许所有”的规则将不存在,而针对性的拒绝规则将处于较低的优先级编号,位于更宽松的规则之上。
## 实时攻击仪表板
多面板 Sentinel Workbook 可视化攻击流量,并进行 5 分钟自动刷新。
### Workbook 描述(标题块)
### 面板 1:全球攻击地图
通过自定义 Sentinel Watchlist (`AttackerGeoDataV2`) 对 IP 地址进行地理扩充,其中填充了来自 ipinfo.io 的纬度/经度。热力图按失败登录次数进行缩放。
**KQL:**
```
SecurityEvent
| where EventID == 4625
| summarize FailedLogins = count() by AttackerIP = IpAddress
| join kind=inner (_GetWatchlist('AttackerGeoDataV2')) on $left.AttackerIP == $right.IPAddress
| project AttackerIP, FailedLogins, Country, Latitude, Longitude
```
### 面板 2:攻击国家/地区 Top 10 柱状图
```
SecurityEvent
| where EventID == 4625
| where isnotempty(IpAddress)
| summarize FailedLogins = count() by AttackerIP = IpAddress
| join kind=inner (_GetWatchlist('AttackerGeoDataV2')) on $left.AttackerIP == $right.IPAddress
| summarize TotalAttempts = sum(FailedLogins) by Country
| sort by TotalAttempts desc
| take 10
```
### 最终攻击地图统计(所有时间)
| 国家/地区 | 尝试次数 | 值得注意的 ASN |
|---|---|---|
| 🇳🇱 荷兰 | 441 | SKYNET NETWORK LTD (AS214295), Liteserver |
| 🇮🇩 印度尼西亚 | 232 | PT Telekomunikasi Indonesia |
| 🇺🇸 美国 | 120 | 多家 VPS 提供商 |
| 🇻🇳 越南 | 76 | VNPT Corp |
| 🇫🇷 法国 | 46 | Contabo GmbH, OVH |
| 🇸🇬 新加坡 | 36 | Contabo Asia, Tencent |
| 🇧🇷 巴西 | 28 | BattleHost, Gamers Club |
| 🇬🇧 英国 | 26 | Contabo, Kamatera |
| 🇵🇪 秘鲁 | 22 | Red Cientifica Peruana, ON Empresas |
| 其他 | 20 | 罗马尼亚、芬兰、德国、比利时、中国香港 |
## 关键发现:SSH 攻击流量与 NOUSER 现象
在启用 OpenSSH Server 后,**出现了 5,742 个失败的身份验证事件,这些事件没有 IP 地址,账户名为 `NOUSER` 或为空白**。
### 为什么 SSH 失败在 Windows 日志中不显示 IP
这是 SSH 和 RDP 在操作系统身份验证层的一个根本区别:
当 SSH 连接在到达 Windows 身份验证**之前**失败时——例如,客户端在密钥交换之后但在发送凭据之前断开连接——Windows 会记录事件 ID 4625,但**没有可记录的 IP 上下文**,因为失败发生在 SSH 协议层而不是 Windows 安全层。
此外,Windows 上的 OpenSSH 会记录到其自己的文件 (`C:\ProgramData\ssh\logs\`) 中,与 Windows 安全事件日志分开。到达密码身份验证阶段的失败 SSH 尝试可能根本不会生成事件 ID 4625,这取决于尝试的身份验证方法。
### 这意味着什么
这 5,742 个 NOUSER 事件代表了**处于侦察阶段的自动化 SSH 扫描器**——它们探测开放的 SSH,检查支持的 身份验证方法,并在尝试凭据之前断开连接。这与针对 SSH 的僵尸网络行为一致。
### 如何正确捕获 SSH IP(生产环境方法)
- 在蜜罐旁边部署一台 **Linux VM** - Linux 的 `sshd` 日志可捕获完整的 IP 上下文
- 启用 **Azure Defender for Servers** 以获取额外的网络级遥测数据
- 在 Windows 上配置 **OpenSSH 详细日志记录 (verbose logging)**,并通过自定义 Log Analytics 数据收集规则进行摄取
- 使用 **Azure Network Watcher NSG 流日志** 来捕获所有连接级别的数据,无论身份验证结果如何
## 编写的 KQL 查询
### 事件清单 - 所有安全事件类型
```
SecurityEvent
| summarize count() by EventID, Activity
| sort by count_ desc
```
### 按攻击者 IP 进行的失败登录分析
```
SecurityEvent
| where EventID == 4625
| where isnotempty(IpAddress)
| summarize FailedLogins = count() by AttackerIP = IpAddress
| sort by FailedLogins desc
```
### 完整登录事件时间线
```
SecurityEvent
| where EventID in (4625, 4624, 4648)
| summarize count() by EventID, Activity, IpAddress
| sort by count_ desc
```
### 暴力破解检测 (Analytics Rule)
```
SecurityEvent
| where EventID == 4625
| where TimeGenerated > ago(5m)
| summarize FailedAttempts = count() by AttackerIP = IpAddress, Computer, Account
| where FailedAttempts >= 10
```
### 使用 Watchlist 地理扩充的攻击地图
```
SecurityEvent
| where EventID == 4625
| summarize FailedLogins = count() by AttackerIP = IpAddress
| join kind=inner (_GetWatchlist('AttackerGeoDataV2')) on $left.AttackerIP == $right.IPAddress
| project AttackerIP, FailedLogins, Country, Latitude, Longitude
```
### Top 10 国家/地区柱状图
```
SecurityEvent
| where EventID == 4625
| where isnotempty(IpAddress)
| summarize FailedLogins = count() by AttackerIP = IpAddress
| join kind=inner (_GetWatchlist('AttackerGeoDataV2')) on $left.AttackerIP == $right.IPAddress
| summarize TotalAttempts = sum(FailedLogins) by Country
| sort by TotalAttempts desc
| take 10
```
### Web 攻击探测检测 (IIS)
```
W3CIISLog
| where csUriStem in ("/wp-admin", "/wp-login.php", "/.env",
"/phpmyadmin", "/admin", "/administrator", "/xmlrpc.php",
"/.git/config", "/config.php", "/backup", "/.aws/credentials")
| summarize ProbeCount = count() by AttackerIP = cIP, csUriStem
| where ProbeCount >= 1
```
## Analytics 规则
### 规则 1:暴力破解检测 - 失败登录
| 设置 | 值 |
|---|---|
| 严重性 | 中 |
| 查询频率 | 每 5 分钟 |
| 查找窗口 | 过去 5 分钟 |
| 警报阈值 | 当查询返回 > 0 个结果时触发 |
| 逻辑 | 当单个 IP 在 5 分钟内有 10 次以上失败登录时发出警报 |
| MITRE ATT&CK | 凭据访问 — **T1110 (暴力破解)** |
| 警报分组 | 同一 IP 在 5 小时内被归为单个事件 |
### 规则 2:Web 攻击探测检测
| 设置 | 值 |
|---|---|
| 严重性 | 中 |
| 查询频率 | 每 1 小时 |
| 查找窗口 | 过去 1 小时 |
| 警报阈值 | 当查询返回 > 0 个结果时触发 |
| 逻辑 | 当任何 IP 探测 IIS 上的常见 Web 攻击路径时发出警报 |
| MITRE ATT&CK | 侦察 — **T1595 (主动扫描)** |
| 警报分组 | 同一 IP 在 1 小时内被归为单个事件 |
## 自动化响应 - Logic App Playbook
构建了一个 Logic App playbook (`Notify-BruteForce-Alert`) 来自动化事件通知。该 playbook 使用 Microsoft Sentinel 事件触发器,并在暴力破解事件触发时向 ntfy.sh 发送 HTTP POST 请求。
**HTTP 操作(针对 email connector 验证限制的替代方案):**
```
{
"Send_an_alert": {
"type": "Http",
"inputs": {
"method": "POST",
"uri": "https://ntfy.sh/sentinel-honeypot-alert",
"body": "Brute Force Detected on honeypot-vm - check Microsoft Sentinel"
}
}
}
```
**RBAC 限制说明:** 通过“自动化”选项卡将 playbook 连接到 Analytics rule 时,需要在 Sentinel 托管标识上拥有 `Microsoft Sentinel Automation Contributor` 角色。此角色在免费层上不可用。在生产环境中,可以通过在资源组级别通过 IAM 授予该角色来解决此问题。Playbook 本身已成功构建并发布。
## 事件响应演练
针对主要威胁行为者(`45.142.193.166` / SKYNET NETWORK LTD,荷兰)执行的完整 SOC 事件响应工作流:
| 步骤 | 操作 |
|---|---|
| **1. 检测** | 通过针对事件 ID 4625 的 KQL 发现了 14 次失败的 RDP 登录尝试。IP 归属于荷兰的 SKYNET NETWORK LTD (AS214295)。 |
| **2. 创建事件** | 在 Microsoft Defender XDR 中创建了事件 #2。严重性:中。类别:凭据访问 (MITRE ATT&CK)。资产:honeypot-vm。 |
| **3. 分配与分类** | 将事件分配给分析师,状态从新建 (New) 更改为进行中 (In Progress)。 |
| **4. 调查** | KQL 确认来自攻击者 IP 的成功登录为零。匿名网络扫描被评估为低风险(登录类型 3,无凭据)。 |
| **5. 补救** | 为 `45.142.193.166`(优先级 200)添加了 NSG 入站拒绝规则,以在网络边界阻止进一步的访问。 |
| **6. 关闭** | 事件分类:**真阳性 — 恶意用户活动**。状态:已解决。导出了官方 Microsoft Security 事件报告 PDF。 |
## 威胁情报观察
### Contabo GmbH - 频繁出现的基础设施
Contabo GmbH (AS51167) 是一家低成本的德国 VPS 提供商,出现在法国、新加坡和其他地区。威胁情报报告中经常将 Contabo 引用为被攻击者大量滥用的基础设施,因为其成本低、身份验证极少,并且历史上对滥用行为的响应缓慢。
### SKYNET NETWORK LTD - 头号攻击者
头号攻击者 SKYNET NETWORK LTD(AS214295,荷兰)通过同一 /24 子网 (`45.142.193.x`) 中的 3 个 IP 累计了 **441 次失败的登录尝试**。来自同一 ASN 的多个 IP 同时进行攻击,表明这是一个**自动化的僵尸网络操作**,而不是手动攻击者。
### 协调的僵尸网络行为
观察到共享相同 ASN 的多个 IP 同时针对蜜罐进行攻击(荷兰、越南/VNPT、芬兰/Bashinskii、法国/Contabo)。这与共享凭据列表的僵尸网络一致,而不是独立的攻击者。
## 激活的数据连接器
- 通过 AMA 传输的 Windows 安全事件 *(主要 - 蜜罐 VM 日志)*
- Azure Activity
- Microsoft Defender XDR
- Microsoft Defender for Endpoint
- Microsoft Defender for Cloud Apps
- Microsoft Defender for Identity
- Microsoft Entra ID Protection
- Microsoft Defender for Office 365
- Microsoft 365 Insider Risk Management
## 展示的技能
| 技能 | 详情 |
|---|---|
| **云基础设施** | Azure VM, NSG, Log Analytics Workspace, Data Collection Rule |
| **SIEM 管理** | Microsoft Sentinel 部署,10+ 个数据连接器配置 |
| **KQL** | 用于威胁检测、聚合、Watchlist 联接、地理扩充的自定义查询 |
| **威胁检测工程** | 两个带有计划查询、MITRE ATT&CK 映射、实体映射的自定义 Analytics rule |
| **事件响应** | 完整的 SOC 工作流:检测 → 分类 → 调查 → 补救 → 关闭 |
| **仪表板与可视化** | 带有实时攻击地图、热力图、自动刷新、柱状图的多面板 Workbook |
| **威胁情报** | IP/ASN 归属、僵尸网络模式识别、Contabo/SKYNET 行为者分析 |
| **网络安全** | NSG 规则管理、边界级别的 IP 阻断、多服务攻击面分析 |
| **SOAR** | 用于自动化事件通知的 Logic App playbook 设计与部署 |
| **进攻性安全** | 使用来自 Kali Linux 的 ncrack 和 xfreerdp 进行 RDP 暴力破解模拟 |
## 工具与技术
- Microsoft Azure (Virtual Machines, NSG, Log Analytics, Resource Groups, Azure Monitor)
- Microsoft Sentinel (SIEM) + Microsoft Defender XDR (统一门户)
- KQL — Kusto Query Language
- Monitor Agent (AMA) + Data Collection Rules (DCR)
- Sentinel Workbooks (多面板仪表板,自动刷新)
- Sentinel Watchlists (自定义地理扩充)
- Azure Logic Apps (SOAR playbook)
- Windows Server 2022 Datacenter (OpenSSH Server, IIS Web Server)
- Kali Linux (ncrack, xfreerdp 用于攻击模拟)
- ipinfo.io (IP 地理定位和 ASN 归属)
- MITRE ATT&CK 框架 (T1110, T1595)
## 道德披露
此蜜罐部署在完全隔离的 Azure VM 上,未连接到任何生产系统或敏感数据。显示的所有攻击流量均是来自外部威胁行为者的真实、未经请求的流量。该 VM 是为了研究和教育目的而故意配置为易受攻击的。所有暴力破解模拟仅针对此 VM 进行,该 VM 由作者拥有和控制。
*构建使用:Microsoft Azure · Microsoft Sentinel · KQL · Windows Server 2022 · Kali Linux*
## 架构
所有资源均部署在专用的资源组(`RG-Sentinel-Lab`,West US 区域)中:
| 组件 | 详情 |
|---|---|
| **Log Analytics Workspace** | `LAW-Sentinel-Lab` - 集中式数据存储 |
| **Microsoft Sentinel** | 工作区之上的 SIEM 层 |
| **蜜罐 VM** | Windows Server 2022 Datacenter, Standard D2s v3 |
| **网络安全组** | `DANGER_AllowAnyInbound` 规则 - 暴露所有端口;在事件响应 (IR) 期间添加了针对性的拒绝规则 |
| **数据收集规则** | `DCR-Honeypot` - Azure Monitor Agent 流式传输安全事件 + IIS 日志 |
| **暴露的服务** | RDP (3389), SSH (22 通过 OpenSSH), HTTP (80 通过 IIS) |
### 为什么要禁用防火墙?
禁用 Windows 防火墙并将 NSG 入站设置为允许所有流量,是为了最大限度地提高蜜罐的有效性。在生产环境中,这将是灾难性的配置错误,但在这里是故意的,旨在创建尽可能大的攻击面,并观察自动扫描仪和僵尸网络首先探测的内容。
### 为什么拒绝规则的优先级是 200?
NSG 规则按数字从小到大进行评估。优先级 100 已被 `DANGER_AllowAnyInbound` 占用,因此针对攻击者的特定拒绝规则被置于优先级 200。在生产环境中,“允许所有”的规则将不存在,而针对性的拒绝规则将处于较低的优先级编号,位于更宽松的规则之上。
## 实时攻击仪表板
多面板 Sentinel Workbook 可视化攻击流量,并进行 5 分钟自动刷新。
### Workbook 描述(标题块)
### 面板 1:全球攻击地图
通过自定义 Sentinel Watchlist (`AttackerGeoDataV2`) 对 IP 地址进行地理扩充,其中填充了来自 ipinfo.io 的纬度/经度。热力图按失败登录次数进行缩放。
**KQL:**
```
SecurityEvent
| where EventID == 4625
| summarize FailedLogins = count() by AttackerIP = IpAddress
| join kind=inner (_GetWatchlist('AttackerGeoDataV2')) on $left.AttackerIP == $right.IPAddress
| project AttackerIP, FailedLogins, Country, Latitude, Longitude
```
### 面板 2:攻击国家/地区 Top 10 柱状图
```
SecurityEvent
| where EventID == 4625
| where isnotempty(IpAddress)
| summarize FailedLogins = count() by AttackerIP = IpAddress
| join kind=inner (_GetWatchlist('AttackerGeoDataV2')) on $left.AttackerIP == $right.IPAddress
| summarize TotalAttempts = sum(FailedLogins) by Country
| sort by TotalAttempts desc
| take 10
```
### 最终攻击地图统计(所有时间)
| 国家/地区 | 尝试次数 | 值得注意的 ASN |
|---|---|---|
| 🇳🇱 荷兰 | 441 | SKYNET NETWORK LTD (AS214295), Liteserver |
| 🇮🇩 印度尼西亚 | 232 | PT Telekomunikasi Indonesia |
| 🇺🇸 美国 | 120 | 多家 VPS 提供商 |
| 🇻🇳 越南 | 76 | VNPT Corp |
| 🇫🇷 法国 | 46 | Contabo GmbH, OVH |
| 🇸🇬 新加坡 | 36 | Contabo Asia, Tencent |
| 🇧🇷 巴西 | 28 | BattleHost, Gamers Club |
| 🇬🇧 英国 | 26 | Contabo, Kamatera |
| 🇵🇪 秘鲁 | 22 | Red Cientifica Peruana, ON Empresas |
| 其他 | 20 | 罗马尼亚、芬兰、德国、比利时、中国香港 |
## 关键发现:SSH 攻击流量与 NOUSER 现象
在启用 OpenSSH Server 后,**出现了 5,742 个失败的身份验证事件,这些事件没有 IP 地址,账户名为 `NOUSER` 或为空白**。
### 为什么 SSH 失败在 Windows 日志中不显示 IP
这是 SSH 和 RDP 在操作系统身份验证层的一个根本区别:
当 SSH 连接在到达 Windows 身份验证**之前**失败时——例如,客户端在密钥交换之后但在发送凭据之前断开连接——Windows 会记录事件 ID 4625,但**没有可记录的 IP 上下文**,因为失败发生在 SSH 协议层而不是 Windows 安全层。
此外,Windows 上的 OpenSSH 会记录到其自己的文件 (`C:\ProgramData\ssh\logs\`) 中,与 Windows 安全事件日志分开。到达密码身份验证阶段的失败 SSH 尝试可能根本不会生成事件 ID 4625,这取决于尝试的身份验证方法。
### 这意味着什么
这 5,742 个 NOUSER 事件代表了**处于侦察阶段的自动化 SSH 扫描器**——它们探测开放的 SSH,检查支持的 身份验证方法,并在尝试凭据之前断开连接。这与针对 SSH 的僵尸网络行为一致。
### 如何正确捕获 SSH IP(生产环境方法)
- 在蜜罐旁边部署一台 **Linux VM** - Linux 的 `sshd` 日志可捕获完整的 IP 上下文
- 启用 **Azure Defender for Servers** 以获取额外的网络级遥测数据
- 在 Windows 上配置 **OpenSSH 详细日志记录 (verbose logging)**,并通过自定义 Log Analytics 数据收集规则进行摄取
- 使用 **Azure Network Watcher NSG 流日志** 来捕获所有连接级别的数据,无论身份验证结果如何
## 威胁情报观察
### Contabo GmbH - 频繁出现的基础设施
Contabo GmbH (AS51167) 是一家低成本的德国 VPS 提供商,出现在法国、新加坡和其他地区。威胁情报报告中经常将 Contabo 引用为被攻击者大量滥用的基础设施,因为其成本低、身份验证极少,并且历史上对滥用行为的响应缓慢。
### SKYNET NETWORK LTD - 头号攻击者
头号攻击者 SKYNET NETWORK LTD(AS214295,荷兰)通过同一 /24 子网 (`45.142.193.x`) 中的 3 个 IP 累计了 **441 次失败的登录尝试**。来自同一 ASN 的多个 IP 同时进行攻击,表明这是一个**自动化的僵尸网络操作**,而不是手动攻击者。
### 协调的僵尸网络行为
观察到共享相同 ASN 的多个 IP 同时针对蜜罐进行攻击(荷兰、越南/VNPT、芬兰/Bashinskii、法国/Contabo)。这与共享凭据列表的僵尸网络一致,而不是独立的攻击者。
## 激活的数据连接器
- 通过 AMA 传输的 Windows 安全事件 *(主要 - 蜜罐 VM 日志)*
- Azure Activity
- Microsoft Defender XDR
- Microsoft Defender for Endpoint
- Microsoft Defender for Cloud Apps
- Microsoft Defender for Identity
- Microsoft Entra ID Protection
- Microsoft Defender for Office 365
- Microsoft 365 Insider Risk Management
## 展示的技能
| 技能 | 详情 |
|---|---|
| **云基础设施** | Azure VM, NSG, Log Analytics Workspace, Data Collection Rule |
| **SIEM 管理** | Microsoft Sentinel 部署,10+ 个数据连接器配置 |
| **KQL** | 用于威胁检测、聚合、Watchlist 联接、地理扩充的自定义查询 |
| **威胁检测工程** | 两个带有计划查询、MITRE ATT&CK 映射、实体映射的自定义 Analytics rule |
| **事件响应** | 完整的 SOC 工作流:检测 → 分类 → 调查 → 补救 → 关闭 |
| **仪表板与可视化** | 带有实时攻击地图、热力图、自动刷新、柱状图的多面板 Workbook |
| **威胁情报** | IP/ASN 归属、僵尸网络模式识别、Contabo/SKYNET 行为者分析 |
| **网络安全** | NSG 规则管理、边界级别的 IP 阻断、多服务攻击面分析 |
| **SOAR** | 用于自动化事件通知的 Logic App playbook 设计与部署 |
| **进攻性安全** | 使用来自 Kali Linux 的 ncrack 和 xfreerdp 进行 RDP 暴力破解模拟 |
## 工具与技术
- Microsoft Azure (Virtual Machines, NSG, Log Analytics, Resource Groups, Azure Monitor)
- Microsoft Sentinel (SIEM) + Microsoft Defender XDR (统一门户)
- KQL — Kusto Query Language
- Monitor Agent (AMA) + Data Collection Rules (DCR)
- Sentinel Workbooks (多面板仪表板,自动刷新)
- Sentinel Watchlists (自定义地理扩充)
- Azure Logic Apps (SOAR playbook)
- Windows Server 2022 Datacenter (OpenSSH Server, IIS Web Server)
- Kali Linux (ncrack, xfreerdp 用于攻击模拟)
- ipinfo.io (IP 地理定位和 ASN 归属)
- MITRE ATT&CK 框架 (T1110, T1595)
## 道德披露
此蜜罐部署在完全隔离的 Azure VM 上,未连接到任何生产系统或敏感数据。显示的所有攻击流量均是来自外部威胁行为者的真实、未经请求的流量。该 VM 是为了研究和教育目的而故意配置为易受攻击的。所有暴力破解模拟仅针对此 VM 进行,该 VM 由作者拥有和控制。
*构建使用:Microsoft Azure · Microsoft Sentinel · KQL · Windows Server 2022 · Kali Linux*标签:KQL, Microsoft Sentinel, PE 加载器, 库, 应急响应, 底层分析, 红队行动, 蜜罐, 证书利用