前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cryptojacking浅析

Cryptojacking浅析

作者头像
绿盟科技研究通讯
发布2019-12-11 11:44:34
1.1K0
发布2019-12-11 11:44:34
举报

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

—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).

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 绿盟科技研究通讯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考文献:
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档