一次挖矿应急事件的学习 | 技术精选0122
2022-2-2 18:0:0 Author: mp.weixin.qq.com(查看原文) 阅读量:38 收藏

早上上班,刚打开电脑准备学习,突然接到老板电话说,有个客户的网络中存在大量的挖矿病毒,需要我们协助去解决一下。
作为卑微安服仔,二话不说,背起电脑,奔赴客户现场。
到了现场,大概了解了一下情况,客户的网络还是比较复杂(高校校园网),之前已经爆发过一轮,涉及内网服务器、个人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

文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMzYxNzc1OA==&mid=2247498293&idx=1&sn=4d827cf84b28902f6094158236b5232f&chksm=9b3adc84ac4d5592a45b5c27c473e5de934d52f297812af386bacc66be665e2b83c9df6be477#rd
如有侵权请联系:admin#unsafe.sh