使用 Armitage 和 Metasploit 进行实战安全测试
你的老板叫你进她的办公室。你盯着她墙上的人造红木板。她划了一根火柴,问道:“你看到新闻了吗?罪犯入侵了我们竞争对手的网络。真丢人。”她点燃雪茄,并要求:“我要你测试我们的网络,并告诉我我们是安全的!”
很多人都发现自己处于这种境地。《支付卡行业数据安全标准》要求每年进行一次渗透测试。萨班斯-奥克斯利法案、FISMA 和 HIPAA 要求每年进行一次安全审查。由于这些压力,许多组织都在考虑进行渗透测试。
渗透测试比漏洞评估更进一步。漏洞评估将缺失的补丁和配置错误与模糊的威胁描述结合起来。渗透测试需要利用漏洞来了解攻击者如何获得对关键系统和文件的访问权限。
通过阅读本文,您将使用与熟练的攻击者相同的过程来评估您的安全态势。您将学习如何执行侦察、利用主机以及更深入地在您的网络中移动。为此,您将使用 Armitage 和 Metasploit。
Metasploit 是 Rapid7 拥有的一个开源漏洞开发框架。Armitage 是 Metasploit 的一个可用界面。Armitage 使您可以轻松启动漏洞利用程序,并在获得对主机的访问权限后执行后期利用步骤。
使用 BackTrack Linux 来阅读本文。BackTrack Linux 包含 Metasploit 及其依赖项。更新您的 Metasploit 安装以获取最新版本的 Armitage
cd /pentest/exploits/framework3 svn update .
启动 Armitage
/etc/init.d/mysql start ./armitage
当 GUI 出现时,单击“启动 MSF”。Armitage 将在后台执行 Metasploit 并连接到它。
图 1 显示了 Armitage 用户界面;它有三个部分。左上方是模块浏览器。使用此浏览器搜索并执行任何 Metasploit 模块。右上角是目标区域。Armitage 在此处显示您的主机。底部是选项卡区域。Armitage 在单独的选项卡中打开每个 shell、控制台和浏览器。
攻击者执行侦察以了解您的网络配置。准确的信息使他们能够执行有针对性的攻击。使用侦察来了解攻击者如何看待您的网络。攻击者想知道您的网络上有哪些主机、哪些端口是开放的以及您正在运行哪些软件。
Nmap 是一种流行的侦察工具。它扫描您的网络以报告开放端口和服务标语。Nmap 还使用 TCP/IP 数据包标头中的不规则性来猜测主机操作系统。单击“主机→Nmap 扫描→快速扫描(操作系统检测)”以扫描您的网络。扫描完成后,Armitage 会在其目标区域中填充您的主机。如果您有很多主机,请单击“视图→目标→表格视图”以在表格中显示您的主机。
右键单击主机并选择“服务”以查看您的扫描结果。Armitage 在新选项卡中显示开放端口和服务标语。突出显示多个主机以在一个选项卡中显示您的扫描结果。图 2 显示了我网络的扫描结果。
从您的网络内部和外部执行侦察步骤。外部侦察将向您展示攻击者如何看待您的网络。您将了解您的防火墙阻止了哪些服务,以及哪些服务向匿名用户显示了过多的信息。
现在是利用您的网络的时候了。您需要将您的主机和服务与 Metasploit 的 640 多个漏洞利用程序进行匹配。本文的下一节讨论了自动、半自动和手动执行此操作的方法。您还将学习如何启动密码猜测和客户端攻击。
我建议在此渗透测试阶段使用您的内部扫描。您应该假设攻击者会进入您的网络边界。我还建议从您的网络边界内攻击主机。这将更好地展示攻击者可以做什么。我在透视部分证明了这些建议。
Armitage 的 Hail Mary 功能使用您的扫描结果自动启动漏洞利用程序。转到“攻击→Hail Mary→按端口”。Armitage 查找、过滤并将漏洞利用程序排序为最佳顺序。然后,Armitage 针对您的每个主机启动这些漏洞利用程序。
在此攻击结束时,Armitage 会列出受感染的主机和成功的漏洞利用程序。此攻击是嘈杂的,并且某些漏洞利用程序可能会在正确的漏洞利用程序到达之前使服务崩溃。但是,此攻击几乎不需要任何技能即可运行。从您的网络外部尝试此攻击,以查看您的入侵检测系统发现了什么。
使用“攻击→查找攻击→按端口”以获取漏洞利用建议。Armitage 为每个具有相关漏洞的主机创建一个“攻击”菜单(图 3)。这些是 Hail Mary 攻击启动的相同漏洞利用程序。右键单击目标区域中的主机以访问此菜单。

图 3. 攻击菜单
Armitage 按可利用的服务组织每个“攻击”菜单。在我的网络上,我有一个 Windows XP SP2 主机。要利用它,我右键单击主机并导航到“攻击→smb→ms08_067_netapi”。这将打开如图 4 所示的启动对话框。
漏洞利用程序启动对话框有一个预配置选项表。双击任何值以对其进行编辑。单击“显示高级选项”以查看其他选项。大多数情况下,您不需要更改这些。单击“启动”以针对您的目标运行漏洞利用程序。如果攻击成功,您的目标会变成红色,周围有闪电(图 5)。

图 5. 受感染的主机
利用服务是一项有风险的业务。您正在将输入引入到您的应用程序中,这些输入执行有缺陷的代码路径。如果可能,您应该测试非生产系统。如果您必须针对生产主机进行测试,则了解 Metasploit 的漏洞利用评级系统会有所帮助。
Metasploit 将每个漏洞利用程序评为差、正常、好、很好或优秀。评级为优秀的漏洞利用程序使用简单的命令注入缺陷。这些是最安全和最可靠的漏洞利用程序。评级为很好的漏洞利用程序是可靠的内存损坏漏洞利用程序。这些可能会使您的系统崩溃,但可能性极小。评级为好及以下的漏洞利用程序具有更高的风险,并且它们不太可靠。Armitage 的 Hail Mary 和漏洞利用建议功能仅使用评级为很好和优秀的漏洞利用程序。您可以通过“Armitage→首选项”更改此设置。
Metasploit 将某些漏洞利用程序评为手动。这些漏洞利用程序需要额外的信息,例如用户名和密码才能启动。手动漏洞利用程序无法通过自动和半自动方法获得。
手动漏洞利用需要将您的设备和服务与 Metasploit 模块进行匹配。此步骤需要一些准备。创建您的网络设备清单以及每个主机上运行的软件。
将每个软件包和设备输入到模块浏览器下方的搜索字段中。按 Enter 执行搜索。如果您知道 Linux 主机正在运行 ProFTPD 1.3.3,请在搜索字段中键入 ProFTPD。Armitage 在模块浏览器中显示所有匹配的模块。
突出显示目标区域中的主机以预配置模块的 RHOSTS 选项。双击一个模块以打开其启动器。单击“启动”以运行攻击。
您有时会在搜索结果中看到辅助模块。图 6 显示了 Cisco 的搜索结果。此搜索显示了辅助模块,用于扫描已知的授权绕过漏洞,并使用 SNMP 访问配置文件。请注意辅助模块。它们提供了很多攻击价值。

图 6. Cisco 模块
手动漏洞利用方法是了解 Metasploit 对您的网络具有哪些功能的最佳方法。这种方法需要更多的时间和技能才能获得访问权限,但它也更彻底。
Metasploit 还有一些模块可以针对大多数服务运行基于字典的密码猜测攻击。在模块浏览器中搜索 _login 以查找这些模块。要攻击 SSH,请突出显示目标视图中的多个主机,然后双击 ssh_login 模块。
Metasploit 为您提供了很大的灵活性来执行密码猜测攻击。如果您想尝试一个用户名和密码,请设置 USERNAME 和 PASSWORD 选项。将 USERPASS_FILE 设置为一个文件,其中每行都有“用户名 密码”条目。或者设置 USER_FILE 和 PASS_FILE 以尝试使用 USER_FILE 中的每个用户名和 PASS_FILE 中的每个密码进行访问。
Metasploit 附带了多个用户名和密码单词列表。在 BackTrack 上,它们位于 /pentest/exploits/framework3/data/wordlists 中。双击需要文件的选项名称(例如,PASS_FILE)以使用文件选择器对话框设置选项。单击“启动”以开始密码猜测攻击。Armitage 在新选项卡中显示攻击的进度。
Metasploit 将成功的登录信息存储在其数据库中。转到“视图→凭据”以查看它们。您也可以使用这些凭据登录到主机。右键单击主机,选择“登录”,然后选择要登录的服务。如果登录产生会话,则主机会变成红色,周围有闪电(就像成功的漏洞利用程序一样)。会话是您可以与之交互的活动 shell 或代理。
密码猜测攻击是渗透测试的重要组成部分。您应该验证常见的用户名和密码组合是否不会授予对您的网络资源的访问权限。此外,猜测的凭据使其他攻击成为可能。例如,snmp_login 模块可能会找到一个社区字符串,攻击者可以使用该字符串将新的配置文件写入您的 Cisco 设备。
要使用漏洞利用程序并启动密码猜测攻击,攻击者需要网络访问您的服务。配置好的防火墙将阻止许多攻击。但是,攻击者并非没有选择。决心坚定的攻击者将使用客户端漏洞利用和社会工程来进入您的网络边界。
转到“攻击→浏览器攻击→multi→java_signed_applet”以启动跨平台客户端攻击。此攻击启动一个带有恶意 Java 小程序的 Web 服务器。该小程序要求访问者授予该小程序对其本地系统的完全权限。将此小程序伪装成一个精美的游戏,您可能会获得对很多主机的访问权限。
使用“攻击→恶意文件→windows→adobe_pdf_embedded_exe”生成一个 PDF 文件,其中包含一个嵌入式可执行文件,该文件会连接回 Metasploit。此攻击要求用户采取一个操作来运行此嵌入式可执行文件。大多数用户没有意识到打开 PDF 文件的安全风险。
单击“攻击→浏览器 Autopwn”以启动一个 Web 服务器,该服务器将使用每个访问者的浏览器指纹发送漏洞利用程序。如果您通过电子邮件将此链接发送给您组织中的每个用户,您会感染多少主机?
我建议在您的工作站上测试这些客户端攻击,并了解可能发生的事情。用户教育是防御这些攻击的最佳方法。考虑在您的下一次培训活动中演示这些攻击。可以识别攻击的用户将增加您的安全态势。
一个受感染的主机允许攻击者从内部攻击您的网络。Metasploit 的透视功能允许您通过受感染的主机反弹您的攻击流量。透视使客户端攻击非常危险。
透视(Pivoting)在 Metasploit 中就像一个路由器。您可以选择一个网络,并将一台被入侵的主机设置为网关。Metasploit 将这些路由用于其所有攻击和扫描模块。右键单击一个被入侵的主机,导航到 Meterpreter→透视→设置 以配置此功能。Armitage 会在透视主机及其已知目标之间显示一条绿线(图 7)。
Metasploit 有一个内置的代理服务器。如果您想通过已设置的透视点使用外部工具(如 Firefox),请使用此功能。转到 Armitage→SOCKS 代理 以启动此功能。
后渗透是指获得访问权限后发生的事情。成功的攻击会在非 Windows 主机上为您提供 shell 访问权限。成功的 Windows 漏洞利用会为您提供对 Meterpreter 的访问权限。
Meterpreter 是一个内置于 Metasploit 的强大后渗透代理。Meterpreter 从您攻击的进程的内存中运行。通过它,您可以浏览和下载文件、查看进程、截取屏幕截图、记录击键、运行权限提升漏洞利用,以及与命令 shell 交互。
Armitage 为 Meterpreter 的许多功能提供了一个直观的界面。图 8 显示了文件浏览器。右键单击一个被入侵的主机,并导航到 Meterpreter 菜单以浏览这些功能。
Meterpreter 很强大,但 Armitage 也有一些 shell 访问的技巧。右键单击一个被入侵的主机,然后导航到 Shell 菜单。选择“交互”以在一个选项卡中打开命令 shell。 使用“上传”命令通过 UNIX printf 命令上传文件。 选择“断开连接”以关闭会话。
在后渗透阶段,您可能希望入侵更多主机。哈希传递是一种进一步入侵 Windows 网络的技巧。
Windows 主机不会以明文形式传递您的网络凭据。相反,它们使用一种挑战-响应方案来生成哈希值。Windows 使用此哈希值在 Active Directory 域上对您进行身份验证。Windows 主机会缓存并重用哈希值,以便在网络上对其他主机进行身份验证。这省去了您在访问文件共享时重新输入密码的麻烦。攻击者使用被盗的哈希值来访问您的 Active Directory 域上的其他主机。
转储缓存的哈希值需要本地管理员权限。使用 Meterpreter→访问→提升权限,尝试使用几种本地漏洞利用来提升您的权限。转到 Meterpreter→访问→转储哈希值 以窃取本地缓存的凭据。
现在您需要目标。使用 auxiliary/windows/smb/smb_version 模块来查找 Active Directory 域上的其他 Windows 主机。
转到攻击→查找攻击 以生成每个主机的攻击菜单。突出显示多个 Windows 主机,右键单击,然后使用攻击→smb→哈希传递。Armitage 允许您选择要尝试的凭据集。选择一对凭据并单击“启动”。您已传递了哈希。每次成功登录都会为您提供一个 Meterpreter 会话。
Metasploit 的 Windows 权限提升漏洞利用存在补丁。即使攻击者入侵了一个已打补丁的系统,他们也不必停止。他们可以扫描未打补丁的主机,利用它,然后执行这些步骤。
之前,我将渗透测试定义为一种了解攻击者如何访问关键系统和文件的方式。我怀疑您没有找到适用于您的关键服务器的可用漏洞。在您结束网络渗透测试之前,我想让您暂时像攻击者一样思考。
攻击者将使用社会工程和客户端攻击来获得立足点。然后,攻击者将尝试利用工作站来收集哈希值。使用哈希传递,您已打补丁的 Windows 系统不再安全。如果攻击者访问您的工作站,安装键盘记录器并下载您的 SSH 密钥会发生什么?一台易受攻击的主机可能导致对您原本安全的资产的完全入侵。
在本文中,我向您展示了攻击者针对您的网络使用的技术。您学习了如何扫描您的网络、利用主机并执行后渗透操作。您还学习了如何使用哈希传递技术更深入地渗透到您的网络中。下一步是应用您所学的知识。
我建议您下载 Metasploitable 虚拟机。Metasploitable 具有许多您可以利用的服务来获取 shell 访问权限和信息。在开始您的第一次渗透测试之前,先攻击 Metasploitable 以熟悉 Armitage 和 Metasploit。
资源
BackTrack Linux: www.backtrack-linux.org
Metasploit: www.metasploit.com
Armitage 的文档: www.fastandeasyhacking.com
Metasploitable 虚拟机: blog.metasploit.com/2010/05/introducing-metasploitable.html
Raphael Mudge 是 Armitage 的开发者。他住在华盛顿特区。通过 www.hick.org/~raffi 与他联系。