渗透测试框架
Metasploit渗透框架
常见名词解释
POC
:Proof of Concept
,概念证明,用来证明漏洞存在的一段代码,没有攻击性EXP
:Exploit
,利用,利用系统漏洞进行攻击的动作、方式、方法,具有攻击性Payload
:有效载荷,指Exploit
执行成功之后,真正在系统进行执行的代码或者指令Shellcode
:一段用于利用漏洞而执行的代码,为16进制的机器码,由于其建立正向/反向 shell 而得名Client
:客户端Team Server
:服务端,C2
服务器,Beacon Payload
的控制器Beacon
:是Cobalt Strike
运行在目标主机上的payload
,Beacon
在隐蔽信道上我们提供服务,用于长期控制受感染主机。C2
:Command & Control Server
的简称,也就是命令与控制服务器
MSF简介
The Metasploit Framework
的简称。MSF
高度模块化,即框架由多个module
组成,是全球最受欢迎的渗透测试工具之一是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和流行的
shellcode
,并持续保持更新。
metasploit
涵盖了渗透测试中全过程,你可以在这个框架下利用现有的Payload
进行一系列的渗透测试。
MSF框架结构
-
Kali-metasploit
框架目录路径/usr/share/metasploit-framework
data
:包含metasploit用于存储某些漏洞、单词列表、图像等所需二进制文件的可编辑文件。documentation
:包含框架的可用文档。lib
:metasploit的库文件夹。plugins
:用来存放metasploit的插件。scripts
:用来存放metasploit的脚本,包括meterpreter及其它脚本。tools
:存放多种的命令行实用程序。modules
:存储metasploit的模块文件。
-
kali Metasploit
更新msfconsole -v #查看版本 apt-get update apt-get install metasploit-framework
MSF配置数据库
Metasploit支持使用数据库来保存渗透测试过程中获取的各种数据
- 开启
postgresql
数据库
service postgresql start
- 初始化
MSF
数据库
msfdb init
创建数据库用户:msf
创建数据库:msf
创建数据库:msf_test
创建配置文件:/usr/share/metasploit-framework/config/database.yml
创建保存MSF框架信息所需数据表
- 启动
msfconsole
msfconsole
Msfconsole
是Metasploit
框架的用户接口,我们能通过Msfconsole
接口使用Metasploit
中所有模块
Msfconsole
主要用于:
- 管理
Metasploit
数据库 - 管理会话
- 配置启动
Metasploit
模块
启动msfconsole
时,MSF会使用创建的msf用户自动登录到msf数据库
- 查看数据库连接状态
db_status
- 连接到其他数据库
db_connect 用户名:口令@服务器地址:端口/数据库名称
MSF命令查询
常用命令
help - 查看命令
show exploits – 查看所有可用的渗透攻击程序代码
show auxiliary – 查看所有可用的辅助攻击工具
[show ]options/advanced – 查看该模块可用选项
show payloads – 查看该模块适用的所有载荷代码
show targets – 查看该模块适用的攻击目标类型
search – 根据关键字搜索某模块
info – 显示某模块的详细信息
use – 使用某渗透攻击模块
back – 回退
set/unset – 设置/禁用模块中的某个参数
setg/unsetg – 设置/禁用适用于所有模块的全局参数
数据库管理命令
msfdb init # 启动并初始化数据库
msfdb reinit # 删除并重新初始化数据库
msfdb delete # 删除并停止使用数据库
msfdb start # 启动数据库
msfdb stop # 停止数据库
msfdb status # 检查服务状态
msfdb run # 启动数据库并运行msfconsole
核心命令
? 帮助菜单
banner 显示 Metasploit banner信息
cd 更改当前工作目录
color 切换颜色
connect 与主机通信
debug 显示对调试有用的信息
exit 退出控制台
features 显示可以选择加入的尚未发布的功能列表
get 获取特定变量的值
getg 获取全局变量的值
grep 筛选以一条命令的输出
help 帮助菜单
history 显示命令历史记录
load 加载框架插件
quit 退出控制台
repeat 重复一个命令列表
route 通过一个session会话路由流量
save 保存活动的数据存储
sessions 导出会话列表并显示会话信息
set 将一个特定环境的变量设置为一个值
setg 将一个全局变量设置为一个值
sleep 在指定的秒数内不执行任何操作
spool 将控制台输出写入文件以及屏幕
threads 查看和操作后台线程
tips 显示有用的提示清单
unload 卸载框架插件
unset 取消设置的一个或多个变量
unsetg 取消设置一个或多个全局变量
version 显示框架和控制台库版本号
模块命令
advanced 显示一个或多个模块的高级选项
back 从当前环境返回
clearm 清除模块堆栈
favorite 将模块添加到最喜欢的模块列表中
info 显示一个或多个模块的详细信息
listm 列表中的模块栈
loadpath 从路径中搜索并加载模块
options 显示一个或多个模块全局选项
popm 将最新的模块从堆栈中弹出并使其处于活动状态
previous 将之前加载的模块设置为当前模块
pushm 将活动模块或模块列表推送到模块堆栈
reload_all 重新加载所有模块
search 搜索模块名称和描述
show 显示给定类型的的模块或所有模块
use 通过名称或搜索词/索引选择使用模块
作业命令
handler 启动一个payload处理程序作为job
jobs 显示和管理 jobs
kill 杀掉一个job
rename_job 重命名一个job
资源脚本命令
makerc 将从开始输入的命令保存到文件中
resource 运行存储在文件中的命令
后端数据库命令
analyze 分析关于一个特定地址或地址范围的数据库信息
db_connect 连接到一个现有的数据服务
db_disconnect 与当前的数据服务断开连接
db_export 导出一个包含数据库内容的文件
db_import 导入扫描结果文件(文件类型将被自动检测)
db_nmap 执行nmap并自动记录输出
db_rebuild_cache 重建数据库存储的模块缓存(已废弃)
db_remove 删除已保存的数据服务条目
db_save 将当前的数据服务连接保存为默认,以便在启动时重新连接
db_status 显示当前的数据服务状态
hosts 列出数据库中的所有主机
loot 列出数据库