kalen1c/sentinel-kql-threat-research

GitHub: kalen1c/azure-zerotrust-secops-pipeline

一个基于 Microsoft Sentinel 的 Azure 蜜罐 SIEM 架构项目,用于记录和分析全球 MITRE T1110 暴力破解威胁遥测数据,并通过边缘处理大幅降低云日志摄取成本。

Stars: 0 | Forks: 0

# sentinel-kql-threat-research Azure SIEM 架构,用于记录和分析全球 MITRE T1110 威胁遥测数据。采用 Microsoft Sentinel pipeline、查询 REST API 的自定义 PowerShell 脚本、现代化的 DCR 摄取、KQL 威胁狩猎以及 GitHub Pages 交互式事件地图构建。 # 架构与威胁情报简报:MITRE T1110 分析 ## 1. 执行摘要 本项目设计了一个高弹性、成本优化的 Azure 蜜罐,旨在捕获并分析实时的 MITRE T1110 (Brute Force) 和 T1110.003 (Password Spraying) 攻击活动。通过利用自定义的 PowerShell 边缘处理、Azure Data Collection Rules (DCR) 以及 Microsoft Sentinel,该架构将 SIEM 摄取成本降低了 95% 以上。 该架构通过将海量的身份验证失败记录转化为结构化指标,弥补了原始 Windows 事件日志与业务风险之间的鸿沟,使安全团队能够基于实时威胁情报部署有针对性的身份和边界防御。 ## 2. 架构与弹性控制 为了在严格控制易受攻击节点的爆炸半径的同时模拟生产环境,我们设计了以下安全与成本控制措施: ### 成本与 FinOps 控制 * **有状态日志聚合:** 为了防止在高速攻击期间出现云摄取计费激增,PowerShell pipeline 充当了边缘处理器。它利用内存中的哈希表对 IP 地址进行批处理并统计尝试频率,然后以 5 分钟为间隔将去重后的指标刷新到 Azure。这减少了 95% 以上的云摄取成本,同时保持了数据量的准确性。 * **自动化成本熔断机制:** 作为应对产生海量日志集的容量型 DDoS 攻击的故障保护机制,配置了 Azure Action Group。如果摄取支出超过了预定义的微预算,webhook 将自动切断 DCR pipeline 并释放 VM,以防止财务超支。 * **可突发计算策略 (B-Series):** 蜜罐运行在价格实惠的 Azure B-Series VM 上。由于暴力破解攻击通常是突然爆发的,而不是持续不断的流,因此这种设置通过在安静期间积攒 CPU 额度来节省资金,以便在攻击真正发生时处理繁重的处理负载。 * **Basic Logs 数据分层:** 默认情况下,Azure 对日志摄取收取高级费率。由于该项目会产生大量高容量、低复杂度的数据,目标表被明确路由到 Azure 更便宜的 "Basic Logs" 层。这显著降低了摄取成本,同时保持数据可供 Sentinel 仪表板使用。 ### 安全与隔离 (SecOps) * **零信任密钥管理 (PoLP):** API 身份验证完全绕过了本地磁盘存储。在最小权限原则 (PoLP) 下,VM 的系统分配托管身份被限制为仅能读取单个 Azure Key Vault 密钥。脚本查询实例元数据服务 (IMDS) 以获取 OAuth 2.0 token,并将 API 密钥动态直接检索到易失性内存 (RAM) 中。 * **出口过滤与 VNet 隔离:** 部署暴露蜜罐的一个主要隐患是,它在受损后可能会被用作跳板或 DDoS 中继。为了消除这种隐患,虚拟网络 (VNet) 实施了严格的网络安全组 (NSG) 出口规则,明确丢弃所有发往内部 RFC 1918 IP 范围和未经批准的外部 endpoint 的出站流量。 * **输入清理 (反日志投毒):** 为了防止 CSV 注入和 SIEM 数据库损坏,提取 pipeline 严格清理所有捕获的数据。在格式化之前,会从 Windows `TargetUserName` 字段中剔除逗号、特殊字符和 KQL 运算符,从而中和恶意的注入尝试。 * **主机级 IMDS 锁定:** 提取脚本需要与 Azure 的内部元数据服务 (IMDS) 通信以检索其安全 token。为了防止系统受损后的凭证窃取,Windows 防火墙规则阻止了除运行脚本的特定服务账户之外的所有 IMDS 访问。 ### 可靠性与数据工程 (SRE) * **API 优雅降级:** 该 pipeline 在设计上能够原生抵御第三方故障。如果外部地理位置 REST API 超时或限制请求,脚本将捕获异常,应用 `Geo_Unavailable` 占位符,并继续处理,从而确保 SIEM 永远不会丢失关键的身份验证警报。 * **进程弹性与日志轮转 (SRE 看门狗):** 一个辅助后台 daemon 监控主提取脚本,以确保连续生成遥测数据。如果主进程发生故障,它会启动自动重启,并强制执行本地日志轮转(如果文本文件超过 50MB 则进行归档),以防止本地磁盘耗尽。此外,边缘节点强制执行严格的 NTP 同步以防止时钟偏移,从而确保 SIEM 速度图表的绝对时间序列完整性。 * **摄取时数据转换:** 为了优化数据库查询性能并降低存储开销,在提交到 Log Analytics Workspace 之前,直接在 DCR 层使用 Kusto Query Language (KQL) 将原始的逗号分隔遥测数据解析为离散的 schema 列。 ## 3. 架构拓扑与数据流 ``` graph TD subgraph Public_Internet [Public Internet] A[External Threat Actors] F[ipgeolocation.io REST API] NTP[Stratum 1 NTP Time Server] J[Interactive Geospatial Map] end subgraph Azure_VNet [Azure Virtual Network / Honeypot Isolation] NSG[Network Security Group: Allow 3389 / Drop Egress] B(Windows Server 2022 B-Series VM: TCP/3389 Open) FW[Windows Host Firewall: IMDS Lockdown] C{PowerShell Edge Processor} D[(RAM Cache / Batching)] LogFile[(Local Text File)] K[SRE Watchdog Daemon] G[Azure Monitor Agent] NTP -->|Clock Sync| B A -->|Automated Credential Stuffing| NSG NSG -->|Inbound TCP/3389| B B -.->|Blocked RFC 1918 & Unapproved Ext Outbound| NSG B -->|Event ID 4625| C K -.->|Process Health| C K -.->|Rotates at 50MB| LogFile C -->|Sanitise Inputs & Check State| D C -->|HTTP GET Request| F F -->|Geo & ASN Payload| C C -.->|Timeout/Fail: Apply Geo_Unavailable Fallback| D C -->|5-Minute Batch Flush| LogFile LogFile -->|Read Custom Logs| G end subgraph Azure_PaaS [Azure Platform as a Service / Management Plane] E[Azure Key Vault] IMDS[Azure Instance Metadata Service] Entra[Microsoft Entra ID / Managed Identity] H[Data Collection Rule: Ingestion-Time KQL] I[(Log Analytics Workspace: Basic Logs Tier)] L[Microsoft Sentinel SIEM] CB[Azure Cost Circuit Breaker / Action Group] WH[Webhook / Automation Runbook] C -->|Request Token| FW FW -->|Allow Authorized Service Account| IMDS IMDS -->|Request Auth| Entra Entra -->|Mint OAuth 2.0 Token| IMDS IMDS -->|Return Token| C C -->|Fetch Secret via Token| E E -->|Return API Key to RAM| C G -->|Forward Telemetry| H H -->|Transform & Route| I I -->|KQL Analytics & Alerting| L L -->|JSON Export| J I -.->|Monitor Ingestion Volume| CB CB -.->|Greater than $5 Threshold Trigger| WH WH -.->|Sever Pipeline API Call| H WH -.->|Deallocate VM API Call| B end ``` ## 4. 仓库导航 (即将推出) * `/planning/` * `/visualisations/` * `/incident-response/` * `/infrastructure/` * `/scripts/` * `/dashboards/` **免责声明:** *本项目是在严格控制、隔离的云环境中进行的,出于教育和收集威胁情报的目的。基础设施经过了强化以防止横向移动,并明确拒绝出站流量,以防止其被用作跳板。所有捕获的数据(如攻击者 IP)均已进行匿名化或哈希处理(在适当情况下),以符合道德共享标准。* 项目方法论:为了将我的云安全技能提升到标准教程之外,我使用 AI 协助确立了初始项目参数并规划了目标架构。除了最初的蓝图之外,所有的编码、云基础设施配置、故障排除和学习都是我亲自动手完成的。以下提交记录记录了我从零开始积极构建这个复杂系统的旅程。 你可以查看我的技术障碍、bug 修复、规划和构建进度,位于 `/Troubleshooting & Planning Log/`
标签:AI合规, Azure Sentinel, IPv6, KQL, PowerShell, 威胁情报, 开发者工具, 蜜罐, 证书利用