近年来,勒索病毒凭借极强的破坏性和高额的赎金“风靡一时”,令人闻风丧胆,而另一种数字化非法敛财工具——挖矿木马,却常常容易被人们忽略。
“挖矿”实际上是指通过计算机运算获取数字货币的一个过程,理论上来说,利用个人资源进行挖矿并不是违法的,但由于运算过程需要消耗大量的计算机资源,长时间的高负荷运行甚至会造成计算机硬件的损坏,一些网络犯罪分子为了缩减成本,开始利用木马程序非法侵入他人电脑,植入挖矿程序进行挖矿,构成了我们平时所说的挖矿木马。
早期的挖矿木马更多的采用了捆绑的方式进行传播,多通过下载站、网盘、网吧论坛等方式传播捆绑了挖矿木马的外挂程序、加速器、影音播放器等,传播具有一定的广泛性,但由于代理渠道容易被追溯,黑产团伙也面临着较大的风险。
随即,黑产团伙开始挖掘自动化的传播技术,首当其冲的便是账号爆破。不论是SMB爆破,还是RDP爆破、MSSQL爆破、亦或是SSH爆破,都成为挖矿木马传播的“基本操作”。随着攻防手法的不断变化,黑产团伙开始在挖矿木马上组合多种传播模块,除暴力破解外,还大量利用了影响广泛的0day漏洞,如Windows下的“永恒之蓝”漏洞,被“驱动人生”挖矿木马、PowerGhost、WannaMine等家族广泛使用。
比起Windows环境,Linux下的安全问题似乎更少受到普通用户的关注,但这并没有减少攻击者对Linux系统兴趣,针对Linux系统的挖矿木马在对抗中持续进行技术更替。
传播方式的演进
账号爆破
账号爆破作为最低成本的攻击方式,同样也是Linux挖矿木马最常用的传播手法,例如早期版本的StartMiner就使用了SSH暴力破解进行传播,其次,Redis账号爆破也常常被挖矿木马利用:
(StartMiner挖矿木马所使用的字典截取)
SSH免密登录
部门挖矿木马在感染后,会在authorized_key中写入恶意程序内置的SSH公钥,相当于留下一个小后门,以实现下次SSH免密登录,便于重复感染:
漏洞利用
随着技术的发展,Linux下大量的组件漏洞和应用漏洞渐渐成为挖矿木马的捷径,例如DDG挖矿木马,除SSH暴力破解之外,还会通过Redis未授权访问漏洞、Nexus Repository Manager 3 RCE漏洞(CVE-2019-7238)、Supervisord RCE漏洞(CVE-2017-11610)等多个漏洞进行横向传播:
以下列举出了常见易被挖矿木马利用的相关漏洞:
漏洞名称 | 漏洞编号 |
Redis未授权访问漏洞 | - |
Nexus Repository Manager 3 RCE漏洞 | CVE-2019-7238 |
Supervisord RCE漏洞 | CVE-2017-11610 |
(脏牛)Linux本地提权漏洞 | CVE-2016-5195 |
Apache Dubbo反序列化漏洞 | CVE-2019-17564 |
Apache Dubbo Hessian2 协议反序列化漏洞 | CVE-2021-25641 |
Apache Dubbo Nashorn 脚本远程代码执行漏洞 | CVE-2021-30181 |
Structs2漏洞合集 | S2-001至S2-057 |
SHIRO-550 反序列化漏洞 | CVE-2016-4437 |
Drupal Drupalgeddon 2 远程代码执行漏洞 | CVE-2018-7600 |
ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞 | - |
ThinkPHP远程代码执行漏洞 | CVE-2019-9082 |
Confluence 未授权 RCE | CVE_2019_3396 |
...... |
Docker挖矿
什么是docker呢?熟悉Linux环境的同学应该知道,docker是容器技术的一种实现,相当于对软件的依赖环境进行打包处理,可以在不同的环境下快速部署,并且屏蔽环境差异执行文件。由于docker技术十分便利,如今正被越来越多的企业和个人采用,于是攻击者将算盘打到了docker上。
2020年,研究人员曾发现Docker Hub社区有用户上传大量包含了挖矿程序的docker镜像,这些镜像中被下载次数最多的高达147万次:
(图片源自海外报道)
驻留方式的演进
驻留方式的演进是Linux挖矿木马技术发展最直观的体现。早期的Linux挖矿木马驻留较为简单,常见的手法包括创建crontab定时启动、执行后删除文件、设置文件或目录为隐藏属性:
(DDG早期变种创建的crontab)
慢慢的,Linux挖矿木马逐渐衍生出了更多驻留方式,如下举例:
劫持替换系统命令文件
以BillGates僵尸网络为例,该木马会替换系统中的getty、lsof、netstat、ps、ss、syn等命令,当直接执行这些命令时,会劫持返回结果,影响分析和排查:
守护进程
为了防止挖矿进程被杀掉,部分挖矿木马会创建守护进程用以监控挖矿进程的状态,在挖矿进程被kill时能够及时重新拉起,以深信服终端安全团队2020年捕获的RainbowMiner为例,图中kthreadds为挖矿进程,pdflushs为守护进程:
Rootkit
Linux挖矿最常见的Rootkit方式是so注入,通过修改/etc/ld.so.preload文件,设置恶意so文件为预加载库,通常用来hook文件查看、文件删除、进程查看等系统命令函数,过滤掉木马相关的信息,使得排查时使用系统命令无法查看到病毒相关的文件和进程信息:
常见的H2Miner、KernelMiner、AutoUpdata挖矿木马等家族都使用了该技术。
除了so外,加载恶意内核模块.ko文件(kernel object文件)也是Linux下的一种rootkit手法,直接使用insmod或modprobe命令即可加载;在排查过程中,可以使用lsmod命令来查看已经加载的内核模块列表,使用rmmod命令可以进行内核模块卸载:
(某恶意ko文件截图)
bash启动项
~/.bash_profile文件默认情况下是记录了用户自己专用的shell信息,包括一些环境变量、需要执行的.bashrc文件等,该文件在系统启动时生效,某些挖矿木马会将自身程序启动写入该文件中,以实现自启动,例如StartMiner在变种中就新增了该启动项:
cp -f -r -- /bin/bprofr /bin/dbused 2>/dev/null && /bin/dbused -c >/dev/null 2>&1 && rm -rf -- /bin/dbused 2>/dev/null
功能多样化
通信方式
除了基本的传播和驻留之外,Linux挖矿还常常使用一些心机操作,比如DDG挖矿木马,早期使用了Memberlist开源P2P通信方式,后来变更为自研的P2P通信方式;
再例如SystemdMiner挖矿木马,除了脚本中以拼接的形式组成访问的恶意域名外,还使用了socket5的方式用relay.tor2socks.in代理访问C&C域名,relay.tor2socks.in是一个类似中转网站的域名,这样,C&C域名trumpzwlvlyrvlss.onion就不会直接出现在数据包头:
安防对抗
安防对抗是大部分恶意程序都具有的功能,而Linux下的恶意程序主要对抗的是云服务器上常见的安防产品,例如阿里云盾、安骑士、云镜等,通常通过结束该产品的相关进程甚至包括更新进程来进行对抗:
上图为SystemdMiner的安防对抗模块,可以看出,该模块目前还较为混乱,除了安全软件的进程外,还加入了很多其他挖矿家族的相关进程。
清理竞品
安全人员在分析过程中发现,Linux下的挖矿木马除了会对抗一些安防产品,还会清理其他家族的挖矿木马,例如SystemdMiner会通过改写hosts文件,使得其他家族的挖矿木马无法访问对应的域名,还会删除一些常见挖矿家族的进程和文件:
而有趣的是,被清理的家族也会想尽办法让竞品干不掉自己,比如被DDG挖矿木马列入清理名单的RainbowMiner,则采用了上文提到的多种驻留手段来躲避DDG的黑手。
多平台感染
一些初具规模的挖矿木马家族开始不满足于单一平台的传播和感染,发展起了多平台挖矿,例如,2018年被安全人员发现的PowerGhost挖矿木马,起初只是在Windows下利用永恒之蓝漏洞和poweshell无文件攻击的方式进行传播和挖矿,深信服终端安全团队于2019年发现其用于感染Linux平台的SSH暴力破解模块和MSSQL暴力破解模块:
(PowerGhost感染全流程)
再如近期通过信服云捕获的AutoUpdate挖矿木马,在其配置文件中发现该木马支持双平台挖矿:
与大部分恶意程序一样,Linux挖矿木马的技术变化也是由简至繁,由点及面。在近几年的挖矿木马事件处理中,安全研究人员发现,云主机感染挖矿程序的案例逐渐增多。由于用户业务逐渐云化,云上安全风险也随之而来;云主机大多采用默认的登录端口和登录口令,业务应用没有及时更新存在可被利用的漏洞,且能被公网直接访问,存在较大的安全隐患。
小结
无论是云主机还是物理主机,都需要从端到网的全面进行安全防护,深信服终端安全团队提醒广大用户,谨记以下防护tips,与挖矿木马“Say No”:
密码弱,被爆破,免密登录太脆弱;
勤升级,打补丁,漏洞利用不担心;
装杀毒,定时扫,流量监控少不了;
管理员,勿轻心,安全意识最重要!