一、初识Metasploit(MSF使用详解超详细)

前言:Metasploit是The Metasploit Framework的简称,也可以叫做MSF! MSF高度模块化即框架由多个module组成,是全球最受欢迎的工具。
Metasploit Framework(MSF)远远不仅仅是一个漏洞的集合。这是您可以建立和利用您的自定义需求的基础架构。这使您可以专注于您独特的环境,而不必重新发明轮子。
官网地址: https://www.metasploit.com/ ,在这里你可以获得官方文档及其他帮助,官方文档中有大量API开发规范

项目地址: https://github.com/rapid7/metasploit-framework/

1.0. MSF架构

基础库文件名 作用
Rex Rex功能库实际来讲并不属于MSF。如HTTP/TELNET/SSH等连接功能严格来讲是属于操作系统自带的功能,MSF只是去以一个用户的身份去调用它而已。
ramwork-core Core库是真正属于MSF的最底层的库,其中包含的都是MSF框架的底层功能,如数据管理,session管理,插件管理这些核心底层功能。
framewok-base Base库是在针对Core库进行进一步人性化的拓展的库,算作一个中间层,为开发者提供API以轻松调用MSF的功能,我们使用的各种插件,我们上期提到的console接口,还有收费版的UI界面,以及自己开发的插件,都是在base库的基础上进一步拓展的。
Plugin插件 Plugin插件,这里提到的插件与我刚刚讲到的有略微差异,他这里提到的插件指的是成熟的工具/软件,如各种成熟的扫描器,老牌扫描厂商的存在,已经不需要MSF再去开发新的插件啦,直接调用就好啦。

1.1. 模块介绍

模块名称 模块作用
Auxiliary 负责执行信息收集,扫描,嗅探,指纹识别,口令猜测和Dos攻击等功能的辅助模块
Exploits 利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动,被动)
Payloads 成功exploit之后,真正在目标系统执行的代码和命令。
Post 后期渗透模块,在取得目标系统远程控制权后吗,进行一系列的后渗透攻击动作,如获取敏感信息,跳板攻击等操作.
Encoders 对payload进行加密,躲避antiviru检查的模块。
Nops 提高payload稳定性及维持大小,在渗透攻击构造恶意数据缓冲区时,常常要在真正要执行shellcode之前添加段空指令区,这样当触发渗透攻击后跳转执行shellcode时,有一个较大的安全着陆区,从而避免受到内存地址随机化,返回地址计算偏差等原因造成的shellcode执行失败,提高渗透攻击的可靠性。

注意:msf的根目录是/usr/share/metasploit-framework/,默认存放模块目录如下,目录下的6个子文
件对上面6个模块一一对应


通常 Exp 和 PoC 都是可执行的漏洞利用脚本/程序 ,区别主要在于是否恶意。

  • PoC 是 Proof of Concept (概念验证) 通常是内含无害的漏洞代码,比如弹出一个计算器什么的
  • Exp 是 Exploit (漏洞利用) 通常是内含恶意的漏洞代码

exp在msf中来讲,其实本身并没有恶意行为,只是它会调用恶意payloads来进行测试,也就成为了大
众心中的形象:exp=恶意漏洞利用。
exploits文件夹下我们可以看到针对各种漏洞做的分类,payloads文件夹下我们可以看到三种payload类型。

payloads文件夹下我们可以看到三种payload类型:

  • Single : all-in-one,Single有点类似我们常说的大马,它不依赖任何环境或组件,只要它成功上
    传,它就可以实现它所有的功能。
  • Stager:目标计算机内存有限时,先传输一个较小的payload用于建立连接。stager有点类似我们常
    说的一句话,它只是用于建立连接。
  • Stages :利用stager建立的连接下载的后续payload。stages完全是为了搭配前者使用,这时候出于黑客逻辑肯定会问,为什么不接着上传第一步的single,答:stages-payload的功能更倾向于底
    层,执行系统命令,换句话说,你上传大马拿到webshell仍需要进一步提权,依然是要回归底层,如果从一开始就是底层,那还需要webshell吗?
  • Stager、Stages都有多种类型,适用于不同场景,Shellcode是payload的一种,由于其建立正向/反向shell而得名。

1.2. MSF接口

接口命令 接口介绍
Msfconsole 命令行控制台用户界面
Armitage 基于Msf的可视化高级渗透工具
Web View Msf网页界面,存在Mac os界面

1.3. MSF更新(msfupdate)

MSF在作为操作系统的一部分的时候,不再支持msfupdate,请使用apt 方式
apt update //更新软件园列表
apt install metasploit-farmework

1.4. MSFDB管理

虽然现在的MSF数据库不需要手动启动了,但是有的时候会觉得自己的数据库被搞乱了,还是想整理一下。可以使用msfdb功能,reinit参数用于重置数据库。这样的话msf相当于初始化。
基础操作命令

msfdb init # start and initialize the database postgresql
msfdb reinit # delete and reinitialize the database
msfdb delete # delete database and stop using it
msfdb start # start the database
msfdb stop # stop the database
msfdb status # check service status
msfdb run # start the database and run msfconsole

1.5. MSF基础操作

控制台命令支持tab补全,支持外部命令的执行。

help或者? 显示msfconsole可以使用的命令。
connect 可以理解为MSF中的nc命令,可以使用connect -h查看详细用法。
show 可以查看msf提供的资源。在根目录下执行的话,由于有些资源模块比较多,需要执行show命令较长的时间。show exploits:查看可以使用的exploit。除了exploits,还支持all,encoders,nops,payloads,auxiliary,post,options。有些选项需要用use使用一个模块后才能使用,show targets。
search 搜索模块简单搜索:search ms17_010。多条件搜素缩小范围:searchname:mysql type:exploit platform:linux
info 查看模块信息info 如果用use使用了一个模块,直接输入info查看。
use search找到模块后,用use使用模块use,exploit/windows/smb/mso8_067_netapi用use使用一个模块后,可以使用show options查看我们需要配置的选项,使用show targets选择目标主机系统,使用show payload选择payload。
set/setg 设置参数,比如要渗透的主机ip,payload等 ,我们可以使用show missing查看没有设置的参数。setg是设置全局变量,避免每个模块都要输入相同参数
unset/unsetg 取消设置参数和取消设置的全局变量
save 设置的此参数在下一次启动的时候不会生效,可以用save保存我们使用过程的设置。
check 检查模块是否真的存在这个漏洞,大部分模块没有check功能
back 返回msfcomsole根目录
run/exploit 开始使用模块exploit -j:以后台进行运行
sessions 查看当前以建立的sessions,说明已经拿到了shellsessions -i id 可以进入一个
session交互
load/unload 调用外部的扫描命令,比如openvas
loadpath 加载自己的模块
route 添加一条路由,比如发往某个子网的流量都通过攻陷的机器发送。

下节内容永恒之蓝漏洞

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>