不得不说Metasploit 目前是世界领先的黑客框架。它在某种程度上被几乎每个黑客/渗透者使用。因此,如果您想进入网络安全/渗透测试行业并有所成就,您就必须要需要熟悉它。 Metasploit可用于web渗透 pc渗透 安卓渗透
一:什么是 Metasploit?
Metasploit 是用于攻击性安全或渗透测试的标准化框架。在 Metasploit 之前,漏洞利用和 shellcode 将由各种开发人员以各种语言为各种系统开发。渗透测试人员必须依靠开发人员的工作性质,即它没有充满恶意代码,并了解开发人员打算如何利用漏洞/shellcode/工具工作。借助 Metasploit,渗透测试人员拥有一个标准化的框架,可以在这些工具的工作方式相似的地方工作,并且所有工具都使用相同的语言编写,从而使事情变得更加简单。
最初由 HD Moore 作为开源项目开发,现在归安全公司 Rapid7 所有(Rapid7 还拥有漏洞扫描程序 Nexpose)。尽管最初是作为一个开源项目开发的,Rapid7 现在已经开发了 Metasploit 的 Pro 版本,免费版的在 开源社区版仍然可供我们其他人使用,而无需花费数万美元购买 Pro 版(如果您是专业的测试人员,使用 Pro 版可以提高效率和节省时间)我目前使用就是Pro版,并且效率得到很大的提升。
最初的 Metasploit 是用 Python 编写的,然后移植到 Ruby。这意味着所有模块都必须编写或移植到 Ruby(Python 是最常见的漏洞利用脚本语言)。现在,随着 Metasploit 6 的开发和发布,Metasploit 现在支持用 Python 或 GO 编写的模块。
二:Metasploit 接口
Metasploit 有多个接口,包括;
msfconsole
msfcli
Armitage
msfweb
使用 Metasploit 最常见的方法是通过 Metasploit 自己的交互式 shell,msfconsole。在关于 Metasploit 的这个系列中,我们将主要使用这个 msfconsole,
近年来,Metasploit 集成了其他工具,使其不仅仅是一个开发框架。nmap、Nessus、Nexpose等工具现已集成到Metasploit中,使得从端口扫描、漏洞扫描、利用到后期利用的整个过程都可以在一个工具上完成。此外,Metasploit 现在已经集成了一个postgresql数据库来存储从您的扫描和漏洞利用中收集的数据。
入门:
在我们启动 Metasploit 之前,我们应该启动 postgresql 数据库。Metasploit 可以在没有postgresql 的情况下工作,但该数据库使 Metasploit 能够运行更快的搜索并存储您在扫描和利用时收集的信息。
打开Kali 并且在终端内输入以下命令 来激活metasploit 自带数据库postgresql 。如果你使用的不是root终端命令前必须添加“sudo”
sudo systemctl start postgresql (start=开始)
由于我们是第一次使用Metasploit ,第一件事情要做的就是初始化(init)数据库,命令如下:
sudo msfdb init
数据库初始化完成后我们就可以通过终端输入名字:Metasploit 进入Metasploit Framework控制中心 (过程很长需要30秒等待时间)
最新版 Metasploit 提供数据 漏洞 版本 如下图:
这样我们就成功的完成了使用Metasploit 第一步。激活并且初始化数据库。
如果你对命令行有点看不懂暂时没有记住Metasploit ,你可以选择GUI界面转到Metasploit 如图:
Metasploit 关键字
尽管 Metasploit 是一个非常强大的漏洞利用框架,但只需几个关键字就可以让您开始入侵几乎任何系统。当然是没有设置更高端防火墙的系统。
Metasploit 多种类型的模块;
exploits
payloads
auxiliary
nops
post
encoders
evasion
我们先的说下Metasploit使用术语,exploits是利用系统或者应用程序漏洞模块。它通常会尝试在系统上放置payloads,这个payloads可以是见的命令行外壳或者全有的Meterpreter。在其他环境中你可以称它为“监听器” rootkit。具体的我会在后面简单的给大家做一个介绍。
接下里我们需要使用“帮助命令(help)”来查看下msf的命令列表。
help
如果你的目标是专业的渗透测试人员,那么这里的内容不说让你背下来,最低要求是全部知道意思并且熟记于心。在社区深度计划中渗透环节非Metasploit 莫属。
关键命令“USE”使用。
如下列我们需要加载一个随机模块,假设我们已经发现对方系统上出现了Flas相关漏洞。就可以使用命令:
use exploit/windows/browser/adobe_flash_avm2
如果你输入无误就模块就会加载成功,模块类型是:exploit,模块相应是在红色字体区域。
关键命令“show”显示
加载模块后,show命令对于收集有关模块的更多信息非常有用。最常使用的三个“显示"show options", "show payloads"、“show targets”和“show payloads”。我们先来看看“show options”。
show options
输入数显示命令 show后添加:options 就是显示options 命令如下:
show options
命令:show targets
show targets
此命令在运行漏洞利用时也非常有用。它将显示在运行模块之前需要设置的所有选项。这些选项包括 IP 地址、URI 路径、端口等。
一个不太常用的命令是“show targers”。每个漏洞利用都有一个它将针对的目标列表。通过使用“show targets”命令,我们可以获得它们的列表。在这种情况下,目标是自动的,但一些漏洞利用有多达 100 个不同的目标(不同的操
作系统、服务包、语言等),成功通常取决于选择合适的目标。这些目标可以通过操作系统、服务包和语言等来定义。
显示模块信息命令:info
info
该信息的命令很简单。当您在选择一个模块后键入它时,它会显示有关该模块的关键信息,包括需要设置的选项、有效负载(在有效负载部分中有更多相关信息)以及模块描述. 。
新手“搜索”
Metasploit在初学的时候,最困难的就是寻找自己需要的模块,毕竟Metasploit现在大概有着3-5K的模块。几百个漏洞。如果不懂得如何搜索会严重影响效率。
使用搜索命令的时候一定要添加“:”然后在输入搜索内容。
search type:exploit
搜索系统指定漏洞
指定搜索 windows下的 flash漏洞 (我们要输入的是平台:windows 漏洞类型:flash)
search type:exploit platform:windows flash
我们搜索到的会在命令行反馈出来,并且添加了标注。添加背影颜色就是。
set
此命令用于在您选择的模块内设置选项。例如,如果我们查看上面的show options命令,我们可以看到许多必须设置的选项,例如 URIPATH、SVRHOST和SVRPORT。我们可以使用 set 命令设置其中的任何一个,例如;
set SRVPORT 80
这会将默认 SVRPORT(服务器端口)从 8080 更改为 80。
如果我们在发现自己操作出问题了 需要取消上一步操作,我们使用使用取消设置命令。