渗透测试平台:Metasploit

2024-10-31 11:47:39 | 作者: 匿名

什么是Metasploit

Metasploit 是一个渗透测试平台,可用于查找、利用和验证漏洞。

在Metasploit 发布之前,各种开发人员使用各种语言开发了漏洞利用程序和shellcode。渗透测试人员必须自己具备编程能力或者依靠开发人员输出攻击代码。

有了Metasploit,渗透测试人员就拥有了一个标准化的框架,或者说测试平台,可以使用该平台提供的各种工具和攻击代码,相对轻松地实现测试目标。更形象地说,自从Metasploit出现以来,似乎任何人都可以作为黑客对互联网发起攻击。当然,如果你在网上肆意攻击别人,你最好做好被跟踪网线的网警殴打的准备。

这是Metasploit的官方网站:

https://www.metasploit.com/Metasploit 有付费专业版和开源社区版。您可以根据自己的实际需要选择使用哪个版本。如果你想亲自练习渗透技巧,社区版就足够了。 Kali 也默认与社区版本集成。

Metasploit平台结构

Metasploit的整体结构大致如下:

整体结构

基础库文件支持Metasploit的运行,用于完成基本的日常任务。

外部安全工具通过开放插件接口连接到其他第三方工具,并通过Metasploit框架进行利用。例如加载nessus就可以调用nessus扫描工具。

界面提供了进入和使用Metasploit的方法,包括控制台、图形化、命令行、远程调用等。

Metasploit还提供了一系列可以直接运行的功能程序,允许渗透测试人员和安全人员快速使用Metasploit框架的内部功能来完成一些特定的任务。例如msfpayload、msfencode和msfvenom可以将攻击负载封装成可执行文件、C语言、JavaScript语言等形式。并且可以进行各种类型的编码。

模块组织根据用途不同分为7类模块(Modules):

Exploits:渗透攻击模块,利用系统漏洞进行攻击。每个特定的漏洞都有相应的攻击方法。 Aux:辅助模块,负责信息采集、扫描、嗅探、指纹识别、密码猜测和DoS攻击等功能。 Post:渗透后攻击模块,在获得目标系统的远程控制权限后,执行一系列渗透后攻击动作,如获取敏感信息、跳板攻击等。 Payloads:攻击负载模块,攻击的代码或指令成功利用后实际上在目标系统上执行。编码:编码器模块主要对有效负载进行加密,以最终避免防病毒检查。 Nops:空指令模块,主要作用是提高负载稳定性和保持尺寸。当渗透攻击构成恶意数据缓冲区时,往往需要在实际要执行的shellcode之前添加一个空的命令区。这样,当触发渗透攻击并执行Shellcode时,就会有更大的安全着陆区域,避免因内存地址随机化、返回地址计算偏差等原因而导致Shellcode执行失败,从而提高渗透攻击的可靠性。 Evasion:防病毒模块,可用于创建木马文件。感觉像是msfvenom 的一个子功能。这些模块在Kali中的位置如下:

模块位置

Payloads模块中的有效负载分为三类,即single、stages和stages。 Shellcode是一种特殊的payload,只是用来获取shell。

单一:一体。完整的payload,这些payload都是集成的,不需要依赖外部库和包。 stage:使用stage建立的连接来下载后续的payload。 Stagers:当目标计算机内存有限时,首先传输较小的有效负载以建立连接。

启动Metasploit

在某些早期版本中,第一次启动Metasploit时,需要先初始化数据库:

msfdb初始化

然后启动数据库:

systemctl 启动postgresql

该数据库是否启动不会影响Metasploit功能的使用,但会影响扫描结果信息的利用效率。

新版本的Metasploit可以通过一条命令启动数据库并运行msfconsole。

只需从命令行启动Metasploit:

微软控制台

也可以通过其他启动命令来启动。两者都会启动msfconsole,但后一个命令将先启动数据库,然后再打开msfconsole:

msfdb运行

启动成功后可以看到5432端口被占用:

端口5432 已使用

postgresql 数据库需要此端口。如果没有开启,可以手动开启。如果经常使用Metasploit,还可以设置postgresql,使数据库自动启动。命令如下:

systemctl enable postgresql 以下是postgresql 数据库中可能使用的一些命令的列表:

# 初始化数据库msfdb init # 删除并重新初始化数据库msfdb reinit # 删除数据库并停止使用msfdb delete # 启动数据库msfdb start # 停止数据库msfdb stop # 检查服务状态msfdb status # 启动数据库并停止使用首先运行msfconsolemsfdb run

Metasploit命令介绍

一般使用help来查看帮助说明:

帮助

帮助说明很长,介绍了很多命令。但不需要全部记住,记住一些常用的就可以了。对于其他命令,只要知道它们有这样的功能就可以了。当你确实需要使用它们时,只需通过帮助查找即可。

文档中的内容主要分为七类:

Core Commands: 核心命令Module Commands: 模块命令Job Commands: 后台任务命令Resource Script Commands: 资源脚本命令Database Backend Commands: 数据库后端命令Credentials Backend Commands: 证书/凭证后端命令Developer Commands: 开发者命令有英语基础是的,可以最好读一下原文。翻译后总会有一些差异,因为个人理解存在一些差异。

核心命令:

?帮助文档,与帮助命令相同banner:显示banner信息,即启动msfconsole时显示的信息cd:与系统命令中的cd相同,切换工作目录color:切换颜色connect:连接到host debug:显示对调试有用有关信息exit:退出,与另一个quit 命令相同features:显示可选的未发布功能的列表get:获取上下文特定变量的值getg:获取全局变量grep 的值:过滤目标help:帮助文档history:显示命令历史记录load:加载框架插件quit:退出repeat:重复命令列表route:通过会话路由流量save:保存有效数据session:转储会话列表并显示有关会话的信息set:设置上下文特定的变量值setg:设置全局变量sleep:等待指定的时间spool:将控制台的输出放入能够同时写入文件和屏幕线程:查看和操作后台线程提示: 显示有用的生产列表unload: 卸载插件unset: 取消设置一个或多个特定于上下文的变量unsetg: 取消设置一个或多个全局变量version: 显示框架和控制台库版本号模块命令:

Advanced:显示一个或多个模块的高级选项back:根据上下文返回上一级clearm:清除模块的堆栈信息favorite:将模块添加到收藏夹info:显示一个或多个模块的基本信息listm :显示模块的堆栈信息堆栈信息loadpath:查询并加载路径中的模块options:显示一个或多个模块的参数项popm:从堆栈中弹出最新的模块并使其处于活动状态previous:将之前加载的模块设置为当前模块current module pushm:使活动模块处于活动状态将模块或模块列表推入模块堆栈reload_all:从所有定义的模块路径重新加载所有模块search:搜索模块名称和描述show:显示给定类型的模块或所有模块使用:通过模块的名称或搜索词/索引交互作业命令:

handler:作为作业任务启动攻击jobs:显示和管理作业任务Kill:关闭作业任务rename_job:重命名作业任务资源脚本命令:

makerc:将开始输入的命令保存到文件资源中:运行文件中存储的命令数据库后端命令:

analyze:分析特定地址或地址范围的数据库信息db_connect:连接到现有数据服务db_disconnect:断开与当前数据服务的连接db_export:导出包含数据库内容的文件db_import:导入扫描结果文件(文件类型将自动检测到) db_nmap:执行nmap并自动记录输出db_rebuild_cache:重建数据库存储的模块缓存(已弃用) db_remove:删除已保存的数据服务条目db_save:将当前数据服务连接保存为默认连接,以便可以重新连接启动时db_status :显示当前数据服务状态Hosts:列出数据库中所有主机Loot:列出数据库中所有Loot Notes:列出数据库中所有Notes services:列出数据库中所有服务vulns:列出数据库中所有漏洞工作区:在数据库工作区之间切换凭证后端命令:

creds:列出数据库中的所有凭据开发人员命令:

edit:使用首选编辑器编辑当前模块或文件irb:在当前上下文中打开交互式Ruby shell log:如果可能,在页面末尾显示Framework.log pry:在当前模块或框架上打开Pry 调试器reload_lib:从指定路径重新加载Ruby库文件时间:计算运行特定命令所需的时间

Metasploit常用命令演示

渗透测试平台:Metasploit

要攻击主机,通常需要先连接到主机。连接命令为connect:

连接

如果直接输入命令,会显示该命令的说明文档,介绍该命令后面可以带的参数以及各个参数的具体作用。

一般使用connect来检测目标端口是否开放,例如:

连接命令的使用

这里使用的connect命令是连接到我自己的目标机器。连接成功后,可以通过相应的参数发起不同类型的请求。

show命令可以查看msf提供的各种资源,例如:

展示功绩

show 后面可以跟任何模块名称和一些其他关键字,这些关键字在show 命令的介绍中列出:

show命令简介

show 命令显示的信息很多,有时很难从如此大量的信息中找到自己需要的内容。这里我们介绍另一个命令搜索:

搜索-h

这是搜索的帮助文档。

也可以直接使用搜索命令,无需添加参数:

搜索mysql

默认情况下,名称和描述关键字会被过滤。您还可以添加参数来过滤特定范围:

搜索名称:mysql 类型:漏洞利用

一旦找到你想要使用的模块,你就可以使用它:

使用exploit/windows/mysql/mysql_mof

进入指定模块后,可以使用show options命令查看有哪些参数可用:

显示选项

知道了参数之后,当然就该设置各个参数的具体内容了:

设置参数

除了使用set设置参数外,还可以使用setg。 setg用于设置全局变量,避免在不同模块中重复设置参数。

当参数设置错误,想要删除参数值时,可以使用unset或unsetg:

重置密码

设置完参数后,如果想下次使用模块时直接使用当前参数,可以使用save命令:

节省

从执行结果中可以看到这个参数文档的具体存储位置。

有些模块会有一个check命令,可以用来检查目标主机上是否存在当前漏洞。

配置好参数后,就可以通过run或者exploit命令发起攻击了。有些攻击可能非常耗时。如果你想放弃这段时间的攻击,可以通过指挥jobs结合kill来结束攻击。

session命令可用于建立会话。

攻击演示

这里使用上述漏洞进行演示。我还没有准备好相应的目标机器,这里就不演示最终的攻击效果了。我只是介绍一下如何进行攻击。

至于想要寻找合适目标无人机的同学,可以详细了解SHODAN的使用方法,这比自己去公共互联网上搜索要方便得多:

寻找目标无人机

首先进入对应的漏洞利用模块:

进入攻击模块

查看需要配置的参数:

显示选项

设置所需参数:

设置参数

发起攻击:

跑步

从攻击结果可以看出,最终失败了。因为我其实并不知道目标机器中的MySQL账户密码。

用户评论

病态的妖孽

用了Metasploit的渗透测试平台,感觉真的很强大,功能全面,学到了很多新知识!

    有16位网友表示赞同!

致命伤

Metasploit确实是渗透测试的利器,但是新手可能需要一段时间才能熟练使用。

    有18位网友表示赞同!

淡抹丶悲伤

我之前用Metasploit进行过一次实战渗透,虽然遇到了不少困难,但最终还是克服了,感觉很有成就感。

    有11位网友表示赞同!

慑人的傲气

Metasploit的界面有点复杂,对于新手来说可能不太友好,希望官方能出一个简化版。

    有6位网友表示赞同!

此生一诺

Metasploit的漏洞库太强大了,几乎涵盖了所有已知的漏洞,简直是渗透测试者的福音。

    有10位网友表示赞同!

坠入深海i

用了Metasploit之后,发现很多以前觉得复杂的攻击方式都可以轻松实现。

    有18位网友表示赞同!

伤离别

Metasploit虽然好,但有时候更新速度太快,跟不上的话可能会遇到一些兼容性问题。

    有6位网友表示赞同!

我就是这样一个人

Metasploit的自动化脚本功能太强大了,可以大大提高渗透测试的效率。

    有16位网友表示赞同!

苍白的笑〃

感觉Metasploit的社区支持也不错,有问题的时候可以很容易找到解答。

    有17位网友表示赞同!

有一种中毒叫上瘾成咆哮i

用了Metasploit的虚拟机渗透测试,感觉比实际攻击电脑安全多了。

    有14位网友表示赞同!

放肆丶小侽人

Metasploit的靶场功能很实用,可以随时进行练习,提高自己的技能。

    有10位网友表示赞同!

颜洛殇

虽然Metasploit很好,但我也觉得它有时候过于复杂,需要花很多时间去学习。

    有11位网友表示赞同!

鹿叹

Metasploit的漏洞扫描功能很强大,可以帮助我们快速发现系统漏洞。

    有10位网友表示赞同!

不浪漫罪名

用了Metasploit之后,发现以前觉得复杂的攻击方式其实并不是那么难。

    有6位网友表示赞同!

闲肆

Metasploit的社区版已经足够强大了,但是商业版的功能确实更全面。

    有6位网友表示赞同!

摩天轮的依恋

Metasploit的漏洞利用脚本很多,但是有时候需要自己修改才能用。

    有18位网友表示赞同!

熟悉看不清

感觉Metasploit的漏洞库更新速度很快,几乎每天都有新的漏洞被发现。

    有14位网友表示赞同!

迷路的男人

Metasploit的自动化攻击脚本功能太强大了,但有时候可能会误伤自己的系统。

    有13位网友表示赞同!

话扎心

Metasploit的社区版已经可以满足我的需求了,商业版对我来说有点贵。

    有17位网友表示赞同!