1.Metasploit框架结构
1.1总览
- 基础库文件
- Rex为最底层,实现网络套接字、网络应用协议、客户端服务端交互、数据库支持等
- framework-core实现与上层模块交互的接口
- framework-base对framework-core的扩展封装,用于提供各种接口供用户调用
- 基于framework-base实现的六大模块
- Exploits漏洞利用模块
- Aux辅助模块:信息收集与扫描
- Post后渗透模块
- Payloads攻击载荷(真正执行的代码、后门或木马)
- Encoders编码处理以实现绕过与免杀
- Nops空指令模块(为了提高payload稳定性)
- 插件
- 结合Nessus、OpenVAS等工具,通过Metasploit相关插件与命令调用,扩充框架功能
外部安全工具扫描完,利用Metasploit进行验证
- 结合Nessus、OpenVAS等工具,通过Metasploit相关插件与命令调用,扩充框架功能
- 扩展脚本
除了自带的脚本,还可以从外部进行集成,之后利用Metasploit调用执行 - 接口
- msfconsole常用于访问Metasploit,进入框架
- msfgui
提供gui界面kaili和parrot未预装,类似的还有(Armitage、Viper(炫彩蛇))
- 功能程序
一系列可以直接运行的功能程序,其中msfvenom可以将攻击载荷封装为可执行文件、c、javascript语言等多种形式,并可进行各类编码
- msf*scan
msfelfscan、msfpescan、msfbinscan、msfmachscan提供了在PE、ELF等各种类型文件中搜索特
定指令的功能,可以帮助渗透代码开发人员定位指令地址 - msfvenom
主要用来生成木马程序的,为msfpayload和msfencode结合体
- msf*scan
1.2Metasploit目录结构
kaili linux下目录:
cd /usr/share/metasploit-framework/
- 目录中文件如下:
- 常用文件
- data文件夹(msf中一些可编辑文件)
- document文件夹(一些说明文档)
- lib文件夹(代码)
- modules(存储MSF所有模块)
其中evasion为后门和木马生成模块
- plugins(插件存储目录)
- scripts(Meterpreter和其他脚本)
- tools(命令行工具)
Metasploitable2-linux靶机系统,安装作为靶机
1.3基本使用方式
- 需要Postgresql数据库(关系型数据库)
systemctl start postgresql
启动systemctl enable postgresql
设置开机自启- 命令行输入
msfconsole
启动
提示
no database YAML file
时,需先去初始化文件msfdb init
- 命令框架
- help查看所有命令
- Core Commands核心命令
- Moudule Commands模块命令
- Job Commands后台任务命令
- Resource Scripts Commands资源脚本命令
- Database Backed Commands数据库后端凭证
- Credentials Backed Commands证书/凭证后端命令
- Developer Commands开发人员命令
核心命令
1. connect命令(获取信息以及内网渗透)
-P:要使用的代理列表
-p:指定源端口
-S:指定源地址
-s:使用ssl连接
-z尝试连接之后返回
connect [options] <host> <port>
示例:connect IP或域名 端口,之后get /
命令获取一些服务器信息
2. show展示相关模块信息(会比较慢)
参数:
all、encoders、nops、exploits、payloads、auxiliary、post、plugins、info、options
3. search搜索某模块使用方法
search -h查看所有命令
支持模糊查找:ms08_067、ms08-067、MS08-067结果都一样
- search 漏洞名
search name:mysql
名字里含mysql的
search ms08-067
搜索结果包含信息:
名称/披露日期/排名/检查/说明- rank按照可靠性进行排序(利用难度由高到低)
- excellent 绝不会使目标服务器崩坏(sql注入、命令执行、文件包含)
- great 该漏洞利用程序有一个默认的目标系统,可以自动检测适当的目标系统,或在目标目标服务版本检查之后返回到一个特定的返回地址
- good 该漏洞利用程序有一个默认目标系统,并且是这种类型软件的"常见情况"
- normal 该漏洞利用程序是可靠的,但依赖于特定版本,并且不能或不能可靠的自动检测
- average 该漏洞利用程序不可靠或难以利用
- low 对通用平台而言几乎不可利用(或成功率低于50%)
- manual 该漏洞利用程序不稳定或难以利用,并且基于DOS。(若模块在特别配置时才会用到,否则不会被用到,也可评为该级)
- path-根据路径去查
search path:mysql
- platform-平台查找缩小查询范围,列出高rank的漏洞
search platform:mysql
- type-根据类型去查
type(exploit,payload,auxiliary,encoder, evasion, post, nop)
search type:exploit
类似于show - 联合查找(结合上述关键字)
search name:mysql type:exploit
- 根据CVE搜索
search cve:CVE-2021-44228 type:exploit
search cve:2021 name:linux
查找2021年linux相关模块
4. USE命令
加载使用某个模块:use 模块名
先用search ms08-067
搜索对应漏洞利用模块的全称,之后使用use exploit/windows/smb/ms08_067_netapi
使用该模块
- 退出模块:
back
,不要用exit会直接退出msf - 使用info命令查看模块详细信息
可以在加载前使用info exploit/windows/smb/ms08_067_netapi
,也可以在装载模块后使用:先use 模块名
再info
运行后会包含的一些参数:targets(可用攻击目标);check supported(是否支持利用前检查是否存在漏洞);payload信息;description(漏洞描述与执行过程);references(参考文档) - show命令显示想知道的参数
use命令调用模块后,使用show options
查看参数
参数名/默认值/是否必须/描述
name参数中RHOSTS为目标主机IP,其后有S说明可以攻击多个目标
show targets
显示攻击目标类型
一般Exploit target(利用目标)为自动,需要设定下攻击目标
set target 34
设定攻击目标参数,之后show options
显示设置后的参数
set RHOSTS 192.168.1.16
设置攻击目标IP
unset RHOSTS
取消设置
配置后使用run
或exploit
进行执行