20242409 2025-2026-1 《网络与系统攻防技术》实验2实验报告

20242409 2025-2026-1 《网络与系统攻防技术》实验2实验报告

1.基础知识

1.1 后门概念

后门是不经过正常认证流程访问系统的通道。本实验研究狭义后门:专门编写的潜伏程序,攻击者可远程连接执行指令。后门完整生命周期:生成程序→投递至目标主机→触发运行→隐藏驻留。 分正向连接与反弹连接:正向连接由攻击者主动连接目标,易被防火墙拦截;反弹连接由被控主机主动向外发起连接,防火墙通常放行出站流量,是后门主流方式。

1.2 工具基础

  • Netcat:网络瑞士军刀,TCP/UDP数据包收发,可快速构建反弹shell,实现远程命令执行、文件传输。
  • Socat:Netcat增强版,支持SSL加密隧道,流量加密传输,规避明文流量检测。
  • Metasploit&Meterpreter:渗透测试框架,msfvenom按需生成不同平台payload后门程序;Meterpreter是高级载荷,拥有截屏、键盘记录、摄像头、音频采集、进程迁移、凭据抓取、提权等后渗透功能。
  • 驻留自启动:Windows依靠注册表Run项、计划任务、系统服务、启动文件夹;Linux 依靠crontab定时任务、systemd服务、ssh公钥、bashrc脚本实现开机/登录自动运行后门。
  • Shellcode:原始机器码,可注入到已有程序内存中执行,不需要独立exe文件,用于程序注入类攻击。

1.3 法律边界

本实验仅在自建隔离虚拟机环境(Kali 攻击机、Windows/Linux 靶机)完成。未经授权对他人计算机植入后门属于违法行为,触犯非法控制计算机信息系统罪。实验前打虚拟机快照,实验结束回滚清理环境。

2.实验内容

  1. 使用Netcat获取主机Shell,配置Linux crontab定时任务,实现后门自启动。
  2. 使用Socat建立加密通道获取主机Shell,Windows任务计划程序实现后门自启动。
  3. 使用msfvenom生成Meterpreter后门exe,使用ncat/socat传输后门文件到Windows靶机,运行后门获取Meterpreter会话。
  4. Meterpreter会话下,采集目标主机音频、摄像头画面、击键记录,尝试执行提权操作。
  5. 使用msfvenom生成shellcode,注入实验1的pwn1程序,触发反弹shell。

3.实验过程

3.1 任务一:使用netcat获取主机的Shell

3.1.1 环境准备

  • 关闭Windows Defender 防火墙

图片1

  • 命令行快速关闭方式

图片2

  • 验证是否关闭成功

图片3

  • 关闭Windows杀毒软件

图片4

  • 下载netcat工具包

图片5

  • 确认靶机 IP,记录地址

3.1.2 监听获得虚拟机shell

  • Windows主机查看本机IP

图片6

  • Windows主机启动netcat监听2409端口

图片7

  • 新开Windows PowerShell窗口,验证端口监听状态

图片8

  • Kali执行nc命令,主动反弹shell到Windows主机

图片9

图片10

3.1.3 启动定时任务

  • 编辑crontab定时任务表

图片11

  • 查看定时任务是否写入成功

图片12

图片13

  • 查看cron任务存储文件

图片14

  • 复现验证后门效果

图片15

图片16

3.1.4 修改定时任务

  • 使用echo命令写入定时任务

图片17

  • 查看定时任务,验证写入成功

图片18

3.2 任务二:使用socat获取主机操作Shell

3.2.1 环境准备

  • Windows 靶机准备好socat工具,Windows端执行socat监听命令,等待外来连接;Kali虚拟机执行socat连接命令,连接Windows监听端口。连接建立成功之后,Kali可以拿到Window 靶机shell,执行ipconfig、dir 等Windows系统命令。

图片1

  • 主机打开监听

图片2

  • 虚拟机发起连接

图片19

图片20

3.2.2 设置定时任务

  • 编写代码
    • 编写 C 程序,编译为 exe,使用 Windows schtasks命令创建定时任务,实现程序每分钟自动执行。

图片21

  • 编辑可执行文件并执行

图片22

  • 定时成功

图片23

3.3 任务三:使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell

3.3.1 后门生成

  • 使用 msfvenom 指定 payload 为windows/meterpreter/reverse_tcp,填写攻击机 IP、回连端口,输出格式为 exe,生成后门程序。

图片24

3.3.2 文件传输

  • 用 ncat 的文件传输功能,Kali 作为发送方把生成的后门 exe 发送出去,Windows 靶机接收保存到本地磁盘。

图片25

图片26

3.2.3 配置监听模块

  • 开msfconsole,加载exploit/multi/handler,payload、LHOST、LPORT参数必须和生成后门时保持一致,执行run开启后台监听。Windows靶机运行接收到的后门exe,攻击机msf收到meterpreter会话,获取靶机控制权限。

图片27

图片28

图片29

图片30

3.4 任务四:使用MSF meterpreter生成获取目标主机资源的后门,并尝试提权

  • 成功建立 meterpreter 会话之后,输入sessions -i 会话id进入交互会话。
  • 基础信息收集:getuid查看当前权限用户;sysinfo获取操作系统版本、架构信息;ps列出靶机全部进程。
  • 进程迁移:执行migrate把 meterpreter 会话迁移到 explorer.exe 等系统进程,关闭原始后门程序也不会丢失控制会话。
  • 键盘记录:keyscan_start开启键盘记录,keyscan_dump导出捕获到的击键记录,keyscan_stop停止记录。
  • 音视频采集:webcam_list查看可用摄像头设备;webcam_snap抓取摄像头截图保存到攻击机本地;record_mic录制靶机麦克风音频。
  • 截屏:执行screenshot抓取靶机桌面截图。
  • 权限提升:运行getprivs查看当前进程启用权限;执行getsystem尝试自动提权。Windows 新版本开启 UAC、LSA 保护,传统 getsystem 提权方式经常执行失败。

图片31

图片32

图片33

图片34

图片35

图片36

图片37

3.5 任务五:使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。

  • 选用linux/x86/shell_reverse_tcppayload,填写攻击机 IP、端口,使用-b '\x00'过滤空字节坏字符,输出格式为python,拿到十六进制 shellcode。
  • 前期通过msf-pattern_create、msf-pattern_offset测试,得到pwn1缓冲区溢出偏移为32字节。

图片39

图片40

图片41

  • msf-pattern_offset查询偏移

图片42

  • gdb info functions查看程序函数列表

图片43

  • 在foo函数下断点,将pattern输入重定向到程序,调试查看ebp、栈地址,确定栈上shellcode存放位置,寻找可用跳转gadget。

图片44

  • 打开 msfconsole,加载multi/handler,设置payload、LHOST、LPORT,后台启动监听,等待pwn1溢出后主动回连。

图片45

  • 将 payload 重定向输入pwn1,触发缓冲区溢出,执行栈上shellcode。在 MSF 监听端成功收到meterpreter会话,进入会话执行getuid、sysinfo验证控制权限。

图片46

图片47

图片48

4.问题及解决方案

  • 问题1:GDB中x/s看不到模式串。
  • 问题1解决方案:确认文件名包含完整学号,且断点设在call gets之后(0x080484a2),单步执行后再查看。
  • 问题2:Meterpreter反弹后会话立即崩溃(session not valid)。
  • 问题2解决方案:Meterpreter体积大(约106KB),栈空间不足导致加载失败。改用轻量级linux/x86/shell_reverse_tcp,稳定性显著提升。

回答问题

  • (1) 后门进入系统的方式:通过钓鱼邮件附件、捆绑软件、漏洞利用(如缓冲区溢出)、社会工程学诱导用户执行等。
  • (2) 后门启动方式:Windows可通过注册表自启动、服务、计划任务(schtasks);Linux可通过cron、rc.local、systemd服务等。
  • (3) Meterpreter印象深刻的功能:getsystem提权、keyscan_start键盘记录、record_mic录音、webcam_snap摄像头拍照、hashdump导出密码哈希。
  • (4) 发现后门的方法:检查网络连接(netstat -ano)、查看启动项(msconfig/systemctl list-unit-files)、使用杀毒软件扫描、监控异常进程(ps aux)、检查计划任务(crontab -l/schtasks /query)。

5.学习感悟、思考等

这次实验让我最深刻的体会是:理论与实践的差距远比想象中大。

在做任务5的shellcode注入时,我在GDB里明明测到了buf地址是0xffffddb0,构造的payload看起来也完全正确,但一触发就报illegal hardware instruction。反复检查才发现,GDB调试环境和真实运行环境的栈地址存在漂移,环境变量长度不同都会导致地址变化。这个问题困扰了我将近两个小时,最后通过env -i对齐环境、加上1024字节NOP雪橇、再写脚本自动爆破偏移才解决。

另一个让我印象深刻的点是Meterpreter会话崩溃问题。反弹成功后MSF显示Sending stage (106760 bytes),但紧接着会话就死了,报session not valid。一开始我以为是端口问题,排查了半天才发现是Meterpreter体积太大,栈空间不足导致加载失败。换成轻量级的shell_reverse_tcp后一次就成功了。

这两个问题让我真正理解了缓冲区溢出利用为什么被称为"艺术"——它不只是填几个字节覆盖返回地址那么简单,还要考虑环境对齐、栈布局、payload大小对稳定性的影响。同时也让我意识到,做攻防实验不能只看理论,动手调试、耐心排查才是关键。

参考资料

    1. 0 MAL_后门原理与实践(ExpGuides/0x21_MAL_后门原理与实践.md · wildlinux/NetSec - 码云 - 开源中国)
  • 课程PPT(第3章 后门与免杀技术)
  • 指导视频(实验二 后门原理与实践-20232409毕悠尘.mp4)
  • 豆包润色文案
posted @ 2026-10-17 20:12  枯年闻少-  阅读(1)  评论(0)    收藏  举报