大家好,我是飞鸟。
一位拥有十余年安全经验的斜杠青年:微步在线华东安服负责人/应急响应体系化践行者/Freebuf核心作者&Freebuf 智库专家... ...
本人擅长日志、流量、样本、取证与溯源,具有多年攻防演练重保与应急实战经验。既已提到应急实战,今天就通过这篇文章跟大家好好交流一下Linux下的LKM Rootkit分析。同时,也计划把它写成系列文章,然后麻烦我们的运营小姐姐后续出个合集。合集名称还没想好,我觉得《Linux下的Rootkit|飞鸟五讲》就不错。也期待大家在评论区写下你认为合适的标题呢(手动扣6)
01 实战中的问题
不知道有没有小伙伴在实战中遇到下面的问题:
态势感知类流量产品检测到某台终端对某个恶意的域名发起了DNS请求,但是在主机层面进行排查时使用杀软、EDR等安全产品无法定位到相关的恶意进程。
这种情况常规的定位方法为使用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来定位
通过这种方式就很容易定位到相关的恶意进程了,看一个实战中定位恶意进程的例子,利用上面的操作定位到相关恶意进程。
Windows下可利用sysmon来定位,在实战中进行定位的一处案例如下所示:
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在技术层面的对抗。
这里面可以看到其使用的Rootkit来进行对抗,我们知道Rootkit一个核心功能就是高隐匿,隐藏其进程、网络连接、文件、模块等从而实现对恶意文件(如挖矿)的隐匿,从而达到在主机层面难以检测与处置的目的。
关于TeamTNT的核心样本可以通过下面链接进行下载:
http://oracle.zzhreceive.top/b2f628/b.sh
1、TeamTNT中的行为
在TeamTNT的核心代码b.sh中,我们可以看到如下的shell语句:
可以看到如下语句:
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文件,可以看到文件:
通过这个文件名可以定位到原作者的Github链接:
https://github.com/m0nad/Diamorphine
2、核心功能
可以看到其用法如下所示:
其有Linux内核支持的限制:
安装比较简单,直接:
核心文件中指定了其指令代码、前缀名、模板名,我们可以根据自己的需求来修改:
3、隐藏进程
进程隐藏比较简单,直接发送31信号就可以了:
我们来测试一下,直接利用如下命令就可以达到隐藏和显示的效果:
这里面我们随便选择一个PID 1075
直接显示进程,还是使用上面的命令:
这种进程隐匿的方法和思路慢慢地被主流的挖矿团伙接纳并开始做为其标配技术,通过入侵相关的主机以后在终端层面将其挖矿相关的恶意进程给隐藏,这样会给现场取证带来很多难度。
并且Rootkit的运行级别一般都比杀软等安全防护软件运行级别低,所以使用杀软很难查杀与定位,这样无疑增加了取证的难度。
4 、隐藏模块
我们先利用lsmod命令看一下系统加载的模块,默认情况下这里面是看不到该Rootkit相关的模块,这个模块默认情况下是隐藏的
这里面我前面利用kill -63 PID命令给显示了,这里面的PID可以随机选择一下,我们随机选择一个PID 589,直接利用kill -63 589,这样再利用lsmod就可以看到diamorphine这个LKM Rootkit的恶意内核模块
直接切换到feiniao这个用户,利用ps -f可以看到其PID为100017,直接利用下面命令就可以切换为root权限
6、文件隐藏
- END -
2. 内容引用,请注明出处:以上内容引自公众号“微步在线应急响应团队”
原文始发于微信公众号(微步在线应急响应团队):剖析-看顶流挖矿团伙TeamTNT如何用LKM Rootkit技术隐藏自身
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论