如何排查常见挖矿木马

青藤实验室|文
0x00 什么是挖矿?
想要理解挖矿,就要先理解什么是区块链、虚拟货币 。
区块链是一种通过去中心化、去信任的方式集体维护的一个可靠存储 。区块链中的每个节点都能获得一份完整的数据拷贝 。
虚拟货币是基于区块链的应用 。区块链是底层技术,虚拟货币是基于此技术的应用 。以比特币为例,可以说比特币是区块链,但区块链不是比特币 。
什么是挖矿呢?
每隔一个时间点,比特币系统会在系统节点上生成一个随机代码,互联网中的所有计算机都可以去寻找此代码,谁找到此代码,就会产生一个区块 。而比特币的发行是基于奖励的,每促成一个区块的生成,该节点便获得相应奖励,这样大家就有动力投入资金去维护整个交易网络的正常运行 。这个寻找代码获得奖励的过程就是挖矿 。但是要计算出符合条件的值需要进行上万亿次的哈希运算,这个过程需要大量的算力,于是部分黑客就会通过入侵服务器的方式来控制别人的计算机帮助自己挖矿 。
挖矿木马
挖矿木马一般为自动化扫描、攻击、部署挖矿进程的脚本,攻击者首先将挖矿脚本放在远程主机上,通过常见或最新爆出的可命令执行的自动化漏洞利用脚本获得主机的控制权后,登陆主机,利用wget或curl直接下载远程挖矿进程部署脚本,执行脚本进行挖矿进程的部署、隐藏、持久化和痕迹清除等工作 。
挖矿流程一般为:

  1. 通过已知漏洞获得主机控制权
  2. 下载远程挖矿脚本
  3. 删除本机中可能存在的其他挖矿进程(可见黑产竞争的激烈程度)
  4. 生成特征文件避免重复感染
  5. 判断主机系统类型和位数,隐藏并运行挖矿进程
  6. 如果有GPU则进行GPU挖矿
  7. 挖矿进程的驻留与持久化
  8. 部分有蠕虫功能的脚本还会以当前主机为跳板,利用已知漏洞和弱口令进行局域网扫描,以控制更多主机 。
  9. 清除痕迹
0x01 常见被挖矿的原因
为了追求高效率,现在的黑客一般都是通过自动化脚本去扫描互联网上所有机器,寻找漏洞然后部署挖矿进程 。所以大部分的挖矿都是由于受害者的主机上存在常见的漏洞 。比如
  • 未授权访问或弱口令:redis未授权访问、Docker API未授权访问,Hadoop Yarn 未授权访问、NFS未授权访问、Rsync弱口令、PostgreSQL弱口令、Tomcat弱口令、SSH弱口令、Telnet弱口令、windows远程桌面弱口令;
  • 远程命令执行漏洞:WebLogic XML 反序列化漏洞、Jenkins反序列化、Jboss远程代码执行、Spring远程代码执行、ElasticSearch命令执行、永恒之蓝、Struts2系列漏洞、常见CMS的远程命令执行漏洞;
  • 新爆的高危漏洞:一般每次爆发新的高危漏洞,都会紧跟一波大规模的全网扫描利用和挖矿 。
一旦发现服务器被挖矿,应该首先查看挖矿进程所属的用户,根据挖矿进程的运行用户去排查该用户下是否还运行着其它进程,确定这些进程是否有上述经常被黑客利用的漏洞 。如果有常见的漏洞,则应该重点对此进行排查 。
0x02 被挖矿特征
  • 主机CPU使用率飙升
  • 电费激增
0x03 排查过程
1. 确定挖矿进程
可以使用top命令直接筛选出占用CPU过高的可疑进程 。
部分挖矿进程的名字由不规则数字和字母组成,可直接看出(如ddg的qW3xT.4或zigw等) 。
 
如何排查常见挖矿木马

文章插图
 
 
如何排查常见挖矿木马

文章插图
 
 
也有的挖矿进程会修改进程名为常见名称,干扰运维人员,这种伪装方法比较简单(比如利用XHide修改进程名或直接修改可执行文件名),所以排查过程中也要关注所有占用CPU较高的可疑进程 。
 
如何排查常见挖矿木马

文章插图
 
 
如果看到了可疑进程,可以使用lsof -p pid 查看进程打开的文件,或查看/proc/pid/exe 指向的文件 。
lsof
如何排查常见挖矿木马

文章插图
 
 
proc
 
如何排查常见挖矿木马

文章插图
 
 
从上图可以看到,Python进程所指向的文件明显为异常文件,此时就需要重点排查该文件 。如果挖矿木马有隐藏进程的功能,那么很难直接从top中确定可疑进程名 。这时,可从以下几方面进行排查:


推荐阅读