权限维持—Linux系统Rootkit后门
前言
最近接触了一下这个Rootkit后门,这玩意大多数用来做权限维持,对于红队来说是比较好用的一个工具。如果你是大手子,直接自己写一个Rootkit,当然啦,我这种小菜鸡就只能用开源的项目来玩了,哈哈哈。
什么是Rootkit
一般来说,Rootkit自身并不是恶意软件,它是恶意软件用来隐藏自己的一种手段。但经二次改造的Rootkit可能包括间谍软件和其它的程序,如监视网络通信和用户击键的程序,也可以在系统中构建一个后门便于黑客使用,被改造的Rootkit恶意软件可以包含多个恶意工具,其中通常包括用于启动分布式拒绝服务(DDoS)攻击的机器人;可以禁用安全软件,窃取银行和信用卡详细信息以及窃取密码的软件;和击键记录器。Rootkit 通常为攻击者提供进入计算机的后门,使他们能够访问受感染的计算机,并使他们能够在选择时更改或删除软件和组件。
Rootkit权限维持
首先当我们通过C2后门拿到一台主机权限的时候,它会存在以下这几个问题:
1、暴露外联的IP
2、暴露后门进程
3、暴露的后门文件
即使你免杀做的再好,蓝队依旧可以通过这三点把C2后门给排查出来,我们要做的就是通过Rootkit 把这三点给隐藏起来,以此来达到权限维持的一个目的。
这里我们用的是这个项目,下面就是项目的适用版本。
https://github.com/f0rb1dd3n/Reptile
现在靶机安装以下环境,这几个包都是Linux常用的,基本部署业务的主机都会有。
yum -y install perl vim gcc make g++ unzip
动态获取内核版本并且安装。
yum -y localinstall kernel-devel-$(uname -r).rpm
OK假如现在我获取到了靶机的权限,可以到看到网络连接显示靶机通过58762端口外联到171主机的8888端口。
还能查看到我们的shell.elf这个进程。
通过PID来定位到后门文件。
通过以上的几个步骤可以快速定位到后门文件,现在我们来使用上面的Rootkit项目进行隐藏一下,下载好项目之后直接上传到受控主机解压即可,也才40多KB而已。解压之后执行setup.sh脚本,可以看到有四个选项,install就是安装Rootkit,remove就是移除Rootkit,client就是安装客户端。
这里我们先安装Rootkit,要注意一下这个Hide name,直译过来就是隐藏名字。意思就是以你设置的名字来命名的文件就会被隐藏起来,比如我这里设定为 wlw666 ,那么待会我用 wlw666来命名的文件或者文件夹就会被隐藏起来,如果不设定名字就默认为reptile。
./setup.sh install
下面的这些密码还有端口啥的,直接默认就行。
这里选择 y 使用回连功能,IP就是你远控主机的IP,端口随便来个,最后输入1,就是1秒后开始安装。
这样子就安装完成了,这里会提示是否要删除这个安装目录,实战中可以删除那么就会更加隐蔽,这里为了方便我就留下了。
我们先来验证一下是否安装成功,当前目录下创建一个文件架,就叫wlw666123,可以看到无论是ls 还是 ls -la 都看不见这个文件夹。
但是我们 cd 是能进去的,因为我们前面讲过了,只要文件名或文件夹名存在wlw666都会被隐藏,那我们是不是就可以把上面的 shell.elf 重命名为wlw666shell.elf,以此来达到后门隐藏的目的。
光是文件隐藏还不够,还要把进程给隐藏掉才行,后面就是你的PID。
/reptile/reptile_cmd hide 111672
此时再来查看一下 shell.elf 的进程,可以看到是被完全隐藏起来的了。
剩下的一个网络连接我们也一并隐藏。
/reptile/reptile cmd tcp 192.168.145.171 8888 hide
可以看到此时查看网络连接情况是看不到我们后门的外联的。
现在我不用C2后门去进行控制靶机,用Rootkit自带的远控功能去实现,先在另一台主机安装一下客户端。
如果按照报错,执行下面的命令安装一下这玩意就行。
yum install readline-devel
靶机重新安装一下Rootkit,回连IP填客户端的IP即可,端口随便。
客户端来到 bin 目录下运行 client 文件。
设置参数,LHOST就是客户端的IP,LPORT就是上面我们设置的端口,SRCHOST也是客户端IP,SRCPORT默认为666,如果安装的时候没有改的话。RHOST就是受控主机的IP,RPORT就是连接端口,随便设置一个就行,但是要开放的才行,PROT就是通讯协议,设置为TCP即可,PASS和TOKEN直接复制过来就行。
设置完之后直接 run 即可收到回连,输入shell就可以拿到受控主机的权限。
我们只能在网络连接里面看到有异常。
进程是不会有东西的,直接把网络连接隐藏就行,蓝队排查难度比较大。
总结
总的来说如果主机植入了Rootkit的话,排查起来的难度还是挺大的,也比较麻烦。
最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。