WhatsApp漏洞分析
字数 2089 2025-08-29 08:32:24
WhatsApp漏洞分析与利用技术详解
1. 漏洞概述
WhatsApp作为全球最大的即时通讯应用之一,拥有15亿用户、超过10亿个群组,每天发送消息超过650亿条。Check Point研究人员发现了WhatsApp中的三个关键漏洞,攻击者可利用这些漏洞:
- 在群组聊天中修改发送者身份(即使发送者不是群组成员)
- 以发送者口吻修改回复消息
- 在群聊中发送私聊消息,当接收者回复时整个群组可见
这些漏洞可被用于传播垃圾邮件、谣言和虚假信息,具有严重的社会工程学攻击风险。
2. 技术背景
2.1 WhatsApp加密机制
WhatsApp使用端到端加密保护所有消息内容,加密过程基于以下技术:
- Protobuf2协议:用于消息序列化
- Curve25519:用于密钥交换
- AES-CBC:用于消息加密
- HMAC-SHA256:用于消息完整性验证
2.2 密钥交换流程
- WhatsApp Web端生成一对公钥(
pub_key_list)和私钥(priv_key_list) - 私钥用于生成QR码
- 用户扫描QR码后,手机端通过WebSocket发送加密的共享密钥(
secret) - 使用HKDF函数扩展共享密钥(
shared_secret_ex) - 生成AES密钥(
aes_key)和MAC密钥(mac_key)
3. 漏洞利用方法
3.1 攻击1:伪造群组消息发送者
攻击步骤:
-
拦截加密的WhatsApp通信流量
-
解密流量获取原始消息参数:
conversation:消息内容participant:真实发送者fromMe:是否为自己发送remoteJid:目标群组id:消息ID
-
修改关键参数:
- 将
participant改为任意号码或名称(即使非群组成员) - 修改
conversation内容 - 更新消息ID避免冲突
- 将
-
重新加密并发送伪造消息
技术要点:
- 需要获取并解密原始消息
- 修改
participant字段可实现身份伪造 - 通过引用(reply)机制增强可信度
3.2 攻击2:篡改他人回复
攻击步骤:
- 拦截从Web端发送的消息
- 在
aesCbcEncrypt函数设置断点获取加密数据 - 使用Burp扩展解密消息
- 修改
fromMe参数为false(伪装成他人发送) - 重新加密并注入修改后的消息
技术要点:
- 修改
fromMe标志可改变消息归属 - 需要完整会话劫持能力
- 可伪造整个对话历史
3.3 攻击3:群组私聊消息公开
攻击步骤:
-
访问Android设备数据库:
/data/data/com.whatsapp/databases/msgstore.db -
执行SQL修改:
UPDATE messages SET key_from_me = 1, data = "伪造内容" WHERE _id = [消息ID]; -
设置
remote_resource参数指定可见成员 -
强制重启WhatsApp客户端刷新消息
技术要点:
- 直接修改本地数据库实现消息控制
- 受害者回复时会公开显示
- 需要设备物理访问或远程漏洞利用配合
4. 技术深入分析
4.1 加密/解密流程
解密过程:
- Base64解码接收的消息
- 分割消息标签和内容
- 验证HMAC-SHA256签名
- 使用AES密钥解密内容
- 将Protobuf数据解析为JSON
加密过程:
- 构建Protobuf消息结构
- 序列化为二进制格式
- 生成HMAC-SHA256签名
- 使用AES-CBC加密
- Base64编码并添加消息标签
4.2 关键函数分析
-
Curve25519密钥生成:
self.conn_data["private_key"] = curve25519.Private("".join([chr(x) for x in priv_key_list])) self.conn_data["public_key"] = self.conn_data["private_key"].get_public() -
共享密钥扩展:
shared_expended = HKDF(self.conn_data["shared_secret"], 80) -
HMAC验证:
check_hmac = HmacSha256(shared_expended[32:64], self.conn_data["secret"][:32] + self.conn_data["secret"][64:]) -
密钥派生:
keysDecrypted = AESDecrypt(shared_expended[:32], shared_expended[64:] + self.conn_data["secret"][64:]) self.conn_data["key"]["aes_key"] = keysDecrypted[:32] self.conn_data["key"]["mac_key"] = keysDecrypted[32:64]
4.3 Protobuf消息结构
WhatsApp使用自定义的Protobuf方案,主要字段包括:
conversation: 消息内容participant: 发送者标识fromMe: 发送者标志remoteJid: 接收者/群组标识id: 唯一消息ID
5. 工具与利用代码
研究人员开发了Burp Suite扩展工具实现自动化利用:
GitHub仓库:
https://github.com/romanzaikin/BurpExtension-WhatsApp-Decryption-CheckPoint
主要功能:
- WhatsApp通信解密
- 消息参数修改
- 伪造消息生成
- 加密消息重新注入
使用步骤:
- 安装Burp Suite扩展
- 捕获WhatsApp Web通信
- 提取会话密钥
- 解密/修改/重新加密消息
- 注入伪造消息
6. 防御建议
-
用户防护:
- 警惕异常群组消息
- 验证可疑消息的真实性
- 定期更新WhatsApp客户端
-
开发者修复:
- 加强消息发送者验证
- 改进群组消息权限控制
- 增强数据库访问保护
- 完善消息完整性检查机制
-
企业防护:
- 监控异常消息模式
- 实施终端保护解决方案
- 开展安全意识培训
7. 总结
本文详细分析了WhatsApp中的三个关键漏洞及其利用技术,揭示了即时通讯应用中加密实现可能存在的设计缺陷。通过理解这些漏洞的技术细节,安全研究人员可以更好地评估类似应用的安全性,开发者可以改进防护机制,用户也能提高对潜在威胁的警惕性。