20242425 2026-2027-1 《网络与系统攻防技术》实验二实验报告
20242425 2026-2027-1 《网络与系统攻防技术》实验 二 实验报告
1. 基础知识
- 反弹 Shell:靶机主动发起连接到攻击机,建立命令交互通道。和正向 Shell 对比,反弹 Shell 可以绕过防火墙入站规则,是内网渗透常用技术。
- Socat:多功能网络工具,可以建立 TCP 连接,实现数据转发,快速获取 Windows cmd 原生反弹 shell。
- 持久化:在目标主机设置机制,即使主机重启,依然能够自动反弹连接,Windows 任务计划程序 schtasks 是一种持久化手段。
- Shellcode:机器码形式的指令,可直接在内存执行;msfvenom 是 Metasploit 的 payload 生成工具,可生成各类反弹载荷。
- Meterpreter:Metasploit 提供的高级内存型 Shell,功能丰富,可截图、文件传输、进程迁移,在 Meterpreter 中可以调用系统原生 cmd。
2. 实验内容
任务 1:使用 socat 工具实现基础 TCP 反弹 Shell,验证 Kali 攻击机与 Windows 靶机网络连通,获取靶机命令行交互权限。
任务 2:利用 Windows 任务计划程序 schtasks 创建定时任务,实现反弹 Shell 持久化后门,测试重启虚拟机后自动反弹效果。
任务 3:使用 msfvenom 生成 Windows 反弹 Shellcode,借助 PowerShell 内存加载执行,获取 Meterpreter 高级 Shell,测试 Meterpreter 基础功能。
任务 4:使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权任务
任务 5:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
3. 实验过程
任务 1:Socat 基础反弹 Shell 实验
步骤 1:配置 VMware 虚拟机网卡,保证 Kali 攻击机与 Windows 靶机网络互通,查看并记录 Kali 的 IP 地址。

步骤 2:在 Kali 终端执行 socat 监听命令,开启端口监听,等待靶机主动反弹连接。

步骤 3:将socat.exe传输到 Windows 靶机,在靶机 CMD 执行反弹连接命令,连接 Kali 监听端口。
步骤 4:连接成功,获取靶机 cmd shell,执行whoami、ipconfig等命令验证权限。

步骤 5:实验验证:执行系统命令确认可控,实验结束关闭两端程序。

任务 2:Windows 计划任务实现反弹 Shell 持久化后门
沿用任务 1 实验环境,确认 socat 反弹 shell 可以正常连通。
步骤 1:在 Windows 靶机 CMD,使用schtasks命令创建计划任务,设置触发条件,任务运行 socat 反弹程序。

步骤 2:查询任务列表,验证计划任务创建成功。

步骤 3:关闭现有 Shell 会话,重启 Windows 虚拟机,等待计划任务自动触发反弹。

步骤 4:实验清理:删除创建的计划任务,移除靶机上 socat 后门文件。
任务 3:Msfvenom 生成 Shellcode + PowerShell 加载反弹 Meterpreter
步骤 1:在 Kali 终端使用 msfvenom,生成windows/meterpreter/reverse_tcp类型 shellcode,填入攻击机 IP、监听端口。

步骤 2:启动 msfconsole,加载exploit/multi/handler监听模块,配置 payload、LHOST、LPORT,启动监听。

步骤 3:在 Windows 靶机运行 PowerShell 加载脚本,执行 shellcode。

步骤 4:Kali 端收到 Meterpreter 会话,输入shell调出原生 cmd,验证会话权限。

步骤 5:执行getuid、sysinfo等 Meterpreter 内置命令,完成基础功能测试。

任务 4:使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权任务
步骤 1:基础信息收集(Meterpreter 会话内执行)
拿到 meterpreter 会话后,先执行靶机信息采集。
getuid
sysinfo
ipconfig

步骤 2:进程相关操作
ps # 列出靶机全部进程
getpid # 查看当前meterpreter所在进程ID
migrate # 迁移到稳定进程(例如explorer.exe)
说明:migrate 可以把 meterpreter 会话迁移到系统自带进程,防止关闭原程序导致会话断开。

步骤 3:文件上传与下载
upload /home/kali/test.txt C:\Users\hanwuji\Desktop\ # 攻击机上传文件到靶机桌面
download C:\Users\hanwuji\Desktop\test.txt /home/kali/ # 靶机文件下载回Kali



步骤 4:屏幕截图
screenshot # 截取靶机当前桌面,图片自动保存到Kali

步骤 5:获取靶机 CMD 交互终端
shell
进入 Windows 原生 cmd,可执行 Windows 系统命令,例如whoami、ver。 输入exit可退回 meterpreter。

步骤 6:会话后台挂起
background
将会话放到后台,返回 msf 主界面,可以继续执行其他模块,使用 sessions 查看全部会话,sessions -i 1 重新进入会话。

任务 5:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
步骤 1:切入 meterpreter 会话
msfconsole 终端输入:
sessions -i 1

步骤 2:基础系统信息收集
依次执行下面命令,记录返回结果
sysinfo
查看操作系统版本、计算机名称、架构信息。

getuid
查看当前运行会话的用户身份,确认当前权限。

ipconfig
查看靶机网卡、IP 地址,判断内网网段。

ps
列出靶机所有正在运行进程,查看进程名称、PID、所属用户。

netstat
查看靶机网络连接、端口监听情况。

getprivs
查看当前用户拥有的系统权限特权。

步骤 3:本地权限提升模块(Metasploit 本地漏洞扫描)
将会话放到后台
background

加载本地漏洞扫描模块
use post/windows/gather/enum_vulns
设置会话 ID
set SESSION 1
执行扫描
run
功能:自动扫描 Windows 靶机存在的可用于提权的系统漏洞 截图提示:enum_vulns 漏洞扫描结果截图

步骤 4:尝试提权(内置 meterpreter 提权命令)
切回会话:
sessions -i 1
执行自动提权尝试:
getsystem
getsystem 会自动尝试多种 Windows 本地提权技术,尝试把当前普通用户权限提升至系统管理员权限。

- 成功:提示权限提升成功,再次执行getuid会看到 NT AUTHORITY\SYSTEM
- 失败:提示无法提升,代表当前系统补丁较新,不存在可用提权漏洞
本次实验中目标 Windows 补丁版本较高,原生getsystem内置提权方法全部失效,无法直接提升至 SYSTEM 权限。
步骤 5:收集靶机用户信息
run post/windows/gather/enum_users_history
查看本机用户、最近登录账号等信息。

步骤 6:实验收尾清理
- 后台会话:background
- 如果不需要会话:sessions -k 1 关闭会话

4. 问题及解决方案
问题 1:Windows 虚拟机共享文件夹找不到,无法把 socat.exe 传入靶机
现象:VMware 已经配置共享文件夹并重启虚拟机,但在 Windows 系统内找不到共享目录。
原因:VMware Tools 未完整安装,虚拟机无法识别共享文件夹。
解决方法:优先使用 VM 拖放功能,直接将实机文件拖拽到 Windows 虚拟机桌面;也可搭建简易 HTTP 服务,在靶机浏览器下载文件。
问题 2:Windows 计划任务反弹 shell 无法自动触发
现象:创建好定时任务,到达设定时间没有反弹连接,Kali 监听端无响应。
原因:命令引号、文件路径书写错误;Windows 防火墙拦截出站连接;socat 程序路径配置错误。
解决方法:检查 socat.exe 存放路径,简化命令;临时关闭靶机防火墙;手动右键运行任务测试,验证命令是否能成功反弹。
问题 3:msfvenom 生成 shellcode,Windows 靶机缺少编译器,无法编译 C 加载器
现象:在 Windows cmd 输入 gcc 提示不是内部命令。
原因:Windows 默认不带 C 语言编译器,MinGW 安装与环境变量配置繁琐。
解决方法:更换方案,使用 PowerShell 脚本直接加载 shellcode,不需要编译,免去安装编译器。
问题 4:执行run post/windows/gather/enum_users_history,提示脚本找不到,Meterpreter 会话直接崩溃断开
现象:输入命令后报错找不到模块,会话直接 Died 关闭。
原因:新版本 Metasploit 已经移除enum_users_history模块,该命令已废弃,执行会造成会话异常退出。
解决方法:放弃该模块,在 meterpreter 中进入 shell,使用 Windows 原生命令:net user、query user收集账户信息。
问题 5:会话断开后,在 msf 控制台输入shell,提示 Unknown command
现象:msf > 或者 msf post (xxx) > 提示符下输入 shell,命令不存在。
原因:shell 是 Meterpreter 会话内专属命令,MSF 主控制台 /post 模块界面不支持 shell。
解决方法:必须先成功建立反弹会话,提示符变为meterpreter >,才可以执行 shell 进入 cmd。
问题 6:会话断开后执行sessions -i 1提示 Invalid session identifier:1
现象:无法进入会话 1。
原因:会话已经终止死亡,会话 ID 失效,死亡会话不能恢复。
解决方法:关闭旧监听任务 jobs -k,重新开启 handler 监听,在 Windows 靶机再次运行 PowerShell 加载脚本,获取全新 Meterpreter 会话。
问题 7:反弹 shell 无任何回显、连接不成功
现象:Kali 开启监听,靶机执行脚本,但一直没有会话上线。
原因:Kali 的 LHOST IP 填写错误;靶机防火墙拦截;虚拟机网卡不在同一网段。
解决方法:确认 Kali 本机 IP;靶机临时关闭防火墙;VMware 网卡设置为 NAT,保证攻击机和靶机互通,先 ping 测试连通性。
5. 学习感悟、思考等
本次实验在虚拟机环境下完成反弹 Shell 与持久化后门实操,实操过程中接连遇到文件传输、定时任务失效、Metasploit 模块废弃、会话崩溃等各类故障。我体会到网络攻防实验对环境、命令、系统版本要求极高,不能机械复制教程命令,需要学会根据报错定位根源。实验让我掌握了反弹 Shell 与简单持久化的原理,也清楚这类技术的危险性。所有渗透操作仅限授权实验环境,现实中私自入侵计算机触犯法律。学习攻防技术的目的是理解攻击思路,以此完善防护策略,坚守网络安全法律法规,建立正确的安全观。
参考资料
- NetSec 使用 netcat 进行反弹连接的 shellcode
- 《Metasploit 实战指南》
- socat 官方文档

浙公网安备 33010602011771号