
1. 项目概述1.1 从靶场环境看暴力破解的真实意义先聊聊为什么选Metasploitable2这台靶机。说实话我在刚入门安全测试的那阵子最容易卡住的不是工具怎么敲命令而是不知道攻击目标该长什么样、弱口令到底藏在哪里。Metasploitable2正好解决了这个问题它是一台有大量漏洞的虚拟机内置了Telnet、FTP、SSH、SMB、MySQL等一堆服务相当于一个专门开放给安全研究者练手的“演习场”你可以合法地用Hydra、Metasploit、Nmap等工具去冲刷自己的技能树。暴力破解这个概念听起来有点“蠢”就是把字典里的账号密码组合不断送到服务器上试。但在实际项目中弱口令依然是内网渗透里最容易拿下的突破口。很多运维习惯把管理员密码设成admin、123456、password这类因为好记。可在防守方看来这种“便利”恰恰是最大的安全隐患。通过这个靶场实验你能直观看到一台暴露了Telnet服务的机器在有默认密码的情况下被人摸到Shell需要多久答案是几乎没有门槛。本文会完整还原从靶机网络发现、端口探测到Hydra爆破、MSF验证的全过程包括中途那些不顺利的环节——比如命令参数选错导致扫描失败、账号密码写错导致100%失败率、以及常被人忽略的“基于时间的账号枚举”等并附上对应的排错思路。同时我把Metasploitable2靶场环境怎么搭、Telnet服务如何开启、靶机上怎么创建测试账号这些前置操作也都整理了方便零基础的朋友直接从0到1复现整个攻击链。这篇内容适合这三类人正在准备某平台OSCP或CEH认证、需要完成内网渗透练习的人刚接触Hydra和Metasploit、希望系统理解两者各自定位的人以及只想了解“暴力破解到底是怎么一回事”的好奇派。如果是纯技术老手可以直接跳到第3节看Hydra与MSF的细节靶机搭建部分可以略过。1.2 理解工具组合暴力破解不是单靠一个工具走天下工具选型一直是新手比较容易混淆的地方因为市面上看得到“Hydra也能爆破、Metasploit也有爆破模块”这种说法但两者定位完全不一样。Hydra是一个高度专注于“在线密码测试”的命令行工具你给它一台目标机、一个服务协议、一份用户名字典和密码字典它就能在极短时间内并发尝试成千上万次登录。它的优势是速度快、支持协议超多——比如HTTP、FTP、SSH、Telnet、SMB、MySQL、PostgreSQL等——而且脚本化特别方便可以直接接在批量扫描流程里。Metasploit的暴力破解模块则更像是“全套集成体验”它不只帮你爆破还顺带接管了后续的会话处理、漏洞利用、权限维持等环节。具体到Telnet场景Metasploit的telnet_login模块会把爆破和Session建立绑定在一起一旦密码正确MSF会直接给你托管一个Telnet会话省去手动登录的繁琐。这种“一站式”打法在拿下权限后的横向移动研究中尤其自然。我个人的习惯是两套工具混合用先用Hydra快速试探大字典组合看弱口令是否存在确认存在后再用MSF加载telnet_login模块做一次精细爆破并直接建立Shell会话。这个组合的好处很明显时间成本低又不用把宝全押在单一工具上。下面我走一遍具体流程。2. 环境准备与靶场网络发现2.1 Metasploitable2靶机的两种常见落地方式拿到或下载Metasploitable2镜像之后最关键的并不是双击打开而是先把网络模式选对。我用过VMware和VirtualBox两种虚拟化方案Metasploitable2都能稳定运行但网络适配器建议直接用“仅主机模式”或自定义NAT网络。原因很简单靶机是和攻击机在同一个隔离段里互相通信不接触物理网络既符合合法测试原则也能避免靶机上的老版本服务暴露到共享网络带来不必要的风险。在VMware里创建虚拟机后依次进入“处理器”“内存”“硬盘”设置给1核CPU、512MB内存就够了。Metasploitable2的默认账号是msfadmin密码也是msfadmin这个账号拥有sudo权限可以用于靶机上的服务管理例如手动开启或重启Telnet。初次登录到靶机终端后建议执行两次apt更新然后安装或确认telnetd服务处于开机自启状态别在爆破前才发现服务根本没起来。如果你是跟着某套教程走的可能会看到对方用的Metasploitable2和Kali Linux共同挂在同一个VMnet8网络下Kali的网段为192.168.1.0/24靶机为192.168.1.120。实际抄作业时网络模式一旦不是“仅主机/NAT”IP规划自然会变。所以后面所有命令里我尽量保留“需要替换为实际IP”的提示避免直接照抄导致扫描落空。2.2 确定靶机IPNmap扫描承担的角色靶机在虚拟网络里启动后不会主动告诉你自己的IP是多少。这时需要使用Nmap做一次存活主机探测。这里不建议省掉这个步骤直接去爆破指定IP——万一IP变了爆破打了半天全是连不上的超时报错纯粹浪费时间。常规做法是扫描当前网段内所有主机nmap -sn 192.168.1.0/24-sn参数只做Ping扫描不涉及端口探测速度很快。根据返回的MAC地址和主机名通常能区分出哪个是Kali、哪个是Metasploitable2。在VMware仅主机模式下靶机的主机名会直接显示为Metasploitable这个特征很明显基本一眼就能认出来。确认主机存活后再做一次常规端口扫描nmap -sS -sV -p 23 192.168.2.88其中-sS是TCP SYN半开扫描速度比全连接扫描快且不易触发部分系统日志-sV用于探测服务版本-p 23把范围收缩到Telnet端口突出针对性。如果发现23端口显示为open且版本是Linux telnetd说明目标服务可用接下来就可以进入爆破环节了。注意Nmap的SYN扫描需要root权限很多发行版下普通用户执行会提示权限不足。如果遇到这类报错直接在命令前加sudo即可。2.3 关于安全边界的再次提醒无论如何这个流程只适合在Metasploitable2这类明确授权为“可攻击测试”的环境下执行。靶场的全套默认配置就是开放这些漏洞服务目的就是让学习者研究攻击路径。如果对方是生产服务器或外部机构资产未经授权去跑一次暴力破解性质就完全不同了——轻则封IP重则触发法律风险总是得不偿失。3. 前期准备Telnet服务确认与测试账号创建3.1 Telnet服务启停与状态检查Metasploitable2默认会开启Telnet但如果你想从头模拟“目标服务刚被运维开起来”的状态建议按下面的顺序操作一遍。先登录靶机终端msfadmin/msfadmin然后切换为root执行sudo su - service telnet status service telnet start如果系统提示“Unit telnet.service could not be found”说明Telnet服务未以systemd方式注册你需要手工修改inetd配置文件。Metasploitable2里Telnet通常由openbsd-inetd托管编辑/etc/inetd.conf找到telnet那行去掉行首的#注释保存后执行service openbsd-inetd restart用netstat -antlp | grep :23确认端口正在监听再用nmap -p 23 靶机IP做一次外部验证确保服务真的从网络上可见。3.2 在靶机上添加低权限测试用户我强烈建议你在原生的msfadmin之外额外创建一个不存在的、仅用于爆破实验的低权限账号。比如创建一个用户名为webuser、密码设为hello123的账号。这样做的价值有两个第一能区分“爆破成功后行为是否符合预期”——如果爆破结果只用msfadmin反而容易混淆默认弱口令和真实弱口令的区别第二低权限用户测试后可以随时删除不影响靶机原始状态适合反复练习。具体命令sudo useradd -m -s /bin/bash webuser echo webuser:hello123 | sudo chpasswd然后从攻击机测试一次手工Telnet连接telnet 192.168.2.88输入webuser和hello123确认能进入系统Shell。这一步看似多余但作用非常大——它能把问题范围缩小到“认证层面”。如果Telnet本身连接就不通后续无论Hydra还是MSF所有报错都会指向网络或服务故障而不是密码字典问题。4. Hydra爆破Telnet账号密码的完整实操4.1 Hydra核心参数逐个拆解Hydra的使用套路说简单也简单但参数多起来之后新手容易混淆几个关键点。我这里以爆破Telnet为例把最常用的一组命令拆开讲。先看标准命令模板hydra -l webuser -P /usr/share/wordlists/fasttrack.txt 192.168.2.88 telnet -V -t 4-l webuser指定单一用户名。因为我们已知测试账号是webuser爆破复杂度直接降了一个维度。-P /usr/share/wordlists/fasttrack.txt指定密码字典文件路径。Kali自带很多字典fasttrack.txt是其中规模适中的一个内含常见高频弱密码适合快速验证。192.168.2.88目标主机IP。telnet指定服务协议。Hydra会根据这个参数加载对应的爆破模块。-V详细输出。每尝试一组账号密码屏幕上都会实时显示当前结果方便观察爆破进度。-t 4并发连接数。对Telnet服务来说并发太高会让服务器SSH/Telnet模块直接崩溃或触发锁账号策略推荐4~8之间选择。如果想要同时枚举多个用户名和密码组合形式可以改用-L users.txt和-P pass.txt例如hydra -L /root/users.txt -P /root/pass.txt 192.168.2.88 telnet -V -t 4这种方式适合对目标账号完全未知时的批量排查但耗时指数级上升。实战中优先用“已知用户字典密码”缩小范围效率高得多。4.2 完整执行过程与结果解读我把命令跑起来后输出大致是[DATA] attacking telnet://192.168.2.88:23/ [23][telnet] host: 192.168.2.88 login: webuser password: hello123当这一行出现时说明爆破成功而且Hydra已经在结果里回显了正确的账号密码。它会停止继续测试当前目标因为默认情况下一旦找到正确密码就结束攻击。如果多账号列表里还有其他目标它仍然会继续跑下一组。这里有个细节值得注意Hydra成功标志并非每次都是[23][telnet]字样也可能带有别的协议描述。不同版本输出格式略有差异但核心都是“host login password”三要素同行的格式。只要看到这一行就说明认证被绕过目标已沦陷。如果跑了半天输出全是[ERROR]或一直在刷[23][telnet]但没有成功行排查重心不要再放在命令格式上优先检查三件事服务端口是否开放、账号是否真实存在、字典是否包含对应密码。我见过太多人盯着Hydra版本和线程数折腾半天最后发现目标IP写错了。4.3 并发数、超时与目标服务稳定性在线爆破性能调优是需要经验的。Hydra默认并发数是16但在通用密码测试场景下不建议直接拉满。原因在于Telnet这类服务本身对并发连接的处理能力有限——每个连接都伴随完整的BANNER协商和登录交互过程连接数一高服务器可能来不及响应导致auth timeout增多误报率上升。我给一个快速判断方法观察日志里[ERROR]频率如果5秒内出现3次以上果断把-t降到2宁慢勿错。另外一个容易被低估的参数是-w也就是每个连接的超时等待时间。默认是30秒但对Telnet这种老年人协议握手速度往往很快超出10秒基本就可以判定服务不可用。根据经验设-w 5反而能提高整体速度大幅减少无效等待。4.4 Hydra与字典选择的关系并不是字典越大越好而是字典里的密码“质量”才是核心。你会发现直接给Hydra喂一个几千万行的大字典爆破一个账号可能要跑十几个小时而小字典可能10秒内就出结果。区别在于字典里的密码是否符合目标场景。比如内网设备看重简单密码常见组合是admin、123456、password、qwerty、1qaz2wsx等而靶机环境里容易出现直接用公司名、产品名当密码的情况。Kali自带的字典推荐优先试这两个/usr/share/wordlists/metasploit/unix_passwords.txt /usr/share/wordlists/fasttrack.txt前者针对Unix账户密码场景后者覆盖通用弱密码两者叠变频次最高。如果有更精细的需求还可以自己写一份定制字典用-P指向纯文本文件每行一个密码不要有多余空格或空白行。这样操作最稳。5. 用MSF完成Telnet爆破并建立会话5.1 Metasploit模块选择auxiliary/scanner/telnet/telnet_loginMetasploit用于Telnet爆破的模块名是auxiliary/scanner/telnet/telnet_login。它的工作逻辑和Hydra很相似的也是尝试用户名密码组合但比Hydra多了一个核心能力爆破成功后直接通过msfconsole的会话机制把Telnet连接托管到Metasploit的Session中不需要再单独开终端手动登录。加载模块的命令msfconsole -q use auxiliary/scanner/telnet/telnet_login show optionsshow options会列出所有可配置项关键参数如下RHOSTS目标IP必填。RPORT目标端口默认23。USERNAME指定测试用户名例如webuser。PASSWORD指定测试密码如果只做单密码测试可以这样用。USER_FILE和PASS_FILE分别指向用户名和密码字典文件。VERBOSE设为true后模块会打印每一步尝试结果方便观察排错。设置命令示例set RHOSTS 192.168.2.88 set USERNAME webuser set PASS_FILE /usr/share/wordlists/fasttrack.txt set VERBOSE true run5.2 MSF爆破会话的建立与验证当模块爆破成功后输出类似[] 192.168.2.88:23 - Found remote platform: Linux [] 192.168.2.88:23 - Login Successful: webuser:hello123紧接着在msf6提示符下输入sessions -l就能看到已建立Telnet会话。sessions -i 1进入该会话后Telnet shell直接在你眼前展开可以执行whoami、ifconfig等命令验证控制权。这里没有多余的系统命令审计也没有EDR拦截就像直接坐在靶机面前敲键盘一样。在这个环节里我实际踩过的坑是MSF的telnet_login模块对密码字典格式比较敏感如果字典文件里每行多了一个末尾空格或编码不是UTF-8爆破时会持续出现[-] 192.168.2.88:23 - LOGIN FAILED但真实密码就在文件里就是匹配不上。解决办法很简单用sed或文本编辑器清理字典确保每行前后无空白字符。5.3 爆破成功后的会话托管优势刚才提到的“托管会话”优势在横向渗透场景里会非常明显。你不需要再额外考证目标机器上的Shell是怎么来的session已经帮你建好之后加载post/multi/manage/shell_to_meterpreter模块就能把普通Shell升级为Meterpreter会话为后续提权和信息收集做准备。这条链路的组合逻辑如下Hydra负责快速验证弱口令是否存在MSF负责稳定接管会话、建立后续持久通道。哪怕是同一个密码分开用两种工具跑一遍效果和体验完全不同值个学习成本。6. 常见问题排查与实战避坑经验6.1 爆破结果100%无反应的排查顺序我在很多次实操分享中都会被问到同一个问题为什么Hydra跑完了全是[ERROR]或零成功记录我该怎么办这里给出我长期总结下来的排查顺序按优先级排列。第一确认目标地址和端口还能连通。不要想当然用nc -vz 192.168.2.88 23测一下。如果连接失败直接跳到网络和防火墙检查。第二确认服务真的支持交互式登录。有些服务只是开了23端口但背后没绑定Telnet协议Hydra自然无法完成登录。第三确认用户名字典里有没有目标账号。爆破的前提是对方得先有一个真实存在的账号如果字典里没有对应用户名密码再对也没用。第四检查字典内容的格式。一次批量字典导入后最好先cat一眼确认没有BOM头或隐藏回车符。6.2 主机渗透中的常见失误对照表这里整理了一张速查表方便你在实际操作中对照现象可能原因解决办法Hydra显示login无效用户名不存在或拼写错误用MSF的telnet_version模块确认BANNER找准用户名爆破完成但无成功记录密码不在字典内换字典或使用生成规则扩展密码组合MSF模块一直LOGIN FAILED字典格式有空格用sed -i s/[[:space:]]$//清理文件并发过高导致大量超时线程数设置过大将-t降为2~4增加-w 5会话建立后执行命令卡死Telnet协议交互阻塞输入exit退出会话重新用sessions -i进入端口探测显示23 filtered防火墙拦截外部连接检查NPCAP/VMware网络设置换成仅主机模式6.3 登录流程中的账号枚举与策略规避问题暴力破解还有一个衍生功能是“账号枚举”。哪怕是同一份密码对多个用户名跑一遍根据返回内容的细微差异就能判断哪些用户名存在。不过对Metasploitable2这种完全放开的靶机来说服务器并不会有太严格的锁定策略所以可以肆无忌惮地跑。但换到真实环境很多系统会配置fail2ban、账号锁定或登录延迟。这时一上来就用大字典猛跑几万次是非常不理智的。至少应该先做小规模试探观察响应时间差异和服务端返回的认证错误信息再决定要不要继续。6.4 组合实测Hydra优先、MSF后置在靶场实验时我输出了一套相对固定的组合流程分享给你作为模板用Nmap确定目标IP和端口状态。用Hydra快速爆破字典选fasttrack.txt并发控制在4。爆破成功后不急着用Shell做后续操作先记录正确的账号密码组合。加载MSF的telnet_login模块做二次验证并建立Session。在Session里执行id和cat /etc/passwd确认当前权限和用户信息。收尾清理删除测试账号重启靶机网络服务归档测试日志。这套流程在靶场效果很好没有多余动作每一步都有明确目的。7. 扩展方向从Telnet嗅探到其他服务的安防提升7.1 Telnet本身的问题明文传输这次用Telnet做实验还有一个很实际的意义——通过观察它的明文认证过程能深刻理解“为什么现代运维都弃用Telnet而改用SSH”。当Hydra连接Telnet时密码传输是不加密的网络上其他节点只要开启抓包就能直接看到webuser hello123的字符流。如果这台机器部署在真实内网就等于把口令广播给所有人。这也是我建议所有入门者去Metasploitable2上复现Telnet爆破的原因之一。你亲手抓一次包比背十遍概念都管用。实操时可以配合Wireshark在宿主机上开个网卡抓包输入密码前后对比数据包内容明文密码跃然屏上。7.2 从Telnet到SSHHydra的多协议实战延伸Hydra支持的服务不局限于Telnet学到爆破的原理后举一反三很容易。同样一个密码组合换到SSH只需要改协议关键字为sshhydra -l root -P /usr/share/wordlists/rockyou.txt 192.168.2.88 sshFTP就把ssh改成ftp。每种协议的登录交互细节不同Hydra都内置了对应模块但核心玩法不变字典目标协议。掌握了这套方法论暴力破解的适用范围一下就从Telnet扩展到一大片服务。7.3 针对弱口令的防御策略建议结合这次靶场实战再从防守方角度提几点建议。第一禁用Telnet统一使用SSH并要求密钥认证优先第二即便使用SSH密码登录也务必开启fail2ban做来源IP自动封禁第三账号密码策略要强制复杂密码并定期更换同时避免多台服务器共用一套口令第四对登录行为增加告警比如短时间多次认证失败就直接通知安全管理员。这些习惯不该等到被攻破以后再学。靶场的价值就在于此——让你站在攻击者视角理解漏洞成因反过来才知道防御重点放在哪里。8. 实操心得与收尾建议回到最开始的问题暴力破解到底算什么级别的攻击手法从技术上来说它门槛确实不高Hydra一装、字典一下、命令一敲好像人人都会。但真正的复杂性藏在爆破前的情报收集、爆破中的策略控制和爆破后的权限利用这三层。没有前期端口扫描你连目标弱点都找不着没有合理并发控制服务器可能先把你自己的IP锁了没有会话托管和权限提升思路弱口令即使拿到也难以转化成有效战果。我个人在实际操作中的体会就是至少完整走通“Nmap扫描Hydra爆破MSF接管”这一条链路很多安全概念就自然串起来了。因为暴力破解、认证机制、会话管理、端口服务之间的关系不再是一段文字描述而是屏幕上实际滚过的日志。如果你只看了一个工具的操作演示建议一定亲手在Metasploitable2上完整跑一遍。而且可以故意把密码设错、把字典换空先把各种报错都触发一遍再对照本文的排查顺序修正。这个刻意“搞砸”的过程其实比一次顺利爆破学到的东西多得多——成功路径只有一条但错误路径会有几十种你把错误路径都走过以后遇到真实故障才不会慌。最后分享一个小技巧无论用Hydra还是MSF爆破结束后记得模糊处理测试目标信息和爆破结果。即使是对自己团队负责也不要把靶机的账号密码明文贴在共享文档里免得随手分享带来不必要的风险。实验记录存档时密码部分建议用哈希替代测试报告只保留“弱口令存在”的结论描述就够了。这一次的组合链路从命令层面看很简单从思维层面看却很完整。希望这篇实战记录能帮你在安全入门路上少踩几个坑也顺便把真正该记住的“为什么”装进脑子里。