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, 数据加密, 数据渗出, 数据窃取, 杀链分析, 端点安全, 紫队, 网络安全, 网络安全实验, 蜜罐演练, 补丁管理, 隐私保护