从飞马到开源:MVT 把手机间谍软件取证变成命令行
你是个人权活动家。某天你收到一条可疑的 WhatsApp 消息,发件人声称有你同事的私密照片。你点了链接——什么也没发生。
从飞马到开源:MVT 把手机间谍软件取证变成命令行
项目:mvt-project/mvt
Stars:275(2026-10-08 当日,14 天内首次上榜)
语言:Python
作者:Amnesty International Security Lab
许可证:MVT License(自定义)
一个场景
你是个人权活动家。某天你收到一条可疑的 WhatsApp 消息,发件人声称有你同事的私密照片。你点了链接——什么也没发生。
三个月后,你的联系人开始收到你"发送"的邮件,但你从没写过那些邮件。你的手机被监控了,但你不知道从什么时候开始、被什么软件监控、数据泄露了多少。
2021 年 7 月,Pegasus Project 调查披露:NSO Group 的 Pegasus 间谍软件通过"零点击"漏洞入侵了全球数万名活动家、记者、律师的手机。Amnesty International 的安全实验室同时发布了 MVT(Mobile Verification Toolkit)——一个让调查者检测手机是否被间谍软件入侵的开源工具。
它做了什么
MVT 是一个 Python CLI 工具,做三件事:
取证采集:从 iOS 或 Android 设备上提取备份和日志文件。iOS 通过 iTunes 备份或越狱后的文件系统提取;Android 通过 ADB 备份或 root 后的完整镜像。
IOC 扫描:用"妥协指标"(Indicators of Compromise, IOCs)扫描提取的数据。IOC 是一组已知的间谍软件特征——文件路径、域名、URL、进程名。MVT 把你的手机数据和 IOC 列表比对,找出匹配项。
结果报告:生成 JSON 格式的扫描结果,列出所有匹配的 IOC 和相关痕迹。
三个命令:mvt-ios 分析 iOS 设备,mvt-android 分析 Android 设备,mvt 做平台无关的操作(版本、补全、下载 IOC)。
为什么重要
MVT 的核心价值不是技术多复杂——它的技术原理不新鲜,就是文件比对和日志分析。它的价值在于把国家级监控变成了可检测的东西。
在 MVT 出现之前,检测 Pegasus 入侵需要送手机给专业实验室,耗时数周,成本数千美元。大部分受害者负担不起。MVT 把这个过程压缩到一条命令——当然,前提是你有 IOC 列表。
这里有一个关键设计决策:MVT 本身不包含 IOC,它只提供扫描框架。IOC 由 Amnesty International 和其他研究机构单独发布,通过 mvt download-iocs 命令下载。这个分离设计有两个好处:
1. IOC 会随时间更新——新的间谍软件版本出现,新的 IOC 被发现。框架和数据分离,更新 IOC 不需要更新工具。 2. IOC 有敏感性——某些 IOC 来自机密调查,不能公开。框架开源不等于所有 IOC 都公开。
"假阴性"警告
MVT 的 README 里有一段非常重要的警告:
Public indicators of compromise are insufficient to determine that a device is "clean", and not targeted with a particular spyware tool. Reliance on public indicators alone can miss recent forensic traces and give a false sense of security.
翻译:公开 IOC 不足以判定设备"干净"。只靠公开 IOC 扫描,可能漏掉最新的入侵痕迹,给你虚假的安全感。
这个警告是 MVT 设计哲学的核心。它知道自己有局限性——公开 IOC 永远落后于间谍软件的最新版本。Pegasus 的零点击漏洞利用后可能不留任何公开 IOC 能匹配的痕迹。MVT 能告诉你"发现了什么",但不能告诉你"什么都没发现"。
这个设计态度和大部分安全工具相反。大部分工具倾向于夸大自己的能力——"扫描完成,未发现威胁,你的设备安全!" MVT 明确说"我没发现不代表你安全"。这不是谦虚,是诚实。
v3 的破坏性更新
2026 年近期,MVT 合并了 v3 分支,引入了破坏性变更。如果你有脚本依赖 MVT 的输出格式,可能需要适配。
v3 的主要变化包括:
- 插件系统:MVT 现在支持插件包,可以扩展额外的取证模块。第三方可以写自己的分析模块,不需要改 MVT 核心代码。
- 命令结构变化:
mvt-ios和mvt-android的子命令参数有调整,--verbose的位置从命令后移到了命令前。 - Shell 补全:新增
mvt completion命令,支持 Bash/Zsh/Fish 的自动补全。
许可证的独特性
MVT 用的是自定义许可证,不是 MIT 或 Apache。许可证的核心条款是:
The purpose of MVT is to facilitate the consensual forensic analysis of devices of those who might be targets of sophisticated mobile spyware attacks, especially members of civil society and marginalized communities. We do not want MVT to enable privacy violations of non-consenting individuals.
翻译:MVT 的目的是帮助可能被间谍软件攻击的人进行知情同意的取证分析。Amnesty 不希望 MVT 被用来侵犯非同意个人的隐私。
这个许可证不是法律上的限制力很强的条款——技术上 MVT 是开源的,任何人都能用。但它是一个伦理声明:这个工具是为了保护受害者,不是为了侵犯隐私。如果你用它来监控别人的手机,你在道德上违背了工具的设计意图。
这种"伦理许可证"在开源社区里很少见。大部分开源许可证只关心代码自由,不关心使用场景。MVT 的许可证是一个有趣的实验:代码可以自由使用,但使用场景有伦理边界。
为什么现在 trending
MVT 在 2026 年 10 月重新 trending,可能和几个因素有关:
1. v3 发布:破坏性更新引发了社区讨论和文档更新,GitHub 活跃度上升。 2. 新的间谍软件威胁:近期可能有新的移动端间谍软件被披露,推动了 MVT 的关注度。 3. 插件系统扩展:第三方插件开始出现,扩大了 MVT 的能力边界。
MVT 不是新项目——它从 2021 年就存在了。但它代表了一个持续重要的方向:把国家级监控的检测能力交给普通人。在移动设备间谍软件越来越 sophisticated 的时代,这个方向的价值只增不减。
一句话总结
MVT 把 Amnesty International 五年积累的间谍软件取证经验,压缩成了一条命令。它不能告诉你"你的手机是安全的",但它能告诉你"你的手机上有什么已知的坏东西"——这个区别,在安全领域至关重要。