下载地址:https://www.rapid7.com/products/metasploit/download/
——————————————————————
metasploit版本介绍:
metasploit在官网上显示的共有两个版本:
1、Metasploit Framework
2、Metasploit Pro
Framework版本是一款开源的免费版本,操作界面为:Command-line,并且提供社区支持,是被大众广泛使用的一款版本,同时也是因为大神HD More并没有说将metasploit给了Rapid 7就放弃了对framework的技术支持。
Pro版本就是Rapid 7公司推出的另一款付费的商业版本,首次下载可以使用14天,现在好像使用一年的价格大概在20多万到30万左右,既然是付费的那么功能肯定是很齐全的包括整个服务:License授权、Web APP测试、AV免杀、操作界面web/cmd/adv cmd、IDS/IPS绕过等等功能支持,具体的可以参考Pro的文档或者要是大佬有钱也可以单独去买一个玩儿玩儿。
同时还有两个版本:
1、Metasploit Community
2、Metasploit Express
这两个版本都是基于web的版本,但是如果说有些奇葩的操作,web界面是很受限制的,第一个是免费的,第二个就是收费的大概在3W人民币左右,既然是收费的那么也会提供相关的服务,比如Rapid 7企业的技术支持。
metasploit framework的安装:
MSF默认集成于kali linux之中,并且metasploit framework可以在windows、macOS、linux等操作系统中安装。
windows系统安装的步骤就很死板大概在700多MB左右(现在最新版本的Windows版的环境变量会自动配置,同时在Windows中是有概率出现db_connect失败的,具体的连接需要指定framework下对应文件的*.yml文件,当然你也可以自己选择其他数据库去指定)
linux系统只需要执行:sudo apt install metasploit-framework即可。(现在的msf不像过去的一样需要自启动sql,在启动msf的同时,sql也会一并启动并且连接/usr/share/metasploit-framework/config目录下的database.yml文件)
注:使用postgresql数据库存储数据默认开启5432端口
metasploit可以说是更新特别快的,几乎是一周一更新,但是涉及到它的构架组成还是是稳定的,毕竟metasploit是一个框架式的工具,既然是框架模式,那么就如同房子的地基一样,只要铸成那就是不会变的,除非推了重来。
构架图如下:
简单介绍其具体构成主要部分:
Rex:
1、基本功能库,用于完成日常基本任务,无需人工手动编码实现
2、处理socket连接访问、协议应答(http/SSL/SMB等)
3、编码转换(XOR、Base64、Unicode)
MSF::Core:
主要提供Msf的核心基本API,是框架的核心能力实现库
Msf::Base:
主要提供友好的API接口,便于模块调用的库
注:对于Plugin插件我个人认为主要是主:漏洞扫描,虽然自己有扫描模块,但是有更优秀的,那么就连接和调用外部扩展功能和系统
Exploits:利用系统漏洞进行攻击的动作,此模块对应每个具体漏洞的攻击方法为主动和被动,主要是调用shellcode进入到漏洞利用中;即:大致为一个模糊测试的过程。(漏洞:没有对传输内容做个很好的过滤;从而利用payload执行一个目标程序,达成控制服务器。)利用的过程完全是由我们发送的内容可以覆盖到寄存器中,到指定模块,对特定的那个点向其插入payload,再进行跳转,跳转到某一个地方。
注意:exploit这是一个流程(流程是不变的),不是payload达成效果的体现。
Payload:这是成功exploit之后,真正在目标系统执行的代码或指令。(Shellcode:只有当利用payload成功得到目标系统的shell,才能叫shellcode。Shellcode是payload的一种,由于其建立正向/反向shell而得名。不要搞混了)
三种Payload:目录所在/usr/share/metasploit-framework/modules/payloads/
1、Single:all-in-one(一体化,不需要依赖包或者库)相对来说是体积大的存在
2、Stager:目标计算机内存有限时,先传输一个较小的payload用于建立连接。相对来说是体积小的存在
(在真正的渗透测试中是完全可以考虑先传比较小的payload建立连接,再从建立的连接中给目标下载后续的payload)
3、Stages:利用stager建立的连接下载的后续payload
Auxiliary:执行信息收集、枚举、指纹探测、扫描等功能的辅助模块(没有payload的exploit模块)它不利用exploit,只做辅佐。注:存在的DoS模块主要是通过溢出让目标运行流程崩溃。
Encoders:对payload进行加密。躲避AV检查的模块;诸如:免杀。
Nops:提高payload稳定性及维持大小。
一:基本使用
使用前先命令升级:apt update; apt install metasploit-framework
在msf中是存在多个接口的,诸如:Msfcli使用接口、Msfconsole使用接口。而更多使用的都是Msfconsole接口,在这个接口下几乎可以使用全部MSF功能,同时控制台命令支持TAB自动补齐,支持外部命令的执行(系统命令等),启动方式两种:鼠标点击或者shell下使用msfconsole命令。
使用msfconsole启动是可以有参数设置的,比如不想要banner信息,如下:
其他需要的选项可以自己去参考。
注:在这里说明一个-r参数
msfconsole -r resource.rc
参数的作用是,直接执行一个rc文件,rc文件里面包含所有配置参数,即:整个流程将使用的命令,如:
只要msfconsole命令一执行,那么就可以得到目标session一个。
二:控制台命令
Banner(banner内容)
Color(模块是否显示颜色)
connect(类似为msf下的nc)
show(命令) auxiliary / exploits / payloads / encoders(manual手动、excellent极好用的模块等分类) / nops
search(命令) usermap_script / help search
如:search name:mysql / path:scada / platform:aix / type:aux /author:aaron / cve:2011 / 可多条件同时搜索
use(命令) dos/windows/smb/ms09_001_write (使用这个模块,然后去设置)
info(查看模块信息)
edit(编辑脚本文件)
show(命令) options(操作) / payloads(显示适合这个exploit利用的payload)/ targets(目标) / advanced(高级选项)/ evasion (查看这个exploit的相关信息)/missing(查看没有设置参数的选项)
Check(检查命令,检查是否存在这个漏洞。大部分exploit模块是没有这个check,要看exploit是否支持)
back(命令)
下面介绍sql相关:
db_rebuild_cache(将所有模块信息缓存到数据库里,通过数据库去检索)
db_nmap(扫描主机的信息,调用nmap)
(1)、Hosts(主机信息) / host 1.1.1.1 / hosts -u / hosts -c address,os_flavor -S Linux
(2)、services(端口信息) -p 80 / services -c info,name -p 1-1000
(3)、vulns :查看目标系统漏洞信息
(4)、creds :查看相关证书文件
(5)、loot :存储得到的hashdump
db_disconnect(断开连接)
db_connect(连接指定数据库) 如: /usr/share/metasploit-framework/config/database.yml
导入导出信息文件:
db_import 如:– db_import /root/nmap.xml
db_export 如:– db_export -f xml /root/bak.xml
下面介绍在设置流程中会必要的命令:
set :设置模块的参数
unset:清除设置
setg:全局设置,即只要有那个名称变量,都会被设置成一样的)
unsetg :清除全局设置
save:保存设置的值,即保存之后退出仍然会存在
Run / exploit :相同的作用,都用于执行
jobs:进行的工作
load:调用加载其他插件
unload:取消调用加载其他插件
loadpath :当有个人开发的模块,调用指定目录存放的模块
Session:可以看到回话,即已经建立的连接
– session -l / -i 可以进入响应的shell(Shell 、Meterpreter session、VNC等不同的回话)
route通过指定session添加路由流量,即当开防火墙端口有漏洞,已经控制了,攻击者路由指定session通向建立的连接路由到被攻击者的机器。原理即是:流量转发的过程
irb:内置的编程开发模块
Resource :前面已经介绍过了,即指定资源文件,存的就是配置信息(将各种命令存入文件当中)
注:在msf里面:直接resource *.rc————就有了session
在msf外面:msfconsole -r a.rc——————就有了session
注:还有没提及到的基本命令还有一些,但是最重要的已经列出来了,其他的都可以自己去查,这里就不一一介绍了。