剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

逆向病毒分析 2年前 (2022) admin
756 0 0
点击蓝字
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
关注我们

大家好,我是飞鸟。

一位拥有十余年安全经验的斜杠青年:微步在线华东安服负责人/应急响应体系化践行者/Freebuf核心作者&Freebuf 智库专家… …

本人擅长日志、流量、样本、取证与溯源,具有多年攻防演练重保与应急实战经验。既已提到应急实战,今天就通过这篇跟大家好好交流一下Linux下的LKM Rootkit分析。同时,也计划把它写成系列文章,然后麻烦我们的运营小姐姐后续出个合集。合集名称还没想好,我觉得《Linux下的Rootkit|飞鸟五讲》就不错。也期待大家在评论区写下你认为合适的标题呢(手动扣6)

01 实战中的问题

不知道有没有小伙伴在实战中遇到下面的问题:

态势感知类流量产品检测到某台终端对某个恶意的域名发起了DNS请求,但是在主机层面进行排查时使用杀软、EDR等安全产品无法定位到相关的恶意进程。

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

这种情况常规的定位方法为使用sysmon、批处理或shell来定位相关的进程。比较典型的定位操作如下所示:

1、直接在受控主机的/etc/hosts文件中配置恶意域名对应的IP,这样就绕过了DNS的动态查询

2、Linux系统可在本地写个循环来过滤相关的TCP连接:

3、while true;do netstat -anltp | grep x.x.x.x;done

4、Windows系统,可以使用下面的命令来查找:

5、for /l %a in (0,0,1) do netstat -anto | findstr x.x.x.x

6、同时,Windows下也可以使用sysmon来定位

通过这种方式就很容易定位到相关的恶意进程了,看一个实战中定位恶意进程的例子,利用上面的操作定位到相关恶意进程。

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

Windows下可利用sysmon来定位,在实战中进行定位的一处案例如下所示:

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

02 对抗的引入

上面的定位方式在前几年一直使用的得心应手,使用上面的三板斧取证无数,但是今年开始发现上面的三板斧在很多场景开始失效了,比较典型就是无法使用上面的方法来定位到具体的进程了。

2022年以后个人先后支持了数起挖矿病毒的应急处置工作,从接手这些应急到处置完成,耗费的精力相比前几年是指数倍的增长,其核心原来就是攻防对抗的不断演进,特别是黑产所用技术的演进。

2022年至今团队与个人所分析的挖矿家族基本上都将Rootkit作为其标配,这样导致分析的难度呈指数倍的增长。

技术在演进,并且其是中性的,关键看其使用者。

作为安全人员也需要不断更新自己的技能库,了解黑产所用的技术,不断跟上技术演进的脚本。另外,个人一直认为这些黑产在将最新技术应用到实战的能力很强,并且其业务能力也很强。

Linux是Rootkit使用的主战场,关于Linux下Rootkit技术,主要有以下几种方法:

1、命令替换

2、库文件劫持

3、LKM Rootkit

本文作为Linux下的Rootkit系列的第一篇,先从LKM Rootkit技术作为开场来体系化探讨Linux下的Rootkit技术。

这里面只讨论该技术在实战中的具体应用以及站在应急处置的角度来思考如何进行分析与解决某一场景下的具体分析,关于Rootkit底层的原理本文暂时不作深入的分析与讨论。

在应急实战中,挖矿绝对是一股主流,究其原因,主要还是利益驱动,在传统的挖矿中使用系统自带的命令行和工具大多数可以处理掉,但是鉴于攻防技术的演进,黑灰产引入对抗的技术导致应急难度呈直线趋势上升。

TeamTNT是挖矿中比较具有代表意义的团队,并且其引入Github上的开源的Rootkit来实现隐匿与持久驻留,下面我们通过TeamTNT以代表来分析此类黑灰产的技术演进,通过分析对手来了解其对抗手法,从而为我们实战应急提供基础的技术指引。

03 TeamTNT中的Rootkit

TeamTNT是近几年挖矿大军中的一股主流,虽然其在2021年底在官网宣传退出江湖。

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

但是鉴于其技术的先进性、迭代能力强、使用各种对抗技术;“管中窥豹,时见一斑”,通过对其深入的分析,我们可以了解主流的挖矿团队的技术思路与演进,下面这张图代表了TeamTNT在技术层面的对抗。

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

这里面可以看到其使用的Rootkit来进行对抗,我们知道Rootkit一个核心功能就是高隐匿,隐藏其进程、网络连接、文件、模块等从而实现对恶意文件(如挖矿)的隐匿,从而达到在主机层面难以检测与处置的目的。

关于TeamTNT的核心样本可以通过下面链接进行下载:

http://oracle.zzhreceive.top/b2f628/b.sh

1、TeamTNT中的行为

在TeamTNT的核心代码b.sh中,我们可以看到如下的shell语句:

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

可以看到如下语句:

echo $DIA_TAR | base64 -d > /var/tmp/…/dia/dia.tar.gz

其主要功能是将上面的$DIA_TAR进行base64解码以后保存到/var/tmp/…/dia/dia.tar.gz,可以看到其为.tar.gz的文件内容,下面是base64解码以后保存为.tag.gz文件,可以看到文件:

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

通过这个文件名可以定位到原作者的Github链接:

https://github.com/m0nad/Diamorphine

2、核心功能

可以看到其用法如下所示:

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

其有Linux内核支持的限制:

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

安装比较简单,直接:

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

核心文件中指定了其指令代码、前缀名、模板名,我们可以根据自己的需求来修改:

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

3、隐藏进程

进程隐藏比较简单,直接发送31信号就可以了:

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

我们来测试一下,直接利用如下命令就可以达到隐藏和显示的效果:

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

这里面我们随便选择一个PID 1075

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

直接显示进程,还是使用上面的命令:

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

这种进程隐匿的方法和思路慢慢地被主流的挖矿团伙接纳并开始做为其标配技术,通过入侵相关的主机以后在终端层面将其挖矿相关的恶意进程给隐藏,这样会给现场取证带来很多难度。

并且Rootkit的运行级别一般都比杀软等安全防护软件运行级别低,所以使用杀软很难查杀与定位,这样无疑增加了取证的难度。

4 、隐藏模块


剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身


我们先利用lsmod命令看一下系统加载的模块,默认情况下这里面是看不到该Rootkit相关的模块,这个模块默认情况下是隐藏的


剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身


这里面我前面利用kill -63 PID命令给显示了,这里面的PID可以随机选择一下,我们随机选择一个PID 589,直接利用kill -63 589,这样再利用lsmod就可以看到diamorphine这个LKM Rootkit的恶意内核模块


剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身


剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

5、 提权为root

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

直接切换到feiniao这个用户,利用ps -f可以看到其PID为100017,直接利用下面命令就可以切换为root权限

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

6、文件隐藏

隐藏文件的前缀在diamorphine.h中定义了,其为diamorphine_secret

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身


创建文件或目录中只要含有下面的前缀就可以隐藏

剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
可以利用这个来隐藏恶意文件,使用ls -al等命令均无法查找到。
同样,黑灰产也可以利用这种技术来隐藏相关的恶意文件从而实现更好的隐匿。
7、 如何定
鉴于Rootkit所用的技术特性,一般情况下使用常规的杀软很难定位到Rootkit的存在,这样就为我们在实战中的对接带来很大的难度。
但是也有一些方法来检测,目前主要使用的方式与方法如下所示:
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
通过对Rootkit的研究,看一下实战场景中OneEDR针对Rootkit的检测能力:
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
8 、如何清除
使用root执行下面的命令就可以卸载该rootkit
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
卸载完成以后前面隐藏的文件可以正常显示了:
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
清除安装的文件:
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
04 远控LKM Rootkit
同时,我们对Github上优秀的LKM Rootkit进行研究与分析,发现了具有和上方相同的功能外还有后门管理的功能,其Github链接如下:
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
搭建好环境以后我们可以看到其远控的功能如下:
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
同样,通过这种shell,其可以实现下面的功能:
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
我们在被控制端执行netstat命令但是无法看到控制端的IP(192.168.224.6),达到隐藏网络连接的效果
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
攻防在演进,技术在对抗,前期的Rootkit大多在APT对抗中遇到,但是通过上面两个Rootkit的在挖矿中的应用我们可以看到,目前Rootkit这种技术在黑灰产会越来越日常化、平民化,后续我们在一线应急过程中会越来越多遇到此种的对抗。
那么,针对Rootkit配合挖矿的组合使用你准备好了吗?
05  参考链接
https://github.com/m0nad/Diamorphine
https://blog.csdn.net/guoguangwu/article/details/100771046
https://www.infosecmatter.com/metasploit-module-library/?mm=exploit/linux/local/diamorphine的使用_rootkit_signal_priv_esc
https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/linux/local/diamorphine_rootkit_signal_priv_esc.rb

– END –

微步在线应急响应团队为企业客户提供应急响应服务。当企业遭遇突发重大安全事件(APT攻击、勒索加密、数据窃取、漏洞攻击、主机被控等),微步在线可提供快速事件定位取证、隔离清除、溯源分析、安全加固等专业安全服务,帮助企业信息系统在最短时间内恢复正常工作,将事件影响降到最低。
如果发生安全事件,可联系微步在线应急响应团队,联系方式:4000301051
剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
转发,点赞,在看,安排一下?


1. 内容转载,请微信后台留言:转载+转载平台

2. 内容引用,请注明出处:以上内容引自公众号“微步在线应急响应团队”

原文始发于微信公众号(微步在线应急响应团队):剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身

版权声明:admin 发表于 2022年11月3日 上午8:01。
转载请注明:剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...