漏洞评估只是全面安全扫描的一部分。发现漏洞或发现错误配置后,安全评估员应努力实际利用这些漏洞。将评估带到开发阶段的原因有很多,但最重要的部分是消除假阳性结果,并证明潜在严重结果的完全关键性。
没有什么比从一个假定安全的系统中过滤敏感数据更快地吸引 IT 主管或 CIO 的注意力了!
Metasploit 是一个非常有效的攻击平台,许多模块以非常快的速度添加到系统中。通过扫描工具(如 Nmap)和漏洞扫描工具(如 Nessus)利用 Metasploit 的强大功能,可以完成准备充分的安全工具套件的三重功能。
在本章中,我们将介绍以下主题:
- 安装 Metasploit
- Metasploit 扫描
- 使用 Metasploit 攻击服务
- 下一步要学什么
在开始使用 Metasploit 之前,我们需要将其安装到系统中。与 Nmap 不同,安装 Metasploit 可能有点棘手,但这并不是一点细致的工作所不能克服的!
第一步是确保安装了 Metasploit 所需的所有依赖项。这样做比较简单,只需运行sudo apt-get install build-essential libreadline-dev libssl-dev libpq5 libpq-dev libreadline5 libsqlite3-dev libpcap-dev openjdk-7-jre git-core autoconf postgresql pgadmin3 curl zlib1g-dev libxml2-dev libxslt1-dev vncviewer libyaml-dev curl zlib1g-dev
:
正如您在前面的屏幕截图中所看到的,大多数 Linux 机器将需要安装此列表中默认不包括的几个软件包。如果您不知道这些单独的软件包是做什么的,请不要担心,我们只需要安装它们,这样 Metasploit 就可以正常工作。
除了安装各种软件包外,我们还需要确保安装了最新版本的 Ruby。使用一个叫做“RVM”的工具使这变得相对简单;RVM 的完整文件可在上获得 http://rvm.io 。在撰写本文时,我们正在安装 Ruby 2.1.5 以运行 Metasploit:
一旦 Ruby 被安装,唯一的其他需求就是 Nmap(我们已经安装了)、配置 Postgres 和安装 Metasploit 本身。
配置 Postgres 非常简单:作为root
,只需运行su postgres
来承担该用户角色,并运行以下两个命令:
createuser msf -P -S -R -D
createdb -O msf msf
一旦配置了 Postgres 数据库,我们就可以开始使用 Metasploit 本身了。第一步是克隆 Git 存储库以在本地获取代码,这可以通过运行git clone https://github.com/rapid7/metasploit-framework.git
来实现。
一旦文件被创建(在一个名为“metasploit framework”的目录中),我们就可以cd
进入该目录并运行bundle install
,以确保 Ruby gem 依赖项是最新的。如果 gems 已过期,bundle update
将验证是否正在运行最新的指定版本:
在此阶段,安装了 Metasploit!我们不需要编译任何东西,因为 Metasploit 是用 Ruby 编写的(Ruby 是一种解释语言,而不是编译语言)。要启动 Metasploit,只需在 Metasploit 框架目录中运行./msfconsole
即可!
尽管 Nmap 的主要优势在于执行快速、可扩展的端口扫描,Nessus 的强项是进行深入的漏洞扫描和错误配置检测检查,但 Metasploit 擅长一次性利用漏洞。在安全评估中,Metasploit 通常作为最后一步被带到表中:一旦从其他工具中列举了漏洞,Metasploit 实际上可以利用它们。使用 Metasploit 和框架附带的各种工具,可以轻松过滤敏感数据、受损机器等。
Metasploit 可以轻松地编写一本专门介绍其用法的书,事实上,它确实如此,但我们将介绍基本的扫描和利用技术,以便您可以在日常流程中实现它,而不需要太多麻烦。
启动特定漏洞扫描(或信息收集技术)的最简单方法就是使用它。指定use
命令的方法是在 Metasploit 中简单地运行use primary/secondary/module
。以下屏幕截图显示我们在 Metasploit 中设置 HTTP 版本扫描:
正如您在前面的屏幕截图中很容易看到的,我们决定使用auxiliary/scanner/http/http_version
模块来检查 HTTP 版本。一旦我们选择了模块,我们通过运行“show options”来检查哪些选项可用。在这种情况下,我们需要指定rhosts
应该是我们的目标 web 服务器。因为这是复数形式(主机,而不是“主机”),所以可以看出,理论上我们可以根据该指令扫描 Internet 范围。此窗口的说明选项卡中也会写入简要说明。以下屏幕截图显示了 Metasploit 扫描的选项:
前面的屏幕截图说明了运行模块很简单,只需调用run
命令,我们就可以得到我们想要的结果!在本例中,我们收到nginx
作为我的 web 服务器的版本。
值得注意的是,有许多辅助模块,特别是针对各种不同漏洞和漏洞的“扫描器”。您不必总是实际攻击一个服务来确定它是否易受攻击!
正如我们在本章前面所了解到的,Metasploit 声名远扬是一个攻击平台。每天,Metasploit 模块都在编写并提交给 Metasploit 项目;每个漏洞都可以执行扫描,或者更常见的是,实际攻击给定的漏洞。
Metasploit 首次亮相时,其作为攻击的能力是革命性的:在宣布一个漏洞后,安全专业人员立即能够使用一个可靠的平台和经过审查的模块发起攻击,而不是寻找概念证明或编写自己的攻击。Metasploit 是用 Ruby 编写的,因此它几乎可以移植到任何平台,而且由于所有模块都在框架上运行,因此没有理由希望概念验证能够在用户当前使用的任何类型的机器上运行。
成功发起攻击的第一步是使用 Metasploit 的“搜索”功能查找给定模块。有很多方法可以使用搜索功能,但出于我们的目的,我们只需要寻找一些相对简单的东西:MS08-067,Windows 中的一个众所周知的漏洞,如果我们正确使用它,它可以为我们提供相当多的访问权限!
我们可以通过调用use
来选择模块,然后通过show options
列出我们需要的选项来设置它们。在前面的屏幕截图中值得注意的是,每个 Metasploit 模块都可以有一个等级。在我们的例子中,匹配的模块返回“很棒”。很棒!最后,您可能会注意到 Metasploit 的初始响应是我们没有连接数据库,所以我们使用了slow search
。虽然将我们之前创建的 Postgres 数据库连接到 Metasploit 确实很有意义,但如果我们只是想快速利用它,这并不总是最快的方法。
在将我们的目标设置为rhost
后,我们可以通过键入exploit
来运行漏洞攻击。请注意,这与简单地运行扫描 Metasploit 不同,Metasploit 希望确保您清楚地知道您正在启动一个漏洞利用。
成功运行漏洞利用后,您将打开一个meterpreter
会话。通过运行sessions
命令,您始终可以查看打开的会话。
MeterMeter 是保存在受损机器内存中的强大工具。从 Meterpreter,可以运行大量命令,包括来自 Metasploit 本身的攻击,以便将数据导出到另一个系统,或进一步转向受损网络。一连串的计量器外壳很容易破坏整个网络,并将所有敏感数据过滤回攻击源——在本例中,我们!
就像一个安全程序本身一样,了解信息安全始终是一个过程,永远不会结束。虽然我们已经学会了网络的基本知识;如何成为 Nmap(以及 Nmap 套件中的其他工具)的超级用户;如何进行漏洞扫描;现在,如何进行渗透测试还有数以百万计的其他课题可供研究。
虽然没有固定的课程来成为一名安全专业人员或继续在该领域的教育,但有更多关于该主题的书籍和许多不同的主题可以涵盖。如果您对 Web 应用程序评估感兴趣,我强烈建议您阅读Web 应用程序黑客手册。还有数不清的关于 Metasploit、Burp Suite Professional、漏洞开发、逆向工程、恶意软件分析的书籍,以及更多您可以探索的主题。
永远不要停止学习!
在本章中,我们学习了如何安装 Metasploit,使用 Metasploit 扫描特定漏洞或信息泄漏,并实际利用这些漏洞进行成功的攻击。从那里,我们了解了 MeterMeter,包括如何查看会话以及进一步转向目标网络的能力。
Metasploit 是一个用于利用基于网络的漏洞的强大框架,在任何安全评估中,它都值得坐在前排。
感谢您抽出时间阅读本书。虽然我们已经尽一切努力使本书中的信息尽可能保持最新,但安全世界,特别是安全工具的世界,一直在变化。如果有必要,请随时联系我获取最新信息。快乐的黑客!