Blackhat 19:逆向WhatsApp加密来修改会话消息

2019-08-19 13:38:1112112人阅读

WhatsApp目前在180个国家有超过15亿用户,平均每个用户每天查询whatsapp超过23次。预计到2021年,美国将有超过2.56亿用户。

2018年底, Check Point研究人员通知了WhatsApp中的漏洞,攻击者利用该来的可以拦截和操作私聊和群聊中发送的消息,还可以生成貌似来自可信源的假消息。

Check Point研究团队分析了利用该漏洞的3种方法,所有都使用社会工程技术来欺骗终端用户。攻击者可以:

  • 使用群聊中的quote特征来修改发送者的身份,及时发送者不是群聊成员也可以。

  • 修改其他人回复的内容,发消息给自己。

  • 发送私聊消息另一个伪装为公开消息的群成员,当目标个人回复该消息时,别人就可以看到回复的消息。

WhatsApp修复了第3个漏洞。但研究人员发现仍然可以操作引用消息来传播貌似来自可信源的假消息。

Check Point 研究人员已将发现告知WhatsApp。

为了证明WhatsApp中漏洞的重要性,研究人员创建了一个可以解密WhatsApp通信和伪造消息的工具。

WhatsApp可以加密发送到消息、图片、语言和视频以及其他形式的内容,只有接收方才能看到,即使是WhatsApp后台也无法看到这些内容。

bh_whatsapp_001.png 

图1: WhatsApp加密会话

研究人员决定首先逆向WhatsApp的算法来解密数据。事实上,在解密了WhatsApp通信后,研究人员发现WhatsApp使用protobuf2 protocol协议来进行加解密。

研究人员将protobuf2数据转变成JSON格式看到了真实的参数,这些参数可以发送和修改参数来检查WhatsApp的安全。

研究的结果就是Burp Suit扩展和3个操作方法。在进行操作时,首先要获取session的公私钥,然后填充到Burp Suit扩展中。

更多详情参见https://research.checkpoint.com/fakesapp-a-vulnerability-in-whatsapp/


访问key


Key可以从二维码生成前WhatsApp Web的key生成阶段获取:

bh_whatsapp_002.png

图2: 通信的公私钥

在获取这些key后,研究人员需要获取当用户扫描二维码时手机发送给WhatsApp Web的“secret”参数:

bh_whatsapp_003.png

图3: 来自WebSocket的Secret Key

然后,扩展就是这样的:

bh_whatsapp_004.png

图4: WhatsApp Decoder Burp Extension

在点击Connect(连接)后,扩展会连接到扩展到本地服务器,由本地服务器执行扩展所需的所有任务。


操作WhatsApp


在解密WhatsApp通信后,研究人员看到了WhatsApp手机版和web版发送的所有参数。这样就可以操作并寻找安全问题。

然后可以进行一系列的攻击:


攻击1:修改群聊中发送者的身份,即使不是群聊成员


在该攻击中,攻击者可以伪造一个回复消息来其他群聊成员,即使这个群聊成员根本不存在。为了模拟群聊中的成员,攻击者需要做的就是获取加密的流量:

bh_whatsapp_005.png

图5: 加密的WhatsApp通信

在获取流量后,就可以发送给扩展,然后解密该流量:

bh_whatsapp_006.png

图6: 通过使用扩展解密WhatsApp消息

参数:

  • conversation – 表示发送到真实内容

  • participant – 表示真实发送内容的参与者

  • fromMe – 表明是我还是群聊中其他成员发送到数据

  • remoteJid – 表明数据发给那个群聊或联系人

  • id——数据的id,数据数据库中会出现相同的id

然后就可以随意对会话进行修改,比如群聊成员发送了含有Great的内容,可以被修改为I’m going to die in a hospital right now,参与者的参数可以被修改为组内的其他人:

bh_whatsapp_007.png

图7: 伪造的回复消息

然后必须将id修改为其他数据库中已经出现过的id。

为了让所有人都可以看到新伪造的消息,攻击者需要回复所伪造的消息,引用并修改消息(Great)以使他可以发给组内的其他人。

如下图所示,研究人员创建一个之前没有发送过消息的群聊,使用前面提到的方法创建了一个虚假的回复。

bh_whatsapp_008.jpg

图8:  原始会话

Participant参数可以是不在群聊中人员的文本或电话号码,这样会使群聊中的其他人认为这是真的来自参与者。比如:

bh_whatsapp_009.png

图9: 修改消息的内容

使用调试工具后,结果就变成了:

bh_whatsapp_009.5.jpg

结果还是会发送给群聊中的其他人。

bh_whatsapp_0010.png

图10:  回复非本群聊成员发送的消息


攻击2:自己给自己发消息


在该攻击中,攻击者可以以其他人的身份发送消息给自己,就像是自己给自己发消息。

为了伪造消息,必须要操作消息中的fromMe参数,表明是谁在私聊中发送了消息。这次研究人员在发送到Burp Suite前就获取了来自WhatsApp Web的流量。为此,研究人员在 aesCbcEncrypt函数中设置了断点,并从a参数中获取了数据:

bh_whatsapp_0011.png

图11: 出流量操作

研究人员复制数据到Burp扩展,并选择出方向。点击Decrypt,扩展就会解密数据:

bh_whatsapp_0012.jpg

图12: 解密出消息

在将其修改为false,然后加密后,研究人员获取了以下的结果:


bh_whatsapp_0013.jpg

图13: 出消息加密

研究人员修改了浏览器的a参数,然后结果就是一个含有内容的推送通知。这样,就可能欺骗整个聊天记录。

bh_whatsapp_0014.jpg

图14: 发送消息给自己

整个会话就变成了这样:

bh_whatsapp_0015.jpg

图15: 发送消息给自己


本文翻译自:https://research.checkpoint.com/black-hat-2019-whatsapp-protocol-decryption-for-chat-manipulation-and-more/

原文链接: https://www.4hou.com/info/news/19690.html

翻译作者:ang010ela


0
现金券
0
兑换券
立即领取
领取成功