前言

众所周知,Tencent以前使用Activex的方式实施QQ快速登录,现在快速登录已经不用控件了。那现在用了什么奇葩的方法做到Web和本地的应用程序交互呢?其实猜测一下,Web和本地应用进行交互可能采用http交互,事实也是如此。

快速登录分析

  1. 快速登陆框请求

https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=715030901&daid=371&ptnoauth=1&s_url=https%3A%2F%2Fbuluo.qq.com%2F%23

GET /cgi-bin/xlogin?appid=715030901&daid=371&pt_no_auth=1&s_url=https%3A%2F%2Fbuluo.qq.com%2F HTTP/1.1Host: xui.ptlogin2.qq.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflate, brReferer: https://buluo.qq.com/Connection: keep-aliveUpgrade-Insecure-Requests: 1

  

参数说明:

  • appid和daid 对应这不同的登陆服务,例如QQ空间和兴趣部落是不一样的

  • Referer必须以.qq.com域名

通过这个请求会响应cookie,比较关键的是ptlocaltoken字段

2.获取在线的QQ用户

通过上述的请求,可以获取已经登录的QQ昵称。请求与响应的具体内容如下:

请求:

GET /pt_get_uins?callback=ptui_getuins_CB&r=0.70722284119771&pt_local_tk=-1335054259 HTTP/1.1Host: localhost.ptlogin2.qq.com:4301User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0Accept: */*Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflate, brReferer: https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=715030901&daid=371&pt_no_auth=1&s_url=https%3A%2F%2Fbuluo.qq.com%2FCookie: pt_login_sig=SJ7R2dQseOuqFw5aaI9jiB644Ms5einfscJ5bRwUNQhiODEIvxjXz9Zfl9M7oiXL;pt_serverip=28f40af17263c651; pt_local_token=-1335054259;  pgv_pvi=2505876480; pgv_si=s8995244032; _qpsvr_localtk=0.3150553721024726Connection: keep-alive

  

响应:

var var_sso_uin_list=[{"account":"xxxxxxxxx","client_type":65793,"face_index":339,"gender":1,"nickname":"xxxxxxx","uin":"xxxxxxxxx","uin_flag":327156224}];ptui_getuins_CB(var_sso_uin_list);

  

在上面的请求中,大家可以从中发现localhost.ptlogin2.qq.com:4301  这个域名与端口,如果你尝试ping一下这个域名,发现其实它是127.0.0.1。

而4301则是QQ所监听的端口。

使用netstat -anto 命令可以看到监听4301端口的进程id为9284。

 

然后使用 tasklist|findstr "9284" 命令,发现确实为QQ.exe

3.点击用户头像

点击之后一定要注意cookie的变化。

3.1 cookie变化1

请求:

GET /pt_get_st?clientuin=594675898&callback=ptui_getst_CB&r=0.9726726550496937&pt_local_tk=1692729835 HTTP/1.1Host: localhost.ptlogin2.qq.com:4301User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0Accept: */*Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflate, brReferer: https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=715030901&daid=371&pt_no_auth=1&s_url=https%3A%2F%2Fbuluo.qq.com%2F%23Cookie: pt_login_sig=f0Eq6l9zHyn*yYdNjJsUDxgkL1TNffDt*Ek7T4uB5KN9uD*SAQhmENn7Tbb2AUkB; pt_clientip=5c490e1116214b49; pt_serverip=aaa20af17263555d; pt_local_token=1692729835; uikey=2ff0398fd9f14f09281e369daf09808512791eccdd166e64088ee1a9bdfff26d; pt_guid_sig=a015dce2e00991b4181682d886b9b8dae892bd36dcb1afe3fcc2e93945a58cab; pgv_pvi=2505876480; pgv_si=s8995244032; _qpsvr_localtk=0.3150553721024726; qrsig=UfyPCl5FKmlPv-LqW1BONsykudZ*eQuMiyxzvPK17SSFISshoJzQNrOzd3tLVx4H; pt2gguin=o0594675898; ETK=; pt_recent_uins=046df7337fa517d209268b658c29ffa7eed66beaed9b66d86cb700aa5bdaf630fd18757dee2e15d69465910176e5cc0328bdfcc212f7fd96; ptisp=ctc; RK=6K58L1C0Zq; ptnick_594675898=e4b880e7bc95e99d92e4b89d; ptcz=b13e557d01d48fb5f7b394288c304db80aea0ab3d62b31b492354e58b627211aConnection: keep-alive

  

3.2 cookie变化2

请求:

GET /jump?clientuin=xxxxxx&keyindex=9&pt_aid=715030901&daid=371&u1=https%3A%2F%2Fbuluo.qq.com%2F%23&pt_local_tk=1240200107&pt_3rd_aid=0&ptopt=1&style=40 HTTP/1.1Host: ssl.ptlogin2.qq.comUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0Accept: */*Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflate, brReferer: https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=715030901&daid=371&pt_no_auth=1&s_url=https%3A%2F%2Fbuluo.qq.com%2F%23Cookie: pt_login_sig=f0Eq6l9zHyn*yYdNjJsUDxgkL1TNffDt*Ek7T4uB5KN9uD*SAQhmENn7Tbb2AUkB; pt_clientip=5c490e1116214b49; pt_serverip=aaa20af17263555d; pt_local_token=1692729835; uikey=2ff0398fd9f14f09281e369daf09808512791eccdd166e64088ee1a9bdfff26d; pt_guid_sig=a015dce2e00991b4181682d886b9b8dae892bd36dcb1afe3fcc2e93945a58cab; pgv_pvi=2505876480; pgv_si=s8995244032; _qpsvr_localtk=0.3150553721024726; qrsig=UfyPCl5FKmlPv-LqW1BONsykudZ*eQuMiyxzvPK17SSFISshoJzQNrOzd3tLVx4H; clientuin=594675898; pt2gguin=o0594675898; ETK=; pt_recent_uins=046df7337fa517d209268b658c29ffa7eed66beaed9b66d86cb700aa5bdaf630fd18757dee2e15d69465910176e5cc0328bdfcc212f7fd96; ptisp=ctc; RK=6K58L1C0Zq; ptnick_594675898=e4b880e7bc95e99d92e4b89d; ptcz=b13e557d01d48fb5f7b394288c304db80aea0ab3d62b31b492354e58b627211a; Connection: keep-alive

  

3.3 登陆跳转链接

在上一步的请求中,会返回最终的登陆跳转链接,把这个链接复制到浏览器中即可完成登陆

4 模拟登陆

通过上述获取的跳转链接就可以登录成功。通过对上述过程的分析,下面使用Python来进行模拟登陆。代码如下:

import re
import requestsheaders= {'Referer':'https://buluo.qq.com/',"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0"}##第一步获取pt_local_tokens = requests.session()r = s.get("https://xui.ptlogin2.qq.com/cgi-bin/xlogin?appid=715030901&daid=371&pt_no_auth=1&s_url=https%3A%2F%2Fbuluo.qq.com%2F%23",headers=headers)pt_local_token = r.cookies.get('pt_local_token')##第二步获取在线的QQ用户r = s.get("https://localhost.ptlogin2.qq.com:4301/pt_get_uins?callback=ptui_getuins_CB&r=0.70722284119771&pt_local_tk="+pt_local_token,headers=headers)pattern = re.compile(r'"uin":"(\d+)"')uin = pattern.findall(r.text)if len(uin)>0:#获取cookies.get("https://localhost.ptlogin2.qq.com:4301/pt_get_st?clientuin=%s&callback=ptui_getst_CB&r=0.9726726550496937&pt_local_tk=%s"%(uin[0],pt_local_token),headers=headers)r = s.get('https://ssl.ptlogin2.qq.com/jump?clientuin=%s&keyindex=9&pt_aid=715030901&daid=371&u1=https://buluo.qq.com/&pt_local_tk=%s&pt_3rd_aid=0&ptopt=1&style=40'%(uin[0],pt_local_token),headers=headers)pattern = re.compile(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+')url = pattern.findall(r.text)print(url[0])

  

反思

QQ的快捷登录是通过在本地建立了一个服务器,并绑定了127.0.0.1,然后使浏览器访问本地服务器进行实现的。如果想盗取cookie或者是登录链接,需要黑客在你电脑上植入木马,然后和你的QQ交互才能做到。但是一细想,既然黑客已经可以在你的电脑里植入木马,完全可以获取你的QQ账号密码了。难道QQ这种通信方式真的没有反思的地方吗

个人感觉并非如此!!!QQ并没有校验请求的来源,任何一个可以发送http请求的程序均可与之交互,并获取cookie。其实这是大大降低了攻击的成本,是很容易进行恶意营销的。为什么说降低了攻击成本呢?一般的QQ盗号,是上传木马,要么截屏获取你的账号密码,要么监听你的键盘输入。这样的木马行为首先比较容易被安全软件发现,然后就算你获取了盗取了密码,在你的电脑上登陆,很容易被QQ安全中心发现,给用户发送异地登陆警告的,所以利用QQ号码盈利并不是特别的容易

但是通过本文的想法,木马在用户电脑运行,很容易获取cookie,而且安全软件并不会从你的请求中发现异样,当木马获取cookie后,就可以访问你的服务与资产,比如 在你的空间自动发帖,发邮件,查看相册等等,而且就算你换了密码都没用。盈利的方式多样,而且成本很低,传播容易。为什么说传播容易呢?

咱们可以想象这样的一个攻击场景chm文件一般是帮助文档或者是电子书,但可以作为后门,而且隐蔽性很强。chm后门和QQ交互后,获取cookie,又将自身的下载链接放到空间等等地方,继续传播。

总而言之,攻击成本降低,盈利效率提高,黑产喜欢的方式

最后

关注公众号:七夜安全博客

  • 回复【1】:领取 Python数据分析 教程大礼包
  • 回复【2】:领取 Python Flask 全套教程
  • 回复【3】:领取 某学院 机器学习 教程
  • 回复【4】:领取 爬虫 教程

QQ快速登录协议分析以及风险反思相关推荐

  1. QQ空间登录协议分析:JS篇

    QQ空间是用GET方法 访问链接: "http://ptlogin2.qq.com/login?u=" + QQ号 + "&p=" + 加密 (QQ号, ...

  2. webqq登录协议分析

    webqq登录协议分析 通过webqq接口,可以实现发送.接收qq消息. 1.首先调用:http://ptlogin2.qq.com/check?appid=1002101&uin=qq号码& ...

  3. JAVA Spring Security对接QQ快速登录(web应用)

    阅读此文需要对Security有大概的了解,了解其运行流程 security对接QQ互联jssdk快速登录 前端使用的是vue.js 1.首先在QQ互联申请一个应用,得到appid和设置好回调地址 2 ...

  4. PHP实现QQ快速登录的方法

    这篇文章主要为大家详细介绍了PHP实现QQ快速登录的3种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 前言: PHP实现QQ快速登录,罗列了三种方法 方法一:面向过程,回调地址和首次触发登录 ...

  5. PHP实现QQ快速登录

    前言: PHP实现QQ快速登录,罗列了三种方法 方法一:面向过程,回调地址和首次触发登录写到了一个方法页面[因为有了if做判断], 方法二,三:面向对象             1.先调用登录方法,向 ...

  6. php qq授权_PHP实现QQ快速登录的方法

    前言: PHP实现QQ快速登录,罗列了三种方法 方法一:面向过程,回调地址和首次触发登录写到了一个方法页面[因为有了if做判断], 方法二,三:面向对象 1.先调用登录方法,向腾讯发送请求, 2.腾讯 ...

  7. 网站没有备案接入QQ快速登录 QQ互联官网 成功率100%

    鳄鱼君申请QQ互联,为网站接入QQ快捷登录也是废了不少麻烦,为了让大家少走弯路,在这里整理下来给需要的站长朋友们. 网站没有备案接入QQ互联,需要填写申请表格,非常的简单,首先确保你的域名是国际域名, ...

  8. 某游戏盒登录协议分析

    前言 距离上次写博客已经过去了一个月,博主本人在这期间也分析了不少案列,这次分享一个比较综合的案例,难易程度偏简单,适合协议分析练手,下面直接进入正题. 准备工作 首先我们得安装抓包软件,我这里是用F ...

  9. 小米登录协议分析_小米回应小米11充电头兼容问题

    小米11从上市销售至今已经几天时间,相信第一批入手的消费者也都收到了这款骁龙888旗舰.从网友们的使用反馈来看,小米11(点此查看评测)在充电方面出现了一些问题,并且该问题现在得到了官方的回应.元旦期 ...

  10. 小米登录协议分析_小米温湿度传感器协议分析

    博主喜欢玩智能家居的东西,智能家居确实能给家里带了不少的方便. 天气热了,博主想做一个:当屋子有人,并温度高于33度时,开空调.博主已有了一套自家的智能家居系统,有网关.人体红外传感器.红外转发器,就 ...

最新文章

  1. 数据库Mysql的学习(八)-储存过程和事务和导入导出
  2. 科大讯飞CV赛baseline:图像分类实践+0.55
  3. javascript 未结束字符串
  4. 英语语法最终珍藏版笔记-3几个常用时态的比较
  5. 跨链(5)“蚂蚁区块链”之预言机
  6. TCP/IP的三层负载均衡
  7. ASP.NET Core的配置(3): 将配置绑定为对象
  8. 服务器设置系统盘分页,服务器设置系统盘分页
  9. JAVA8内存最多设置多少,堆内存居高不下,JDK8自适应作怪
  10. highchart图表drilldown钻取功能及event点击事件添加(1)
  11. t3插密码狗不显示服务器,登陆T3时,用户名和账套都不显示,显示没有检测到合法的LISENCE,需要重新注册密码狗,在注册社区后,搜索.cjt的文件,搜不到...
  12. 微信小程序中实现吸顶效果(流畅、不卡顿)
  13. 小哈智能机器人的功能_小哈智能教育机器人H2产品外观参数说明
  14. Android Service startForeground不显示Notification的办法
  15. 有趣的三个水桶等分8升水问题
  16. Android View的事件分发机制和滑动冲突解决方案
  17. 传奇开服教程,传奇开服需要学多久? 开传奇sf需要准备什么呢? 开传奇需要多少本钱?---开服流程
  18. Vivado2016如何改变字体大小
  19. [图形学] Killzone: Shadow Fall 中的体积光效果
  20. 安卓dip和px相互转换

热门文章

  1. i3 10105f和i5 10400f差多少 I3 10105F和I5 10400F区别
  2. 定制Hexo-NexT的个性化博客
  3. 奥特曼系列ol星球破坏是哪个服务器,奥特曼里的“六大星球毁灭者”,每个都是轻松毁灭星球的存在...
  4. shopex mysql索引_shopex数据库访问
  5. 熊猫烧香病毒 杀毒记
  6. K线形态识别—K线整理形态
  7. 树莓派系列(一):树莓派介绍
  8. ansys部分边界条件详解
  9. 天马行空 PCI理解
  10. 海洋cms播放器html,海洋cms怎么添加播放器