RotaJakiro 双头龙,一个至少潜伏了3年的后门木马

版权版权声明:本文?.NETlab原创,依据 CC BY-SA 4.0 许可证进行授权,转载请附上出处链接及本声明 。
概述2021年3月25日,360 NETLAB的BotMon系统发现一个的VT 0检测的可疑ELF文件(MD5=64f6cfe44ba08b0babdd3904233c4857),它会与4个业务类型截然不同的域名进行通信,端口均为TCP 443(HTTPS),但流量却并非TLS/SSL类型,这个异常行为引起了我们的兴趣,进一步分析发现它是一个针对linux X64系统的后门木马,该家族至少已经存在3年但目前还是0检测 。基于该家族使用rotate加密,并且运行后对root/non-root账户有不同的行为,犹如一只双头龙,一体双向,我们将它命名为RotaJakiro
RotaJakiro隐蔽性较强,对加密算法使用比较多,包括:使用AES算法加密样本内的资源信息;C2通信综合使用了AES,XOR,ROTATE加密和ZLIB压缩算法 。指令方面,RotaJakiro支持12种指令码,其中3种是和特定plugin相关的,遗憾的是目前我们并没有捕获到这类payload,因此并不知道它的真正目的 。从广义的后门角度来看,RotaJakiro支持的功能可以归纳成以下4类:

  • 上报设备信息
  • 窃取敏感的信息
  • 文件/Plugin管理(查询,下载,删除)
  • 执行特定的Plugin
当所有分析结束后,我们尝试对RotaJakiro进行溯源,根据解密后的资源以及编码的风格的相似性,我们推测它是Torii Botnet作者的又一作品 。
潜伏了多少?【RotaJakiro 双头龙,一个至少潜伏了3年的后门木马】我们从捕获的样本出发,寻找RotaJakiro同源者,最终发现了以下4个样本,它们在VT上都是0检测,从VT的First Seen时间来看,RotaJakiro至少已经存在了3年 。
FILENAMEMD5DETECTIONFIRST SEEN IN VT systemd-daemon1d45cd2c1283f927940c099b8fab593b0/612018-05-16 04:22:59systemd-daemon11ad1e9b74b144d564825d65d7fb37d60/582018-12-25 08:02:05systemd-daemon5c0f375e92f551e8f2321b141c15c48f0/562020-05-08 05:50:06gvfsd-helper64f6cfe44ba08b0babdd3904233c48570/612021-01-18 13:13:19 这批样本都内嵌了以下4个C2,目前它们在VT上也是0检测 。这4个C2域名有非常接近的Crteated Updated Expired时间,我们推测它们一直以来用于同一个业务,从这个角度来看,RotaJakiro背后的团伙至少已经活动了6年 。
DOMAINDETECTIONCREATEDLAST UPDATEDEXPIRED news.thaprior.net0/832015-12-09 06:24:132020-12-03 07:24:332021-12-09 06:24:13blog.eduelects.com0/832015-12-10 13:12:522020-12-03 07:24:332021-12-10 13:12:52cdn.mirror-codes.net0/832015-12-09 06:24:192020-12-03 07:24:322021-12-09 06:24:19status.sublineover.net0/832015-12-09 06:24:242020-12-03 07:24:322021-12-09 06:24:24 逆向分析4个RotaJakiro样本,时间分布从2018到2021,它们的功能非常接近,本文选取2021年的样本为分析对象,它的基本信息如下:
MD5:64f6cfe44ba08b0babdd3904233c4857ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, strippedPacker:No从编码层面来说,RotaJakiro采用了动态AES,双层加密的通信协议等技术来对抗安全人员的二进制&网络流量分析 。
从功能层面来说,RotaJakiro运行时首先会判断当时用户是root,还是non-root,不同的账户有不同的执行策略,然后使用AES&ROTATE解密出相关的敏感资源供后续的持久化,进程守护和单一实例使用,最后和C2建立通信,等待执行C2下发的指令 。
下文将从上述角度出发剖析RotaJakiro具体实现 。
样本对抗技巧
  • 动态生成AES加密算法所需的常量表,防止算法被直接识别
    RotaJakiro 双头龙,一个至少潜伏了3年的后门木马

    文章插图
  • 使用stack strings obfuscation技术存储加密的敏感资源信息
    RotaJakiro 双头龙,一个至少潜伏了3年的后门木马

    文章插图
  • 使用双层加密的网络通信
加密算法RotaJakiro中所有的敏感资源都是加密的,在IDA中我们可以看出解密方法dec_proc调用了60次,它是由AES,Rotate俩部分组成 。
RotaJakiro 双头龙,一个至少潜伏了3年的后门木马

文章插图
AES解密入口如下所示:
RotaJakiro 双头龙,一个至少潜伏了3年的后门木马

文章插图
其中aes_dec的采用的是AES-256, CBC模式,key&iv都是硬编码 。
  • key
    14 BA EE 23 8F 72 1A A6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  • iv
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Rotate解密入口如下所示:
RotaJakiro 双头龙,一个至少潜伏了3年的后门木马

文章插图
所谓Rotate即循环移位,可以看出此处使用的循环左移,其中移位的次数由


推荐阅读