MSF简介
背景
Metasploit Framework最初是 HD Moore 个人的想法,当时他在一家安全公司工作,他于2003年10月发布了第一个基于Perl的Metasploit版本,一开始只有共11个漏洞利用程序。后来随着Spoonm帮助和加入,HD发布于2004年4月重写了该项目并发布了Metasploit2.0。此版本包括19个漏洞和超过27个payload。在这个版本之发布后不久,马特米勒(Skape)加入了Metasploit的开发团队,使得该项目日益流行,Metasploit Framework也收到来自信息安全界的大力支持,并迅速成为一个渗透测试必备的工具
功能简介
Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。刚开始的Metasploit是采用Perl语言编写的,但是再后来的新版中,改成了用Ruby语言编写的了。在kali中,自带了Metasploit工具
术语
- 渗透攻击(Exploit),指由攻击者或渗透测试者利用一个系统、应用或服务中的安全漏洞,所进行的攻击行为
- 攻击载荷(Payload),是我们期望目标系统在被渗透攻击之后去执行的代码
- Shellcode,是在渗透攻击是作为攻击载荷运行的一组机器指令,通常用汇编语言编写
- 模块(Module),指Metasploit框架中所使用的一段软件代码组件,可用于发起渗透攻击或执行某些辅助攻击动作
- 监听器(Listener),是Metasploit中用来等待网络连接的组件
模块
- Auxiliary(辅助模块):为渗透测试信息搜集提供了大量的辅助模块支持
- Exploits(攻击模块):利用发现的安全漏洞或配置弱点对远程目标系统 进行攻击,从而获得对远程目标系统访问权的代码组件。
- Payload(攻击载荷模块):攻击成功后促使靶机运行的一段植入代码
- Post(后渗透攻击模块):收集更多信息或进一步访问被利用的目标系统
- Encoders(编码模块):将攻击载荷进行编码,来绕过防护软件拦截
安装
在一般的linux中,默认是不安装MSF的。以下是在非kali的Linux下安装MSF框架
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
adduser msf #添加msf用户
su msf #切换到msf用户
cd /opt/metasploit-framework/bin #切换到msf所在的目录
./msfconsole #以后启动msfconsole,都切换到msf用户下启动,这样会同步数据库。如果使用root用户启动的话,不会同步数据库
也可以将msfconsole加入到执行目录下,这样在任何目录直接msfconsole就可以了
ln -s /opt/metasploit-framework/bin/msfconsole /usr/bin/msfconsole
#备注:
#初次运行msf会创建数据库,但是msf默认使用的PostgreSQL数据库不能与root用户关联,这也这也就是需要新建用户msf来运行metasploit的原因所在。如果你一不小心手一抖,初次运行是在root用户下,请使用 msfdb reinit 命令,然后使用非root用户初始化数据库。
基本使用
基础指令
- msfconsole:进入控制台
- help/?:帮助菜单
- exit:退出MSF控制台
- Back:返回上一级
- info:显示一个或者多个模块的信息
- show:显示所给类型的模块
- background:将当前操作在后台运行
- use:使用所选择的模块
- set:设置选项
- unset:取消设置的选项
- reload_all:重新加载所有模块
基础使用
首先开始postgresql数据库:命令-->>service postgresql start
初始化msf数据库:命令-->>msfdb init
配置数据库连接密码等信息。我这里已经初始化过了
开启msf控制台:命令-->>msfconsole
查看数据库的连接状况:命令-->>db_status
- Auxiliary 模块: show auxiliary
命名规则:功能/服务/名称(scanner/smb/smb_ms17_010 )
- Exploits 模块: show exploits
命名规则:操作系统/服务/名称 windows/smb/ms17_010_eternalblue
- Payload 模块:show payload
命名规则:操作系统/类型/名称 windows/x64/meterpreter/reverse_tcp
rank表示好用级别:normal(正常),excellent(优秀),good(良好),average(平均)
接下来以0708为例,我先把0708的辅助模块上传到我的服务器
开启msf,执行重新加载命令
失误,之前传过,就这样吧
使用其中一个,info查看信息
查看需要我们设置的选项-->>show options
RHOST就是我们需要设置的选项
开启2008,查看地址以及和kali的联通情况
接下来我们把RHOST设置成2008的地址
使用命令run或者exploit执行,尬了忘开3389端口了
那我们去开启一下
重新执行
如果这里我使用一个py的脚本,目标机器就会直接蓝屏了
利用脚本单独写吧
msf调用nmap
ping一下我的win10,然后直接调用即可
如果这里搜到了漏洞就可以直接再msf中search,查找利用模块,继续进行渗透测试