使用WebRTC开发Android Messenger:第3部分

本文是关于使用WebRTC开发Android Messenger的系列文章第三部分,作者探讨了哪些应用程序使用了WebRTC,并分析了不同类型的Messenger应用程序如何受到潜在漏洞的影响。通过Frida工具挂接二进制文件,作者展示了如何利用WebRTC中的漏洞,并测试了多个流行应用,如Signal、Duo、Facebook Messenger等,揭示了WebRTC集成在移动应用中的安全风险和挑战。
摘要由CSDN通过智能技术生成

这是一个由三部分组成的系列文章,内容涉及:利用WebRTC中的BUG和利用Messenger应用程序。本系列文章重点阐述了当应用程序不能应用于WebRTC补丁程序以及通信和安全问题通知中断时可能出问题的方面。

文 / Natalie Silvanovich

原文链接:

https://googleprojectzero.blogspot.com/2020/08/exploiting-android-messengers-part-2.html

Part 3: Which Messengers?

使用WebRTC开发Android Messenger:第2部分中,我描述了Android上对WebRTC的一个应用。在本节中,我将探索它用于哪些应用程序。

The exploit

在编写这个BUG时,我最初通过修改WebRTC的源代码并重新编译它来修改发送到目标设备的SCTP数据包。这对于攻击封闭源代码的应用程序是不实际的,因此我最终改用使用Frida来挂接攻击设备的二进制文件。

Frida的挂钩功能允许在调用特定的本机函数之前和之后执行代码,这允许我的BUG改变传出的SCTP包以及检查传入的包。从功能上讲,这相当于改变攻击客户机的源代码,但是这些改变不是在编译时在源代码中进行的,而是由Frida在运行时动态地进行的。

该BUG的源代码可以在这里找到:

https://bugs.chromium.org/p/project-zero/issues/detail?id=2034#c6

攻击设备需要挂载7个函数,如下所示。

usrsctp_conninput // receives incoming SCTP

DtlsTransport::SendPacket // sends outgoing SCTP

cricket::SctpTransport::SctpTransport // detects when SCTP transport is ready

calculate_crc32c // calculates checksum for SCTP packets

sctp_hmac // performs HMAC to guess secret key

sctp_hmac_m // signs SCTP packet

SrtpTransport::ProtectRtp // suppresses RTP to reduce heap noise

这些函数可以作为符号连接,或者作为二进制中的偏移量。

目标设备的二进制文件还有三个地址偏移量,这是利用BUG进行攻击所必需的。系统函数和malloc函数之间的偏移量,以及上一篇文章中描述的gadget和malloc函数之间的偏移量就是其中两个。这些偏移量在libc中,libc是一个Android系统库,因此需要根据目标设备的Android版本来确定。还需要从cricket::SctpTransport vtable的位置到全局偏移表中malloc位置的偏移量。这必须由被攻击应用程序中包含WebRTC的二进制文件确定。

请注意,所提供的利用BUG脚本有一个严重的限制:每次读取内存时,只有在设置了指针的第31位时才有效。第2部分解释了其原因。利用BUG脚本提供了一个示例,说明如何修复此问题并使用FWD TSN块读取任何指针,但这并不是针对每次读取都实现的。出于测试目的,我重置设备,直到WebRTC库映射到一个有利的位置。

Android Applications

通过在googleplay的APK文件中搜索usrsctp中的特定字符串,确定了集成WebRTC的流行Android应用程序列表。大约200个用户超过500万的应用程序似乎在使用WebRTC。我评估了这些应用程序,以确定它们是否可能受到BUG攻击中的BUG的影响,以及影响会是什么。

事实证明,应用程序使用WebRTC的方式多种多样,但可以分为四大类。

 

l  投影:在用户同意的情况下,将移动应用程序的屏幕和控件投影到桌面浏览器中,以增强可用性

l  流:音频和视频内容从一个用户发送到多个用户。通常有一个中间服务器,因此发件人不需要管理可能的数千个对等方,并且会记录内容以便以后查看

l  浏览器:所有主要的浏览器都包含WebRTC以实现JavaScript WebRTC API

l  会议:两个或更多用户通过音频或视频进行实时通信

对于每种类别,利用BUG的影响是不同的。投影是低风险的,因为建立WebRTC连接需要大量用户交互,并且用户首先可以访问连接的两面,因此通过损害另一面几乎无济于事。

流媒体的风险也相当低。尽管某些应用程序在流的观看者数量较少时有可能使用对等连接,但它们通常使用中间服务器,该服务器终止发送对等方的WebRTC连接,并开始与接收对等方的新连接。这意味着攻击者通常无法将格式错误的数据包直接发送到对等方。即使采用点对点流传输的设置,目标用户也需要用户交互才能查看流,并且通常无法限制谁可以访问流。因此,RTC应用程序可能没有针对性地使用Web流攻击。当然,这些BUG可能会影响流服务使用的服务器,但是本研究未对此进行调查。

浏览器几乎可以肯定会受到WebRTC中大多数错误的攻

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值