goubx/hunting-data-exfiltration

GitHub: goubx/hunting-data-exfiltration

一个基于 Microsoft Defender for Endpoint 和 KQL 的企业端点内部数据泄露威胁狩猎实战项目,通过逆向追踪归档活动到进程和网络事件来发现数据暂存行为。

Stars: 0 | Forks: 0

# 企业端点上的内部数据泄露追踪 这是一次通过 Microsoft Defender for Endpoint 进行的实战威胁狩猎。一名处于绩效改进计划中的员工引发了内部风险担忧。本次狩猎调查了该员工的公司设备,以寻找专有数据被收集、压缩并准备窃取的迹象,随后从创建归档文件开始,逆向追踪到背后的进程,并扩展到网络活动。 | | | |---|---| | **平台** | Microsoft Defender for Endpoint (Advanced Hunting) | | **查询语言** | KQL | | **战术** | 收集 / 数据泄露 | | **MITRE 技术** | T1560.001 Archive Collected Data | | **结果** | 已确认员工数据被自动归档并在本地暂存。未观察到网络泄露 | ## 目录 - [背景](#background) - [假设](#hypothesis) - [狩猎过程](#the-hunt) - [发现](#findings) - [时间线](#timeline) - [威胁指标](#indicators) - [MITRE ATT&CK 映射](#mitre-attck-mapping) - [响应](#response) - [经验与改进](#lessons-and-improvements) - [文件](#files) ## 背景 敏感部门的一名员工最近被纳入绩效改进计划,并且反应不佳。管理层担心该员工可能会在离职前试图窃取专有信息。任务是调查其公司设备,寻找任何表明数据被暂存以备窃取的迹象。 该员工是设备上的本地管理员,对可以运行的应用程序没有任何限制。这使得将敏感数据归档并将其推送到个人目的地成为一个现实的担忧,因为主机上没有任何东西会阻止它。 ## 假设 该员工可能正在收集敏感公司数据,将其压缩到归档文件中,并准备将其从设备转移到私人目的地。 ## 狩猎过程 本次狩猎遵循结构化的生命周期:构建假设、收集数据、分析、调查、响应和记录。这里的流程从归档文件转向创建它们的过程,再到网络,以确认是否有任何数据实际上离开了设备。 ### 步骤 1:狩猎归档活动 ``` DeviceFileEvents | where DeviceName == "WIN-TARGET-01" | where FileName endswith ".zip" | order by Timestamp desc ``` 从文件系统开始,本次狩猎寻找正在创建的归档文件。结果显示出稳定的 `.zip` 创建活动,并且归档文件被移动到一个类似于备份位置的文件夹中。这种规律性的频率非常显眼,值得仔细研究。 ### 步骤 2:追溯到单个归档背后的进程 ``` let VMName = "WIN-TARGET-01"; let specificTime = datetime(2026-06-13T15:43:03.8113194Z); DeviceProcessEvents | where Timestamp between ((specificTime - 2m) .. (specificTime + 2m)) | where DeviceName == VMName | order by Timestamp desc | project Timestamp, DeviceName, ActionType, FileName, ProcessCommandLine ``` 提取一个归档文件的时间戳,并观察其前后两分钟内的进程活动,就能说明一切。一个 PowerShell 脚本运行了,静默安装了 7-Zip,然后用它将员工数据压缩到归档文件中。 观察到的关键命令行: - PowerShell 启动脚本:`powershell.exe -ExecutionPolicy Bypass -File C:\programdata\exfiltratedata.ps1` - 7-Zip 静默安装:`7z2408-x64.exe /S`(`/S` 标志会抑制安装 UI,使其在无提示的情况下运行) - 7-Zip 归档数据:`7z.exe a C:\ProgramData\employee-data-20260613154255.zip C:\ProgramData\employee-data-temp20260613154255.csv` ### 步骤 3:检查网络以确认数据泄露 ``` let VMName = "WIN-TARGET-01"; let specificTime = datetime(2026-06-13T15:43:03.8113194Z); DeviceNetworkEvents | where Timestamp between ((specificTime - 4m) .. (specificTime + 4m)) | where DeviceName == VMName | order by Timestamp desc ``` 在确认了归档之后,最后一个问题是数据是否真的离开了设备。在同一时间段内搜索网络事件,没有发现数据泄露的证据。数据正在被暂存,但没有观察到任何对外传输。 ## 发现 一个名为 `exfiltratedata.ps1` 的 PowerShell 脚本正在设备上运行,并定期创建员工数据的归档。每次运行都会静默安装 7-Zip,并使用它将员工数据的 CSV 文件压缩成一个带有时间戳的 `.zip` 文件,暂存在本地的 `C:\ProgramData` 中。 这是教科书般的收集和暂存行为。数据从本地系统收集,使用归档工具压缩,并存放在暂存位置,这正是内部人员在将数据转移出去之前会做的事情。话虽如此,网络事件并没有显示在观察的时间窗口内有任何归档被实际泄露的迹象。暂存已得到确认。但泄露环节并未发生。 ## 时间线 | 时间 (UTC) | 事件 | |------------|-------| | 2026-06-13 15:43:03 | `exfiltratedata.ps1` 通过 PowerShell 运行并静默安装 7-Zip | | 2026-06-13 15:43:03 | 7-Zip 将员工数据 CSV 压缩为暂存在 `C:\ProgramData` 中的 `.zip` 文件 | | 周期性发生 | 脚本定期创建归档,并将其移动到类似备份的文件夹中 | | 同一时间窗口 | 检查了网络事件,未观察到数据泄露 | | 检测到时 | 主机被隔离,调查结果传达给该员工的经理 | ## 威胁指标 | 类型 | 值 | |------|-------| | 主机 | WIN-TARGET-01 | | 脚本 | exfiltratedata.ps1 (C:\programdata\exfiltratedata.ps1) | | 启动方式 | powershell.exe -ExecutionPolicy Bypass | | 安装的工具 | 7-Zip,静默安装 (7z2408-x64.exe /S) | | 归档命令 | 7z.exe a employee-data-[timestamp].zip | | 暂存位置 | C:\ProgramData | | 数据泄露 | 未观察到 | ## MITRE ATT&CK 映射 | 战术 | 技术 | ID | 证据 | |--------|-----------|----|----| | 收集 | Data from Local System | T1005 | 员工数据从设备收集到 CSV 中 | | 收集 | Archive Collected Data: Archive via Utility | T1560.001 | 使用 7-Zip 将数据压缩为 `.zip` | | 收集 | Local Data Staging | T1074.001 | 归档文件暂存在 `C:\ProgramData` 中 | | 执行 | Command and Scripting Interpreter: PowerShell | T1059.001 | `exfiltratedata.ps1` 通过 PowerShell 绕过执行策略运行 | | 命令与控制 | Ingress Tool Transfer | T1105 | 脚本在主机上静默安装了 7-Zip | | 数据泄露 | Exfiltration Over Web Service | T1567 | 预期的下一阶段。在网络日志中未观察到 | ## 响应 - 一旦确认了归档活动,立即隔离了该设备。 - 通过安全运营部门将完整的调查结果传达给该员工的经理,包括归档文件正由 PowerShell 脚本定期创建这一事实。 - 指出未发现数据泄露的证据,因此这种情况是在任何数据离开设备之前被发现的暂存行为。 ## 经验与改进 **导致此问题的原因:** - 员工是本地管理员且没有应用程序限制,这使得脚本能够不受限制地静默安装软件并归档数据。移除本地管理员权限并实施应用程序控制将同时阻止软件安装和归档工具的运行。 - 执行策略绕过允许未经签名的脚本自由运行。受限语言模式或脚本签名要求可以阻止这种情况。 - 敏感数据处于无需控制即可轻松收集和暂存的位置,这使得收集变得轻而易举。数据防泄漏机制和对敏感文件更严格的访问控制将提高门槛。 **如何优化下一次狩猎:** - 建立一个定期检测机制,用于监控在触碰敏感文件后不久安装或运行的归档工具,特别是当由 PowerShell 启动时。 - 对定期向 `C:\ProgramData` 等暂存位置写入归档文件的行为发出警报,正是这种规律性频率暴露了本次事件。 - 将暂存检测与出站网络监控相结合,这样如果数据泄露环节发生,就能直接追溯到暂存的归档文件。 ## 文件 - `README.md` - 本次分析说明 - `queries.kql` - 本次狩猎中使用的所有 KQL 查询 由 Mohamed Yagoub 撰写的持续更新的威胁狩猎和 SOC 调查系列的一部分。
标签:KQL, Microsoft Defender for Endpoint, 内部威胁, 安全运营, 扫描框架