缓冲区溢出好比是正常情况下,容积为1升的杯子最多只能盛1升的水,但是当我们将3升的水倒入一个这个只有1升的杯子里时,可想而知,多出来的部分会溢出杯子,洒到桌上甚至满地都是。计算机也是一样,当黑客向缓冲区内填充数据,而数据长度超过了缓冲区本身的容量后,数据就会溢出存储空间,装不下的数据则会覆盖在合法的数据上,导致程序的出错乃至崩溃,这就是缓冲区溢出原理。但是,如果缓冲区仅仅溢出,这只是一个问题。到此时为止,它还没有破坏性。但如果说能够精确地导入事先准备好的水时,比如1.325升水,那么溢出来的也就是0.325升水。
黑客们用精心编写的攻击代码使得操作系统或者应用程序等出现缓冲区溢出,由于是事先已经精确定义,所以也将会导致黑客们想要得到的结果,比如死机、重启、获取Rootshell、下载木马等。此时的系统或者程序已经完全被黑客们所操纵了。
◆关于Metasploit3
作为缓冲区溢出攻击工具,鼎鼎有名的就是Metasploit Exploitation Framework,简称为Metasploit。Metasploit Framework (MSF)是2003 年以开放源代码方式发布、可自由获取的开发框架,这个环境为渗透测试、shellcode 编写和漏洞研究提供了一个可靠的平台。它集成了各平台上常见的溢出漏洞和流行的shellcode,并且不断更新,最新版本的MSF 包含了180多种当前流行的操作系统和应用软件的exploit,以及100多个shellcode。作为安全工具,它在安全检测中起到不容忽视的作用, 并为漏洞自动化探测和及时检测系统漏洞提供有力的保障。目前最新版本为Metasploit3,在BT4下面默认已经安装。这款工具是免费的,最早在2005年Black Hat全球黑客集会上公开,经过长时间的发展,已经被誉为缓冲区攻击平台。
该工具通过加载预先制作好的缓冲区溢出代码包,定义细化的溢出种类,来达到组建多种不同类型溢出攻击工具共存的统一攻击平台。在其网站提供了详细的参数及相关文档说明,同时该工具提供Windows和Linux两种版本,大家可以根据需要下载对应的安装版本按默认安装即可。
官方下载地址:http://www.metasploit.com/framework/download/
在BackTrack4 R2 Linux下,我们可以通过以下步骤打开Metasploit3。点选菜单上的"BackTrack"---"Penetration"--- "Framework Version3",就能看到Metasploit3所有的子工具。菜单展开后如下图-1所示。
图-1#p#
◆Metasploit3的升级
Metasploit会不定期更新可利用的漏洞程序,可以通过Online Update来进行升级。所以在使用前,应养成习惯先升级Metasploit3的攻击代码库。打开任意一个Shell,输入msfconsole回车或者点选上图所示菜单中的"msfconsole",就可以看到当前包含的代码数量,如下图-2所示,我们可以看到这样的提示:"379 exploits",即379个攻击代码。
图-2
下面开始进行升级操作,有两种方法或者说是有两个命令都可以用来进行升级更新操作,具体如下:
方法1:
先进入到Metasploit3的目录下,即/pentest/exploits/framework3/下,输入命令如下:
./svn-update.sh
回车后,稍等片刻,就能看到如下图-3所示的升级界面,会有大量的文件被下载并放置在当前目录下,我们可以在当前界面中看到具体的升级状态。
图-3 #p#
稍等片刻后,升级完成,就会提示我们新的版本号,如下图-4所示,升级完毕后显示"Updated to revision 7123",即当前版本已经升级到7123,此为内部版本号。注意,升级的时间完全取决于网络状态,快一点的话1、2分钟就完成了,慢的话就要稍等一下了。
图-4
升级完毕后,还在当前目录下,输入./msfconsole,如下图-5所示,我们可以看到此时的exploits数量达到了412,较刚才相比增加了33个,如上图-4所示。所以说,在进行测试前,应该及时升级Metasploit的exploits库。
图-5
方法2:
如下图-6所示,打开任意一个Shell,输入msfupdate命令来对Metasploit进行更新。回车后MSF会自动连接器官方网站进行升级,并在升级完毕后显示最新版本号,在下图-6中就是Revision11626。
图-6
那么,既然升级完了,接下来,就来使用Metasploit3进行溢出实战吧。#p#
◆Metasploit3的基本命令
在进入Metasploit3后,就可以使用"?"来获取基本命令,具体如下:
"?":得到帮助。
"cd":更换当前的工作目录。
"exit":退出。
"help": 得到帮助。
"info":显示当前程序的信息。
"quit":退出程序。
"reload":载入Exploit和 payloads。
"save":保存当前设置
"setg":设置一个环境变量。
"show":显示可用的Exploit和 payloads。
"use":使用一个Exploit。
"version":显示程序的版本。
下面,我们就通过几个不同类型的攻击实例来学习Metasploit的使用。