近日,360互联网安全中心接到部分省市用户集中反馈:访问优酷、爱奇艺、搜狐视频、腾讯视频等国内主流视频网站时,有时会出现360安全卫士报警提示。经过调查核实,这是网站中含有恶意挖矿代码触发的安全软件提示,而这些挖矿代码,则是由个别运营商通过网络劫持的手段强行插入到这些视频网站页面当中的。

众所周知,随着虚拟货币的兴起,各种基于区块链技术的虚拟币也随之做的如火如荼。面对这些诱人的巨大利益,民间挖矿已几近疯狂。而此次事件说明,运营商劫持也开始加入了挖矿大军之中。某些网络运营商在用户接入互联网的节点服务器上对用户的网络访问进行了内容劫持——在获取到的js脚本代码中插入一段挖矿的代码内容,利用用户终端浏览器的算力进行挖矿所引起的。同时,该劫持行为所插入的代码还经过了多层次的混淆,以图加大分析难度。

本次劫持事件主要以辽宁省为绝对主力,其他地区也有少量分布:

图1

劫持插入挖矿代码过程简图如下:

图2

下面,我们以国内知名视频网站“优酷网”为例来简要分析下此次事件挖矿代码的行动方式。最初的劫持点是其请求的视频播放js脚本,该脚本被随机插入了用于挖矿的main.js脚本:

图3

图4

被劫持后替换掉的ykDanmuLoad.js内容经过简单解码后内容如下:除了要加载原站的ykDanmuLoad.js外额外插入一条用于挖矿的main.js

图5

此处被插入的挖矿脚本main.js也是经过混淆的。在经过解码去混淆后,可以找到如下代码片段:

图6

其中配置了挖矿的site_key,并判断用户正在使用的设备是Windows、IPhone还是Android。根据使用设备的不同,代码会采用不同的site_key进行挖矿。

另外,CPU占用阈值”throttle”被统一设置为了30%。也正是由于这一设定,导致一般用户在浏览器中打开被劫持的页面而被利用进行挖矿时,并不会感觉到非常明显的卡顿现象。该劫持的这一操作也算是一种较为直接的自我隐藏手段。

附几个重要参数的含义:

· sitekey: 重要属性,CoinHive 使用这个key来标记不同的网站来源,其意义类似于挖矿矿工的银行账户;在这里该劫持使用了三个key来分别为Windows、Android、IPhone设备来使用。

· throttle: 重要属性,浏览器占用CPU的阈值,调节到合适的阈值时,用户会很难注意到浏览器的算力被滥用,引入这个阈值的本意是在用户体验和网站收入之间取得平衡;

· autothreads: 相对重要,是否允许自动调节线程数目。

上面的main.js脚本中,还嵌入了main1.js和main2.js两个脚本。其中main.1.js内容片段如下:

图7

而main.2.js片段如下:

图8

main.1.js+main.2.js两份脚本均经过多层加密,经解码和去混淆出来的代码如下(可明显看出是复制了coinhive官方的挖矿库脚本”coinhive.min.js”):

图9

图10

接下来就是进入正题,占用CPU算力进行挖矿了:

图11

据我中心监测数据显示,该劫持状况有持续升高的趋势,说明该劫持行为正在广度上逐渐的铺开其劫持范围:

图12

做为互联网服务的基础供应商,运营商本应该注意自身行为,切莫使自己的某些利益行为成为损害用户体验的帮凶。

而另一方面说,也希望各大网站能够积极推进通信数据的加密措施,从根本上杜绝此类劫持事件的发生。

声明:本文来自嘶吼,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。