QQ协议纪实

2024.5.2 签名校验漏洞

上古QQ有一个merge包,可以把多个包合并在一起发送,但是这个包不在sign校验白名单里面, 这意味着什么?意味着把需要签名校验的包塞进去即可绕过签名校验。

2024-04-29 BDH数据分析

  • 根据群友的发现,他们发现rkey是一个protobuf,里面携带了app_id还有时间戳什么的。
  • 群友发现使用multimedia域名用rkey获取资源,rkey会过期,而使用老板qq资源服务器gchat那个就不会过期,可以无限时间获取资源。

2024-04-28 智能体

QQ整了一个新的玩意,叫智能体 实际上技术背靠腾讯的混元大模型。

  • 调用mqqapi跳转无视白名单创建智能体
  • 使用协议无视白名单发包创建智能体且无提示词(智能体背景故事)上限
  • 目前来看腾讯还挺在意这个东西的,但是又怕死,在机器人出现重复一模一样的答案的时候,机器人会立即撤回重复的消息。

2024-04-24 BDH file_id解密

伟大的Dimole,感觉很闲,居然发现了file_id的秘密,是一个base64(小改),是一个protobuf,然后呢,里面有文件的大小,发送人,sha1,和奇奇怪怪的资源类型什么的,测试发现,除了sha1以外乱写不影响获取资源!

不过测试发现,腾讯bdh获取资源已经废弃md5了,难道是sha1算起来更加块嘛?

2024-04-20 markdown漏洞修复

markdown提供BDH方式偷偷发送被修复了,呜呜呜,好不容易发现的...提交反馈了...官方没修,果然我是废物没人管...然后是有人写的一个Xposed模块提供了小白也能发markdown的功能,他们拿着这些功能到处乱发...然后官方发现了.../(ㄒoㄒ)/~~

新版本里面markdown像json卡片那样添加了一个token参数,转发卡片,如果token不对就会升天了...

但是可以直接发卡片,这样不会升天。

浅绕过

markdown是消息结构体里面的一个小小的字段,这个玩意是repeated的,所以说在新版本QQ中,QQ会自动合并所有连续的相同类型的消息,然后再解析。

然后markdown的token呢,是根据内容和时间戳计算的。

那么我们把基础汉字组合和常用符号和常用字母都给合成一个token出来。组一堆element,发出去就好了。

这样我们又能愉快的发送markdown了!

token从什么地方来?

官方机器人发markdown有token 用官方唧唧人发个不就好了☝︎(`ط´≠︎)

2024-04-17 签名漏洞绕过设备校验

是不是有内鬼呢?怎么又被发现了,现在确实还能绕过45登录限制,但是上号没多久就升天了哎..._( '-' )⌒)

2024-04-12 签名漏洞绕过设备校验

结合历史经验,QQ协议的wtlogin登录包全系列需要携带sign签名,其中wtlogin.login包的sign签名需要携带签名tail。

但是呢,wtlgoin服务是通过其包体的cmd_id(例如:0x810)和sub_cmd(例如:0x9 密码登录),进行分发的,

腾讯拥有以下command:

  • wtlogin.login
  • wtlogin.qrlogin
  • wtlogin.exchange_emp
  • wtlogin.trans_emp

只要使用了非wtlogin.login的包名称,就可以绕过设备校验,不会出现·45·这类禁止登录,前提是保证签名的正确性。

签名tail

和腾讯服务器通过协议通道发包获取。

2024-03-21 QQ协议绕过限制发送markdown

通过研究发现,QQ协议可以通过聊天记录伪造上传markdown消息并且转发出来,但是呢,直接发会被腾讯服务器过滤掉。

在远古QQ协议时代遗留下来一个漏洞,就是长消息会先上传到BDH再发送,而伪造聊天记录就是需要上传, 上传完成会获得一个res_id,在发送消息请求中携带这个markdown对应资源id,就可以绕过限制发送markdown消息。

2024-01-02 QQ协议堵塞群图片上传漏洞

QQ协议发送图片分为两个流程,分别是上传(BDH) + 发送(协议),其中如果只实现上传流程,然后指定一个群聊(不需要加入),无限制的上传1kb大小的图片。

就会触发漏洞,即使是正常用户也无法发送图片,甚至无法发送任何表情包。

2023-10-12 QQNT uid导出漏洞

从QQNT版本开始,发消息需要使用uid(u_开头的字符串)才能发送消息,对于发起临时会话很麻烦。

而uid的获取的条件是,你和对方可以建立联系,例如对方是您的好友或者是您所在群的群友。

我发现有以下几个漏洞可以无需建立社会联系也可以获取uid:

  • 申请加对方为好友(从系统通知列表可以获取uid)。
  • 从旧版协议获取上传的聊天记录(在新版本QQNT中从聊天记录中可以获取uid),旧版本上传聊天记录只需要QQ号。
  • 企业协议发送拉起临时会话请求。