JDanielRod/Incident-Response-Scenario1
GitHub: JDanielRod/Incident-Response-Scenario1
基于 NIST 800-61 框架的 Azure 环境暴力破解攻击检测与事件响应实践指南,包含完整 KQL 查询和 Sentinel 警报规则配置流程。
Stars: 0 | Forks: 0
# 🚨 事件响应:暴力破解尝试检测

## 场景背景
作为一家严重依赖 Microsoft Azure 服务的大型金融服务机构的安全分析师,我观察到多次登录失败尝试,特别是在非工作时间针对特权账户的攻击。这引发了对暴力破解攻击或凭证填充活动的担忧。
我的目标是遵照 **NIST 800-61** 指南,调查、检测并缓解这一潜在威胁。
## 🔍 **目标:发现暴力破解并创建 Sentinel 计划查询规则**
在 Log Analytics 中使用 KQL 实施 **Sentinel Scheduled Query Rule**,以检测同一远程 IP 地址在 5 小时内尝试登录同一 Azure VM 失败超过 10 次的情况。
## 🛠️ **平台和工具**
- **Microsoft Sentinel**
- **Microsoft Defender for Endpoint**
- **Kusto Query Language (KQL)**
- **Windows 10 Virtual Machines (Microsoft Azure)**
## **事件响应阶段**
### 1️⃣ 准备
1. **策略和程序:**
- 建立处理暴力破解尝试、账户锁定和账户恢复的协议。
- 包含针对通知、账户锁定和报告可疑活动的预定义操作。
2. **访问控制和日志记录:**
- 启用 Azure AD 中所有登录尝试的日志记录。
- 与 **Microsoft Defender for Identity** 和 **Azure Sentinel** 集成,以实现自动检测和警报。
3. **培训:**
- 培训安全团队处理基于凭证的攻击,包括暴力破解和凭证填充。
4. **沟通计划:**
- 制定事件期间 IT 支持和特权账户持有人的升级计划。
### 2️⃣ 检测与分析
#### 观察结果:
```
DeviceFileEvents
| top 20 by Timestamp desc
```
```
DeviceNetworkEvents
| top 20 by Timestamp desc
```
```
DeviceProcessEvents
| top 20 by Timestamp desc
```
```
DeviceLogonEvents
| where TimeGenerated >= ago(5h)
| where ActionType == "LogonFailed"
| summarize NumberOfFailures = count() by RemoteIP, ActionType, DeviceName
| where NumberOfFailures >= 10
```

- **三台 Azure VM** 遭到了来自 **三个公共 IP** 的暴力破解尝试:
| **远程 IP** | **失败尝试次数** | **目标机器** |
|---------------------|---------------------|-----------------------|
| `87.120.127.241` | 116 | `linux-agent-scan-sam` |
| `194.0.234.44` | 100 | `bennyvirtual` |
| `10.0.0.8` | 22, 20 | `windows-server,ryan-final-lab ` |

- 用于检测失败登录的 KQL 查询:
DeviceLogonEvents
| where RemoteIP in ("87.120.127.241", "194.0.234.44", "10.0.0.8" )
| where ActionType != "LogonFailed"
**结果:** 未检测到来自这些 IP 的成功登录。
#### 分析步骤:
1. **审查模式:**
- 调查了 Azure AD 日志中的失败登录阈值。
- 识别了非工作时间的时序和可疑的 IP 地理位置。
2. **记录发现:**
- 保留了详细记录失败尝试的频率、来源和目标的日志。
3. **优先级排序:**
- **高优先级:** 在非工作时间被攻击的特权账户。
- **低优先级:** 孤立的、特定用户的失败尝试。
### 3️⃣ 遏制
#### 立即行动:
1. **设备隔离:**
- 使用 **Microsoft Defender for Endpoint** 隔离受影响的设备。
2. **网络安全组 (NSG) 更新:**
- 限制仅授权 IP 进行 RDP 访问。
- 阻止所有与失败登录尝试相关的外部 IP。
3. **反恶意软件扫描:**
- 对受影响设备进行扫描,以排查潜在的入侵。
### 4️⃣ 根除与恢复
1. **密码重置:**
- 重置受攻击账户的密码。
- 对特权账户强制执行强密码策略。
2. **MFA 强制执行:**
- 为所有高价值账户启用多因素认证。
3. **地理位置封锁:**
- 阻止来自高风险地理位置的登录尝试。
### 5️⃣ 事件后活动
1. **经验教训:**
- 检测是否快速有效?
- 特权账户是否得到了充分保护?
2. **系统改进:**
- 调整登录阈值以实现更快的检测。
- 扩展员工密码安全培训。
3. **文档记录:**
- 记录所有发现、采取的行动以及未来的建议。
### **步骤 1:创建警报规则**
如何在 Microsoft Sentinel 中创建警报规则:进入 Microsoft Sentinel,点击你的资源组,点击配置,点击分析,点击旁边的 + 创建,点击计划查询规则。
点击 **"Scheduled query rule"** 后,你将看到 **Analytics rule details** 选项卡。填写以下字段:
1. **名称**:
- 输入规则名称,例如 **"🔥 Brute Force Attack Detection 🔐"**。
2. **描述**:
- 添加关于规则功能的简要描述,例如,
*"🔍 This rule detects potential brute-force login attempts based on failed sign-ins exceeding a defined threshold."*
3. **严重性**:
- 选择严重性级别:
- **Low** 🟢
- **Medium** 🟡
- **High** 🔴 (推荐用于暴力破解检测)
4. **策略**:
- 选择与暴力破解相关的 **MITRE ATT&CK Tactics**:
- **🎯 Initial Access**
- **🔑 Credential Access**

5. **规则类型**:
- 选择 **Scheduled 🕒**。
6. **设置规则频率**:
- 选择查询运行的频率(例如,**Every 5 minutes ⏱️**)。
7. **设置查询结果回溯**:
- 定义查询的时间窗口(例如,**Last 1 hour ⏳**)。
### **步骤 2:添加 KQL 查询**
在 **Set rule query** 步骤中,粘贴你的 KQL 查询以检测暴力破解尝试:
```
DeviceLogonEvents
| where TimeGenerated >= ago(5h)
| where ActionType == "LogonFailed"
| summarize NumberOfFailures = count() by RemoteIP, ActionType, DeviceName
| where NumberOfFailures >= 10s
```

- 🛠️ 此查询筛选 **sign-in logs** 中的失败登录尝试并识别异常模式。
- 💡 根据你的环境调整阈值(例如,`> 5 failed attempts`)。
### **步骤 3:定义事件设置**
1. **Create incidents based on alert results**:确保选中此项 ✅。
2. **Group alerts into incidents**:
- 选择 **"🧩 Grouped into a single incident if they share the same entities"** 以避免重复。
### **步骤 4:添加操作和自动化**
1. 配置规则激活时触发的 **actions**:
- 添加 **Playbook 🛠️** 以进行自动响应,例如:
- 封锁 IP 🚫。
- 向你的安全团队发送电子邮件 📧。
- 触发 Teams 或 Slack 通知 💬。
2. 示例 Playbook:一个发送 **email notification 📤** 给 SOC 的 Logic App。
### **步骤 5:审查并启用**
1. **审查所有内容** 以确保正确无误:
- Name 🔖, description 📝, KQL query 📊, frequency ⏱️, 和 action settings ⚙️。
2. 点击 **"Create"** 以启用规则 🎉。
### **步骤 6:验证你的规则**
1. 通过模拟暴力破解攻击或使用样本日志来测试规则:
- 运行触发 **failed login attempts** 的脚本(安全模拟) 🧑💻。
- 使用 KQL 重放历史日志 📜。
2. 验证警报是否已生成 🚨 以及事件是否按预期分组 ✅。
## 🚫 **结果**
- **攻击状态:** 暴力破解尝试 **未成功**。
- **建议:** 锁定所有 VM 的 NSG 规则,并对特权账户强制执行 MFA。
🎉 **状态:** 事件已解决。无需进一步操作。
标签:AMSI绕过, Azure AD, Azure 虚拟机, BurpSuite集成, KQL, Kusto Query Language, Microsoft Defender for Endpoint, Microsoft Sentinel, NIST 800-61, PE 加载器, PoC, SIEM 规则, 免杀技术, 凭据攻击, 凭证填充, 威胁检测, 安全运营中心, 定时查询规则, 异常登录, 撞库, 暴力破解, 暴力破解检测, 红队行动, 网络安全, 网络映射, 身份与访问管理, 金融安全, 隐私保护