一、背景
近日阿里云安全团队发现了一起利用多个流行漏洞传播的蠕虫事件。黑客首先利用ThinkPHP远程命令执行等多个热门漏洞控制大量主机,并将其中一台“肉鸡”作为蠕虫脚本的下载源。其余受控主机下载并运行此蠕虫脚本后,继续进行大规模漏洞扫描和弱口令爆破攻击,从而实现横向传播。涉及的漏洞除了ThinkPHP远程命令执行漏洞,还有JBoss、Weblogic、Redis等产品的漏洞。
因为该蠕虫最初植入的恶意脚本名为ibus,所以命名为ibus蠕虫。本篇文章主要介绍了阿里云安全对此类蠕虫入侵的各个阶段的检测、防御和隔离,保障阿里云用户的资产安全。希望读者通过本篇文章,可以意识到当前网络安全的风险与日俱增,安全漏洞无处不在,黑客通过简单、自动化的手段就可以对用户利益造成极大的损害。
目前阿里云安全团队对网络进行了实时监控,并帮助云上用户修复潜在风险,如果漏洞依然存在,建议请尽快对自身进行检查,或者参考文末的安全建议。
二、蠕虫主要特点及结构
基于阿里云态势感知的大数据平台,我们对该黑客组织进行了追踪和详细分析,该黑客通过ThinkPHP漏洞和蠕虫脚本获取了大量的肉鸡进行牟利。阿里云安全团队详细分析了此蠕虫的主要特点,包括:
使用多种漏洞进行传播,以web代码执行漏洞为主;
- 恶意脚本的名字及路径具有迷惑性,且多份拷贝存放于不同的目录下;
- 主要代码perl实现,具备功能完备的C&C通信模块;
- C&C通信使用http协议,通信内容加密;
- 通过挖掘门罗币进行获利。
蠕虫的功能结构由恶意脚本、传播模块、C&C模块、挖矿模块等组成。
黑客首先利用ThinkPHP v5 远程命令执行漏洞攻击了大量主机,并将ip为67.209.177.163的服务器作为蠕虫脚本的下载源。
之后攻击者控制其他被入侵主机从67.209.177.163下载ibus脚本并执行。该脚本用perl语言写成,主要功能是解码、写入并执行C&C (Command and Control)模块。
攻击者进而通过向C&C模块发送命令,下载包含多种攻击payload的传播模块,以及由下载器、配置文件和挖矿程序组成的挖矿模块,挖矿从而获取利润。传播模块则继续攻击未被入侵主机,横向传播。
黑客入侵的各个阶段如下图所示:
三、蠕虫模块分析
1.攻击及恶意脚本植入
对大多数被入侵主机,攻击者最初是利用ThinkPHP v5 远程代码执行漏洞,通过如下payload植入恶意脚本
可以看到这里从
http://67.209.177.163/ibus下载并运行了ibus。分析后发现ibus是一个perl脚本,该脚本会从Linux根目录开始遍历所有目录(最大深度为6),找出当前账号有写权限的所有文件夹,存入列表。
之后对列表中的目录进行打分,取分数最高的三个目录。打分标准例如完整路径以"/bin"开头的目录分数最高,"/usr/bin"其次,以此类推。
在最后挑选出来的三个目录中,写入同样的C&C模块脚本(脚本分析见后文),并分别命名为nmi, nbus和.dbus。这三个都是系统程序的名字,定时执行时还会打印出“These are for bus-kernl-daemon service”,非常具有迷惑性。
ibus脚本最后进行定时任务添加和脚本自删除操作。
2.传播模块
下图为攻击函数列表,可以看出此蠕虫代码利用了多种漏洞进行横向传播,包括java反序列化漏洞、Weblogic WLS组件RCE漏洞(CVE-2017-10271)、WebLogic 任意文件上传漏洞(CVE-2018-2894)、redis 未授权访问漏洞等。
以下是部分攻击代码:
1)对JBoss用户名、密码暴力破解
涉及的部分用户名和弱口令列表:
2)使用weblogic漏洞上传Webshell
3)redis 未授权访问漏洞
3.C&C模块
该部分的内容是由ibus中的$encnde解码后得到,相同内容被写入三个不同的文件夹,难以被彻底清理。
C&C模块也是一个perl脚本,它实现了完整的控制功能:
脚本包含的核心函数/模块:
- newsocketto:实现socket通信
- GetCommand、PostCommand:实现基本的http get/post功能
- SendBackResult、SendBackState:返回c&c指令的执行结果和执行状态
- register:c&c上线注册
- check_relay:检测主c&c是否可用
- Knock_Knock:获取C&C指令,会返回needregr、newtask、notasks、newreconfig四种指令
- Update_Config_File、Load_Config_File:更新和加载配置文件
- DownLoadExec、DownLoadExecPar:下载文件并执行,DownLoadExecPar可带参数执行
- Updateme:更新
- scanme:扫描目录
- getrelfromblog、getrelfromblog1、srel:备用c&c
- crntabvalidator:修改crontabs属性,后面会循环执行,防止定时任务被删除
- UUID Management :为每个肉鸡生成uuid
- MAIN Function:cc模块主函数
C&C模块的功能:
MAIN Function通过Knock_Knock获取c&c指令,实现如下功能
- Command Execution :命令执行(实际并未实现执行功能)
- Download Execute:下载文件执行
- Download Execute W Params:下载文件带参数执行
- Uninstall:卸载自身
- killcycle:终止运行
- Update Me:更新
C&C服务器是speakupomaha.com:
下图为控制主机执行GetCommand的部分代码:
四、影响范围
由配置文件可知,ibus蠕虫对应的钱包地址为4An3Radh69LgcTHJf1U3awa9ffej4b6DcUmEv8wirsDm8zRMSjifrwybH2AzHdEsW8eew3rFtk4QbGJMxqitfxmZJhABxpT。其影响范围从攻击者收益和挖矿规模的角度来看,由于该钱包地址在
http://minexmr.com/#worker_stats对应的挖矿速率(HashRate)约为167KH/s,据此粗略估计,全网约有1万台的主机被这种蠕虫感染,黑客因此每天能牟利30.86美元(925.74美元 每月)。
而从攻击时间上看,1月4号和12号是黑客攻击的高峰,且蠕虫攻击仍在蔓延。
五、安全建议
针对此次ibus蠕虫攻击,阿里云安全向用户提供以下安全建议:
- 互联网上扫描和攻击无处不在,web漏洞、弱密码、服务器存在未授权访问,都可能导致主机被挖矿,应尽量避免使用弱密码,此外可以选择购买阿里云的云防火墙和态势感知实现威胁检测、主机防御和安全隔离。
- 对于已感染的客户,可以通过购买阿里云安全管家服务,在安全专家的指导下进行病毒清理和安全加固。
IOC
从virustotal查询发现,9b6c1672fc9d5721af5ae6ac9d053b34 这个恶意脚本IoC,目前市面上大多数引擎检测不出来。
而阿里云态势感知基于深度学习和规则引擎的模型可以对大部分的恶意脚本进行识别。态势感知告警如下图所示,
钱包地址:4An3Radh69LgcTHJf1U3awa9ffej4b6DcUmEv8wirsDm8zRMSjifrwybH2AzHdEsW8eew3rFtk4QbGJMxqitfxmZJhABxpT
恶意Host:
67.209.177.163
190.2.147.11
C&C 服务器:
http://speakupomaha.com备用C&C服务器:
linuxservers.000webhostapp.com
linuxsrv134.xp3.biz
5.196.70.86
矿池地址:
http://minexmr.com作者:悟泛、踢歪、桑铎;致谢:刘洪亮、千霄、淡陌