Dota Campaign:分析一款挖矿与后门并存的木马

2019-07-03 63937人围观 ,发现 1 个不明物体 WEB安全

就在前不久,我自己部署的一个蜜罐受到了一次特别严重的攻击,其中涉及到了两个远程访问工具和一个加密货币恶意挖矿文件。接下来,我将在这篇文章中跟大家分析一下这一波攻击,并看看攻击者所使用的攻击技术。值得一提的是,现在的互联网中这类攻击每秒钟都会发生一次。

初始感染

根据攻击文件的内容,我将此次攻击命名为了“Dota Campaign”。在此攻击活动中,攻击者通过弱SSH凭证获取到了目标设备的初始访问权。我的SSH蜜罐所使用的用户名和密码均为salvatore,下面给出的是我SSH日志的初始登录数据:

完成认证之后,攻击者立刻通过SSH执行了系统命令,而且所有命令都是通过实际的SSH命令传递进来的,因为我的系统是一个安装了自定义OpenSSH版本的蜜罐,所以我们可以查看到攻击者执行的命令:

首先,攻击者通过HTTP向主机54.37.70[.]249请求了一个名为.x15cache的文件,然后在等待了10秒钟之后执行了该文件。除此之外,攻击者还将用户密码修改为了一个随机字符串。.x15cache文件的内容如下:

由此看来,.x15cache文件应该只是一个负责设置环境的Dropper,它还会获取主机54.37.70[.]249中的其他文件。第二个文件名叫dota2.tar.gz,这个tar文件包含的是一段恶意代码,目录名为.rsync。我用我的文件检测脚本提取了该文件中的部分内容:

.x15cache脚本会切换到这个.rsync目录中,然后尝试执行./cron和./anacron文件。攻击者使用了“||”或语句来让./cron文件先执行,如果执行失败则执行./anacron。.rsync目录中还有一个文件,这个文件似乎从来不会运行,我们一起看一看:

i686架构针对的是32位环境,x86_64架构针对的是64位环境。如果cron是64位代码,那么anacron就是32位的了。运行之后我们也证实了这一点:

因为这两个文件其实做的是同一件事情,所以我们只需要分析其中一个就可以了。

分析cron代码

我们先通过strings命令收集一些基本信息,其中的“cryptonight”字符串吸引了我的注意:

实际上,CryptoNight是一种工作量证明算法,它可以适用于普通PC的CPU,但它不适用于专门的挖矿设备,所以CryptoNight暂时只能用CPU挖矿。

得知它跟挖矿有关之后,我们看看strings命令还能找到些什么:

上图为xmrig命令的帮助页面,而它是一款针对门罗币的CPU挖矿软件。除此之外,我们还捕捉到了编译时间信息:2019年5月3日,也就是上个月。

接下来,我们一起分析一下网络流量。我们可以看到代码跟新的主机5.255.86[.]129:80建立了连接:

运行tcpdump捕捉流量后,我们用Wireshark对其进行了分析:

客户端会向服务器发送一些json数据,而且这里还包含了XMrig参数以及cn参数(CryptoNight)。

攻击第二阶段

在运行了上述命令之外,攻击者还会在几秒钟之后运行另一波命令:

这一次,攻击者的操作目录为/dev/shm,并从之前的主机54.37.70[.]249获取rp和.satan这两个文件,。接下来,攻击者会尝试运行sudo命令来获取root权限,然后以root权限感染.satan脚本。.satan文件内容如下:

这个satan脚本首先会创建一个名为srsync的系统服务文件,然后自动运行。srsync服务会调用脚本/usr/local/bin/srsync.sh,而srsync.sh脚本会运行rsync.pl在这个perl脚本以及ps.bin代码文件。rsync.pl脚本来自于/dev/shm/rp,会跟.satan脚本一起从服务器传送过来,并使用wget命令获取ps.bin代码文件(来自于主机54.37.70[.]249)。需要注意的是,在恶意挖矿软件中,攻击者使用了crul作为wget的备用命令,

分析ps.bin文件

简单分析后,我发现ps.bin是实际上是一个32位代码文件:

使用strings搜索之后,我发现代码提到了ssh,所有我又用grep命令搜索了“ssh”:

我首先注意到的是一个用于向~/authorized_keys文件添加RSA密钥的系统命令,实际上这就是在创建一个SSH后门,因为攻击者可以使用关联的RSA私钥来实现账号认证。随后我还发现了大量跟ssh有关的内容,原来这些都属于函数名称:

就此看来,我们面对的就是一个纯SSH后门了。

代码分析

首先,我们看一看后门代码中的IP地址:

而且变量名明显为西班牙语,emmmm…..

接下来,定位到软件主函数的循环:

它主要负责持续监听IRC服务器发送过来的命令,parse函数用来判断命令内容:

我还注意到了一个针对shell函数的调用:

$comando指的就是系统命令了,看来这又是第二个后门,而这个后门基于的是IRC信道。我们可以通通过netstat命令来查看信道的连接和建立:

设置好tcpdump命令后,运行perl脚本,然后通过WireShark分析流量,下面给出的是完整的TCP数据流:

这是标准的IRC流量,客户端会持续获取用户名,成功之后便会加入一个##root信道,而且服务器端还是2019年5月7日创建的。

值得一提的是,这里面似乎还嵌入了一部分DoS攻击代码:

入侵威胁指标IoC-哈希(MD5)

.satan: 36e692c1e58b53f54ae4966d15fdfa84

rsync.pl: 52a422722c479d8c5483d2db9267e4cd

ps.bin: 04d0658afae3ea7b0fdaf6a519f2e28c

dota2.tar.gz: 2cfb1ad304940ae7e3af954d5c1d1363

.x15cache: 6d6fb279bb78b25413a441e4bfd3ded9

cron: fdb085727694e327c8758061a224166b

anacron: 2c15d9bcd208c9446b14452d25d9ca84

* 参考来源:kindredsec,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

相关推荐
发表评论

已有 1 条评论

取消
Loading...

特别推荐

推荐关注

活动预告

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php