symbiote介绍
symbiote是主要针对linux系统的恶意软件,在2021年11月首次被发现,主要针对拉丁美洲的金融部门,业界普遍描述“几乎不可能被检测到”。该恶意软件可通过“寄生感染”系统感染所有正在运行的进程,并为威胁参与者提供rootkit功能、远程访问等。
由于symbiote隐藏了所有文件、进程,因此在受感染的机器上执行实时取证可能不会发现任何问题。除了rootkit之外,symbiote还为攻击者提供了一个后门,攻击者可以使用硬编码密码以机器上的任何用户身份登录,并以最高权限执行命令。目前,天融信edr、自适应安全防御系统、过滤网关系统、僵尸网络木马和蠕虫监测与处置系统,以及新版本的入侵检测系统、入侵防御系统等产品均可精准检测并查杀该恶意软件,防止威胁事件发生,提高终端环境安全。
接下来,一起揭晓symbiote是如何隐藏自己的~
样本分析
静态样本分析
symbiote是一种疑似针对拉丁美洲金融部门的linux平台rootkit,其使用了多种hook技术藏匿自身行为,具有较好的免杀性,主要功能是窃取登录凭据并在受感染机器上植入后门。
经历长时期的开发演进,目前symbiote较新的版本是名为search.so的64位elf共享目标文件。
它通过设置ld_preload环境变量的值,在程序运行前优先加载恶意动态链接库search.so,search.so在导出函数中劫持了多个库函数。
symbiote使用rc4算法加密所有字符串,密钥为hex数值“030f1513081609061c0a1a0d120217”,硬编码在elf的固定位置中。
所有被rc4加密的字符串的解密python3代码如下:
default_key = "\x03\x0f\x15\x13\x08\x16\x09\x06\x1c\x0a\x1a\x0d\x12\x02\x17"
def rc4(data, key=default_key, skip=0):
x = 0
box = list(range(256))
x = 0
for i in list(range(256)):
x = (x box[i] ord(key[i % len(key)])) % 256
tmp = box[i]
tmp2 = box[x]
box[i] = box[x]
box[x] = tmp
x = 0
y = 0
out = []
if skip > 0:
for i in list(range(skip)):
x = (x 1) % 256
y = (y box[x]) % 256
box[x], box[y] = box[y], box[x]
for char in data:
x = (x 1) % 256
y = (y box[x]) % 256
box[x], box[y] = box[y], box[x]
k = box[(box[x] box[y]) % 256]
out.append(chr(ord(char) ^ k))
return ''.join(out)
if __name__ == '__main__':
data = "\x24\xa3\x8a\x5a\xe7\x58\x82\x82\xf7\x2c\x44\xf1\x20\x67"
result = rc4(data, default_key, 0)
print(result)
动态调试分析
当调用被search.so文件hook的函数时,内存中才会动态加载恶意so文件,没有被hook的情况下会在libc-2.13.so中立即填充系统调用号进行syscall系统调用,而hook之后的原elf进行api调用时会通过一条jmp汇编指令跳转到search.so的导出函数中执行。
需要拦截的进程名称列表和文件名称列表分别存储在pth和fth变量指向的偏移,使用rc4算法在动态运行中解密并检验。
如下图所示是search.so被加载时动态解密出的隐藏文件名称,木马隐藏的所有进程列表和文件列表见附录部分。
规避技术分析
当使用ldd命令显示软件的依赖项时,环境变量ld_trace_loaded_objects会被设置为1,恶意软件挂钩execve函数并通过检测ld_trace_loaded_objects的值是否为1,进而决定是否执行拦截ldd命令的代码,从而在软件的依赖项中将自身去除达到隐藏目的。
symbiote在readdir和readdir64中实现了隐藏文件和隐藏进程,之后与动态加载重定向到pth的内存中存储的进程名称列表进行比较,如果存在列表中的进程名字,那么readdir和readdir64函数会直接返回。当管理运维人员使用ls命令时,无法查看到恶意so文件,但如果知道文件名称可以使用find命令暴露其位置。
在readdir和readdir64中同样实现了反跟踪。如果在进程中的cmdline中发现包含sh -c strace或者strace -s等与strace有关的命令参数,即启用了追踪功能,函数直接返回0。
通过hook一些linux可插入身份验证模块(pam)的函数如pam_authenticate、pam_set_item和pam_acct_mgmt实现对被感染机器的远程访问。当用户尝试使用pam服务(比如ssh远程服务)进行身份验证时,恶意软件会判断提供的密码是否为硬编码的数值而选择对应的处理方式。
隐藏流量的第一种方法:hook fopen和fopen64函数。
当应用程序尝试打开/proc/net/tcp文件时,恶意软件创建一个临时文件,读取文件内容时会按行匹配是否存在特定端口:43253、43753、63424、26424。如果匹配到就会跳过,否则,该行内容会被写入临时文件。当文件被扫描处理完时,恶意软件就会关闭临时文件句柄并将临时文件的文件描述符作为返回结果。从本质上讲,这样实现了通过hook fopen或fopen64的调用过程,隐藏了恶意软件想要隐藏的所有网络端口的连接条目。
隐藏流量的第二种方法:hook函数pcap_loop和pcap_stats。
symbiote通过hook函数pcap_loop和pcap_stats来完成这个任务,过滤掉包含列表中域名子字符串的udp流量。该方法用于过滤掉 udp 数据包,而以下的ebpf机制写字节码的方法用于过滤掉 tcp 数据包。
隐藏流量的第三种方法:ebpf机制。
ebpf(extended berkeley packet filter)起源于bpf,它提供了内核的数据包过滤机制。bpf的基本思想是对用户提供两种socket选项:so_attach_filter和so_attach_bpf,允许用户在sokcet上添加自定义的filter,只有满足该filter指定条件的数据包才会上发到用户空间。so_attach_filter插入的是cbpf代码,so_attach_bpf插入的是ebpf代码。ebpf是对cbpf的增强,目前用户端的tcpdump等程序还是用的cbpf版本,其加载到内核中后会被内核自动的转变为ebpf。linux 3.15 开始引入ebpf。其扩充了bpf的功能,丰富了指令集。它在内核提供了一个虚拟机,用户态将过滤规则以虚拟机指令的形式传递到内核,由内核根据这些指令来过滤网络数据包。
如下为在内核编译后的 ebpf汇编代码:
如下为以太网帧格式数据。正常情况下数据帧是从dst开始算起,12个字节(0xc)后即是长度或类型,ldabsh 0xc汇编指令即是将数据帧的类型字段加载到寄存器中。接下来jeq r0,0x86dd即判断协议类型是否为ipv6。
最后结合ipv6和ipv4的数据报格式,我们可以得知, ebpf汇编程序的最终目的是要通过校验数据帧中ip协议的源端口和目的端口是否为43253、43753、63424、26424之一,有的话则过滤结果特殊处理。
symbiote通过使用所有这三种方法,恶意软件可确保隐藏所有流量。
综上所述,symbiote的rootkit隐藏技术点可以归纳如下:
追溯关联
在互联网上可以发现之前作者在开发的symbiote旧版本文件,名称分别为kerneldev.so.bkp、mt64_.so。其中还有一个名为certbotx64是开源的dns隧道工具项目dnscat编译出的客户端,使用c语言编写。dnscat编译的服务器使用ruby语言编写,运行时依赖ruby和gem环境。
样本iocs列表
附录
防护建议
及时更新软件和系统以及打漏洞补丁,降低被symbiote病毒通过漏洞入侵的风险。
加强访问控制,关闭不必要的端口,禁用不必要的连接,降低资产风险暴露面。
更改系统及应用使用的默认密码,配置高强度密码认证,并定期更新密码,防止弱口令攻击。
可安装天融信安全产品加强防护,天融信edr系统、自适应安全防御系统、过滤网关系统、僵尸网络木马和蠕虫监测与处置系统,以及新版本的入侵检测系统、入侵防御系统等产品均可精确检测并查杀该恶意软件。
# 天融信edr系统防御配置
1、开启文件实时监控功能,有效预防和查杀该恶意软件;
2、通过任务周期性查杀,阻断恶意攻击行为,防护病毒攻击威胁;
3、通过内置的webshell后门库,对网站后门专项查杀,降低横向传播风险。
# 天融信自适应安全防御系统防御配置
1、开启病毒实时监控功能,可有效预防和查杀该恶意软件;
2、支持精准定位系统漏洞,事前及时修补,降低横向感染风险;
3、通过风险发现功能扫描系统弱口令,降低安全风险、减少资产暴露。
# 天融信过滤网关防御配置
1、升级到最新病毒特征库;
2、开启http、pop3、smtp、ftp、imap等协议的病毒扫描检测;
3、配置病毒检测处置策略;
4、开启日志记录和报警功能。
# 天融信僵尸网络木马和蠕虫监测与处置系统检测配置
1、升级威胁情报库版本;
2、开启威胁情报-恶意文件检测功能,可有效检测该恶意软件。
# 天融信入侵检测系统新版本检测配置
1、购买威胁情报库功能模块;
2、开启威胁情报-恶意文件检测功能,可有效检测该恶意软件。
# 天融信入侵防御系统新版本防护配置
1、购买威胁情报库功能模块;
2、开启威胁情报-恶意文件检测功能,可有效防御该恶意软件。
产品获取方式
● 天融信edr系统企业版、天融信自适应安全防御系统、天融信过滤网关、天融信僵尸网络木马和蠕虫监测与处置系统、天融信入侵检测系统、天融信入侵防御系统试用:可通过天融信全国分支机构获取(查询网址:
http://www.topsec.com.cn/contact/)
● 天融信edr系统单机版下载地址:http://edr.topsec.com.cn
● 天融信过滤网关系统病毒库下载地址:ftp://ftp.topsec.com.cn/防病毒网关(top-filter)/病毒库脱机升级包/
● 天融信威胁情报库下载地址:ftp://ftp.topsec.com.cn/天融信下一代入侵防御系统(ngidp)/威胁情报库/ ti-v2022.09.05.005.tor
topsec
恶意软件影响数据及程序的安全性,对各政企单位网络安全及社会秩序造成严重危害。作为中国网络安全、大数据与云服务提供商,天融信多年深耕网络安全防护领域,积淀丰富的技术与产品能力,并不断推陈出新,持续助力国家网络安全健康发展。
天融信谛听实验室
谛听实验室是天融信科技集团的病毒分析和响应团队,汇聚专业病毒分析与研究人员,致力于终端恶意代码的逆向分析、威胁预警、追本溯源、反病毒技术等安全研究和威胁发现,为集团全系产品提供全面的技术支撑和漏洞分析响应。
- 关键词标签:
- 天融信edr 自适应安全防御系统 过滤网关系统 僵木蠕系统 精准查杀symbiote