freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Linux终端注意了!隐蔽性更强的后门木马Rmgr来了
深信服千里目安全技术中心 2021-09-22 11:07:30 402694

背景概述

深信服终端安全团队近期捕获到一个后门木马样本,是一个64位的Linux内核模块,根据代码中出现的关键词将其命名为Rmgr木马。该木马病毒会连接恶意域名,隐藏本身的进程,并对终端植入后门,用于后续进行其他入侵行为。

经过研究人员分析,木马包含如下几个文件:

执行流程

木马的母体文件只有 rmgr.ko 这一个文件,通过 insmod 命令装载到内核模块后开启运作,逐步释放木马的其他组件部分。木马本身作为一个内核模块,具有ring0的权限,可以从内核层面实现隐藏进程、文件、端口等操作,相较于ring3具有更强的隐藏能力。

样本分析

rmgr.ko 分析

1、隐藏自身模块

模块隐藏对自身进行了隐藏处理:

其代码效果等同于如下:

list_del(&THIS_MODULE->list); //实现 lsmod 的隐藏

kobject_del(&THIS_MODULE->mkobj.kobj); //实现 /sys/modules 的隐藏

随后还通过底层替换 /proc/modules 文件的show函数过滤了ati_remote3模块的显示

2、隐藏进程加载模块

我们在使用诸如 cat /proc/PID/maps 这样的指令查看进程加载的模块时,底层会调用到 seq_path 函数,木马则使用了 register_kretprobe 技术对 seq_path 实施了监听,只要检测到路径为 /tmp/.tmp_ 开头的模块则将其信息隐藏,可实现 /proc/PID/maps 中木马模块的隐藏。

3、隐藏文件

木马通过hook的方式替换了 sys_getdents 系统调用,然后执行如下流程:fake_sys_getdents -> vfs_readdir -> fake_filldir

fake_filldir 函数中可以看到模块隐藏了/proc/[PID]、/tmp/.tmp_*、模块自身以及所释放的数个文件,使用 ls 命令就再也看不到这些文件了;

只有在明确知道文件名的情况下才能看到被隐藏的文件,增强了木马的隐蔽性。

4、隐藏端口

木马还替换了 /proc/net/tcp 文件的 seq_show 函数,隐藏 6825/6826/6821/6822 端口。

5、内核与用户态进程间通信

木马病毒创建 /proc/.dot3 文件用于接受用户态进程的指令;

在 proc_create_data 的第四个参数中,/proc/.dot3 文件的写入和读取操作分别由 dot_write 和 dot_open 控制;

查看 dot_write 的内容,通过switch case分支条件可以看出外部进程对 /proc/.dot3 写入不同的内容可以实现不同的功能:

这里是总结出来的功能列表:

• 8字节长度指令

– 0xFF11 = 向木马内核模块注册写入该命令的进程,该进程及子进程将会受到内核的保护

– 0x55AA = 更新木马内核模块的文件信息

– 0x66BC = 控制C2服务器的交互频率

– 0x66BD = 向指定进程注入rmgr_inject.so文件,替换部分C库函数

– 0x66BE = 取消0x66BD指令

• 40字节长度指令

– 0xA43F = 查看 rmgr_inject.so 文件的路径

– 0xA45F = 更新 rmgr_inject.so 文件的路径

– 0xF33F = 更新 rmgr.elf 文件的路径

– 0xF34F = 查看 rmgr.elf 文件的路径

• 其他非指令数据

– 直接存入内核缓冲区,其内容可以通过直接读取 /proc/.dot3 文件获得

查看/proc/.dot3 的的读取部分,其实际是由 dot_show 函数实现:

dot_show 的操作:

木马病毒在读取的进程上做了限制,只允许 rmgr.elf 进程读取,而所读取到内容即是前面提到的向 /proc/.dot3 中写入的非指令数据。

6、启动内核线程

木马病毒在完成前面的工作后,启动 dot_thread 线程;

然后释放 rmgr_inject.so 和 rmgr.elf 文件,并使用 /bin/chmod 命令赋予了 755 权限;

随后以 [khelper] 为名称启动了 rmgr.elf 进程。

rmgr_inject.so 分析

rmgr_inject.so 是一个动态链接库,可以通过LD_PRELOAD环境变量及/etc/ld.so.preload等方式注入到普通进程中,达到替换C库函数的目的;

rmgr_inject.so 替换了 bash_add_history 函数,将用户执行过的命令一一记录,储存到/proc/.dot3文件中,可供将来发回C2服务端;

同时监控 ss 指令,隐藏26660/26661/26662/26657/26658/26659这几个端口。

rmgr.elf 分析

rmgr.elf加了UPX壳,脱壳后的函数列表如下:

可以看出该二进制文件是由C++编写的。经过分析后得知该文件包含两个类,rmgr_client类处理与C2服务器的交互,sshd_client类处理与sshd后门的交互。

1、利用内核模块隐藏进程

进程启动后首先第一件事就是向 /proc/.dot 写入 0xFF11 指令获得保护,利用rmgr.ko 的ring0权限隐藏自身进程以及子进程。

2、与C2服务器通信

随后与 hm2.yrnykx.com C2服务器进行连接,等待指令;

rmgr_client::handle_read_body 函数负责处理C2服务端发来的命令;

这里整理了一份可供C2服务端调用的功能指令,列表如下:

• 0x1000F = 从C2服务端下载更新木马的所有组件

• 0x10008 = 未知功能

• 0x1000A = 创建一个新的sshd后门会话

• 0x1000B = 关闭指定的sshd后门会话

• 0x10004 = 读取 /proc/.dot3 中储存的内容,发往C2服务器

• 0x10007 = 接收文件

• 0x10011 = 启动sshd后门

• 0x10012 = 停止sshd后门

• 0x10010 = 暂停sshd后门

其中比较值得注意的是,收到0x10011指令后,rmgr.elf会从自身释放出 rmgr_sshd.elf 后门文件并启动,这是个被修改过的openssh服务,后面会有这个文件的分析;

创建好ssh后门后(监听地址是127.0.0.1:26657),C2服务端便可使用 0x1000A 指令连接,此时C2服务器和ssh后门的流量会通过sshd_client类进行处理和转发;

rmgr.elf 还存在下载替换 /usr/sbin/sshd、/usr/bin/ssh、/lib/modules/%s/kernel/drivers/input/misc/ati_remote3.ko、/etc/sysconfig/modules/ati_remote3.modules 文件的行为。

rmgr_sshd.elf 分析

rmgr_sshd.elf 由rmgr.elf释放,本身是一个被修改过的openssh,用于提供ssh后门。该后门的配置文件是硬编码的,监听地址为127.0.0.1:26657。

ssh中硬编码的私钥文件:

这个ssh后门的认证函数还被修改过了,不论输入什么密码都会直接认证成功。

由于ssh后门的监听地址位于本地,因此从外部扫描是观察不到这个后门存在的,并且只能通过rmgr.elf中的sshd_client对象进行流量转发访问。

IOC

a4013790035fc3021546c09e9cf85df1

5ecf30b7a6221af8f209a7b6681f91f9

7d859a22f38f0bcd55a46bc8b67c40df

82bf8e99391ec0cdc527f2fc94621899

hxxp://hm2.yrnykx.com

# linux安全 # Linux木马 # Rootkit病毒 # Rmgr木马
本文为 深信服千里目安全技术中心 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
攻防渗透宝典
深信服千里目安全技术中心 LV.9
这家伙太懒了,还未填写个人描述!
  • 417 文章数
  • 611 关注者
【漏洞通告】Ivanti多产品缓冲区溢出漏洞(CVE-2025-22457)
2025-04-11
【漏洞通告】Vite 任意文件读取漏洞(CVE-2025-31486)
2025-04-09
【漏洞通告】微软补丁日安全通告|4月份
2025-04-09
文章目录