为方便纠错及后续讨论,文章从 Freebuf 转载到知否。
0×1 概述
近期,千里目安全实验室监测到了一大批网站系统被恶意植入了网页挖矿木马,只要访问者通过浏览器浏览被恶意植入了网页挖矿木马站点,浏览器会即刻执行挖矿指令,从而沦为僵尸矿机,无偿的为网页挖矿木马植入者提供算力,间接为其生产虚拟货币,这是一种资源盗用攻击。由于网页挖矿木马存在很广的传播面和很不错的经济效益,因此、广受黑产团体的追捧,让我们对它防不胜防!
0×2 千里百科
区块: 在区块链网络上承载交易数据的数据包。它会被标记上时间戳和之前一个区块的独特标记。区块头经过哈希运算后会生成一份工作量证明,从而验证区块中的交易。有效的区块经过全网络的共识后会被追加到主区块链中。
区块链: 狭义来讲,是一种按照时间序列将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。
矿机: 矿机是挖矿机器的简称,就是用于赚取数字货币的计算机,这类计算机一般有专业的挖矿芯片,多采用烧显卡的方式工作,耗电量较大。个人计算机可以通过挖矿软件来运行特定的算法产生算力(俗称挖矿)来获得相应数字货币。
矿池: 由于单一矿机想挖到一个块的几率是非常小的,通过矿机联合挖矿以提高几率。一个矿池的算力是很多矿机算力的集合,矿池每挖到一个块,便会根据你矿机的算力占矿池总算力的百分比,发相应的奖励给到个体,也不会存在不公平的情况。
挖矿: 挖矿是反复尝试不同的随机数对未打包交易进行哈希,直到找到一个随机数可以符合工作证明的条件的随机数,以构建区块。如果一个矿工走运并产生一个有效的区块的话,会被授予的一定数量的币作为奖励。
钱包: 钱包指保存数字货币地址和私钥的软件,可以用它来接受、发送、储存你的数字货币。
0×3 家族样本分析
千里目安全实验室通过持续对全网进行安全监测,发现近期有如下十种家族的网页挖矿木马的传播比较活跃。详情分析如下所示:
1 、 Coinhive家族网页挖矿木马介绍:
Coinhive是一个专门提供挖矿代码的JS引擎,在被攻击网站的网页内嵌一段JS挖矿代码,只要有人访问被攻击的网站,JS挖矿代码就会通过浏览器上执行挖矿请求,占用大量的系统资源,导致CPU资源利用率突然大幅度提升,甚至100%。在这过程中网站只是第一个受害目标,而网站的访问者才是最终的受害目标。
1.1、Coinhive家族网页挖矿木马代码,如下所示:
1.2、执行JS挖矿代码前后的效果,如下图所示:
1.3、通过快捷键(Shift+ESC)来查看浏览器的任务管理器,发现正是刚打开的“XMR Mining Page”网站页面占用了98.4%的CPU资源,正在疯狂的挖矿。如下图所示:
2、JSEcoin家族网页挖矿木马介绍:
JSEcoin是与Coinhive类似的JS挖矿引擎,也是在有访问量的网站中嵌入一段网页挖矿代码,利用访客的计算机CPU资源来挖掘数字货币进行牟利。但是与后者不同的是,JSECoin会将CPU使用率限制在15%至25%之间,并且始终显示隐私声明,为用户提供退出选项(可选择不提供运算服务)。
2.1、JSEcoin家族网页挖矿脚本代码,如下所示:
2.2、通过对JSEcoin挖矿代码进行调试,发现执行完挖矿代码后会持续接收到需要运算的任务,如下图所示:
2.3、通过进一步跟踪运算过程,发现其通过WSS协议来获取区块的计算任务,然后将结果进行回传效验,校验通过的会显示OK标记。如下图所示:
3、CryptoLoot家族网页挖矿木马介绍:
CryptoLoot是与Coinhive类似的JS挖矿引擎,也是在有访问量的网站中嵌入一段网页挖矿代码,利用访客的计算机CPU资源来挖掘数字货币进行牟利。不过CryptoLoot平台的佣金比Coinhive平台的佣金低很多,这可以大大降低以挖矿为盈利目标的黑色产业链成本。
3.1、CryptoLoot网页挖矿脚本代码,如下所示:
3.2、CryptoLoot网页挖矿脚本代码参数介绍,如下所示:
miner.min.js:为JS挖矿脚本。
85e693dfe57edbdf8f53640b4c0b0d257513a504c503:为SiteKey,可以理解为JS挖矿引擎识别站点的唯一标识。
threads(value):指挖矿运算所启用的线程数量。这里的值为3,即表示启用3个线程进行挖矿运算。
autoThreads(value):这里的Value可以设置为true和false,当设置为true时,表示自动检测用户计算机上可用的CPU内核数量。
throttle(value):这里的value是设置线程闲置时间比例的。如果值为0,即表示不进行节流(即进行CPU满载运算)。这里的值为0.2即表示将在20%的时间内保持空闲状态。
4、DeepMiner家族网页挖矿木马介绍:
DeepMiner是一个开源的JS挖矿项目,也是在有访问量的网站中嵌入一段网页挖矿代码,利用访客的计算机CPU资源来挖掘数字货币进行牟利。
4.1、DeepMiner网页挖矿脚本代码,如下所示:
4.2、DeepMiner网页挖矿脚本同源分析:
DeepMiner是一个已经被开源了的项目,通过分析,发现上面的挖矿脚本代码为此开源项目修改而来(开源项目地址为:https://github.com/deepwn/deepMiner)。
5、Webmine家族网页挖矿木马介绍:
Webmine也是一个与Coinhive类似的JS挖矿引擎,在有访问量的网站中嵌入一段网页挖矿代码,利用访客的计算机CPU资源来挖掘数字货币进行牟利。
5.1、Webmine网页挖矿脚本代码,如下所示:
5.2、访问JS挖矿站点时,发现CPU使用率剧增,随后退出对JS挖矿站点的访问,发现CPU的使用率一下子就降下来了。如下图所示:
AuthedMine也是一个与Coinhive类似的JS挖矿引擎,在有访问量的网站中嵌入一段网页挖矿代码,利用访客的计算机CPU资源来挖掘数字货币进行牟利。
6.1、AuthedMine网页挖矿脚本代码,如下所示:
6.2、 AuthedMine网页挖矿脚本与之前的几种相比有比较大的改进,大致如下3点:
设置了线程闲置时间比例,这样不容易被矿机受害者发现和察觉。
设置了挖矿设备类型,只对非移动设备进行挖矿运算,防止手持终端设备被卡死。
设置了挖矿运算时间,只挖矿4小时,避免长时间CPU过高而遭暴露。
7、BrowserMine家族网页挖矿木马介绍:
BrowserMine是一个与DeepMiner类似的JS挖矿引擎,也是在有访问量的网站中嵌入一段网页挖矿代码,利用访客的计算机CPU资源来挖掘数字货币进行牟利。
7.1、BrowserMine网页挖矿脚本代码,如下所示:
7.2、 执行JS挖矿代码前后的效果,如下图所示:
8 、 Coinimp 家族网页挖矿木马介绍:
Coinimp是与Coinhive类似的JS挖矿引擎,也是在有访问量的网站中嵌入一段网页挖矿代码,利用访客的计算机CPU资源来挖掘数字货币进行牟利。稍有不同的是Coinimp的平台费用基本免费,而且JS挖矿脚本可以重置为任意名字存放在本地,伪装性更高。
8.1、Coinimp网页挖矿脚本代码,如下所示:
8.2、Coinimp网页挖矿脚本代码与之前的几个有一个明显的区别就是SiteKey值变成了64位,同时,JS挖矿代码可以保存到本地存储了,访问参数与JS脚本名称可以自行定义。
9、CryptoWebMiner家族网页挖矿木马介绍:
CryptoWebMiner是与Coinhive类似的JS挖矿引擎,也是在有访问量的网站中嵌入一段网页挖矿代码,利用访客的计算机CPU资源来挖掘数字货币进行牟利。不过CryptoWebMiner平台的佣金比Coinhive平台的佣金低很多,这可以大大降低以挖矿为盈利目标的黑色产业链成本。
9.1、CryptoWebMiner网页挖矿脚本代码,如下所示:
9.2、CryptoWebMiner网页挖矿脚本代码结构与Coinhive很类似,但支持的币种比较多,主要有BTC、ETH、ZEC、ETN、XMR。另外,它支持的平台也很多,分别为手机端挖矿、PC端挖矿、WEB端挖矿,可见传播面很广。
10、PPoi家族网页挖矿木马介绍:
PPoi是与Coinhive类似的JS挖矿引擎,也是在有访问量的网站中嵌入一段网页挖矿代码,利用访客的计算机CPU资源来挖掘数字货币进行牟利。
10.1、PPoi网页挖矿脚本代码,如下所示:
10.2、通过访问PPoi平台官方地址,发现已经被Google GSB加入黑名单了。如下所示:
0×4 趋势分析与统计
1、我们通过对分析过的网页挖矿木马代码特征,使用FOFA对全球所有在线Web应用系统进行统计,发现有60742892个Web应用被恶意挂载了网页挖矿木马。如下为全球TOP10地域的网页挖矿木马感染量和分布情况。详情如下所示:
统计数据来自于FOFA平台
2、进一步通过这些网页挖矿木马的代码特征来对中国境内所有在线Web应用系统进行分析和统计,发现有4557546个Web应用被恶意挂载了网页挖矿木马。如下为中国境内TOP N地域的网页挖矿木马感染量和分布情况。详情如下所示:
统计数据来自于FOFA平台
0×5 安全建议
ü 定期对服务器中的数据做备份,看到类似以上10种形态的可疑脚本代码,需提高警惕(这很可能意味着我们的站点和服务被入侵了 ),找专业的安全人员来做分析和处理。
ü 如在服务器中发现存在可疑的后门或恶意代码,需做全局的排查和清理,然后再做安全加固工作。
ü 定期主动对服务器及服务器中的应用进行安全评估,及时发现潜在的风险,并及时处置和修复。
0×6 IOCs
C 2 :
URL :
https://coinhive.com/lib/coinhive.min.js
https://coin-hive.com/lib/coinhive.min.js
https://cryptaloot.pro/lib/miner.min.js