Metasploit平台概述
简介
- Metasploit是一款开源的安全漏洞检测工具,同时Metasploit是免费的工具,因此安全工作人员常用Metasploit工具来检测系统的安全性。
- Metasploit Framework (MSF)在2003年以开放源码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发、测试和使用恶意代码,这个环境为渗透测试、shellcode编写和漏洞研究提供了一个可靠平台。
- Metasploit核心中绝大部分由Ruby实现,一小部分由汇编和C语言实现。
发展历程一
- Metasploit Framework最初是HD Moore个人的想法,当时他在一家安全公司工作,他于2003年10月发布了第一个基于Perl的Metasploit版本,一开始只有共11个漏洞利用程序。
- 随着Spoonm帮助和加入,HD于2004年4月重写了该项目并发布了 Metasploit 2.0。此版本包括19个漏洞和超过27个payload。在这个版本发布后不久,马特米勒(Skape)加入了Metasploit的开发团队,使得该项目日益流行,Metasploit Framework也受到来自信息安全界的大力支持,并迅速成为一个渗透测试必备的工具。
发展历程二
- 2007年,Metasploit团队使用Ruby编程语言完全重写并发布了Metasploit3.0,这次Metasploit从Perl到Ruby的迁移历时18个月,增加超过15万行的新代码。随着3.0版本的发布,Metasploit开始被广泛的采用,在整个安全社区也受到了大幅增加的帮助和贡献。
- 在2009年秋季,Rapid7收购了Metasploit,Rapid7是一个在漏洞扫描领域的领导者公司。被收购之后,Rapid7公司允许HD建立一个团队,仅仅专注于Metasploit Framework的开发。也正由于这样,这次收购使得MetasploitFramework开始更迅速地发展,HD Moore也成为了去Rapid7公司的CSO及Metasploit首席架构师。
Metasploit官网
Metasploit | Penetration Testing Software, Pen Testing Security | Metasploit
Windows中下载安装Metasploit
- 从官方网站下载安装程序:metasploit-latest-windows-installer.exehttp://downloads.metasploit.com/data/releases/metasploit-latest-windows-installer.exe
- 安装前关闭杀毒软件和防火墙(另外,部分版本需要将区域语言选项设置为“英语(美国)”)
- 安装过程会附带安装PostgreSQL数据库用以存储Metasploit内各模块、载荷等索引,加快搜索速度
- 安装完成后,在桌面生成Metasploit的快捷方式,右键以管理员身份运行将打开cmd并运行Metasploit控制台
linux中下载安装Metasploit
- 从GitHub获取
- GIT clone GitHub - rapid7/metasploit-framework: Metasploit Framework
- 切换到Metasploit-框架目录,赋予msfsole执行权限并启动:
CD Metasploit-framework&&chmod+x msfsole&&./msfsole
- 使用以下命令下载一键式安装程序,具体安装进度试网络情况:
cd /opt && curl https://raw.githubusercontent.com/rapid7/metasploitomnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod +x msfinstall && ./msfinstall
- Kali中自带Metasploit
文件结构
路径:/usr/share/metasploit-framework/
- config : MSF环境配置信息,数据库配置信息
- data:后渗透模块的一些工具及payload ,第三方小工具集合,用户字典等数据信息
- documentation: 用户说明文档及开发文档
- external: MSF的一些基础扩展模块
- lib:基础类和第三方模块类
- modules: MSF系统工具模块
- plugins:第三方插件接口
- scripts : MSF的常用后渗透模块,区别于data里的后渗透模块,不需要加post参数和绝对路径,可以直接运行
- tools:额外的小工具和第三方脚本工具
- msfconsole : MSF基本命令行,集成了各种功能
- msfd: MSF服务,非持久性服务
- msfdb: MSF数据库
- msfupdate: MSF更新模块,可以用来更新MSF模块
- msfrpc: MSF的服务端,非持久性的rpc服务
- msfrpcd:持久性的MSF本地服务,可以给远程用户提供rpc服务以及其他的http服务,可以通过xml进行数据传输。
Metasploit模块
exploits(渗透攻击/漏洞利用模块)
- 渗透攻击模块是Metasploit框架中最核心的功能组件。
- 渗透攻击模块是利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。流行的渗透攻击技术包括缓冲区溢出、Web应用程序漏洞攻击、用户配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,以及用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。
- payloads(攻击载荷模块)
- 攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗 透目标后,用于在目标系统上运行任意命令或者执行特定代码。
- 攻击载荷模块从最简单的添加用户账号、提供命令行Shell,到基于图形化的VNC 界面控制,以及最复杂、具有大量后渗透攻击阶段功能特性的Meterpreter,这使 得渗透攻击者可以在选定渗透攻击代码之后,从很多适用的攻击载荷中选取他所中 意的模块进行灵活地组装,在渗透攻击后获得他所选择的控制会话类型,这种模块 化设计与灵活的组装模式也为渗透攻击者提供了极大的便利。
- auxiliary(辅助模块)
该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、嗅探、 指纹识别等相关功能以辅助渗透测试。
- nops(空指令模块)
- 空指令(NOP)是一些对程序运行状态不会造成任何实质性影响的空操作或无关操 作指令。最典型的空指令就是空操作,在x86 CPU体系架构平台上的操作码是 0x90。
- 在渗透攻击构造邪恶数据缓冲区时,常常要在真正执行的Shellcode之前添加一段 空指令区。这样,当触发渗透攻击后跳转执行Shellcode时,就会有一个较大的安 全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的 Shellcode执行失败。
- Matasploit框架中的空指令模块就是用来在攻击载荷中添加空指令区,以提高攻击 可靠性的组件。
- encoders(编码器模块)
编码器模块通过对攻击载荷进行各种不同形式的编码,完成两大任务:一是确保攻 击载荷中不会出现渗透攻击过程中应加以避免的“坏字符” ;二是对攻击载荷进行 “免杀”处理,即逃避反病毒软件、IDS/IPS的检测与阻断。
- post(后渗透攻击模块)
后渗透攻击模块主要用于在渗透攻击取得目标系统远程控制权之后,在受控系统中 进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步横向拓展、实施跳板 攻击等。
- evasion(规避模块)
规避模块主要用于规避Windows Defender防火墙、Windows应用程序控制策略 (applocker)等的检查。
利用Metasploit进行渗透测试的一般流程
- 扫描目标机系统,寻找可用漏洞
- 选择并配置一个渗透攻击(漏洞利用)模块(exploits) 选择并配置一个攻击载荷模块(payloads)
- 选择一种编码技术(encoders),用来绕过杀毒软件的查杀
- 执行渗透攻击
- 后渗透阶段的操作
- Metasploit命令
- Terminal终端下的常用命令
msfdb init //msf数据库初始化
msfdb delete //删除msf数据库并停止使用
msfdb start //启动msf数据库
msfdb stop //停止msf数据库
apt install metasploit framework //msf更新
msfvenom //多平台攻击载荷生成器
msf-nasm_shell //将汇编指令转换成为对应的16进制机器码
msfconsole //打开msf终端
- 在msf终端下,输入?或help,可查看终端命令集
核心命令(Core Commands)
模块命令(Module Commands)
exploits模块
- exploits(渗透攻击/漏洞利用模块)
- exploits模块支持的操作系统类别包括:AIS、BSDI、Dialup、FreeBSD、 Hpux、Irix、Linux、Netware、OSX、Solaris、Unix、Windows等。其中 Windows的溢出方式数量最多。
- /usr/share/metasploit-framework/modules/exploits
exploit模块应用实例——ms17-010漏洞利用
环境准备
- 操作机:Kali Linux 2021.1,Metasploit Frameworks 6.0.30
- 目标机:Windows 7(含ms17-010漏洞)
ms17-010(Windows SMB远程执行代码漏洞)简介
- 微软安全公告KB4013389: Microsoft 安全公告 MS17-010 - 严重 | Microsoft Learn
- 摘要
此安全更新程序修复了 Microsoft Windows 中 的 多个漏洞 。 如果攻击者向 Windows SMBv1服务器发送特殊设计的消息,那么其中最严重的漏洞可能允许远 程执行代码。
exploit模块应用实例——ms17-010漏洞利用
- 步骤1:使用以下命令启动Metasploit: msfdb init && msfconsole
- 步骤2:在msf终端下输入以下命令查找ms17-010相关的模块:search ms17-010
- 步骤3:分别输入以下命令,使用smb_ms17_010模块对目标机进行漏洞检测, 确认其存在ms17-010漏洞:
use auxiliary/scanner/smb/smb_ms17_010 //使用smb_ms17_010模块
show options //查看该模块需要设置哪些参数
set RHOST 192.168.40.220 //设置目标机的IP地址