• :
  • 技术揭秘“QQ空间”自动转发不良信息-爱毒霸交流论坛
    用户
     找回密码

        找回密码

    QQ登录

    只需一步,快速开始

    搜索

    [毒霸讲堂] 技术揭秘“QQ空间”自动转发不良信息

    [复制链接]
  • TA的每日心情
    奋斗
    2015-12-30 11:05
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-8-21 13:45:37 只看该作者

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    您需要 登录 才可以下载或查看,没有帐号?

    x
    本帖最后由 ︷搁ɑ.浅▽ 于 2015-8-21 13:53 编辑

    概述
           经常会看到QQ空间自动转发一些附带链接不健康信息,或者我们的QQ密码并没有被盗取,却也自动转发这些垃圾信息。最近通过对一个QQ空间自动转发链接进行分析,发现该自动转发机制通过利用腾讯网站存在漏洞的页面,精心构造出利用代码获取用户的QQ号和skey值,从而获得用户的一些敏感操作权限。并通过该漏洞自动转发一些不良信息诱导用户点击,从而导致大面积传播。

    传播现象
           如果有一天,你发现好多QQ好友空间都在发一条说说,并且这个说说附带了一个链接,像下图这样:
    1.jpg


    此时你就要注意了,那个网页你点进去你也会一起中毒,并在你没有察觉的情况下发同样的内容在你的空间。
           针对这种在你不知觉的情况下在你QQ空间恶意转发不良信息,我们通过分析其原理得之其转发机制,下边我们以一个实例,并用最容易理解的方式来告诉大家这种不良信息是如何转发以及如何防范。

    转发机制
           腾讯地图的一个实时竞价页面存在一个XSS漏洞,由于没有对请求参数做严格检查,通过精心构造的请求数据导致返回信息中的数据可被利用来执行js代码,同时服务器没有对请求来源进行检测,因此可以造成CSRF攻击。
    查看之前抓取到的利用该漏洞进行不良信息转发的页面,在该页面开头嵌入了一个iframe标签如下:
    2.png

    标签style为隐藏属性,从而使得该插入页面不会被用户发现,插入的页面链接就是构造好的url地址。
    当页面被加载时,页面通过这个url接口向腾讯地图的RealTime Bidding服务器发送一个请求,服务器没有对请求来源进行效验,直接将请求的数据返回,并附带了一些查询信息,如下图所示,其中exploit是构造的利用代码。
    3.png

    当exploit = “</script><svg><script>eval(window.name);//”,请求服务器之后iframe标签里的内容就变成下边的内容:
    4.png

    利用代码中的标签“</script><svg><script>”用于绕过浏览器的XSS过滤器,浏览器会将这三个标签忽略掉只留下后边的内容,然后第一个注释符号将后边的内容都给注释掉了,最后的有效内容就一句:eval(window.name)。之后eval会将字符串name里边的内容当作js代码执行,其执行结果就是在文档结尾创建<script></script>标签去加载执行js主功能模块http://conf3.gamexm.net/moo.js。主功能js部分代码如下所示:
    5.png

    该js代码做了混淆,其按照OlOlll=”(x)”的方式进行替换,我们还原第一部分代码为:
    eval("var l =function(x){return String.fromCharCode(x)}");
    该处生成一个函数I,其功能是返回数字对应的ascii码,下边利用该函数将一些数字还原成新的函数,依次类推,最后解出来的功能代码如下所示:
    6.png

    代码通过document.cookie获取用户的cookie信息,然后从中提取uin值和skey值,通过抓包可以看到,uin值是由o开头加上QQ号组成,因此相当于就获取了用户的QQ号,skey是以@开头的一段字符。之后调用函数document.createElement创建了一对script标签来执行如下脚本:
    7.png

    其中参数q是QQ号,k为skey的值,getGTK(str)是为了给skey签名,这样可以确保skey是有效的。该脚本把获取到的QQ号和skey值通过附加到链接参数提交给远程服务器。

    利用
    Skey进行敏感操作
           Skey 是一次性口令,服务器为每个用户建立一个skey作为用户的权限代码,服务器验证该值即可获取用户的一些权限操作,该值会被浏览器记录在cookie信息中,只要用户不退出登录就会有效。也就是说如果获得一个QQ号码的Skey代码,也就相应的拿到了对方QQ登陆和管理权限,通过调用相应的操作接口API,即可不通过用户密码实现对用户空间,相册的访问权限,同时也可以发表说说,删除留言等一些敏感操作。
    下边进行一个简单的测试来实现在QQ空间发表状态。
    首先通过抓包获取到cookie信息中的uin值和skey
    8.jpg

    然后我使用curl命令通过发表说说的api向服务器发送一个包,包内容如下:
    9.jpg

    Curl命令执行过后,会在我的空间就自动发了一条说说:this is a test
    10.png

           由此想到了之前的天涯病毒营销系统,它是通过服务端配置中间收信网站后生成客户端,当用户点击客户端样本后,其客户端样本使用WebBrowser控件加载QQ邮箱快速登录,再利用自动填表的方式让软件自动点击“快速登录”按钮,进而可以得到本机QQ当前登录的Client Key,然后将QQ号和ClientKey提交到远程服务器上,服务端即可通过该ClientKey进行QQ登录操作,登录之后具有访问QQ空间,QQ邮箱,财付通,修改个人资料,上传文件到QQ群共享等操作。这里的ClientKey和skey其功能相同,都是一个权限代码。

    修复方案和建议
    1. 针对用户,不要随意点击一些不良网站信息,如果不小心中招,解决方法就是快速退出空间,如果是手机登录的话就要退出QQ,重新登陆QQ,这样会产生新的skey,原来的skey就失效了。如果只是单纯的刷新网页,或者关掉手机QQ空间,则不会改变skey。
    2. 针对漏洞厂商,要检测所有接口的输入参数,进行严格过滤,防止XSS漏洞的产生;同时要对数据请求来源进行判断,非同源数据过滤掉,从而防止CSRF攻击。

    评分

    参与人数 4元宝 +54 收起 理由
    Scaning + 1 赞一个!
    天狼之神 + 30 赞一个!
    夏末秋至 + 3 昨天吓得我把密码改了
    小涛591 + 20 技术贴,很给力!

    查看全部评分

    使用道具 举报 回复
    难怪空间里老是广告成片, 原来是QQ自己的问题!  给力的分析
    使用道具 举报 回复 支持 1 反对 0
    使用道具 举报 回复
    有点厉害
    使用道具 举报 回复




    使用道具 举报 回复
    好详细。
    使用道具 举报 回复
    好帖子,学习啦
    使用道具 举报 回复 支持 反对
    自动转发机制通过利用腾讯网站存在漏洞的页面,精心构造出利用代码获取用户的QQ号和skey值,从而获得用户的一些敏感操作权限。并通过该漏洞自动转发一些不良信息诱导用户点击,从而导致大面积传播。
    使用道具 举报 回复 支持 反对
    虽然看不懂
    还是涨姿势
    使用道具 举报 回复 支持 反对
    哟,又招新工作人员了。
    使用道具 举报 回复 支持 反对
    很详细,顶一个!
    使用道具 举报 回复 支持 反对
    大概了解 一番了
    使用道具 举报 回复 支持 反对
    本帖最后由 夏末秋至 于 2015-8-21 19:37 编辑

    我昨天就中招了,明明自己没有转发,但是就是转发了,而且就是这种发小内内的广告,无语死了
    使用道具 举报 回复 支持 反对
    东苑 发表于 2015-8-21 16:17
    哟,又招新工作人员了。

    哪有新人
    使用道具 举报 回复 支持 反对
    感觉挺深奥的,表示看不懂!
    使用道具 举报 回复 支持 反对
    怪才啊,人才?鬼才?无奈还是无聊?
    使用道具 举报 回复 支持 反对
    第一次看这个工作人员是的、、、
    但是注册时间也很早。。。。
    支持下。。
    使用道具 举报 回复 支持 反对
    发表于 2015-8-21 20:58:51 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
    使用道具 举报 回复
    这个我在18号就看见有这文章了了
    使用道具 举报 回复 支持 反对
    感谢分享 学习了。支持官人多给大家科普一些安全知识。
    使用道具 举报 回复 支持 反对
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则