# Mac 上的数据外泄：如何发生，如何检测

> 对照 MITRE ATT&CK 的外泄战术（TA0010）说明数据如何离开 Mac：窃密软件、Web 服务、AI 智能体，以及上传峰值等暴露外泄行为的网络信号。

FireAI Security & Research Team (HisnLabs) · Published 2026-10-04
Canonical: https://hisnlabs.com/zh/blog/mac-shuju-waixie-jiance

数据外泄是指本应留在计算机上的数据最终去了别处的那一步。MITRE ATT&CK 是由 MITRE 维护的攻击者行为公开知识库，它为外泄单独设立了一个战术 TA0010，并用一句话定义：“The adversary is trying to steal data”（攻击者正试图窃取数据）。在此之前的一切，从伪造的安装程序到对 AI 智能体下达的恶意指令，对受害者而言之所以重要，主要都是因为这一刻。本文说明外泄在 Mac 上如何发生、MITRE 收录了哪些技术、为何难以察觉，以及哪些网络信号仍然会暴露它。

## 收集、暂存、发送

外泄很少是单一动作。MITRE 描述的是一个序列。数据首先被收集，例如来自钥匙串；正如 ATT&CK 技术 T1555.001 所指出的，钥匙串“存储账户名、密码、私钥、证书、敏感应用数据、支付数据和安全备忘录”。随后数据往往被暂存在本地文件夹中（T1074.001），并被压缩或加密（T1560）；用 MITRE 的话说，“攻击者可能会在外泄之前压缩和/或加密所收集的数据”，这样既缩小了发送体积，也使数据在传出途中更难被检查。之后数据才被发送出去。每一步都发生在 Mac 上，但只有最后一步必须穿过网络，这正是网络成为外泄最稳定可见之处的原因。

## MITRE ATT&CK 列出的技术

外泄战术目前包含九项技术。它们主要区别在于所用的通道，其中几项还针对特定目的地设有子技术。

| ID | 技术 | 实际含义 |
| --- | --- | --- |
| T1041 | Exfiltration Over C2 Channel | 数据通过攻击者已用于发送命令的同一连接离开。 |
| T1048 | Exfiltration Over Alternative Protocol | 使用不同于命令通道的协议或目的地，可能加密也可能不加密（T1048.001 至 .003）。 |
| T1567 | Exfiltration Over Web Service | 合法服务：代码仓库（.001）、云存储（.002）、文本存储网站（.003）、webhook（.004）。 |
| T1029 | Scheduled Transfer | 在固定时间发送，以混入正常活动。 |
| T1030 | Data Transfer Size Limits | 以固定大小的数据块发送，以保持在告警阈值之下。 |
| T1020 | Automated Exfiltration | 数据一经收集就自动发送；T1020.001 涵盖流量复制。 |
| T1011 | Exfiltration Over Other Network Medium | 使用不同于主连接的介质，例如蓝牙（T1011.001）。 |
| T1052 | Exfiltration Over Physical Medium | 可移动存储设备，例如 U 盘（T1052.001）。 |
| T1537 | Transfer Data to Cloud Account | 把数据转移到同一云服务的另一个账户。 |

*来源：MITRE ATT&CK Enterprise，战术 TA0010，核对于 2026 年 10 月 4 日。*

## 窃密软件：以外泄为全部目的

在个人 Mac 上，最常见的围绕外泄构建的程序是窃密软件（infostealer）：收集密码、浏览器数据和文件并将其发送到服务器的软件。MITRE 关于 Cuckoo Stealer（S1153）的条目逐步展示了这种模式；这是一款兼具间谍软件和窃密软件特征的 macOS 程序，由 Kandji 和 SentinelOne 于 2024 年报告。它收集 Safari 书签、Cookie 和历史记录（T1217），复制钥匙串文件（T1555.001），通过伪造的系统对话框索要用户密码（T1056.002），使用内置的 `screencapture` 命令截屏（T1113），将结果暂存在本地（T1074.001），最后把系统信息和捕获的密码发送到其命令服务器（T1041）。MITRE 也为其他 macOS 家族列出了同样的外泄技术，包括 MacMa、XCSSET、ThiefQuest 和 LightSpy。我们的 [Atomic Stealer 相关文章](https://hisnlabs.com/en/blog/atomic-stealer-infostealers)更详细地追踪了另一款 macOS 窃密软件。

最后一步是唯一需要互联网的一步，通常只需几秒钟。等到 Mac 上其他地方出现异常时，数据早已离开，因此检测必须监视传出连接，而不是等待可见的症状。

## 为什么难以察觉

MITRE 对 Exfiltration Over Web Service（T1567）的描述很好地解释了其中的难点。热门服务提供了掩护，因为“网络中的主机在被入侵之前就已经在与它们通信”，“防火墙中可能已经存在允许访问这些服务的规则”，而且这些服务商“通常使用 SSL/TLS 加密，为攻击者提供了额外一层保护”。通过 HTTPS 上传到知名云存储服务，从外部看就像一次备份。定时传输（T1029）和固定大小的数据块（T1030）更进一步，有意模仿普通流量的节奏。像 macOS 内置防火墙那样只过滤传入连接的防火墙在这里不起作用，因为上述每一种外泄通道都是从 Mac 上发起的。

## AI 智能体：通往同一结果的新路径

Mac 上的 AI 智能体，例如会读取文件、运行命令和打开连接的编程助手，增加了一条无需安装任何窃密软件的路径。OWASP Gen AI Security Project 将间接提示注入定义为模型“接受来自外部来源（如网站或文件）的输入”时发生的情况，并给出了一个外泄场景：用户让模型总结一个网页，而网页中隐藏的指令使模型插入一个指向外部地址的图片链接，于是加载图片时就把私密对话带到了该地址。如果智能体还能运行 `curl` 或调用 webhook，同样的手法就变成了文件上传。用 ATT&CK 的术语来说，结果仍然是 T1567 或 T1048；改变的只是起点，从一个安装程序变成了智能体读到的一句话。FireAI 如何识别智能体本身，请参阅[另一篇文章](https://hisnlabs.com/en/blog/fireai-recognises-ai-agents-macos-data-exfiltration)。

## 暴露外泄的信号

MITRE 针对这些技术的检测指南反复提到同样的网络迹象。对于 T1041，它指出平时流量很少却突然发送大量数据的进程，以及“连接到罕见外部目的地或字节比例异常”的加密连接。对于 T1567，它补充了“平时不发起网络通信、却突然建立出站 HTTPS 连接且出站与入站数据比例很高”的进程。对于 T1030 和 T1029，它建议留意按固定间隔出现的统一负载大小，以及按计划向同一目的地发送数据的 LaunchAgent 或 launchd 任务。落到单台 Mac 上，四个问题就能涵盖大部分情况：这个 App 是否在与它从未使用过的目的地通信；它发送的数据是否远多于平常；它发送的是否远多于接收的；以及它是否按时间表在发送？

### 用 nettop 手动检查

macOS 自带 `nettop`，可以按进程报告网络使用情况。使用 `-P` 时每个进程显示一行，`-L 1` 以逗号分隔的形式输出一次采样，`-J` 用于限定列。这些计数是各进程启动以来的总量，因此运行一次只能告诉你谁上传得最多，而不是谁此刻正在上传；间隔一分钟运行两次并进行比较，才能看出变化。

*终端（macOS 26.7）*

```console
# bytes received and sent by each process, one sample
$ nettop -P -L 1 -J bytes_in,bytes_out
,bytes_in,bytes_out,
launchd.1,0,0,
syslogd.634,0,422,
apsd.640,5506,23880,
...
```

如果某个进程发送的字节远多于接收的字节，而你又不认为它会上传任何东西，就值得仔细看一看。其局限也很明显：`nettop` 不会告诉你数据去了哪里，不保存历史记录，也不会在你没看着的时候提醒你。

## FireAI 会标记什么

FireAI 是 HisnLabs 开发的设备端防火墙，它持续衡量上述问题中的两个，并就第三个发出询问。它每秒统计一次 Mac 向每个国家发送的数据量。当某个国家在过去 10 秒内收到至少 5 MB、且至少是其平常数量的十倍时，就会被标记为上传峰值：它会以红色显示在世界地图列表的顶部并附上上传速度，菜单栏图标会显示一个箭头和国家代码，主页的状态也会改变。峰值结束后，标记会保留一分钟；而持续进行的上传（例如备份）在几分钟后会成为新的常态。FireAI 不会自行拦截峰值；它会显示其背后是哪些 App 和目的地，由你来决定。

对于 AI 智能体，Agent profile 会在三天内学习 FireAI 识别的 19 种智能体各自通常连接到哪里。此后，首次出现的目的地会被标记以供审查；如果某个智能体在一小时内的上传量至少是其此前最繁忙一小时的四倍、且不少于 25 MB，也会被标记。在 Agent profile 安全模式下，新的目的地在你允许之前都会被拦截。在智能体之外，连接询问对每个 App 的新目的地都有效：某个 App 第一次尝试访问没有规则的地方时，FireAI 会暂停该连接并询问你。这一切都只基于元数据，即主机名和字节数；FireAI 不读取连接的内容。

> **Warning:** 坦率说明局限。通过 USB 或蓝牙的外泄（T1052、T1011）不会经过网络过滤器。上传到某个 App 已在合法使用的目的地，可能看起来很正常。为保持在阈值之下而设计的少量、缓慢传输（T1030）可能永远不会形成峰值。网络信号可以缩短数据在无人察觉的情况下外流的时间，但不能取代及时更新 Mac 以及只从可信来源安装软件。

> 按 App 和国家查看你的 Mac 把数据发到了哪里，并在上传突然激增时收到红色标记。免费试用 17 天，无需绑定银行卡。 [Download FireAI for Mac](https://hisnlabs.com/en/download)

## 简要检查清单

- 了解 Mac 上哪些 App 本就会上传数据，例如备份、同步和视频通话 App，并对其他 App 的上传保持疑问。
- 留意首次出现的目的地，尤其是命令行工具和 AI 智能体的。
- 比较每个进程发送和接收的字节数；出站与入站比例偏高的进程值得一看。
- 检查 LaunchAgent 和登录项中有无你不认识的任务，因为定时传输需要有东西来安排它。
- 只给 AI 智能体提供它们需要的文件夹和令牌，并把它们的网络目的地限制在已知列表内。

## FireAI 和 HisnLabs 在其中扮演的角色

外泄必须穿过网络，而那正是 FireAI 监视的地方：新目的地、按国家和按智能体统计的上传，全部只在你的 Mac 上处理。免费试用 17 天。

FireAI 是 HisnLabs 自己的产品：一款直接在 Mac 上运行的 AI 防火墙。它用通俗易懂的语言显示你的应用建立的每一个连接，并让你决定哪些数据可以离开你的 Mac——它的 AI 在本地运行，因此你的流量永远不会发送给我们或任何其他人。HisnLabs 的安全研究团队负责让这些判断保持准确：归类哪些域名只是普通的遥测、哪些属于真正的服务，追踪连接背后的国家和网络，并用真实的流量模式训练设备端模型（FireAI Pilot 功能）——这一切都不会离开你的 Mac。

你可以阅读它背后的技术决策，或试用 FireAI 17 天：[HisnLabs 出品的 FireAI](https://hisnlabs.com/zh/download)。

## Sources

- [MITRE ATT&CK: Exfiltration, tactic TA0010](https://attack.mitre.org/tactics/TA0010/)
- [MITRE ATT&CK: Exfiltration Over C2 Channel, T1041](https://attack.mitre.org/techniques/T1041/)
- [MITRE ATT&CK: Exfiltration Over Web Service, T1567](https://attack.mitre.org/techniques/T1567/)
- [MITRE ATT&CK: Exfiltration Over Alternative Protocol, T1048](https://attack.mitre.org/techniques/T1048/)
- [MITRE ATT&CK: Data Transfer Size Limits, T1030](https://attack.mitre.org/techniques/T1030/)
- [MITRE ATT&CK: Scheduled Transfer, T1029](https://attack.mitre.org/techniques/T1029/)
- [MITRE ATT&CK: Credentials from Password Stores: Keychain, T1555.001](https://attack.mitre.org/techniques/T1555/001/)
- [MITRE ATT&CK: Archive Collected Data, T1560](https://attack.mitre.org/techniques/T1560/)
- [MITRE ATT&CK: Cuckoo Stealer, S1153](https://attack.mitre.org/software/S1153/)
- [OWASP Gen AI Security Project: LLM01 Prompt Injection](https://genai.owasp.org/llmrisk/llm01-prompt-injection/)
- [nettop(1) manual page](https://keith.github.io/xcode-man-pages/nettop.1.html)
- [FireAI docs: requests by country and upload spikes](https://hisnlabs.com/en/docs/requests-by-country-and-upload-spikes)
- [FireAI docs: Agent profile](https://hisnlabs.com/en/docs/agent-profile)
- [FireAI docs: answer your first connection prompt](https://hisnlabs.com/en/docs/answer-your-first-connection-prompt)
- [FireAI docs: how the network filter works](https://hisnlabs.com/en/docs/how-the-network-filter-works)
