2017 年 12 月有一则新闻称,国外一家星巴克店内的无线网络被发现植入了恶意代码,劫持网络流量,利用用户设备挖掘门罗币(XMR)。与加密货币相关的安全事件总是引人注目,我们也再次见识到了公共 Wi-Fi 的危险。
不久,Arnau Code 写了一篇文章 CoffeeMiner: Hacking WiFi to inject cryptocurrency miner to HTML requests,其中详细介绍了如何通过 MITM 攻击植入 JavaScript 代码,从而让 Wi-Fi 网络内的所有设备帮助攻击者挖矿,架构如图 2-132 所示。
在本文内容中,我们将提出一种可以检测周围 Wi-Fi 网络是否被植入挖矿代码的便捷方法。
在星巴克挖矿事件中所使用的便是 CoinHive 挖矿程序。CoinHive 是一个提供了门罗币挖矿脚本的网站平台,攻击者将该平台提供的脚本植入到自己或入侵的网站上。一旦有用户访问加载网页上的JavaScript 代码,便会利用用户设备来挖掘门罗币。
在 CoinHive 官网中可以发现多种部署方式,包括 JavaScript 代码形式、人机验证形式、WordPress插件形式等,种类非常丰富。例如,在注册登录时的人机验证,界面如图 2-133 所示。一旦单击就会启动挖矿程序,在运算一段时间后用户才可以继续登录。
根据 JavaScript Miner 的介绍文档,将示例代码放入网站的 HTML 文件中就可以了,部署极其简单,如图 2-134 所示。
由于 JavaScript 挖掘代码的易用性及加密货币的经济价值,CoinHive 经常被不法分子所利用。例如,站长或黑客攻破网站后主动插入挖矿代码,站点本身没有挖矿脚本却被运营商链路劫持插入挖矿代码,通过广告联盟将挖矿代码随着广告分发到大量的网站上。
这次星巴克热点的挖矿事件向大家揭示了公共 Wi-Fi 网络也是容易被不法分子利用的场景。
在星巴克热点挖矿案例中,可以通过多种方式达到植入挖矿代码的目的。
(1) 在商家无线网络中,通过中间人攻击植入挖矿代码,如图 2-135 所示。