TerrCyber/sentinel-threat-hunt-brute-force

GitHub: TerrCyber/sentinel-threat-hunt-brute-force

一份基于NIST SP 800-61框架的暴力破解检测调查报告,提供Microsoft Sentinel环境下的KQL查询示例和完整的事件响应流程文档。

Stars: 0 | Forks: 0

# SOC 事件响应报告 ## 暴力破解检测调查 image **框架:** NIST SP 800-61 **环境:** Microsoft Sentinel / Microsoft Defender for Endpoint # 概述 本项目记录了安全运营中心 (SOC) 对 Microsoft Sentinel 环境中检测到的暴力破解登录攻击的调查。 调查利用从 Microsoft Defender for Endpoint 收集的遥测数据,并通过 Microsoft Sentinel 和 Azure Log Analytics 进行分析。 本次调查的目标是: - 检测反复的认证失败 - 识别潜在的暴力破解登录尝试 - 验证是否发生了成功的入侵 - 实施遏制措施以减少攻击面 # 事件响应框架 本次调查遵循 **NIST SP 800-61 事件响应生命周期**: 1. 准备 2. 检测与分析 3. 遏制、根除和恢复 4. 事后活动 5. 结束 # 1. 准备 在事件发生之前,环境中已建立了监控和响应能力。 ## 角色与职责 **SOC 分析师** - 监控安全警报 - 调查事件 - 记录调查结果 **安全运营团队** - 提供升级和调查支持 **事件响应负责人** - 协调遏制和补救措施 ## 安全工具 - Microsoft Sentinel – 集中式 SIEM 监控和分析 - Microsoft Defender for Endpoint – 端点遥测数据收集 - Azure Log Analytics Workspace – 集中式日志存储和 KQL 查询 ## 日志管道 虚拟机上的认证尝试会生成本地日志条目。 这些日志经过以下流程: 1. 由 Microsoft Defender for Endpoint 收集 2. 存储在 **DeviceLogonEvents** 表中 3. 转发至 **Azure Log Analytics** 4. 由 **Microsoft Sentinel 分析规则** 进行分析 此管道能够检测可疑的认证活动,例如暴力破解登录尝试。 # 2. 检测与分析 ## 警报规则创建 在 Microsoft Sentinel 中创建了一个计划分析规则,用于检测暴力破解登录尝试。 ### 检测逻辑 该规则检测在五小时内,远程 IP 地址对同一虚拟机反复认证失败的情况。 ## 检测查询 ``` DeviceLogonEvents | where ActionType == "LogonFailed" and TimeGenerated > ago(5h) | summarize EventCount = count() by RemoteIP, DeviceName | where EventCount >= 50 ``` ## 查询说明 该查询执行以下操作: - 搜索 **DeviceLogonEvents** 表 - 筛选操作类型为 **LogonFailed** 的事件 - 将结果限制在 **过去五小时内** - 按以下方式对事件进行分组: - 远程 IP 地址 - 目标设备名称 - 计算失败登录尝试的次数 - 返回发生 **50 次或更多次失败** 的结果 # 警报结果 | 远程 IP | 设备名称 | 失败尝试次数 | |----------|-------------|----------------| | 47.97.127.96 | otlab.z5bvzlx0idectyct0okhu05h | 134 | | 10.0.0.8 | vmlinux.z5bvzlx0idectyct0okhu05h | 165 | | 20.113.160.179 | ridge-vm-test | 260 | | 88.214.25.124 | cruxe | 61 | | 210.211.124.110 | analystyd | 69 | | 46.202.141.248 | terr-mde-test | 86 | ## 观察 多个外部 IP 地址对多台虚拟机尝试了反复的认证。 观察到的最高失败尝试量为: - **260 次失败登录尝试** - **源 IP:** 20.113.160.179 - **目标主机:** ridge-vm-test 此外,一个内部 IP 地址 **10.0.0.8** 也产生了反复的失败登录尝试。由于这是一个私有地址,它很可能源自实验室环境内部的系统或自动化进程。 这些活动符合 MITRE ATT&CK 技术: | 技术 | ID | |----------|----| | 暴力破解 | T1110 | # 验证成功登录 为了确定暴力破解尝试是否导致了成功入侵,执行了后续查询。 ## 成功验证查询 ``` let attackers = dynamic([ "47.97.127.96", "20.113.160.179", "88.214.25.124", "210.211.124.110", "46.202.141.248" ]); DeviceLogonEvents | where ActionType == "LogonSuccess" | where RemoteIP in (attackers) | project TimeGenerated, DeviceName, AccountName, RemoteIP | order by TimeGenerated desc ``` ## 结果 查询**未返回**来自已识别攻击 IP 地址的成功认证事件。 这证实了暴力破解尝试**未导致成功入侵**。 # 3. 遏制、根除和恢复 ## 遏制 为了防止进一步的暴力破解登录尝试,修改了受影响 Azure 虚拟机关联的 **网络安全组 (NSG)**。 NSG 被配置为限制入站 RDP 流量(端口 3389),使得**只有分析师的本地工作站 IP 地址**可以访问 VM。 来自公共互联网的所有其他入站流量均被拒绝。 ## 实施的 NSG 安全控制 | 规则 | 动作 | |-----|-------| | 允许来自分析师本地 IP 的 RDP | 允许 | | 所有其他入站 RDP 尝试 | 拒绝 | | 对 VM 的公共互联网访问 | 阻止 | 此配置有效移除了公开暴露的攻击面。 ## 企业安全建议 基于本次调查的结果,提出了以下改进建议: - 仅限受信任的 IP 范围进行入站 RDP 访问 - 防止远程管理服务暴露于公共互联网 - 使用 **Azure Policy** 强制执行这些限制 ## 根除 暴力破解攻击**未导致成功入侵**。 因此: - 无需移除恶意软件 - 未检测到持久化机制 - 未确认凭据泄露 无需采取根除措施。 ## 恢复 系统保持运行且未受影响。 在实施更新的网络安全组配置后,系统恢复至正常监控状态。 # 4. 事后活动 遏制行动完成后,进行了事后审查。 ## 调查结果记录 记录了以下调查详情: - 使用的检测规则 - 调查期间执行的 KQL 查询 - 造成失败认证尝试的 IP 地址 - 受害虚拟机 - 验证未发生成功登录 - 实施的网络安全组变更 ## 经验教训 本次调查凸显了**公开暴露的远程桌面协议 (RDP) 服务**相关的风险。 尽管攻击未成功,但这表明了将管理访问权限限制在受信任来源的重要性。 建议的改进措施包括: - 使用网络安全组限制入站访问 - 防止虚拟机在开放 RDP 访问的情况下部署 - 通过 Azure Policy 强制执行安全基线 # 5. 结束 完成调查和遏制行动后,对环境进行了审查,确认不存在进一步的恶意活动。 ## 最终验证步骤 - 确认未发生来自攻击者 IP 地址的成功登录事件 - 验证网络安全组现已限制 RDP 访问 - 确保所有调查记录已归档 ## 事件分类 **真阳性 – 未入侵** 通过日志分析成功检测并验证了暴力破解攻击,但**未导致系统入侵**。 # 使用工具 - Microsoft Sentinel - Microsoft Defender for Endpoint - Azure Log Analytics - Kusto Query Language (KQL) # 关键总结 - 暴露在互联网上的 RDP 服务会招致自动化暴力破解攻击 - Microsoft Sentinel 检测规则可以识别反复的认证失败 - 限制 RDP 访问可显著减少攻击面 - 安全策略应防止管理服务公开暴露
标签:Azure, EDR, KQL, Microsoft Defender for Endpoint, Microsoft Sentinel, NIST 800-61, PoC, 安全运营中心, 密码攻击, 暴力破解, 登录日志, 端点安全, 红队行动, 网络安全, 网络映射, 脆弱性评估, 补丁管理, 身份认证安全, 隐私保护