导语:与恶意挖矿有关的攻击技术正在迅速发展,这就迫使防御者需要想出主动检测和阻止这种威胁的新方法。
当Coinhive于2017年9月首次推出时,安全人员只需通过在HTML源代码中查找引用Coinhive API的几行代码,即可发现该浏览器是否受到恶意挖矿脚本的攻击。恶意挖矿脚本之所以会被如此轻易的检测到,是因为当时Coinhive还是一种新生事物,所以即使是最差的挖矿工具也可以明目张胆的将脚本挂在入侵的网站上,在用户的电脑上工作,占用大量的系统资源。
Coinhive挖矿技术的升级史
但是,随着广告拦截以及安全公司开始研发出对应的检测机制,Coinhive受到了阻碍,所以攻击者也更加努力地在通过各种技术掩盖他们的恶意脚本代码。最近,网络安全公司Sucuri的安全专家的就发现了在运行不同风格的内容管理系统的受攻击网站中,被攻击者注入了最新的经过混淆处理的Coinhive API版本,该版本可以逃避最新的检测机制。
另外代理攻击也变得越来越普遍,所以越来越多的类似Coinhive的新型挖矿工具的出现。最终,为了维护浏览器免受恶意挖矿的攻击,安全管理人员会对这些脚本设置一个黑名单。
但根据最新的研究,恶意挖矿脚本是可以逃避黑名单拦截的。接下来,我们就来看一下挖矿软件使用的逃避技术,通过避免最大化用户的CPU来绕过基于黑名单列表的拦截器和基于行为的检测。对于那些追踪恶意软件活动的人来说,这种逃避并不是什么新鲜事,但这种绕过技术也表明恶意挖矿脚本也可以成功被应用于加密货币的挖掘。
逃避黑名单
目前逃避黑名单的挖矿软件主要有两个不同版本,一个就是前面提到的利用coinhive[.]com,的Coinhive挖矿软件,它可以很容易地被发现和阻止。另一个就是和Coinhive语法相似,但是使用了不同的主机名,现在是npcdn1[.]now[.]sh的挖矿软件。虽然看起来可能没有太大的差别,但后者足以绕过大多数黑名单。
Now.sh是使用JavaScript (NodeJS)或Docker构建的应用程序,它是一个合法的云部署服务,任何人都可以免费加入。就像其他云平台(AWS,Google,Azure)一样,如果想在不影响其他合法应用程序的情况下阻止域名或IP地址,显然是不可能的。所以,为了达到这个理想情况,该代码块必须在完全限定的域名(FQDN)上进行,例如npcdn1[.]now[.]。
正如Sucuri的Denis Sinegubko在其一篇博客文章中所描述的一个案例,该案例来自GitHub的一个恶意挖矿软件,该软件会伪装成JQuery活动的一部分,其实它运行的是自主托管的DeepMiner网络应用程序。攻击者通过滥用平台即服务(PaaS)解决方案,不仅可以逃避黑名单的拦截,还能避免向他们选择的门罗币矿池支付30%的Coinhive代理佣金。
不过通过设置黑名单机制的问题在于,要不断地把相关的无限数量的子域都添加进来,如果漏掉一个,就可能功亏一篑,这种做法的最后结果就会变成一个类似于打鼹鼠游戏。比如,当我在写这篇文章时,一个新的子域名(sxcdn3.now.sh)就刚刚被发现,并且还没有被许多公开可用的拦截列表检测到。
监视CPU使用情况
检测浏览器挖矿软件的另一种方法是监视CPU使用情况,并从本质上检测出消耗大部分处理器功率的违规选项。
由于滥用CPU可能是触发挖矿检测的一种方式,因此攻击者会经常会限制他们的挖矿软件在特定阈值以下运行,以便混淆在正常活动中。本文所讲的逃避黑名单就是这种混淆的情况,通常情况下,挖矿软件都会将挖矿时的CPU使用率控制在80%左右,因为80%的CPU使用率很可能是通过玩在线游戏或看视频所引起的。这是大多数基于恶意软件或基于浏览器挖矿软件的常见行为,因为这样挖矿软件在运行未限制的代码时就不必担心会减慢用户的计算机速度,从而避免引起用户的警惕。
结论
与恶意挖矿有关的攻击技术正在迅速发展,这就迫使防御者需要想出主动检测和阻止这种威胁的新方法。识别服务器是否被含有恶意挖矿脚本不但需要花费很多时间对可疑脚本进行反混淆处理,而且还要提供更通用的检测规则。
对于终端用户来说,广告拦截和网页拦截仍然是预防恶意挖矿的最佳手段之一,但前提是需要不断更新安全防护软件。
因此理解攻击者使用的不同攻击机制,并开发最有效的缓解技术是非常重要的。