VestaCP是一款强大的vps控制面板,是由俄罗斯的人编写的VPS主机控制面板,支持中文,支持Apache、Nginx、Bind、Exim、Dovecot、vsftpd、MySQL等,提供可视化的网站管理面板,非常适合多用户使用。
最近几个月,托管控制面板解决方案 VestaCP的众多用户收到了服务提供商的警告,他们的服务器使用了异常的带宽。我们现在知道这些服务器实际上用于发起DDoS攻击。对受感染服务器的分析表明,我们称之为Linux / ChachaDDoS的恶意软件已安装在系统上。在本周的同一时间,我们发现官方的VestaCP发行版遭到破坏,导致至少自2018年5月以来对VestaCP的新安装造成供应链攻击.Linux / ChachaDDoS与Linux / Xor.DDoS(又名Xor.DDOS),但与这个较旧的系列不同,它有多个阶段,并使用Lua作为其第二和第三阶段组件。
感染矢量
根据VestaCP论坛上的用户“Razza”,攻击者尝试通过SSH 启动Linux / ChachaDDoS。如何有效载荷是在下降,目前尚不清楚/var/tmp DIR ectory,但假设攻击者已经拥有了管理员密码,它会是一个简单的任务。在安装过程中,VestaCP创建一个名为“admin”的用户,该用户具有sudo权限。攻击者如何知道此管理员用户的密码?
关于如何首先获得凭证的假设有多种假设。我们首先怀疑VestaCP的Web界面存在漏洞。虽然看代码,我们发现,未加密的口令保持我 ñ /root/.my.cnf, 但访问该文件的内容仍然需要攻击者利用一个 本地文件包含和权限提升漏洞。用户“Falzo”也在代码中挖掘并发现更有趣的东西:安装脚本的某些版本将管理员密码和服务器名称泄露给VestaCP的官方网站vestacp.com。
作为“L4ky” 指出,这是所有在GIT HIST的的ORY vst-install-ubuntu.sh文件。从2018年5月31日18:15:53 2018(UTC + 3)(a3f0fa1)到6月13日17:08:36 2018(ee03eff)该$codename变量包含发送到 的base64编码的密码和服务器域名http://vestacp.com/notify/。Falzo说他在Debian安装程序的第809行找到了hack,但与Ubuntu安装程序不同,我们在Git历史中找不到它的引用。也许VestaCP上的安装程序与Github上可见的安装程序不同?
鉴于此主要密码泄漏,我们敦促所有VestaCP管理员更改管理员密码并加强对其服务器的访问。严肃的管理员应该考虑对VestaCP代码进行审核。
虽然这一发现令人震惊,但没有证据表明此密码泄漏是Linux / ChachaDDoS首先分发的方式。它可能是通过另一个洞。
VestaCP维护人员表示他们受到了损害。恶意代码如何在他们的Git树中结束仍然不清楚。也许犯罪者修改了服务器上的安装脚本,这个版本用于在Git中创建文件的下一个版本,但仅用于Ubuntu目标。这意味着他们至少自2018年5月以来就受到了损害。
Linux / ChachaDDoS分析
被攻陷的服务器上丢弃的恶意软件是我们称之为ChachaDDoS的新型DDoS恶意软件的变种。这似乎是多个现有DDoS恶意软件的演变。第一和第二阶段将他们的过程设定为[kworker/1:1]。这就是输出中出现的内容ps。
第一阶段
持久性机制和Xor.DDoS的链接
Linux / ChachaDDoS中使用的持久性机制实际上与Linux / XorDDos中的持久性机制相同,除了文件名dhcprenew 。它包括以下步骤:
- 它将精灵复制到/usr/bin/dhcprenew
- 如果已在主机上设置了与恶意软件相关的任何持久性机制,则会将其删除
- 一个新的服务加入叔 Ø/etc/init.d/dhcprenew
- 此服务的符号链接是创建 d in /etc/rc[1-5].d/S90dhcprenew和/etc/rc.d/rc[1-5].d/S90dhcprene
- 它运行命令lin es chkconfig --add dhcprenew并update-rc.d dhcprenew defaults启用该服务
下载和解密第二阶段
一旦设置了持久性,就会定期从硬编码的URL下载第二阶段。有趣的是,从我们分析的不同样本中,我们观察到了一些与URL结构相似的特征:
- 使用端口8852
- 使用的所有IP地址都属于193.201.224.0/24子网(AS25092,OPATELECOM PE Tetyana Mysyk,乌克兰)
- 第二阶段的资源名称看起来是伪随机的,但始终是一个6到8个字符的大写字符串(例如JHKDSAG或ASDFRE)
URL遵循模式 n http://{C&C}:8852/{campaign}/{arch}。我们发现第二阶段二进制文件可用于多种体系结构,包括x86,ARM,MIPS,PowerPC甚至s390x。下载对应于受害主机体系结构的ELF文件后,使用ChaCha加密算法对其进行解密。ChaCha是Salsa20流密码 的继承者。两个密码都使用相同的常量expand 32-byte k 来设置初始状态; 下图显示了解密函数的开头:
两种算法之间的差异是初始状态的重新排列和四分之一轮的修改,这是由密码执行的核心操作。由于其四分之一轮中使用的特定轮换,我们可以识别ChaCha的使用,如下面的代码段所示:
用于ChaCha解密的密钥大小是256位,在我们收集的所有样本中,我们观察到使用相同的密钥。为了避免重新实现解密算法的痛苦,我们开发了一个基于Miasm的脚本来模拟解密函数。
一旦我们解密了第二阶段,它的输出似乎是LZMA压缩的,所以我们只是使用 了提取二进制文件lzma -d < output > second_stage.elf。
第二阶段
二进制本身比第一阶段大得多,这主要是因为嵌入式Lua解释器。Lua中的恶意软件是我们之前在Linux / Shishiga上看到的。第二阶段的目的是执行硬编码的Lua有效负载,定期下载任务。我们将任务视为第三阶段,因为任务基本上是要解释的Lua代码。在我们观察到的所有变体中,第二阶段使用与第一阶段相同的C&C服务器。第二阶段嵌入了许多Lua库(例如LuaSocket)来与硬编码的C&C服务器进行通信。
二进制文件的一些本机函数是公开的,因此可以从Lua代码中调用它们。以下屏幕截图显示了它们的导出方式,例如ChaCha加密功能。
Lua有效负载下载的任务是ChaCha解密(使用不同的加密密钥)并由Lua解释器执行。至于第二阶段,用于下载任务的URL似乎遵循特定模式,正如可以从以下代码片段中观察到的:
此外,有效负载应使用上面关于任务使用的屏幕截图中指定的URL发送一些统计信息; 但实际上,它只发送MAC地址和其他一些信息:
第三阶段(任务)
从我们能够收集的任务中,我们只观察了DDoS功能的实现。代码非常明确,主要包括调用函数对给定目标执行SYN DDoS攻击:
DDoS目标的IP地址144.0.2.180属于中国ISP。我们找不到任何明显的理由将此IP地址作为DDoS攻击的目标,因为似乎没有服务托管在该IP地址上。
Last-Modified 任务文件响应的HTTP响应头指示此目标自2018年9月24日起是相同的。它应该是可靠的,因为恶意软件使用If-Modified-SinceHTTP请求头以避免再次下载有效负载。
ASDFREM活动是唯一具有活动任务的活动。它类似,但针对中国的另一个IP地址:61.133.6.150。
结论
显然,ChachaDDoS与Xor.DDoS共享代码以实现其持久性机制。但它是来自同一作者还是ChachaDDoS作者只是偷了它?ChachaDDoS引起了我们的注意,因为它被VestaCP实例捕获,但是多个体系结构的二进制文件的存在表明其他设备(包括嵌入式设备)是这种威胁的目标。
这一事件也提醒人们,仅仅因为软件是开源的,它不一定是100%安全的。恶意软件仍然可以进入。恶意凭证窃取代码就在那里,每个人都可以在GitHub上查看,在发现它之前的几个月。我们同意它确实有助于发现漏洞 - 在这种情况下是事后验证 - 但这并不意味着我们应该仅仅因为它是开源的而盲目地信任某个产品。
ESET产品检测到这种威胁为Linux / Xorddos.Q,Linux / Xorddos.R和Linux / ChachaDDoS。
感谢Hugo Porcher对本次分析和撰写的帮助。
妥协指标(IoC)
第一阶段
第二阶段
参考
- https://carolinafernandez.github.io/security/2015/03/16/IptabLeX-XOR-DDoS
- https://blog.checkpoint.com/wp-content/uploads/2015/10/sb-report-threat-intelligence-groundhog.pdf
- https://grehack.fr/data/2017/slides/GreHack17_Down_The_Rabbit_Hole:_How_Hackers_Exploit_Weak_SSH_Credentials_To_Build_DDoS_Botnets.pdf