Linux | SkidMap 内核态 Rootkit 取证分析

admin 2023年5月16日08:14:05评论304 views字数 1906阅读6分21秒阅读模式

SkidMap是于2019年发现的一种 Linux 恶意软件,加载内核态Rootkit,来隐藏恶意挖矿活动 。它的出现也证明了加密货币挖掘威胁的复杂性在不断增加。

1.异常定位

某日,发现主机时常宕机重启,top命令并无发现高占用进程,但是发现有可疑的下载命令。由于用户态无法发现其他异常现象,怀疑有Rootkit植入。

Linux | SkidMap 内核态 Rootkit 取证分析
2.取证分析
2.1 内核取证分析
用户态行为已经被隐藏,无法发现新的异常。首先尝试安装rkdetect检测工具。但是加载后发生 kernel panic,系统自动重启,怀疑有Rootkit阻止新的内核模块加载。

Linux | SkidMap 内核态 Rootkit 取证分析

尝试使用在线内存取证的方式,来判断机器是否已经植入Rootkit。利用system.map确定sys_call_table地址

Linux | SkidMap 内核态 Rootkit 取证分析

确定内核text节区的范围。

Linux | SkidMap 内核态 Rootkit 取证分析

以及一些常见的和文件操作相关的系统调用函数地址

Linux | SkidMap 内核态 Rootkit 取证分析

排查是否存在sys_call_table系统调用劫持情况,发现sys_call_table+98地址不在内核text节区段范围内。

Linux | SkidMap 内核态 Rootkit 取证分析

跟进地址0xffffffffa06dfe30发现,内核符号表并未识别为正常系统调用。

Linux | SkidMap 内核态 Rootkit 取证分析

根据偏移98,可以确定sys_bind系统调用函数地址被替换,发生了函数劫持。继续排查,发现sys_getdents系统调用函数地址被替换。

Linux | SkidMap 内核态 Rootkit 取证分析

分析execve系统调用。

Linux | SkidMap 内核态 Rootkit 取证分析

跟进地址,发现callq指令的地址不是sys_execve函数的地址,而是一个用户态函数地址0xffffffffa06c9c10。

Linux | SkidMap 内核态 Rootkit 取证分析

跟进0xffffffffa06c9c10函数,可以发现通过判断进程名,kill指定进程的操作。

Linux | SkidMap 内核态 Rootkit 取证分析

分析account_user_time函数,其过程序言被替换为了jmp指令,跳转到0xffffffffa06ef160地址,发生函数蹦床劫持。目的是劫持自上次更新后在用户空间CPU使用时间。

Linux | SkidMap 内核态 Rootkit 取证分析

Linux | SkidMap 内核态 Rootkit 取证分析

Linux | SkidMap 内核态 Rootkit 取证分析

分析moudle_frob_arch_section函数,其过程序言被替换为了jmp指令,跳转到0xffffffffa06f1380地址,发生函数蹦床劫持。目的是阻止新的内核模块加载。

Linux | SkidMap 内核态 Rootkit 取证分析

派遣例程的寄存器没有被劫持,保存的是sys_call_table地址。

Linux | SkidMap 内核态 Rootkit 取证分析

通过内核内存分析发现确实存在植入内核态Rootkit的痕迹。
2.2 用户态取证分析
调查用户态痕迹,发现存在可疑authoried_keys免密登录公钥。

Linux | SkidMap 内核态 Rootkit 取证分析

远控证书文件rctl_ca.crt。

Linux | SkidMap 内核态 Rootkit 取证分析

通过绝对路径,发现可疑的jpeg可执行文件。

Linux | SkidMap 内核态 Rootkit 取证分析

Jpeg被upx压缩unpatch后,其文件大致功能:下载挖矿程序以及Gold7系列恶意文件并执行。

Linux | SkidMap 内核态 Rootkit 取证分析

Gold7.tar.gz解密key以及命令包含在jpeg文件里。

Linux | SkidMap 内核态 Rootkit 取证分析

jpeg删除中间过程的程序以及清理计划任务、日志。

Linux | SkidMap 内核态 Rootkit 取证分析

jpeg中两个Rootkit的内核模块ko文件路径。

Linux | SkidMap 内核态 Rootkit 取证分析

Linux | SkidMap 内核态 Rootkit 取证分析
kmeminfo.ko使用netfillter hook,过滤特定数据包。

Linux | SkidMap 内核态 Rootkit 取证分析

Linux | SkidMap 内核态 Rootkit 取证分析

mcpuinfo.ko文件使用了直接替换sys_call_table系统调用,挂钩虚拟文件系统函数指针、删除module双向链表以及kobject对象等方式,实现端口、文件、进程、内核模块等隐藏功能。两个Rootkit的功能都在内存取证阶段得到验证。

Linux | SkidMap 内核态 Rootkit 取证分析

隐藏文件只是在文件目录显示上做了隐藏处理,当已知文件名和文件路径时可以直接查看。

Linux | SkidMap 内核态 Rootkit 取证分析

因此,可以发现Gold7.tar.gz包含的一系列远控程序、自启动服务配置文件和服务程序在机器中的存在情况。

Linux | SkidMap 内核态 Rootkit 取证分析

3.清除Rootkit

清除LKM型Rootkit,总体思路是破坏Rootkit重启后自动加载的条件,两个内核模块,通过两个自启动的系统服务,实现系统重启后自动加载Rootkit。
首先删除ko文件本体,清除系统服务、系统服务配置文件、用户态痕迹文件,其次,关闭kprobes机制,加固Redis防止二次感染。
Clear.sh清除程序以及所有链接文件,恢复sshscp文件,禁用恶意系统服务,开启审计服务。

Linux | SkidMap 内核态 Rootkit 取证分析

/sys/kernel/debug/krpobes/enabled文件写入0,禁用kprobes机制

Linux | SkidMap 内核态 Rootkit 取证分析

重启后,两个恶意系统服务没有加载,免密登录的公钥文件没有生成。

Linux | SkidMap 内核态 Rootkit 取证分析

Linux | SkidMap 内核态 Rootkit 取证分析

4.事件总结

本次属于 SkidMap 内核态 Rootkit 攻击事件,攻击者利用 Redis 未授权访问漏洞入侵主机,添加SSH公钥,以持久化远控失陷主机,下载包含挖矿木马、内核态Rootkit 的 Gold7.tar.gz 恶意软件压缩包,安装后接受远程指令,清除系统审计日志,关闭SELinux,加载内核态Rootkit,安装系统服务实现Rootkit二次自动加载,最终隐藏恶意挖矿行为。

原文始发于微信公众号(TahirSec):Linux | SkidMap 内核态 Rootkit 取证分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月16日08:14:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Linux | SkidMap 内核态 Rootkit 取证分析https://cn-sec.com/archives/1735528.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息