利用微软Teams:身份冒充与欺骗漏洞深度剖析
关键发现:
Check Point Research发现了微软Teams中的四个漏洞,允许攻击者冒充高管、操纵消息、更改通知以及在视频和音频通话中伪造身份。 外部访客用户和恶意内部人员都可能利用这些缺陷,从根本上破坏了全球3.2亿多用户对该平台的信任。 实际风险包括高管冒充、金融欺诈、恶意软件传播、虚假信息活动和敏感通信中断。
Check Point Research于2024年3月23日向微软负责任地披露了这些漏洞。微软确认了报告并进行了调查,随后对报告的问题发布了修复程序。截至2025年10月底,所有漏洞均已解决,微软将其中一个通知欺骗漏洞正式追踪为CVE-2024-38197。
不断演变的威胁形势
近年来,我们目睹了包括国家支持团体和国家级行为者在内的复杂威胁行为者,越来越多地将协作平台和通信工具作为更广泛间谍活动和数据外泄行动的目标。
如今,威胁行为者利用用户对熟悉通信和工作区界面的固有信任,使用社会工程策略通过组织日常运营所依赖的平台来操纵员工。
我们的研究发现
我们从两个关键攻击角度进行了这项研究:试图渗透组织的外部访客用户,以及寻求滥用其现有访问权限的内部恶意用户(如受感染员工或内部威胁)。
我们的研究揭示了微软Teams内的几个漏洞,这些漏洞可被利用来操纵消息内容和发送者身份,更改通知外观。最关键的是,我们发现外部访客用户和内部恶意行为者都可以有效地改变其身份,以显示为受信任人员,包括C级高管,从根本上破坏了组织依赖的安全通信信任边界。
具体来说,我们能够:
- 无痕编辑消息:我们发现了一种方法可以更改已发送消息的内容,而不留下通常的"已编辑"标签。
- 操纵消息通知:我们的研究揭示了一种技术,可以更改消息的明显发送者,从而能够显示来自知名人士(如CEO)的通知,利用通常与此类通信相关的信任和紧迫感。
- 通过私聊中的对话主题更改显示名称:我们发现了一个漏洞,允许攻击者通过修改对话主题来更改私人聊天对话中显示的名称。
- 在视频/音频通话中伪造呼叫者身份:我们发现呼叫通知中使用的显示名称(以及后来在通话本身期间)可以通过特定操纵呼叫启动请求来任意修改。
技术深度剖析
虽然微软Teams提供功能相似的网页版和应用程序版,但我们将研究重点放在网页版上。该版本与其应用程序对应版本一样,接受并处理用于各种操作(如发送消息和拨打电话)的JSON有效负载。
理解Teams消息架构
当发送消息时,请求体中包含几个参数:
content:消息的实际文本,周围有HTML标签messagetype:对于标准文本消息,通常设置为RichText/Htmlclientmessageid:每个用户消息的唯一标识符imdisplayname:发送消息用户的显示名称
发送POST请求后,响应包括OriginalArrivalTime参数,该参数携带Unix时间戳值,对于发送后修改消息的操作至关重要。
此外,获得的另一个关键信息是分配给每个用户的唯一UUID。这个UUID对于识别系统内的用户至关重要,并在我们将探讨的漏洞中扮演重要角色。
消息操纵技术
让我们从基础开始,探索可以对自己消息进行的修改。如前所述,当我们发送消息时,我们包含一个clientmessageid参数(以及我们消息的内容),并收到OriginalArrivalTime参数的Unix时间戳值。
现在,让我们尝试直接在MS Teams中编辑我们的消息。不幸的是,此操作会导致"已编辑"标签出现在我们消息上方。要绕过此限制,我们可以制作一条新消息,并将clientmessageid替换为我们先前消息中的值。这种方法有效地掩盖了我们的编辑,使其对他人不可检测。
操纵通知
无论是在手机应用程序还是PC上,这些警报都会立即引起我们的注意,特别是当它们暗示消息来自组织内的关键人物时。
在每个发送的消息中,有一个名为imdisplayname的参数,默认显示发送者的名称。通过我们的调查,我们发现这个参数可以更改为任何期望的值。这种操纵导致收件人收到似乎来自实际发送者以外的人的通知。
更改私聊中的显示名称
微软Teams通过特定的PUT端点提供更新群聊中对话主题的功能。此功能旨在帮助用户更有效地组织和识别他们的聊天。
通过操纵对此端点的请求,不仅可以更改群聊中的对话主题(这是预期和允许的),而且令人惊讶的是,在私人对话中也可以更改。
在私聊的情况下(两个人之间的直接对话),考虑到私聊在传统意义上没有"主题"的性质,对主题的任何更改理想情况下应受到限制或不适用。
这样的更改在执行时可能误导用户,使他们相信他们正在与不同的人进行对话。
在视频/音频通话中伪造呼叫者身份
我们发现,通过特定操纵呼叫启动请求,可以任意修改呼叫通知中使用的显示名称。此缺陷允许攻击者伪造呼叫者身份,向呼叫接收者呈现任何选择的名称。
在呼叫启动阶段,一个JSON有效负载被发送到:POST /api/v2/epconv,包含定义呼叫特征的各种参数。其中,“participants"部分内的"displayName"参数特别令人感兴趣。此参数旨在显示呼叫者的名称,因为它对接收者显示。
通过修改有效负载中的"displayName"值,我们能够更改呼叫者的明显身份。例如,将其更改为任意名称会导致呼叫接收者看到来自修改后名称的来电,而不是实际呼叫者的身份。
实际攻击场景
这些漏洞创造了几个令人担忧的攻击场景,与复杂威胁行为者(包括国家级团体)使用的技术一致:
高管冒充和社会工程
攻击者可以显著冒充他人,使消息看起来是由其他人发送的。在私人聊天中,恶意访客用户可以冒充内部人员,如财务部门成员。通知可以被欺骗以显示虚假的发送者名称,利用信任官方外观通知的本能,可能来自权威人物或高层管理人员。
高级持续性威胁和数据外泄
这些攻击可以直接促进更严重的恶意活动,通常见于国家级活动中:
- 恶意软件传播:攻击者可以发送欺骗性通知,似乎来自受信任的来源(如高层管理人员),要求紧急行动或点击链接,然后安装恶意软件。
- 凭据收集/欺诈:通过冒充内部人员(特别是在财务部门),攻击者可以钓鱼敏感数据或通过假装讨论预算数字或其他敏感信息来实施欺诈。
- 虚假信息活动:创建虚假消息历史和破坏对话完整性的信任能力,使得虚假信息活动得以传播。
- 隐私泄露:整体漏洞影响包括隐私泄露。
- 简报中断:在Teams上主办的敏感简报期间冒充个人的能力可以传播混乱或诱使参与者泄露敏感信息。
风险缓解策略
组织如何降低风险
微软已经解决了我们在Teams中报告的漏洞,不需要用户采取任何行动。然而,协作平台仅提供原生安全性的基线,我们的研究表明这一层可以被绕过。
为了保护免受信任利用,组织需要一个额外的防御层,包括:
- 零信任访问控制 - 持续验证用户身份和设备状态,而不仅仅在登录时。
- 高级威胁防护 - 检查在协作应用程序内共享的文件、链接和有效负载。
- 数据丢失防护(DLP) - 强制执行细粒度策略以防止未经授权的数据外泄。
- 用户意识和验证协议 - 培训员工质疑高风险请求,并对敏感操作使用带外验证。
组织如何降低风险
微软已经解决了我们在Teams中报告的漏洞。
然而,我们发现的漏洞强调了减少暴露的行为实践的重要性:
- 批判性思维:我们的研究强调了现在比以往任何时候都更需要批判性思维。用户应该始终质疑他们在网上看到和听到的内容,即使它似乎来自他们通常信任的来源。
- 数字意识:理解这些特定的攻击向量对于变得更加数字意识至关重要。组织应该教育他们的团队关于这些特定的操纵技术。
- 验证协议:鉴于这些漏洞可以被轻易利用,组织应该为敏感通信实施带外验证方法,特别是涉及金融交易或敏感数据的通信。
披露时间线
- 2024年3月23日 - 漏洞向微软披露
- 2024年3月25日 - 微软确认披露并确认将调查报告的问题
- 2024年4月18日 - 微软确认报告的行为,并表示将继续调查以确定适当的解决方案
- 2024年5月8日 - “无痕编辑消息"问题修复
- 2024年7月31日 - “更改私聊中的显示名称"问题修复
- 2024年8月13日 - 解决"操纵通知"问题的修复计划发布日期,追踪为CVE-2024-38197
- 2024年9月13日 - “操纵通知"问题修复
- 2025年10月 - “视频/音频通话中的呼叫者身份"问题修复