Linux后门RedXOR

VSole2021-11-24 06:20:12

一、简介

RedXOR是一个针对Linux终端和服务器的新的复杂后门程序,在2021年2月24号首次在VT上被上传以及发现。这些样本在 VirusTotal 中的检测率较低,且大多是从印度尼西亚和台湾上传的。RedXOR使用名为Adore-ng的开源LKM rootkit来隐藏其进程。

二、行为分析

首先调用fork函数,创建子进程并让父进程直接退出,使父进程被init接管成为僵尸进程去执行以后的操作。通过判断用户是否为root用户还是普通用户,选择用户根目录下创建一个“.po1kitd.thumb”隐藏目录。

接着分析AddAuto函数,使用readlink读取当前进程的源路径可以获取当前程序的绝对路径。如果当前进程的二进制文件不叫”po1kitd-update-k“,则重命名为它。

在创建一个名为”po1kitd-update.sh“的shell脚本,内容为用sh来执行”.po1kitd-update-k“文件,设置为开机执行,并在之后执行它。

尝试rootkit,通过insmod命令将“po1kitd.ko”文件中的内容加载到内核中。

通过在/proc目录下创建po1kitd文件再删除,判断KLM rootkit是否已经生效。根据Google知道该RAT使用的rootkit是开源的adore-ng(“CheckLKM”逻辑几乎与“adore-ng”rootkit中的adore_init函数相同)。而在adore-ng中,已经hook掉了具体proc文件系统的lookup回调函数为adore_lookup,将隐藏进程的操作放到该lookup中。创建文件的目的不是创建一个新文件,而是希望使执行流到达lookup调用。如果文件的uid和sid被设置成实现约定好的id,那么就说明该文件要隐藏。然后,该RAT将进程的suid与uid进行比较,如果不匹配或者uid为“10”,则rootkit生效了。

离开AddAuto函数,回到main函数,跟进hide_proc函数。

根据之前的分析,我们可以知道这里调用open函数是为了触发adore_lookup调用,而adore-ng发现文件的前缀为”hide-“就调用hide_proc函数,根据pid隐藏进程,从而实现进程隐藏。

该RAT将C2地址、端口、验证的用户名和密码配置存储在可执行二进制文件中。配置值由“doXor”函数解密,解密逻辑是针对字节的简单异或。其中ServerIP和Password处于被加密状态,经过doXor为解密状态,而ProxyServer、ProxyUser和ProxyPwd因为不需要用到则是相反。它们解密后的明文内容如下图所示。

main_process函数是该RAT的主要逻辑。若ServerIP与LastIP不同,则调用write_hidden_ip函数将ServerIP加密后的内容存储到“/var/tmp/.po1kitd-k3i86dfv”文件中,并复制到LastIP中。接下来便是连接C2服务器了。

该RAT使用tcp进行通信,但是通过自己定义使用类似http的形式交互。对于数据部分,该RAT使用待传数据的长度对数据进行异或后再发送。

先获取Content-Length等数字信息,之后根据这些值来接收对应长度的内容。这部分接受的数据以128个字节为处理单元,通过analysisData函数负责处理来获取整型数字或长整型。之后接收到的数据需要通过doXor函数进行解密。

后接收到的数据内容中,前两个字节为命令代码。因为一共有19个命令,这里只选其中几个介绍,其他的命令参考下文的列表。

调用Portmap函数,把RPC程序号转化为Internet的端口号。

pty 模块定义了处理伪终端概念的操作:启动另一个进程,并能够以编程方式对其控制终端进行写入和读取。创建管道,使用pty打开一个shell,通过管道来实现与shell交互。

向管道写入要执行的命令,shell的读端会收到命令并执行。

通过调用getFSYYSData函数获取目录信息,getFSYSData函数主要是通过directory函数进行信息获取和整理的,directory函数细节如下图所示。

该RAT通过调用uninstall函数擦除痕迹。

命令代码功能如下:

1. 0         调用get_sys_info函数,获取系统信息
2. 8         向文件写入一个字节的内容,并当写入长度达到要求时给文件“chmod 0777 ”
3. 9         结束进程,擦除痕迹
4. 1010  调用install_LKM函数,安装LKM rootkit
5. 2049  调用getFSYSData函数,列出目录及目录内文件的信息
6. 2054  调用send_download函数,上传文件
7. 2055  fopen,以“ab”或“wb”的形式打开文件
8. 2056  system,直接调用system执行传过来的命令 
9. 2058  remove,删除文件
10. 2059  rename,重命名文件或目录
11. 2060  rmdir,删除目录
12. 2061  功能与2059相同
13. 2062  mkdir,创建目录
14. 2066  fwrite,将数据写到某个文件
15. 3000  pty.spawn('/bin/sh'),打开一个shell
16. 3058  write,借由管道将要执行的命令写入到shell中执行
17. 3999  szShellClosed = 1,关闭shell
18. 4001  调用Portmap函数,把RPC程序号转化为Internet的端口号
19. 4002  kill portmap创建的进程,关闭portmap

三、IOC

样本名称:.po1kitd-update-k

来源:https://www.tutorialjinni.com/download-redxor-backdoor-sample-1/0a76c55fa88d4c134012a5136c09fb938b4be88a382f88bf2804043253b0559f.py

MD5:2bd6e2f8c1a97347b1e499e29a1d9b7c

SHA-1:33b25277b4bc49e565bdabf2232b7c1412ce2796

SHA-256:0a76c55fa88d4c134012a5136c09fb938b4be88a382f88bf2804043253b0559f

C2地址:158.247.208.230

四、总结

如果发现在用户根目录下存在".po1kitd.thumb"的目录,则该主机可能已经被控制了。受害者可以通过杀死来自“.po1kitd-update-k”二进制文件的进程,删除".po1kitd.thumb"和"/var/tmp/.po1kitd-k3i86dfv"目录,以及检查“/etc/init.d/”和"/usr/syno/etc/rc.d/“目录中是否存在名为“po1kitd-update.sh”的文件,若有则删除。还要将已经加载的Adore-ng rootkit从内核中卸载下来。最后还要查看系统日志,查看“.po1kitd-update-k”程序是否有在其他地方创建文件或目录,及时清除,确保擦除所有痕迹。

函数调用linux服务器
本作品采用《CC 协议》,转载必须注明作者和本文链接
又一天,又一个针对 Linux 系统的恶意软件威胁!NoaBot和Mirai之间的一个显着区别是,僵尸网络不是针对DDoS攻击,而是针对连接SSH连接的弱密码来安装加密货币挖掘软件。
陈驰 ,2017年加入美团,目前主要负责IDC服务器的检测防御产品研发,完善服务器侧纵深防御体系建设。 杨一 ,2017年加入美团,目前主要负责HIDS主机安全产品研发工作。 胡鑫博 ,2021年加入美团,目前主要负责HIDS Agent的研发。 前言
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 如果文章中的漏洞出现敏感内容产生了部分影响,请及时联系作者,望谅解。
不可中断状态实际上是系统对进程和硬件设备的一种保护机制。当负载存在明显升高趋势时,及时进行分析和调查。系统调用过程中并不会涉及虚拟内存等进程用户态资源,也不会切换进程。因此系统调用通常称为特权模式切换。进程是由内核管理和调度的,进程上下文切换只能发生在内核态。因此相比系统调用来说,在保存当前进程的内核状态和CPU寄存器之前,需要先把该进程的虚拟内存,栈保存下来。
本篇文章通过 网络架构层、HTTP协议层、第三方应用层讲解了绕过WAF的常见方法一、网络架构层一般通过域名指向云WAF地址后反向实现代理,找到这些公司的服务器的真实IP即可实现绕过具体方法如下:1、查找相关的二级域名及同一域名注册者的其他域名解析记录。ISASP支持类似Unicode%u0027的编码,还会对不合法的URL编码进行字符删除。
今年初,Akamai 的研究人员发现了一个新型恶意僵尸网络,它以 Realtek SDK、华为路由器和 Hadoop YARN 服务器为目标,将设备引入到 DDoS 群中,有可能进行大规模攻击。这个新型僵尸网络是研究人员在自己的 HTTP 和 SSH 蜜罐上发现的,该僵尸网络利用了 CVE-2014-8361 和 CVE-2017-17215 等漏洞。
命令注入漏洞如何让攻击者接管机器,以及如何防止这些漏洞。命令注入漏洞可能是应用程序中可能发生的最危险的漏洞之一。当用户输入在没有适当预防措施的情况下直接连接到系统命令中时,就会发生这种情况。让我们用一个例子来理解。在代码中调用系统命令假设Web应用程序具有允许用户通过站点下载网页的功能。要实现此功能,可以使用Python执行系统命令wget来下载网页。
SMB协议可在互联网的TCP/IP协议或者互联网数据包交换和NetBEUI等协议之上使用。使用SMB协议,应用程序可访问远程服务器的文件以及打印机、信槽和命名管道等资源。RemoveLegacyFolder就是采用思路2来移除经典路径..\的,向前搜索的过程存在风险,并且对其边界检查无效,从而导致了缓冲区溢出的产生。
Satacom下载程序,也称为LegionLoader,是2019年出现的一个著名的恶意软件家族。该恶意软件利用查询DNS服务器的技术获取base64编码的URL,以便接收当前由Satacom传播的另一恶意软件家族的下一阶段。
我们发现了一个路径遍历漏洞(CVE-2022-24716),该漏洞可被滥用以泄露服务器上的任何文件。它可以在没有身份验证和事先不知道用户帐户的情况下被利用。我们还发现了CVE-2022-24715,它会导致从管理界面执行任意PHP代码。
VSole
网络安全专家