Cryptojacking浅析

“我们遇到过一种技术,能够让可疑网站的所有者和攻击者拥有一个妥协的方式,来持续挖掘门罗币,即使浏览器窗口被关闭。”

—Malwarebytes实验室负责人Segura

一、背景

没有勒索软件的赎金通知,也没有账号密码被盗用的痕迹,除了偶尔会感到电脑有些卡顿或需要支付更高额的电费,你甚至都没有觉察到自己已经被黑了。Cryptojacking,就是未经授权使用受害者的计算资源来挖掘加密货币,是一种资源盗用攻击。黑客通过在网站中植入恶意代码,使网站浏览者在不知情的情况下,无偿贡献自己的算力为攻击者挖矿,间接为其生产虚拟货币。它不仅会损害Web服务器,而且会耗费大量电力资源和计算机资源,影响用户电脑的正常使用。

(图片来源于网络,侵删)

2018年“英国企业网络威胁”报告中显示,几乎全球半数企业都曾遭受过Cryptojacking攻击,总共有将近5W家网站都感染过挖矿劫持脚本。相比于勒索软件和其他恶意软件系列,Cryptojacking拥有更低的操作难度系数和更高的投资回报比,它不需要侵入目标系统来建立命令和控制,受害者只是以被动的方式消耗自己的CPU周期和电力来进行与加密货币相关的哈希函数的计算。因此,近些年来Cryptojacking已经成为最普遍的一种网络攻击方式,同时也是黑帽子牟利的主要手段。

据不完全统计,Alexa前100W域名中,共包含大约1700个挖矿域名,涉及到28种以Coinhive为首的恶意挖矿脚本,主要的挖掘目标是CryptoNote类加密货币,比如Monero(门罗币)、Dashcoin(达世币)等。以当前的市值预估,采集这些加密货币平均每月总共可以为挖矿受益者产出20-30W美元的经济效益。不仅如此,由于这类加密货币通过混淆交易各方的地址可以确保用户的匿名性,所以可以更好地隐藏犯罪交易轨迹,也有人认为它们是犯罪分子的洗钱工具。

二、Cryptojacking攻击过程

以图1为例,对Cryptojacking的攻击过程进行一个分解说明。

图1 Cryptojacking攻击过程

1

步骤1:受害者访问已经被植入挖矿脚本的网站,该网站返回携带有Orchestrator

Code的响应内容。这部分代码用来检查访问者的主机环境,寻找可用的CPU核数,并计算有多少算力可占用;

2

步骤2:接收到响应后,从网站或外部服务器下载高度优化的恶意挖矿脚本(如coinhive.min.js),同时也包括所分配的计算任务;

3

步骤3:验证网站源代码中site-key (挖矿受益者的ID)有效后,就开始实例化挖矿任务,利用本机的资源进行哈希计算;

4

步骤4:与矿池通信,将计算出来的结果通过WebSocket代理服务器提交至矿池,代理矿池还可能会和进一步总矿池进行交互。

至此,第一次计算任务执行完毕,然后步骤3中的计算过程和步骤4中的结果提交过程会重复进行。在执行过程中,受害者机器的CPU占用率飙升,甚至可以达到100%,直到关闭该挖矿网站,用户电脑才会恢复正常

三、检测方法

目前针对Cryptojacking攻击的检测方法有很多,方法各有利弊,本文介绍两种检测方法。

1基于黑名单的检测方法

文章之前有提到,这些恶意挖矿脚本必须要嵌入到网站中才能发挥作用,那么我们就可以轻易地获取到调用这些恶意脚本的源代码,并总结出不同恶意脚本的特征。

图2 调用coinhive挖矿脚本的script标签

如图2所示,这是调用coinhive挖矿脚本的script标签内容,其中包含了挖矿原始JS脚本文件名称:coinhive.min.js,挖矿受益者的Key:Jgv7noixIKHmJ7IIhAR9jySAwG3ZU8vt,还有占用CPU的自定义阈值throttle:0.7。那么通过查找特定字符串“Coinhive.Anonymous”或“coinhive.min.js”,就可以简单判断出该网站是挖矿网站。表1展示了部分较活跃的挖矿脚本以及它们所对应的关键字符串信息。

表1 部分挖矿脚本对应的关键字符串

挖矿脚本

关键字符串

Coinhive

new CoinHive\.Anonymous | coinhive.com/lib/coinhive.min.js

CryptoNoter

minercry.pt/processor.js | \.User\(addr

NFWebMiner

new NFMiner | nfwebminer.com/lib/

JSECoin

load.jsecoin.com/load

Webmine

webmine.cz/miner

CryptoLoot

CRLT\.anonymous | webmine.pro/lib/crlt.js

DeepMiner

new deepMiner.Anonymous | deepMiner.js

Monerise

apin.monerise.com | monerise_builder

Coinhave

minescripts\.info’

Cpufun

snipli.com/[A-Za-z]+\" data-id=’

Mineralt

ecart\.html\?bdata= | /amo\.js\"> | mepirtedic\.com’

将这些关键字符串整理到黑名单中,通过爬虫搜索并查找这些关键字符串,就可以检测恶意挖矿网站,目前很多浏览器插件如Adblocker,MinerBlock都采用的是这种检测方法。另外,CoinBlockerLists是至今还在维护更新的一个开源项目,它不仅会搜集挖矿脚本关键字符串的黑名单列表,同时也会持续搜集和恶意挖矿事件相关的矿池,代理服务器,具体域名和IP地址等黑名单列表,有助于人们从更多维度去分析和预防挖矿行为。

这种方法虽然可以快速验证某网站是否为挖矿网站,但是一切基于黑名单的检测方案都是存在误报和漏报的。所有的黑名单需要人工维护的,都有不可扩展性,而且对于未知的挖矿脚本,这种方法是无能为力的。

2基于CryptoNight加密算法特性的检测方法

不同于比特币,CryptoNote类加密货币可以在普通PC机上挖掘,主要原因是挖掘此类货币所使用的挖矿脚本大部分是基于CryptoNight挖矿算法编写的。这类算法的核心是Memory-Hard型函数,该函数将挖矿流程锁定在以内存为衡量标准的硬件性能,让多核平行处理发挥不出来,降低了硬件的运算优势,从而使得挖矿的效率与内存的性能正相关,以保证平等挖矿,当初它诞生的主要原因其实就是为了抵制矿机。从这类算法的特性入手,我们也可以实现对挖矿网站的检测。

图3 CryptoNight算法的计算过程

图3展示了CryptoNight算法的计算过程,主要分为三部分。

1

首先,暂存器初始化流程。暂存器是用来存储中间结果的大内存区域。根据自定义参数对输入内容进行Kecccak运算,将计算结果分割成多个大小相同的块并进行AES加密计算,流程一直循环直到暂存器写满。

2

然后,内存处理流程。该流程主要是对第一步的结果进行524,288次迭代读/写运算,每一次运算都包含了AES,XOR,MIL,ADD多种运算。

3

最后,结果计算流程,采用和第一步初始化时相同的方式进行AES加密计算后,再进行一些散列函数的运算,比如BLAKE-256, Groestl-256和Skein-256,最终计算结果就是CryptoNight算法的输出。

通过静态分析加密算法的不同散列函数的分布情况,以及跟踪分析循环计算时不同操作指令(XOR,shift,rotate)的数量规律,就可以实现对加密算法的识别,进而检测挖矿网站,主要判断依据如下:

CryptoNight算法一般包括5种密码原语,包括:Keccak,AES,BLAKE-256, Groestl-256, and Skein-256。通过分析控制流,就可以判断恶意挖矿模块中是否包含这些原语或原语变形的函数。比如BLAKE-256原语中一般包含80 XOR,85 左偏移和32 右偏移指令,若发现有个函数foo(),包含86 XOR,85 左偏移,33右偏移,那么根据自定义规范可以计算出foo()和BLACK-256相似性为3,然后就可以得到该模块中所包含的不同相似密码原语的数量分布。除此之外,恶意挖矿模块中XOR,shift,rotate这三种指令的数量是有一定数量规律的。根据这两点就可以可以判断出该模块是否包含CryptoNight算法,进而判断该网站是否为挖矿网站。

四、总结

任何可以使用浏览器上网的设备都可能受到Cryptojacking攻击,包括不同操作系统服务器,普通PC机,笔记本,甚至手机平板等等。因此对这类攻击要时刻保持警惕,作为网站运维人员,则需要定时对网站进行扫描和漏洞修复,作为普通的互联网用户,最好可以安装浏览器拦截插件和安全防护软件。

参考文献:

[1].MineSweeper: An In-depth Look into Drive-by Cryptocurrency Mining and Its Defense.

[2].Dr. Mine:a node script written to aid automatic detection of in-browser cryptojacking. https://github.com/1lastBr3ath/drmine

[3].Eskandari S , Leoutsarakos A , Mursch T , et al. A first look at browser-based Cryptojacking[J]. 2018.

[4].CoinBlockerLists.https://zerodot1.gitlab.io/CoinBlockerListsWeb(2018).

[5].Catalin Cimpanu. Tweak to Chrome Performance Will Indirectly Stifle Cryptojacking Scripts.

[6].Google. Chromium Issue 766068: Please consider intervention for high cpu usage.

[7].Seigen, Max Jameson, Tuomo Nieminen, Neocortex, and Antonio M. Juarez.

CryptoNight Hash Function. https://cryptonote.org/cns/cns008.txt

(March 2013).

内容编辑:天枢实验室 周鸿屹 责任编辑:肖晴

本文分享自微信公众号 - 绿盟科技研究通讯(nsfocus_research),作者:天枢实验室

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 恶意挖矿攻击现状分析

    本文首先介绍了恶意挖矿攻击相关知识,然后重点分析恶意挖矿活动的现状,最后分别针对企业和个人分别提出了一些实用的防护措施和建议。

    绿盟科技研究通讯
  • AI新威胁:神经网络后门攻击

    人工智能是如今备受关注的领域,随着人工智能技术的快速发展,基于深度学习模型的应用已经进入了我们的生活。伴随着神经网络的发展和应用的普及,深度学习模型的安全问题也...

    绿盟科技研究通讯
  • NuggetPhantom分析报告

    近期,绿盟威胁情报中心(NTI)在一次应急响应中,发现一起使用模块化恶意工具集“NuggetPhantom(掘金幽灵)”的安全事件。据我们观测,本次安全事件背后...

    绿盟科技研究通讯
  • 黑产军团控制四百万肉鸡集群,掘金区块链数字货币

    随着区块链技术的火爆,比特币、以太币、瑞波币等数字货币被持续热炒,交易市值和价格一路走高,许多人看好数字货币的发展,纷纷加入“挖矿”大军。与此同时,数字货币的火...

    FB客服
  • 事件分析 | 门罗币挖矿新家族「罗生门」

    腾讯安全云鼎实验室通过部署的威胁感知系统捕获了一批挖矿样本(具有同源性),是一批可挖取门罗币(xmr)的挖矿病毒。这批样本今年5月开始出现,目前各大杀软对此样...

    云鼎实验室
  • 恶意挖矿攻击现状分析

    本文首先介绍了恶意挖矿攻击相关知识,然后重点分析恶意挖矿活动的现状,最后分别针对企业和个人分别提出了一些实用的防护措施和建议。

    绿盟科技研究通讯
  • 只听过“云养猫”、“云养娃”,竟然还有“云挖矿”?

    2018年伴随着区块链的“疯狂” 加密货币市场也火爆起来 越来越多的新晋“矿工”加入其中 面对高昂的矿机成本和运营成本 不法黑客再出“奇招”——“云上挖矿” ...

    腾讯云安全
  • 想要“挖矿”致富?小心这些方式让你被挖矿,让别人致富!

    镁客网
  • 2019上半年恶意挖矿趋势报告

    上一期,深信服安全团队对勒索病毒进行2019半年度总结,主要盘点了高发勒索家族、受灾区域分布、勒索病毒发展走向等。本期深信服安全团队对另一流行病毒类型——挖矿木...

    FB客服
  • 挖矿新时代下社群经济如何助力超算产业发展

    浙大MBA硕士,纳斯达克上市企业嘉楠科技区块链总经理,负责嘉楠区块链业务的战略发展,以及行业生态拓展,全力推动嘉楠区块链相关产品研发及全球推广。

    区块链技术布道

扫码关注云+社区

领取腾讯云代金券