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"
```

#### **2. 定量聚合**
在识别出 **1,092 个唯一流** 后,我使用 `summarize` 运算符对流量进行分类。这让我能够查看相对于流状态的流量体积,确保没有“拒绝”的流量伪装成成功的连接。
```
NTANetAnalytics
| where Country != "us" and FlowStatus == "Allowed"
| summarize Count = count() by FlowStatus
```
#### **3. 时间分析(时间序列)**
通过在时间图表中可视化流,我发现在 **12:00 AM 到 10:00 AM** 之间活动显著激增。识别这一窗口对 SOC 分析师至关重要,因为它通常指向自动化脚本、计划任务或外国工作时间内的活动。

#### **4. 带宽分诊与泄露风险**
为了识别数据泄露风险,我调整查询以分析 `ByteSrcToDest`。通过按最高字节计数排序,我分离出了传输数据量最大的顶级公共源 IP。
#### **5. OSINT 验证与判定**
最后一步涉及通过 **VirusTotal** 对识别出的高带宽 IP 执行声誉检查。

## **调查结果:**
所有识别出的 IP 均返回了干净的结果。这项练习是一个重要的提醒:虽然“可疑”模式(外国流量 + 非工作时间活动)需要调查,但必须进行彻底的验证,以避免因误报而导致的职业倦怠。
标签:Ask搜索, Azure, ESC4, IP 地址批量处理, KQL, Kusto Query Language, NTA, OSINT, VirusTotal, 云取证, 云计算, 地理位置过滤, 威胁情报, 安全运营中心, 开发者工具, 异常检测, 数据渗漏, 日志分析工作区, 时间序列分析, 网络安全, 网络映射, 网络流量分析, 规则引擎, 误报分析, 防御监控, 隐私保护