AzaldoMAZ/Azure-SOC-Lab-Brute-Force-Detection-Automated-Response-

GitHub: AzaldoMAZ/Azure-SOC-Lab-Brute-Force-Detection-Automated-Response-

基于 Azure Sentinel 和 Logic Apps 构建的云原生 SOC 实验室,实现从 Windows 安全事件收集、KQL 检测分析到自动化事件响应的完整安全运营流水线。

Stars: 1 | Forks: 0

# 🛡️ 案例研究:使用 Azure Sentinel 和 Logic Apps 构建云原生 SOC ### *端到端威胁检测、地理可视化分析与自动化事件响应* ## 📑 1. 概述 在现代云环境中,安全团队常常被“日志噪音”所淹没。本项目在 Microsoft Azure 中构建了一个高保真度的**安全运营中心 (SOC)** 实验室,旨在解决手动分类的问题。 通过利用 **Microsoft Sentinel (SIEM)** 和 **Azure Logic Apps (SOAR)**,我构建了一个自动化流水线,用于接收来自 Windows 端点的原始遥测数据,通过 **Kusto Query Language (KQL)** 应用高级检测逻辑,并执行确定性响应预案。最终结果是构建出一个系统,能够将 **1,000,000+ 条原始事件**转化为少量可操作的事件,并通过 Teams 和 Email 实现准实时通知。 ## 🏗️ 2. 高层架构设计 该架构专为**可扩展性**和**弹性**而设计,遵循行业标准的“收集、检测、调查和响应”框架。 ``` graph TD subgraph "Attack Surface" VM["Windows VM (AZALDO-NET)"] PUB["Public IP (Exposed RDP/SMB)"] end subgraph "Data Plane (Ingestion)" MMA["Log Analytics Agent / AMA"] LAW["Log Analytics Workspace (law-soc-lab-0000)"] end subgraph "Control Plane (SIEM)" Sentinel["Microsoft Sentinel"] KQL["KQL Detection Engine"] Incidents["Incident Management"] end subgraph "Response Plane (SOAR)" Auto["Automation Rules"] Logic["Logic App Playbook"] Teams["Teams SOC Channel"] Mail["Exchange Online Alert"] end VM -->|Security Events| MMA MMA -->|Event ID 4625| LAW LAW --> Sentinel Sentinel --> KQL KQL -->|Threshold Match| Incidents Incidents --> Auto Auto --> Logic Logic --> Teams Logic --> Mail ``` ## 📡 3. 阶段 1:基础设施与遥测数据收集 ### **3.1 易受攻击的目标** 为了生成真实世界的数据,我部署了一台 **Windows 10 Pro 虚拟机 (`AZALDO-NET`)**,并故意将其网络安全组 (NSG) 配置为允许常见管理端口 (3389/445) 上的入站流量。这种“蜜罐”方法确保了源源不断的全球暴力破解遥测数据流。 ### **3.2 流水线** - **Log Analytics Workspace (LAW)**:作为中央数据湖。所有原始日志均存储在此处,并配有自定义保留策略。 - **数据收集**:我利用 **Azure Monitor Agent (AMA)** 来定位特定的安全事件流,特别是 `SecurityEvent` 表。 ## 🧠 4. 阶段 2:检测工程(KQL 大脑) 该实验室的核心价值在于**分析规则**。对事件 ID 4625 的简单告警过于嘈杂。因此,我开发了一种专注于**持续性**和**量级**的复杂检测逻辑。 ### **KQL 技术解析:** ``` SecurityEvent | where EventID == 4625 // Filter for Failed Logons | where IpAddress != \"\" // Exclude internal system noise | summarize StartTime = min(TimeGenerated), EndTime = max(TimeGenerated), FailedAttempts = count() by Account, IpAddress, Computer | where FailedAttempts > 15 // High-confidence threshold | extend AccountCustomEntity = Account, IPCustomEntity = IpAddress, HostCustomEntity = Computer ``` **为什么此逻辑有效:** 1. **汇总**:它按攻击者 IP 和目标账户对攻击进行分组,为每次暴力破解活动创建一个单独的“故事”。 2. **阈值设定**:通过将限制设置为 `> 15`,我们忽略了轻微的用户输入错误,从而捕获自动化工具(Hydra、Medusa 等)。 3. **实体映射**:这对 SOAR 至关重要。通过定义 `IPCustomEntity`,Microsoft Sentinel 将攻击者的 IP 作为**变量**传递给我们的 Logic App。 ## 🛡️ 5. 阶段 3:MITRE ATT&CK® 映射 该实验室不仅仅是在“检测各种东西”——它与全球范围内的威胁行为者框架保持一致。 | 战术 | 技术 | ID | 缓解措施 | | :--- | :--- | :--- | :--- | | **Credential Access (凭证访问)** | Brute Force (暴力破解) | T1110 | Sentinel 检测 + 自动化封禁 | | **Initial Access (初始访问)** | Valid Accounts (有效账户) | T1078 | 对失败尝试的实时监控 | | **Reconnaissance (侦察)** | Active Scanning (主动扫描) | T1595 | 攻击地图可视化 | ## 🤖 6. 阶段 4:SOAR 编排 (Logic Apps) 当创建事件时,**自动化规则**(相当于“总机”)会将事件路由到我定制的 **Logic App Playbook**。 ### **Playbook 逻辑流程:** 1. **触发器**:`When a Microsoft Sentinel incident is created` (当创建 Microsoft Sentinel 事件时)。 2. **实体提取**:Playbook 解析事件的 JSON 输出以查找 `IP` 实体。 3. **上下文通知**: - **Adaptive Card (自适应卡片)**:向 `#SOC-LAB` 频道发送格式化的卡片。 - **包含详情**:事件名称、严重性、攻击者 IP,以及指向 Sentinel 调查图谱的深层链接。 4. **高管通知**:发送正式的 V2 Outlook 邮件用于存档,并为高层管理人员提供可见性。 ## 🗺️ 7. 阶段 5:可视化分析(全球攻击地图) 为了提供高管级别的可见性,我设计了一个 **Sentinel Workbook**,将 `SecurityEvent` 表中的 `IpAddress` 映射到地理坐标。 ### **数据洞察:** - **量级**:该实验室在 24 小时的时间窗口内处理了 **约 1,000,000+ 次失败的登录**。 - **主要来源地**:美国格伦多拉 (263,000+ 次尝试),其次是葡萄牙布拉加。 - **实用性**:这种可视化使分析师能够识别“热点区域”,并根据地理风险 调整 NSG/防火墙规则。 ## 🕵️ 8. 分析师工作流:分类体验 在真实的 SOC 中,该实验室赋能的工作流如下所示: 1. **09:00:05**:位于荷兰的攻击者启动了暴力破解脚本。 2. **09:05:00**:KQL 规则在 5 分钟内检测到 50 次失败尝试;创建事件 #856。 3. **09:05:02**:Logic App 触发;Teams 频道“提醒”分析师。 4. **09:05:10**:分析师看到告警,点击链接,并查看**调查图谱**以确认攻击者是否已成功入侵其他机器。 5. **09:06:00**:事件被关闭/修复。 ## 🛠️ 9. 挑战与技术解决方案 - **挑战**:初始的 KQL 过于敏感,合法的管理员失误也会触发告警。 - **解决方案**:提高了阈值,并实现了 `bin(TimeGenerated, 5m)` 以查找活动突发,而不是持续缓慢的噪音。 - **挑战**:由于 JSON 嵌套,从 Logic Apps 中提取 IP 实体可能比较棘手。 - **解决方案**:在 Logic Apps 中使用原生的 `Entities - Get IPs` Sentinel 连接器进行干净的数据解析。 ## 🔮 10. 未来路线图 - [ ] **威胁情报集成**:在 Logic App 中自动查询 **AbuseIPDB** 或 **VirusTotal**,以查看该 IP 是否已被确认为恶意 IP。 - [ ] **自动化遏制**:在 Teams 中添加“审批”步骤;如果分析师点击“阻止”,Logic App 会自动更新 Azure NSG 以拒绝该 IP。 - [ ] **蜜标实现**:创建一个带有 64 字符密码的虚假“管理员”账户,以触发高危告警。
标签:AMSI绕过, Azure, Azure Logic Apps, KQL, Kusto查询语言, Microsoft Sentinel, Playbook, SOAR, SOC实验室, Windows安全事件, 云原生SOC, 免杀技术, 威胁检测, 安全告警, 安全运营中心, 攻击分析, 暴力破解检测, 红队行动, 网络安全, 网络映射, 自动化响应, 隐私保护