注意:本篇文章仅用于学习笔记记录与交流,不得用于其他违规用途。
一、什么是MSF框架
Metasploit就是一个漏洞利用框架,全称是The Metasploit Framework,简称MSF(美少妇),使用ruby语言编写的,语法类似python。
Metasploit是一个免费的、可下载的框架,通过它可以很容易的获取、开发并对计算机软件漏洞实施攻击,它本身附带数百个已知软件漏洞的专业级漏洞利用工具。
当 H.D. Moore 在 2003 年发布 Metasploit 时,计算机安全状况也被永久性地改变了。仿佛一夜之间,任何人都可以成为黑客,每个人都可以使用攻击工具来攻击那些未打过补丁或者刚刚打过补丁的漏洞。软件厂商再也不能推迟发布针对已公布漏洞的补丁了,这是因为Metasploit 团队一直都在努力开发各种攻击工具,并将它们 贡献给所有 Metasploit 用户。
访问官网:https://www.metasploit.com/
关于版本
社区版:
集成在 kali 系统中,目前基于社区力量维护。早期版本需要先启动数据库再启动 MSF,从msf5版本以
后已经集成到 msf 里面了,可以直接一键启动。现在已经是msf6了
Pro 版:企业版(收费,但可以试用)的几个优势
1、企业版出的检测报告非常强大,给客户汇报起来很方便。
2、AV 免杀,社区版的免杀大家都知道了,但是企业级的免杀他们说过可以达到百分之九十甚至百分之百。
3、IDS / IPS 绕过(入侵检测系统/入侵防御系统)
4、VPN Pivotin
二、为什么要有MSF
渗透测试者的困扰:在众多漏洞的工具中,不知道如何选择。认为需要掌握数百个工具软件,上千个命令参数,实在记不住。而且有的工具只能利用一些老的漏洞,对新出现的漏洞是没有用的,你很有可能要针对这个新的漏洞再学一款新的工具,这样就要花费很多时间去学习新工具的使用,及其浪费时间,而且新出现的漏洞POC/EXP 有不同的运行环境要求,准备工作繁琐。如果能统一就好了,于是 Metasploit 就产生了。
三、MSF如何使用
1、启动MSF
启动命令:
(root@kali)-[~]
└─# msfconsole
当加载完成后默认会出现以下画面,banner字符图是随机的,每次都不一样。
命令补充:
# 查看msf版本信息
┌──(root@kali)-[~]
└─# msfconsole -v
Framework Version: 6.0.22-dev
# -q是指quite , 静默输出 , 不会打印banner信息
┌──(root@kali)-[~]
└─# msfconsole
启动补充:
msf5版本以前启动 Metasploit 框架需要运行 Postgresql 数据库,msf5以后只要运行 Metasploit 时都会自动启
动 Postgresql 数据库。如果数据库没启动的话,可以手动开启,下面时管理数据库的一些命令。
root@kali:~# netstat -pantu | grep 5432 查看数据库是否被启动
root@kali:~# systemctl start postgresql 手动启动数据库
root@kali:~# systemctl enable postgresql 设置成开机启动数据库
msfdb init #启动并初始化数据库
msfdb reinit #删除并重新初始化数据库
msfdb delete #删除数据库并停止使用它
msfdb start#启动数据库
msfdb stop #停止数据库
msfdb status #检查服务状态
msfdb run #启动数据库并运行msfconsole
Msfconsole 接口启动命令:最流行的用户接口,几乎可以使用全部 MSF 功能,控制台命令支持 TAB 自动补全,支持外部命令的执行(系统命令等)
2、更新MSF
# 更换kali自带的源,改为国内的源,这样下载比较快# 编辑源文件
vim /etc/apt/sources.list
# 添加中科大源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
# 更新软件包
apt-get update # 更新一下软件包的数据库,不进行软件的更新# 更新msf框架
apt-get install metasploit-framework
如果在更新后出现以下问题:
root@kali:~# msfconsole
Could not find reline-0.1.5 in any of the sources
Run bundle install to install missing gems.
则使用以下方法解决:
root@kaliew:~# sudo gem install bundler
root@kaliew:~# bundle update celluloid
3、退出MSF
# 退出msf框架
msf6 > exit
四、MSF的目录结构
MSF在kali上存放目录:/usr/share/metasploit-framework/
1、Modules目录
这个目录下就是我们常用的技术功能模块:
┌──(root@kali)-[/usr/share/metasploit-framework]
└─# cd modules
┌──(root@kali)-[/usr/share/metasploit-framework/modules]
└─# ls
auxiliary encoders evasion exploits nops payloads post
技术功能模块分类:
1、Auxiliary 负责执行信息收集、扫描、嗅探、指纹识别、口令猜测和 Dos 攻击等功能的辅助模块
2、Exploits 主要包含了传说中的exp , 各种漏洞利用的脚本。主要的攻击代码全在这里
利用系统漏洞进行攻击的动作,此模块对应每一个具体漏洞的攻击方法(主动、被动)
3、Payloads 这个单词翻译过来叫载荷:是攻击者发送给目标系统执行的指令(不包含exploits攻击阶段),
payloads主要是在目标主机执行的,而exploits是在本地机执行作用于目标机。
payload 分为 3 种类型 ,分别是 singles、stages 和 stagers。shellcode 是特殊的 payload,用于拿shell
● singles:all-in-one。完整的 payload,这些 payload 都是一体化的,不需要依赖外部的库和包。
● stagers:目标计算机内存有限时,先传输一个较小的 payload 用于建立连接
● stages:利用 stagers 建立的连接下载后续 payload
4、Encoders 各种编码工具 , 对 payload 进行加密 , 用于躲过入侵检测和过滤系统
5、Nops NOP (No Operation or Next Operation) sled,由于IDS/IPS会检查数据包中不规则的数据,所以在
某些场合下(比如针对溢出攻击),某些特殊的滑行字符串(NOPS x90x90...)则会因为被拦截而导致攻击失效,所以此
时需要修改exploit中的NOPs.nops文件夹下的东西会在payload生成时用到(后面会有介绍)。比如我们打开php的
NOPS生成脚本,就会发现它只是返回了指定长度的空格而已。(不理解没关系)
6、Post 这个目录里放着msf 的exploits执行成功后,向目标机发送的一些功能性指令比如:提权,获取hash等
7、Evasion msf中的混淆模块 , 更新了后 自带windows denfender的混淆 , 效果一般 早不免杀了 , 总比没有好 自己配合其他手段免杀
2、data目录
cd data
存放 meterpreter、passivex、vnc、dlls等工具和一些用户接口代码,msfweb和一些其他模块用到的数据文件
3、Plugins目录
这个模块需要使用 load 加载,提供数据库连接插件,和各种要用到的插件。即插件目录
4、Scripts目录
这个目录下的文件都是meterpreter利用的脚本
五、MSF基础命令
1、help
当你刚进入msf终端时,可以使用help查看msf的命令有哪些,以及解释。
msf6 > help
msf6 > ?
显示某一命令的用法
msf6 > help banner
msf6 > ? banner # ? 和命令中间是有空格的
2、banner
查看当前msf的版本信息和模块数量
3、search
搜索模块
4、use
search找到模块后,用use使用模块
5、其他常用命令
background # 会话放到后台
sessions #sessions –h 查看帮助
sessions -i <ID值> #进入会话 -k 杀死会话
back #返回上一步
run/exploit #执行已有的模块,输入run后按两下tab,列出已有的脚本 -j , 后台运行
info #查看已有模块信息
load #加载插件
jobs #显示和管理作业 kill# 杀死一个job , kill 0
nmap # msf控制台内置的有nmap工具
版权归原作者 易水哲 所有, 如有侵权,请联系我们删除。