metasploit测试
作者:娱乐 来源:知识 浏览: 【大 中 小】 发布时间:2026-10-17 06:14:40 评论数:
打开Metasploit控制台,测试敲下 msfconsole,测试几秒后那个熟悉的测试banner就会出现。很多人第一次用它,测试都会卡在同一个地方:模块搜到了,测试参数设完了,测试run 一敲,测试返回一个连接超时或者认证失败。测试问题往往不在工具本身,测试而在测试之前有没有把目标摸清楚。测试
我拿一台自己搭的测试Metasploitable2虚拟机做过几轮测试。这台机器是测试专门用来练手的,漏洞多到像筛子。测试第一轮我直接搜 vsftpd,测试找到那个著名的测试2.3.4后门模块,设好RHOSTS和RPORT,exploit下去,直接拿到root shell。整个过程不到三十秒。这种“一把梭”的体验很容易让人产生错觉,以为Metasploit就是点几下按钮的事。
换个目标就没这么顺了。第二轮我挑了一台打了补丁的Ubuntu Server,同样跑 db_nmap 扫端口,发现开了22和80。22是OpenSSH 8.2,80是Apache 2.4.41。搜 ssh_login 模块,挂上字典跑爆破,跑了二十分钟没结果。换 apache 相关的模块,能用的几个要么版本对不上,要么需要特定配置。这时候才意识到,Metasploit的模块库再大,也不是万能钥匙。它更像一个弹药库,你得先知道目标是什么锁,才能挑对子弹。
有个细节值得说。Metasploit的 check 命令经常被忽略。很多模块支持先探测再攻击,比如 ms17_010_eternalblue,跑一下check会告诉你目标是否真的存在漏洞。我见过有人对着Windows 10 21H2硬打MS17-010,打了半天没反应,还以为是payload选错了。实际上那个补丁早在2017年就推了,目标根本不受影响。check一下,省下的是自己的时间。
Payload的选择也是个坑。反向shell和绑定shell的区别,新手容易搞混。目标在内网、你在外网,用 windows/meterpreter/reverse_tcp 大概率连不回来,因为目标出不了网。这时候要么用 bind_tcp,要么先打隧道。我习惯在测试前先确认网络拓扑,LHOST填哪个网卡的地址,LPORT有没有被防火墙拦,这些比选模块更重要。有一次我在云主机上跑Metasploit,忘了安全组只开了22和80,meterpreter死活连不上,排查了半小时才发现是入站规则没放行。
后渗透阶段才是Metasploit真正拉开差距的地方。拿到meterpreter会话之后,hashdump 抓本地哈希,getsystem 尝试提权,migrate 迁移到稳定进程,keyscan_start 开键盘记录。这些命令串起来,基本能摸清一台机器的底细。但别急着炫耀,真实环境里EDR会盯着这些动作。我试过在装了CrowdStrike的测试机上跑meterpreter,会话建立不到十秒就被切断,日志里留了一串告警。工具本身没有隐身能力,怎么用、什么时候用,取决于你对目标防御体系的判断。
数据库支持是另一个容易被低估的功能。db_import 导入Nmap的XML结果,hosts 和 services 命令直接列出所有资产,vulns 关联已知漏洞。测试机多了以后,不接数据库根本管不过来。我现在的习惯是每次测试前先 workspace 新建一个项目,扫完导入,模块调用时直接引用数据库里的主机,少打很多字。
Metasploit不是魔法。它把漏洞利用的流程标准化了,但判断目标、选择路径、绕过防御,这些仍然依赖操作者的经验。工具越顺手,越容易让人跳过侦察和验证。真正花时间的部分,从来不在 msfconsole 里面。
