利用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

相关文章
|
9天前
|
SQL 安全 关系型数据库
危险!!!也许你的web网站或服务正在悄无声息地被SQL注入
危险!!!也许你的web网站或服务正在悄无声息地被SQL注入
|
23天前
|
应用服务中间件 nginx
Nginx下配置多个web服务
Nginx下配置多个web服务
|
28天前
|
NoSQL 关系型数据库 MySQL
Web服务压测神器wrk
wrk是一款开源的高性能http压测工具(也支持https),非常小巧,可以执行文件只有3M(其中主要是luajit和openssl占用绝大多数空间),别看核心代码3-5年没更新了,但依旧非常好用。虽然很早之前我就知道有这么个工具了,当时学习这个工具的时候我还拿它压测了我们的个人网站xindoo.me,发现mysql性能不行后加了wp-cache,通过cache把我网站的承载能力提升了10多倍。但当时之前简单使用它的初级功能,最近工作中恰好有个http服务需要压测,然后就拿wrk做了。这次使用了wrk lua高级功能实现了压测,我们找到了我们服务的瓶颈,同时也被wrk的超高性能所震惊。
23 0
|
1月前
|
网络协议 Linux 应用服务中间件
无需租云服务器,Linux本地搭建web服务,并内网穿透发布公网访问
由于以上命令暴露的公网地址在窗口关闭后隧道也将同步关闭无法访问,所以我们需要将参数保存到配置文件中。方便每次开机后,后台自启动运行隧道。
57 0
|
1月前
|
C# 数据安全/隐私保护
C#最简单的登录Web服务
C#最简单的登录Web服务
|
1月前
|
C# Windows
C#建立最简单的web服务,无需IIS
C#建立最简单的web服务,无需IIS
|
1月前
|
存储 数据库连接 数据库
无法连接到元数据库可能是导致你的 Web 服务无法启动的原因
无法连接到元数据库可能是导致你的 Web 服务无法启动的原因
43 2
|
2月前
|
弹性计算 Kubernetes 索引
使用Kubectl部署web服务到K8s集群
本场景带您体验如何使用k8s的原生命令kubectl部署一个web应用(魔方应用)的镜像到k8s集群中,并通过Ingress将部署的服务暴露出来由外部访问。
112 0
|
3月前
|
Ubuntu 网络安全 Apache
物理机不能访问虚拟机kali的web服务解决方案记录
物理机不能访问虚拟机kali的web服务解决方案记录
98 0
|
3月前
|
弹性计算 Kubernetes 容器
使用Kubectl部署web服务到K8s集群
本次基于阿里云实验室提供的实验环境,使用预创建好的创建云服务器ECS和ACK集群资源,实现通过Kubectl部署web服务到K8s集群。
相关产品
云迁移中心
推荐文章
更多