前言:Metasploit是The Metasploit Framework的简称,也可以叫做MSF! MSF高度模块化即框架由多个module组成,是全球最受欢迎的工具。
Metasploit Framework(MSF)远远不仅仅是一个漏洞的集合。这是您可以建立和利用您的自定义需求的基础架构。这使您可以专注于您独特的环境,而不必重新发明轮子。
官网地址: https://www.metasploit.com/ ,在这里你可以获得官方文档及其他帮助,官方文档中有大量API开发规范
项目地址: https://github.com/rapid7/metasploit-framework/
1.0. MSF架构
基础库文件名作用RexRex功能库实际来讲并不属于MSF。如HTTP/TELNET/SSH等连接功能严格来讲是属于操作系统自带的功能,MSF只是去以一个用户的身份去调用它而已。ramwork-coreCore库是真正属于MSF的最底层的库,其中包含的都是MSF框架的底层功能,如数据管理,session管理,插件管理这些核心底层功能。framewok-baseBase库是在针对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 ViewMsf网页界面,存在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:linuxinfo查看模块信息info 如果用use使用了一个模块,直接输入info查看。usesearch找到模块后,用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调用外部的扫描命令,比如openvasloadpath加载自己的模块route添加一条路由,比如发往某个子网的流量都通过攻陷的机器发送。
下节内容永恒之蓝漏洞
版权归原作者 有点懒的码农 所有, 如有侵权,请联系我们删除。