第 2 章 · Metasploit 系统架构与核心组件


第 2 章 · Metasploit 系统架构与核心组件

章节摘要:接口(msfconsole/Armitage/msfvenom)、模块树、数据库集成。动手配置 msfdb init 后再做扫描。

学习目标

  1. 区分 msfconsole、msfvenom、Armitage、msfrpcd 四种接口的适用场景
  2. 读懂模块路径的分类法,分清 Exploit / Payload / Auxiliary / Post / Encoder / Nop
  3. 完成 msfdb init 数据库初始化,会用 db_status、db_nmap、hosts、services

本章定位

第 1 章讲清了"为什么这么设计",本章回答"由哪些零件组成、怎么把它跑起来"。Metasploit 是一座复杂的机器,但对外只有少数几个入口:控制台、载荷生成器、图形界面、RPC 服务。掌握这些入口的职责边界,是避免"在错误的地方找功能"的关键。

本章三块内容

  • 2.1 用户接口层:msfconsole(日常测试主入口)、msfvenom(独立生成 payload 文件)、Armitage(可视化)、msfrpcd(RPC 服务)的选型
  • 2.2 模块分类体系:六类模块的职责、模块路径解读、staged 与 stageless payload 的区别
  • 2.3 环境准备与数据库:PostgreSQL 集成、workspace 隔离、db_nmap 把扫描结果变数据库资产

为什么接口分这么多?

因为四种接口服务四种不同场景:

接口 场景 关键命令/用法
msfconsole 日常交互、模块编排 search use set run
msfvenom 生成独立的 payload 文件 -p payload LHOST=... LPORT=... -f exe
Armitage 图形化多主机管理 点击式操作、拓扑视图
msfrpcd 自动化与团队协作 MessagePack-RPC 协议

其中 msfconsole 是主线,msfvenom 是"生产零件"的工厂,两者都值得重点掌握。

动手:本章完成后的环境状态

# 完成 2.3 后,你应当能看到以下输出 msfdb init # [*] database already started # [+] Creating database user 'msf' # [+] Creating databases 'msf' msfconsole -q db_status # [*] postgresql connected to msf db_nmap -sV 192.168.56.0/24 hosts # 地址 活跃 端口 操作系统 服务 # 192.168.56.10 是 445 Windows SMB services # host port proto name state info ​

db_status 显示 postgresql connected、hosts 能列出扫描到的主机,说明数据库链路已打通。之后的扫描、漏洞映射都会自动落库。

模块树快速记忆法

exploit/windows/smb/ms17_010_eternalblue │ │ └── 具体模块名(CVE 相关) │ └── 服务类型 └── 平台(这里指 Windows) payload/windows/meterpreter/reverse_tcp └── staged meterpreter:先发小 stager,再下载完整 DLL ​

路径 = 类型/平台/服务/名称。看到路径就能推测模块能力,看到 rank(excellent/good/manual)就能估成功率。

各节内容导读

  • 2.1 用户接口层:深入 msfconsole 的 CommandDispatcher 机制、msfvenom 的"模板选择—载荷注入—编码迭代—格式化输出"流程
  • 2.2 模块分类体系:Msf::Module 类继承关系、staged/stageless 取舍、Encoder/Nop/Evasion 的隐身技术栈
  • 2.3 环境准备与数据库:msfdb init 的完整内部流程、workspace 逻辑隔离、数据库驱动决策链

知识关联

概念 出现在 2.x 后续将用到
msfconsole 基础命令 2.1 第 3 章所有工作流
msfvenom 载荷生成 2.1 5.2 自动化、5.3 免杀
模块分类与 staged payload 2.2 3.2 渗透实施
db_nmap / workspace 2.3 3.1 信息收集

⚠️ 环境提醒:msfdb init 在 Kali 上是一行命令,但如果你手动装框架,PostgreSQL 可能需要单独启动。每次进 console 先 db_status,确认数据库在线再干活。

💡 学习提示:本章结束前,请亲手完成一次 msfdb init + db_nmap + services。数据库"连上"与"没连上",后续章节的体验完全不同。

子章节

  • 2.1 用户接口层
  • 2.2 模块分类体系
  • 2.3 环境准备与数据库
作者与出处
原作者:灏天文库
来源:平台策划编纂
整理人: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U