热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

从互联网诞生以来,消息应用就一直伴随我们左右。然而最近一段时间,由于一些国家开始实施大规模监控策略,

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

一、前言

从互联网诞生以来,消息应用就一直伴随我们左右。然而最近一段时间,由于一些国家开始实施大规模监控策略,有更多的用户选择安装名为“安全即时通信应用”的端到端加密应用。这些应用声称可以加密用户的邮件、保护用户数据免受第三方危害。

然而,深入分析三款安全消息应用(即Telegram、WhastApp以及Signal)后,我们发现服务商可能无法信守各自的承诺,用户的机密信息可能存在安全风险。

考虑到用户之所以下载这些应用,是因为想让自己的照片和消息完全避免第三方威胁,因此这是一个严重的问题。这些应用拥有海量用户,无法保证这些用户都经过安全教育,很难都了解启用某些设置可能会带来的安全风险。因此,这些应用有义务向用户阐述安全风险,并且在可能的情况下,尽量默认使用更为安全的设置。这些应用会将安全性交由操作系统来负责,在本文中,我们将给大家展示攻击者如何通过侧信道攻击操作系统来破坏这些应用的安全性。本文深入分析了这些应用处理用户数据的背后原理,并没有深入分析这些企业自身的安全性。

二、安全消息应用

安全消息应用的背后原理在于所有通信数据都经过用户端点之间加密处理,没有涉及第三方。这意味着服务提供商在任何时间都不具备读取用户数据的能力。

为了实现端到端加密,这些应用要么会开发自己的加密协议,要么采用第三方协议。这些应用通常会使用两种协议:由Telegram安全消息应用开发的MT协议以及由Open Whisper Systems软件公司开发的Signal协议。由于MT协议并没有开源,因此其他应用大多会使用Signal协议或者采用该协议的修改版。其他协议会根据用户的请求来使用该协议(但默认情况下没有使用该协议),这不在本文分析范围中。Facebook Messenger以及Google Allo采用就是这种解决方案,前者具备名为“Secret Conversations”(秘密对话)的一种功能,后者具备名为“Incognito”(隐身)聊天的一种功能。之前研究人员已经分析过公开的源代码,也对实时通信数据做过黑盒分析。

然而,安全消息应用远不止加密协议这么简单。还有其他组件(如UI框架、文件存储模型、群注册机制等)可能是潜在的攻击目标。Electron框架中发现的CVE 2018-1000136 漏洞 就是一个很好的例子,WhatsApp和Signal都使用这个框架来构建用户接口。在最糟糕的情况下,攻击者可以利用这个漏洞远程执行代码,或者复制消息。

这些协议的关注重点是在传输过程中保持通信的私密性,然而并无法保证数据在处理时或者到达用户设备时的安全性。这些协议也不会去管理群注册的安全性,WhatsApp最近发现的 漏洞 就是典型案例。如果攻击者入侵了WhatsApp服务器,那么就可以在未经群管理员许可的情况下,将新成员加入群中。这意味着动机充足的攻击者可能会挑选并窃听特定的WhatsApp小组,从这个角度来讲该应用已无法保证所有通信数据的端到端加密。

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

图1. Signal承诺保证用户消息安全(来源: http://www.signal.org)

除这些应用的技术层面之外,背后的用户也是不容忽视的一面。

这些应用都声称自己关注安全及隐私,某些应用甚至还声称自己能“不受黑客攻击”。这些宣传语的目的都是让用户建立对应用的信任。用户信任应用会保护自己隐私数据的安全。

由于这些应用都声称拥有数百万活跃用户,因此很明显并非所有用户都经过网络安全教育。因此,许多用户不能完全理解这些应用某些配置可能带来的安全风险及限制。保护用户的隐私安全并非只需要停留在技术层面,也需要以可接受的方式向用户提供正确信息,使用户即便不是安全专家,也能了解决策风险。

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

图2. Telegram广告声称其能保障用户消息安全免受黑客攻击(来源: http://www.telegram.com )

这些应用还有另一个重要功能,即跨平台特性。所有应用都支持主流移动设备平台,也包含桌面版本。正常用户都会理所当然地认为所有平台上的安全级别都相同。所有应用的网站上也在暗示应用的安全性、隐私性在所有平台上都保持一致。

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

图3. 网站提示用户可以在各种平台上使用应用(来源: http://www.signal.org )

然而安全功能的实现往往因具体平台而有所区别。有些平台上风险更多,并且这些风险也需要告知用户,因为用户通常会认为每个平台都能为他们提供相同级别的安全防护。

三、问题描述

这些主流应用的用户大多没有经过网络安全教育,这意味着用户会盲目信任这些应用能够保证其信息安全。显然,这种信任源自于应用对其自身服务的宣传方式。

2018年5月16日,Talos发表了关于 Telegrab 的一篇文章,介绍了可以劫持Telegram会话的恶意软件。原理非常简单:如果攻击者可以复制桌面用户的会话令牌(session token),那么就能劫持会话。除了本地存储的信息外,攻击者不需要其他任何信息。无论信息是否经过加密都不重要,只要复制这个信息,攻击者就能使用该新信息创建一个影子会话(shadow session)。

之后我们想继续研究这种技术能否适用于其他消息应用,事实证明我们测试的所有应用(Telegram、Signal以及WhatsApp)都受此方法影响。这些应用处理会话的方式有所不同,因此在某种程度上会影响这种攻击方法的效果。

在下文中,我们会描述我们研究的攻击场景,其中攻击者已经复制或者劫持了这些应用的会话。

四、应用分析

Telegram:桌面会话劫持

Telegram似乎是会话劫持(session hijacking)的最佳目标,攻击发生时用户并不会收到任何通知。受害者发送或者接收的消息以及图像也会原封不动传输至攻击者的会话。

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

图4. Telegram桌面环境中存在2个会话

一旦攻击者使用窃取的会话信息启动Telegram桌面应用,用户不会收到关于新会话的任何通知。用户需要手动确认同时是否存在其他在用会话。用户需要转到设置页面才能发现该信息,这对普通用户来说并不容易。当该消息在Telegram上显示时,大多数用户也很难注意到消息内容。

Signal:桌面会话劫持

Signal以竞争条件(race condition)的方式来处理会话劫持。当攻击者使用已窃取的会话信息启动应用时,两方应用都会竞争这一会话。因此,用户会在桌面应用上看到错误消息,但移动设备上看不到错误消息。

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

图5. 在Mac上创建的会话适用于Windows系统(反之亦然)

然而,当受害者看到这些警告消息时,攻击者实际上已经可以访问尚未被删除的所有联系人和先前聊天新信息。

为了避免竞争条件,攻击者只需要简单删除会话信息即可。当用户启动应用时,会收到重新链接应用的一个请求。

这种情况对安全专家来说是一种红色警报,然而对普通用户而言,他们可能会认为这只是应用中的一个错误。

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

图6. 同一台设备的两个会话

当用户创建第二个会话时,只有移动设备能看到该会话,并且默认情况下,两个会话都使用同一个名称。

因此,攻击者可以查看甚至仿冒受害者。攻击者发送的消息也会传到受害者的合法设备上,但攻击者可以在发送消息的同时删除这些消息,避免被用户发现。如果攻击者在仿冒过程中使用了“Disappearing messages”功能,那么受害者更难发现这种攻击行为。

WhatsApp:桌面会话劫持

WhatsApp是唯一实现了通知机制的一款应用。在正常操作下,如果攻击者使用已窃取的会话信息在桌面上打开第二个会话,那么受害者应该会收到一则警告消息,如下图所示:

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

图7. WhatsApp多登录通知

当创建第二个会话时,在线的应用会收到这个通知消息。在用户做出决定之前,第二个会话处于有效并可用状态。因此,当出现此通知时,攻击者已经可以访问受害者的所有联系人消息及先前消息。攻击者也可以仿冒受害者,直到受害者对该窗口做出决断。假设攻击过程中受害者没有在设备旁,那么在受害者返回前攻击者一直都具备访问权限。如果受害者使用的是移动设备,那么他们并不会收到明显的警告信息。如果受害者使用的是桌面客户端,那么每次复用会话时都能看到这则通知。第二个会话不能修改警告。

这种告警机制仍存在缺陷,攻击者可以通过如下步骤绕过:

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

图8. 绕过WhatsApp多登录通知步骤

攻击者可以简化上述步骤,跳过步骤4,在执行步骤5之前静静等待。这样结果一样,因为双方都能访问相同的消息。只有当受害者在移动设备上手动终止会话,攻击者才会失去访问权限。

根据我们的协调披露政策,我们已经将漏洞反馈至Facebook,大家可以访问 此处 了解所有公告详情。

Telegram:移动版影子会话

不单单是桌面环境存在会话滥用问题,实际环境中已经有攻击者通过克隆的移动应用滥用这些会话。

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

图9. 移动设备上的影子会话

在移动环境中,攻击者不必担心会话被入侵,在正常情况下攻击者很难获得会话数据。然而这里根本的问题在于,Telegram会根据同一个手机号码,允许同一台设备上存在影子会话(shadow session)。

这就存在一种攻击场景,在会话被终止前,攻击者可以读取Telegram中的所有消息以及联系人。在移动设备上,除非用户通过选项菜单请求终止会话,否则会话永远不会被终止。

Android平台上还有另一种攻击场景,恶意应用可以在无需用户交互的情况下创建影子会话。恶意应用只需获取“读取短信”和“结束后台进程”的权限即可,而这些权限请求行为通常不会被当成危险行为,可以轻松通过Google Play的审核。

Telegram注册过程首先会请求获取手机号码,然后通过包含唯一码的SMS确认手机号码有效。如果用户尝试再次注册同一个手机号码,Telegram会通过Telegram频道(而非SMS)发送一个验证代码。

将传输渠道从SMS切换成Telegram消息应当能够避免恶意应用在无需用户交互的情况下创建影子会话,因为恶意应用无法读取验证码。然而,如果注册过程无法在一定时间内顺利完成,Telegram就会假设用户无法访问Telegram应用,会通过SMS发送新的验证码。

这种备份机制造成了竞争条件,可以被恶意应用利用,在无需用户交互的情况下创建影子会话。整个操作过程如下:

针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究

图10. 创建Telegram影子会话

从此时起,恶意应用就可以访问所有联系人、不属于“Secret chats”的以前以及未来消息。

五、总结

安全即时消息应用可以在消息传输过程中保证信息安全性,甚至可以保护这些消息不受应用服务器的影响。然而,在保护应用状态及用户消息方面,这些应用有点力不从心,会将信息保护责任交由操作系统来承担。

Signal协议开发者已经预见到会话劫持可能。会话管理协议( Sesame 协议)安全考虑中包含一个子章节,专门针对设备被入侵的情况,其中提到一句话:“如果攻击者成功获知设备的秘密数据,比如身份私钥以及会话状态,那么安全性将会受到灾难性影响”。

鉴于协议开发者已经预见到这种攻击方式,因此个人用户或者企业不应当认为这些应用固若金汤。因此,如果企业使用这些应用来传输私密或者敏感消息,那么他们应该部署能够更好保护这些资产的端点技术,这一点非常重要。


以上所述就是小编给大家介绍的《针对WhatsApp、Telegram及Signal应用的侧信道攻击技术研究》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 我们 的支持!


推荐阅读
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • OWASP(安全防护、漏洞验证工具)开放式Web应用程序安全项目(OWASP,OpenWebApplicationSecurityProject)是一个组织 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 必须先赞下国人npm库作品:node-images(https:github.comzhangyuanweinode-images),封装了跨平台的C++逻辑,形成nodejsAP ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
author-avatar
狗狗水灵灵_266
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有