利用Whatsapp Web服务劫持Whatsapp账户

简介:

黑客

一、前言

通过实现所有用户间的E2E加密,Whatsapp已经改变了它的形象,从一个令人震惊的安全的通信应用程序到被许多人尊重的应用程序的转变。

二、Whatsapp简介

Whatsapp帐号基于手机号码。这意味着手机号码就是你的用户名,它也被用来认证。尽管从隐私的角度看这不是完美的,让用户不必再记住另一个密码,他们可能会被重复使用,甚至更糟,通过钓鱼攻击泄漏。

登陆过程的简略描述:

http://p5.qhimg.com/t013435f6b36db17cbd.png

当每次用户启动应用后用户不得不输入他们的手机号。一个验证令牌通过SMS或者电话发送到这个号码。在验证码输入到这个应用后,认证令牌保存在设备中,用户成功登录。

当用户在新设备登录时,需要重复上述过程,并且老设备的授权被取消。Whatsapp不会在他们的服务器上保存老的消息,因此之前的消息不能转移到新的设备上。

当然这个过程是更加复杂的但是这种简化在本文中是适合的。

这种便利伴随着被网络黑客攻击的代价,能够访问电话号码。用户信任移动供应商也是需要的,因为他们对该号码有完全访问权限并且能接管帐号。

三、攻击者的角度

从低级的攻击者的角度来看,它很难被绕过。有两个问题:

1. 以一些方式访问受害者的手机号码。正如上面所述,这个能够通过网络攻击或者移动服务供应商实现。尽管能访问到手机号码,但是不能获得任何老的消息或者聊天历史记录,而且受害者会立即意识到一些事发生了,因为他们的手机会注销账户。

2. 进入操作系统,访问磁盘分区等。尽管这能实现,但是代价非常大。

四、新角色的加入

在2015年,Whatsapp启用了Whatsapp网络服务,能在电脑上面收发消息的网站。为了使用它,浏览器与与手机对等并且手机保持命令。下面是这个过程的简述:

Whatsapp启用了Whatsapp网络服务

通过用手机应用扫描网页上的二维码来授权登录。然后用户可以在浏览器中使用Whatsapp,只需要手机是打开的并且能被计算机访问。

这个给攻击者提供了一个方便的脚手架。欺骗用户扫描二维码,将得到将来和过去通信的全部访问权限。

五、一个正式的攻击

它非常简单:攻击者只需要欺骗用户扫描恶意的二维码来授权攻击者的浏览器。这个将给他们对于受害者账户的完全访问权限。一个简单的在线抽奖可以作为诱惑,受害者需要扫描二维码进入。

攻击过程描述:

http://p2.qhimg.com/t01444b5f71514ea484.png

为了更加复杂,Whatsapp不会在他们的注册页面展示静态的二维码,会几秒钟生成一个新的二维码。这个阻止了攻击者简单的复制并发布到另一个网站上。

在我的演示中我绕过这个障碍,通过使用脚本持续抓取二维码,并使用websocket连接发送给“受害者”。

缺陷:

  • 用户能看到他们授权的浏览器设备列表
  • 如果过另一个浏览器登入了受害者会收到一个警告
  • 这是个社工攻击:受害者必须参与给予权限
  • 但是,对于粗心的人来说这还是个有效的手段。

六、演示

我开发的工具使用selenium获取QR代码并使用express.js + socket.io在单独的页面上显示它们。如果受害者使用他们的手机扫描这个二维码,则document.cookie和selenium浏览器的本地存储将被转储到攻击者计算机上的文件中。然后可以使用获取的数据使用任何浏览器登录受害者的帐户。(代码)

七、修复手段

没有修复手段避免这种攻击,除了改进认证过程。我认为当他们开发网络客户端时就已经意识到了这种可能性,但是他们不认为这是个大问题。

作者:myswsun
来源:51CTO

相关文章
|
1月前
|
网络协议 Java Nacos
nacos常见问题之在web界面 上下线服务时报错 400如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
31 0
|
1月前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之做的web服务计费如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
407 3
|
1月前
|
JSON API 数据库
解释如何在 Python 中实现 Web 服务(RESTful API)。
解释如何在 Python 中实现 Web 服务(RESTful API)。
26 0
|
1月前
|
负载均衡 Java 中间件
使用Go语言构建高性能Web服务
Go语言作为一种快速、高效的编程语言,其在构建高性能Web服务方面具有独特优势。本文将探讨如何利用Go语言开发和优化Web服务,以实现更高的性能和可伸缩性。
|
2月前
|
Arthas 监控 NoSQL
web服务性能监控方案
web服务性能监控方案
|
3月前
|
负载均衡 Ubuntu 应用服务中间件
【Linux】Web服务之Nginx服务
【Linux】Web服务之Nginx服务
39 0
|
24天前
|
数据采集 Java API
python并发编程: Python使用线程池在Web服务中实现加速
python并发编程: Python使用线程池在Web服务中实现加速
18 3
python并发编程: Python使用线程池在Web服务中实现加速
|
1月前
javaWeb服务详解(含源代码,测试通过,注释) ——web.xml
javaWeb服务详解(含源代码,测试通过,注释) ——web.xml
7 0
|
1月前
|
XML JSON API
通过Flask框架创建灵活的、可扩展的Web Restful API服务
通过Flask框架创建灵活的、可扩展的Web Restful API服务
|
1月前
|
安全 中间件 Go
Go语言Web服务性能优化与安全实践
【2月更文挑战第21天】本文将深入探讨Go语言在Web服务性能优化与安全实践方面的应用。通过介绍性能优化策略、并发编程模型以及安全加固措施,帮助读者理解并提升Go语言Web服务的性能表现与安全防护能力。