sarandeny/Threat-Hunting-in-Azure-Investigating-Suspected-Data-Exfiltration
GitHub: sarandeny/Threat-Hunting-in-Azure-Investigating-Suspected-Data-Exfiltration
一个基于 Azure CyberRange 环境的内部威胁狩猎演练项目,完整记录了从假设提出、KQL 日志分析到证据固定与上报的数据渗出调查全流程。
Stars: 0 | Forks: 0
# 🕵️ 威胁狩猎:疑似处于 PIP 期员工的数据窃取
## 📋 目录
- [概述](#overview)
- [场景背景](#scenario-background)
- [狩猎方法论](#hunt-methodology)
- [主要发现](#key-findings)
- [MITRE ATT&CK 映射](#mitre-attck-mapping)
- [采取的响应行动](#response-actions-taken)
- [经验教训](#lessons-learned)
- [KQL 查询参考](#kql-query-reference)
- [项目结构](#project-structure)
- [工具与技术](#tools--technologies)
## 概述
本仓库记录了一场**威胁狩猎演练**,模拟了在实时 Azure CyberRange 环境中使用 **Microsoft Defender for Endpoint (MDE)** 和 **Kusto Query Language (KQL)** 进行的内部威胁调查。此次调查的起因是管理层担心一名最近被列入绩效改进计划 (PIP) 的员工可能会在辞职前窃取公司的专有数据。
调查证实,该员工的设备 (`saranpc2`) 被用于**静默安装 7-Zip**、**归档敏感员工数据**,并通过加密的 HTTPS 连接将其**渗出到外部的 Azure Blob Storage 端点** —— 这一切都是通过使用 `-ExecutionPolicy Bypass` 执行的 PowerShell 脚本精心策划的。
**结论先行 (BLUF):** 确认发生了数据渗出。一个 PowerShell 脚本 (`exfiltratedata.ps1`) 自动化了整个攻击链 —— 从使用 7-Zip 归档敏感文件,到通过端口 443 将其上传到 `sacyberrange00.blob.core.windows.net`。调查结果已上报给该员工的经理。未发现基于 USB 的数据渗出证据。
## 场景背景
在敏感部门工作的一名员工 **John Doe** 最近被列入了**绩效改进计划 (PIP)**。在与管理层发生冲突后,人们担心 John 可能会在离职前企图窃取专有信息。
在调查开始时识别出的主要风险因素:
- John 在其公司设备 (`saranpc2`) 上拥有**本地管理员权限**
- **无应用程序限制** —— 可以安装任何软件
- John 作为其工作职责的一部分,拥有访问敏感公司数据的合法权限
- 潜在手段:归档/压缩文件并将其发送到个人或云盘
**假设:**
## 狩猎方法论
本次调查遵循结构化的**威胁狩猎生命周期**:
```
1. Preparation → 2. Data Collection → 3. Data Analysis
↑ ↓
7. Improvement ← 6. Documentation ← 4. Investigation
↓
5. Response
```
有关完整的分步演练,请参见 [`reports/hunt-report.md`](reports/hunt-report.md)。
## 主要发现
| 发现 | 详情 |
|---|---|
| **受影响设备** | `saranpc2` (John Doe 的公司设备) |
| **使用的归档工具** | `7z.exe` —— 通过 PowerShell 静默安装 |
| **归档文件** | `employee-data.csv` 及其他敏感文件 |
| **归档格式** | `.zip` / `.7z` |
| **渗出脚本** | `exfiltratedata.ps1` —— 存储在 `C:\programdata\` |
| **渗出目的地** | `sacyberrange00.blob.core.windows.net` (Azure Blob Storage) |
| **目标 IP** | `20.60.181.193` |
| **协议** | HTTPS —— 端口 443 (加密,与正常流量混合) |
| **USB 渗出** | ❌ 未发现证据 |
| **上报给** | 员工经理 —— 提供了完整的证据包 |
## MITRE ATT&CK 映射
| TTP ID | 技术 | 战术 | 观察到的行为 |
|---|---|---|---|
| [T1560.001](https://attack.mitre.org/techniques/T1560/001/) | Archive Collected Data: Archive via Utility | Collection | 使用 7z.exe 压缩敏感文件 |
| [T1059.001](https://attack.mitre.org/techniques/T1059/001/) | PowerShell | Execution | 使用 `-ExecutionPolicy Bypass` 运行 `exfiltratedata.ps1` |
| [T1071.001](https://attack.mitre.org/techniques/T1071/001/) | Application Layer Protocol: Web Protocols | Exfiltration | 通过端口 443 的 HTTPS 连接到 Azure Blob Storage |
| [T1048](https://attack.mitre.org/techniques/T1048/) | Exfiltration Over Alternative Protocol | Exfiltration | 云存储被用作渗出通道 |
| [T1027](https://attack.mitre.org/techniques/T1027/) | Obfuscated Files or Information | Defense Evasion | 数据在传输前被压缩 |
| [T1070.004](https://attack.mitre.org/techniques/T1070/004/) | Indicator Removal: File Deletion | Defense Evasion | 潜在的渗出后清理 (推断) |
详细分析请参见 [`mitre/ttp-mapping.md`](mitre/ttp-mapping.md)。
## 采取的响应行动
1. **调查结果上报给管理层** —— 向 John 的经理提供了完整的证据包(归档活动、网络连接、脚本内容)。
2. **排除了 USB 渗出** —— 检查了 `DeviceFileEvents` 中可移动驱动器(盘符 E–J)上的活动 —— 未发现结果。
3. **证据已保存** —— 保留了来自 `DeviceFileEvents`、`DeviceProcessEvents` 和 `DeviceNetworkEvents` 的所有相关日志,以供 HR/法律诉讼使用。
## 经验教训
- 🔴 赋予最终用户**不受限制的管理员权限**是引发内部威胁的重大隐患 —— John 能够在没有任何警报的情况下静默安装 7-Zip。
- 🔴 **通过 HTTPS 向云存储渗出数据几乎没有痕迹**,尤其是在没有 DLP 的情况下 —— 发往 Azure Blob 的加密流量完美地融入了正常活动中。
- 🟡 **跨表的时间戳追踪** (FileEvents → ProcessEvents → NetworkEvents) 是追溯完整攻击链最有效的技术。
- 🟢 **监控归档文件** (针对 `.zip`/`.7z` 的 `DeviceFileEvents`) 是渗出数据暂存阶段的可靠早期指标。
- 🟢 **通过驱动器盘符正则表达式检查 USB 数据渗出** 是任何内部威胁调查中快速且有价值的补充手段。
## KQL 查询参考
本次狩猎中使用的所有 KQL 查询都记录在 [`queries/kql-queries.md`](queries/kql-queries.md) 中,包括:
- 检测归档文件的创建 (`.zip`, `.7z`)
- 围绕归档创建时间戳向 Process Events 进行追踪
- 识别来自可疑脚本的外部网络连接
- 检查 USB/可移动驱动器的数据渗出
- 用于未来内部威胁监控的检测工程规则
## 项目结构
```
📁 soc-data-exfiltration/
├── 📄 README.md ← You are here
├── 📁 reports/
│ └── 📄 hunt-report.md ← Full investigation report
├── 📁 queries/
│ └── 📄 kql-queries.md ← All KQL queries with explanations
├── 📁 mitre/
│ └── 📄 ttp-mapping.md ← MITRE ATT&CK framework mapping
├── 📁 playbooks/
│ └── 📄 insider-threat-response.md ← IR playbook for insider threat scenarios
└── 📁 assets/
├── 📄 timeline.md ← Attack timeline reconstruction
└── 📁 screenshots/ ← Evidence screenshots from MDE
├── 01-zip-file-events.png
├── 02-process-events-7zip.png
├── 03-network-exfiltration.png
└── 04-exfiltrate-script-content.png
```
## 工具与技术
| 工具 | 用途 |
|---|---|
| **Microsoft Defender for Endpoint (MDE)** | 端点遥测和证据收集 |
| **Kusto Query Language (KQL)** | 跨文件、进程和网络事件进行日志分析 |
| **Microsoft Sentinel / MDE Portal** | SIEM/XDR 查询接口 |
| **MITRE ATT&CK Navigator** | TTP 映射和对手行为分析 |
| **Azure CyberRange** | 用于实践操作的实验室环境 |
| **7-Zip (`7z.exe`)** | 目标对象用于压缩数据的工具 |
| **Azure Blob Storage** | 外部数据渗出目的地 |
## 关于本项目
本项目是作为 **CyberRange 内部威胁调查演练**的一部分完成的,模拟了真实世界的 SOC 分析师场景。它展示了:
- 内部威胁假设开发与调查
- 多表 KQL 追踪 (文件 → 进程 → 网络事件)
- 跨事件表的时间戳锚定关联
- MITRE ATT&CK 框架在完整渗出攻击链中的应用
- 用于 HR/法律升级的证据打包
- 专业的 SOC 文档和报告
*最后更新:2026 年 3 月 27 日 | 作者:Saran*
标签:7-Zip, AI合规, Azure, Azure Blob Storage, HTTPS传输, Incident Response, IPv6, KQL, Kusto查询语言, MDE, OpenCanary, PIV员工监控, PowerShell, 内部威胁, 安全应急响应, 安全攻防靶场, 安全调查, 微软Defender, 数据加密, 数据渗出, 数据窃取, 杀链分析, 端点安全, 紫队, 网络安全, 网络安全实验, 蜜罐演练, 补丁管理, 隐私保护