agbekou/Cloud-Based-Threat-Hunting

GitHub: agbekou/Cloud-Based-Threat-Hunting

一个基于Azure环境的云威胁狩猎实验室,演示如何使用KQL分析网络流量日志、识别异常访问模式并进行取证分诊的完整方法论。

Stars: 0 | Forks: 0

# 基于云的威胁狩猎实验室 ### **目标** 在 Microsoft Azure 环境中主动搜寻潜在的数据泄露和未授权的地理访问。目标是利用 **Kusto Query Language (KQL)** 审计网络流,识别高风险流量模式,并对可疑的外部连接进行取证分流。 ### **掌握的技能** * **云取证:** 分析 `NTANetAnalytics` 日志以重建网络活动。 * **KQL 熟练度:** 使用过滤、聚合 (`summarize`) 和时间序列分析来解析大型数据集。 * **流量模式分析:** 基于地理来源和基于时间的流量激增来识别异常。 * **威胁分诊:** 执行声誉分析并区分“误报”和“真阳性”。 ### **使用的工具** * **Azure Log Analytics Workspace:** 查询安全日志的中央存储库。 * **Kusto Query Language (KQL):** 数据分析的主要引擎。 * **VirusTotal:** 用于外部 IP 声誉检查和 OSINT 验证。 ### **采取的步骤** #### **1. 地理过滤与基线建立** 调查首先通过隔离所有源自美国以外的“允许”流量开始。这有助于建立一个绕过初始防火墙规则的国际连接基线。 ``` NTANetAnalytics | where Country != "us" and FlowStatus == "Allowed" ``` ![Azure 威胁狩猎 1](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/854025d46c035246.jpg) #### **2. 定量聚合** 在识别出 **1,092 个唯一流** 后,我使用 `summarize` 运算符对流量进行分类。这让我能够查看相对于流状态的流量体积,确保没有“拒绝”的流量伪装成成功的连接。 ``` NTANetAnalytics | where Country != "us" and FlowStatus == "Allowed" | summarize Count = count() by FlowStatus ``` #### **3. 时间分析(时间序列)** 通过在时间图表中可视化流,我发现在 **12:00 AM 到 10:00 AM** 之间活动显著激增。识别这一窗口对 SOC 分析师至关重要,因为它通常指向自动化脚本、计划任务或外国工作时间内的活动。 ![Azure 威胁狩猎 2](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d44fbea87c035248.jpg) #### **4. 带宽分诊与泄露风险** 为了识别数据泄露风险,我调整查询以分析 `ByteSrcToDest`。通过按最高字节计数排序,我分离出了传输数据量最大的顶级公共源 IP。 #### **5. OSINT 验证与判定** 最后一步涉及通过 **VirusTotal** 对识别出的高带宽 IP 执行声誉检查。 ![Azure 威胁狩猎 3](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6581af4f99035250.jpg) ## **调查结果:** 所有识别出的 IP 均返回了干净的结果。这项练习是一个重要的提醒:虽然“可疑”模式(外国流量 + 非工作时间活动)需要调查,但必须进行彻底的验证,以避免因误报而导致的职业倦怠。
标签:Ask搜索, Azure, ESC4, IP 地址批量处理, KQL, Kusto Query Language, NTA, OSINT, VirusTotal, 云取证, 云计算, 地理位置过滤, 威胁情报, 安全运营中心, 开发者工具, 异常检测, 数据渗漏, 日志分析工作区, 时间序列分析, 网络安全, 网络映射, 网络流量分析, 规则引擎, 误报分析, 防御监控, 隐私保护