VatsSanghvi/Kusto-Threat-Hunting-Lab
GitHub: VatsSanghvi/Kusto-Threat-Hunting-Lab
基于模拟网络入侵数据集的 KQL 威胁狩猎查询集合,用于练习和构建 Azure 安全生态中的安全检测规则。
Stars: 0 | Forks: 0
# 🛡️ Kusto 威胁狩猎实验室
这是一个用于网络安全威胁检测和分析的 **KQL (Kusto Query Language)** 查询集合,基于真实世界风格的网络入侵数据集构建。本项目展示了使用 Azure Data Explorer 的实际 SOC (Security Operations Center) 技能。
## 📋 目录
- [关于数据集](#about-the-dataset)
- [项目目标](#project-goals)
- [如何运行这些查询](#how-to-run-these-queries)
- [查询索引](#query-index)
- [主要发现](#key-findings)
- [所用技术](#technologies-used)
## 📊 关于数据集
数据集 (`data/cybersecurity_intrusion_data.csv`) 包含 **9,537 个模拟网络会话**,具有以下字段:
| 列名 | 类型 | 描述 |
|---|---|---|
| `session_id` | string | 唯一会话标识符 |
| `network_packet_size` | int | 网络数据包大小(字节) |
| `protocol_type` | string | 网络协议 — TCP, UDP, ICMP |
| `login_attempts` | int | 会话中的总登录尝试次数 |
| `session_duration` | float | 会话持续时间(秒) |
| `encryption_used` | string | 加密方法 — AES 或 DES |
| `ip_reputation_score` | float | IP 信誉评分(0 = 恶意,1 = 干净) |
| `failed_logins` | int | 失败登录尝试次数 |
| `browser_type` | string | 使用的浏览器 — Chrome, Firefox, Edge, Safari, Unknown |
| `unusual_time_access` | int | 标志:1 = 在异常时间访问 |
| `attack_detected` | int | 标签:1 = 检测到攻击,0 = 干净 |
**数据集统计:**
- 总会话数:9,537
- 攻击会话:4,264 (~44.7%)
- 干净会话:5,273 (~55.3%)
- 协议分布:TCP 69% / UDP 25% / ICMP 5%
## 🎯 项目目标
1. 练习为安全分析用例编写真实的 KQL 查询
2. 模拟 SOC 分析师调查网络入侵数据的方式
3. 展示威胁狩猎模式:暴力破解检测、协议异常、IP 信誉评分、加密风险
4. 为 Azure Sentinel / Microsoft Defender 场景构建可复用的查询模板
## 🚀 如何运行这些查询
### 步骤 1 — 获取免费的 Azure Data Explorer 集群
1. 前往 [dataexplorer.azure.com](https://dataexplorer.azure.com)
2. 使用免费的 Microsoft 账户登录
3. 点击 **"+ Add cluster"** → 选择免费层
### 步骤 2 — 创建数据库并导入数据
在查询窗口中运行以下命令以创建表:
```
.create table NetworkSessions (
session_id: string,
network_packet_size: int,
protocol_type: string,
login_attempts: int,
session_duration: real,
encryption_used: string,
ip_reputation_score: real,
failed_logins: int,
browser_type: string,
unusual_time_access: int,
attack_detected: int
)
```
然后导入 CSV:
```
.ingest into table NetworkSessions
'https://raw.githubusercontent.com/YOUR_USERNAME/kusto-threat-hunting-lab/main/data/cybersecurity_intrusion_data.csv'
with (format='csv', ignoreFirstRecord=true)
```
### 步骤 3 — 运行查询
将 `queries/` 文件夹中的任何 `.kql` 文件复制到您的查询窗口并运行。
## 📁 查询索引
| 文件 | 用例 | 关键 KQL 运算符 |
|---|---|---|
| `01_basic_exploration.kql` | 数据集概览和分析 | `count`, `summarize`, `extend` |
| `02_attack_detection.kql` | 核心攻击过滤和细分 | `where`, `project`, `order by` |
| `03_protocol_analysis.kql` | 按协议类型进行风险分析 | `summarize`, `render piechart` |
| `04_brute_force_detection.kql` | 暴力破解和撞库攻击 | `where`, `bin`, `make_series` |
| `05_encryption_risk.kql` | 弱加密 (DES) 风险标记 | `case()`, `summarize`, `extend` |
| `06_time_based_anomalies.kql` | 非工作时间访问异常 | `iff()`, `summarize`, `render timechart` |
| `07_ip_reputation_scoring.kql` | IP 信誉分桶和告警 | `case()`, `bin()`, `summarize` |
## 🔍 主要发现
- **DES 加密的会话** 的攻击率为 **53%**,而 AES 为 40% —— 弱加密与攻击密切相关
- **ICMP 会话** 的攻击率最高,为 **52%**,相比之下 TCP 为 44%,UDP 为 43%
- 具有 **3 次以上失败登录且 IP 信誉低** (< 0.3) 的会话中有 **81%** 是攻击
- **非工作时间访问** (`unusual_time_access = 1`) 会话的攻击率为 **47%**,而正常时间为 44%
- **"Unknown" (未知) 浏览器** 的攻击率最高,为 **49%**,可能代表自动化工具
## 🛠️ 所用技术
- **Kusto Query Language (KQL)** — Microsoft 为 Azure Data Explorer, Azure Sentinel 和 Microsoft Defender 提供的查询语言
- **Azure Data Explorer (ADX)** — 用于运行和测试查询的免费集群
- **Dataset** — 模拟网络安全入侵数据(CSV 格式)
## 📬 联系
如果您觉得这个项目有帮助或有建议,欢迎开启 issue 或在 [LinkedIn](https://linkedin.com/in/YOUR_PROFILE) 上联系。
标签:Azure Data Explorer, Azure Sentinel, Cloudflare, IP信誉, IP 地址批量处理, KQL, Kusto, Kusto查询语言, MITRE ATT&CK, PE 加载器, SOC分析, Threat Hunting, 代码示例, 免杀技术, 威胁情报, 安全运营中心, 开发者工具, 异常检测, 插件系统, 数据分析, 暴力破解检测, 渗透测试数据, 渗透测试框架, 红队行动, 网络安全, 网络安全实验, 网络映射, 网络流量分析, 防御, 隐私保护