一次挖矿应急事件响应实战

admin 2022年10月15日11:10:15评论89 views字数 2858阅读9分31秒阅读模式
早上上班,刚打开电脑准备学习,突然接到老板电话说,有个客户的网络中存在大量的挖矿病毒,需要我们协助去解决一下。

作为卑微安服仔,二话不说,背起电脑,奔赴客户现场。

到了现场,大概了解了一下情况,客户的网络还是比较复杂(高校校园网),之前已经爆发过一轮,涉及内网服务器、个人PC等等。

涉及服务器的挖矿,是因为ssh弱口令导致的。经过一波应急+基线,基本解决了问题。

但是涉及个人用户的挖矿操作屡禁不止,主要是学校中个人PC的复杂动态性,且无法进行统一的终端管控。

奈何在屡次事故中,客户也是烦恼不堪,但是遇到了机智如我,“黄老爷的腿,咱们必须给接上”。

1

初探挖矿

客户网络里部署了360AISA全流量威胁分析系统,先上去看看是什么情况。过滤其他告警,请求基本是这个样子:

一次挖矿应急事件响应实战

挖矿常用协议:

1.Setgenerate协议

Setgenerate协议接口代表了CPU挖矿时代。

中本聪在论文里描述了“1 CPU 1 Vote”的理想数字民主理念,在最初版本客户端就附带了挖矿功能,客户端挖矿非常简单。当然,需要同步数据结束才可以挖矿。

2.Getwork协议

Getwork协议代表了GPU挖矿时代,需求主要源于挖矿程序与节点客户端分离,区块链数据与挖矿部件分离。

使用客户端节点直接挖矿,需要同步完整区块链,数据和程序紧密结合,也就是说,如果有多台电脑进行挖矿,需要每台电脑都单独同步一份区块链数据。

这其实没有必要,对于矿工来说,最少只需要一个完整节点就可以。而与此同时,GPU挖矿时代的到来,也需要一个协议与客户端节点交互。

一次挖矿应急事件响应实战

3.Getblocktemplate

Getblocktemplate协议诞生于2012年中,此时矿池已经出现。与Getwork相比,Getblocktemplate协议最大的不同点是,该协议让矿工自行构造区块。如此一来,节点和挖矿完全分离。

对于Getwork来说,区块链是黑盒的,Getwork对区块链一无所知,他只知道修改data字段的4个字节。

对于Getblocktemplate来说,整个区块链是透明的,Getblocktemplate掌握区块链上与挖矿有关的所有信息,包括待确认交易池,Getblocktemplate可以自己选择包含进区块的交易。

4.Stratum

矿池采用Getblocktemplate协议与节点客户端交互,采用Stratum协议与矿工交互,这是最典型的矿池搭建模式。

此外,为了让之前用Getwork协议挖矿的软件也可以连接到矿池挖矿,矿池一般也支持Getwork协议,通过阶层挖矿代理机制实现(Stratum mining proxy)。

要知道,在矿池刚出现时,显卡挖矿还是主力,Getwork用起来非常方便,另外早期的FPGA矿机有些是用Getwork实现的。

一次挖矿应急事件响应实战

Stratum与矿池采用TCP方式通信,数据传输的过程基于JSON-RPC。

这个时候就初见迷雾了,最开始在AISA上看到的就是Stratum的特征通信流量。

矿机向矿池可使用如下8个方法发送数据:

一次挖矿应急事件响应实战

矿池向矿机则可使用如下7个方法发送数据:

一次挖矿应急事件响应实战

挖矿主机和矿池交互的流程:

一次挖矿应急事件响应实战

值得注意的是,上面是标准的Stratum,由于加密货币的种类繁多,不同的加密货币采用的通信协议会有部分不同。

比如常见的XMR(门罗币)挖矿程序xmrig、xmr-stak则会将上述的协议进行修改。门罗币简化了上述流程,通过login方法来进行认证和订阅。矿池端在接收到login信息后,如果验证通过,则会直接下发任务 —— 这样子就将标准Stratum协议的三次通信压缩为一次,大大减少了通信流量。

JSON-RPC:

官方的定义是:JSON-RPC是一个无状态(HTTP说,巧了我也是无状态)的轻量级的RPC协议。

1.PRC

RPC是Remote Procedure Call,字面意思是远程过程调用。就是从本地机器去远程调用执行服务器上的一个函数。

2.HTTP

说起HTTP各位朋友肯定熟悉,这里为什么提一句HTTP呢?原因是客户问我病毒访问的URL是什么,我一时间愣住了,但是看着JSON-RPC请求和响应,发现的确和HTTP的通信存在类似之处。

查阅资料后,HTTP请求本身也可以看作是RPC的一种具体形式。HTTP请求也一样是可以从本地发一个信号到服务器,服务器上执行某个函数,然后返回一些信息给客户端。所以宽泛地讲,HTTP请求本身就是一种RPC的形式。

一次挖矿应急事件响应实战

矿机程序:

1.XMRig

XMRig是一款高性能的门罗币(XMR)CPU挖矿软件。

2.GMiner

GMiner由一个俄罗斯高性能计算和密码学领域的专家小组创建的。专注于英伟达和AMD平台。支持最流行的算法,如:Ethash、ProgPoW、KAWPOW、Equihash和CuckooCycle。

3.PhoenixMiner

PhoenixMiner是快速(可以说是最快的)Ethash(ETH,ETC等)挖矿软件,支持AMD和Nvidia平台。

2

寻踪觅迹

挖矿病毒感染方式大致如下:

服务器:

通过服务器运行服务的1day/Nday;

通过Mysql、Mssql、Oracle数据库、SSH、FTP、RDP、Telnet、Redis等多种应用的密码爆破。

个人PC:

通过互联网下载恶意软件携带的挖矿病毒(主要渠道);

通过Ms17-010对Win7的蠕虫传播挖矿病毒。

3

纵深防御

对于挖矿病毒,我们可以通过以下方式防御:

全流量分析:

对网络里可疑的矿池通信进行及时的发现和拦截告警,但对加密矿池通信可能效果不佳。

威胁情报-360安全DNS:

结合360安全大数据威胁情报加持,对矿池的DNS请求拦截在内部网络中,使其无法通信,对加密通信依然可以拦截。

正本清源:

及时升级操作系统,及相关服务组件的安全补丁;

相关服务配置强口令;

安装软件渠道通过安全渠道下载(官方网站、安全应用市场);

安装终端安全杀毒软件。

4

参考

区块链核心技术演进之路——挖矿演进 :
https://zhuanlan.zhihu.com/p/23558268

虚拟货币挖矿检测与防御 :
https://security.tencent.com/index.php/blog/msg/208


- END -


往期推荐

欢迎 在看留言分享至朋友圈 三连

 好文推荐  


一次挖矿应急事件响应实战

原文始发于微信公众号(乌雲安全):一次挖矿应急事件响应实战

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月15日11:10:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次挖矿应急事件响应实战http://cn-sec.com/archives/1350759.html

发表评论

匿名网友 填写信息