Amine-M07/Threat-Hunting-Incident-Data-Exfiltration-from-PIP-d-Employee
GitHub: Amine-M07/Threat-Hunting-Incident-Data-Exfiltration-from-PIP-d-Employee
一份完整的 MDE 威胁狩猎实战报告,调查并还原了 PIP 员工利用 PowerShell 脚本进行数据压缩和外泄的全过程。
Stars: 0 | Forks: 0
# 🎯 疑似来自 PIP 员工的数据外泄
## 事件调查报告
## 📚 场景
在敏感部门工作的一名员工 **John Doe** 最近被列入了**绩效改进计划 (PIP)**。在对此消息做出负面反应后,管理层担心 John 可能会在离开公司前企图窃取专有信息。John 是其公司设备的本地管理员,并且在可以运行的应用程序方面不受限制。
任务是使用 **Microsoft Defender for Endpoint (MDE)** 调查 John 在其设备上的活动,以确定是否发生了任何数据暂存、压缩或外泄行为。
**假设:** John 可能会在离职前尝试将敏感的公司数据归档或压缩,并将其传输到外部的、由个人控制的目的地(例如,私人云盘)。
## 📊 事件总结与发现
**目标:** 从进程、文件和网络日志中收集相关数据,以确认或排除数据外泄。
**活动:** 确保可以从所有关键来源获取数据以进行分析。确保相关表包含目标设备的最新日志:
- `DeviceFileEvents`
- `DeviceProcessEvents`
- `DeviceNetworkEvents`
### 时间线概述
#### 1. 🔍 发现归档活动
**观察到的行为:** 在 `DeviceFileEvents` 中搜索目标主机(`wind11-mo-test` — 由 MDE 记录,设备名称被截断,与 `windows-target-` 一致)上与归档相关的文件活动时,发现了一个模式:文件被压缩并移动到一个看似例行的“备份”文件夹中——但其数量和命名方式值得进一步仔细查看。
**检测查询 (KQL):**
```
DeviceFileEvents
| where DeviceName contains "wind11-mo-test"
| where FileName endswith "zip"
| order by Timestamp desc
```
#### 2. ⚙️ 进程关联
**观察到的行为:** 以发现归档创建事件的时间戳为基准,我在同一主机的 `DeviceProcessEvents` 中搜索了 ±2 分钟窗口内的活动。这发现了一个 PowerShell 进程,它静默安装了 7-Zip,随后调用它将员工数据压缩到一个归档文件中——此活动不属于任何已批准的备份或 IT 流程。
**检测查询 (KQL):**
```
let VMName = "wind11-mo-test";
let specificTime = datetime(2026-05-20T06:20:56.0480175Z);
DeviceProcessEvents
| where Timestamp between ((specificTime - 2m) .. (specificTime + 2m))
| where DeviceName == VMName
| order by Timestamp desc
| project Timestamp, AccountName, ActionType, FileName, ProcessCommandLine
```
#### 3. 🌐 网络关联
**观察到的行为:** 使用相同的时间戳,我转到 `DeviceNetworkEvents` 检查与该进程相关的出站活动。一个 PowerShell 进程使用 `-ExecutionPolicy Bypass` 执行了脚本 `C:\programdata\exfiltratedata.ps1`,该脚本在同一用户 `amine` 下的同一进程中,快速连续建立了多个成功的、指向两个外部 IP 地址(`20.60.181.193` 和 `20.60.133.132`)的出站 HTTPS(端口 443)连接。
**检测查询 (KQL):**
```
let VMName = "wind11-mo-test";
let specificTime = datetime(2026-05-20T06:20:56.0480175Z);
DeviceNetworkEvents
| where Timestamp between ((specificTime - 2m) .. (specificTime + 2m))
| where DeviceName == VMName
| order by Timestamp desc
```
审查脚本本身证实,`exfiltratedata.ps1` 生成了一个包含模拟敏感员工信息的 CSV 文件,使用新安装的 7-Zip 将其压缩为 ZIP 归档文件,并通过 HTTPS 将该归档文件上传到外部的 **Azure Blob Storage**——这与网络日志中观察到的出站连接相匹配。
#### 4. 📝 响应
- 立即将受影响的主机(`wind11-mo-test`)与网络隔离,以防止进一步的出站通信或数据外泄。
- 终止了与 `exfiltratedata.ps1` 相关的可疑 `powershell.exe` 进程。
- 从 `C:\ProgramData` 中删除了 `exfiltratedata.ps1` 及相关组件。
- 识别并阻止了外部 IP 地址 `20.60.181.193` 和 `20.60.133.132`。
- 检查了其他端点是否存在类似的 PowerShell 活动和出站模式。
- 审查了 PowerShell 执行策略和日志记录配置,以改进未来的检测。
- 与管理层分享了调查结果,证实了存在与初步假设一致的、脚本化的自动数据暂存和外泄行为。等待进一步的人力资源/法律指导。
## 🗺️ 事件记录的 MITRE ATT&CK 技术
| **战术** | **技术** | **ID** | **描述** |
|---|---|---|---|
| 执行 | [命令和脚本解释器:PowerShell](https://attack.mitre.org/techniques/T1059/001/) | T1059.001 | `exfiltratedata.ps1` 通过 `powershell.exe` 并使用 `-ExecutionPolicy Bypass` 执行,以静默方式安装 7-Zip 并生成/压缩目标 CSV 数据。 |
| 收集 | [压缩收集的数据:通过工具归档](https://attack.mitre.org/techniques/T1560/001/) | T1560.001 | 敏感员工数据在外泄之前,使用秘密安装的 7-Zip 实例被压缩成了一个 ZIP 归档文件。 |
| 外泄 | [通过 C2 通道外泄](https://attack.mitre.org/techniques/T1041/) | T1041 | 归档文件是通过用于暂存和控制该活动的、由 PowerShell 发起的 HTTPS 会话传输出去的。 |
| 外泄 | [外泄至云存储](https://attack.mitre.org/techniques/T1567/) | T1567 | 压缩后的归档文件通过 HTTPS(端口 443)上传到了外部的 Azure Blob Storage 端点(`20.60.181.193`、`20.60.133.132`)。 |
## 🛠️ 缓解与改进
在进行完整的系统重镜像之前,受影响的主机应保持隔离状态,删除恶意的 PowerShell 脚本和任何释放的 7-Zip 二进制文件,并在网络出口层限制指向未经授权的云存储服务的出站连接。
应通过受约束的语言模式和更严格的执行策略来限制 PowerShell 的执行,以确保脚本无法在带有 `-ExecutionPolicy Bypass` 的情况下运行。应用程序控制应防止在尚未批准的端点上安装未经授权的归档实用程序(例如 7-Zip)。
对于未来的调查,在流程早期将 PowerShell 脚本块日志记录与网络出口事件相关联将缩短检测时间。为每个主机/用户的正常出站流量建立基准,并对指向不熟悉外部目的地(尤其是云存储 IP 范围)的连接发出警报,将进一步增强对此类模式的检测能力。
## 编写者
- **作者姓名:** Amine Mouammine
- **作者联系方式:** [linkedin.com/in/aminemouammine](https://www.linkedin.com/in/aminemouammine/)
- **日期:** 2026年7月
## 验证者
- **审阅者姓名:** Josh Madakor
- **审阅者联系方式:** [linkedin.com/in/joshmadakor](https://www.linkedin.com/in/joshmadakor/)
- **验证日期:** 2026年7月
## 修订历史
| **版本** | **更改** | **日期** | **修改人** |
|---|---|---|---|
| 1.0 | 初始草案 | 2026年7月 | Amine Mouammine |
## 事件调查报告
## 📚 场景
在敏感部门工作的一名员工 **John Doe** 最近被列入了**绩效改进计划 (PIP)**。在对此消息做出负面反应后,管理层担心 John 可能会在离开公司前企图窃取专有信息。John 是其公司设备的本地管理员,并且在可以运行的应用程序方面不受限制。
任务是使用 **Microsoft Defender for Endpoint (MDE)** 调查 John 在其设备上的活动,以确定是否发生了任何数据暂存、压缩或外泄行为。
**假设:** John 可能会在离职前尝试将敏感的公司数据归档或压缩,并将其传输到外部的、由个人控制的目的地(例如,私人云盘)。
## 📊 事件总结与发现
**目标:** 从进程、文件和网络日志中收集相关数据,以确认或排除数据外泄。
**活动:** 确保可以从所有关键来源获取数据以进行分析。确保相关表包含目标设备的最新日志:
- `DeviceFileEvents`
- `DeviceProcessEvents`
- `DeviceNetworkEvents`
### 时间线概述
#### 1. 🔍 发现归档活动
**观察到的行为:** 在 `DeviceFileEvents` 中搜索目标主机(`wind11-mo-test` — 由 MDE 记录,设备名称被截断,与 `windows-target-` 一致)上与归档相关的文件活动时,发现了一个模式:文件被压缩并移动到一个看似例行的“备份”文件夹中——但其数量和命名方式值得进一步仔细查看。
**检测查询 (KQL):**
```
DeviceFileEvents
| where DeviceName contains "wind11-mo-test"
| where FileName endswith "zip"
| order by Timestamp desc
```
#### 2. ⚙️ 进程关联
**观察到的行为:** 以发现归档创建事件的时间戳为基准,我在同一主机的 `DeviceProcessEvents` 中搜索了 ±2 分钟窗口内的活动。这发现了一个 PowerShell 进程,它静默安装了 7-Zip,随后调用它将员工数据压缩到一个归档文件中——此活动不属于任何已批准的备份或 IT 流程。
**检测查询 (KQL):**
```
let VMName = "wind11-mo-test";
let specificTime = datetime(2026-05-20T06:20:56.0480175Z);
DeviceProcessEvents
| where Timestamp between ((specificTime - 2m) .. (specificTime + 2m))
| where DeviceName == VMName
| order by Timestamp desc
| project Timestamp, AccountName, ActionType, FileName, ProcessCommandLine
```
#### 3. 🌐 网络关联
**观察到的行为:** 使用相同的时间戳,我转到 `DeviceNetworkEvents` 检查与该进程相关的出站活动。一个 PowerShell 进程使用 `-ExecutionPolicy Bypass` 执行了脚本 `C:\programdata\exfiltratedata.ps1`,该脚本在同一用户 `amine` 下的同一进程中,快速连续建立了多个成功的、指向两个外部 IP 地址(`20.60.181.193` 和 `20.60.133.132`)的出站 HTTPS(端口 443)连接。
**检测查询 (KQL):**
```
let VMName = "wind11-mo-test";
let specificTime = datetime(2026-05-20T06:20:56.0480175Z);
DeviceNetworkEvents
| where Timestamp between ((specificTime - 2m) .. (specificTime + 2m))
| where DeviceName == VMName
| order by Timestamp desc
```
审查脚本本身证实,`exfiltratedata.ps1` 生成了一个包含模拟敏感员工信息的 CSV 文件,使用新安装的 7-Zip 将其压缩为 ZIP 归档文件,并通过 HTTPS 将该归档文件上传到外部的 **Azure Blob Storage**——这与网络日志中观察到的出站连接相匹配。
#### 4. 📝 响应
- 立即将受影响的主机(`wind11-mo-test`)与网络隔离,以防止进一步的出站通信或数据外泄。
- 终止了与 `exfiltratedata.ps1` 相关的可疑 `powershell.exe` 进程。
- 从 `C:\ProgramData` 中删除了 `exfiltratedata.ps1` 及相关组件。
- 识别并阻止了外部 IP 地址 `20.60.181.193` 和 `20.60.133.132`。
- 检查了其他端点是否存在类似的 PowerShell 活动和出站模式。
- 审查了 PowerShell 执行策略和日志记录配置,以改进未来的检测。
- 与管理层分享了调查结果,证实了存在与初步假设一致的、脚本化的自动数据暂存和外泄行为。等待进一步的人力资源/法律指导。
## 🗺️ 事件记录的 MITRE ATT&CK 技术
| **战术** | **技术** | **ID** | **描述** |
|---|---|---|---|
| 执行 | [命令和脚本解释器:PowerShell](https://attack.mitre.org/techniques/T1059/001/) | T1059.001 | `exfiltratedata.ps1` 通过 `powershell.exe` 并使用 `-ExecutionPolicy Bypass` 执行,以静默方式安装 7-Zip 并生成/压缩目标 CSV 数据。 |
| 收集 | [压缩收集的数据:通过工具归档](https://attack.mitre.org/techniques/T1560/001/) | T1560.001 | 敏感员工数据在外泄之前,使用秘密安装的 7-Zip 实例被压缩成了一个 ZIP 归档文件。 |
| 外泄 | [通过 C2 通道外泄](https://attack.mitre.org/techniques/T1041/) | T1041 | 归档文件是通过用于暂存和控制该活动的、由 PowerShell 发起的 HTTPS 会话传输出去的。 |
| 外泄 | [外泄至云存储](https://attack.mitre.org/techniques/T1567/) | T1567 | 压缩后的归档文件通过 HTTPS(端口 443)上传到了外部的 Azure Blob Storage 端点(`20.60.181.193`、`20.60.133.132`)。 |
## 🛠️ 缓解与改进
在进行完整的系统重镜像之前,受影响的主机应保持隔离状态,删除恶意的 PowerShell 脚本和任何释放的 7-Zip 二进制文件,并在网络出口层限制指向未经授权的云存储服务的出站连接。
应通过受约束的语言模式和更严格的执行策略来限制 PowerShell 的执行,以确保脚本无法在带有 `-ExecutionPolicy Bypass` 的情况下运行。应用程序控制应防止在尚未批准的端点上安装未经授权的归档实用程序(例如 7-Zip)。
对于未来的调查,在流程早期将 PowerShell 脚本块日志记录与网络出口事件相关联将缩短检测时间。为每个主机/用户的正常出站流量建立基准,并对指向不熟悉外部目的地(尤其是云存储 IP 范围)的连接发出警报,将进一步增强对此类模式的检测能力。
## 编写者
- **作者姓名:** Amine Mouammine
- **作者联系方式:** [linkedin.com/in/aminemouammine](https://www.linkedin.com/in/aminemouammine/)
- **日期:** 2026年7月
## 验证者
- **审阅者姓名:** Josh Madakor
- **审阅者联系方式:** [linkedin.com/in/joshmadakor](https://www.linkedin.com/in/joshmadakor/)
- **验证日期:** 2026年7月
## 修订历史
| **版本** | **更改** | **日期** | **修改人** |
|---|---|---|---|
| 1.0 | 初始草案 | 2026年7月 | Amine Mouammine |标签:AI合规, HTTP工具, KQL, Microsoft Defender for Endpoint, 安全运营, 扫描框架, 数据防泄露