标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2024-2364] 作者: Taber 发表于: [2019-04-16]
本文共 [1079] 位读者顶过
最近,F5 Networks威胁研究人员发现了一起利用2014年爆出的漏洞来传播集成XMR挖矿模块的恶意软件,从而对Elasticsearch系统进行攻击的新威胁活动。 [出自:jiwo.org]
我们将此活动命名为CryptoSink,在分析中,我们发现了一种以前从未见过的攻击手法,攻击者使用这种方法来杀死感染主机上的竞争对手,并通过修改Linux remove(rm)命令的方式更隐蔽驻留在服务器上。
初始感染途径该攻击起始于一些运行在Windows或Linux上的Elasticsearch发出的恶意HTTP请求。 Windows Payload在下载Windows payload时,调用了系统自带的certutil命令从攻击者服务器下载恶意可执行文件,用于对SSL证书进行操作。这种操作在威胁活动中很普遍。 图1:含有Windows payload的HTTP请求 下载的名为nvidia.exe 的文件是一个XMR挖矿程序。 图2:VirusTotal中,53款杀软监测出了nvidia.exe Linux Payload与Windows相比,Linux payload涉及多个步骤。首先,和其他威胁活动一样,调用Linux中现有的curl或wget命令下载并执行名为ctos.sh的bash脚本。 图3:含有Linux payload的HTTP请求 然后,bash脚本将检查主机是否已经是僵尸网络的一部分,如果没有,则下载名为initdz2的二进制恶意软件。 图4:initdz2是一个ELF 64位可执行文件
定制化Linux Dropper由C++编写的initdz2为dropper文件,用来下载并部署其他恶意软件。 图5:Linux系统下恶意文件执行流程 除了下载其他二进制文件外,该dropper还包含其他很多功能。幸运的是,通过攻击者在二进制文件中留下的特征,有效的降低了研究人员进行逆向分析的难度。 图6:initdz2恶意软件的主要功能 Dropper 检测率不可思议的是,在VirusTotal中,该文件并未被标记为恶意文件。(截止目前为止) 图7:防病毒引擎并未检测出该Dropper 在VirusTotal中检索域名w.3ei.xyz相关的威胁情报信息时,可以看到正是从这里下载了初始恶意脚本及dropper文件。除此之外,还看到了一个名为initdz的文件,看起来应该是先前版本的dropper文件。 图8:VirusTotal列出了w.3ei.xyz域名下的文件 再检查一下VirusTotal,可以发现通过链接检索和直接上传文件,将产生不同的分析结果。通过链接检索,一些防病毒软件会将其判定为恶意,而直接上传样本,则并未被标记(如上文图7所示)。 图9:通过链接提交文件,VirusTotal检测结果更准确
随机C&C为了能在域名被标记后继续存活,该dropper中硬编码了3个域名,会对其逐个解析,直到找到可用的域名为止。 域名:
截至目前,只有域名“w.3ei.xyz”可用。 图10:dropper逐个解析硬编码的三个域名 可以查到该域名解析地址为中国。 图11:C&C服务器位于中国
消除竞争在如今的僵尸网络挖矿大战中,感染主机的CPU资源是最关键的因素。目前,一般攻击者会通过扫描进程名或者检测CPU利用率最高的进程的方式来找到其他挖矿进程,从而杀死该进程,消灭竞争者。 而在此案例中,攻击者使用了一种很巧妙的策略使得竞争者们陷入瘫痪。我们将这种手法称为“CryptoSink” ,因为它会通过修改”etc/hosts”文件,将指外部矿池地址的通信解析到localhost(127.0.0.1)。这样一来,其他挖矿进程连接不到矿池,不能启动,自然会释放出占用的系统资源。 图12:将竞争者矿池指向127.0.0.1 图13:被修改的/etc/host文件 需要注意的是,pastebin.com,thyrsi.com以及zer0day.ru,似乎并非常见的矿池地址。 根据历史记录,可以查到zer0day.ru曾拥有2个子域名,其中pool.zer0day.com看起来是矿池。并且使用了pastebin.com作为C&C通道,从而隐蔽了矿工与真正C&C的通信。而根据我们今年1月29 日发现的扫描结果显示,thyrsi.com是曾托管Windows木马的恶意域名。 图14:zer0day.ru在VirusTotal上的检测结果 图15:JoeSandbox对托管在thyrsi.com的恶意软件进行分析
安装后门为了保证随时可以访问受害者主机,CryptoSink dropper采取了2种策略来完成持久化。第一种是攻击者的SSH密钥添加到受害者主机的authorized_keys 文件中。这种情况下攻击者可以通过SSH直接连接进入受害者主机。 图16:将SSH密钥添加到受害者主机 然后dropper会下载另外2个二进制文件,第一个是migrations,用来监视第二个文件httpdz是否执行。 图17:监视程序用来执行后门 httpdz是另一个用C++编写的,具有后门功能的木马。和dropper一样,他使用TCP套接字对3个硬编码的C&C域名进行轮询。它的功能实现非常简单,会通过预先定义不同ASCII代码来执行以下操作:
有趣的是,这个后门VirusTotal也未能识别。 图18:截至目前VirusTotal未识别这个二进制后门
持久驻存CryptoSink使用了不同的技术来实现在感染主机的长久驻存。它创建了一个定时任务,每隔很短一段时间,便下载并运行2个很小的恶意bash脚本(init.sh及crontab.sh)。名为init.sh的脚本与前文提到的ctos.sh功能类似,而截至目前,crontab.sh的内容为空。 图19:下载和执行bash脚本的定时任务 第二个实现持久性的方法是创建一个服务,该服务会在不同的事件(例如系统重启)后运行dropper文件。 图20:CryptoSink恶意软件添加了新服务 图21:服务正在运行dropper
狸猫换太子为了防止恶意软件被清理,CryptoSink采用了更为隐蔽的持久性方法。它将原始的rm二进制文件(即Linux“remove”命令)重命名为rmm,而将其替换为从其C&C服务器下载的名为rm的恶意文件。 图22:dropper中用于替换rm命令的代码 现在,用户每次执行rm命令时,首先,伪造的rm文件会随机的决定是否执行恶意代码,然后才会调用真正的rm命令(即被更名为rmm的文件)。rm二进制文件中恶意代码会检查定时任务cronjob是否存在,若不存在,将再次添加。 图23:负责调用真正“rm”命令的代码 有趣的是,即使受感染主机的管理员检测到了其他恶意文件,在用rm命令将其删除时,恶意软件又被重新安装了回来。并且rm命令是随机执行恶意代码,这会让管理员在查找机器重新感染的原因时非常抓狂。 图24:恶意rm代码实现随机化执行
Linux 挖矿最后,dropper会部署XMRig 挖矿代理,并对钱包地址等硬编码信息进行配置。 图25:XMRig硬编码配置 XMRig挖矿代理使用的是公开矿池,我们可以通过钱包地址来查看此挖矿节点的数量及收入。 图26:钱包地址 钱包地址:4DSQMNzzq46N1z2pZWAVdeA6JvUL9TCB2bnBiA3ZzoqEdYJnMydt5akCa3vtmapeDsbVKGPFdNkzqTcJS8M8oyK7WGijzKrMTGkC671HT6 图27:截至目前该钱包的挖矿收入 在攻击者的文件服务器中,我们发现了他在早期挖矿代理中使用的另一个钱包地址。 钱包地址: 448aZSQhyDBCZokwmVd5HG5Gp7UrAeLVuVmZbKcs4rTZTx1UXGECxbePXha3qncffYYhJjG5FRGxM1scV9dbN62VCGiPdtQ 图28:另一个钱包的挖矿收入 由于攻击活动开始不久,所以利润不是非常大,大约在4500美元左右。
总结加密僵尸网络的兴起与加密货币价值的下降使得竞争更加激烈。攻击者采用了更加创新的策略来干掉竞争者,获得更多的CPU资源,并保持在感染服务器的长期驻存。然而,这个攻击者所使用的sinkholing技术,也为安全人员带来了新的防御思路。但是,为了避免最初的感染,不论是代码层面还是Web应用防火墙层面,都应该制定更加有效的修补过程。 |